![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
摘要性笔记
文章平均质量分 88
RzBu11d023r
这个作者很懒,什么都没留下…
展开
-
Graphviz 排版思路 Graphviz 如何控制节点位置
实际效率需求的生产中,我们还是用 GUI 工具吧,这种除了要通过代码生成的情景或者大量的数据下之外,比如这种需要对特定节点特定边的位置进行控制的,没有太大必要去用脚本工具画图。原理是通过添加额外的节点和边以及 rank 限制条件,来控制生成节点尽量满足需要的排版。不过这个实际和算法执行起来算出来的效果有关。这里 invis 边就是用来控制位置用的。因此我们继续加入一些限制来吧这个 3 移动回到 2 的左边。可以看到 3 就是不能在 2 的左边。有个画图需求是需要生成特定排版的关系图。原创 2022-12-20 01:37:13 · 3349 阅读 · 0 评论 -
More C++ Idioms C++ 惯常用法总结
内容来源: 正在上传…重新上传取消 More C++ Idioms - Wikibooks, open books for an open world 总结Acyclic visitor 没搞明白 address of 是为了解决重载 operator & 的问题。 Attach by initializaiton,对于 event-loop 的程序以及接管 main 的程序(通常是 GUI 或者像 gtest 这种),有一些 main 之前的逻辑 ...原创 2022-05-26 23:50:43 · 950 阅读 · 0 评论 -
Golang tutorial for C++ Programmers | Go 语言速成 | 3分钟学会 Go 语言 | Go 语言教程给 C++ 经验
map: map[key]value 用 append 和 slice 实现 queue。 用 make 造数组首先花几秒钟浏览一下 Go 的语法:Learn Go in Y Minutes (learnxinyminutes.com)Go for C++ prgmGo for C++ developers (golang.org)看完后下面花两分半钟总结一下 Go 语言的速成:Go 核心array = 数组 slice = span<T>/basic_...原创 2022-05-25 16:27:00 · 245 阅读 · 0 评论 -
windows 10 navicat 连接 wsl2 MySQL ERROR 1410 (42000) 连接未知错误
mysql bind address 的意思是绑定一块入站网卡ip地址。由于 win10 和 wsl 2 是随机生成的 ip 地址的,因此绑定的时候要允许通过虚拟网卡入站。首先设置sudo vim /etc/mysql/mysql.conf.d/mysqld.cnf把bind-address=127.0.0.1 去掉,或者改为虚拟网卡绑定的网卡接口。可以通过ip addr show查看 172 开头的地址。然后进入 mysql,创建 test 用户,% 是允许所有入站地址进入。crea原创 2022-04-10 13:11:54 · 2029 阅读 · 0 评论 -
Ubuntu apt-get update 一直 0% 等待报头 waiting for headers
这个问题属实太烦了。上次也是遇到一次类似的问题。先上结论,如果遇到这个问题,但是 curl 可以走通没问题,可能就是 mtu 的问题,一般可以用 ifconfig 来改 mtu,但是新版的 ubuntu 确实离谱,什么都没有,要安装 net-tools 又要 apt-get,经典鸡蛋问题。 sudo ip link set mtu 1492 eth0问题是今天用 Ubuntu apt-get update 准备安装一些编译内核的工具,然后他就一直卡着。换了好几个源和文明上网都没用。最后想起来.原创 2022-04-05 21:34:12 · 3374 阅读 · 0 评论 -
C++20 Thread Cancellation | jthread | std::stop_token | jthread 和 stop_token | CAS| 内存屏障|std::atomic
熟悉一下 C++20 引入的 stop_xxx 即 <stop_token> 头文件提供的 Thread cancellation 的支持。熟悉多线程编程了,一般 demux 程序(比如基于 epoll/select/poll 的大部分时间的“死”循环)就是一个状态机。过程中我们如果希望调控他的话,就要使用变量(作为状态机的输入),达到一个检查状态的时候,程序(一般是我们写的死循环)就会响应我们的输入,给出输出。或者说是一种信号机制吧,Nginx 的信号控制进程的停止、reload...原创 2022-03-04 13:39:45 · 1573 阅读 · 0 评论 -
基于协程io_uring 异步网络库系列 II: 协程基本组件概要 | C++20 coroutine 教程 | io_uring 异步IO 网络框架 系列笔记
本系列通过结合 linux 的 io_uring 和 cppcoro (源码需要进行部分修改以适配 linux 下的 g++-11)在网络中的使用学习 C++20 coroutine。值得注意的是,cppcoro 目前已经暂停维护,仍然为 TS 版本的支持,同时其真异步底层支持只支持了 win32 的 IOCP(本身 cppcoro 兼容 MSVC),但是本系列不想涉及 IOCP 和 windows 的部分因为除了跨平台外,没有太大意义(如果采用 windows 的话,C# 是足够好的语言,但是目前广...原创 2022-03-04 05:47:30 · 863 阅读 · 0 评论 -
基于协程io_uring 异步网络库系列: 概述 | C++20 coroutine 教程 | io_uring 异步IO 网络框架 系列笔记
很遗憾的是,虽然本身学习服务器应该把 socket 编程、缓存处理、linux 系统调用信号机制等这些为重点,但是对于要用 coroutine 来做的话,其实是优点舍近求远的,因为你必须理解异步和 coroutine 本质上的状态机,所以这里的非关键因素的篇幅和绕程度可能会大一些。我属实没搞明白他们是怎么学这部分的内容的?是因为学过 call/cc? 是从 ts 开始就跟踪这个协程的点?还是本身研究理解过 javascript 的异步、C# 的异步、还是其他语言像 golang 的 coroutine...原创 2022-03-04 05:41:52 · 2018 阅读 · 0 评论 -
vsftpd 权限 600 不能下载 vsftpd 不能删除 vsftpd 配置文件 linux 搭建 ftp 服务器
一个局域网内用的 ftp 服务器的配置文件和说明,直接 Ctrl+C 、V 用就是了。对于要公网上用的,可能需要配置更多权限相关的东西,这个我感觉不是必要的,因为一般公网上不用走 ftp 协议,可以用 http 搞定。比如可以用 nginx,或者自己写的带 http 协议的网络库 。ftp 和 http 都是原创 2022-02-09 02:37:06 · 1629 阅读 · 0 评论 -
epoll LT ET 区别 | Nginx epoll 原理 listend 用 LT
最近学 muduo 和 nginx 写网络库,总结一下 epoll 上遇到的一些问题和学习的笔记,主要是对 LT、ET 和平滑升级里的一些点理解一下。原创 2022-01-30 00:59:11 · 2828 阅读 · 0 评论 -
负载均衡比较 | dpdk 和 lvs 对比 | Nginx 反向代理负载均衡实验
参考资料Using nginx as HTTP load balancerMaglev: A Fast and Reliable Software Network Load Balancer, Google Inc. UCLA SpaceXMGW——美团点评高性能四层负载均衡 - 美团技术团队 (meituan.com)Open-sourcing Katran, a scalable network load balancer - Engineering at Meta (fb.com)..原创 2022-01-19 12:46:26 · 4118 阅读 · 0 评论 -
MapReduce 论文阅读笔记 MapReduce 简介
论文:MapReduce: Simplified Data Processing on Large ClustersJeffrey Dean and Sanjay GhemawatGooglehttps://pdos.csail.mit.edu/6.824/papers/mapreduce.pdf我的英语水平还是不行,看了我好多个小时,还有几句长难句分析。MapReduce 是一种分布式系统中处理大数据方法。他提出是在 2004, jeff dean 和 Sanjay Ghem...原创 2022-01-11 22:45:52 · 2002 阅读 · 0 评论 -
基础服务器 IO 模型 Proactor 模型 Reactor 模型 IO 多路复用 异步 IO 模型 Linux 服务器开发 网络编程服务器模型
本文主要记录服务器的 IO 模型的类型(从多路复用,异步 IO 讲到 Proactor Reactor 模型),包括 Real World nginx 和 apache ,kafka 等分析,配备自洽的所有知识点方便自己复习。先把 APUE 第八章进程控制过一遍吧Linux 进程的控制启动与复制首先是他说的 swapper pid==0 的进程,就如在 xv6 里面的那样,init 做的就是 wait 到子进程(shell)退出然后就退出而已。scheduler 的部分是另外的,由于他的..原创 2021-11-11 22:47:12 · 2045 阅读 · 0 评论 -
EPOLL 原理分析线索 SELECT POLL 原理
首先复习一下 select,poll,和 pselect 先吧。select 是传一个 set 给他,内核收到动静返回,我们再检查 set 有谁可用。 pselect 是为了解决信号缺失的问题他保证在睡觉之前检查一下 mask (需要配合 sigprocmask)如果有马上返回。 poll 的主要解决问题只是 ns 的超时而已。linux 也提供了 ppoll 实现 pselect 相似的功能。还有一个要点是 pselect 只用了 bitset ,而 poll 用的是fd结构体数组。由于一个...原创 2021-11-10 20:00:39 · 428 阅读 · 0 评论 -
Games101 作业草稿 III: 框架解释 重心坐标的一些注意事项
做作业三这里有一些比较模糊的问题需要理解的。这里也 mark 一下吧,不然学了个寂寞。一开始不太理解作业框架所以搜了一些问题避免踩坑:作业3 关于深度值问题自己踩的坑和一些想法 – 计算机图形学与混合现实研讨会 (games-cn.org)graphics - How exactly does OpenGL do perspectively correct linear interpolation? - Stack Overflow论文:Microsoft Word - lowk_persp_int原创 2021-10-24 16:10:20 · 541 阅读 · 0 评论 -
CMU15-445 数据库系统 Midterm 总结
Relational model主要是 Integrity constraints 和 relation algebra。 这个在数据库课也学了,就不重复了,基本就是那几个符号而已。SQL基本的SQL 操作,Where 谓语, 输出控制 limit order by 这些也不重复了。 主要记住先 join 再查询会快很多。而不是求笛卡尔积。 445课程主要还学一个 CTE 的用法,有 CTE 的好处是可以写递归查询进行某些拼接,但是也不太好用。最主要可能是说避免看到太长的嵌套而导致问题...原创 2021-10-18 15:14:30 · 600 阅读 · 0 评论 -
UNP 学习笔记 5:高级 IO 与 IO 复用
可惜 UNP 和 APUE 不讲 EPOLL,UNP 的重点内容可能快看完了,之后 UNPv1 就做参考书了,然后之后的 Linux 服务器编程就全是搞 APUE 和 Linux 编程的书了,看来之后还得持续。以下基本是 APUE 十四章内容非阻塞IO — 使用选项打开文件通过 O_NONBLOCK 选项作为 flag 调用 open 函数 通过 fcntl 设置同样的选项(本质是一个 flag、mask) 如果不能完成,将会返回错误。(错误的语义是正确的,因为我们希望不block,不能..原创 2021-10-17 21:17:08 · 289 阅读 · 0 评论 -
UNP 学习笔记 4:网络API的边界问题
端口号well known 是 1024 以前(UNIX 保留端口,权限限制) 临时端口用 45152 到 65535 1024到5000 以前是 BSD 用来当临时端口的,现在可能不用避免,但是他们也会被 IANA 用来登记一些应用,不是必须避免使用的。 临时端口可以进行尝试,或者直接让操作系统分配进行了。fork首先 child 应该关闭 listen fd,防止一些边界情况 然后 parent 应该关闭 connfd 这样 child exit 之后处理文件就把他关闭了。如果父...原创 2021-10-17 21:13:06 · 163 阅读 · 0 评论 -
UNP 学习笔记 3:基本套接字编程
为了方便起见,我直接用 python 来学这一章(因为 Cpython 这方面接口基本一致),编写方便!这一章和之前的套接字与传输层的笔记的区别是讲的更多是怎么使用他们,同时配备部分函数对应的 TCP 行为,主要是涉及错误的部分。socket 这里一般 family 和 type 就决定了 protocol,所以 arg3 直接留 0 就可以自动匹配。但是比如你可能可以用 INET + STREAM 来选用 SCTP 但是我们默认是匹配 TCP,SCTP 的首选是 INET+SEQPAC..原创 2021-10-17 21:11:57 · 406 阅读 · 0 评论 -
C++ 标准库 mutex, condition variable, lock 辨析及读写锁编写 互斥锁条件变量锁辨析互斥锁条件变量区别
看C++ 的时候发现我操作系统白读了,竟然忽然看不懂 C++ 的 RWlock。这里记录一下。。。。内核的自旋锁和睡眠锁先复习这个:从自旋锁、睡眠锁、读写锁到 Linux RCU 机制讲解 - RzBu11023R - 博客园 (cnblogs.com)gmutex condition_variable lock概念先区分一下 lock,mutex,ca 的概念,特别是 lock 是作为 mutex 的 RAII 实现这一点是 C++ 学习目的。C++ 文档看这几个:..原创 2021-09-22 18:43:33 · 651 阅读 · 0 评论 -
调试器实现原理 (ptrace) 和 Segmentation Fault 产生摘要
本文总结以下 ptrace 的功能,从流程上讲解以下大致如何实现一个调试器的思路,以及介绍 初学编程时常常遇到的 Segmentation Fault 和 Stack Overflow 的问题的意义。这里注意栈溢出一般是只有 debugger 才能提示,直接运行程序时一样会出现 Segmentation Fault,本文也讲解 debugger 或者用户程序自己如何判断是栈溢出的方案(附相关的系统调用和内核中的原理)。调试器怎么实现(ptrace) 如果要搞破解和开发外挂,可以学习...原创 2021-08-20 23:01:02 · 670 阅读 · 0 评论 -
CS61B project 2 示例图的地牢地图房间走廊地图生成洞穴地图生成方法
本文是针对 CS61B 学习的 proj 2 的部分内容的笔记。Josh 做的例子是这样的:我做的地牢的基于洞穴的版本大致就这样(地图应该调平滑点洞穴减少直线的路)。基本方案是使用 Cellular Automata 演变,然后用某种策略联通不联通的洞穴。(设计多种可走路径才比较趣味)。然后是模仿 Josh 的版本做的矩形房间和通道的版本:从 Cave 开始,之后在讲怎么做 josh 的版本。Cellular Automata邻居分布有摩尔型 Mo...原创 2021-08-14 05:29:00 · 1623 阅读 · 7 评论 -
MIDI 文件格式解析举例
变长动态字节 首先学习 MIDI 一个编码约定,MIDI 使用字节流(1bytes)来传输数据,对于小于 127 的数据就用一个字节存储。大于127的数据把字节的高位用来标识长数据,这样方便程序解析(一般情况高位为0认为一个byte是一个数据,如果出现高位为1(most significant bit)就读取多个字节再解析 int或者long),具体解析过程是最后一个字节前都用高位置1声明这是一个长整数的一部分。 示例图:文件组成块 MIDI 是这样组织的:M...原创 2021-07-13 13:05:56 · 2826 阅读 · 0 评论 -
数组大小对 Cache 访问性能影响
在知乎看到一个回答很有意思“用C++写一个有栈协程,协程的栈设置为4096时,运行效率比4096-8或者4096+8慢了40%左右。。。。简直快要把脑袋钻到显示屏里了。。结果努力的读了又读N-way associative cache相关的内容, 最终确定仅仅是CPU cache的问题。。还好2天之内就定位到问题了。---------------------------------------------------------------------------------------...原创 2021-07-09 00:23:13 · 1070 阅读 · 0 评论