`
还可以
  • 浏览: 80042 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论
文章列表
最近阅读了mina的源代码,这里给大家做个分享: 一、mina server请求处理模型 下面的几张图对大家后面的理解会有一定的帮助,先贴出来: 1.acceptor模型:  2.filterchain和processor处理模型     二、mina server核心组件剖析 1.acceptor: 首先附上一张acceptor的uml图,方面大家了阅读源码时了解到我们讲到的一些细节:  mina框架中负责监听连接的类,使用单个线程运行。使用nio的selector实现。将serversocketchannel的accept注册到selector中,使用单个线程轮训选择 ...
最近需要用到分布式事务,研究了下jta,使用了atomikos这个jta的实现,使用的是spring3.0,废话少说,直接贴代码。 1.使用如下jar包 atomikos-util.3.7.0.jar cglib-nodep-2.2.2.jar transactions-3.7.0.jar transactions-api-3.7.0.jar transactions-jdbc-3.7.0.jar transactions-jta-3.7.0.jar   2.spring配置文件如下:     <?xml version="1.0" encodi ...
这里我使用单台服务器上的两个mysql实例进行搭建,主要用到了mysql自带的mysqld_multi   一、复制原理 开始搭建前有个mysql复制原理的基础知识需要补充: mysql进行主备复制使用到了三个线程: 1.主库上的转存储线程:     会将mysql server提交的事务写入到二进制文件中,这个二进制文件就叫做binlog。 2.备库上的连接线程:     备库启动后,负责和主库通信,读取binlog,同时,将binlog存储进自己的一个叫中继日志的relaylog中。 3.备库上的relaylog重放线程:    此线程会将relaylog中的事件在备库 ...
     以前使用maven时没有细了解过maven的生命周期,这段时间需要自己做架构设计,为了能更好的使用maven,自己整理了下maven的生命周期以及伴随生命周期的一些概念。 一、maven生命周期的组成:       1.clean生命周期       ...
构造二叉搜索树 package com.tree;     public class SearchTree {  private TreeNode rootNode;    public void createSTree(int[] a){ for(Integer i:a){ this.insertNode(i); }  }    public void insertNode(int key){ TreeNode parentNode = null; TreeNode searchNode = rootNode; TreeNode ...
  使用堆排序选出数组中的最大值,然后使用计数排序对整个数组进行排序   package com.sort;   public class HeapSort { /** * 将整棵树构建为最大堆 * @param a */ public void builMaxHeap(int[] a){ int length = a.length-1;//堆排序数据长度,第一个数据不使用,设置为0,哨兵值 int heapSize = length/2; for(;heapSize > 0 ;heapSize--){ maxHeapfy(a, ...
  package com.quicksort;   public class QuickSort {   public int partiTion(int[] a, int start, int end){ int i = start - 1;//小于数组中最后一个数的索引值 int x = a[end]; for(int j = start;j<=end - 1;j++){//将数组分为大于最后一个值部分和小于最后一个值的部分 if(a[j]<=x){ i = i+1; int tmp = a[j]; a ...
package com.sort;   public class HeapSort { /** * 将整棵树构建为最大堆 * @param a */ public void builMaxHeap(int[] a){ int length = a.length-1;//堆排序数据长度,第一个数据不使用,设置为0,哨兵值 int heapSize = length/2; for(;heapSize > 0 ;heapSize--){ maxHeapfy(a,heapSize); } } /** * 将子树 ...
关于磁盘分区的一些知识点 linux中文件系统和磁盘分区是紧密结合的,一般情况下一个磁盘分区只能被格式化为一个文件系统。但也存在技术将一个分区格式化为多个文件系统。在linux操作系统上,组成磁盘分区的最小单位 ...
  虚拟存储器出现的背景 在没有虚拟存储器的时代,由于系统里面的所有进程都要共享主存,同时又因为主存资源是有限的,而所有进程的所占用的空间远大于主存空间的大小,这就导致出现了两个问题:1、会有进程因为主存 ...
设计原则: 一、开-闭原则:一个软件产品应该对扩展开放,对修改关闭 二、任何基类出现的地方,子类一定可以出现 三、要依赖于抽象,不要依赖于是先 四、要尽量使用合成\聚合,而不是使用继承达到复用的目的 五、一个软件实体应当与尽可能少的其它实体发生作用 六、应当为客户端提供尽可能小的单独接口,而不应该提供大的总接口 七、抽象类是用来被继承的,而实体类不是用来被继承的 八、数据应该尽量放到实现类或者继承类当中,而不应该放到抽象类当中 九、面向对象的设计原则是创建抽象化,并且从抽象化导出具体化 十、依赖于抽象而不要依赖于具体 十一、一个对象对其它对象应该有尽可能少的了解
最近看了下新浪微博开放平台的登陆授权部分,这里简单介绍下:    一、phpsdk的组成       1、 下载新浪微博的phpsdk,链接如下:http://libweibo.googlecode.com/files/weibo-oauth-class-with-image-avatar-06-29.zip        2、解压文件后你会看到6个文件:callback.php、config.php、index.php、weibolist.php、weibooauth.php以及.DS_Store这6个文件。    二、申请APPKEY         APPKEY是新浪微博开放平台 ...
简单栈的实现: stack.c #define MAX 100 int sp = 0; int val[MAX]; void push(int value){  if(sp<MAX){    val[sp++]=value; }else{    printf("wrong"); } }   int pop(){   if(sp>0){    return val[--sp]; }else{   return 0; } }   ceshi.c #include<stdio.h> int main(){   ...
关于btrace的使用总结: 使用步骤: 一、下载btrace包:btrace-agent.jar、btrace-boot.jar、btrace-client.jar。 二、在环境变量中配置BTRACE_HOME。在PATH中添加BIN目录的路径。 三、运行要测试的web应用,这里使用本机上的web应用做测试例子。
  1、线程可以驱动任务。任务由实现Runnable接口的类定义。New Thread(Runnable)这段代码就是前面一句话最好的诠释。任何线程都可以启动另外一个线程。 由于所有其他线程都是由Main线程所产生的,所以main线程的优先级相对较高。要区分出任务和线程是不同的概念,是以线程去驱动任务的。   package com.thread.demo;   public
Global site tag (gtag.js) - Google Analytics