自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

zxx的专栏

Come on! Let's Hello World! !

原创 《RocketMq》四、Client Producer/Consumer总览

一、总览Rocketmq的客户端包括Producer和Consumer,这2个部分。虽然两个部分的细节不同,但在发送消息,维持broker/namesrv连接,等方面有着相同的处理方式,可以对二者统一进行管理。 让我们自己先思考下,一个client需要完成哪些内容:获取namesrv的地址与namesrv交互,获取broker的地址以及TopicRouteData管理进程中所有的p...

2018-03-01 16:02:33 577

原创 记一次tomcat报错Too many open files的排查历程

本文的技术细节并不具通用性,但是排查的思路过程值得自己mark下,上次遇到这样的刺激线上故障已经是去年3月了~~~这次排查花了3个小时,还算快啦,也算最近的一个小彩蛋。昨天在公司coding,测试组的同事突然来找我,告知预发环境的系统挂了,请求都是异常,打开业务日志和tomcat的日志排查,满屏的Too many open files,果然 lsof -p pid 预发机器,已经打满到了655...

2018-01-09 13:37:37 4359

原创 验证码识别

验证码识别是3年前的一个小愿望了(当时是做一个自动回帖器,抽奖iphone),但自己这两年主要在做分布式架构,今年终于抽出了空,又战胜了对数学的恐惧,在coursera上学习了吴恩达的机器学习和深度学习,验证码识别也算是对部分课程的实践,下面就来整理一下这次识别的过程。验证码识别主流程识别细节1 目标检测检测出验证码图片中的字符边距11 labelImg使用12 darknet使用

2017-12-31 18:54:51 6909

原创 【高并发编程】再谈同步、异步、阻塞、非阻塞

同步、异步、阻塞、非阻塞的概念一直是计算机学科中很重要的概念,而这种细微的差别常常被大家混淆,我自己在过一段时间后也需要复习。今天再次翻出这个概念,仍然觉得不够清晰,今天再次深入了解了这四大天王。以前转过一篇博客:但是始终太抽象,每次都要重头看,其次,这篇文章仍然没有很清晰的表达四大天王的特色,因此这里给出自己的分析:一、一个有问题,但有趣的例子在网上看到一个有趣的例子,虽

2016-04-24 16:13:35 13265 11

原创 《RocketMq》七、Broker中心节点

broker的位置和结构图:由于之前已经把存储,网络分解出来进行了详细的分析,因此Broker部分变得较简单,这里主要分为以下几个部分来说:一、Broker与NameSrv交互Broker会不断发送register信息给NameSrv,将自身的clusterName,brokerName,topic信息发送到Namesrv;而Consumer和Producer则会通过Namesrv获取信息,这里最...

2015-12-29 17:33:53 3528

原创 《RocketMq》六、Client-Consumer消费者详解

Consumer-集群Push模式-简介:0、背景介绍         Consumer主要用于向Broker请求Producer产生的消息,对其进行消费;对于RocketMQ,我们一定很好奇,如何实现分布式的Consumer消费,如何保证Consumer的顺序性,不重复性呢? 存在的问题:1. 如果在集群模式中新增/减少 组(group) 消费者,可能会导致重复消费;原因是:假设新增消费者前,C...

2015-12-23 23:18:05 36804

原创 《RocketMq》五、Client-Producer生产者详解

Producer的用途大家都很清楚,主要就是生产消息,那么分布式模式下与单队列模式不一样,如何能够充分利用分布式的优势,将生产的消息分布到不同的队列下呢?Rocket-MQ提供了3种不同模式的Producer:1. NormalProducer2. OrderProducer3. TransactionProducer一、数据结构1. TopicPublicInfo:仅仅是Producer使用,保...

2015-12-22 12:53:56 8383

原创 《RocketMq》三、NameServer

RocketMQ-nameSrv用于管理所有broker的信息,以便于Producer和Consumer能够获取到正确的Broker信息,进行业务处理;可以看到NameSrv的主要管理内容如下:1. 接收Broker的注册,注销请求;2. Producer获取topic下的所有BrokerQueue,put消息3. Consumer获取topic下所有的BrokerQueue,get消息所以可以看...

2015-12-18 17:41:46 8248 2

原创 《RocketMq》二、存储篇

RocketMQ的数据存储部分也是一个重头戏,他主要用于存储Producer生产的消息,Consume的逻辑队列,索引,以及主从复制,这里也是一个非常好的范例,我们可以看到如何处理数据存储,如何提高IO效率。东西太多信息量略大有点乱,之后再整理吧......一、总体结构CommitLog:实时执行,真正的I/O写入磁盘操作, 要求是实时的(当然,有时候只是写入内存,定时刷盘);ConsumeQue...

