- 博客(11)
- 收藏
- 关注
原创 Go语言小细节——内置类型键值或下标规则
数组和切片组合字面值中下标规则数组和切片组合字面值中的下标必须为整数常量在一个数组或切片组合字面值中,如果一个元素的索引下标缺失,则编译器认为它的索引下标为出现在它之前的元素的索引下标加一package mainimport "fmt"var x = []int{2: 5, 6, 0: 7}func main() { fmt.Println(x) // [7 0 5 ...
2019-12-22 21:47:31
282
原创 Go语言小细节——表达式估值顺序
表达式估值当估值一个表达式、赋值语句或者函数返回语句中的操作数时,所有的函数调用、方法调用和通道操作将按照它们在代码中的出现顺序进行估值。但是 Go 白皮书未指定表达式中其它估值顺序。目前 Go 的编译器官方维护有两种主流的,一个是 gc 编译器,一个是 gccgo 编译器,两种编译器打印出来的值不一样。package mainvar x, i = []int{1, 2}, 0func...
2019-12-22 21:36:55
205
原创 Go语言小细节——变量估值规则
变量与常量的估值package mainfunc main() { var n uint = 10 const N uint = 10 var x byte = (1 << n) / 100 var y byte = (1 << N) / 100 println(x, y) // 0 10}程序的打印结果值为:0,10以上程序中,x 与 y 的输出不...
2019-12-22 17:51:01
192
原创 Go语言小细节——分号自动插入规则
插入规则在 Go 代码中,注释除外,如果一个代码行的最后一个语法词段(token)为下列所示之一,则一个分号将自动插入在此字段后(即行尾):一个标识符一个整数、浮点数、虚部、码点或者字符串字面表示形式这几个跳转关键字之一:break、continue、fallthrough 和 return自增运算符++或者自减运算符–一个右括号:) ] }为了允许一条复杂语句完全显示在...
2019-12-22 16:44:56
585
原创 Linux线程的调度机制
Linux线程的调度机制 在Linux中,线程是由进程来实现,线程就是轻量级进程( lightweight process ),因此在Linux中,线程的调度是按照进程的调度方式来进行调度的。Linux这样实现的线程的好处的之一是:线程调度直接使用进程调度就可以了,没必要再搞一个进程内的线程调度器。 在Linux中,调度器是基于线程的调度策略(scheduling policy)和静...
2019-01-10 21:32:49
4979
原创 Longest Substring Without Repeating Characters 最长无重复子串
LeetCode题解 5. Longest Substring Without Repeating Characters题目思路代码实现(Go语言)题目Given a string, find the length of the longest substring without repeating characters.Examples:Given “abcabcbb”, the ans...
2019-01-05 22:04:19
94
原创 Golang的make与new的区别
Golang的make与new的区别创建对象类型不同返回类型不同make为什么返回非零值创建对象类型不同make用于内建类型(map、slice 和channel)的内存分配。new用于各种类型的内存分配。返回类型不同new的函数声明:func new(Type) *Type接受一个参数,这个参数是一个类型,分配好内存后,返回一个指向该类型内存地址的指针。它同时把分配的内存置为零,...
2019-01-04 16:02:12
326
原创 Golang的Goruntine调度原理
Golang的Goruntine调度机制Goroutine的调度模型调度实现注意要点每次go调用的时候当线程阻塞时Goruntinue如何调度G任务中断后的恢复Goroutine的调度模型Go的调度器内部有四个重要的结构:M,P,S,Sched(定义在源码的src/runtime/runtime.h文件中)一、G代表一个Goroutine对象,每次go调用的时候,都会创建一个G对象,它有自...
2018-12-22 23:28:07
1140
原创 Golang的垃圾回收机制
Golang的垃圾回收机制什么是垃圾回收?常见的垃圾回收方法引用计数(reference counting)标记-清除(mark and sweep)分代收集(generation)三色标记法Go的GC何时触发什么是垃圾回收?传统的系统级编程语言(主要指C/C++)中,程序员必须对内存小心的进行管理操作,控制内存的申请及释放。稍有不慎,就可能产生内存泄露问题,这种问题不易发现并且难以定位,一直...
2018-12-22 17:37:00
329
原创 一张图了解并发与并行
一张图了解并发与并行并发与并行并发并行图片详解总结并发与并行并发并发(Concurrency)。当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行,在一个时间段的线程代码运行时,其它线程处于挂起状。并行并行(Parallellism),当系统有一个以上CPU时,一个CPU执行一个线...
2018-12-20 21:09:34
2853
1
原创 进程、线程、协程与Goroutine
进程、线程、协程与Goroutine进程与线程(隔离与并行)进程线程协程协程的核心机制为何使用中断协程与线程协程与GoruntineGOMAXPROCS进程与线程(隔离与并行)进程进程可看作为分配资源的基本单位。比如你new出了一块内存,就是操作系统将一块物理内存映射到你的进程地址空间上(进程创建必须分配一个完整的独立地址空间),这块内存就属于这个进程,进程内的所有线程都可以访问这块内存,其...
2018-12-20 17:05:51
468
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人