`
文章列表
一直想系统全面的记录maven的生命周期,今天工作碰到maven配置疑惑,一生气,看了官网的介绍,现记录以便日后回溯,自己翻译的,如有误差,希望帮我指出,这里只讲jar,pom,war,maven-plugin maven 生命周期maven 有三个内置的build生命周期:default, clean 、site clean阶段:处理项目的清理工作 default阶段:处理项目的deploy site阶段:处理网站站点的创建   一个build的生命周期是由一些列的阶段(phases) 组成 每一个生命周期(default\clean\site),由一系列阶段组成,每一个阶段p ...
    最近工作碰到这么个小问题,分享一下:     java中我们常见的用来分片的方法就是取模,一般的方法就是 Math.abs(Long.valueOf(value).hashCode()) % shardingBase    在我们用一个脚本语言(例如这次的Python)去维护程序的时候,有时候我们需要一个同样的方法    现在问题来了,这么简单的一个方法怎么用Python来表示?    难道是:   long(value) % shardingbase    最后运行发现,基本不太一样。   我们看java在Long的hashcode()方法实现代码可以模仿出这个逻辑 ...
public class SingleDemo { private SingleDemo() { } /** * 类级的内部类,也就是静态的成员式内部类,该内部类的实例与外部类的实例 没有绑定关系,而且只有被调用到时才会装载,从而实现了延迟加载。 */ private static class SingletonHolder { /** * 静态初始化器,由JVM来保证线程安全 */ private static SingleDem ...
redis中批量删除特定key    批量删除特定模式key redis-cli -p 6379 -h 172.16.3.66 keys '*syn' | xargs redis-cli -p 6379 -h 172.16.3.66 del  
ThreadLocal类提供线程局部变量。这些变量和其他普通的变量的区别在于,每个线程获取的线程局部变量都拥有自己相对独立的初始化过的副本。ThreadLocal的实例通常被声明为private static 来希望达到关联线程的状态的目的(例如:userId,transaction id)。 按我本人的理解有两点注意: 第一:ThreadLocal提供的线程局部变量通常都是新new的。这个他们都是初始一样的,最后和线程关联的,相对独立的。 第二:ThreadLocal是为了解决线程内部数据共享,而不是为了解决线程间数据共享(synchronized).将同一个引用分别放到不同线程的t ...
druid是号称目前最好的java数据库连接池,温少写的代码中有很多设计模式的思想,其中最重要的一个就是filter-chain设计模式给druid所带来的可扩展性。对此,我很感兴趣,并希望日后借鉴,所以看了看他的源码,以此记录一下。 druid中设计到filter-chain设计模式的类或接口主要有一下几个Filter、FilterAdapter、FilterChain、FilterChainImpl、FilterEventAdapter、FilterManager 以及举例讲讲两个具体的filter:StatFilter、Slf4jLogFilter   具体职责划分如下: Fi ...
新建的maven项目有一个红色的叉叉,看着总是觉得不舒服,虽然项目跑起来没有问题,依赖也都下好了,在buildpath下也没发现问题,但是就是找不到解决办法,弄了一会儿,发现有人也有同样问题,记录一下解决方法。 windows->Show view->Other->Markers    点开markers视图的窗体,发现下面罗列了项目的警告,错误等信息  根据提示,再去网上搜索解决办法,将叉叉部分都解决了,最后更新一下项目就ok了 选中项目-->maven-->update project    
org.apache.ibatis.binding.BindingException: Invalid bound statement (not found) 一般的原因是Mapper interface和xml文件的定义对应不上,需要检查包名,namespace,函数名称等能否对应上,需要比较细致的对比,我经常就是写错了一两个字母搞的很长时间找不到错误 按以下步骤一一执行: 1:检查xml文件所在的package名称是否和interface对应的package名称一一对应 2:检查xml文件的namespace是否和xml文件的package名称一一对应 3:检查函数名称能否对应 ...
        因为haproxy日志的配置,输出设备使用的是linux自身的日志设备,因此,要想让haproxy正确输出日志,就必须先学会在linux/ubuntu下配置日志设备。       关于如何在linux下配置日志,网上有很多文章可以借鉴,但是在ubuntu下如何配置,却很少讲到,ubuntu下和linux下流程一样,只是对应需要修改的文件稍有差异。       今天需要查看Ubuntu系统的日志文件,但却没有找到/var/log/messages这个文件。网上搜素资料,说是要配置/etc/syslog.conf。syslog采用 可配置的、统一的系统登记程序,随时从系统各处接受 ...
   wait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行, 只有其他线程调用了notify方法(notify并不释放锁,只是告诉调用过wait方法的线程可以去参与获得锁的竞争了,但不是马上得到锁,因为锁还 在别人手里,别人还没释放。如果notify/notifyAll方法后面的代码还有很多,需要这些代码执行完后才会释放锁),调用wait方法的一个或多个线程就会解除wait状态,重新参与竞争对象锁,程序如果可以再次得到锁,就可以继续向下运行。      1)wait()、notify()和notifyAll()方法是本地方法,并 ...
参考文章:http://blog.csdn.net/lmc_wy/article/details/7866863 (闭锁CountDownLatch与栅栏CyclicBarrier) 所有线程互相等待,直到大家都到达一个水平线上,大家在继续运行,这个水平线就是栅栏。 栅栏:一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点。利用栅栏,可以使线程相互等待,直到所有线程都到达某一点,然后栅栏将打开,所有线程将通过栅栏继续执行。CyclicBarrier支持一个可选的 Runnable 参数,当线程通过栅栏时,runnable对象将被调用。构造函数CyclicBarrier(int ...
线程同步工具,允许一个线程(或者多个线程)等待其他所有线程执行完毕后再执行。 CountDownLatch是通过一个计数器来实现的,计数器的初始值为线程的数量。每当一个线程完成了自己的任务后,计数器的值就会减1。当计数器值到达0时,它表示所有的线程已经完成了任务,然后在闭锁上等待的线程就可以恢复执行任务。期待最后一个worker赶完活 闭锁:一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。即,一组线程等待某一事件发生,事件没有发生前,所有线 程将阻塞等待;而事件发生后,所有线程将开始执行;闭锁最初处于封闭状态,当事件发生后闭锁将被打开,一旦打开,闭锁 ...
Semaphore也是一个线程同步的辅助类,可以维护当前访问自身的线程个数,并提供了同步机制。 使用Semaphore可以控制同时访问资源的线程个数。 acquire()尝试获取许可证,没有获得的线程会阻塞 release()操作完之后释放资源到资源池中 public static void main(String[] args) throws Exception { // 线程池 ExecutorService exec = Executors.newCachedThreadPool(); // 只 ...
首先奉上本次集群搭建的架构图 具体搭建过程如下(不代表生产,只是自己搭建还未测试qps等参数): 首先:集群各个功能模块机器分配 Codis-server组 192.168.1.80 192.168.1.81 192.168.1.82 Codis-proxy组 192.168.1.153 192.168.1.154 Codis-config 192.168.1.155 Zookeeper组 192.168.1.133 192.168.1.134 192.168.1.135   Codis-config配置如下(默认无需密码): co ...

[置顶] Codis编译

第一步:安装golang环境,配置GOROOT、GOPATH、顺便设置GO15VENDOREXPERIMENT=0    安装go我的版本是go1.5.2.linux-amd64.tar.gz注意对准平台下载,确定下64位还是32位系统 export GOROOT="/usr/local/go" export GOPATH="/usr/local/gowork"  注意:在对应目录下建立gowork文件夹,gowork文件夹下面有三个文件夹,先手动建立了(src ,pkg,bin) 验证go安装成功:go version 第二步:安装git ...
Global site tag (gtag.js) - Google Analytics