- 博客(33)
- 收藏
- 关注
![](https://csdnimg.cn/release/blogv2/dist/pc/img/listFixedTop.png)
原创 Redis半知半解(一)----从源码简单理解Redis存储
###Redis版本:Redis5.0.14###人生建议,一定要按照对应的版本阅读,否则会相当难受一、什么是NoSQL NoSQL=not only sql(不仅仅是SQL) 关系型数据库:列+行,同一个表下数据结构是一样的 非关系数据库:数据存储没有固定的格式,并且可以进行横向扩展 NoSQL泛指非关系型数据库,在超大规模的并发时代,关系型数据库很难应付。 · RDBMS: 1. 组织化结构 2. 固定SQL .
2022-05-17 20:56:42
293
原创 python算法----背包九讲
# 背包九讲1def Hello(): print("01背包问题\n完全背包问题\n多重背包问题\n多重背包问题(二进制优化)\n多重背包问题(单调队列优化)\n混合背包问题\n二维背包问题\n分组背包问题")Hello()''' 01背包问题: 有N件物品,一个容量为V的背包,第i件物品的价值为value[i-1],重量为weight[i-1]; 在体积不超过背包容量的情况下,返回价值最高的方法; 每种物体只有一件,可以选择放还.
2022-05-28 02:29:08
1505
原创 操作系统导论(一)----导论和虚拟化CPU
一、导论 · 三个模块: 虚拟化 (虚拟化CPU、虚拟化内存)、并发、持久化 · 程序运行的流程: 1. CPU获取一条指令 2. 对其解码 (弄清楚这是哪条指令) 3. 执行它 完成这条指令之后,处理器继续执行下一条指令,直到程序最终完成; · 虚拟化: 1. 操作系统将物理资源 (如CPU、内存、磁盘)转换为更通用、更强大且易于使用的虚拟形式; 2. 虚拟化可.
2022-05-27 02:43:37
372
原创 Docker从精通到入门(三)----libcontainer
### libcontainer版本1.2.0### libcontainer源码可以在vendor中找到一、libcontainer介绍 1. Docker的本质离不开Linux内核的很多高级特性; 2. Docker Daemon作为一个常驻进程,管理Client请求的同时,还管理所有的Docker容器; Linux操作系统内核态对容器的管理,需要为用户态的Daemon服务, 如果在Daemon与Linux内核之间有一套完善的API接口,那么两者的衔.
2022-05-24 05:43:18
462
原创 关于Go协程的一些理解
Goroutine的调度这段代码执行后的输出是什么?代码逻辑猜猜会发生什么GMP模型总结如何创建协程回到问题当goroutine数量超过256会怎么样呢?总结这段代码执行后的输出是什么?package mainimport ( "fmt" "runtime" "sync")var wp sync.WaitGroupfunc m(n int) { fmt.Printf("%v "n) wp.Done()}func main() { runtime.GOMAXPROCS(1)
2022-05-23 13:42:09
360
原创 Golang源码学习(二)----Go源码学习基础
### 本文源码版本为 GO 1.17.8 Windows/amd64;### 可能参与对比的版本:GO 1.16.2 Linux/amd64一、Golang的编译器究竟是如何工作的? (学习源码有什么意义) 1. 能修改go语言程序源码 (从某种意义上来说你可以定制一个属于你的语言) 2. 以语言开发者的角度去学习语言本身 (直接感受顶尖的设计思路,实用性算法和数据结构的学习) 3. 理解go语言语法糖以及原生性的实现原理 (拒.
2022-05-22 06:08:32
888
原创 Golang源码学习(一)----从0开始学编程
一、Go源码学习的环境搭建 (CentOS_8) 选择的是CentOS8中最小化安装 前往家目录 cd 创建go工作空间 mkdir go cd go mkdir repos 获取安装包 wget https://dl.google.com/go/go1.16.2.linux-amd64.tar.gz 解压安装包 tar zxf go1.16.2.linux-amd64.
2022-05-22 01:49:21
675
1
原创 Go数据结构----跳表skiplist
/* 随便写的,只用于简单体现结构特性 */package skiplistimport "fmt"type skiplist struct { head *skiplistNode tail *skiplistNode len int level int}type skiplistNode struct { value uint nexts []*skiplistNode backward *skiplistNode}func (sl *skipl.
2022-05-21 14:53:52
291
原创 Redis半知半解(三)----通信协议与命令对象
一、Redis通信协议 · Redis基于RESP(Redis Serialization Protocol)协议来完成客户端和服务端的通信; RESP本质是一种文本协议,实现简单、易于解析。 · 客户端和服务端通过tcp/流式域套接字来进行通信,为了防止粘包因此命令或数据结构以\r\n(CRLF)结尾 (tcp会解分字节流,所以会混在一起) · 请求 get username:1234 --> *2\.
2022-05-21 03:34:42
146
原创 简单了解MapReduce
一、MapReduce解决了什么问题? · 在处理大规模问题时,每次都需要考虑多级并行协调、网络通信、处理错误、提高执行效率的问题 · 这些问题严重降低了开发的效率,MapReduce编程模型就是用于解决这个问题的 · 将这些通用性的问题抽象化,使得能让多台普通的机器也能处理大规模问题 · MapReduce就是为了解决多级并行协调、网络通信、处理错误、提高执行效率等通用性问题的编程框架二、MapReduce是什么? · 大量重复.
2022-05-21 01:54:34
771
原创 Docker从精通到入门(二)----Docker Client
########获取docker1.2的源码 docker pull docker-dev:v1.2.0 docker run --rm -it --privileged -e BUILDFLAGS -e DOCKER_CLIENTONLY -e DOCKER_EXECDRIVER -e DOCKER_EXPERIMENTAL -e DOCKER_GRAPHDRIVER -e DOCKER_STORAGE_OPTS -e DOCKER_USERLANDPROXY -e TESTDIRS .
2022-05-20 21:10:41
1520
原创 Docker从精通到入门(一)----Docker的大致架构
########本系列无运维实践############想看运维相关建议直接划走######系列是基于Go源码浅层分析,不涉及进一步的编译#######理论来源Docker 1.2,源码为docker-ce 18.09(docker-ce集成了Client和Daemon,因为暂时找不到基于docker-ce的完整分析,所以文章夹带了大量作者的个人理解)(最新版本的Docker-ce 不再将Client和Daemon集合到一个项目中,而是分散在了两个项目)(最新版本的Clinent:http.
2022-05-20 04:23:47
437
原创 Redis半知半解(二)----浅谈Redis的持久化和高可用
一、AOF持久化 1. AOF持久化是怎么实现的? AOF会将Redis执行的每一条写操作都以追加的方式写入到一个文件中,重启Redis是先去执行整个文件就能恢复数据了; Redis的AOF持久化功能默认是不开启的,因为与Redis的设计理念冲突。 修改conf文件中的appendonly字段 和 appendfilename字段开启AOF持久化 Redis先执行操作才会写入到AOF日志中, 好处: · 只有语.
2022-05-17 21:00:58
230
原创 Redis源码学习----Redis的基本数据结构
一、redis的简介、特性、部署 · 简介 Redis是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存、消息中间件。 需要注意他和levelDB的区别。 · 特性 1. 性能高 2. 丰富的数据类型 3. 支持事务 4. 内建replication和集群 (主从复制、Redis Cluster) 5. 支持持久化 (RDB设置阈值.
2022-05-12 22:37:59
292
原创 Golang数据结构----从字符串到map
简单介绍了Golang中string、slice、array、map四种数据结构,以及Golang内存对齐的策略。一、string 变长字节存储,根据不同的前缀来判断字节长度。 Golang中的字符串结构: string [data][lenght] lenght是实际字节byte长度 data为起始地址 所以string的内存是 指针8+长度8=16 Golang中不允许通过下标修改字符,字符串被分配到只读内存段; 字符串是
2022-05-11 05:02:22
1664
原创 Golang源码学习----gin框架简单阅读
一、热加载 go get github.com/pilu/fresh 快速编译,省去了每次手动go run二、gin特点 轻量级、运行速度快,性能、高效 擅长API接口的高并发,项目规模不大,业务简单三、Engine启动器 Engine是框架的实例,使用NEW()或着Default()来创建。 使用gin实际上就是使用engine的方法。 其中 engine.trees !!!负责存储路由和handle方法的映射,采.
2022-05-09 01:50:03
1332
原创 python算法复习(八)----树形dp、位运算
# 本章的内容是树形dp,非常重要,熟练掌握后可以解决大部分二叉树问题。# 以及大数据问题的补充点,以及之前学习过程中没有完成的二进制运算(感谢Golang)class TreeNode(object): def __init__(self, value): self.value = value self.left = None self.right = None def __repr__(self): return s.
2022-05-07 18:22:34
609
原创 Golang内存分布--从源码到分析
一、内存分配器 程序中的数据和变量都会被分配到程序所在的虚拟内存中,内存才能空间包含两个重要区域: 栈区(Stack)和堆区(Heap)。 函数调用的参数、返回值以及局部变量大都会被分配到栈上、这部分内存会有编译器进行管理。 不同编程语言使用不同方法管理堆区的内存,c++、等编程语言会由使用者主动申请和释放内存; Go和Java等编程语言会由使用者和编译器共同管理。 堆中的对象有内存分配器分配并由垃圾收集器回收。 栈区速度>>堆区速度,.
2022-05-05 22:47:16
776
原创 python算法复习(七)----KMP、Manacher、滑动窗口和单调栈
感觉标题越来越长了haha# 本章的内容是KMP算法、Manacher算法、滑动窗口、单调栈# 本章的几个都是方法类的,熟练掌握很重要# 字符串str1和str2,str1中是否包含str2,如果包含返回str2在str1开始的位置.# 常规方法: 双指针,一个指向str1[0],一个指向str2[0],# 如果两个指针指向的value相同,两个指针都+1,# 如果不相同,str1指针+1,str2回到0位置# 即以str1每一个
2022-05-02 21:45:33
980
原创 python算法复习(六)----有序表(详解 AVL树和跳表 )和并查集
# 本章的内容是有序表和并查集,# 在学习哈希表的时候我们提到过哈希表的构成可以使用单链表,那么我们能不能使用更高效、更多功能的方式完成呢# 在图的最小生成树的kruskal算法中就简单接触到了并查集的简单功能,这次会完整的实现整个结构# 岛问题(引出并查集结构)# 一个矩阵中只有0和1两种值,每个位置都可以和自己的上下左右四个位置相连,如果有一片1连在一起,这个部分叫做一个岛,求一个矩阵中有多少个岛# 解题思路:从左上开始遍历整个矩阵,当遇到1的时候,看看它的上下左右是不是也是1,如果是1.
2022-05-01 21:55:54
307
原创 python算法复习(五)----哈希函数及大数据问题
'''本章简单讲讲哈希函数的实现,和大数据问题的处理方法认识哈希函数 1.输入域是无穷的,输出域是有限的. 2.相同的输入会返回相同的输出 3.不同的输入可能会返回相同的输出(哈希碰撞,因为输入域是无穷的,输出是有限的) 4.输出是均匀的、离散的 (假设输出域是一个大圆圈,里面有n个输出,那么在这个圆圈中任意位置的同大小范围内的输出个数是几乎相同的) 换句话说,即使输入的值相似度很高,它们的输出差异性也会很大那么通过哈希函数的性质,我们可以进一步发.
2022-04-21 16:58:23
2215
原创 python算法复习(四)----贪心算法和暴力递归
# 接下来就是算法基础内容中最重要的贪心算法和暴力递归了## 那么什么是贪心算法呢?# 在某一标准下,优先考虑最满足标准的样本,最后考虑最不满足标准的样本,最终得到一个答案的算法,叫做贪心算法。# 也就是说,不从整体最优上加以考虑,所作出的是某种意义上的局部最优解# 先拿一个经典的会议安排问题开头吧# 一些项目要占用一个会议室宣讲,会议室不能同时容纳两个项目的宣讲。[开始时间,结束时间]# 给你每一个项目开始的时间和结束的时间,你来安排宣讲的日程,要求会议室进行的宣讲场次最多,返回宣讲场.
2022-04-20 15:06:12
889
原创 python算法复习(三)----图和前缀树
# 本章重点讲的是图结构,顺带一点前缀树的内容,这两个结构题目的解答比较偏向于套路解答# 前缀树节点结构:class TrieNode(object): def __init__(self): self.transfer = 0 # 这个字符的经过次数 self.end = 0 # 这个字符是多少个次的结尾 self.nexts = [None] * 26 # 有通往"a""b""c"...的路吗# 图的存储方式:# 1.邻.
2022-04-18 22:05:39
678
原创 python算法复习(二)----链表和二叉树
# 本节讲的内容是链表和双链表结构,以及和链表相似度很高的二叉树结构import sysclass LinkNode(object): def __init__(self, value=None): self.value = value self.next = None def __repr__(self): return str(self.value)class DoubleLinkNode(object): def.
2022-04-16 15:05:28
736
原创 python算法复习(一)----排序算法
从头复习一遍算法,顺便整理一下笔记。# 选择排序# 时间复杂度 O(n^2)# 每一趟在n-i+1个记录中选择关键字最小的记录作为序列中的第i个记录。import randomdef select_sort(arr): if arr == [] or len(arr) < 2: return arr for i in range(len(arr)): minimumindex = i for j in range(i +
2022-04-12 21:38:28
716
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人