- 博客(34)
- 资源 (51)
- 收藏
- 关注
原创 golang调度器底层实现( G、M、P)
go的调度器只要实现在 runtime 包中,路径为: ./src/runtime/proc.go 文件中。go语言其实是在操作系统提供的内核线程之上搭建了一个特有得 【两级线程】模型。下面再说两级线程模型前,有三个必知的核心元素。(G、M、P)G:Goroutine的缩写,一个G代表了对一段需要被执行的Go语言代码的封装M:Machine的缩写,一个M代表了一个内核线程P:Process...
2019-06-25 19:55:26 2493
原创 golang的Mutex
不用内存共享来实现通信,而用通信来实现内存共享。go推荐用channel的方式来在多个goroutine中传递消息以保证并发安全,用句白话说就是可以用channel来实现锁的功能。// A Mutex is a mutual exclusion lock.// The zero value for a Mutex is an unlocked mutex.//// A Mutex must...
2019-06-25 09:51:21 737
原创 channel
channel的实现是在在runtime包下面,路径为:./src/runtime/chan.go 文件中,其中主要的结构体为:const ( maxAlign = 8 hchanSize = unsafe.Sizeof(hchan{}) + uintptr(-int(unsafe.Sizeof(hchan{}))&(maxAlign-1)) debugChan = false...
2019-06-25 09:09:15 355
原创 两数之和
给定一个数字列表和一个目标值,找出列表中和为目标值的两个数 def two_sum(list, target): for i in range(len(list)): a = target - list[i] if a in list: print([i, list.index(target - l...
2019-06-24 18:59:44 165
原创 设计模式
1、 创建性模式5种(工建单原(元)–>工建单元)1) 工厂方法模式,也称为简单工厂模式2) 抽象工厂模式3) 单例模式4) 建造者模式5) 原型模式理解如下Ø 上面5种设计模式,可以说全是工厂模式,都是如何new 出一个新的类对象Ø 事实上,工厂模式全指是工厂方法,即一个方法内部可以找到new 某个...
2019-06-24 11:57:56 134
原创 最大子序和 动态规划
解法一给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。def maxSubArray(nums): length = len(nums) for i in range(1, length...
2019-06-21 20:10:54 208
原创 git reset revert 回退回滚取消提交返回上一版本
总有一天你会遇到下面的问题.(1)改完代码匆忙提交,上线发现有问题,怎么办? 赶紧回滚.(2)改完代码测试也没有问题,但是上线发现你的修改影响了之前运行正常的代码报错,必须回滚.这些开发中很常见的问题,所以git的取消提交,回退甚至返回上一版本都是特别重要的.大致分为下面2种情况:1.没有push这种情况发生在你的本地代码仓库,可能你add ,commit 以后发现代码有点问题,准备取...
2019-06-21 10:41:37 304
原创 单链表
is_empty() 链表是否为空length() 链表长度travel() 遍历整个链表add(item) 链表头部添加元素append(item) 链表尾部添加元素insert(pos, item) 指定位置添加元素remove(item) 删除节点search(item) 查找节点是否存在class Node: def __init__(self,item): ...
2019-06-20 19:41:48 185
原创 WaitGroup
package mainimport ( "fmt" "sync")func main() { N:=4 waitGroup := sync.WaitGroup{} waitGroup.Add(N) // //for i:=0;i<N ;i++ { // fmt.Println("*************") // waitGroup.Done() //}...
2019-06-19 22:49:26 121
原创 Goroutines
每一个OS线程都有一个固定大小的内存块(一般会是2MB)来做栈,这个栈会用来存储当前正在被调用或挂起(指在调用其它函数时)的函数的内部变量。这个固定大小的栈同时很大又很小。因为2MB的栈对于一个小小的goroutine来说是很大的内存浪费,比如对于我们用到的,一个只是用来WaitGroup之后关闭channel的goroutine来说。而对于go程序来说,同时创建成百上千个gorutine是...
2019-06-19 22:33:04 303
原创 ticker定时器用法
package mainimport ( "fmt" "time")func foo() { fmt.Println("wilson...")}func main() { ticker := time.NewTicker(1 * time.Second) for ; ; { select { case <-ticker.C: go foo() ...
2019-06-19 22:14:56 1375
原创 glog用法
package mainimport ( "flag" "github.com/golang/glog")var name = flag.String("s","wilson","this is ")//func main() {// flag.Parse()// defer glog.Flush()// print(*name)//// glog.Info("wil...
2019-06-19 22:10:16 684
原创 归并排序
归并排序 def merge(left, right): '''合并操作,将两个有序数组left[]和right[]合并成一个大的有序数组''' #left与right的下标指针 l, r = 0, 0 result = [] while l<len(left) and r<len(right): ...
2019-06-19 20:02:11 134
原创 排序算法
排序算法冒泡排序:n-i模型插入排序: i,0模型选择排序:选择一个小值归并排序: 分解 合并快速排序:基准 low high希尔排序:初始步长,新的步长...
2019-06-19 19:55:17 123
原创 shell排序
def shell_sort(list):n=len(list)gap=n//2while gap > 0:print([i for i in range(gap,n)],’------------’)for i in range(gap,n):j=iwhile j>=gap and list[j-gap]>list[j]:list[j-gap],list[j]=...
2019-06-19 19:51:52 121
原创 选择排序
选择排序def selectsor(list): for i in range(len(list)): min=i for j in range(i+1,len(list)): if list[j]<list[min]: min=j if min!=i: ...
2019-06-19 19:51:30 134
原创 requests发送post请求
import requests, jsonurl_mul = ‘http://httpbin.org/post’files = {‘file’: open(’./userinfo.txt’, ‘rb’)}r = requests.post(url_mul, files=files)print®print(r.text)print(r.content)...
2019-06-19 19:50:45 2309
原创 快速排序
快速排序def quick_sort(alist,start,end): if start>=end: return mid=alist[start] low=start high=end while low<high: while low<high and alist[high]>mid: ...
2019-06-18 20:43:08 132
原创 二分查找
二分查找def binary_search(alist,item): low=0 high=len(alist)-1 while low<=high: mid=(low+high)//2 if item==alist[mid]: return True elif item>alist[mi...
2019-06-18 20:42:11 150
原创 seaweedfs文件存储服务器在Linux搭建
安装seaweedfs下载seaweedfs,地址,wget https://github.com/chrislusf/seaweedfs/releases/download/0.76/linux_amd64.tar.gz解压到/usr/local:sudo tar -zxvf linux_amd64.tar.gz -C /usr/local进入到解压目录,新建data目录,data下再新建...
2019-06-18 20:41:30 1078
原创 TypeError: slice indices must be integers or None or have an __index__ method
TypeError: slice indices must be integers or None or have an __index__ method该错误主要是因为下标不支持浮点数所导致的例如:len(alist)/2得到的类型为浮点数这和Python2还有很多其他语言不一样,Python2还有很多其他语言大多数会将该结果转化为整数类型,但是在python3中该类型为浮点数类型,因...
2019-06-17 11:05:54 323
原创 算法分类
分治算法一、基本概念在计算机科学中,分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题……直到最后子问题可以简单的直接求解,原问题的解即子问题的解的合并。任何一个可以用计算机求解的问题所需的计算时间都与其规模有关。问题的规模越小,越容易直接求解,解题所需的计算时间也越少。例如,对于n个元素的排序问题,当n=1时...
2019-06-17 10:00:00 437
原创 程序员交流的艺术
程序员除了给人一种发际线偏高的感觉外,很闷很宅很难沟通应该也是丢给大家的印象之一!但往往有效的沟通又是程序员所必备的一项技能,因为掌握说话的方式技巧,可以有效避免一些无谓的争端,甚至是暴力血腥的场面发生!例如程序员与产品经理的沟通!如果你是一个很难用语言准确的将内心想法表达出来的程序员,一定要谨言慎行!因为一个人的情商、修养和眼界从你的说话方式当中就可以淋漓尽致的表现出来!人之高低,一张口高下立...
2019-06-14 20:25:43 187
原创 动态规划 最长公共字符串
思想:首先通过构造二维数组,较长字符串a作为行,较短字符串b作为列。将第一行和第一列初始化全初始化为1,通过递推式,如果当前两个字符串相等,则为左上角的数字加1,否则为0。找出最大的数字,最大的数字表示公共字符串的长度。找出公共字符串在字符串a的角标,从后往前数公共字符串个长度即为公共字符串。word_a="yawilsonafasfs32fda"word_b="iwilsonolnm...
2019-06-14 20:22:05 284
原创 tig--颠覆 Git 命令使用体验的神器
tig, 就是把 Git 这个单词倒过来念, 它是一个命令行工具, 日常使用中我用它来取代 Git 最高频的几个操作, 如 git log, git diff 以及 git blame等, 使用常见安装源能够方便地安装它.sudo apt-get install tig在使用 Git 命令的过程中, 最高频的命令应该是 git status, 主要用来查看 staged changes 和 ...
2019-06-14 09:49:04 2398
原创 数据结构栈、队列和二叉树
栈class stack: def __init__(self): self.items=[] def add(self,item): self.items.append(item) def pop(self): return self.items.pop()s = stack()s.add(1)s.add(2...
2019-06-13 19:59:13 263
原创 算法基础
KMPdef KMP_algorithm(string, substring): ''' KMP字符串匹配的主函数 若存在字串返回字串在字符串中开始的位置下标,或者返回-1 ''' pnext = gen_pnext(substring) n = len(string) m = len(substring) i, j = 0, 0...
2019-06-12 19:55:04 185
原创 mongodb的配置文件
systemLog: destination: file path: "/var/log/mongodb/mongod.log" logAppend: truestorage: journal: enabled: trueprocessManagement: fork: truenet: bindIp: 192.168.2.140 por...
2019-06-12 17:00:22 162
原创 简述Gin框架集成swagger过程
简述Gin框架集成swagger过程1、安装 swaggo get github.com/swaggo/swag/cmd/swagswag 用于生成 docs 文件夹(swagger文档程序使用)安装完成后会在 ${GOPATH}/bin生成一个执行文件2、安装依赖包github.com/gin-gonic/gingithub.com/swaggo/gin-swagger3...
2019-06-01 18:20:05 1032
couchdb-2.3.0.msi
2018-12-16
protobuf-all-3.6.1.zip
2018-12-06
采用windows IME 机制编写拼音输入法C语言源码
2018-10-19
mac下redis desktop manager 0.9.3.29.zip
2020-01-02
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人