上一页 1 2 3 4 5 6 ··· 11 下一页

2021年1月12日

物理地址虚拟地址

摘要: 物理地址就是,机器内主存的地址,包括RAM和ROM,RAM断电无法保存,即cup运行内存,ROM断电可以保存,如磁盘, 虚拟地址:从CPU到MMU的地址称为虚拟地址,cpu支持的内存空间远远大于机器主存的大小,这些多出来的空间对于程序来说是可以用的,这个时候的所有地址都称为虚拟地址 逻辑地址就是,程 阅读全文

posted @ 2021-01-12 21:17 吃我一枪 阅读(354) 评论(0) 推荐(0) 编辑

进程通信方式

摘要: 分高级和低级,高级通信有三类七种, 参考:https://wiki.mbalib.com/wiki/%E8%BF%9B%E7%A8%8B%E9%97%B4%E9%80%9A%E4%BF%A1 https://www.jianshu.com/p/c1015f5ffa74 阅读全文

posted @ 2021-01-12 20:32 吃我一枪 阅读(141) 评论(0) 推荐(0) 编辑

进程和线程

摘要: 1 进程是资源分配的基本单位,由程序段、数据段、PCB(进程的管理者)组成, 线程是资源调度和程序运行的基本单位, 由线程ID、寄存器(程序计数器,状态寄存器,通用寄存器)、栈(核心栈和用户栈,在核心态下用核心栈,用户态下用用户栈)、私有存储区(现场保护信息和与该线程有关的统计信息) 线程自己基本上 阅读全文

posted @ 2021-01-12 15:41 吃我一枪 阅读(167) 评论(0) 推荐(0) 编辑

虚拟内存

摘要: 虚拟内存允许执行进程不必完全在内存中。虚拟内存的基本思想是:每个进程拥有独立的地址空间,这个空间被分为大小相等的多个块,称为页(Page)。每个页都是一段连续的地址,这些页被映射到物理内存,但是并不是所有的页都必须在内存中才能运行程序。当程序引用到一部分在物理内存中的地址空间时,由硬件立刻进行必要的 阅读全文

posted @ 2021-01-12 14:21 吃我一枪 阅读(180) 评论(0) 推荐(0) 编辑

2021年1月10日

谷歌插件沙拉查词安装

摘要: 1 浏览器输入chrome://extensions/ 点击扩展程序,打开网上应用商店直接搜索, 阅读全文

posted @ 2021-01-10 20:54 吃我一枪 阅读(1280) 评论(0) 推荐(0) 编辑

2021年1月9日

伴鱼面试题

摘要: 1 用time.After和context实现,两个方法本质上都是用了context或chan进行传递信息,如果go协程结束了,则用cancel关闭协程或往channel中传入值,同时用case time.After进行阻塞,若go协程超时了,则会走case time.After通道, 两种方法,第 阅读全文

posted @ 2021-01-09 18:42 吃我一枪 阅读(278) 评论(0) 推荐(0) 编辑

2021年1月8日

异常处理

摘要: 1 出现异常时可以用panic输出(这里的输出是把panic里的内存输出到日志上),为了不让程序终止可以用defer函数结合recover,这样程序不会因异常直接退出,recover可以把panic中的报错捕获到,如果不使用recover函数的话遇到panic程序就会终止,用上的话程序并不会立即终止 阅读全文

posted @ 2021-01-08 10:44 吃我一枪 阅读(57) 评论(0) 推荐(0) 编辑

2021年1月7日

map slice并发不安全问题

