自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

羽飞的专栏

不以物喜不以己悲

  • 博客(52)
  • 资源 (7)
  • 收藏
  • 关注

原创 TIPS 二进制程序暴露符号给动态链接库使用

在支持插件/扩展的C/C++系统中,通常会支持在程序运行时加载动态链接库。这时二进制程序会提供一些函数/接口让动态链接库调用,但是这些函数在二进制程序中又不会使用,导致在编译时编译器直接把这些符号删除了,加载链接库就会由于找不到符号而失败。本文将描述一种将仅在动态链接库中使用的符号如何暴露出来的方法。

2024-09-29 09:49:56 841

原创 Python subprocess设置超时不生效问题

我后面阅读过psutil的手册,发现psutil可以很方便的把子进程都列出来,所以这个代码改成psutil会更好。发现进程一直在等待"do something"进程,这个进程的状态是,就是僵尸进程,不过这个进程还创建了子进程。不能把所有子进程杀死,所以正确的做法是找到所有的子进程,然后杀死他们。于是Google了一下,确实有类似的情况。但是却发现运行的时候,测试程序一直无法执行完成,通过。杀死所有子进程,不过这会把自己也杀死。,也就是他还会等待那个脚本的子进程结束。这个说法经过测试不完全正确,我把。

2023-11-20 21:24:51 1044

原创 TIPS 关于github action cache

关于github action cache的一些TIPS。action cache可以加速我们的workflow

2023-07-14 17:21:51 1204

原创 TIPS cmake搜索C/C++编译器

cmake 以什么样的顺序搜索编译器?

2023-06-25 13:59:51 505

原创 TIPS:单独运行单元测试成功,但是ctest却显示失败

单独运行单元测试成功,但是ctest却显示失败。因为单元测试程序退出时没有返回0

2023-05-24 19:46:11 436

原创 MiniOB 并发B+树实现解析

本篇介绍如何实现并发B+树

2023-03-27 20:48:05 1450

原创 Windows 如何使用 Docker 开发miniob

MiniOB 是OceanBase联合华科大开发的数据库开发实战课程。这篇文章介绍如何在Windows上使用Docker开发MiniOB

2022-08-25 16:47:43 2568 2

原创 TIP Java 获取运行时参数

运行时参数是指main方法中的String[] args。这个参数没有保存到全局变量,没有办法获取。在Linux上,可以通过/proc/pid/cmdline 文件获取参数。Java中还有一个简单但有点缺陷的方法,就是读取System.properties。System.getProperty("sun.java.command");不同的参数之间,使用’ '来分隔。所以这里明显的缺陷是不能识别出来带空格的参数,比如:java -jar xxx.jar ‘a b c’ d e获取到的结果是"

2020-12-12 14:08:40 886

原创 TIPS shell解析命令行参数

使用shift命令解析命令行参数使用shift命令解析命令行参数使用shift命令解析命令行参数网上流传的一些使用getopt/getopts解析命令行的方法在我的环境上不好用。后来发现直接使用shift解析命令行参数,简单方便。虽然不够完善,但是上手速度极快,日常使用充足。简单解释下shift, shift可以将命令行参数”左移“,比如开始 $2 取第二个参数,执行过shift 2之后,$2就可以取原先第4个参数了。直接上代码示例while [ -n "$*" ]; do arg=$1 #

2020-10-30 22:23:14 266

原创 TIP Spring-boot健康检查查看详细信息

Spring-boot提供了健康检查的手段,定期检查应用各个组件的状态,并提供了一些通用组件的检查,比如MySQL、Redis等。可以使用下面的命令查看应用的健康状态:curl localhost:port/health如果应用有异常,会返回带DOWN关键字的信息:{"details":{},"status":{"code":"DOWN","description":""}}一般情况下,或者通过配置,不会显示哪个组件,出现了什么问题。这样虽然安全,但是查问题很不方便。查看健康状态详细信息的方

2020-08-21 09:31:13 1559 5

原创 TIPS Raft Committing entries from previous terms

