- 浏览: 96861 次
- 性别:
- 来自: 杭州
最新评论
-
luliangy:
dabing69221 写道请问楼主 “Node ”是个什么东 ...
Java实现二叉排序树 -
dabing69221:
请问楼主 “Node ”是个什么东东啊
Java实现二叉排序树 -
luliangy:
多谢指正,当时写代码的时候没注意测试
求解最大子序列和问题 -
flyfox1982:
//只遍历一遍; int curSum=0;//当前和; ...
求解最大子序列和问题 -
flyfox1982:
不对吧:maxSubSum(new int[]{2,-1,2, ...
求解最大子序列和问题
文章列表
直接讲Parameter参数放在url里面默认使用的是iso8859-1编码,而且connection.setRequestProperty设置的编码不针对url只设置输出流的data,所以此时乱码的解决方案:
1、webx端重新编码,String txt = new String(desc.toString().getBytes("iso8859-1"), "utf-8");
2、放在data中,输出流write出去,
outStream.write(data.getBytes());
outStream.flush();
上面代码会产生另 ...
从开源社区到云计算
UNIX编程艺术讲到UNIX为何如此成功的第一个原因就是开源。当时的一些计算机大牛们,为了彼此间更好的合作,为了提高团队的效率,选择选择将源代码开放出去。在那个蛮荒的时代,因特网没有诞生,甚至最开始连TCP/IP都没有诞生,人们依赖脆弱的计算机网络进行一些文档的传输和技术上的交流。开源这件事是那些大牛比如Kim Tompthon,Dung Mcllroy的一些协作的习惯。后来诞生在伯克利大学的hacker们在编写Unix程序以及各种工具软件的时候也选择了这种开源。可以说开源软件是计算机历史中有史以来的一种优良的传统。
我们来分析一下为何那些人愿意把自己的劳动果实告诉其 ...
项目一期做完,总结一下。
避重就轻的架构设计
核心server轻量化设计,从系统稳定角度来说可以避免核心功能受到不必要的干扰,从系统运维角度来说,方便排查问题,从长远设计角度来说,一开始的简单设计是为了今后的来日方长。
快速重构累赘
一些在一期或者甚至二期都不会考虑的东西,尽快重构干净。否则就会一直拖着累赘,面向接口编程也会成为一个坑,走了一段时间之后发现还是要做掉。
mysql中高中高可用方案(http://www.cnblogs.com/lyhabc/p/3838764.html)
MMM高可用mysql方案(http://blog.chinaunix.net/uid-20639775-id-3337488.html)
MHA 高可用mysql方案(http://os.51cto.com/art/201307/401702_all.htm)
开源数据复制方案
1、基于Tungsten Replicator的主从复制方案(https://code.google.com/p/tungsten-replicator/)
2、阿里巴巴mysql ...
一、Binlog类型
binlog的格式有三种,这也反应了mysql的复制技术:基于SQL语句的复制(statement-based replication, SBR),基于行的复制(row-based replication, RBR),混合模式复制(mixed-based replication, MBR)。相应地,binlog的格式也有三种:
STATEMENT
ROW
MIXED
使用命令查看mysql binlog的格式
mysql>showvariables like 'binlog_format'
使用mysqlbinlog解析的binlog:
...
int,double,float的处理:根据iBATIS官方文档介绍,因为在javaBean中如果属性为int ,double, float 时,不允许设置为NULL,可以采用一个"神奇数字"来代替属性中的NULL,如-9999. 数据存入数据库时,当检测到属性值为-9999时,Ibatis把空值存入数据库中. 数据从数据库中取出时,当数据库中该字段为NULL时,Ibatis给javaBean中的属性赋值为-9999.
因此,在XML映射文件中,应该同时在存入与取出处指定nullValue='-9999',否则容易导致数据库的不一致. 这种做法虽然保证了数据库的一 ...
数据库同步binlog出现以下错误:
java.sql.SQLException: Incorrect string value: '\xF0\x9F\x98\x98",...' for column 'content' at row 1
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1055)
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
at com.mysql.jdbc.MysqlI ...
从代码层角度来说:
Lock是基于在语言层面实现的锁,Lock锁可以被中断,支持定时锁,虽然我们总是在一个finally块中释放锁,但是其实我们可以很随意的释放锁,如果安全的话。Synchronized是基于JVM实现的,我们称之为对象的内置锁,Java中的每一个对象都可以作为锁。对于同步方法,锁是当前实例对象。对于静态同步方法,锁是当前对象的Class对象。对于同步方法块,锁是Synchonized括号里配置的对象。当一个线程访问同步代码块时,它首先必须得到锁,退出或抛出异常时必须释放锁。JVM基于进入和退出Monitor对象来实现方法同步和代码块同步,但两者的实现细节不一样。代码块同步是 ...
表征异步计算的Future:
Future接口有一个get方法,这个方法会执行到计算结束才返回,它可以被中断取消。从它的实现类来看FutureTask来看,其内部也有一个Sync的同步控制类,任务提交的时候会执行
void innerRun() {
if (!compareAndSetState(0, RUNNING))
return;
try {
runner = Thread.currentThread();
if (getSt ...
定义:一组进程或线程等待系统资源,而资源又被进程本身或者其他进程占用时就形成了死锁。
死锁产生的四个必要条件:
1)非抢占;
2)持有并等待;
3)互斥;
4)循环等待;
死锁避免:
在分配资源时检测分配该 ...
ConcurrentHashMap的设计实现
为什么还需要ConcurrentHashMap,不是有了Hashtable吗。如果所有的事情都用Synchronized去解决,那么这个世界会变得很糟糕。
ConcurrentHashMap最绝妙的地方是采用了锁分段技术,一种分而治之的策略,一个HashMap被分为了几个Segment,在每个Segment里面实行同步控制。
对ConcurrentHashMap的操作首先找到相应的Segment,然后在Segment里面进行操作
public V put(K key, V value)
AQS
juc很多操作都是基于AQS(AbstractQueuedSynchronizer)
不同于自旋锁,juc使用的是volatile机制的状态变量;
内部也有一个阻塞线程的等待队列
每个线程都被封装在一个Node结点中
static final class Node {
// 当前线程被取消
static final int CANCELLED = 1;
// 结点被移除队列时唤醒后继节点
static final int SIGNAL = -1;
// 结点在条件队列里面
s ...
JVM volatile语义:
mark:
(1)Java 内存模型不会对valatile指令的操作进行重排序:这个保证对volatile变量的操作时按照指令的出现顺序执行的。
(2)volatile变量不会被缓存在寄存器中(只有拥有线程可见)或者其他对CPU不可见的地方 ...
很久以前面试的时候跟某位亲说过会把自己对Redis分析的文档发布在博客里的,一直延误了这件事,主要一是自己的分析还没有结束,觉得许多东西还需要在实际运用中对使用下,二是自己最近专注分析Java的并发,现在发现自己比以前懒了很多,代码写的少,文档一篇都没记录。。。惭愧!
源码针对Redis2.4版本,从以下几个方面进行了分析:
一、Redis的配置及参数说明;
二、Redis五大神器(数据结构);
三、Redis的运行分析;
四、
1、数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员的对齐按照#pragma pack指定的数值和这个数据成员自身长度中,比较小的那个进行。
2、结构(或联 ...