- 博客(44)
- 资源 (1)
- 收藏
- 关注
原创 storm基础框架分析
背景前期收到的问题: 1、在Topology中我们可以指定spout、bolt的并行度,在提交Topology时Storm如何将spout、bolt自动发布到每个服务器并且控制服务的CPU、磁盘等资源的? 2、Storm处理消息时会根据Topology生成一棵消息树,Storm如何跟踪每个消息、如何保证消息不丢失以及如何实现重发消息机制?上篇:storm是如何保证at least onc
2015-07-22 23:05:20 2048 2
原创 学习笔记:The Log(我所读过的最好的一篇分布式技术文章)
这是一篇学习笔记。 学习的材料来自于我读过的最好的一篇分布式技术文章,没有之一。
2015-07-16 12:25:55 3552 7
原创 【MyEclipse 2015】 逆向破解实录系列【3】(纯研究)
本篇,我们追出My Eclipse 2015的注册码和激活码,并且搞定它的rsa加密,以”优雅“地成为其”合法“授权用户.
2015-06-30 13:18:09 1157
原创 逆向怎么玩 - 动态调试jetBrains CLion实录
上篇我们通过静态分析,拿到了注册码的算法。本篇,我们更进一步,开启无源动态调试之旅。想了解逆向工程的骚年,come on!
2015-06-24 21:35:56 4162
原创 你的C/C++程序为什么无法运行?揭秘Segmentation fault (1)
什么让你对C/C++如此恐惧?晦涩的语法?还是优秀IDE的欠缺? 我想那都不是问题,最多的可能是一个类似这样的错误: 段错误(Segmentation fault)这是新手无法避免的错误,也是老手极力回避也经常遇到的错误。 本篇,试图简略地剖析一段会引发这个错误的程序,带来一些启发。先看两份代码,一份是错误的.错误代码#include "string.h"#include <stdlib.h
2015-04-30 07:27:54 18590 9
原创 【.Net实现】TCP级别的反向代理、Socket 连接池和数据包解析器
背景最近特别忙,博客久未更新。 回顾了一下2010-2011年的一些.Net项目代码,觉得对初学者可能有一定参考作用,这里share一下。 主要包括:TCP反向代理Socket连接池数据包解析反向代理一般的Web反向代理大家很熟悉了,主要是通过在客户端和服务端之间架设一层代理服务器,转发客户端的请求至服务端或数据库,并将结果回复给客户端。 其特点主要有:1、缓存一些数据库I/O过重、却
2015-09-04 19:39:55 3133
原创 【JVM】模板解释器--如何根据字节码生成汇编码?
针对JVM的模板解释器,探讨: 如何根据opcode和寻址模式,将bytecode生成汇编码。
2015-08-03 05:08:34 1957
原创 CLion注册码算法逆向分析实录(纯研究)
打算学习cocos2dx,奈何vim只会ggvG,被jetBrains惯坏了,找到了CLion,试了下,果然神器,我等菜鸟正好可以拿来愉快地学习书写c++了。
2015-06-24 13:03:20 4013 7
原创 新手学cocos2dx,centos7下的安装过程
背景打算学写游戏,新手向,当然从cocos2d-x开始. 看了cocos的文档,安装是针对ubuntu的.这里记录下centos7上安装、编译、运行测试的过程。 如果你已经有ubuntu,不推荐看此文.
2015-06-20 19:30:49 1849 1
原创 【HBase】how many zookeepers should i run?
How many ZooKeepers should I run?You can run a ZooKeeper ensemble that comprises 1 node only but in production it is recommended that you run a ZooKeeper ensemble of 3, 5 or 7 machines; the more member
2015-05-17 23:51:36 818
原创 老菜鸟致青春,程序员应该选择java 还是 c#-
致青春还记得自己那年考清华失败,被调剂到中科大软院,当初有几个方向可以选,软件设计、嵌入式、信息安全等等,毫不犹豫地选择了信息安全。为什么选信息安全?这四个字听起来多牛多有感觉,我本科是学物理的,记得做一个光学实验的时候,一个老师看我做的结果,说,学物理不是什么人都可以的,这个是需要一点智商的。好吧,当初其实并非对我一个人所说,但我确实感觉到受到了鄙视,同时,我没有任何在物理上的精湛技艺可以反击我的
2015-05-10 06:39:04 9973 82
原创 【Hadoop】HDFS - 创建文件流程详解
1.本文目的通过解析客户端创建文件流程,认知hadoop的HDFS系统的一些功能和概念。2.主要概念2.1 NameNode(NN):HDFS系统核心组件,负责分布式文件系统的名字空间管理、INode表的文件映射管理。如果不开启备份/故障恢复/Feneration模式,一般的HDFS系统就只有1个NameNode,当然这样是存在单点故障隐患的。NN管理两个核心的表:文件到块序列的映射、块到机器序列的
2015-05-08 03:07:51 3715
原创 【Hadoop】RpcServer 线程模型
RpcServer 线程模型NameNode启动过程:线程模型Listener 1个:监听并接受来自客户端的连接.将新建连接放入pendingConnections.清理空闲连接.唤醒Reader.Reader N个 : 从pendingConnections中获取连接,读取数据,从RpcRequest构造Call,并放入callQueue.Handler N 个:从callQueue
2015-05-07 01:01:37 1024
原创 【高级java程序员应该知道的小知识】weak reference
本篇态度: simple & stupidweak reference Weak reference objects, which do not prevent their referents from being made finalizable, finalized, and then reclaimed. Weak references are most often used to imp
2015-05-06 05:16:52 1110
原创 【高级java程序员应该知道的小知识】 WeakHashMap
本篇宗旨:simple & stupidWeakHashMap (弱引用的哈希表) Hash table based implementation of the Map interface, with weak keys. An entry in a WeakHashMap will automatically be removed when its key is no longer in or
2015-05-06 04:56:15 1039
原创 【高级java程序员应该知道的小知识】 volatile
本篇态度:stupid&simplevolatile用法:private volatile Service.STATE state;优点:比其他的锁机制(synchronized、lock)简单;不阻塞;对volatile修饰的变量允许并发读.谨记: Java Memory Model ensures that all threads see a consistent value for
2015-05-06 03:07:32 907
原创 高性能server分析 - Hadoop的RpcServer
一、ListenerListener线程,当Server处于运行状态时,其负责监听来自客户端的连接,并使用Select模式处理Accept事件。同时,它开启了一个空闲连接(Idle Connection)处理例程,如果有过期的空闲连接,就关闭。这个例程通过一个计时器来实现。当select操作调用时,它可能会阻塞,这给了其它线程执行的机会。当有accept事件发生,它就会被唤醒以处理全部的事件,处理事
2015-05-05 01:06:36 1831
原创 高性能大并发server的基础
一、背景进入多核时代已经很久了,大数据概念也吵得沸沸扬扬,不管你喜欢不喜欢,不管你遇到没遇到,big-data或bigger-data都必须正视.处理大数据,基本都离不开分布式计算和分布式存储,这其中以hadoop最为使用广泛和经典。分布式系统,就离不开计算系统、网络系统、文件系统和数据库系统。这么多系统,之间又是如何协作的呢? 通讯过程又是如何保障高性能的呢?1.单处理器在以前的单核心cpu下,
2015-05-04 14:17:04 1887 2
原创 你的java/c/c++程序崩溃了?揭秘段错误(Segmentation fault)(3)
前言接上两篇:你的C/C++程序为什么无法运行?揭秘Segmentation fault (1) 你的C/C++程序为什么无法运行?揭秘Segmentation fault (2)写到这里,越跟,越发现真的是内核上很白,非一般的白。 但是既然是研究,就定住心,把段错误搞到清楚明白。本篇将作为终篇,来结束这个系列,也算是对段错误和程序调试、寻找崩溃原因(通常不会给你那么完美的stackstrace
2015-05-01 11:11:46 3068
原创 你的C/C++程序为什么无法运行?揭秘Segmentation fault (2)
什么让你对C/C++如此恐惧?本篇将继续上一篇来讨论段错误(Segmentation fault)。 上一篇: 你的C/C++程序为什么无法运行?揭秘Segmentation fault (core dumped)(1)追溯段错误如果你觉得你已经理解了段错误的根源,也知道了如何防止段错误,那么可以到此为止。否则,下面的内容或许对你有所启发。malloc我们开始为指针所指向的地址分配内存: 注意
2015-04-29 23:15:16 10299 1
原创 亲,这就是遗传算法
本文试图通过几幅简明的图来介绍遗传算法。背景当一些问题不存在确定性的最优解法,或者说最优解法的施展时间长的1-B,那我们就得开始考虑点其他路子了。比如说旅行商问题: 旅行商要去很多城市卖货,为了节省时间,它一个城市只去一次,最后还得返回原城市,因为他老婆不允许他离开太久。 它怎么走比较合算?城市的分布可能会像下面这样: 旅行商会想就是把所有城市路线做个排列(一半),然后看看哪条路线最短
2015-04-27 18:32:03 2470 8
原创 我们为什么需要Map-Reduce?
在讨论我们是否真的需要Map-Reduce这一分布式计算技术之前,我们先面对一个问题,这可以为我们讨论这个问题提供一个直观的背景。问题我们先从最直接和直观的方式出发,来尝试解决这个问题: 先伪一下这个问题:SELECT COUNT(DISTINCT surname) FROM big_name_file我们用一个指针来关联这个文件.接着考察每一行的数据,解析出里面的姓氏,这里我们可能需要一个姓氏
2015-04-26 04:11:16 3004
原创 搜索引擎-架构概述(2)
接上一部分:搜索引擎-架构概述(1)查询处理系统查询处理系统主要包含三个构件:用户交互、排序和评价。 用户交互组件 (User interaction)创建查询、完善查询以及向用户展示结果. 比如,将用户的查询转换为索引项. 并将从搜索引擎得到的有序文档列表组织成搜索结果,展示给用户.1.查询输入 (Query Input)为查询语言(query language)提供接口和解析器。 查询语
2015-04-25 21:00:10 1521
原创 搜索引擎-架构概述(1)
架构对软件系统来讲,从一个层面对系统的各个组件进行抽象.描述它们各自的功能、提供的接口以及它们之间的关系.需求架构为应付需求而产生,对搜索引擎来讲,它主要的需求来自两个方面: 效果(effectiveness):搜索的结果质量如何. 效率(effeciency):返回结果的相应时间是不是够低,搜索服务的吞吐量是不是够高.索引处理系统(Indexing Process)从这样的需求出发,我
2015-04-25 19:27:01 2625
原创 单源最短路径-迪杰斯特拉算法(Dijkstra's algorithm)
Dijkstra’s algorithm迪杰斯特拉算法是目前已知的解决单源最短路径问题的最快算法. 单源(single source)最短路径,就是从一个源点出发,考察它到任意顶点所经过的边的权重之和为最小的路径.迪杰斯特拉算法不能处理权值为负数或为零的边,因为本质上它是一种贪心算法,出现了负数意味着它可能会舍弃一条正确的边,而选择一个长边和一个负数边,因为长边和负数边的权值之和可能小于那条正
2015-04-22 06:22:02 1500
原创 最小生成树-普利姆算法eager实现
在普利姆算法的lazy实现中,参考:普利姆算法的lazy实现 我们现在来考虑这样一个问题: 我们将所有的边都加入了优先队列,但事实上,我们真的需要所有的边吗?我们再回到普利姆算法的lazy实现,看一下这个问题: 当顺着顶点0的邻接表考察顶点7时,边7-2和边7-1被加入了优先队列Q.然而,当我们开始对顶点2进行考察时: 边2-3是最轻边,我们显然不需要对边7-2和边7-1进行再次考
2015-04-21 23:20:11 1832
原创 最小生成树-普利姆算法lazy实现
lazy普利姆算法的步骤: 1.从源点s出发,遍历它的邻接表s.Adj,将所有邻接的边(crossing edges)加入优先队列Q; 2.从Q出队最轻边,将此边加入MST. 3.考察此边的两个端点,对两个端点重复第1步.例子: 从顶点0开始,遍历它的邻接表:边0-7、0-2、0-4、0-6会被加入优先队列Q. 顶点0的邻接表搜索完毕后,边0-7是最轻边,所以它会出队,并加入M
2015-04-21 22:11:16 2230
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人