java多线程通信方法 进程间通信的方法主要有以下几种(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关 系 进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。(3)信号(Signa
线程的状态分析 线程状态通过查看Thread源码,可以看到里面定义了枚举类State,如下:public enum State { /** * 线程创建之后,但是还没有启动(not yet started)。这时候它的状态就是NEW */ NEW, /** * 正在Java虚拟机下跑任务的线程的状态。在RUNNABL
MySQl分表分库 一、综述1、需求分析随着数据量的增长,MySQL会有一系列问题,具体说来如下:(1)容量问题 单库包含多张表,部分单表容量过亿,磁盘存储不足(2)性能问题 单库处理能力有限,受制于连接池及机器资源等问题,TPS无法继续提升(3)扩展问题 单一主库无法灵活的进行升级和扩展,只能通过挂多个读库的方式进行扩展。 读库本身只能解决读的业务场景;且读库需要通过主库进行数据同步,如果数量过多主库压力也会
this逃逸问题 当内部类代码执行的时候,外部类对象的创建过程很有可能还没结束,这个时候如果内部类访问外部类中的数据,很有可能得到还没有正确初始化的数据。public class ThreadThisEscape { private int weight = 0; public ThreadThisEscape() { new Thread(new EscapeRunnable()
Linux查看日志命令 1、cat命令:1)显示整个文件(常用)。示例: $ cat fileName2)把文件串连接后传到基本输出,如将几个文件合并为一个文件或输出到屏幕。示例: $ cat file1 file2 > file说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)cat参数详解:-n 或 –number 由 1 开始对所有输出的行数编号-b 或 –number-n
web.xml文件详解 在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰。 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> f
Error、Exception分析 1、Throwable是Exception和Error类的父类 2、Exception分为可被控制(checked) 或不可控制的(unchecked) 可被控制(checked) : 该类直接继承自Exception,在java编译的时候就需要进行检查。因此在子类继承父类的同时或者其它方法调用该方法的时候,必须要抛出该异常或对异常进行处理。 该异常之所以被称为checked是因为必须要在
Spring Transaction Rollback 在使用编程方式进行spring的事务处理时,无需太考虑这个问题,可以再代码中显示的写上commit,rollback。 这里讨论的是如何在使用了aop进行spring事务管理如何进行事务回滚,也就是具体分析事务回滚的时机。Spring的AOP事务管理默认是针对unchecked exception回滚,也就是默认对RuntimeException()异常极其子类进行事务回滚。关于unchecked
mysql索引优化 本文讨论BTREE方式的索引详解b+树如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。 真实的数据存在于叶子节点即3、5、9、10、1
使用消息队列 实现 分布式事务处理 一、什么情景遇到分布式事务处理问题以经典的转钱案例:“A帐号向B帐号汇钱”,作为分析案例,一般来说该案例有以下几个过程:(1)从A帐号中把余额读出来 (2)对A帐号做减法操作 (3)把结果写回A帐号中 (4)从B帐号中把余额读出来 (5)对B帐号做加法操作 (6)把结果写回B帐号中以上6个步骤必须同时成功,同时失败。在我们的单系统应用中这个问题很好解决,只需要将这一系列操作放入一个事务中即
获取Spring ROOT ApplicationContext 的几种方式 在spring中我们经常需要获取ROOT ApplicationContext, 以下就几种获取方式作分析:在使用spring的web项目中,在web.xml中有如下配置,进行spring的初始化:<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-cla
MySQL InnoDB 四种事务隔离级别 InnoDB默认是可重复读的(REPEATABLE READ)修改全局默认的事务级别,在my.inf文件的[mysqld]节里类似如下设置该选项(不推荐)transaction-isolation = {READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE}改变单个会话或者所有新进连接的隔离级别(推荐使用)SET [SE
Cookie与Session深入理解(一)——Cookie 基本操作HttpServletRequest request;HttpServletResponse response//1、获取cookiesCookie[] cookieList = request.getCookies();//2、根据cookieName获取值,遍历cookieListString retValue = null;for (int i = 0; i < cookieL
centos调整root的空间大小 1、首先查看磁盘使用情况 df -hFilesystem Size Used Avail Use% Mounted on /dev/mapper/vg_guoyixian-lv_root 50G 35G 12G 75% / tmpfs 1.9G 0 1.9G 0%
ArrayList去除重复数据,排序 去除重复数据包括保持顺序和不保持顺序两个方法注意:因为借用了HashSet,所以判断重复需要重写 T 的hashCode()和equals()方法public class ListTools { /** * 删除重复元素,保持顺序 * @param list */ public static <T> void removeDuplicateWithOrde
java hashCode() 与 equals() 用途hashCode()方法被用来获取给定对象的唯一整数。这个整数被用来确定对象被存储在Hash结构的集合类的元素存储位置。Object类默认的hashCode()方法返回这个对象存储的内存地址的编号。equals()判断两个对象是否相等。Object类默认的将会比较这个对象存储的内存地址的编号.重写 因为是继承自Object,所以直接重写该方法即可例如可以使用Apache Commons Lan
集合遍历 以下实例演示了如何遍历从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型的集合,以下我们分别使用了普通for,增强型的 for ,iterator 等方式来遍历集合:List与Set类型集合的遍历/* author by w3cschool.cc Main.java */import java.util.ArrayList;import java.util.H
ThreadLocal 简介Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。使用public static final ThreadLocal holder = new ThreadLocal(); holder.set(“test”); // 存 ho
安装tomcat8 一、JDK安装(jdk-8u60-linux-x64.rpm)rpm -qa|grep jdk #查看是否有旧版本,有就卸载rpm -ivh jdk-8u60-linux-x64.rpm #安装jdkvi /etc/profile #修改环境变量,内容如下export JAVA_HOME=/usr/java/jdk1.8.0_60/export CLASSPATH=.:%JAVA_HOME%/li
log4j使用说明 一、log4j.properties 的使用详解 1.输出级别 OFF < FATAL < ERROR < WARN < INFO < DEBUG < ALL级别越高,一般输出的信息越多ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session丢失 INFO 为一般要显示的信息,比如登录登出 DEBUG 为程序的调试信息建议:在调试的时候使用DEBUG 级别,上线后