本文是我对与Raft论文3.6.2节的理解。写这篇文章的原因是因为理解这段内容确实花了一些功夫。面向对象:懂得Raft,同时也对3.6.2节有疑问,并且看了“参考”这里面几个之后还不是很清晰的同学。NOTE: 3.6.2节是《CONSENSUS: BRIDGING THEORY AND PRACTICE》这篇论文的,对应《In Search of an Understandable Consensus Algorithm(Extended Version)》是5.4.2节。看这篇文章之前先看一下R

2020-06-03 21:48:07 390

原创 TIP HBase 列 family和qualifier

HBase 列 family和qualifier网上很多讲HBase的family和qualifier的文章,有不少说family是一级列,qualifier是二级列(或者说相当于)。我对它们的理解是:qualifier是列,family就是列族,没有“一级”和“二级”的分别。之所以出现family的概念,我猜测是这样的:HBase是列式存储的数据库,如果每一列都单独存储的话,我们从HBa...

2019-11-15 10:35:58 1004

原创 数据库分布式事务2PC设计方案

数据库分布式事务2PC设计方案数据库事务的概念数据库事务通常指对数据库进行读或写的一个操作序列。1、为数据库操作提供了一个从失败中恢复到正常状态的方法,同时提供了数据库即使在异常状态下仍能保持一致性的方法。2、当多个应用程序在并发访问数据库时,可以在这些应用程序之间提供一个隔离方法,以防止彼此的操作互相干扰。[1]事务的4个特性原子性(Atomicity):事务包含的操作全部成功或者...

2019-11-08 21:04:14 1093

原创 core文件中查看切换出去协程的栈信息

使用协程时,如何在core文件中查看swapout的协程栈信息NOTE core文件中查看切换出去协程栈信息的方法,直接使用请跳到"实现"这一节.背景最近开始流行使用协程来更进一步提升C/C++程序的性能,可能是受go语言的影响。据说go是天生支持协程的。协程切换时直接发生在用户态,相对于线程,效率更高。而且基于“优秀的”协程库上编写同步模式的代码,可以达到异步的性能。但是协程在调试时...

2019-09-20 12:56:20 807

原创 尝试使用Chandy-Lamport方法设计分布式数据库快照

尝试使用Chandy-Lamport方法设计分布式数据库快照C-L理论根据Chandy-Lamport论文中的说明,分布式系统中节点间通过消息通道传递消息,消息按照顺序发送和接收。某个节点做过快照后,通过消息通道发送不影响系统状态的消息marker通知其它节点做快照。一个节点接收到marker消息时,如果还没做快照,那么就做快照,记录接收消息通道为空。已经做过快照的话,就记录从做快照开始,...

2019-08-26 12:42:04 277

原创 Percolator 2PC模型

介绍Percolator 用于Google的检索系统。Google爬取的网页建立的索引,通过Percolator系统建立索引。Google的检索系统维护了上千台机器,有数十PB数据。Percolator优化了增量处理(incremental processing)的问题: 很多网页是已经爬取过的,爬取的新网页或者旧网页更新了,如果可以增量更新到原有系统,会更节省资源。Percolator提...

2019-08-21 19:32:52 867 1

原创 分布式快照

这篇论文是Chandy和Lamport大神的作品,理论性非常强。如果想设计分布式死锁检测算法、分布式数据库全局快照或者判断分布式系统是否处于某个稳定状态(stable),可以深入阅读。原文更精彩。

2019-08-12 16:24:48 898

原创 PolarFS的ParallelRaft

PolarFS的ParallelRaft简介本文摘自阿里在PVLDB的一篇论文《PolarFS: An Ultra-low Latency and Failure Resilient Distributed File System for Shared Storage Cloud Database》,其中介绍了一种比Raft更高效的一致性协议ParallelRaft。Raft是一个比Paxo...

2019-07-31 13:23:19 1674 4

原创 TIP linux下hook memset函数

linux下hook memset函数memset在libc.so中。hook可以帮助我们查找一些问题,比如hook memset可以根据某些memset参数特征记录一些信息,可以记录下调用栈信息。hook的代码:#define _GNU_SOURCE#include <stdlib.h>#include <stdio.h>#include <dlfcn....

2019-07-31 11:45:42 430

原创 F1 在线异步执行schema change