摘要: 1 map 在并发情况下,只读是线程安全的,同时读写是线程不安全的, 如下会报并发读写的错误fatal error: concurrent map read and map write func main(){ // 创建一个int到int的映射 m := make(map[int]int) // 阅读全文

posted @ 2021-01-07 20:37 吃我一枪 阅读(349) 评论(0) 推荐(0) 编辑

Mutex和RWMutex

摘要: Golang 中的有两种锁,为 sync.Mutex 和 sync.RWMutex。 sync.Mutex 的锁只有一种锁:Lock(),它是绝对锁,也称互斥锁,同一时间只能有一个锁。 sync.RWMutex 叫读写锁,它有两种锁: RLock() 和 Lock(): RLock() 叫读锁。它不 阅读全文

posted @ 2021-01-07 20:28 吃我一枪 阅读(286) 评论(0) 推荐(0) 编辑

内核态和用户态

摘要: http://gityuan.com/2016/05/21/syscall/ 阅读全文

posted @ 2021-01-07 09:41 吃我一枪 阅读(50) 评论(0) 推荐(0) 编辑

2021年1月6日

runtime源码

摘要: go有自己的调度器,所以在语言级别实现了并发, https://www.infoq.cn/article/r6wzs7bvq2er9kuelbqb 图:https://blog.csdn.net/xclyfe/article/details/50562349 https://blog.csdn.ne 阅读全文

posted @ 2021-01-06 14:46 吃我一枪 阅读(115) 评论(0) 推荐(0) 编辑

goroutine的结束与通信

摘要: 结束 两种方法,一是用select+channel的方法,结合WaitGroup可以同时控制多个goroutine结束,也可以在channel中传入time.After的定时器,二是利用Context里的取消函数cancel来处理, 感觉只利用select+channel+定时器进行监控协程不是很完 阅读全文

posted @ 2021-01-06 12:18 吃我一枪 阅读(90) 评论(0) 推荐(0) 编辑

2021年1月5日

进程线程协程

摘要: 1 操作系统为了支持多个应用同时运行,需要保证不同进程之间相对独立(一个进程的崩溃不会影响其他的进程 , 恶意进程不能直接读取和修改其他进程运行时的代码和数据)。因此操作系统内核需要拥有高于普通进程的权限, 以此来调度和管理用户的应用程序。 内存空间被划分为两部分,一部分为内核空间,一部分为用户空间 阅读全文

posted @ 2021-01-05 21:20 吃我一枪 阅读(62) 评论(0) 推荐(0) 编辑

2021年1月4日

堆和栈

摘要: 1 栈 函数调用内部申请到的内存,它们会随着函数的返回把内存还给系统 2 堆 阅读全文

posted @ 2021-01-04 23:01 吃我一枪 阅读(43) 评论(0) 推荐(0) 编辑

array和slice区别

摘要: slice 切片的创建 // slice的创建 // slice的创建有三种方式,一种是通过数组来创建,一种是直接创建切片,一种是用make // slice结构体在runtime包下的slice.go里,它有三个属性, // array是个指针,指向切片中第一个元素的地址,也是返回的结果 // l 阅读全文

posted @ 2021-01-04 21:48 吃我一枪 阅读(513) 评论(0) 推荐(0) 编辑

逃逸分析

摘要: 逃逸分析的好处: 1 逃逸分析的好处是为了减少gc的压力,不逃逸的对象分配在栈上,当函数返回时就回收了资源,不需要gc标记清除。 2 逃逸分析完后可以确定哪些变量可以分配在栈上,栈的分配比堆快,性能好(逃逸的局部变量会在堆上分配 ,而没有发生逃逸的则有编译器在栈上分配)。 3 同步消除,如果你定义的 阅读全文

posted @ 2021-01-04 13:58 吃我一枪 阅读(271) 评论(0) 推荐(0) 编辑

2021年1月1日

单例模式

摘要: 为了节约系统资源,有时需要确保系统中某个类只有唯一一个实例,当这个唯一实例创建成功之后,我们无法再创建一个同类型的其他对象,所有的操作都只能基于这个唯一实例。为了确保对象的唯一性,我们可以通过单例模式来实现, 1 使用如下的方式,每次都会赋值一份数据,但事实上并没有这个必要,浪费了内存, type 阅读全文

posted @ 2021-01-01 17:38 吃我一枪 阅读(75) 评论(0) 推荐(0) 编辑

WaitGroup用法

摘要: 1 Add()用来设置要等待的goroutine的数量,不能为负,Done()用来表示goroutine已经完成了,减少一次计数器,Wait()用来等待所有需要等待的goroutine完成。特别注意这个传递的时候要传指针,传值的话是错误的, package main import ( "fmt" " 阅读全文

posted @ 2021-01-01 12:09 吃我一枪 阅读(348) 评论(0) 推荐(0) 编辑

select+chan控制goroutine结束

摘要: 1 一旦向chan中写入值了,select就执行之前阻塞的该通道,执行完后,再执行return,结束goroutine, func main() { stop := make(chan bool) go func() { for { select { case <-stop: fmt.Println 阅读全文

posted @ 2021-01-01 11:42 吃我一枪 阅读(213) 评论(0) 推荐(0) 编辑

2020年12月31日

channel用法和源码

摘要: 源码分析https://mp.weixin.qq.com/s/eCwZMwGjU2yoXu6K2nGF3g 1 当chan用close关闭时,无论是有缓存的还是无缓存的,返回已缓冲数据或零值,如果重复用close关闭chan或对关闭的chan写入值都会报错, https://blog.csdn.ne 阅读全文

posted @ 2020-12-31 22:56 吃我一枪 阅读(11318) 评论(0) 推荐(0) 编辑

golang的坑

摘要: https://tonybai.com/2015/01/13/a-hole-about-variable-scope-in-golang/ 阅读全文

posted @ 2020-12-31 22:14 吃我一枪 阅读(58) 评论(0) 推荐(0) 编辑

2020年12月27日

golang调度器原理

摘要: 三个常见的线程模型。 一个是N:1的,即多个用户空间线程运行在一个OS线程上。这个模型可以很快的进行上下文切换,但是不能利用多核系统(multi-core systems)的优势。 一个是1:1的,即可执行程序的一个线程匹配一个OS线程。这个模型能够利用机器上的所有核心的优势,但是上下文切换非常慢, 阅读全文

posted @ 2020-12-27 20:45 吃我一枪 阅读(131) 评论(0) 推荐(0) 编辑

context源码

摘要: Context接口有四个方法, Deadline方法是获取设置的截止时间的意思,第一个返回式是截止时间,到了这个时间点,Context会自动发起取消请求;第二个返回值ok==false时表示没有设置截止时间,如果需要取消的话,需要调用取消函数进行取消。 Done方法返回一个只读的chan(我感觉不是 阅读全文

posted @ 2020-12-27 20:34 吃我一枪 阅读(120) 评论(0) 推荐(0) 编辑

2020年12月26日

make和new比较

摘要: new(T) 返回 T 的指针 *T 并指向 T 的零值。make(T) 返回的初始化(不是零值)的实例T(不是*T),只能用于 slice,map,channel。 https://zhuanlan.zhihu.com/p/438542710 https://zhuanlan.zhihu.com/ 阅读全文

posted @ 2020-12-26 18:48 吃我一枪 阅读(67) 评论(0) 推荐(0) 编辑

golang垃圾回收

摘要: 1 使用写屏障的原因:对于和用户程序并发运行的垃圾回收算法,用户程序会一直修改内存,所以需要记录下来。就问为了记录引用的修改,写屏障通俗的说就是垃圾回收的同时,由于程序还在运行,所以变量间的引用也会发生变化,这时如果仍然只执行三色标记就会发生错误,所以需要插入写屏障,对那些修改变量间引用的程序进行标 阅读全文

posted @ 2020-12-26 18:46 吃我一枪 阅读(128) 评论(0) 推荐(0) 编辑

学习资料

摘要: https://www.yuque.com/zhangjian-mbxkb/spkqgr/mirgmq https://www.cnblogs.com/williamjie/p/11187470.html https://www.yuque.com/zhangjian-mbxkb/spkqgr/mi 阅读全文

posted @ 2020-12-26 17:33 吃我一枪 阅读(34) 评论(0) 推荐(0) 编辑

2020年12月22日

jwt认证

摘要: https://www.ruanyifeng.com/blog/2018/07/json_web_token-tutorial.html 阅读全文

posted @ 2020-12-22 19:37 吃我一枪 阅读(33) 评论(0) 推荐(0) 编辑

别人的仓库转存到自己的仓库

摘要: 1 删除 .git的时候用rm -rf .git https://www.codeleading.com/article/21572517402/ 推送到远程 git push origin master 阅读全文

posted @ 2020-12-22 17:40 吃我一枪 阅读(115) 评论(0) 推荐(0) 编辑

git教程

摘要: http://marklodato.github.io/visual-git-guide/index-zh-cn.html#checkout https://backlog.com/git-tutorial/cn/stepup/stepup2_5.html 阅读全文

posted @ 2020-12-22 10:22 吃我一枪 阅读(34) 评论(0) 推荐(0) 编辑

2020年12月19日

http源码

摘要: ServeHTTP函数调用在三个地方,它们三个都实现了Handler接口, 一是serverHandler{c.server}.ServeHTTP(w, w.req),它是serverHandler调用的,里面有ListenAndServe初始化时生成的Server对象,因为Server中有注册的路 阅读全文

posted @ 2020-12-19 19:44 吃我一枪 阅读(582) 评论(0) 推荐(0) 编辑

学习资料

摘要: https://www.shipengqi.top/network-protocol-learn/tcp.html 操作系统: http://c.biancheng.net/cpp/u/xitong/ https://www.cnblogs.com/inception6-lxc/p/9073983. 阅读全文

posted @ 2020-12-19 15:45 吃我一枪 阅读(35) 评论(0) 推荐(0) 编辑

resty包

摘要: 1 resty包用于服务间的调用,服务间是用http协议通信的,即它可以实现发送http请求,并接受响应的功能, https://www.mdeditor.tw/pl/gkN7 阅读全文

posted @ 2020-12-19 13:21 吃我一枪 阅读(105) 评论(0) 推荐(0) 编辑

2020年12月17日

分支合并

摘要: 1 利用goland自带的合并功能合并时,Git下有个Merge Changes,进去后一旦点击merge,代码就合并了,只是没具体确定,用之前可以做个副本来先合并, m分支生成了a分支,当a分支与另一个b分支merge后,即把b合并到a里(没有commit,只是add了),若a中此时新增了文件,则 阅读全文

posted @ 2020-12-17 21:10 吃我一枪 阅读(427) 评论(0) 推荐(0) 编辑

2020年12月16日

技巧

摘要: 1 编程习惯 // 当传入的参数需要和当前的对象的某个参数一起调用其它的函数时,往往会这样写, // 遇到一个函数里面直接调用另一个函数时,很多都是这种情况, func (r *Resource) RenderRelatedCards(items types.IRecItemList) { r.Re 阅读全文

posted @ 2020-12-16 20:38 吃我一枪 阅读(61) 评论(0) 推荐(0) 编辑

2020年12月14日

git stash

摘要: git分支切换前,执行了git add .,没有commit,结果导致切换分支又切换回来后直接返回最初的版本了,最先的注释也没有了,切换前执行了git stash保存了进度,切换回来后利用git stash list查看所有的stash,直接利用git stash pop没有找到原先的代码,要用gi 阅读全文

posted @ 2020-12-14 20:14 吃我一枪 阅读(118) 评论(0) 推荐(0) 编辑

2020年12月13日

gin源码

摘要: 分析如下代码 func Index(c *gin.Context) { c.JSON(200, gin.H{"message":"kkkkkkkkk"}) fmt.Println("first") func main() { r := gin.Default() k := r.GET("/ping" 阅读全文

posted @ 2020-12-13 20:30 吃我一枪 阅读(252) 评论(0) 推荐(0) 编辑

2020年12月11日

httprouter源码

摘要: 1 源码解读 httprouter是一个golang实现的路由组件。httprouter使用一个前缀树(也叫基数树,压缩前缀树)来维护映射的父子关系,通过前缀树快速路由。同时其里面的Router结构体实现了golang的net.http.server的Handler接口下的ServeHTTP方法,可 阅读全文

posted @ 2020-12-11 16:28 吃我一枪 阅读(272) 评论(0) 推荐(0) 编辑

2020年12月10日

空接口

摘要: 1 注意下面这样用空接口的时候,类型无法传递 package main import "fmt" func main() { a := [][]string{{"a","b","c"}} fmt.Println(a) test1(a) // interface{}可以接受任意类型,但这里不能这样传递 阅读全文

posted @ 2020-12-10 15:01 吃我一枪 阅读(74) 评论(0) 推荐(0) 编辑

2020年12月7日

http状态码与业务状态码

摘要: 1 http状态码和业务状态码不是一个东西 https://cloud.tencent.com/developer/article/1540087 阅读全文

posted @ 2020-12-07 10:31 吃我一枪 阅读(1266) 评论(0) 推荐(0) 编辑

2020年12月2日

gin中间件

摘要: 1 Gin中的中间件必须是一个gin.HandlerFunc类型,它是个函数签名,在gin源码中是如下定义的,即输入类型为 *Context,没有返回值的函数, Gin支持设置全局中间件和针对路由分组设置中间件,设置全局中间件意思就是会拦截所有请求,针对分组路由设置中间件,意思就是仅对这个分组下的路 阅读全文

posted @ 2020-12-02 20:35 吃我一枪 阅读(271) 评论(0) 推荐(0) 编辑

上一页 1 2 3 4 5 6 ··· 11 下一页

导航