摘要:
OSC是Online Schema Change简写,即在线架构改变。其实现步骤:1. init,即初始化阶段,会对创建的表做一些验证工作,如检查表是否有主键,是否存在触发器或者外键等。2. createCopyTable,创建和原始表结构一样的新表。3. alterCopyTable,对创建的新表... 阅读全文
摘要:
在WEB服务器端,每日的访问量巨大。在非生产环境需要对服务器进行压力测试,一般使用后台线程和Sleep方式来模拟线上的压力。这里使用ScheduledExecutorService实现一种简单的QPS测试代码。QpsProxy:import com.google.common.base.Precon... 阅读全文
摘要:
ConcurrentMap和Guava的LocalCache实现原理相近,底层的存储方式使用的时table方式来存储。这里使用最简单且最暴力的方式,在每次访问的时候均加锁。ConcurrentHashMap接口:public interface ConcurrentHashMap { publ... 阅读全文
摘要:
简单线程池的设计一个典型的线程池,应该包括如下几个部分:1、线程池管理器(ThreadPool),用于启动、停用,管理线程池2、工作线程(WorkThread),线程池中的线程3、请求接口(WorkRequest),创建请求对象,以供工作线程调度任务的执行4、请求队列(RequestQueue),用... 阅读全文
摘要:
1. 发布-订阅模式发布-订阅模式(publish-subscribe)是一种编程范式,发布方不发布消息给特定的接收方,而是由订阅方选择性接收。这使得发布方和订阅方相对独立,减少了耦合性。在发布-订阅模式中,有以下几个难点:1)如何区分或分配订阅者关注的消息;2)发布者如何将消息提交给对应订阅者;下... 阅读全文
摘要:
0. 垃圾回收算法概述标记清除算法 | |--- 标记时间过长 | | | |--- CMS:通过初始标记、并发标记和重新标记来拆分标记过程 | |--- 垃圾回收后,导致内存碎片过多 | |--- 标记压缩算法:将垃圾移动到一侧来减少内存碎片 | |--- 标记清除算法:... 阅读全文
摘要:
1. Zookeeper客户端Zookeeper | |--- ClientCnxn | | | |----SendThread | | | |----EventThread ... 阅读全文
摘要:
(来自:《NS2仿真实验-多媒体和无线网络通信》)1.变量(Variable)和变量替换(VariableSubstitution) tcl变量是在第一次使用set的指令来指派变量的值时所产生的。可以使用unset来取消这个变量。当取用或者改变变量值时,只要在变量名称前加上一个“$”,就可以取用或改变变量内的值。指令eval用于执行一个tclscript。2.表达式 tcl中表达式通常使用“expr”指令去判断表达式的真假或去求表达式的值。1 set value [expr 1>=2]3.指令替换 使用[]来完成指令的替换,即把“原tclscript执行结果”取代“原tclscrip.. 阅读全文
摘要:
javax.swing.Timer类在创建时需要指定时间间隔和定时器到时间需要执行的动作,即ActionListener。1 Timer timer = new Timer(100, taskPerformer);2 timer.start(); 动画效果需要有连续的图画作为动作的播出效果,然后利用index = (index + 1)%imageCounts;来实现循环播放的效果。例如,1 private ActionListener taskPerformer = new ActionListener() {2 @Override3 public vo... 阅读全文
摘要:
利用类javax.swing.JPanel来在窗口界面上画图。图片文件通过javax.imageio.ImageIO类来获取。 1 import java.awt.Graphics; 2 import java.awt.image.BufferedImage; 3 import java.io.File; 4 import java.io.IOException; 5 6 import javax.imageio.ImageIO; 7 import javax.swing.JFrame; 8 import javax.swing.JPanel; 9 10 import com.Sunda... 阅读全文