摘要:
这里提的需求基本都是IM的,IM的解决方案是怎么样的?网上的需求:1. 某一用户发了一条信息, 需要服务器反回一个信息(这种最简单)2. 某一用户发了一条信息,需要服务器广播给所有客户端3. 某一用户发了一条信息, 需要服务器发给指定的几个客户端4. 用户没有发信息,服务器跟据某些需要主动发给所有客... 阅读全文
随笔档案-2014年08月
Git创建与合并分支,撤销修改
2014-08-31 16:37 by Loull, 775 阅读, 收藏, 编辑
摘要:
git回滚到指定版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard <commit ID号> git push -f git回滚到上一个版本并推送到远程分支(撤销已提交的修改,并已push) git reset --hard HEAD~1 git push -f 阅读全文
Java socket中关闭IO流后,发生什么事?(以关闭输出流为例)
2014-08-31 15:56 by Loull, 6644 阅读, 收藏, 编辑
摘要:
声明:该博文以socket中,关闭输出流为例进行说明。为了方便讲解,我们把DataOutputstream dout = new DataOutputStream(new BufferedOutputStream(mySocket.getOutputStream()));中的dout做为Socket... 阅读全文
Java Socket常见异常处理 和 网络编程需要注意的问题
2014-08-31 15:48 by Loull, 3656 阅读, 收藏, 编辑
摘要:
在java网络编程Socket通信中,通常会遇到以下异常情况: 第1个异常是 java.net.BindException:Address already in use: JVM_Bind。 该异常发生在服务器端进行new ServerSocket(port)(port是一个0,65536的整... 阅读全文
Java NIO 读数据处理过程
2014-08-31 15:45 by Loull, 3382 阅读, 收藏, 编辑
摘要:
这两天仿hadoop 写java RPC框架,使用PB作为序列号工具,在写读数据的时候遇到一个小坑。之前写过NIO代码,恰好是错误的代码产生正确的逻辑,误以为自己写对了。现在简单整理一下。使用NIO,select()到读事件时,要处理4种情况:1. channel还有数据,继续读。2. channe... 阅读全文
BLOG CSS
2014-08-27 15:35 by Loull, 278 阅读, 收藏, 编辑
摘要:
BLOG CSS 1、2014~20140827 模板:MinyX2_Lite body { font-family: "微软雅黑","Microsoft YaHei", "宋体", "Segoe UI", Tahoma, Arial; } div.post div.entry { font-fam 阅读全文
【转】谈谈servlet、spring、struts
2014-08-27 15:29 by Loull, 590 阅读, 收藏, 编辑
摘要:
今年我一直在思考web开发里的前后端分离的问题,到了现在也颇有点心得了,随着这个问题的深入,再加以现在公司很多web项目的控制层的技术框架由struts2迁移到springMVC,我突然有了一个新的疑问无法得到正确的解释,为什么我们现在做java的web开发,会选择struts2或者spring... 阅读全文
Protocol Buffer语言规范
2014-08-26 17:11 by Loull, 310 阅读, 收藏, 编辑
摘要:
Protocol Buffer技术详解(语言规范)Protocol Buffer技术详解(C++实例)Protocol Buffer技术详解(Java实例)Protocol Buffer技术详解(数据编码) 该系列Blog的内容主体主要源自于Protocol Buffer的官方文档,而代码示例则... 阅读全文
【转】JVM类装载机制的解析,热更新的探讨(二)
2014-08-25 18:20 by Loull, 363 阅读, 收藏, 编辑
摘要:
同样,一个Class对象必须知道自己的超类、超级接口。因此,Class对象会引用自己的超类和超级接口的Class对象。这种引用一定是实例引用。(实际上,超类、超级接口的引用也存储在常量池中,但为了区分依赖类的引用,将它特殊表述一下。)因此,我暂且得到两条结论。结论一:持有一个Class对象的引用,则... 阅读全文
【转】JVM类装载机制的解析,热更新的探讨
2014-08-25 18:18 by Loull, 701 阅读, 收藏, 编辑
摘要:
引言如有错误,请批评指正。Java是一种动态连接的语言。所谓动态连接,大概可以这么解释。首先,Java可以大概想象成是编译解释执行的。对于一个*.java的文件,通过javac将会编译成一个*.class文件。而JVM会解释执行*.class文件。但一个软件不可能只有一个class文件,一个项目往往... 阅读全文
max-min fairness 最大最小公平算法
2014-08-25 17:16 by Loull, 16000 阅读, 收藏, 编辑
摘要:
我们经常面临给一组用户划分稀有资源的问题,他们都享有等价的权利来获取资源,但是其中一些用户实际上只需要比其他用户少的资源.那么我们如何来分配资源呢?一种在实际中广泛使用的分享技术称作“最大最小公平分享”.直观上,公平分享分配给每个用户想要的可以满足的最小需求,然后将没有使用的资源均匀的分配给需要‘大... 阅读全文
ConcurrentHashMap 无锁读
2014-08-25 11:31 by Loull, 4487 阅读, 收藏, 编辑
摘要:
ConcurrentHashMap 可以做到无锁读,而写使用分段锁机制,把整个哈希表切分成段segment(默认为16段),每段有一个锁,最多可以同时有16个写线程。而读不受限制。下文转自http://taozeyu.comConcurrentHashMap是一个线程安全的哈希实现类,它不但能使多线... 阅读全文
【转】分布式理论-CAP理论
2014-08-24 00:23 by Loull, 552 阅读, 收藏, 编辑
摘要:
一 CAP理论简述 CAP (Consistency, Availability, Partition Tolerance,) 理论是NoSQL数据库管理系统构建的基础。 强一致性:等同于所有节点访问同一份最新的数据副本 可用性:每一个操作总是能够在一定的时间内返回结果,这里需要注意的是"一定时间内 阅读全文
CPU虚拟化技术(留坑)
2014-08-18 20:54 by Loull, 1017 阅读, 收藏, 编辑
摘要:
留坑~~~不知道这个是这么实现的CPU虚拟化技术就是单CPU模拟多CPU并行,允许一个平台同时运行多个操作系统,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。虚拟化技术与多任务以及超线程技术是完全不同的。多任务是指在一个操作系统中多个程序同时并行运行,而在虚拟化技... 阅读全文
一些系统设计问题
2014-08-18 17:40 by Loull, 332 阅读, 收藏, 编辑
摘要:
1. 举出一个例子,在这种情况你会更倾向于使用抽象类,而不是接口?这是很常用但又是很难回答的设计面试问题。接口和抽象类都遵循”面向接口而不是实现编码”设计原则,它可以增加代码的灵活性,可以适应不断变化的需求。下面有几个点可以帮助你回答这个问题:在 Java 中,你只能继承一个类,但可以实现多个接口。... 阅读全文
同一个主机上的JVM实例之间通信
2014-08-15 21:47 by Loull, 1424 阅读, 收藏, 编辑
摘要:
hadoop yarn里用了RPC调用。NM里面文件本地化类ContainerLocalizer用RPC心跳方式跟本机的ResourceLocalizationService通信。用shared memory还要调到native层去,不知道会不会比tcp/ip快?可以用文件,考虑锁的问题。但是文件貌... 阅读全文
JVM介绍
2014-08-15 21:20 by Loull, 713 阅读, 收藏, 编辑
摘要:
1. 什么是JVM?JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能来实现的。Java虚拟机包括一套字节码指令集、一组寄存器、一个栈、一个垃圾回收堆和一个存储方法域。 JV... 阅读全文
【转】软件工程师的视角看网络(网络那点事)
2014-08-13 11:44 by Loull, 258 阅读, 收藏, 编辑
摘要:
一、概述在以太网中,我们都很清楚网络的分层模型,ISO模型7层:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。TCP/IP模型四层协议:主机至网络层、互联网层、传输层、应用层。 在实际应用中我们都是用TCP/IP的模型。下面我讲下软件设计需要了解的网络知识,个人感觉软件工程师应该知道这... 阅读全文
ForkJoin框架
2014-08-12 12:57 by Loull, 2443 阅读, 收藏, 编辑
摘要:
1. 什么是Fork/Join框架Fork/Join框架是Java7提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。我们再通过Fork和Join这两个单词来理解下Fork/Join框架,Fork就是把一个大任务切分为若干子任务并行... 阅读全文
安装protoc
2014-08-06 20:20 by Loull, 3549 阅读, 收藏, 编辑
摘要:
安装protoc1.下载地址:http://code.google.com/p/protobuf/downloads/list。从这里下载protobuf-2.5.0.tar.gz 和 protoc-2.5.0-win32.zip 两个包。分别解压到各自目录。如上述不能下载,则通过这里下载:prot... 阅读全文
状态机模式
2014-08-06 20:13 by Loull, 1202 阅读, 收藏, 编辑
摘要:
状态机对于你的状态机,可能有若干个状态,每个状态有自己特定的属性和属于该状态下的行为,因此你可以为每个状态定义一个类,当然这些状态实现一个接口State,然后,把这些State作为状态机的实例变量。适用场合:State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif ... 阅读全文
YARN 状态机可视化,生成状态机图
2014-08-06 17:08 by Loull, 1617 阅读, 收藏, 编辑
摘要:
由于在windows下面,配置好所有 编译hadoop2.4.1源码 的环境会很麻烦,好在我之前已经把hadoop2.4.1的源码成功导入eclipse,并解决了所有错误提示,所以我就可以在eclipse里面直接运行源码生成XX.gv,然后转成png图片。(hadoop 导入eclipse请看里面的... 阅读全文
【转】聊聊并发(一)——深入分析Volatile的实现原理
2014-08-06 00:08 by Loull, 197 阅读, 收藏, 编辑
摘要:
即两个或多个进程读写某些共享数据,而最后的结果取决于进程运行的精确时序,称为竞争条件(race condition)。引言在多线程并发编程中synchronized和Volatile都扮演着重要的角色,Volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的“可见性”。... 阅读全文
【转】Java Code Review清单
2014-08-03 22:04 by Loull, 236 阅读, 收藏, 编辑
摘要:
整洁的代码清单项目分类使用可以表达实际意图(Intention-Revealing)的名称有意义的名称每一个概念只用一个词有意义的名称使用方案/问题领域名称有意义的名称类应该是比较小的!类函数应该是比较小的!函数只做一件事函数DRY(Don’t Repeat Yourself)原则,(拒绝重复)函数... 阅读全文
Git笔记
2014-08-03 16:59 by Loull, 230 阅读, 收藏, 编辑
摘要:
零、安装,设置参数 $ git config --global user.name "Your Name" $ git config --global user.email "email@example.com" 注意git config命令的--global参数,用了这个参数,表示你这台机器上所有 阅读全文
Java异常处理
2014-08-01 11:22 by Loull, 398 阅读, 收藏, 编辑
摘要:
Java异常类层次结构图: 图1Java异常类层次结构图图示try、catch、finally语句块的执行: 图2 图示try、catch、finally语句块的执行RuntimeExcep... 阅读全文