quinn.hong

do it, if you can or want
  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

2015年2月11日

摘要: 分布式发布订阅消息系统 Kafka 架构设计转自:http://www.oschina.net/translate/kafka-design我们为什么要搭建该系统Kafka是一个消息系统,原本开发自LinkedIn,用作LinkedIn的活动流(activity stream)和运营数据处理管道(p... 阅读全文

posted @ 2015-02-11 10:23 quinn.hong 阅读(265) 评论(0) 推荐(0) 编辑

摘要: KAFKA分布式消息系统转自:http://blog.chinaunix.net/uid-20196318-id-2420884.htmlKafka[1]是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击... 阅读全文

posted @ 2015-02-11 10:21 quinn.hong 阅读(256) 评论(0) 推荐(0) 编辑

2015年2月2日

摘要: 进行网络通信时,我们经常纠结于到底使用什么样的协议传输数据,下面我谈谈应该怎么选择一种合理的协议格式。网络协议标准定义是这样的: 为计算机网络中进行数据交换而建立的规则、标准或约定的集合。 网络协议至少包括三要素: 语法:语法是用户数据与控制信息的结构与格式,以及数据出现的顺序。 语义:解释... 阅读全文

posted @ 2015-02-02 17:13 quinn.hong 阅读(9272) 评论(7) 推荐(2) 编辑

2015年1月28日

摘要: 前言前一篇我们说到了如何利用应用程序域的相关技术实现热升级的目的。下面我来介绍另一种场景,如下图所示:主程序仅提供作为MdiContainer的窗体框架,所有的功能都以单独的子窗体形式加载。每个子窗体对应的是一个单独的功能模块(dll文件)。比如管理公司结构的时候,员工管理模块和部门管理模块就分别以... 阅读全文

posted @ 2015-01-28 16:37 quinn.hong 阅读(1826) 评论(12) 推荐(6) 编辑

2015年1月27日

摘要: 前言所谓热升级,实际上就是在程序/服务不停止的前提下,通过增加、修改、删除相关功能模块,达到功能升级的目的。为什么要热升级举个例子,我们可能都有这样一个经历,正在操作一个软件,可能是个重要的工作,这个时候软件发现有新的功能更新,需要升级程序,弹出一个看似很人性化的提示:请重新启动程序以完成升级!但是... 阅读全文

posted @ 2015-01-27 14:50 quinn.hong 阅读(2160) 评论(3) 推荐(7) 编辑

2015年1月21日

摘要: Socket编程中,如何高效地接收和处理数据,这里介绍一个简单的编程模型。Socket索引 - SocketId在给出编程模型之前,先提这样一个问题,程序中如何描述Socket连接?为什么这么问呢,大家可以翻看我之前在项目总结(一)中给出的一个简单的基本架构,其中的网络层用来管理Socket的连接,... 阅读全文

posted @ 2015-01-21 09:22 quinn.hong 阅读(2830) 评论(4) 推荐(4) 编辑

2015年1月19日

摘要: 前言今天查看一个同事的代码,发现代码中多处地方使用了GC.Collect()方法,我问他为什么这么做,他说感觉程序中定义了好多变量,怕GC回收不及时,用GC.Collect()可以手动掌控GC进行垃圾回收。先不说他对GC的垃圾回收机制还不了解,就是调用GC.Collect()后GC真的会不会回收这个... 阅读全文

posted @ 2015-01-19 18:17 quinn.hong 阅读(3982) 评论(51) 推荐(4) 编辑

2015年1月15日

摘要: 1. 前言多线程编程的时候,我们不光希望两个线程间能够实现逻辑上的先后顺序运行,还希望两个不相关的线程在访问同一个资源的时候,同时只能有一个线程对资源进行操作,否则就会出现无法预知的结果。比如,有两个线程需要对同一个计数器加1,我们希望结果是计数器最终加2,但可能同时获取到了这个计数器,第一个线程对... 阅读全文

posted @ 2015-01-15 16:24 quinn.hong 阅读(680) 评论(2) 推荐(0) 编辑

2015年1月12日

摘要: 前言在我们编写多线程程序时,会遇到这样一个问题:在一个线程处理的过程中,需要等待另一个线程处理的结果才能继续往下执行。比如:有两个线程,一个用来接收Socket数据,另一个用来处理Socket数据,而处理Socket数据的那个线程需要在接收到Socket数据后才能处理运行,就要等待接收线程接收数据。... 阅读全文

posted @ 2015-01-12 19:49 quinn.hong 阅读(581) 评论(0) 推荐(0) 编辑

2015年1月9日

摘要: 项目使用Socket与设备通信,可能同时会有成百上千个连接传送数据,当然不可能针对每个连接都要单独建立一个线程在后台接收数据,很明显的方式就是异步。1. 怎么理解异步这里,我举个不太恰当的例子,打电话和写信。打电话的时候,理想情况下,我们希望我问个问题,对方立马就能答复的,如果对方憋了半天,啥话也不... 阅读全文

posted @ 2015-01-09 17:08 quinn.hong 阅读(578) 评论(0) 推荐(0) 编辑

2015年1月8日

摘要: 看着一些比较优秀的员工离开公司,基于公司管理思想和公司管理人员有些分歧,在这想把自己的一些想法写下来职责在公司管理这一块上,我非常强调职责明确。职责就是员工的本职工作,在员工应聘的时候就应该明确,你到公司是要做什么,基于这个职责应该取得什么样的成果,获得什么奖励。任何一个来应聘的员工也都会根据这个职... 阅读全文

posted @ 2015-01-08 10:18 quinn.hong 阅读(347) 评论(2) 推荐(0) 编辑

2015年1月5日

摘要: 前言最近,我们公司做的一个停车检测系统在我国一个大城市正式大规模商用。作为该系统后台服务的开发人员,由最初的两个人,到现在只剩下我一个人,回头看下这几年走过的路,感慨万千。还好,虽然当初设计时虽然架构不是很好,但因为重点关注了性能,所以现在服务运行良好,这也让我有时间好好回顾这几年的开发历程。这个系... 阅读全文

posted @ 2015-01-05 12:04 quinn.hong 阅读(336) 评论(0) 推荐(0) 编辑

2015年1月1日

摘要: 上一节介绍了OpenSSL的目录结构,本节介绍一下SSL证书的制作。OpenSSL安装后建议把其中的bin目录添加到系统环境变量中,方便以后操作。建立一个新的目录SSL专门用来制作证书。建立证书目录我们使用默认配置openssl.cfg,那么就要建立配置中要求的目录demoCA,使用脚本CA.plC... 阅读全文

posted @ 2015-01-01 10:19 quinn.hong 阅读(991) 评论(0) 推荐(0) 编辑

2014年12月30日

摘要: 1. 下载安装OpenSSL2. 根据需要下载安装Visual C++ Redistributable3. 安装完成OpenSSL后,目录结构如下所示其中,bin文件夹下是OpenSSL主程序的位置,可以把bin文件夹路径设为系统环境变量,方便cmd直接操作。bin文件夹目录结构如下:关注三个文件,... 阅读全文

posted @ 2014-12-30 17:44 quinn.hong 阅读(10128) 评论(0) 推荐(0) 编辑