自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

羽飞的专栏

不以物喜不以己悲

  • 博客(45)
  • 资源 (8)
  • 论坛 (111)
  • 收藏
  • 关注

原创 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 120

原创 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 36

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

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

2020-08-21 09:31:13 471

原创 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 138

原创 TIP HBase 列 family和qualifier

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

2019-11-15 10:35:58 232

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

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

2019-11-08 21:04:14 616

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

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

2019-09-20 12:56:20 330

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

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

2019-08-26 12:42:04 126

原创 Percolator 2PC模型

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

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

原创 分布式快照

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

2019-08-12 16:24:48 456

原创 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 859 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 231

原创 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 312

原创 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 903

翻译 页错误处理 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 2405 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 873

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

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

2018-08-01 17:02:58 803

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

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

2018-07-19 12:57:38 820

原创 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 622

原创 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 2489

原创 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 520

原创 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 8816 6

翻译 Translation Lookaside Buffer (TLB)

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

2017-08-10 14:58:18 6429

原创 munmap导致的BUG

一次线上BUG的分析过程

2017-01-29 18:06:46 3357

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

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

2016-08-09 16:59:07 3762

原创 pthread_key泄露问题检测

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

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

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

MapReduce在Zookeeper集群上鉴权失败

2016-04-26 21:07:09 3551

原创 Linux 性能测试工具

Linux 性能测试工具

2016-03-29 16:02:35 2758

原创 SystemTap介绍

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

2016-03-17 11:46:21 2486

原创 TIP: system errno 12 Cannot allocate memory

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

2016-01-14 16:08:53 5412

原创 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 891

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

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

2015-06-01 10:04:09 1695

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

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

2015-05-24 20:31:30 2245

原创 GLIBC中NPTL线程实现代码阅读

glibc中thread的实现,加深对POSIX线程的理解

2015-05-15 20:09:32 4160 2

原创 GCC对乘法的优化

这个标题有点大,我并没有看过GCC的源码,所以也不知道很准确的GCC对乘法的优化。但是我做了几个测试,发现GCC的强大之处,与君共享。 突然想到做这个测试,是因为前段时间有个面试,出了一个很基础的问题,y = x * 63怎么优化。这种是学校的学生都会做的问题: y = (x << 6) - x; 可是这种方法到底能提升多少效率?有数据有真相。 我测试的平台是在Linux 2.6.32,GCC

2015-05-09 10:58:08 1616

原创 HAProxy中描述符管理

本文试图描述HAProxy中对描述符的管理,以从中获取收益以应用到自己的程序中,并提高程序的效率。

2015-04-05 21:08:13 1097

原创 Outlook VBA自动处理邮件

需求描述 公司里面每天都会有很多邮件,三分之一都是不需要看的,Outlook的过滤功能不错,都可以处理掉。还有些邮件,根据正文或者附件做一下处理自动转发出去就行了。于是上网搜集了一些资料,写个了小程序,共享一下,以后可以参考,也希望对大家有点用处。实现 废话少说,直接上代码吧。打开Outlook,按Alt+F11打开代码编辑器,输入下面的代码。可能有些兄弟不知道怎么入手,后面会放几个链

2015-04-04 17:39:17 14633 1

原创 HAProxy内存池简介

HAProxy介绍HAProxy是一款提供高可用性、负载均衡以及基于TCP(第四层)和HTTP(第七层)应用的代理软件,HAProxy是完全免费的、借助HAProxy可以快速并且可靠的提供基于TCP和HTTP应用的代理解决方案。HAProxy内存池概述HAProxy的内存池按照类型分类,每种类型的内存池都有一个名字(name),用链表记录空闲链表,每种类型的内存池中的元素大小都是相等的,并且按照16

2015-03-22 12:35:43 815

原创 堆-链表实现

小顶堆大顶堆的概念大家应该都很熟悉了,如果不了解,可以搜索一下,网上很多介绍,而且很多源码实现,都很简单。不过从网上看了一些堆的实现,都是用数组的。但是数组有一个缺陷,需要扩展时,就要复制原来的内存,申请新的空间。所以我在想能不能用链表,发现还真可以,就凑凑写了个代码。最后代码是写完了,发现其实链表没有必要,而且会占用更多的内存,尤其是对于那种int型变量,过多的指针真是浪费了大量内存。如果真

2015-03-15 20:37:24 2328 1

原创 Linux中POSIX文件锁的实现

我试图通过个人的理解方式讲解Linux文件锁的实现,使用的内核版本是3.13.0。POSIX文件锁简介先简单说下什么是文件锁。Linux文件锁有两种:协同锁(有些成为建议锁)和强制锁。Linux读写文件时不会对协同锁做校验,只会对强制锁做验证。我只想看Linux内核如何同步多个进程同步读写,因此不考虑协同锁。对于强制锁,按读写属性分,有读锁和写锁,或者解释为共享锁和排斥锁。

