![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
笔记
wfh2015
这个作者很懒,什么都没留下…
展开
-
Rust字符串处理
rust字符串处理函数笔记原创 2022-10-07 21:16:32 · 479 阅读 · 0 评论 -
golang并发笔记
// 互斥锁package mainimport ( "bytes" "fmt" "runtime" "strconv" "sync")func goid() uint64 { b := make([]byte, 64) b = b[:runtime.Stack(b, false)] b = bytes.TrimPrefix(b, []byte("goroutine ")) b = b[:bytes.IndexByte(b, ' ')] n, _ := strconv.Par原创 2022-04-19 07:58:02 · 125 阅读 · 0 评论 -
golang的map笔记
package mainimport ( "sort")type Product struct { name string // 名称 price float64 // 价格}func Ignore(a ...interface{}) {}func main() { // 创建map func() { x := map[string]int{} y := make(map[string]int) z := make(map[string]Product, 5)原创 2022-04-17 20:03:58 · 240 阅读 · 0 评论 -
使用golang开发项目demo
使用go语言开发项目的现状很多公司都是使用go语言来开发程序,但是开发中以及最终交付的代码需要满足以下条件:能满足DevOps要求,对于开发来说,需要提供一个构建脚本(build.sh)即可内网也能编译,即build.sh能执行的环境属于内网,不能直接下载第三方库能在流水线上跑,但是流水线所在的服务器对于权限要求很高,不能随意更改/etc/profile等相关配置文件代码管控使用git,构建出来的可执行文件内部必须有git信息、版本号、构建日期等信息写代码的工具使用goland,goland方原创 2021-08-29 16:33:25 · 2323 阅读 · 0 评论 -
man命令转换成pdf
# MacOS 无ps2pdf命令就请提前安装mactexbrew install mactex# 通过管道直接生成tcpdump.pdffh@Feihu-3 demo % man -t tcpdump | ps2pdf - > tcpdump.pdf# 1. 先生成tmp.ps# 2. 在通过tmp.ps生成ls.pdf# 3. 删除临时使用的tmp.psfh@Feihu-3 demo % man -t ls > tmp.ps && ps2pdf tmp.p原创 2021-05-02 10:40:46 · 234 阅读 · 0 评论 -
纠删检查代码
#include <iostream>typedef unsigned int ULONG;/** * @brief 纠缠基本检查 * @param n 数据块 * @param m 校验块 * @param k 最多宕机的dn数 * @param t 在线Dn数 */void CheckEc2(ULONG n, ULONG m, ULONG k, ULONG t){ if (t >= (n + m)) { // dn够多,每次分配n.原创 2021-04-11 21:02:26 · 90 阅读 · 0 评论 -
I/O多路复用-附plantuml流程图
简介I/O多路复用,以read为例。阻塞I/O-最原始版本@startuml 阻塞IOstartfork :网卡接收数据; :将数据从网卡复制到内核缓冲区; :将文件描述符confd置为就绪; ':从内核缓冲区复制到用户缓冲区buf; detachfork again :listenfd=socket(); :bind(listenfd); :listen(listenfd); while (Process ?) is (R原创 2021-04-03 11:50:01 · 1237 阅读 · 0 评论 -
缓存穿透/缓存雪崩/缓存击穿
缓存设计流程图@startuml MemCache start :请求; if (Mem 存在 ?) then (Mem 存在) :返回Key,Value; else if (Mem 不存在 ?) then (Mem 不存在) ' 缓存穿透 if (存储层查询 存在 ?) then (存储层存在) :构建缓存; :添加Mem; :返回Key,Value;原创 2021-03-28 23:03:22 · 93 阅读 · 0 评论 -
原码/反码/补码
原码:一个数的最高位存放符号位,定义0为正数、1为负数,其数值部分就是该数值的绝对值;反码:正数的反码和其原码形式相同,负数的反码是将符号位除外,其它各位逐位去反;补码:正数的补码与原码、反码相同,负数的补码则是其反码的末尾加1;正整数,原码、反码、补码都一样,都是数字本身;负整数,原码的符号位为1, 数值部分取其绝对值;反码的符号位为1,其它位原码取反;补码是符号位为1,其它位是原码取反,末尾加1....原创 2021-03-19 21:48:09 · 161 阅读 · 0 评论 -
graphviz的案例
Example.1digraph base_flow { // 步骤1: 定义digraph的属性 label = <<B>graphviz使用流程</B>>; // 步骤2: 定义node、edge的属性 node[shape=box]; // 步骤3: 添加node、edge graph_attr -> node_edge_attr -> node_edge_added -> custom_原创 2021-03-06 21:22:47 · 1228 阅读 · 2 评论 -
OSI/TCP层级简单描述
原创 2021-02-28 16:09:36 · 96 阅读 · 0 评论 -
keepalived & vrrp高可用流程
注意事项以三个线程来介绍每个线程忽略一层循环,原因是过多嵌套,不易学习流程图与keepalived代码不完全一致流程图PlantUML代码@startuml keepalived title keepalived & vrrp start fork while (接收到包 ?) is (接收到包) if (包的优先级 > 自身优先级 ?) then(包的优先级高) if (自己原创 2021-02-21 16:36:58 · 166 阅读 · 0 评论 -
LRU-K的实现思路
LRU-K算法是LRU的改进版,目的是为某个数据的访问次数超过K次则放到热数据里面,为此做出了以下设计:采用了redis的链表与字典将部分资料中的排序换成了普通的LRU,因为使用排序可能实现起来存在性能问题。redis的链表与字典,可以参考博客。plantUML的流程图源码如下:@startuml LRU-Ktitle LRU-Kstart:调用缓存对外读接口;if (stHotData数据查找 ?) then(stHotData存在) :将stHotData中的数据从s原创 2021-02-18 22:29:07 · 2375 阅读 · 0 评论 -
LRU算法实现思路
文章目录LRU开源组件双向链表字典(Key-Val)LRU需要的结构体`PlanUML`流程图LRULRU算法一般是用在构建缓存上的,主要目的是在于怎么将部分缓存数据给淘汰掉。开源组件可以使用redis的链表与字典来实现一个demo,下面列出使用的redis结构体.双向链表typedef struct listNode { struct listNode *prev; struct listNode *next; void *value;} listNode;typ原创 2021-02-17 20:51:47 · 458 阅读 · 2 评论 -
Linux常见文件解压压缩命令
tar -zcvf pack.tar.gz pack/ # 创建一个将pack压缩成tar.gz格式的包tar -xzvf pack.tar.gz # 解压pack.tar.gz的包tar -zxvf pack.tar.gz /pack # 解包解压.gz格式的压缩包到pack文件夹tar -jcvf pack.tar.bz2 pack/ # 创建一个将pack压缩成tar.bz2格式的包tar -xjvf pack.tar.bz2 # 解压 pack.tar.bz2的原创 2021-02-17 16:41:30 · 306 阅读 · 0 评论