F1 在线异步执行schema change论文《Online, Asynchronous Schema Change in F1》总结对,先来个总结。F1拥有几百个无状态的F1 server,其内存中会缓存schema信息。不能做到同时让所有的F1 server同时应用某个schema,因此存在不同F1 server访问不同schema的状态。这篇论文就是介绍了如果在两个schema同时...

2019-07-18 14:17:30 676

原创 A Critique of ANSI SQL Isolation Levels

A Critique of ANSI SQL Isolation LevelsNOTE 本篇摘自论文,理论性很强,本人英语水平比较低,想要对事务隔离做深入了解的人阅读原文更好。介绍不同的事务隔离级别可以支持不同程度的事务并发度。ANSI/ISO SQL-92定义了四种隔离级别:READ UNCOMMITTED;READ COMMITTED;REPEATABLE READ;SE...

2019-07-15 11:57:58 1304

翻译 页错误处理 Page Fault Handling

原文链接: http://www.informit.com/articles/article.aspx?p=29961&amp;seqNum=5当一个进程要访问一个虚拟页,而这个虚拟页对应的PTE不在页表中, 或者这个PTE在某种方式上禁止访问,比如这页不存在或者访问模式跟这页的访问权限冲突,那么就会触发一个页错误。 页错误由CPU触发,page_fault_handler处理。因为Lin...

2019-01-30 14:13:17 3349 2

原创 BUG FIX:进程退出时hang住

问题描述进程kill后迟迟不退出,pstack看到一直在等锁:Thread 1 (Thread 0x2b3db1e9d900 (LWP 83917)):#0 0x00002b3db6193f4d in __lll_lock_wait () from /lib64/libpthread.so.0#1 0x00002b3db61915ae in _L_lock_39 () from /li...

2018-10-26 11:01:48 1682

翻译 用户空间的SystemTap探测是怎么工作的

这篇文章介绍SystemTap在用户层的实现原理。对文档进行了部分摘抄翻译,原文易懂,建议阅读原文:How SystemTap Userspace Probes Work。另外介绍另一篇文档:动态追踪技术漫谈在给Bitcoin增加SystemTap时,对它的实现感到很疑惑,还有这会增加多少开销。 实际上,我想知道的是:使用SystemTap的可执行程序会增加什么指令? 使用st...

2018-08-01 17:02:58 1151

原创 munmap参数错误导致进程空间异常

munmap传入错误参数len,系统不会帮忙校验有效性,而是能删则删,把[addr,addr+len]范围内的进程空间全部移除掉,不管中间是否有空洞。

2018-07-19 12:57:38 1248

原创 SLUB 代码笔记

