Golang 手写一个 Channel
对于 Golang 来说,其实永远绕不过几个东西,一个是 GMP 模型,这个已经倒背如流了,相信每一个 Gopher 都已经深挖过 GMP,这在我的内部 Wiki 中也有非常详细的源码解读,此外就是 Channel。
作为前端、后端、算法等学习笔记集合。
对于 Golang 来说,其实永远绕不过几个东西,一个是 GMP 模型,这个已经倒背如流了,相信每一个 Gopher 都已经深挖过 GMP,这在我的内部 Wiki 中也有非常详细的源码解读,此外就是 Channel。
CLion 配置 安装和基础设置 至于 CLion 安装和基础设置,网上教程一大把,而且不是学习重点,根据自己需求配置即可。 工具链配置 这个配置是进行 C++ 开发的关键,因为这个编译工具链就意味着 C++ 的编译环境。 按下图点开对应的信息,如果你任何编译工具链都没有添加,由于新版本的 CLion 它会自带一个 mingw 的编译套件,所以默认会有一个
for 循环语句 (注意 :,print 前有四个空格) for 循环遍历列表 写法一 len 也可以用来求字符串长度,元组、集合、字典元素个数 写法二 break 语句 continue 语句 补充 字符的编码 ord(x) 求字符 x 的编码 chr(x) 求编码为 x 的字符 (使用 ASCII 编码方案) 例题 多重循环 多重循环中的 break 只
最近在全面学习数据结构,常用算法记录:简单选择排序和堆排序,简单选择排序的基本思想是每一趟在待排序元素中选取关键字最小的元素加入有序子序列,直到所有元素有序,总共进行 $n-1$ 趟。 堆排序的基本思想见文末图片。 简单选择排序为不稳定排序。 堆排序为不稳定排序。 简单选择排序时间复杂度: 时间复杂度:$O(n^2)$ 空间复杂度:$O(1)$ 堆排序时间复
最近在全面学习数据结构,常用算法记录:希尔排序,基本思想是选定一个增量 $d<n$,将元素按此增量分组(所有相距 $d$ 的元素为一组),然后在各个子序列内进行插入排序,完成后缩小增量 $d'(d'<d)$,如此反复操作,直到增量 $d = 1$ 为止,此时就成了标准的插入排序,但此时大部分元素已经有序,只需要少量操作,甚至不用操作即可完成排序。该排序算法为
最近在全面学习数据结构,常用算法记录:插入排序,基本思想是将待排序的记录按其关键字的大小逐个插入到一个有序序列(通常为左半部分),直到所有记录插入完成,是一种稳定排序。 空间复杂度:$O(1)$ 平均时间复杂度:$O(n^2)$
最近在全面学习数据结构,常用算法记录:快速排序,即交换排序的一种,是对冒泡排序的一种改进,是一种不稳定排序。 平均时间复杂度:$O(nlogn)$ 最坏时间复杂度(退化至冒泡排序):$O(n^2)$
算法运算 / + - (结果均为小数,) %(取余) //(求商,往小取整) (求幂) 有小数的算术表达式,结果就是小数(除非经过其他转换) 算术优先级 \ / // % \+ - (多用 ()可取代优先级) 算术运算的同时赋值 += 实际意义: a+=s 即 a=a+s (数学符号不可乱用于此) 关系运算符 != == > <>= and>or (短路计算
第一章 初步认识 符号 均为英文(除非输出为中文字符) 注释(方便理解) 单行注释 #开头 多行注释 Ctrl+/(选中多行文字添加或取消注释) 变量(存储数据) 命名:大小写字母、数字和下划线构成,中间不能有空格,长度不限,不能以数字开头。(py 预留的不可做变量名字) 注意: 变量名大小可代表不同变量,不可混为一谈 赋值语句(变量 = 表达式) 注意:
输入一个长度为 $n$ 的整数数列,从小到大输出前 $m$ 小的数。 输入格式 第一行包含整数 $n$ 和 $m$。 第二行包含 $n$ 个整数,表示整数数列。 输出格式 共一行,包含 $m$ 个整数,表示整数数列中前 $m$ 小的数。 数据范围 $\rm{1} \le m \le n \le {10^5}$ $\rm{1} \le 数列中的元素 \le {