自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

花括号的博客

为所当为,顺其自然。 欲整其心,先整其行。

  • 博客(58)
  • 资源 (1)
  • 收藏
  • 关注

转载 Pyinstaller 打包python程序为exe文件

采用Pyinstaller将python程序打包成exe可执行程序_肯定有人改了我的代码的博客-CSDN博客将python项目打包成exe与安装包的全过程_python_脚本之家

2023-06-08 15:42:16 119

原创 PYCHARM 编码问题

最近在使用WINDOWS + PYCHARM 环境编写一些脚本时,发现print 会导致编码错误,如以下。 print接收字符串参数,python3字符串采用unicode编码。 从表面上看, 应该是在unicode编码转成GBK编码时候,发生错误。 \ufffd 这个unicode码值,没有对应的GBK编码。表面的意思是明白了,但是为什么会发生这个错误呢。花了一些时间搜索调试去理解这个问题。UnicodeEncodeError: 'gbk' codec can't encode character '\

2022-10-10 09:35:41 4407

原创 Linux 设置查看线程名字

设置线程名字:int CLinuxSysTools::setThreadTitle(const char* threadName){#ifdef LINUX return prctl(PR_SET_NAME, (unsigned long) threadName, 0, 0, 0) ;#else return 0 ;#endif}显示线程mingz

2021-05-28 17:45:51 1922

原创 ubuntu18.04 tcpdump 权限问题

在新装的ubuntu ubuntu18.04上使用tcpdump的命令进行抓包并保存致本地文件,当使用命令sudo tcpdump -i ens160 -w http.pcap 的时候,出现错误:tcpdump: Permission denied本地帐户是有sudo权限的,而且该账户不使用sudo权限能够在该目录创建文件,并没有报错,为何sudo 权限反倒 Permission Denied?自然,这个问题最好只能是tcpdump出了问题,google 了一下,发现这是Ubuntu系统下的权.

2021-03-10 11:50:09 889

原创 部署正向代理squid

之前在服务端一致使用NGINX做反向代理。 方向代理隐藏了backend的WEB服务器, 起到了负载均衡,冗余等作用。对于客户端来说, 隐藏了后面的WEB代理,客户端认为反向代理的IP即是WEB服务器。最近出现了一种情况, 使用反向代理,并不能工作,开始考虑部署一个正向的代理。 VPN Internal_Server1 <-------------------> External_Server2 ...

2021-03-03 18:44:58 473 1

原创 生成RSA秘钥和pkcs1 pkcs8秘钥格式转化

genrsa -out rsa_private_key.pem 2048 # 生成pkcs1格式私钥, 2048位才能够使用rsawithsha-256 进行签名.openssl pkcs8 -topk8 -inform PEM -in private.pem -outform pem -nocrypt -out pkcs8.pemrsa -in rsa_private_key.pem -pubout -out rsa_public_key....

2021-01-05 11:45:53 1691

原创 Thrift 网络传输采用小端还是大端

就目前普遍的情况, 互联网行使用的服务器,主要以X86平台为主。X86平台是采用小端序的。 如果是公司内部使用的系统, 不是对外开发的接口。那么如果网络端如果采用小端序传输, 就不用转换成大端进行传输, 节省了大小端转换的工作, 提高了效率。 这对于网络IO任务较重的系统来说,效率的提升是有一定的帮助。那么Thrift作为一个应用广泛的 RPC 框架, 涉及很多的底层的二进制传输,那么thrift的底层传输,是通过大端还是小端传输? 下来来具体分析一下。file: TProtocol.h#ifd

2020-09-25 11:44:51 448

原创 supervisord 配置群组管理进程

http://supervisord.org/configuration.html#inet-http-server-section-settingshttps://blog.csdn.net/windy135/article/details/90204224https://blog.csdn.net/diyiday/article/details/79817905supervisor 表准...

2020-04-16 11:57:54 416

原创 linux find 命令使用记录解析

1、find . -mtime 0 :查找当前目录下的, 过去24小时内“文件内容”发生改变的文件。 根据手册,2、find . -mtime 1 : 查找当前目录下的, 过去24小时 到过去48小时之内文件发生修改的文件3、find . -mtime -1 : 等同于 find . -mtime 0, 过去24小时内文件内容发生改变的文件4、find . ...

2019-10-22 18:24:57 458

原创 ubuntu14.04 LTS 编译安装Python3.7.1

ubuntu14.04 LTS 编译安装Python3.7.1之前一直用Python2.7开发,最近由于项目需要,需要上python3.7. 生产环境使用ubuntu14.04 或者 ubuntu12.04.本以为很简单的事情,结果整整折腾了一天,前后编译安装了几次,还是决定记录一下踩过的坑。一,查看系统自带的python3 版本ubuntu14.04 LTS系统自带的python3 ...

2019-06-10 09:44:25 2246

原创 ruby编程下的main 对象

ruby的运行一定要知道当前那个对象在充当self的角色。 只要追踪最后一个方法的接收者就可以。任意时候显示当前self对象,即可查看当前的self对象。 p selfRuby程序开始运行的时候,Ruby解释器会创建一个名为main的对象作为当前对象。这个对象有时候被称为顶层上下文(top level context), 这个名字的由来是因为你已经处于调用堆栈的顶层,要么还没有调用任何方法,要...

2019-05-05 18:06:24 905

原创 openssl 命令(3): openssl x509命令详解

openssl x509命令具以下的一些功能,例如输出证书信息,签署证书请求文件、生成自签名证书、转换证书格式等。openssl x509工具不会使用openssl配置文件中的设定,而是完全需要自行设定或者使用该伪命令的默认值,它就像是一个完整的小型的CA工具箱。主要选项:-in filename          : #指定证书输入文件,若同时指定了"-req"选项,则表示输入文件为证书请...

2018-09-14 09:19:23 21299

原创 openssl 命令(2): openssl dgst 命令详解

 open dgst命令的主要功能是,计算信息摘要(哈希), 给文件生成数字签名以及验证数字签名。  信息摘要算法的特点是: 1,输出数据定长, 即任意长度的输入数据,经过摘要算法都会得到订场的输出数据。 2,不可逆行, 由输出数据不能得到输入数据。 3,防碰撞,   对同一摘要算法, 输入数据不同,输出结果不同。 碰撞性有一定的概率,这也是衡量摘要算法的一个维度。 4,均匀分布, 输出...

2018-09-11 16:51:44 5566

原创 openssl 命令(1): openssl req 命令详解

openssl req命令主要的功能有,生成证书请求文件, 查看验证证书请求文件,还有就是生成自签名证书。本文就主要记录一下openssl命令选项的意义,并记录一下简单的命令示例。首先说明下生成证书请求需要什么:申请者需要将自己的信息及其公钥放入证书请求中。但在实际操作过程中,所需要提供的是私钥而非公钥,因为它会自动从私钥中提取公钥。另外,还需要将提供的数据进行数字签名(使用单向加密),...

2018-09-11 11:13:16 21002

原创 Redis 主从复制

Redis 主从复制1, 首先Redis主从复制是异步的, 如何理解这的异步呢。    1) 客户端发送写请求给redis 主服务器    2) redis主服务器 把更新内存数据集    3) redis主服务器 返回结果给客户端    4) redis主服务器 把写命令请求以 redis protocol格式传播给redis从服务器        这里redis主服务器,在根据...