数据结构主要包含两个缓存对象(CPU的kmem_cache_cpu和内存节点numa的kmem_cache_node),还有一个描述本身slab数据的kmem_cache。CPU缓存struct kmem_cache_cpu { void **freelist; // 指向第一个空闲对象。 struct page *page; // 从哪个页面分配 ...

2018-07-17 13:20:52 897

原创 TIP: Unable to initialize gtk, is DISPLAY set properly?

除了网上提供的一些常见方法,使用xming时可能还有一种原因,就是xming拒绝了主机的转发请求,需要在xming的配置文件X0.hosts中增加主机名称:localhost10.1.241.70localhost是本来默认有的。 X0.hosts与Xming.exe在同一个目录。...

2018-05-10 17:10:05 3515

原创 python pkg_resource.DistributionNotFound: ReviewBoard

httpd部署ReviewBoard报错: DistributionNotFound: ReviewBoard网上查到很多解决方法,但是都不管用。自己查pkg_resources文档,发现pkg_resources文档说需要distribution需要是egg包,但是我用pip install的包是dist,所以不支持。但是我自己的虚拟机上,ReviewBoard包也是dist,没有...

2018-02-08 11:42:10 755

原创 CBW/CWDE/CDQE扩展指令

CBW/CWDE/CDQE扩展指令使用符号扩展的方式对源操作数进行双倍扩展。CBW指令(将字节转换到字)复制源操作数的符号位(bit 7)到AH寄存器的所有位。CWDE(将字转换为双字)指令复制AX寄存器的符号位(bit 15)到EAX寄存器的高16位。 CBW和CWDE使用同一个操作数。CBW用于操作数大小是16位,CWDE用于操作数属性是32位。有些汇编器可能会强制区分操作数大小。而有些认为这

2017-11-02 16:38:01 15089 6

翻译 Translation Lookaside Buffer (TLB)

CPU每次访问虚拟内存,虚拟地址都必须转换为对应的物理地址。从概念上说,这个转换需要遍历页表,页表是三级页表,就需要3次内存访问。就是说,每次虚拟内存访问都会导致4次物理内存访问。简单点说,如果一次虚拟内存访问对应了4次物理内存访问,肯定比1次物理访问慢,这样虚拟内存肯定不会发展起来。幸运的是,有一个聪明的做法解决了大部分问题:现代CPU使用一小块关联内存,用来缓存最近访问的虚拟页的PTE。这块内存

2017-08-10 14:58:18 8816

原创 munmap导致的BUG

一次线上BUG的分析过程

2017-01-29 18:06:46 4103

原创 Linux 从core信息中找到TLS信息

Linux X86-64环境上在core文件中查找TLS变量信息

2016-08-09 16:59:07 4244

原创 pthread_key泄露问题检测

本文记录了查找pthread_key_create创建失败或者TLS资源泄露问题的查找过程

2016-07-26 11:03:14 1133 1

原创 MapReduce在Zookeeper集群上鉴权失败

MapReduce在Zookeeper集群上鉴权失败

2016-04-26 21:07:09 4627

原创 Linux 性能测试工具

Linux 性能测试工具

2016-03-29 16:02:35 3344

原创 SystemTap介绍

SystemTap是一个诊断Linux系统性能或功能问题的开源软件。它使得对运行时的Linux系统进行诊断调式变得更容易、更简单。有了它,开发者或调试人员不再需要重编译、安装新内核、重启动等烦人的步骤。

2016-03-17 11:46:21 2885

原创 TIP: system errno 12 Cannot allocate memory

system/fork函数执行失败,错误码12,Cannot allocate memory,相关资料汇总

2016-01-14 16:08:53 6847

原创 TIP 链接错误 link error

TIP 链接错误 link error环境OS : linux 3.13.0gcc : 4.8.2code: sqlite-3.5.3详细信息执行的编译命令gcc -fpic -ftemplate-depth-64 -m64 -DLINUX -DLINUX_X86 -DOPENBOSS -DV20 -DGANSU -D_REENTRANT -D__OPENBOSS_NGMAKE__ -D_

2016-01-12 14:35:39 1143

原创 添加Linux系统调用(ubuntu, 3.13.0)

Ubuntu上3.13版本添加Linux系统调用

2015-06-01 10:04:09 1878

翻译 推测的删除锁(Speculative Lock Elision):实现高并发多线程执行

SLE全称Speculative Lock Elision,我称之为推测的删除锁。这是一篇关于SLE的论文翻译,但是因为本人英语功底很差,所以翻译的不通顺而且会有很多错误的地方。之所以把它发出来,是因为个人感觉SLE设计的很巧妙,而且没有搜索很多到关于SLE的文章,这里的目的只是为了让大家了解SLE。有兴趣的同学最好看论文原文。

2015-05-24 20:31:30 2670

命令行解析辅助类

命令行解析辅助类,说明见readme.txt,支持的模式:-c/--command/-cparam/-c param/--command param

2015-01-18

BMP与灰度图

BMP转换为256灰度图,不过因为当时搜集的关于BMP与灰度图的资料丢失,所以没有关于灰度图文件格式介绍

2013-12-11

Linux内核源码0.12

Linux内核源码0.12 最经典的一版Linux源码

2011-09-15

汉诺塔VC6.0可视化实现源码

汉诺塔递归实现,可视化,用VC6.0,在XP和Win7下编译通过

2010-03-27

简单的ADO接口_用于VC和SQL Server

这是在我做过课程设计后自己写的ADO接口,有测试程序,可以把ADOPtr.h和ADOPtr.cpp复制后直接使用,实现最基本的一些数据库操作(添加、删除、修改) 用于VC和SQL Server程序

2010-01-11

空空如也

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

TA关注的人

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