自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(75)
  • 资源 (7)
  • 收藏
  • 关注

翻译 【译文】使用原子变量和GCC在C/C++中实现引用计数

C语言中,为了实现高性能,多线程编程要使用无锁数据结构(lock-free),引用计数是一种经常被使用的机制。但是,引用计数单打独斗是不行的,必须配合延迟删除机制(原文中的RCU方法),才可以高性能的、线程安全的访问对象。

2021-08-06 13:29:39 886

原创 linux系统内核UDP丢包原因分析

2016-07-22更新1、UDP校验和错误现象:可以用netstat -su 查看到有UDP错包。tcpdump捕包,在wireshark打开捕获的udp报文,开启校验和选项,若有错包。方案:查找链路故障。2、防火墙开启现象:特定端口的包收不到方案:使用service iptables stop关闭。3、rp_filter开启现象:tcpdump有包,协议栈收

2012-11-22 16:42:19 9722 1

原创 没有atomic.h后如何在linux实现原子操作

2011-09-06更新需要使用atomic_add_return函数,发现编译时找不到该函数的入口,阅读iatomic.h后发现在I386和X86_64平台下,不支持带有return后缀函数,例如atomic_sub_return,atomic_inc_return等,但支

2010-12-29 12:01:00 21124 1

原创 在应用程序中替换Linux中Glibc的malloc的四种方法

打算优化系统的内存分配,接管glibc提供的内存管理,但是整个工程的代码量很大,使用malloc、realloc、calloc和free的地方到处都是,如果自己写好的接口需要重命名所有的调用,先不说工作量,部分没有权限查看代码的.a文件就搞不定了。所以需要替换掉系统的malloc,保证原有调用的名称不变。经过尝试,共有四种方法可以替换,各有优缺点吧。方案1 使用环境变量LD_PRELOAD         环境变量LD_PRELOAD指定程序运行时优先加载的动态连接库,这个动态链接库中的符

2010-12-03 12:35:00 22670

原创 处理LetsEncrypt证书签发错误acme-v02.api.letsencrypt.org timeout

处理 HTTPSConnectionPool(host=‘acme-v02.api.letsencrypt.org’, port=443): Read timed out

2022-08-25 11:03:52 4521 1

原创 gitlab 11.10.4升级至12.3.4碰到的坑

起因:ACME客户端版本过旧导致无法更新Lets Encrypt证书lets encrypt证书的有效期是90天,使用以下两个命令都无法更新证书sudo gitlab-ctl renew-le-certs和sudo gitlab-ctl reconfigure错误提示ACME v1版本已被废弃:Running handlers:There was an error running...

2019-10-07 01:35:05 3577

原创 Thinkpad x1“电源已接通,未充电”解决办法

现象Windows电池管理提示:“电源已接通,未充电” 或 “plugged in but not charging”。修改电源管理计划无效,重启无效。解决办法拔掉电源重启进入BIOS进入 Power menu选择 “Disable built-in battery”等待电脑关机,再等待30秒插上电源,开机实验环境: Thinkpad X1 extrem Windows 1...

2019-04-06 18:19:39 46525 11

原创 解决windows 10更换非系统盘后无法启动问题

现象笔记本电脑里有两块SSD硬盘,Disk 1是系统盘,安装了windows 10,Disk 1是数据盘,要将3为替换为更大容量的物理盘c。Disk 2更换为Disk 3后,BIOS停留在Boot Menu,列出了Disk 1、3,均无法引导。BISO为UEFI引导。原因在有双硬盘的主机上安装windows时,windows会将EFI引导分区存储在非系统盘,即本文中的Disk 2,一旦更...

2019-03-13 15:49:53 7820 1

原创 Latex图表设置中英文双标题(非ccaption宏包)

Latex图表设置中英文双标题(非ccaption宏包)双语言标题的解决方案,搜到的答案基本是ccaption宏包。实际使用时,会编译报错: ! LaTeX Error: Command \captionwidth already defined.查到ccaption是一个古老的宏包,已经被caption宏包所取代。caption宏包中包含bicaption.sty,可以完美解决...

2018-04-27 16:38:27 9996 1

原创 Windows系统 QQ/Print Screen截图黑屏解决方案

百度到的方案不是要改注册表就是关闭显卡加速,不喜欢。 windows7以上版本,可以用系统自带的snipping tool,支持全屏、矩形、活动窗口等截图方式。

2017-11-29 12:02:52 11027 1

原创 【StatsD监控】基于Telegraf+InfluxDB+grafana展示(非Docker方案)

StatsD是一个简单易用的监控方案,由于采用了文本+UDP传输数据,所以对C/C++开发者比较友好。本文介绍了部署Telegraf+InfluxDB+Grafana的方法,以便对StatsD进行可视化。

2017-11-07 22:08:05 3355