2018-07-23 19:39:31 460

原创 Redis 持久化

作为跟memcached的主要区别之一, Redis支持数据的持久化。 通过数据持久化,Redis可以把数据同步的磁盘, 如果Redis发生异常或是服务器发生故障,可以从磁盘的数据恢复到内存数据。Redis支持两种数据的持久化方式RDB 和 AOF接下来分别从数据格式,工作原理, 优缺点, 配置方式和恢复方式几个方面分别介绍RDB和AOF持久化方式。可以关闭redis的持久化,这时redis像me...

2018-06-29 15:56:41 456 2

原创 my.cnf 权限问题导致mysql 启动失败

今天碰到一个问题,mysql启动一直失败, 而且发现指定的配置文没有生效。后来发现下面一行报警。mysql抱怨my.cnf全世界都可以写。root@test-virtual-machine:/opt/zbox/run/mysql# ./mysqld_safe --defaults-file=/opt/zbox/etc/mysql/my.cnf --user=mysqlWarning: World-...

2018-06-26 16:19:41 5572

转载 vim 保存只读文件的修改

有些时候用vim打开一些系统文件需要进行修改,改完之后发现没有进行sudo操作或者没有切到root权限下,通过网络搜索发现,其实在vim中是可以获取sudo权限并进行保存文件操作的。[html] view plain copy :w ! sudo tee %        命令:w ! {cmd},让vim执行一个外部命令{cmd},然后把当前缓冲区的内容从

2017-09-12 19:30:54 3327

原创 C/C++ 中的位域 bit field

位域是C/C++中常用的数据结构。 在某些情况下合理的使用位域可以节省存储空间,提高运行效率并提高程序的可读行。按照我以往的编程经验来看,通常以下情况下会优先考虑使用位域。1)有很多的状态标记,需要集中存储,比如tcp链接的状态 2)协议栈相关的数据结构,尤其是底层通信协议中很多情况使用一个或者几个bit来表示某种状态,数据长度等等。这时候就会使用到位域。 struct SNF