2015-12-16 21:31:55 19873 3

原创 《RocketMq》一、网络传输篇

你是否想知道一个分布式系统的网络传输解决方案,那你可以学习下RocketMQ的网络传输原理,从RocketMQ的Remoting网络处理部分,可以学习到如何进行高效的网络传输,这些思想可以应用到不同的业务中。 一、要解决的问题         其实大部分应用的网络处理都要解决如下图所示的问题:那么就以RocketMQ的源码入手,看看它是如何架构如上的结构的。 二、RocketMQ-remoting...

2015-12-12 22:38:51 10402 4

转载 while循环重定向只能读取第一行

今天碰到一个ssh的问题,google之。原因如下:需要读取一个文本,次文本每一行包含一个IP在while循环中使用ssh,但ssh完第一行后就退出了,如何避免自动读取一行就跳出while循环,此文将详细解释其原因。      最近在写一个自动更新的shell,可是发现如果在使用while循环从一个文件中读取ip地址,然后访问就只能读取第一行纪录。代码如下: 

2015-06-02 17:41:26 4121

转载 《操作系统》操作系统中锁的实现原理

转自:http://blog.sina.com.cn/s/blog_75f0b54d0100r7af.html在多线程编程中,为了保证数据操作的一致性,操作系统引入了锁机制,用于保证临界区代码的安全。通过锁机制,能够保证在多核多线程环境中,在某一个时间点上,只能有一个线程进入临界区代码,从而保证临界区中操作数据的一致性。所谓的锁,说白了就是内存中的一个整型数,拥有两种状态:空闲

2015-05-30 12:19:00 2518

翻译 《Arduino》SPI模块官方手册

Serial Peripheral Interface (SPI)是一种同步串行数据传输协议,用于近距离时,微控制器(Microcontrollers),如Arduino,与其他外围设备的快速通信。他也可以用于2个微控制器的通讯。

2015-01-17 16:39:14 27262

原创 <Hello Arduino>继电器的原理和使用

一 、继电器原理继电器是一种电子控制器件,它具有控制系统(又称输入回路)和被控制系统(又称输出回路),通常应用于自动控制电路中,它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。 电磁式继电器一般由铁芯、线圈、衔铁、触点簧片等组成的。只要在线圈两端加上一定的电压,线圈中就会流过一定的电流,从而产生电磁效应,衔铁就会在电磁力

2014-12-20 18:16:14 10209

转载 <Excel>怎么把所有文本都加上小三角?

选中该列,数据-分列-下一步-下一步-文本-完成。参考:http://zhidao.baidu.com/question/107226499.html?qbl=relate_question_0&word=excel%20%CE%AA%CA%B2%C3%B4%CB%AB%BB%F7%20%B2%C5%D3%D0%C8%FD%BD%C7

2014-12-18 11:24:44 2196

原创 <JAVA>为什么一个java文件只能有一个public类

以后,如果有人问你为什么一个java文件只能有一个public类呢?答:很简单啊,因为public类的名字要和java文件名相同,文件名只有一个,当然只能有一个public类!问:good!那为神马文件名必须要和public类名字相同呢?不知道了吧?答:这个问题是这样的,因为jvm虚拟机为了提高查找类的速度,使用import语句导入的时候,只会导入对应空间的文件名所对应的class文件

2014-12-13 12:49:32 4721

原创 《Hello Arduino》数电I/O

Hello Arduino这是一篇小白Arduino文章,记录一些常用的Arduino函数和应用场景。Arduino API主页:http://arduino.cc/en/Reference/HomePage一:数电I/O1.1 pinMode()描述:设置pin引脚为输入或者输出模式,也就是Arduino上面的那些引脚原型:pinMod

2014-11-29 17:34:16 1087

原创 <C语言 入栈顺序>为什么函数入栈顺序从右往左?

最近在阅读《程序员的自我修养》,看到10.2节,又想起以前的入栈顺序,对此又深挖le

2014-10-26 18:10:31 4348

原创 【oracle】oralce 恢复表数据

今天在做项目的时候,改错了oracle数据库表里面的一个字段,真的吓到了一下,要是恢复不过来就悲剧了,肯定要被批。。。好在成功的恢复了回来,下面给出恢复方法。情景:在Linux下,假设有一个表TABLE_A,里面有一个字段name,我们把name字段修改了,却发现改错了,想恢复到30分钟前的样子。第一步:执行:CREATE TABLE QUICK_TABLE A

2014-03-28 16:44:27 1167 1

原创 [升级凯立德地图] 升级凯立德地图 (车载 导航仪)