原创 使用C语言,对OpenSSL命令行加密的文件进行解密

需要使用代码对OpenSSL shell命令加密的文件进行解密需要阅读本文。

2017-06-09 21:50:41 4813

原创 Latex Error “Font txsy at 540 not found“

使用windows的CMD工具,执行initexmf --mkmaps另外,该问题也可能导致”citation xxx undefined”错误。 参照 https://tex.stackexchange.com/questions/262962/error-font-ptmr8r-at-480-not-found

2017-05-11 17:11:19 3527 3

原创 多线程/多进程gdb调试时变量值出现变化问题定位

不要考虑什么CPU缓存一致性、内存屏障之类的问题,首先排除是不是多线程/进程访问的同步没做好。 1、会被多线程调用吗? 2、共享内存多进程读写的同步保证了吗?

2017-03-11 11:28:08 1468

原创 不能用sendmsg提升原始套接字发送性能

sendmsg可以提升原始套接字发送效率吗?为什么会返回EMSGSIZE错误?

2016-08-10 16:01:56 2266

原创 网页和URL内非英语字符的编码方法

HTML和URL中对于ASCII码中大于0x7f的字符需要进行编码,主要有”\u”和“&#”两种前缀编码方式,其后跟的字符都是unicode编码。

2016-04-03 18:28:54 1645

原创 系统可用内存不足解决

现象:系统可用内存不足,16GB内存仅剩3GB可用,此时我们的也应用没有起,top查看cached也较小,只能重启应付。 原因:初步判断是内核占用,通过slabtop定位到dentry_cache,使用下面的方法解决: http://www.cnblogs.com/panfeng412/p/drop-caches-under-linux-system.html

2016-03-14 11:51:40 1892

原创 两次访问同一静态URL得到的文件长度不一样

在使用chrome浏览器请求一个媒体服务器上的URL时 ,应答的Content-Length不一致。

2016-01-24 15:30:29 2598

转载 平定igb之“乱”

平定igb之“乱”作者:dnk_admin

2016-01-12 17:41:44 2853

原创 tcpdump捕包乱序的解决方案

tcpdump捕包乱序的解决方案

2016-01-12 17:38:38 4515

原创 LD_PRELOAD和dlopen选项RTLD_DEEPBIND之间的优先级

标题先说结论:RTLD_DEEPBIND的优先级更高,在符号名发生冲突时,LD_PRELOAD的全局符号介入对于使用RTLD_DEEPBIND标志位dlopen开的动态连接库无效。 发现背景: 在使用《在应用程序中替换Linux中Glibc的malloc的四种方法》一文中第3个方法接管程序内存时发现已接管内存总量比top命令看到的虚拟内存值小很多。于是查看/proc/[pid]/smaps查看虚

2015-12-22 18:15:54 6679

原创 在Windows7环境下使用GIT BASH免输入密码

背景:根据一路向北的教《Windows下TortoiseGit over Putty or Openssh提交项目到GitLab》,安装了TortoiseGit客户端,并完成在Gitlab上公钥的部署。但是有些操作必须通过GITbash命令行才能完成,但每次fetch/push都要输入[email protected]的密码,非常繁琐。经过各种尝试,终于使用前期通过PuttyGen创建的私钥登录服务器。 第

2015-11-12 17:01:08 3713

转载 C语言函数调用性能测试

原文链接:http://www.cnblogs.com/woshare/p/4720771.html在i5 3.1GHz下:1024字节栈,需要约300纳秒;64字节栈,需要200纳秒。

2015-08-13 15:12:51 2994

转载 Take advantage of TCP/IP options to optimize data transmission

原文地址:http://www.techrepublic.com/article/take-advantage-of-tcp-ip-options-to-optimize-data-transmission/ Streamlining data transmission is a critical challenge for any enterprise. Thankfully, the

2015-04-30 19:53:33 1741

原创 Linux操作系统时间相关函数性能下降原因分析

