自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 Go调度器原理

GPM模型 一个G对应一个goroutine 一个P对应一个逻辑处理器,并维护一个G的本地运行队列,数量与GOMAXPROCS数量一致,指最大并行数 一个M对应一个内核线程,数量不固定,由go运行时指定,默认设置为最大10000. gorutine 与 内核线程 N:M映射 全局运行队列 go运行时会维护一个G的全局运行队列,p会在一定条件下,来全局运行队列中拿G放到自己的本地运行队列中。全局运行队列会使用mutex来控制多个p的并发访问。 全局运行对列使用mutex来实现..

2021-04-10 15:43:16 355

原创 分布式事务之2PC

2PC又称两阶段提交协议。2PC是一个非常经典的强一致、中心化的原子提交协议。它执行过程中需要协调者、参与者两种角色,一个协调者中心化节点,N个参与者节点共同合作完成分布式事务操作。下面以一个订单支付的场景案例进行对2PC协议的解析。支付成功后,需要修改订单状态为支付完成,否则修改状态为支付失败。2PC协议主要分为两个阶段:投票阶段、提交/执行阶段第一阶段:投票首先协调者收到请求后向参与者(订单服务)和参与者(支付服务)发出prepare预处理指令,通知它们进入2PC处理逻辑,并等

2021-04-10 15:28:59 381

原创 IO多路复用,select、poll、epoll区别

IO多路复用是一种同步IO模型,一个线程监听多个IO事件,当有IO事件就绪时,就会通知线程去执行相应的读写操作,没有就绪事件时,就会阻塞交出cpu。多路是指网络链接,复用指的是复用同一线程。 select fd_set数据结构定义如下,可以看出fd_set是一个整型数组,用于保存socket文件描述符 typedef long int __fd_mask; /* fd_set for select and pselect. */typedef struct {#ifde..

2021-02-21 10:53:38 312

原创 高频面试题

获取高频面试题请关注“码农心经”公众号

2021-02-18 14:17:17 163

原创 I/O模型

7. I/O模型 阻塞I/O 读写文件,网络I/O。当发生读写文件或网络I/O读写时,操作会阻塞当前线程,直到完成I/O操作,才能继续向下执行。 一般采用多进程或多线程的方式来解决此类问题,但是由于过多的进程或过多的线程都会造成大量的资源浪费,并且多线程上下文切换,也会带来很大的开销 执行流程: 1. 应用程序调用recvform()系统调用函数,进入内核空间2. 内核空间等待数据准备好3. 内核空间将数据从内核空间拷贝到用户空间4. 应用程序拿到数据进行后续处理

2021-02-18 13:15:40 122

原创 简述数据库中的 ACID 分别是什么?

ACID 原子性 定义:每个事务都是不可分割的最小工作单元,事务中的所有操作要么全成功,要么全失败。使用undo log实现回滚。 一致性 定义:比如A向B转账,A减少1000,B就得增加1000,两人的余额总和不能变。 隔离性 定义:各个事务之间相互隔离,互不干扰。通过锁和MVCC实现隔离 持久性 定义:事务一旦提交,数据会永久的存储在数据库中。使用redo log实现故障恢复。 实现原理 redo log 定义..

2021-02-17 16:45:47 3447 3

原创 聚簇索引和非聚簇索引有什么区别?什么情况用聚集索引?

+ MyISAM索引实现 + 使用B+树 + 叶子节点的data域存储数据记录的地址(非聚簇索引) + 主键索引与普通索引结构一样 + 查询数据时,首先找到data域中的地址,然后再根据地址去磁盘中读数据 + 图示 ![](https://p1-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/4673fb4015bb4d93858f97079b2858d3~tplv-k3u1fbpfcp-watermark.image)+ InnoD...

2021-02-17 16:39:54 3695 3

原创 数据库的事务隔离级别有哪些?各有哪些优缺点?

事务隔离级别主要有四种 读未提交 (READ UNCOMMITED) 定义:一个事务可以读取另一个事务已修改但未提交的数据 存在的问题 脏读 不可重复读 幻读 读已提交 (READ COMMITED) 定义:一个事务只能读取另一个事务已经提交的数据 存在的问题 不可重复读 ...

2021-02-17 16:24:46 1388 2

原创 MySQL 为什么使用 B+ 树来作索引,对比 B 树它的优点和缺点是什么?

B树(平衡多路搜索树)图示特征每个节点可有多棵子树每个非叶子节点有n个key,并有n+1棵子树(子树数量比key数量多1)每个节点中key都是从小到大排序的最左子树上的值都小于最左key的值,最右子树上的值都小于最右key的值,中间子树的值则位于相邻两个节点的值之间所有叶子节点都具有相同的深度查询伪代码BTree_Search(node, key) { if(node == null) return null; foreach(node.key) ..

2021-02-17 12:09:56 3073 1

原创 Redis底层原理之SDS

Redis string类型底层使用SDS(Simple Dynamic String)表示,而不是使用C字符串。SDS 结构定义:struct sdshdr { // 记录buf数组已使用的字节数量等于SDS所保存的字符串长度 int len; // 记录buf数组中未使用的字节数量 int free; // 字节数组,用于保存字符串...

2019-04-26 12:52:44 775

原创 egret白鹭引擎开发的两个H5小游戏源码分享

业余时间,使用egret白鹭引擎开发了两个H5小游戏,现已开放源代码,希望对学习白鹭引擎开发的同学有所帮助。源码地址:https://github.com/BaldwinZhang游戏图片: ...

2019-01-17 11:30:26 6024 1

原创 vim下按Ctrl+S 卡死现象

我们在VIM下保存文件,由于windows的习惯很容易就按了Ctrl+S。。。结果就卡死了。这个时候其实再按一下Ctrl+Q就恢复了。

2018-05-18 13:14:26 334

原创 提升debug权限

给我们的exe提升debug权限,很多时候我们都需要用到。bool AdjustProcessPrivileges(HANDLE hProcess, LPCTSTR PrivilegeName) {HANDLE hToken;bool bRet = false;TOKEN_PRIVILEGES tkp = { 0 };if (!OpenProcessToken(

2016-09-21 15:55:40 1015 3

原创 VC 从资源中释放文件

将文件放入资源中,然后在程序运行的过程中释放出来,下面是代码:BOOL FreeResFile(HINSTANCE hInstance, DWORD dwResName, LPCWSTR lpResType, LPCWSTR lpFilePathName){HRSRC hResID = ::FindResource(hInstance, MAKEINTRESOURCE(dwResNam

2016-09-21 15:51:33 1542 2

原创 GDI+绘制随鼠标移动可拉伸,无锯齿图形

最近在研究GDI+,做了一个简单的demo,源码分享给大家,下面是几张贴图。有圆形、矩形、画刷、和箭头。觉得最难的是画箭头、得算坐标,算的满头大汗。。。  源码地址:https://github.com/BaldwinZhang...

2016-09-21 14:50:14 2291 3

GDI+ 绘制矩形、箭头、圆形、线

GDI+ 绘制矩形、箭头、圆、线,可以选择画笔颜色、画笔宽度、图形随鼠标移动并且可拉伸。

2016-09-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除