2017-08-14 19:40:09 3878

原创 redhat6.5 配置yum源, 使用centos的源

在新安装了redhat6.5.安装后,登录系统,使用yum install 安装软件。提示:This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.无法安装。如果redhat 默认自带的 yum 源需要注册,才能更新。如果想不

2017-07-26 12:32:59 581

原创 通过select 和状态EINPROGRESS 实现socket 连接超时判断

调用connect连接一般的超时时间是75s, 但是在程序中我们一般不希望等这么长时间采取采取动作。 可以在调用connect之前设置套接字非阻塞,然后调用connect,此时connect会立刻返回, 如果连接成功则直接返回0(成功), 如果没有连接成功,也会立即返回并且会设置errno为EINPROCESS,这并不是一个致命错误,仅仅是告知你已经在连接了,你只要判断是它就继续执行后面的逻辑就行

2017-07-03 17:20:53 6937

原创 TCP 发送RST分节的情况,关闭时 recv buffer 不为空,则发送RST分节

今天在写一个客户端,连接服务器模拟器的程序的时候碰到了一个小问题。 交互的顺序大概是这样的。整个过程中TCP 客户端和服务端的读写全部使用阻塞模式。 Client                                                         Server1, 客户端发起请求, 并发送请求A                 服务器接受请求后,并没

2017-06-28 19:33:20 749

转载 linux 读写锁的几种实现方式