2014-11-30 20:18:15 2765

ARM ADS软件License破解文件

ARM ADS破解License文件,破解方法压缩文件中有,把license.dat放在安装目录的license文件夹下就可以。ADS下载路径:http://pan.baidu.com/s/1CMqFc

2014-05-11

BMP与灰度图

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

2013-12-11

命令行解析辅助类

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

2015-01-18

Distributed Snapshots: Determining Global States of Distributed Systems.pdf

分布式快照论文原文,Chandy&Lamport;大作。Lampport个人网站可以免费下载 http://lamport.azurewebsites.net/pubs/pubs.html

2019-08-12

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

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

2010-03-27

Linux内核源码0.12

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

2011-09-15

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

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

2010-01-11

Speculative Lock Elision

这是一篇关于SLE的论文。SLE是一个关于通过动态的分析删除加锁解锁操作从而提升多线程并发性能的方案。

2015-05-24

很简单的游戏存档修改

发表于 2010-10-10 最后回复 2020-07-07

Makefile

发表于 2011-11-02 最后回复 2018-06-24

总线出错 (核心转储)

发表于 2011-07-15 最后回复 2017-10-17

[吐槽]阿里HR

发表于 2015-04-03 最后回复 2016-10-26

CSDN广告合作

发表于 2016-08-08 最后回复 2016-08-09

我来吐槽,工作三年

发表于 2015-01-28 最后回复 2015-08-05

看到赵老师回复的帖子就有种帖子被强奸的感觉

发表于 2015-05-25 最后回复 2015-05-26

从一个超大的文件中查找字符串

发表于 2015-03-09 最后回复 2015-03-17

话说这智领科技怎么样

发表于 2015-01-28 最后回复 2015-03-17

徒儿虽痴迷却以了悟。我娘子的罪债,却因我而起,如果他不是恩情即无彼两情缘,如果他绝情背义,何至水漫金山,我才是真正的祸首 ,我耳根软,相信谗言,我人痴呆,辜负发

发表于 2014-06-10 最后回复 2015-01-09

坑大爷的CSDN

发表于 2014-11-23 最后回复 2014-12-12

湖南幼儿园校车翻入水库11人遇难 含8名幼儿

发表于 2014-07-11 最后回复 2014-08-28

`socklen_t' has not been declared

发表于 2012-09-13 最后回复 2014-08-18

读取CAD文件信息

发表于 2010-11-06 最后回复 2014-08-13

double free or corruption

发表于 2012-07-13 最后回复 2014-06-11

[反省]男人做错了事

发表于 2014-05-27 最后回复 2014-06-06

mysql启动时basedir/datadir与配置不一致

发表于 2014-03-23 最后回复 2014-05-27

尼玛,竟然破了

发表于 2013-12-11 最后回复 2014-03-23

TCP连接:IP地址与端口,本地与对端相同

发表于 2013-11-21 最后回复 2013-11-22

NDIS过滤驱动中某些接口是否可以访问全局变量?

发表于 2013-08-23 最后回复 2013-11-04

TCP状态请教

发表于 2013-05-13 最后回复 2013-05-14

一直喜欢一个女生

发表于 2012-10-28 最后回复 2013-02-25

Windows服务如何禁止用户禁用服务

发表于 2012-11-05 最后回复 2013-02-03

新人不能加薪?

发表于 2012-11-14 最后回复 2013-01-23

core dump没有思路

发表于 2012-12-24 最后回复 2013-01-15

临界区 pthread_mutex_t

发表于 2012-02-24 最后回复 2012-11-23

初学Unix

发表于 2011-07-16 最后回复 2012-11-23

非阻塞套接字

发表于 2011-07-28 最后回复 2012-11-23

线程同步 pthread_mutex_t

发表于 2011-07-29 最后回复 2012-11-23

recvfrom是不是线程安全的?

发表于 2011-07-29 最后回复 2012-11-23

无效的多字节字符

发表于 2011-10-31 最后回复 2012-11-23

Makefile 多目标

发表于 2011-12-21 最后回复 2012-11-23

Linux Shell 判断文件不存在

发表于 2011-09-21 最后回复 2012-11-23

函数选择

发表于 2012-10-19 最后回复 2012-10-21

做完最后一个东西,走人...

发表于 2012-08-12 最后回复 2012-08-19

英语培训

发表于 2012-07-08 最后回复 2012-07-10

OpenGL求助

发表于 2012-06-26 最后回复 2012-07-09

GetPeerName返回异常IP和Port

发表于 2012-06-27 最后回复 2012-07-08

Select会不会阻塞

发表于 2012-06-26 最后回复 2012-06-27

CWindowDC 绘制标题栏

发表于 2010-04-04 最后回复 2012-06-26

空空如也

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

TA关注的人 TA的粉丝

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