序最近帮老爸升级车上的车载凯立德地图,导航仪是飞歌的,在网上看到的帖子都比较零散,下面总结一下,我将把用到的工具和升级过程详细描述,希望能帮助有需要的朋友!硬件工具:1.数据卡,将导航仪上的数据卡取下来2.读卡器,能将数据卡插到电脑上更新软件工具:1.Arm4:用于获取2.gpsuu_diy3.Wince6.0模拟器4.新的地图和主程序

2014-02-06 16:16:59 8879

原创 【Linux】limits.conf 不重启就生效或者不生效的原因

前阵子,我要用到使LInux的文件打开数为65534个,而且需要永久生效,于是将配置写到了:vim /etc/security/limits.conf* soft nofile 65534* hard nofile 65534重新登录后limit.conf的配置都不生效,后来发现,ubuntu有个bug,root用户必须注明用户root soft nofile 65534

2013-12-05 09:28:31 74377 6

转载 【Linux网络编程】同步,异步,阻塞,非阻塞

同步(synchronous) IO和异步(asynchronous) IO,阻塞(blocking) IO和非阻塞(non-blocking)IO分别是什么,到底有什么区别?这个问题其实不同的人给出的答案都可能不同,比如wiki,就认为asynchronous IO和non-blocking IO是一个东西。这其实是因为不同的人的知识背景不同,并且在讨论这个问题的时候上下文(context)也不

2013-09-27 10:40:05 2238 1

原创 linux C语言 内存申请 堆 栈 大小限制

C语言申请内存时堆栈大小限制一直都有一个疑问,一个进程可以使用多大的内存空间,swap交换空间以及物理内存的大小,ulimit的stack size对进程的内存使用有怎样的限制?今天特亲自动手实验了一次,总结如下:开辟一片内存空间有2种方式,第一种:int a[];第二种malloc,那么在linux下,这两种方式可以开辟多大的内存空间呢?下面依次进行实验:第一种方式:使用mall

2013-08-19 15:17:38 13867 1

原创 Linux中的动态链接库使用记录

1.首先创建了一个文件shareTest.c#include void Say(){ printf("Say Hello\n");}void Look(){ printf("Look at me\n");}void Hear(){ printf("Hear a song\n");}2.编译为so文件gcc -sha

2013-08-16 17:08:13 1208 1

原创 【Linux 环境变量】设置环境变量,用于方便进入工作目录

在工作中,常常需要进入一个很长的工作目录,每次都输入实在好麻烦,用下面方法可以设置一个变量,每次直接cd进入变量即可。第一种:临时本次开机或者远程登录使用直接在终端输入:WORKPATH=/root/aaa/bbb/cccexport WORKPATH#上述的/root/aaa/bbb/ccc 就是你的工作路径第二种:每次开机无需重新设置,一劳永逸的方法在root权限下,编

2013-07-11 14:40:31 3574

转载 【mysql】设置mysql默认密码

转自http://shinehuayan76.blog.163.com/blog/static/58214422200910114354639/本人是个Linux菜鸟,第一次在CentOS系统中安装MySQL,出现了不能设置root密码问题(在这windows几乎不存在的问题),而且用show databases命令时,有时候没有mysql数据库,当时不知道什么原因,总之是把MySQL反复

2013-07-10 14:26:51 4956

原创 【Linux检测竞争】检测竞争错误

读自深入理解计算机系统第八章8.5在系统中fork出子进程时,父进程子进程之间可能会存在竞争,可以使用如下方法做一个小小的检测:写一个Fork包装函数,然后生成一个随机数,可能先让父进程睡一会,或者先让子进程睡一会~看看结果是不是都是正确的~

2013-07-03 16:06:45 1066

原创 【自动回帖器/原理】自动回帖器的原理与实现(二)代码篇

请先阅读 自动回帖器的原理与实现(一)原理篇一共有9个源文件,分别是:autoProcess.cppautoReply.cpp/hbaseTcp.cpp/hencoding.cpp/hmycompress.cpp/h使用时,只需要修改autoProcess.cpp中的homePageLink:主页名字,如www.url.cnmessage:回复帖

2013-07-02 16:26:27 4238

原创 【自动回帖器/原理】自动回帖器的原理与实现(一)原理篇

自动回帖技术前言:2012.9月,由于某些原因,我开始编写一个基于Discuz论坛的自动回帖器,这次的小工作让我对Cookie有了进一步的认识,充分认识到,利用它实在可以做太多的事了~啊哈哈~话不多说~进入主题吧!1.   自动登录要实现自动回帖,第一个要解决的问题是自动登陆,不知道你上网的时候有没有想过,为什么每个网站可以记录我们的账户信息,知道你是谁?你在做什么操作?其实一切的一切

2013-07-02 15:48:53 7635

转载 【C语言】位域的定义和使用

