November 29, 2018
mac下安装python web框架django
"前提\n由于mac自带的python2.7(路径 /usr/bin/python) 后来手动又安装了python3.7(/usr/local/bin/python3)\n两个版本共存。为了方便,直接在.zshrc文件里做了别名映射\nalias python=\u0026#34;/usr/local/bin/python3.7\u0026#34; 所以直接使用命令python实际上用的是3.7版本。\n按照官方教程 https://docs.djangoproject.com/zh-hans/2.1/intro/install/ 安装django。发现在使用命令 pip install django 安装后发现检测不到django,很奇怪,后来发现了问题所在。\n➜ ~ python Python 3.7.1 (default, Nov 6 2018, 18:46:03) [Clang 10.0.0 (clang-1000.11.45.5)] on darwin Type \u0026#34;help\u0026#34;, \u0026#34;copyright\u0026#34;, \u0026#34;credits\u0026#34; or …"
November 27, 2018
Python中的装饰器decorator
"Python中装饰器有些类似于java中的面向切片编程AOP的概念,就是对一些请求方法进行一些拦截,然后加入一些其实的逻辑。可以参与 https://blog.csdn.net/caimouse/article/details/78078189 这篇举的例子,很好理解。\nhttp://wiki.jikexueyuan.com/project/the-python-study-notes-second-edition/decorator.html"
October 20, 2018
Golang中struct结构体的的值方法和指针方法
"推荐:Go的方法集详解(360云计算)\n平时我们在写struct的时候,经常会用到一些方法,有些方法是我们熟悉的普通方法,在golang中我们称之为值方法,而另一种则是指针方法。\ntype Person struct { Firstname string Lastname string Age uint8 } // 值方法 func (p Person) show() { fmt.Println(p.Firstname) } // 指针方法 func (p *Person) show2() { fmt.Println(p.Firstname) } 可以看到所谓的值方法与指针方法在编写的时候,只是有无*****号的区别,这个*就是指针的意思。\n那么用法又有何不同呢?\n// 值方法 func (p Person) setFirstName(name string) { p.Firstname = name } // 指针方法 func (p *Person) setFirstName2(name string) { p.Firstname = name } func main() { p …"
October 19, 2018
Golang中的unsafe.Sizeof()简述
"测试环境: 系统 win7 64位 go version: go1.10 windows/amd64\n我们先看一下代码的输出\npackage main import \u0026#34;unsafe\u0026#34; func main() { // string str1 := \u0026#34;abc\u0026#34; println(\u0026#34;string1:\u0026#34;, unsafe.Sizeof(str1)) // 16 str2 := \u0026#34;abcdef\u0026#34; println(\u0026#34;string2:\u0026#34;, unsafe.Sizeof(str2)) // 16 // 数组 arr1 := [...]int{1, 2, 3, 4} println(\u0026#34;array1:\u0026#34;, unsafe.Sizeof(arr1)) // 32 = 8 * 4 arr2 := [...]int{1, 2, 3, 4, 5} println(\u0026#34;array2:\u0026#34;, unsafe.Sizeof(arr2)) // 40 = 8 * 5 // slice 好多人分不清切片和数组的写法区别,其实 …"
October 19, 2018
数据结构与算法
"平时开发中,一般很少用到手动来写算法的情况,但实际上我们一直在接触一些数据结构与算法,如JAVA中的ArrayList 就用到了数据结构与算法,从名字可以看到了用到了Array这种数组结构和链表结构。下面根据目前学习的情况做一个总结。\n数据结构\n我们常见的数组结构一般有:\nArray数组、 Stack栈、 Heap堆、 Queue队列 Hash 哈希类型 LinkedList 链表,其中又分为单向链表、双向链表、还有最少用的环形链表 Tree 这个Tree分的太多了,如B-Tree、 B+Tree(mysql使用)、Binary Search Tree二叉搜索树 、AVL高度平衡树、Red Black Tree红黑树 等 http://www.bigocheatsheet.com/\n算法\n一般开发中用到的基本上排序算法居多,而算法大体上又分为比较排序和非比较排序。我们常用的比较排序算法有(参考: http://www.cnblogs.com/eniac12/p/5329396.html):\n快速排序 (Quick Sort) 冒泡排序 (Bubble Sort) …"
October 17, 2018
常见排序算法总结与实现(冒泡、插入、选择、希尔、堆排序、归并、快排)
"https://www.cnblogs.com/alsf/p/6606287.html https://blog.csdn.net/wang_hufeng/article/details/80774761\n推荐”极客时间”的两个算法专栏,其中有个专栏是视频形式的,两个专栏讲的都是特别的通俗易懂的。\nhttps://time.geekbang.org/column/126 https://time.geekbang.org/course/intro/130"
October 13, 2018
Heap And Stack 堆与栈的区别
"堆与栈的区别\n推荐: https://www.programmerinterview.com/index.php/data-structures/difference-between-stack-and-heap/\n栈是上下顺序存储的,且“先进后出LIFO”规则,只能删除顶部的元素,而堆是没有特定的顺序的存储,您可以删除任意元素。堆分配需要维护分配的内存和未分配的内存的完整记录,以及一些开销维护以减少碎片,找到足够大以适应请求大小的连续内存段,等等。内存可以随时释放,留出自由空间。有时,内存分配器将执行维护任务,比如通过将分配的内存到处移动来对内存进行碎片整理,或者在运行时进行垃圾收集——当内存不再处于作用域中时对其进行标识并释放它。\n栈用在线程中,程序执行时由线程创建有限数量的栈空间,当线程结束的时候会自动回收,属于系统级。 堆一般是由应用程序在启动时创建,由应用程序回收,属于应用级。 The stack is attached to a thread, so when the thread exits the stack is reclaimed. The heap is …"
October 11, 2018
raft一致性算法动画演示
"http://thesecretlivesofdata.com/raft/\nThe Raft Paper\nraft算法中文版: https://github.com/maemual/raft-zh_cn/blob/master/raft-zh_cn.md"
October 11, 2018
Kubernetes学习资源
"k8s guide\n准备 对于一个新手来说,第一步是必须了解什么是 kubernetees、 设计架构 和相关 概念。只有在了解了这些的情况下,才能更好的知道k8s中每个组件的作用以及它解决的问题。\n安装工具 minikube 参考 https://minikube.sigs.k8s.io/docs/start/ kind 参考 https://kind.sigs.k8s.io/docs/user/quick-start/ 以上是安装k8s环境的两种推荐方法,这里更推荐使用kind。主要原因是 minikube 只支持单个节点,而 kind 可以支持多个节点,这样就可以实现在一台电脑上部署的环境与生产环境一样,方便大家学习。\n要实现管理控制 Kubernetes 集群资源如pod、node、service等的管理,还必须安装一个命令工具 kubectl ,请参考: https://kubernetes.io/zh/docs/tasks/tools/\n学习文档 Kubernetes 文档 https://kubernetes.io/zh/docs/home/ Play with …"