- 博客(18)
- 收藏
- 关注
原创 IntelliJ 的调试技巧
上图是Idea的调试界面,下面逐个介绍每个按键的意思以及应用1.下一步,默认不会进入方法内部2.进入方法内部3.点击后,下一步会默认进入方法中4.跳出方法5.栈回撤 (这个个人感觉是最好用的,在debug时用好简直是神器)1.重新启动程序3.执行到下一个断点处Set Value 可以给断点处变量赋值,调试时经常需要设置条件断点
2017-03-01 17:58:32
364
原创 Pigeon发布流程
Pigeon是什么我在这里就不介绍了 详细参见 dianping/pigeon: RPC framework of DIANPING一.发布入口bean id="" class="com.dianping.dpsf.spring.ServiceRegistry" init-method="init" lazy-init="false">
2017-03-01 17:56:54
1178
原创 Pigeon中的流量限制
在RPC框架中很重要的部分就是请求量的限制,每个机器能够处理的请求数量是有上限的,所以设置一个能处理的上线,将不能处理的请求拒绝总是正确的。请求类型Pigeon中请求的处理是采用一个责任链的模式,Netty服务器中将接受的请求序列化成Request对象,然后抛到Pigeon的责任链中处理。Pigeon将请求分为四个类型(参见ProviderProcessHandlerFactory
2017-03-01 17:55:44
448
原创 Pigeon中的负载均衡
一.核心类LoadBalanceManager 负载均衡的管理器LoadBalance 负载均衡的抽象Client 负载均衡调度的对象二.核心类讲解2.1 LoadBalanceManager类核心对象,存储着service&group的组合键 和 负载均衡器的 kv对象private static Map loadBalanceMap = ne
2017-03-01 17:53:02
589
原创 Pigeon中的Netty应用
一.Netty与Pigeon交互图二.关键类解释2.1 ServerServer是Pigeon对服务器的抽象,每个Server对应一个Netty的服务器,并负责处理该 Netty服 务器接收的所有请求addService(); 该方法在服务启动流程中已经解释,通过addSerivce添加提供的服务 processRequest 提供处理请求的能力2.2
2017-03-01 17:50:50
536
原创 Pigeon 工具类ExtensionLoader
一.静态变量private static Map, Object> extensionMap = new ConcurrentHashMap, Object>();private static Map, List> extensionListMap = new ConcurrentHashMap, List>();两个同步容器,存储的class类和实例之间的kv对象二.如
2017-03-01 17:49:22
413
原创 Pigeon 线程池设计
一. 类结构1.1 DynamicThreadPooolPigeon中的线程池类DynamicThreadPool实现了ThreadPool,ExecutorAware接口1.2 ThreadPool接口public interface ThreadPool {void execute(Runnable run); Future submit(Cal
2017-03-01 17:47:32
686
原创 从缓存到一致性
缓存的本质:抛离实现细节来说,缓存的本质就是* 访问速度更快的数据副本* 从定义而言,强调两个关键词 更快 副本,并且可以看出缓存是针对查询的快如何实现更快的访问?(存储设备,传输距离) 1.性能更好的存储设备 2.更近的访问节点(CDN 网络节点,浏览器缓存 本地缓存)eg: 内存可以看做磁盘的缓存,L1 Cache ,L2 Chace ,高速缓存块,分部署缓存,数据
2016-07-06 22:36:42
406
原创 Java程序员如何看待application运行系统对GC的影响
1.Java application运行在Jvm上,而Jvm则寄生在各种操作系统上,Jvm通过调用原生接口来获得系统服务(native方法)。 2.系统资源分三类: 1.cpu (计算资源) 2.io (IO资源) 3. mem (存储资源)GC耗时分类(这里主要指full gc,full gc 采用非引用计数的方法来标记垃圾对象,非引用计数的GC方式需要STW
2016-07-03 21:11:19
453
原创 垃圾收集算法----前言
最近在逛京东时发现了一本书专门介绍垃圾收集算法,怀着好奇的心态我就买了回来,我得承认这本书改变了我对垃圾收集的认知,其实之前我一直觉得垃圾收集机制无非几种方法所以也觉得无趣,看了这本书在了解到其中的关键点。首先需要改正一个观念,垃圾收集并不是独立存在的,一定要与内存分配关联不然就不可能理解垃圾收集。特定的内存分配策略会造成特定的内存布局,同样特定的垃圾收集机制也会影响内存布局.Why 垃圾收集显式
2016-06-29 23:44:55
382
原创 漫谈排序
(注:这里的排序不包括桶排序等特殊线性排序)1.排序算法分为两个步骤:1.比较 2.移动2.排序算法的目的:无序—>有序3.排序算法的分类(1)局部顺序----->全局顺序----->全序 (归并排序)(2)全局顺序----->全序 (快排,堆排)4.算法的衡量标准两个复杂度: 时间和空
2016-06-29 23:25:07
374
原创 用于分类的决策树简介
顾名思义,训练完成的决策树的功能就是能够决策树能够识别输入的元组的类型。比较有名的决策树算法有C4.5,ID3,CART(他们的主要区别是利用的分裂准则不同)。构造决策树简单的来说就是一句话,每次利用分裂准则进行属性的选择和分裂(毕竟树就是由一个个属性的节点构成,所以所有的算法都是集中在判断属性节点的位置而已)分裂准则:一棵树越顶层的节点对决策的走向影响越大(和位于高层的人说话影响大一个意
2013-05-13 19:44:48
882
原创 Apriori算法
Apriori算法是挖掘最简单频繁模式的方法(单维度,单层,布尔频繁项集)。介绍算法前先介绍两个概念Support和Confidence翻译成中文就是支持度和置信度(两个值都是百分数),我在这里举个例子让大家理解这两个概念:假设有10个球,白色的球有3个,那么白球的支持度就是30%,而置信度则类似于概率里面的概念P(A|B) 。下面就开始介绍算法:该算法的目的就是挖掘频繁模式所以会有一个su
2013-05-10 07:10:18
608
原创 HttpClient的execute的阻塞问题
这个问题的原因我不大清楚,有兴趣的同学可以自己去翻些资料。下面是我的解决方案:将需要执行execute的方法用一个线程封装起来,另外执行并且让主线程处于等待态(具体的等待时间自己决定)主线程awake后判断执行execute的方法的线程是否是alive,如果仍然是alive态我们就认为它卡住了然后重新执行这个方法eg:/**@return 判断execute方法是否执行完成
2013-05-09 22:27:32
4975
原创 HttpClient 关于 cookie rejected的错误
由于作业的原因要去扒所有城市景点的经纬度,后来就遇到了这个错误。第一反应就是去问度娘,一看基本都是一样的回答。但是由于我的httpClient的jar包比较老了,所以他们提供的方法不能用,于是我就重下了jar包,然后按照网上说的就解决了。下面是解决方案:其实很简单只要加上一行代码: httpclient.getParams().setParameter("http.protocol.co
2013-05-09 19:19:50
879
原创 hibernate mapping error could not get constructor for.....
首先看错误类型就知道是映射错误,首先检查在配置文件内的实体类型和table内的属性名是否正确,再检查get和set方法是否全。其实hibernate的大部分错误只要多看看consle区的错误信息都能够解决。我犯的错误是不小心把Entity类的属性名写错了
2013-05-02 18:22:34
1564
原创 hibernate not mapped
本来我也不是第一次用hibernate,所以这次基本还是按照以前的来写。是知道在用hql查询的时候总是出现not mapped错误,所有我就找度娘看看,网上大多说配置文件没写,还有一个竟然说from后是表名(from后面是持久话的实体类名)。后来我自己想没有映射的话是不是因为在配置文件中写的是完整的包名加类名而在使用hql时没用,于是我试着在持久化类名的前面加上包名,果然就可以了。(ps:本人以前
2013-05-02 15:23:29
572
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人