c++读写锁的实现博客分类:c++ 一、使用互斥锁和条件变量实现读写锁: [cpp] view plaincopyclass readwrite_lock  {  public:      readwrite_lock()          : stat(0)      {      }        void readLock()   

2017-05-31 16:30:33 3516

转载 FVN 哈希算法

参考:http://www.isthe.com/chongo/tech/comp/fnv/关于FNV Hash算法的详情,见参考,下面只记录FNV Hash值的分布情况。FNV hash算法对一个字符串计算,可以得到一个唯一确定的无符号整数值。对于大量的随机输入字符串,比如UUID串,得到的无符号整数值,通过简单的取余运算,基本上是均匀分布的。比如,对100,000个UUI

2017-05-23 16:50:28 2224

转载 非常好的raft协议教程

http://thesecretlivesofdata.com/raft/https://raft.github.io/

2017-05-17 19:16:37 950

原创 zookeeper 分布式锁种类以及优缺点

zookeeper 分布式锁原理:1大家也许都很熟悉了多个线程或者多个进程间的共享锁的实现方式了,但是在分布式场景中我们会面临多个Server之间的锁的问题,实现的复杂度比较高。利用基于google chubby原理开发的开源的zookeeper,可以使得这个问题变得简单很多。下面介绍几种可能的实现方式,并且对比每种实现方式的优缺点。1. 利用节点名称的唯一性来实现共享锁ZooKee

2017-05-17 18:58:24 14023 1

转载 一致性hash介绍和实现

http://www.cnblogs.com/zhangshiwen/p/5787232.html , 看了几篇一致性hash的介绍, 这边理论讲的比较少,但是结合实际例子,容易理解。 mark.一致性hash介绍像Memcache以及其它一些内存K/V数据库一样,Redis本身不提供分布式支持,所以在部署多台Redis服务器时,就需要解决如何把数据分散到各个服务器的问

2017-04-01 09:50:55 2243

原创 ProtoBuf 中的反射机制

我们先看一下JAVA反射的概念:主要是指程序可以访问,检测和修改它本身状态或行为的一种能力,并能根据自身行为的状态和结果,调整或修改应用所描述行为的状态和相关的语义。反射是Java中一种强大的工具,能够使我们很方便的创建灵活的代码,这些代码可以再运行时装配,无需在组件之间进行源代码链接。但是反射使用不当会成本很高!说的很学术,看的也有点晕。 说白了就是,在运行时根据类的名字(字符串

2017-03-17 17:43:14 3367

转载 Python 中的var_dump, 对象打印

var_dump 是PHP中的调试函数,可以用var_dump打印所有的对象。查看对象内部的数据结构,对调试非常有用。python 中可以使用print str(object)这种方式打印对象内容,但是前提是类已经定义了__str__函数。如果没有定义那就没办法了。今天找到两种替代方案标记一下。1. from pprint import pprintpprint(d

2017-03-10 18:14:10 4983

转载 linux 正则表达式

分类: LINUX最近有这么个需求,c搞搞正则,毕竟Regular Expression so强大^_^标准的C和C++都不支持正则表达式,但有一些函数库可以辅助C/C++程序员完成这一功能,其中最著名的当数Philip Hazel的Perl-Compatible Regular Expression库,许多Linux发行版本都带有这个函数库。编译正则表达式为了提高

2017-03-01 13:14:52 560

转载 Linux网络编程socket错误分析

socket错误码: EINTR: 4阻塞的操作被取消阻塞的调用打断。如设置了发送接收超时,就会遇到这种错误。只能针对阻塞模式的socket。读,写阻塞的socket时,-1返回,错误号为INTR。另外,如果出现EINTR即errno为4,错误描述Interrupted system call,操作也应该继续。如果recv的返回值为0,那表明连接已经断开,接收操作也应该结束。

2017-02-20 18:32:27 501

转载 splice函数,高效的零拷贝

版权声明:本文为博主原创文章,未经博主允许不得转载。最近在看《linux高性能服务器编程》,在此做个日记,以激励自己,同时分享于有需要的朋友。1. splice函数[cpp] view plain copy #include   ssize_t splice(int fd_in, loff_t *off_in, int fd_out, lof

2017-02-16 11:46:19 1380

原创 hbase thrift2 server , Bad version in readMessageBegin

hbase thrift2 server 报错, ‘Badversion in readMessageBegin’, 调查发现, 在客户端使用的是framedtransport, 结果在服务器端没有指定使用framed transport. 导致包格式解析错误。关闭hbase thrift2 server, 加上-f 参数,重启。 问题解决。bash /home/hadoop/hbas

2016-12-02 11:59:11 5254

原创 hbase 数据export/import (No enum constant org.apache.hadoop.mapreduce.JobCounter.MB_MILLIS_MAPS)

hadoop2.5.2 + hbase 0.98的环境下, 在使用hbase 导出数据时候遇到了一个问题。在使用hbase提供的一些基于mapreduce job的工具的时候。都出报出一些问题。比如下面两个工具 ./hbase  org.apache.hadoop.hbase.mapreduce.Driver rowcounter bs2_file       //mapreduc

2016-11-07 17:31:49 3104

转载 用户态spinlock

spin用户态加锁源码分析源码分析版本:glic-2.9spin_lock加锁pthread_spin_lock:intpthread_spin_lock (lock) pthread_spinlock_t *lock;{ asm ("\n" "1:\t" LOCK_PREFIX "decl %0\n\t" //锁总线,开始加锁,在%0

2016-08-31 18:03:47 2116

转载 spinlock与linux内核调度的关系

spinlock与linux内核调度的关系关于自旋锁用法介绍的文章,已经有很多,但有些细节的地方点的还不够透。我这里就把我个人认为大家容易有疑问的地方拿出来讨论一下。一、自旋锁(spinlock)简介自旋锁在同一时刻只能被最多一个内核任务持有,所以一个时刻只有一个线程允许存在于临界区中。这点可以应用在多处理机器、或运行在单处理器上的抢占式内核中需要的锁定服务。二、信

2016-08-31 18:02:12 566

原创 Golang的包依赖管理 (package dependency manager)

Golang 的开发对gopath都不陌生, 它是进行go 项目开发的’workspace’。 go项目的源码,可执行文件,以及依赖库的存放都是通过gopath的相关目录结构进行组织的。而且GO原生的依赖管理也是使用gopath进行组织。 如当前项目中import “github.com/helloworld”, 则在使用goget编译当前项目时,”helloworkd”的源码会被download

2016-07-06 19:22:47 13207

转载 Linux 日志管理 Logrotate

被遗忘的Logrotate发表于2013-04-21我发现很多人的服务器上都运行着一些诸如每天切分Nginx日志之类的CRON脚本,大家似乎遗忘了Logrotate,争相发明自己的轮子,这真是让人沮丧啊!就好比明明身边躺着现成的性感美女,大家却忙着自娱自乐,罪过!Logrotate的介绍显而易见,Logrotate是基于CRON来运行的,其脚本是「/et

2016-05-16 09:48:22 3515

原创 golang 中的内嵌(embeded)

内嵌与聚合:  外部类型只包含了内部类型的类型名, 而没有field 名, 则是内嵌。   外部类型包含了内部类型的类型名,还有filed名,则是聚合。聚合的在JAVA和C++都是常见的方式。而内嵌则是GO 的特有方式。 type Base struct {  basename string} type Derive struct {           ---内嵌  

2016-04-27 17:32:24 1977

原创 Concurrency Is Not Parallelism

Rob Pike - ‘Concurrency Is Not Parallelism’Concurrency is dealing lots of things at onceParallelism is doing lots of things at onceNot the same, but relatedOne is about structure a

2016-03-17 15:19:08 1630

空空如也

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

TA关注的人

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