在排查操作系统升级后应用性能降低过程中,发现同硬件平台下2.6.32内核版本usleep函数产生的开销远大于2.6.18内核上的。        软硬件环境如下主机A主机BCPU Intel E5-2630 24核2.6GHz内存 DDR3 64GBRHEL-6.4(Kernel

2015-03-27 19:27:05 3273

原创 如何分析Linux版本升级后的资源开销增加原因?

起因一个运行十余年的Linux平台应用,最近要从原来的RHEL 5.4(2.6.18)升级到RHEL6.4(2.6.32),以便适应超过32核CPU。在重新编译运行后发现,应用CPU开销从原来的150%增加到500%。通常来说,Linux内核版本升级不会降低原有程序的性能,甚至应该所提升才对。以下是对资源消耗增加其原因进行分析的过程。         一般同一源代码的应用在不同Linux操

2015-03-27 18:18:48 1797

原创 linux自动挂载U盘只读的修复方法

自动挂载的U盘,变成只读了,用root权限修改属性也不可以。推测是U盘的文件系统损坏,操作系统为了防止进一步毁坏文件系统,而将其设置成了只读。解决起来很简单,插到windows系统上,提示U盘损坏,点击修复即可。可能需要时间较长,耐心等待。

2015-03-12 17:54:40 4014

原创 Dwarf Error: wrong version in compilation unit header (is 4, should be 2)

在gcc4.1.2,gdb6.5的环境下竟然出现了这个错误,非常不可思议,因为这两个版本的gcc和gdb是匹配的.尝试按照下面这个方法重新编译也不行。http://blog.csdn.net/fandroid/article/details/32914203后来发现是源代码中使用了一个静态链接库,这个链接库是在高版本gcc上编译的,链接到可执行程序后导致整个程序都不能gdb,重新编

2015-03-12 17:51:37 4985

原创 使用iconv进行GBK到BIG5编码转/简繁转换遇到的问题

Linux操作系统中的iconv命令/函数可以将一种已知的字符集文件转换成另一种已知的字符集文件。在使用它进行GBK到BIG5的编码转换时,遇到"iconv:illeagal input sequence at positon xx ”的错误。有个一个文本文件gbk.txt,只有四个汉字,内容如下:喜欢德芙使用下面的命令,在shell中进行转换 iconv -f gbk -t

2015-02-27 10:56:02 6676

原创 高效获得Linux函数调用栈/backtrace的方法

有四种方法可以获得Linux的函数调用堆栈,参见CALL STACK TRACE GENERATION。在这里简单罗列一下文中提到的四个方案:方法1 GCC内置函数__builtin_return_address 方法2 Glibc中的backtrace函数 方法3 Jeff Muizelaar实现的增强backtrace,除了函数名,还能获得代码行号 方法4 libunwind这...

2014-12-31 16:16:08 18903 3

原创 一例TCP优雅关闭失败SO_LINGER选项未起作用

通过setsockopt :SO_LINGER 选项可以指定函数close对面向连接的协议如何操作。内核缺省close操作是立即返回,如果有数据残留在套接口缓冲区中则系统将试着将这些数据发送给对方。但是如果close时,接收缓冲区有未接收数据,则操作系统会直接发送RST报文结束链接,也就是说TCP链接不会优雅关闭。所以,如果希望链接被优雅关闭,应在接受完缓冲区内的所有数据后再调用clo

2014-12-31 15:37:24 2041

原创 一例由于栈溢出导致valgrind报告Invalid write的错误

使用Valgrind检查新写好的代码,在调用函数a时,valgrind报告了一系列的Invalid write和Invalid read,警告所在行数就是函数a的定义位置,让人摸不着头脑。而且也不是每次调用a都会告警。不经意间发现在Invalid write之前还有一个SP change的警告,在这个警告的提醒下发现函数a中一个局部变量数组特别大,达到了6MB,加上其它数据超过了栈空间(l

2014-12-04 17:47:56 4394

转载 CALL STACK TRACE GENERATION

转载自http://www.acsu.buffalo.edu/~charngda/backtrace.html(链接已失效)

2014-11-19 13:30:21 4790

原创 VNC登录linux后桌面不显示图标故障解决方法

1、vncserver -kill :12、rm -f .vnc/*3、vncserver

2014-08-28 14:38:58 14659

转载 C语言printf详解

C中格式字符串printf()的一般形式为: %[标志][输出最小宽度][.精度][长度]类型, 其中方括号[]中的项为可选项。各项的意义介绍如下: 1.类型:表示输出类型的格式字符       格式字符意义a                                             浮点数、十六进制数字和p-计数法(C99)A                    

2014-08-26 16:07:20 1457

原创 C语言中switch case的类型比较机制

int func(char i){ switch(i) { case 0x82: return 1; default: return 0; }}int main(){ unsigned char a=0x82; ret=func(a); if(ret==1) { printf("bingo"); } else

2014-08-22 19:10:53 2124

原创 Linux动态链接库同名符号装载问题(二)

上一篇《Linux动态链接库同名符号装载问题(一)》中提到了动态链接的一些问题,本文主要讨论动态加载时符号冲突的问题。PART1:RTLD_DEEPBIND打开动态链接导致段错误的现象可执行程序A通过dlopen动态加载library.so,有可能出现library.so中和这样的情况: 程序A中存在函数search_hash()library.so中同样存在函数search_hash()dl...

2014-07-18 15:57:51 5295

原创 epollwait操作同一个epoll_fd的线程安全问题

epollwait和epollctl都是线程安全的,但是

2014-07-18 09:41:18 6173 2

翻译 Linux:如何在connect后获得源端口?

利用0getsockname() and cast the returned sockaddr to sockaddr_in. It then contains the port & IP.getpeername() gets the remote port & IP.To find an unused port, you have to call bind() on different

2014-07-11 19:21:31 1872

原创 tcpdump发现不同ipid的数据包被拼接成一个大包

问题在捕包机使用tcpdump捕包时发现,

2014-04-24 16:30:18 3664

GBK中文繁简转换码表

GBK的中文繁简转换码表,可以用UE打开,上下对应。 也可用程序打开,进行双向转换。

2015-02-27

WinSetupFromUSB

WinSetupFromUSB 是个功能非常强大的自启动U盘制作工具,可以完成WinXP/Vista/Win7的U盘安装,完成同盘多Windows安装源的U盘制作以及Linux 启动安装等功能。 使用说明:http://blog.csdn.net/littlefang/article/details/6851864 官方网站:http://www.msfn.org/board/topic/120444-how-to-install-windows-from-usb-winsetupfromusb-with-gui/

2011-10-08

libnet-1.1.5.tar.gz

libnet是一个小型的接口函数库,主要用C语言写成,提供了低层网络数据包的构造、处理和发送功能。libnet的开发目的是:建立一个简单统一的网络编程接口以屏蔽不同操作系统底层网络编程的差别,使得程序员将精力集中在解决关键问题上。 2010-11-09 更新的1.1.5版本,是截至上传日的最新版本,请问轻信高版本号的libnet。 详情可见http://blog.csdn.net/littlefang/article/details/6800586

2011-09-22

制作PPT的七种武器

1 一个PPT只为一类人服务,不要试图在某个PPT中既讲技术,又讲管理 2 演讲PPT的场合也非常重要,是一对一?一对多??或者是公开演讲??? 3 你的PPT永远是为听者服务,所以在设计的时候,一定不要以自我为中心 4 你的“目标”,在PPT中首尾呼应——在第一页Title中列出,在最后一页重复

2008-08-28

搜索引擎——原理、技术与系统

本书以我们设计、实现并维护运行北大“天网”搜索引擎的经验,介绍大规模搜索引擎的工作原理和实现技术。我们要向读者揭示,为什么向搜索引擎输入一个关键词或者短语,就能够在秒钟内得到那么多相关的文档及其摘要,而点击其中的链接就能够被引导到文档的全文,且其中相当一部分可能正是用户需要的。 我们按照上、中、下三篇展开相关的内容。上篇讲搜索引擎的基本工作原理,要解决的是为什么搜索引擎能提供如此信息查找服务的问题,以及它在功能上有什么本质的局限性。这一篇的内容包括网页的搜集过程,网页信息的提取、组织方式和索引结构,查询提交和响应的过程以及结果产生,等 i 等。这其中,虽然我们假定读者熟悉URL,HTML,HTTP,CGI,MIME等基本概念,但在上下文中也给予了必要的介绍,力图保持行文的流畅性。这一部分内容对于需要构建小规模搜索引擎的研究人员会有直接的参考价值。 中篇讨论和大规模实用搜索引擎有关的技术问题。所谓大规模在这里指至少维护超过1千万的网页信息,提供相关的查询服务。所涉及的内容包括并行分布处理技术的应用,数据局部性的开发,缓存技术的应用,以及搜集的网页在提供服务之前的预处理问题和高效倒排文件的建立技术等等。这一部分的讨论有比较强的计算机系统结构的风格,我们向读者展示计算机系统结构课程中的那些概念是如何生动地体现在一个实际应用系统中的。这一部分的内容对构建大规模数字图书馆的技术人员也应该有帮助。 下篇介绍挑战性更强一些的内容。一般地讲,前面所述可以称为是“通用搜索引擎”,为最广泛的人群提供信息查询服务是它的基本宗旨。这意味着它的应用模式必须尽量简单,即关键词或查询短语的提交和匹配响应。尽管这已经可以解决许多问题了,但对有些重要的信息需求依然显得力不从心。例如,一个人可能会关心最近半年来网上出现了哪些关于他(她)的信息,一个企业可能要关心它做了一次大规模促销活动后一个月内网上有什么反响,一个政府机构可能会关心在一项政策法规颁布后的网上舆论。面向主题和个性化的信息查询服务就是我们试图描述的一种基本途径。这一部分内容更多的和网上中文信息处理技术有关。更准确地讲,我们要介绍网络与并行分布处理技术与中文处理技术的结合,从而实现大规模、高性能、高质量、有针对性地网上信息查询服务。这一部分内容反过来可能对从事中文信息处理的研究人员有启发作用。

2008-08-28

Twisted_NoDocs-8.1.0.win32-py2.4.exe

wisted是python下的用来进行网络服务和应用程序编程的框架

2008-07-24

空空如也

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

TA关注的人

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