摘要: 博客园发布文章的体验太差,Markdown的支持巨烂无比,尝试了富文本编辑,太麻烦,遂作罢。想看的跳转到这两个连接吧树莓派的奇幻漂流github阅读全文
posted @ 2014-02-23 17:10 mac的学习笔记 阅读(586) 评论(0) 编辑
摘要: 网上有不少关于如何让Linux自动运行自己编写的脚本或者程序的方法,但是大多数都是把命令写到/etc/rc.local里,这样虽然能够实现随机运行,但是并不够灵活。不能像mysql,apache等服务一样能够使用service命令或者调用init.d下的脚本启动、关闭或者重启进程。例如,service mysql restartservice apache2 stop或者/etc/init.d/mysql restart/etc/init.d/apache2 stop因为不同的Linux发行版本,对后台服务的处理方式不大一样,如redhat使用chkconfig来管理开机程序。所以下面的方法以阅读全文
posted @ 2013-09-15 23:36 mac的学习笔记 阅读(26758) 评论(0) 编辑
摘要: 数组切片slice这个东西看起来很美好,真正用起来会发现有诸多的不爽。第一,数组、数组切片混淆不清,使用方式完全一样,有时候一些特性又完全不一样,搞不清原理很容易误使用。第二,数组切片的append操作,每次对slice append操作,都返回一个新的slice的引用,对slice的引用没法保持,这样在函数传递slice的情况下append,在调用函数的上下文中看不到slice append的效果。如果想要这种方式凑效,不得不另辟蹊径。本文主要说一下如何解决这个窘境的方法。函数传递slice存在什么问题?func sliceModify(slice []int) { // slice[...阅读全文
posted @ 2013-08-22 00:14 mac的学习笔记 阅读(2255) 评论(4) 编辑
摘要: 1.使用方式数组和slice长的很像,操作方式也都差不多,并且slice包含了数组的基本的操作方式,如下标、range循环,还有一些如len()则是多种类型共用,所以根据操作根本搞不清数组和切片的区别,能够看出区别的地方主要看如何声明的。数组的声明方式很单一,通常就是下面这样:array1 := [5]int{1, 2, 3, 4, 5}array2 := [5]int{}slice的声明方式就非常多样了,如前面介绍的几种:var slice1 = []int{1, 2, 3, 4, 5}var slice2 = make([]int, 0, 5)var slice3 = make([]int阅读全文
posted @ 2013-08-22 00:10 mac的学习笔记 阅读(5348) 评论(0) 编辑
摘要: 初看go语言中的slice,觉得是可变数组的一种很不错的实现,直接在语言语法的层面支持,操作方面比起java中的ArrayList方便了许多。但是在使用了一段时间后,觉得这东西埋的坑不少,使用方式上和arrayList也有很大的不同,在使用时要格外注意。slice的数据结构首先说一下slice的数据结构,源码可以在google code上找到,http://code.google.com/p/go/source/browse/src/pkg/runtime/runtime.hstruct Slice{ byte* array; /...阅读全文
posted @ 2013-08-18 18:48 mac的学习笔记 阅读(6655) 评论(8) 编辑
摘要: 链表的数据结构比较线性数组,优点是 可以方便的对任意的位置进行插入和删除。这一特性使得它很适合于应用在排序等场景下,由于golang目前类库还不是很完善,在java中可以很简单的使用api提供的支持完成对list或者map的排序,在使用go时就没有那么幸运了,可能需要自己去实现。下面的例子就是使用go package 中的LinkedList实现的排序的链表。有几个功能特性:1.支持固定的长度2.可自定义排序的规则3.组合LinkedList功能package codeforfunimport ( "container/list")type SortedLinkedList阅读全文
posted @ 2013-08-14 23:25 mac的学习笔记 阅读(2146) 评论(0) 编辑
摘要: 1.返回值使用通道func main() { // 生成随机数作为一个服务 randService := randGenerator() // 从服务中读取随机数并打印 fmt.Printf("%d\n",<-randService)}func randGenerator() chan int { // 创建通道 out := make(chan int) // 创建协程 go func() { for { //向通道内写入数据,如果无人读取会等待 out <- rand.Int() ...阅读全文
posted @ 2013-08-08 22:26 mac的学习笔记 阅读(1685) 评论(0) 编辑
摘要: 今天看一框架的代码,看到有些 可以使用ArrayList的地方 使用的是 LinkedList,用到的情景是在一个循环里面进行顺序的插入操作。众所周知java里面List接口有两个实现ArrayList 和LinkedList,他们的实现原理分别是c语言中介绍的数组和链表。正如学习数据结构时的认识,对于插入操作,链表的结构更高效,原因是可以通过修改节点的指针 就可以完成插入操作, 而不像数组,需要把插入位置之后的数组元素依次后移。但是,实际情况真如上面设想一样吗,下面通过一个简单的例子实践,看能得出什么结论。public static void main(String[] args) { L.阅读全文
posted @ 2012-03-12 22:19 mac的学习笔记 阅读(2688) 评论(0) 编辑
摘要: 在第一篇时就说过框架要在URL上作文章,是的,本文就框架怎样充分利用url上作尽可能详细的说明。 做web开发的不可能对url陌生,早在web1.0时代,url作为统一资源定位符,在对web中资源的如何获得上起到巨大作用。不论用户请求的时静态页面或者是各种图片、脚本文件,通过url总能从web网站获取要访问的资源。Web2.0更是常常使用url作为get请求时参数的传递,如http://xxx.xxx.xxx/xxx.jsp?user=admin。以及近几年很火restfulwebservice摒弃soap而使用url传递请求参数都说明合理利用url的可行和流行。 当然不止是使用...阅读全文
posted @ 2011-11-25 18:18 mac的学习笔记 阅读(1899) 评论(0) 编辑
摘要: 上篇说过,所有提交到web程序的url都被此UrlFilter拦截。拦截到请求后,UrlFilter则召集它的好多个得力干将Router们,询问他们:“谁能处理此URL啊?”这时一位叫做AMP的Router首当其冲说:“这个url交给我了”。这时filter就会把此url全权交给AMPRouter来办,至于如何去处理,filter也不再过问,它觉得:“我把任务都交给你了,怎么解决是你的事”。 根据单一职责的原则,UrlFilter就负责上面情景中的分发url到Router中的差事,url如何分发交给Router处理。并且Router实际是一个接口,使用框架的用户完全可以自己实现Rou...阅读全文
posted @ 2011-11-25 12:35 mac的学习笔记 阅读(1600) 评论(2) 编辑