- 浏览: 80950 次
- 性别:
- 来自: 重庆
最新评论
-
小黄牛:
之前有看过阿里的TCP,看到他们的架构图中可以通过自有业务去控 ...
JTA分布式事务实战(atomikos) -
leecyz:
还可以 写道lvwenwen 写道哥们,能上传工程吗不要用这个 ...
JTA分布式事务实战(atomikos) -
还可以:
lvwenwen 写道哥们,能上传工程吗不要用这个,性能太差。 ...
JTA分布式事务实战(atomikos) -
还可以:
heipacker 写道“最近需要用到分布式事务,研究了下jt ...
JTA分布式事务实战(atomikos) -
heipacker:
“最近需要用到分布式事务,研究了下jta,使用了atomiko ...
JTA分布式事务实战(atomikos)
文章列表
最近阅读了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应用做测试例子。