lifelong learning & practice makes perfect
并发就是可同时发起执行的程序,指程序的逻辑结构; 并行就是可以在支持并行的硬件上执行的并发程序,指程序的运⾏状态。
换句话说,并发程序代表了所有可以实现并发行为的程序,这是一个比较宽泛的概念,并行程序也只是他的一个子集。 并发是并⾏的必要条件;但并发不是并⾏的充分条件。 并发只是更符合现实问题本质的表达,目的是简化代码逻辑,⽽不是使程序运⾏更快。 要使程序运⾏更快必是并发程序加多核并⾏。
简言之,并发是同一时间应对(dealing with)多件事情的能力;并行是同一时间动手做(doing)多件事情的能力。
共识是可容错系统中的一个基本问题:即使面对故障,服务器如何在共享状态上达成一致? 这个问题出现在需要提供高可用性且不能在一致性上妥协的各种系统中
sort/search/bitmap
tree/list/array
mysql的JSON总体上分为JOSN_ARRAY 和 JSON Object两块
参考:
too many connections 优化方案(确认不是由于没有关闭连接导致的后),通过合理设置参数(减少Sleep的连接,防止大量Sleep的连接占满)
profile通常分为:追踪型(追踪提前设定的事件,如函数调用,含税退出)/采样型
go支持的profile有:cpu/memory/block/goroutine
go的cpu profile在Linux系统使用信号中断(SIGPROF signal)采集运行数据.
SIGPROF signal: This signal typically indicates expiration of a timer that measures both CPU time used by the current process, and CPU time expended on behalf of the process by the system. Such a timer is used to implement code profiling facilities, hence the name of this signal. go通过SIGPROF注册回调函数每10ms采集一次. 需要注意的是:统计时间与用户体验到的时间通常不同,profile notes,例如一次http请求耗时100ms(数据库耗时95ms,cpu5ms)
memory profile同样基于采样生成
日志是程序的重要组成部分,好的日志能帮助我们快速排查/定位/解决问题,记录现场信息
一个好的Logger应该提供以下能力:
常见题型,来源,知乎:https://zhuanlan.zhihu.com/p/349940945
ceil(a/b)=(a+b-1)/b=(a-1)/b+1
当a/b能除尽,那么(a-1)/b除不尽取整+1后是向上取证的值 当a/b能除不尽,那么(a-1)/b除不尽取整+1后是向上取证的值
gcc,g++,gdb,vscode
VScode
clone代码仓库
git clone git@github.com:yiGmMk/leetcode.git
在Vscode打开代码目录,选择文件->打开文件夹,选中代码目录
vscode 安装依赖插件
c++建议安装 twxs.cmake + austin.code-gnu-global+visualstudioexptteam.vscodeintellicode
点击对应的cpp源文件F5开始调试
vscode版本 Version: 1.72.0 (user setup) Commit: 64bbfbf67ada9953918d72e1df2f4d8e537d340e Date: 2022-10-04T23:20:39.912Z Electron: 19.0.17 Chromium: 102.0.5005.167 Node.js: 16.14.2 V8: 10.2.154.15-electron.0 OS: Windows_NT x64 10.0.19044 Sandboxed: No
升级python版本到3.9.12就好了,这里使用conda安装方便切换
解决: 将v2的fish卸载,重新安装v3版本,再初始化conda的fish配置
# 卸载(contos)
yum erase fish
# 安装
cd /etc/yum.repos.d/
wget https://download.opensuse.org/repositories/shells:fish:release:3/CentOS_7/shells:fish:release:3.repo
yum install fish
# 配置初始化
conda init fish
# 进入fish
fish
# 尝试使用
conda -h
# ubuntu 安装fish v3
sudo apt-add-repository ppa:fish-shell/release-3
sudo apt update
sudo apt install fish
vscode + 插件 (Extension Pack for Java,多个插件集合)
可能是launch.josn中的主类名称错误或者文件不再classpath 主要检测以下几项:
首先确认下java源文件是否在”Java source paths”,不在可以右击所在目录选择”Add Folder to Java Source Path”添加 然后确认源文件文件名称是否与主类名称一致. 点击Run或Debug Vscode会自动在.vscode/launch.json中添加配置,如图
参考: