自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

一见

技术人生 生活点滴

  • 博客(4)
  • 资源 (53)
  • 收藏
  • 关注

原创 零停重启程序工具Huptime研究

目录目录 11. 官网 12. 功能 13. 环境要求 24. 实现原理 25. SIGHUP信号处理 36. 重启线程 47. 重启目标程序 58. 系统调用钩子辅助 69. 被勾住系统调用exit 610. 被勾住系统调用listen 711. Symbol Versioning 812. 勾住bind等系统调用 1013. 系统调用过程

2016-11-24 19:37:45 5138

原创 SecureCRT和乱码

示例:# ls /usr/local/r3c/bin/lib   /bin/ls: /usr/local/r3c/bin/lib: ????????? 查看系统字符集设置:# localeLANG=zh_CN.UTF-8LC_CTYPE=POSIXLC_NUMERIC="zh_CN.UTF-8"

2016-11-11 17:51:26 8414

原创 iphone“连接到icloud是出错”的可能原因

百度没能解决“连接到icloud是出错”,突然发现是因为禁止了“设置”访问WIFI和蜂窝网络(第三张图所示)。​

2016-11-05 16:39:14 47245 1

原创 Linux后台开发常用工具

sed单引号替换(特殊字符需要使用反斜线”\”进行转义)sed 's/原字符串/替换字符串/'sed双引号替换sed "s/原字符串包含'/替换字符串包含'/" sed问号替换sed 's?原字符串?替换字符串?'sed可同时执行多个替换,不同替换间使用分号分开,如果需要直接修改文件方式替换,只需sed后带参数“-i”。如果要替换的包含了“/”,则可使用“|”。pwdx...

2016-11-04 10:31:22 9804 2

ejstatd一个增强型的jstatd

jstatd启动后会打开两个端口,其中一个端口可通过参数“-p”指定,如果不指定默认为1099,另一个是一个随机端口,不能参数指定。在防火墙环境使用不便,ejstatd是jstatd的增强版本,可指定端口,方便防火墙环境中使用。

2018-12-05

开源C++版本CGI库CGICC入门

  CGICC是一个C++语言实现的开源CGI库,采用LGPL授权协议,使用较为简单。   CGICC官网:http://www.gnu.org/software/cgicc/,截止2015/3/14,CGICC最新稳定版本为3.2.16,下载地址是:http://ftp.gnu.org/gnu/cgicc/cgicc-3.2.16.tar.gz,最新更新时间为2014/12/7(令人惊讶和欣慰的是作为古老的CGI,CGICC还在不断的更新)。

2018-12-04

Redis-5.0.0集群配置

  本文档基于以前写的《Redis-3.0.5集群配置》和《Redis-4.0.11集群配置》。   redis-3.0.0开始支持集群,redis-4.0.0开始支持module,redis-5.0.0开始支持类似于kafka那样的消息队列。   本文参考官方文档而成:http://redis.io/topics/cluster-tutorial,不适用redis-5.0.0以下版本,原因是从redis-5.0.0版本开始,redis-trib.rb的功能被redis-cli替代了。   redis-5.0.0以下版本的安装和部署,可参考:https://blog.csdn.net/Aquester/article/details/50150163。   redis运维工具和部署工具:https://github.com/eyjian/redis-tools。

2018-11-01

互联网后台开发需要掌握什么?

  本文内容仅针对互联网后台开发从业人员。   互联网后台开发,通常意味着分布式、大数据,涉及到高性能、系统容灾、数据容灾、高可用性、数据一致性等。自从2008年Hadoop在华夏大地蓬勃发展,开源如火山爆发在业界百花齐放,茁壮成长。国内的BAT、华为和小米等也大量的参与了国际开源,甚至开源了大量优秀的久经考验的内部系统,如阿里的Tair、druid、fastjson、jstorm、AliSQL、RocketMQ和腾讯的RapidJSON、libco、PhxPaxos、PhxRPC、PhxQueue、PhxSQL、PaxosStore、MSEC、Tars、TAF等。 开源如此繁荣,需要感谢Google的三篇论文:《The Google File System》、《MapReduce: Simplified Data Processing on Large Clusters》和《Bigtable: A Distributed Storage System for Structured Data》,Google开源的Protocol buffers等对整个业界作用也十分巨大。

2018-11-01

大数据利器2018版

当下最流行的各类大数据、云计算开源资源列表,如:hadoop、spark、flink、hbase、redis等

2018-11-01

SSH2免密码登录OpenSSH

如何确定是OpenSSH还是SSH2? 执行命令“ssh -V”,通过它的输出,即可确定: SSH2 ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on OpenSSH OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

2018-10-11

两个openssh间免密码登录

以下针对的是openssh,而不是ssh,也不是ssh2。配置分两部分:一是对登录机的配置,二是对被登录机的配置,其中登录机为客户端,被登录机为服务端,也就是解决客户端到服务端的无密码登录问题。下述涉及到的命令,可以直接拷贝到Linux终端上执行,已全部验证通过,操作环境为CentOS Linux release 7.0。 如何确定是OpenSSH还是SSH2?执行命令“ssh -V”,通过它的输出,即可确定

2018-10-11

OpenSSH登录SSH2

如何确定是OpenSSH还是SSH2? 执行命令“ssh -V”,通过它的输出,即可确定: SSH2 ssh: SSH Secure Shell 3.2.9.1 (non-commercial version) on OpenSSH OpenSSH_5.3p1, OpenSSL 1.0.0-fips 29 Mar 2010

2018-10-11

两个SSH2间免密码登录

以下针对的是ssh2,而不是ssh,也不是OpenSSH。配置分两部分:一是对登录机的配置,二是对被登录机的配置,其中登录机为客户端,被登录机为服务端,也就是解决客户端到服务端的无密码登录问题。下述涉及到的命令,可以直接拷贝到Linux终端上执行,已全部验证通过,操作环境为SuSE 10.1。

2018-10-11

Hadoop-2.8.0分布式安装手册

  当前版本的Hadoop已解决了hdfs、yarn和hbase等单点,并支持自动的主备切换。   本文的目的是为当前最新版本的Hadoop 2.8.0提供最为详细的安装说明,以帮助减少安装过程中遇到的困难,并对一些错误原因进行说明,hdfs配置使用基于QJM(Quorum Journal Manager)的HA。本文的安装只涉及了hadoop-common、hadoop-hdfs、hadoop-mapreduce和hadoop-yarn,并不包含HBase、Hive和Pig等。   NameNode存储了一个文件有哪些块,但是它并不存储这些块在哪些DataNode上,DataNode会上报有哪些块。如果在NameNode的Web上看到“missing”,是因为没有任何的DataNode上报该块,也就造成的丢失。

2018-09-11

ZooKeeper-3.4.6分布式安装指南

  介绍ZooKeeper-3.4.6版本的分布式安装,力求细致,提供精确的安装指导。本文的安装环境是64位的SuSE 10.1 Linux,也适用于ZooKeeper-3.4.8。   ZooKeeper节点间不需要互登录,因此不用配置免密码登录。

2018-09-10

LVS初步入门

  很多人知道LVS,但可能知之不多,希望阅读本文后,能够对LVS有一个基本的感性认识。   LVS是国内最早出现的自由软件之一,由国防科技大学章文嵩博士在1998年5月创立,章博士目前是淘宝网高级研究员,是淘宝网核心系统负责人。 LVS首要的是解决路由问题,结果不但解决了耦合问题,实现了网络隔离,而且顺带实现了负载均衡,负载均衡复杂的地方在于不同的均衡策略。常常均衡和路由成对出现,象分布式中的一致性哈希,也是路由和均衡,实际上还达到了容灾的效果,可以说是一举多得。

2018-09-10

磁盘文件读性能测试

硬盘读取性能: hdparm -t /dev/sdb /dev/sdb: Timing buffered disk reads: 2454 MB in 3.00 seconds = 817.84 MB/sec 10块物理磁盘,做了Raid10,因此读性能高,达每秒817.84MB。

2018-09-10

快速上手,协程剖析

协程也叫微线程,英文名称为 coroutine。一个进程可以有多个线程,一个线程可以有多 个协程,这是协程和线程间的关系。不同的是,线程由系统调度,但协程需要自己调度,协 程运行在用户态。

2018-09-10

理解snprintf()函数

在编程中,需要关注snprintf()的两个问题:一是它的返回值,二是它的第二个参数。

2018-09-10

madvise、fadvise、posix_madvise和posix_fadvise函数的使用

  系统调用madvise的作用:建议内核如何使用指定段的内存,可配合mmap使用。函数原型如下: #include int madvise(void *addr, size_t length, int advice);

2018-09-10

Redis-4.0.11集群配置

版本:redis-3.0.5 redis-3.2.0 redis-3.2.9 redis-4.0.11 参考:http://redis.io/topics/cluster-tutorial。 集群部署交互式命令行工具:https://github.com/eyjian/redis-tools/tree/master/deploy 集群运维命令行工具:https://github.com/eyjian/redis-tools/tree/master 批量操作工具:https://github.com/eyjian/libmooon/releases

2018-09-10

Thrift结构分析及增加取客户端IP功能实现

  分析Thrift的结构动机是为了实现服务端能取到客户端的IP,因此需要对它的结构、调用流程有些了解。另外,请注意本文针对的是TNonblockingServer,不包含TThreadPoolServer、TThreadedServer和TSimpleServer。   thrift对网络连接没有使用内存池,最直接简单的性能优化是绑定Google gperftools中的TCMalloc。

2018-09-10

再议GCC编译时的静态库依赖次顺问题

这个问题的原因是b.cpp依赖a.cpp,gcc要求(实际是ld要求)libb.a须放在liba.a前面,即需要改成:g++ -g -o x x.o libb.a liba.a,也就是被依赖的库需要放在后头。 这是最常规的解决办法,除此之外,只需要加入--start-group和--end-group两个链接参数,即可保持被依赖的库放在前头,也就是改成如下即可:g++ -g -o $@ -Wl,--start-group $^ -Wl,--end-group。 这里的“-Wl,”表示后面跟着的参数是传递给链接器ld的,gcc不关心具体是啥。“--start-group”表示范围的开始;“--end-group”表示范围的结束,是可选的。位于“--end-group”之后的仍然要求被依赖的库放在后头。

2018-09-10

C++鲜为人知的符号

  这些鲜为人知的C++符号,可直接在代码中使用,但实践中不推荐这么做,可作为茶余饭后的乐趣了解C++的另一面。   虽然它们鲜为人知,但却不是GNU g++独有的,而是C++标准定义的,找一本C++标准书或pdf文档看看,就可以见到它们赫然在目。(注:C++17标准将干掉这些鲜为人知的符号)

2018-09-10

__lll_mutex_lock_wait的错误原因

(gdb) bt #0 0x00002b9405ea1c38 in __lll_mutex_lock_wait () from /lib64/libc.so.6 #1 0x00002b9405e45e5f in _L_lock_4026 () from /lib64/libc.so.6 #2 0x00002b9405e42df1 in free () from /lib64/libc.so.6 #3 0x00002b9405e5b148 in tzset_internal () from /lib64/libc.so.6 #4 0x00002b9405e5b9d0 in tzset () from /lib64/libc.so.6 #5 0x00002b9405e5fe44 in strftime_l () from /lib64/libc.so.6 #6 0x00002b9405e93701 in __vsyslog_chk () from /lib64/libc.so.6 #7 0x00002b9405e3c6d0 in __libc_message () from /lib64/libc.so.6 #8 0x00002b9405e4177e in malloc_printerr () from /lib64/libc.so.6 #9 0x00002b9405e42dfc in free () from /lib64/libc.so.6 #10 0x00000000004007c9 in main (argc=1, argv=0x7fffa524f4d8) at x.cpp:17

2018-09-10

nohup、&、setsid、fork和fg、bg究竟有啥区别?

  子进程从父进程继承了:SessionID、进程组ID和打开的终端。子进程如果要脱离这些,代码中可通过调用setsid来实现。,而命令行或脚本中可以通过使用命令setsid来运行程序实现。setsid帮助一个进程脱离从父进程继承而来的已打开的终端、隶属进程组和隶属的会话。   需要注意,代码中调用setsid是有条件的:即调用进程自己不能是进程组长。因此,调用setsid之前需要先fork,然后由产生的子进程调用setsid。

2018-09-09

零停重启程序工具Huptime研究

  零停重启目标程序,比如一个网络服务程序,不用丢失和中断任何消息实现重新启动,正在处理的消息也不会中断和丢失,重启的方法是给目标程序的进程发SIGHUP信号。

2018-09-09

iwlwifi-9000-pu-b0-jf-b0-34.618819.0.tar.gz

联想笔记本上Ubuntu无线网卡驱动,安装方法请参见博文:https://blog.csdn.net/Aquester/article/details/103655720。

2020-02-04

Linux后台开发工具箱-葵花宝典.pdf

本文是个大杂烩,内容为日常点滴的日积月累,持续更新当中,可关注博客(https://blog.csdn.net/Aquester或http://aquester.blog.chinaunix.net),查看最新版本。文中的内容,可帮忙开发提升分析和定位各类问题,比如找出导致IO负载高的进程等,以及一些简单的运维工作等。

2020-01-15

Docker入门之安装Docker.pdf

本文操作基于CentOS7,其它Linux发行版本可能存在差异,分基于yum的在线安装和基于二进制包的离线安装(实际还有基于rpm包的离线安装),离线安装可以更多地了解Docker及相关体系。 Docker要求Linux内核版本不低于3.10,并且必须为64位系统,执行命令“docker version”可查看Docker版本。 CentOS7防火墙默认采用的是firewalld管理netfilter子系统,底层调用的仍然是iptables命令,firewalld实际是iptables的一个封装。不同的防火墙相互间存在冲突,使用某其中一个时应禁用其他的。 谨记:容器运行在Linux内核之上,不包含位于内核之上的glibc等库,以及ls等命令。如果容器中的程序依赖glibc等库或者依赖ls等命令,则容器自身应当包含这些设施。另外,容器中的程序等必须和内核兼容,否则将会遇到“FATAL: kernel too old”错误,该错误和库文件ld-linux.so有关。

2020-01-14

服务网格代理Envoy入门.pdf

Envoy是什么? Envoy是Lyft开源的一个C++实现的代理(Proxy),和Nginx及HAProxy类似,可代理L3/L4层和L7层。代理是它最核心和基础的功能,它也是服务网格框架Istio的Sidecar。

2020-01-07

Docker入门之创建镜像初步.pdf

本文介绍在CentOS7上从构建一个最简单无依赖的镜像开始,逐步揭示Docker镜像的构建和Dockerfile的应用。 什么是镜像?可理解镜像(image)为一个可执行程序文件,而容器(container)则是进程(运行态),Kubernetes(即k8s)中的概念POD则相当于进程组。 谨记:容器运行在Linux内核之上,不包含位于内核之上的glibc等库,以及ls等命令。如果容器中的程序依赖glibc等库或者依赖ls等命令,则容器自身应当包含这些设施。另外,容器中的程序等必须和内核兼容,否则将会遇到“FATAL: kernel too old”错误,该错误和库文件ld-linux.so有关。

2019-12-23

rapidjson常见使用示例.pdf

rapidjson相比jsoncpp性能高出太多,使用接口一样的简单的。官方中文帮助文档:http://rapidjson.org/zh-cn/。

2019-12-02

车世界-车的知识大全

如何区别进口,还是合资车?合资车通常在车尾贴有合资厂商的中文名称,如:一汽丰田、长安福特等,进口则无。 什么是GT跑车?拉丁文Gran Turismo,英文翻译为Grand Touring。Grand的意思是大,而Touring的意思是旅行。Grand Touring加在一起,其实是解作大型的旅行车。 在赛车界中,GT就是被指为拥有大马力动力输出,同时有车顶设计的双门双人所乘坐的超级跑车(开蓬跑车不能算为GT赛车),因此GT的中文名称或许应该称之为世界上最顶级的超级跑车。 什么是掀背?顾名思义就是“能掀起来的后背”,而汽车的后背就是后备箱盖,掀背车型就是整个后备箱盖和后车窗玻璃是一体的能够一起打开的车型,多见于两厢车。 什么是SUV?全称是Sport Utility Vehicle,中文意思是运动型多用途汽车。分两类:城市型和越野型。 什么是MPV?全称是Multi-Purpose Vehicles,中文意思是多用途汽车。同小型面包车存在明显的区别,面包车是单厢式结构,即乘客空间和发动机共同在一个框架结构内,发动机被安放在驾驶员座位的后下方。 豪华车通常指D级车,是英文Luxury

2019-11-12

基于zookeeper-3.5.5安装hadoop-3.1.2.pdf

截至本文撰写时(2019/9/17日),Hadoop最高版本为3.2.0,但适用于生产环境的为3.1.2(9月22日发布了可用于生产环境的3.2.1版本),本文只介绍3.1.2版本的分布式安装,不包含单机版安装。适用于Hadoop-3.1.3版本,所操作的环境为CentOS-7.2,对应的Linux内核版本为3.10,不同的Linux可能略有区别。 为提升安装效率,本文的安装过程使用了批量命令工具和批量上传文件工具。批量操作工具的下载和使用,请参见《附2:批量操作工具》。

2019-11-09

在hadoop-3.1.2上安装hbase-2.2.1.pdf

本文将HBase-2.2.1安装在Hadoop-3.1.2上,关于Hadoop-3.1.2的安装,请参见《基于zookeeper-3.5.5安装hadoop-3.1.2》一文。安装环境为64位CentOS-Linux 7.2版本。 本文将在HBase官方提供的quickstart.html文件的指导下进行,在docs/getting_started目录下可找到quickstart.html,或直接浏览在线的:http://hbase.apache.org/book/quickstart.html。 安装使用外置的ZooKeeper,有关ZooKeeper的安装,请参见《基于zookeeper-3.5.5安装hadoop-3.1.2》一文。 关于分布式安装,请浏览:http://hbase.apache.org/book/standalone_dist.html#distributed,关于HBase使用外置的ZooKeeper配置,请浏览:http://hbase.apache.org/book/zookeeper.html。所有在线的文档,均会出现在二进制安装包解压后的docs目录下

2019-11-09

Linux后台开发工具箱-葵花宝典.pdf

本文是个大杂烩,内容为日常点滴的日积月累,持续更新当中,可关注博客(https://blog.csdn.net/Aquester或http://aquester.blog.chinaunix.net),查看最新版本。文中的内容,可帮忙开发提升分析和定位各类问题,比如找出导致IO负载高的进程等,以及一些简单的运维工作等。

2019-11-08

C++之Lambda研究.pdf

  本文代码测试环境为“GCC-9.1.0”,有关编译器的安装请参考《安装GCC-8.3.0及其依赖》,适用于“GCC-9.1.0”。   本文试图揭露Lambda背后一面,以方便更好的理解和掌握Lambda。Lambda代码段实际为一个编译器生成的类的“operator ()”函数,编译器会为每一个Lambda函数生成一个匿名的类(在C++中,类和结构体实际一样,无本质区别,除了默认的访问控制)。   对Lambda的最简单理解,是将它看作一个匿名类(或结构体),实际上也确实如此,编译器把Lambda编译成了匿名类。

2019-05-30

安装GCC-8.3.0及其依赖

  为体验C++17和C++20特性,需安装更新版本的GCC编译器。GCC官网为:https://gcc.gnu.org/,从这里可以下载最新版本的GCC。   C++由Bjarne Stroustrup(被誉为C++之父)于1979年在新泽西州美利山贝尔实验室开始设计开发的,最初命名为带类的C,后来在1983年更名为C++。

2019-05-01

REdis命令处理流程处理分析

  分析版本:REdis-5.0.4。   REdis命令处理流程可分解成三个独立的流程(不包括复制和持久化): 接受连接请求流程; 接收请求数据和处理请求流程,在这个过程并不会发送处理结果给Client,而只是将结果数据写入响应缓冲,将由响应请求流程来发送; 响应请求流程。   上述三个流程均是异步化的,并且没有直接的联系。它们的共同点均是通过REdis的简单事件驱动(AE,A simple event-driven)触发,对于Linux实际是epoll的包装,对于macOS为evport的包装,对于FreeBSD对kqueue的包装,对于其它则是select的包装。

2019-04-01

严格别名规则“-fstrict-aliasing”和“-fno-strict-aliasing”及类型双关

  “-fstrict-aliasing”表示启用严格别名规则,“-fno-strict-aliasing”表示禁用严格别名规则,当gcc的编译优化参数为“-O2”、“-O3”和“-Os”时,默认会打开“-fstrict-aliasing”。 什么是严格别名规则?gcc对严格别名的定义:

2019-01-30

源码解读Linux的limits.conf文件

本文不一定适合比较老版本的Linux,如果只关心使用,请直接看“总结”,本文主要针对CentOS,其它Linux发行版本类似,但细节可能有出入,比如重启服务可能不是用systemctl,而是service等。

2019-01-30

std::string的find问题研究

一次偶然,发现完全同一份代码,在不同机器上find出现两个不同执行结果,本文旨在研究find的“诡异”行为,找出背后的原因。

2018-12-19

x86_64汇编调试程序初步

  掌握此基础,就可以用来修改无源代码的程序等,比如希望jstatd在指定的端口上监听,而不是一个值为0的随机端口号,请参见《防火墙内JVisualVM连接jstatd解决方案》。

2018-12-05

空空如也

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

TA关注的人

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