位域的定义和使用 C Bit Fields转自http://www.360doc.com/content/09/0318/16/113975_2846158.shtml位域的定义和使用   有些信息在存储时,并不需要占用一个完整的字节, 而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1 两种状态, 用一位二进位即可。为了节省存储空间,并使处理简便,C语

2013-07-02 13:45:00 28009 1

转载 【Linux之inode】Linux中磁盘空间足够,却不能创建新文件的原因

根据需要来调整inode的节点数量在Linux操作系统中,其文件结构跟微软操作系统有比较大的差异。在Linux操作系统中,采用的是一种叫做inode的节点结构。在这个inode节点中,记录了文件的类型、大小、权限、所有者、文件连接的数目、创建时间与更新时间等重要的信息,还有一个比较重要的内容就是指向数据块的指针。一般情况下,如果只是将这个Linux系统当作客户端或者普通的服务器来处理的

2013-05-16 14:20:10 3354

原创 【shell】shell查找指定路径下包含特定关键字的文件,并输出关键字所在文件及所在行

#!/bin/bash#作者:zxx #日期:2013.04.25#功能描述:在FIND_PATH路径下查找包含关键字SOURCE的文件,并列出所在行,SOURCE由用>户输入,写的目的是为了读源码方便#查找文件都在这个路径下面 FIND_PATH="/home/zxx/毕设/毕业设计/BT源码/transmission-2.42/transmission-2.42/libtrans

2013-04-25 20:37:30 5768

原创 自我介绍

我觉得这样的距离很好就隔着一片海互不打扰我是一座离岛人海边的离岛世界和我礼貌微笑不担心我这岛居民太少人口的密度就这样刚好我是座小小岛装不下大烦恼观光客们下回请早怎么会这样 我也不知道谢谢谁为我祈祷 可是我并不困扰谁能够决定谁 怎样最好我疏离得很舒服 不想治疗这种距离对大家都好就隔着一片海互相远眺我是一座离岛人海边的离岛世界和我都不无聊怎么会这样 我也不知道

2013-04-05 16:12:52 1220

原创

一直坚信的东西~瞬间就崩塌!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!没关系~!@!!!!yeah~

2013-03-28 21:12:46 778

原创 乱发一下~

虽然最近心情都比较抑郁~但是今天早上竟然RP大爆发~让我找到了一个隐藏了一年的大BUG!!真是运气好~来纪念一下吧~纪念品~解high人~成全~勇气~简简单单~人生海海~.....balalal...

2013-03-11 14:18:59 889

原创 【vim】让vim不在末尾添加0a,换行

vim原来每次都会在文件末尾添加0a换行~你是否也觉得这个东东乱加东西很贱?~恩~我也是这么觉得的~害我调个0a调了一个晚上~在.vimrc里面加入::set noendofline binary

2013-03-07 21:57:32 2491

转载 隐蔽的内存泄漏——pthread_create 属性设置不当导致

遇到了同样的问题。。最近解决了一个隐蔽的内存泄漏问题,我们的进程是HA模式,用户不停的切换,会导致内存不停的增长,切换一次,再切回来内存便增加8M左右。原因就是是pthread_create后的僵死线程没有释放导致的内存持续增长。pthread_create (&thread, NULL, &thread_function, NULL); 就这么写了,参数2没有设置线程

2013-02-14 00:34:01 1329

翻译 【P2P网络】Extension for Peers to Send Metadata Files翻译稿

Extension for Peers to Send Metadata Files这个扩展的目的是为了在最初没有.torrent文件的情况仍然能够加入swarm并能够完成下载。这个扩展能让客户端从peer哪里下载metadata。这让支持magnet link成为了可能,magnet link是一个web页上的链接,仅仅包含了足够加入swarm的足够信息(info hash)。

2013-01-28 16:24:49 16025

转载 【P2P网络】BitTorrent协议中文版4

Peer wire protocol (TCP)概述peer(端)协议使片(piece)的交换变得容易,片的描述请参考元信息文件。注意:原来的规范在描述peer协议时,也使用术语piece“(片)”,但是这不同于元信息文件里面的术语“piece(片)”,由于这个原因,在本规范中,将使用术语“块(block)”来描述peers(端)之间交换的数据。一个客户端(client)必须维持其

2013-01-26 12:25:43 3921

转载 【P2P网络】BitTorrent协议中文版3

Tracker HTTP/HTTPS ProtocolTracker是一个响应HTTP GET请求的HTTP/HTTPS服务。这个请求包含来自客户端的度量信息,这些信息能够帮助Tracker全面地统计torrent。Tracker的响应包含一个peers列表,这个列表能够帮助客户端加入到torrent中。Base URL由元数据文件(即以.torrent为后缀的文件)中定义的announc

2013-01-26 12:24:12 1718

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