- 博客(115)
- 资源 (1)
- 收藏
- 关注
原创 使用Go语言每分钟处理1百万请求
在Go中要实现高并发,可以使用 go routine 每个请求 都开启 一个 go routine 去处理,但这样的方式 当 流量大了 就不太可行了,另一种方法 是开启 一个 channel 缓存请求队列 然后 再 for select 循环去 取 任务 ,但是当 请求速度 达到最大 的channel 的时候 请求 就会阻塞, 所以 另一种 方法是结合 上面的2中有点 开启多个channel 每个channel 有一个 携程 去消化 ,这样 又可以利用多核的优势,用能控制携程 的数量。package po
2020-12-18 15:01:40
688
2
原创 Go Json 序列化笔记
在开发过程中 对 Json 的序列化 是经常要使用到的功能,而Golang 自带的 反序列化 在开发中经常 使用。type Order struct { Id uint32`json:"json"` Productname string `json:"productname"` Price float64 `json:"price"` Cratedate time.Time `json:"cratedate"` }对于 实体数据 或数据库表 我们经常需要声明 结构体来实现建模。
2020-10-01 12:24:35
466
原创 Golang base64 编码
ff, err := ioutil.ReadFile("/Users/qiao/Documents/IMG_20200729_132203.jpg") if err != nil{ panic(err) } //计算 buffer 所需长度 blen := base64.StdEncoding.EncodedLen(len(ff)) buffstore := make([]byte,blen) base64.StdEncoding.Encode(buffstore, ff) //将 [].
2020-08-25 11:27:03
464
原创 java oop/klass对象模型
Class a = new ClassA ( );当Hotspot执行到这里时,会先将 ClassA 这个类型加载到 perm 区 ( 也叫方法区 ),然后在 Hotspot 堆中为其实例对象a开辟一块内存空间,存放实例数据。在 JVM加载ClassA到 perm 区时,JVM就会创建一个instanceKlass,instanceKlass中保存了 ClassA 这个 Java 类中所定义的一切信息,包括变量 、方法 、父类 、接 口、构造函数 、属性等,所以 instanceKlass 就是 Clas
2020-07-12 16:48:48
494
原创 一文带你快速了解编译原理
什么是程序的执行?输入程序输出程序可以看做一个函数,接受输入和返回输出?什么是编译器?源程序编译器目标程序将源程序编译成 目标程序。代表:c/c++gorust什么是解释器?源程序解释器输入输出代表:pythonlua混合编译器源程序第一次编译中间代码第二次编译虚拟机输入输出中间代码更容易被翻译成目标程序、优化空间更大中间语言的存在更利于编译器的实现让虚拟机处理复杂的执行环境(跨平台)代表:java即时编译器(Just-in-time compil
2020-07-05 19:45:01
5338
原创 KMP 算法 笔记
KMP 包含一个PMT表。我们把 待匹配的文字称为 模式字符串.前缀 : “aba” 前缀为 除去 最后一个 字符 “a” 所 形成 的集合。 {“a”,“ab”}后缀 : “aba” 后缀 为 除去 最前的一个字符串 “a” 所形成的集合 {“a”,“ba”}它们 之间的 交集为 {“a”} ,长度为 1,那么 在 PMT表 中 a 对应 1.模式字符串 issip 在 某一个 地方 出现 不匹配,那么 至少 在 前 j -1 个字符是匹配的.如果 是普通的 做法,如果我们 碰到 不匹配
2020-07-01 16:32:13
334
原创 leetcodebyrust rust 刷题指南
打算使用 rust 刷leetcode md 放在了github网站:https://qiaojinxia.github.io
2020-06-23 17:16:16
666
原创 从零开始用 Rust 打造一个玩具级别 Java 虚拟机 (二) Class字节码解析
.Class文件介绍JAVA中每个class 文件就是一个类,类名和文件名相同, 按照Java虚拟机规范其中对类名有了严格的规定。Java虚拟机 对类的加载方式则较为宽松 类文件可以是从.JAR .ZIP 文件中读取加载class文件,甚至可以从网络上加载。Java 加载Class 流程:Created with Raphaël 2.2.0前端编译器编译成.Class字节码文件虚拟机装载.Class文件虚拟机,解释编译为 对应平台上的机器指令运行什么是Java 字节码文件 .Class?按照《Ja
2020-06-15 19:17:24
1952
原创 从零用Go打造一个 JVM 虚拟机 路径解析读取字节码(一)
Java 虚拟机 基础模块1.类的搜索不通虚拟机对类的搜索有不同的规范,Oracle的Java虚拟机实现根 据类路径(class path)来搜索类。存放类的路径有3中类型:启动类路径(bootstrap classpath):jre\lib jar标准库 都位于此扩展类路径(extension classpath):jre\lib\ext 使用Java扩展机 制的类位于这个路径用户类路径(user classpath) 自己实现的类,以及第三方类库则位于 用户类路径 (-Xbootcl
2020-06-05 16:49:05
522
原创 d3.JS 笔记
创建对象let objname = svg.append(‘text’) //创建text对象.attr(‘x’, w / 2 + 395) //设置x坐标.attr(‘y’, 160) //设置y坐标.attr(‘class’, ‘showlabel’) //设置css样式.text(’·show’) //设置display.on(‘click’, triggerTransition.bind(this)); //绑定点击事件绑定事件的另一种写法.on(‘click’, function.
2020-06-02 12:00:12
220
原创 原生Html5 使用Vue实现一个 完整的分页功能
用Vue 实现了 个很简单的分页功能。效果图:写的很简单,大家可以 自己diy.<div style="margin:0 auto;text-align:center"> <a @click="prevPage()">上一页</a> <div style="display: inline-block;margin-left: 10px" v-for="index of pagelist" :key="index">
2020-05-30 12:03:53
2396
2
原创 Rust 学习笔记(一)
Options类型和错误处理enum Option {None,Some(T),}Option 系统类型,可以传入任何值 ,包含 2个函数 Some() Noe() 通过匹配 match 可以获取到 内部的值,这样可以避免 直接 访问 变量本身, 如 在 如c这样语言里 如果直接 使用了nil的指针 会报错,在Rust里面 我们 不直接使访问,而是通过间接的 通过系统函数match 来匹配 如果为 空 匹配的就是None 的处理方法。代码示例:let a:Option<f32>
2020-05-27 16:33:55
593
原创 使用SpringBoot + Vue (若依前后端分离版) 写项目的一些总结(持续更新...)
使用SpringBoot + Vue(若依前后端分离版) 写项目的一些总结获取Redis服务@Autowiredprivate RedisCache redisCache;String captcha = redisCache.getCacheObject(verifyKey);权限认证@Resourceprivate AuthenticationManager authenticationManager; authentication = authenticationManager
2020-05-21 20:07:16
12185
3
原创 Vue 快速使用指南
Vue快速使用上手指南一个最简单的vue入门demo1.新建一个html网页,并且引入vue的js文件<!DOCTYPE html><html><head> <meta charset="UTF-8"> <title>Vue单文件例子</title> <script src="https://cdn.jsdelivr.net/npm/vue"></script></head&g
2020-05-13 15:50:58
582
原创 Vue入门学习笔记(一) Mac环境的安装及项目初始化
一.安装初始化VUE项目安装node.jsbrew install node //安装nodejsnode -v //安装成功能看到版本号获取nodejs模块安装目录访问权限sudo chmod -R 777 /usr/local/lib/node_modules/3.安装镜像npm install -g cnpm --registry=https://regist...
2020-05-08 15:36:25
285
原创 数据结构之树从入门到如土(四)----从零开始入门Rust实现一颗B树(未完成待续)
B树介绍B树是一种平衡的多路搜索树,多用于硬盘,文件系统,数据库。m阶B树性质根节点下子节点数为 [2,m]一个m阶B树的key数量x为: ⌈m2⌉−1<=x<=m−1⌈ \frac{m}{2}⌉ -1 <= x <= m -1⌈2m⌉−1<=x<=m−1除了根结点和叶子结点外,一个m阶B树的childs数量y为: ⌈m2⌉<=y...
2020-05-08 15:03:26
1064
原创 leetcode 面试题52. 两个链表的第一个公共节点
这道题目,虽然实现起来并不困难,但是思路很巧妙。解这道题 我们需要对 2个 链表把他们 作相交 看看 有没有公共部分,但是 最大的问题是, 只要 我们把 链表长度 对最后一位对齐 把 每一位 比较下 节点地址 一样就返回,上面一种巧妙地方式 就是 让 a + b = b + a把 a 循环到 结尾 后 绕到B去B循环到结尾后 绕到A 去这样 下一次比较的时候 他们长度就对齐了。...
2020-04-10 13:15:03
241
原创 数据结构之树从入门到如土(四)----如何看待本文教你会十分钟学会手写一个红黑树
红黑树的历史红黑树(英语:Red–black tree)是一种不平衡二叉查找树,无需保证左右子树高度差小于等于1。是在计算机科学中用到的一种数据结构,典型的用途是实现关联数组。它在1972年由鲁道夫·贝尔发明,被称为"对称二叉B树",它现代的名字源于Leo J.Guibas和RobertSedgewick于1978年写的一篇论文。红黑树的结构复杂,但它的操作有着良好的最坏情况运行时间,...
2020-04-07 20:37:59
619
原创 通过 汇编了解C语言 指针 悬垂指针概念
栈栈是 高地址向低地址 递增的结构,拥有后入先出的特点。在程序运行时,程序段代码是不可变的,所以 需要借助栈来动态的 取出存放计算结果.每个程序 在运行时 都需要一个栈来协助存储运行时的动态数据,C语言 对每次 调用(Call) 一个方法时,都会用 ebp 保存调用者的栈 位置 esp ,这样每次 方法调用完毕了 将 esp 设置为上一个栈所在位置 就可以 恢复栈了 通俗的说 就像存档点一样...
2020-03-31 15:19:17
308
原创 数据结构之树从入门到如土(二)----带你从头碾压 一颗AVL树(多图)
AVL树 解决了二叉树的什么问题?AVL 和 二叉树的 最大区别是能自平衡,简单的说就是多了一步插入的时候会按照插入的值做 自平衡 防止 插入 向 1 ,3 ,4, 6, 8, 9 这样 左边的值 比右边小 就会变成 链表了。AVL树的定义:AVL树是二叉树,其各个节点的左右子树的高度相差不超过1。AVL树是最早提出的自平衡二叉树,在AVL树中任何节点的两个子树的高度最大差别为一,所...
2020-03-26 13:11:25
411
原创 从零开始写一个操作系统内核 笔记(五) 从汇编过渡到C语言
从Boot到loader到C语言从 加载硬盘的第一扇区 到能使用C语言来编写内核程序,我们完成了如下3个部分Boot:将loader加载到 内存0x9000:0x0100处 576K处,跳转到Loader。Loader:将Kernel 加载到0x7000:0x0000 处、获取内存大小、打开分页、开启CPU保护模式、读取Kernel的ELF文件格式 将 将Kernel从0x7000:0x0...
2020-03-24 16:40:12
1398
原创 从零开始写一个操作系统内核 笔记(四) 番外篇 8086CPU 之分页机制
一. 逻辑地址和线性地址下面是一条普通的 eax赋值指令> mov 0x80495b0, %eax首先 这条指令 真正会被执行成 mov ds:0x80495b0, %eax在保护模式下,ds 是个段选择子,通过 GDT在 表 找到对应的 线性起始地址 再 加上 偏移地址 计算出 线性地址,在 保护模式未开启分页的情况下 线性地址就直接对应到物理地址,如果在 开启了分页机...
2020-03-22 17:16:58
515
原创 Trie树魔改 实现千万数据 秒级排序
Trie 树的优点 是 查找 摘要O(len)的 复杂度 ,本质上也是一颗树的结构。花了 一天时间,在自己上一篇文章的原基础上实现了一个Trie 能排序的算法,发现性能还不错,读取一个 大概一个1个亿的数据,耗时 23秒左右完成排序。内存占用情况:因为 是从 500多KB复制黏贴出来的所以,重复的比较多...
2020-03-21 20:06:07
358
原创 从零开始写一个操作系统内核 笔记(四) 番外篇 8086CPU 之保护模式
操作系统内核加载过程上图是 linux 0.1.2 应到程序加载操作系统的步骤。在实模式下的1M 空间下,BIOS启动后经过一系列自检(CPU、内存、硬盘等)后,将控制权 交给主引导记录MBR(Main Boot Record)位于硬盘的第0盘0道1扇区(LBA=0)的512个字节,BIOS事先规定将代码执行权移交到了0x7c00处地址,所以需要将MBR读写到0x7c00处,由于MBR只...
2020-03-19 19:12:28
345
1
原创 数据结构之树从入门到如土(三)----字典树 前缀树(TrieTree) Go 实现
字典树的简介又称单词查找树,Trie树,是一种树形结构,是一种哈希树的变种。典型应用是用于统计,排序和保存大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是:利用字符串的公共前缀来减少查询时间,最大限度地减少无谓的字符串比较,查询效率比哈希树高。根节点不包含字符,除根节点外每一个节点都只包含一个字符; 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应...
2020-03-17 21:07:38
459
原创 从零开始写一个操作系统内核 笔记(四) CPU 实模式到 保护模式
什么是保护模式?原先的CPU 是不需要要保护模式就能访问的,但这样 程序 之间 随便访问,没有任何安全可言,要是一个程序崩溃了或者因为某些BUG跳转到了其他程序的底盘,直接就调用别的程序 的功能多牛逼 哈哈 某些Hack 也是利用这种思路,通过栈溢出直接就跳转到一指定地址执行一些不安全的代码。 而 保护模式在兼容实模式的情况下,CPU 可以通过读取 GDT 表 知道 哪一段范围是放程序,哪一段范...
2020-03-15 23:09:07
720
原创 从零开始写一个操作系统内核 笔记(三) 番外篇 FAT12 魔改 FAT32 文件系统 硬盘文件读取方式
FAT32文件系统,格式和 FAT12 大同小异。主要变化:扇区簇大小:512 字节 -> 4K根目录项数:偏移字节数含义值0x00B2每扇区字数0x02000x00D1每簇扇区数0x080x00E2保留扇区数0x03F80x0101FAT个数0x020x0112根目录项数,FAT32以突破该限制,无效0x...
2020-03-11 16:23:33
1080
3
原创 从零开始写一个操作系统内核 笔记(三) 下 汇编实现 FAT12 文件系统
FAT文件系统包含:主引导扇区FAT表(2个)根目录区数据区文件系统的数据结构:卷控制块(每个文件系统一个)文件控制块(每个文件一个)目录节点(每个目录项一个)当需要时加载进内存卷控制块:当文件系统挂载时 进入内存文件控制块:当文件被访问时进入每次目录节点:在遍历一个文件路径时进入内存下面是 FAT16 系统的结构 (卷控制块):BS_OEMName db...
2020-03-08 20:44:49
1501
2
原创 数据结构之树从入门到如土(一)----大话二叉树 及GO实现
什么是树 相信大家没见过虽然可能没见过就散机里的树,但是一定见过现实世界的????吧. 如果问你几个树的主要特征,你能答上来几个?我猜吃货首先会想到的能吃不能吃,这样的属性,其实树有很多特点 (好吧我也答不上来了),但其中比较明显的一点是,????从根开始会不断分叉,1根树枝可能会有1个分叉但更多的是2个分叉或者以上. 抽象出来 当一个节点产生多个子节点(n &...
2020-03-03 20:44:39
255
原创 CSS常用布局方式
1.CSS要实现 子元素相对于 父元素 水平居中布局:Html<div id="parent"> <div id="child"> 居中布局 </div></div>1.1 第一种解决方案inline:内联元素(对text-align实现水平居中但是 高度宽度就会失效)block:块级元素(width和heigh...
2020-03-01 22:55:28
216
原创 布隆过滤器 原理 应用场景推导及Go实现
优点:不需要存储key,节省空间缺点:算法判断key在集合中时,有一定的概率key其实不在集合中无法删除典型的应用场景:某些存储系统的设计中,会存在空查询缺陷:当查询一个不存在的key时,需要访问慢设备,导致效率低下。比如一个前端页面的缓存系统,可能这样设计:先查询某个页面在本地是否存在,如果存在就直接返回,如果不存在,就从后端获取。但是当频繁从缓存系统查询一个页面时,缓存系统将会...
2020-02-25 16:03:08
786
原创 排序算法之 BitMap算法 原理及Go实现
1.BitMapBitMap是一种排序算法,他的特点是速度快,节省容量。可以对整数型型数据进行排序,同时也可以应用于文本去重,排序前先要对文本进行MD5操作。优点节省空间,对于一个字节进行排序,只要一个字节的空间。运行效率高缺点:重复数据只能记录一次。假设要对30 亿个 数据 进行排序,每个整数如果占 4 个字节 那么 30亿的数据就要占用 11 个G,对于一些配置...
2020-02-24 23:11:53
566
1
原创 Go性能分析 工具pprof 入门
需要 使用到的库import “github.com/pkg/profile”如果 get 不到设置 因为 有些组件会访问谷歌官网 所以设置一下这个 就可以了go env -w GOPROXY=https://goproxy.cn ##设置完后 重新执行即可go get在main函数第一行 添加一行CPU分析:defer profile.Start().Stop()内存...
2020-02-22 11:05:13
430
原创 TCP/IP协议介绍
计算机发展史:最开始的时候计算机是单独运算的,一般有一个大型主机放在那里,然后可以多个终端连接一个主机进行操作。那时候美国国防部认为,如果仅有一个集中的军事指挥中心,万一这个中心被原苏联摧毁,全国的军事指挥将处于瘫痪状态,其后果将不堪设想,因此有必要设计这样一个分散的指挥系统,它由一个个分散的指挥点组成,当部分指挥点被摧毁后其它点仍能正常工作,而这些分散的点又能通过某种形式的通讯网取得联系,这个...
2020-02-20 19:05:06
371
1
原创 从零用Go实现一个python简单解释器
编译型语言和解释型语言和其他编译型语言类似,要 执行python代码 会经历几个步骤。分别是这三个步骤:1. 词法分析2. 语法解析3. 编译解释型语言区别于编译型型语言,他有一个很大的缺点由于不需要事前先编译成机器码,而是在动态执行的时候在解释器运行期间那一条解释一条,这些被解释完成的代码 会在内存中存放 python中称为 code object(代码对象),写python的小...
2020-02-20 09:44:49
1122
原创 从零开始写一个操作系统内核 笔记(三) 上
BootLoader引导启动程序组成2部分:1.Boot引导程序:主要负责启动和加载Loader程序。2.Loader引导加载程序:用于完成配置硬件工作环境、引导加载内核等任务。Boot引导程序计算机上电启动 →BIOS上电自检(检测硬件是否异常) →根据BIOS启动配置选择引导设备(软盘、默认:硬盘、U盘、网络启动)BIOS启动原理BIOS自检结束后会从启动项(软盘、硬盘…)...
2020-02-19 22:41:23
1206
原创 Gabbage collect(GC) 垃圾回收算法Go实现
GC最早 出现 是在 lisp 语言设计开始1年后,的1959年夏天,实现GC的是一个叫D.Edwards的人。自从Gc被提出来的 70多年里这方面有了大量的研究,不过GC之所以能被很多现代高级语言作为 标配,还是以Java的兴起带了个头。有了GC程序员就不需要自己去管理麻烦的内存分配回收也避免了一些可能的回收内存所带来的的安全性问题。GC需要做的有两件事找到内存空间里的垃圾回收垃圾,让程...
2020-02-19 15:15:19
436
原创 常用排序算法 Go实现
冒泡排序:分解思想:1.每次取到最大的数和第i位交换//取数组最大的数 遍历一遍数组 找到最大的func GetMax(arr[] int){ for j:=1;j<len(arr);j++{ //找到数组中最小的值 交换到数组的第一位 if arr[j-1] < arr[j]{ arr[j-1],arr[j] = arr[j],arr[j-1] } }...
2020-02-17 23:07:03
165
原创 王爽 汇编课程设计1
将实验 7 改进 输出成如下图assume cs:codesg,es:tablesg,ss:stacksgdata segmentdatasg segment db '1975','1976','1977','1978','1979','1980','1981','1982','1983','1984','1985' db '1986','1987','1988','198...
2020-02-11 15:02:46
393
原创 Redis 知识点摘要
Redis 分布式锁:1.互斥性 任意时刻只能有一个客户端访问。2.安全性 只能持有该锁的客户端删除锁3.死锁 当持有该所的主机发生宕机 被删除 其他客户端无法获取该锁导致死锁4.容错 宕机了 ?(本机还是其他机器)客户端能获取锁释放锁创建锁setnx locanx test 创建锁get locanx 获得locanx 锁expire locknx 2 设置锁过期时间缺点:...
2020-02-09 17:19:04
223
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人