自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(80)
  • 资源 (4)
  • 收藏
  • 关注

原创 java多线程通信方法

进程间通信的方法主要有以下几种(1)管道(Pipe):管道可用于具有亲缘关系进程间的通信,允许一个进程和另一个与它有共同祖先的进程之间进行通信。(2)命名管道(named pipe):命名管道克服了管道没有名字的限制,因此,除具有管道所具有的功能外,它还允许无亲缘关 系 进程间的通信。命名管道在文件系统中有对应的文件名。命名管道通过命令mkfifo或系统调用mkfifo来创建。(3)信号(Signa

2017-09-08 16:06:50 420

转载 线程的状态分析

线程状态通过查看Thread源码,可以看到里面定义了枚举类State,如下:public enum State { /** * 线程创建之后,但是还没有启动(not yet started)。这时候它的状态就是NEW */ NEW, /** * 正在Java虚拟机下跑任务的线程的状态。在RUNNABL

2017-09-08 11:20:24 485

原创 MySQl分表分库

一、综述1、需求分析随着数据量的增长,MySQL会有一系列问题,具体说来如下:(1)容量问题 单库包含多张表,部分单表容量过亿,磁盘存储不足(2)性能问题 单库处理能力有限,受制于连接池及机器资源等问题,TPS无法继续提升(3)扩展问题 单一主库无法灵活的进行升级和扩展,只能通过挂多个读库的方式进行扩展。 读库本身只能解决读的业务场景;且读库需要通过主库进行数据同步,如果数量过多主库压力也会

2017-09-06 15:54:22 1008

原创 this逃逸问题

当内部类代码执行的时候,外部类对象的创建过程很有可能还没结束,这个时候如果内部类访问外部类中的数据,很有可能得到还没有正确初始化的数据。public class ThreadThisEscape { private int weight = 0; public ThreadThisEscape() { new Thread(new EscapeRunnable()

2017-01-16 11:03:58 604

原创 Linux查看日志命令

1、cat命令:1)显示整个文件(常用)。示例: $ cat fileName2)把文件串连接后传到基本输出,如将几个文件合并为一个文件或输出到屏幕。示例: $ cat file1 file2 > file说明:把档案串连接后传到基本输出(屏幕或加 > fileName 到另一个档案)cat参数详解:-n 或 –number 由 1 开始对所有输出的行数编号-b 或 –number-n

2016-07-29 10:40:31 813

转载 web.xml文件详解

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰。 首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> f

2016-07-27 14:43:57 347

原创 Error、Exception分析

1、Throwable是Exception和Error类的父类 2、Exception分为可被控制(checked) 或不可控制的(unchecked) 可被控制(checked) : 该类直接继承自Exception,在java编译的时候就需要进行检查。因此在子类继承父类的同时或者其它方法调用该方法的时候,必须要抛出该异常或对异常进行处理。 该异常之所以被称为checked是因为必须要在

2016-07-27 14:41:47 530

原创 Spring Transaction Rollback

在使用编程方式进行spring的事务处理时,无需太考虑这个问题,可以再代码中显示的写上commit,rollback。 这里讨论的是如何在使用了aop进行spring事务管理如何进行事务回滚,也就是具体分析事务回滚的时机。Spring的AOP事务管理默认是针对unchecked exception回滚,也就是默认对RuntimeException()异常极其子类进行事务回滚。关于unchecked

2016-07-27 14:37:41 526

原创 mysql索引优化

本文讨论BTREE方式的索引详解b+树如上图,是一颗b+树,关于b+树的定义可以参见B+树,这里只说一些重点,浅蓝色的块我们称之为一个磁盘块,可以看到每个磁盘块包含几个数据项(深蓝色所示)和指针(黄色所示),如磁盘块1包含数据项17和35,包含指针P1、P2、P3,P1表示小于17的磁盘块,P2表示在17和35之间的磁盘块,P3表示大于35的磁盘块。 真实的数据存在于叶子节点即3、5、9、10、1

2016-07-25 20:48:05 313

原创 使用消息队列 实现 分布式事务处理

一、什么情景遇到分布式事务处理问题以经典的转钱案例:“A帐号向B帐号汇钱”,作为分析案例,一般来说该案例有以下几个过程:(1)从A帐号中把余额读出来 (2)对A帐号做减法操作 (3)把结果写回A帐号中 (4)从B帐号中把余额读出来 (5)对B帐号做加法操作 (6)把结果写回B帐号中以上6个步骤必须同时成功,同时失败。在我们的单系统应用中这个问题很好解决,只需要将这一系列操作放入一个事务中即

2016-07-25 14:29:24 6021

原创 获取Spring ROOT ApplicationContext 的几种方式

在spring中我们经常需要获取ROOT ApplicationContext, 以下就几种获取方式作分析:在使用spring的web项目中,在web.xml中有如下配置,进行spring的初始化:<listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-cla

2016-07-04 11:10:25 4073

原创 MySQL InnoDB 四种事务隔离级别

InnoDB默认是可重复读的(REPEATABLE READ)修改全局默认的事务级别,在my.inf文件的[mysqld]节里类似如下设置该选项(不推荐)transaction-isolation = {READ-UNCOMMITTED | READ-COMMITTED | REPEATABLE-READ | SERIALIZABLE}改变单个会话或者所有新进连接的隔离级别(推荐使用)SET [SE

2016-06-28 23:45:50 10851

原创 Cookie与Session深入理解(一)——Cookie

基本操作HttpServletRequest request;HttpServletResponse response//1、获取cookiesCookie[] cookieList = request.getCookies();//2、根据cookieName获取值,遍历cookieListString retValue = null;for (int i = 0; i < cookieL

2016-06-02 16:43:34 542

原创 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%

2016-05-25 16:25:14 7953

原创 ArrayList去除重复数据,排序

去除重复数据包括保持顺序和不保持顺序两个方法注意:因为借用了HashSet,所以判断重复需要重写 T 的hashCode()和equals()方法public class ListTools { /** * 删除重复元素,保持顺序 * @param list */ public static <T> void removeDuplicateWithOrde

2016-05-25 11:19:10 3287

原创 java hashCode() 与 equals()

用途hashCode()方法被用来获取给定对象的唯一整数。这个整数被用来确定对象被存储在Hash结构的集合类的元素存储位置。Object类默认的hashCode()方法返回这个对象存储的内存地址的编号。equals()判断两个对象是否相等。Object类默认的将会比较这个对象存储的内存地址的编号.重写 因为是继承自Object,所以直接重写该方法即可例如可以使用Apache Commons Lan

2016-05-25 10:39:42 362

转载 集合遍历

以下实例演示了如何遍历从Collection接口延伸出的List、Set和以键值对形式作存储的Map类型的集合,以下我们分别使用了普通for,增强型的 for ,iterator 等方式来遍历集合:List与Set类型集合的遍历/* author by w3cschool.cc Main.java */import java.util.ArrayList;import java.util.H

2016-05-24 17:56:15 339

原创 ThreadLocal

简介Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。使用public static final ThreadLocal holder = new ThreadLocal(); holder.set(“test”); // 存 ho

2016-05-24 17:40:53 463

原创 安装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

2016-05-19 17:47:10 579

原创 log4j使用说明

一、log4j.properties 的使用详解 1.输出级别 OFF < FATAL < ERROR < WARN < INFO < DEBUG < ALL级别越高,一般输出的信息越多ERROR 为严重错误 主要是程序的错误 WARN 为一般警告,比如session丢失 INFO 为一般要显示的信息,比如登录登出 DEBUG 为程序的调试信息建议:在调试的时候使用DEBUG 级别,上线后

2016-05-19 17:44:18 295

原创 Keepalived构建双主MySQL

MySQL主主:http://blog.csdn.net/chengshiep/article/details/50943221两台服务器 MySQL-master1:192.168.2.202 MySQL-master2:192.168.2.222 MySQL-VIP(虚拟ip):192.168.2.201MySQL-master1#修改防火墙设置vi /etc/sysconfig/ipt

2016-04-12 10:56:46 375

原创 MySQL数据库主主

查看目前httpd的工作模式apachectl -lcore.cprefork.c http_core.cmod_so.c表示apache当前的工作模式为prefork参考:http://51write.github.io/2014/04/10/apache-optimal/

2016-03-30 13:02:22 390

转载 类加载机制

加载类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象,作为方法区这个类的数据访问的入口。也就是说,当程序中使用任何类时,系统都会为之建立一个java.lang.Class对象。具体包括以下三个部分:(1)通过类的全名产生对应类的二进制数据流。(根据early load原理,如果没找到对应的类文件,只有在类实际使用时才会抛出错误)(2)分析并将这些二进制数据流

2016-03-17 15:41:30 315

原创 FIFO 、LRU、LFU三种算法

提到缓存,有两点是必须要考虑的: (1)缓存数据和目标数据的一致性问题。 (2)缓存的过期策略(机制)。 其中,缓存的过期策略涉及淘汰算法。常用的淘汰算法有下面几种: (1)FIFO:First In First Out,先进先出 (2)LRU:Least Recently Used,最近最少使用 (3)LFU:Least Frequently Used,最不经常使用

2016-03-17 11:50:55 1501

原创 redis 置换策略

noeviction: 不进行置换,表示即使内存达到上限也不进行置换,所有能引起内存增加的命令都会返回errorallkeys-lru: 优先删除掉最近最不经常使用的key,用以保存新数据volatile-lru: 只从设置失效(expire set)的key中选择最近最不经常使用的key进行删除,用以保存新数据allkeys-random: 随机从all-keys中选择一些key进行删除,用以保

2016-03-17 11:45:20 1591

转载 Redis 配置文件详解

(基于Redis 2.6)基础部分设置:daemonize no#默认情况下redis 不是以守护进程的模式运行。pidfile /var/run/redis.pid#在守护进程模式下,pid进程号文件路径的存储位置port 6379#监听的端口号,设置为0的话,redis不会对tcp 连接进行监听;bind 127.0.0.1  #绑定

2016-03-17 11:35:19 300

转载 深入理解Redis主键失效原理及实现机制

作为一种定期清理无效数据的重要机制,主键失效存在于大多数缓存系统中,Redis 也不例外。在 Redis 提供的诸多命令中,EXPIRE、EXPIREAT、PEXPIRE、PEXPIREAT 以及 SETEX 和 PSETEX 均可以用来设置一条 Key-Value 对的失效时间,而一条 Key-Value 对一旦被关联了失效时间就会在到期后自动删除(或者说变得无法访问更为准确)。可以说,主键失效这

2016-03-17 10:47:14 711

原创 Java 构造函数中的super()

public class Test { public static void main(String[] args) { new Son("baidu"); new Son(); } } class Farther{ public Farther(){ System.out.println("I a

2016-03-17 09:50:43 1120 1

原创 JVM:编译加载与自定义类加载器

编译机制编译主要是把 .java 文件转换为 .class 文件。其中转换后的 .class 文件就包含了元数据,方法信息等一些信息。比如说元数据就包含了 Java 文件中声明的常量,也就是我们所说的常量池。类加载机制JVM 是通过 一个称为 ClassLoader 的东西 来加载 class 文件,每当 JVM 启动的时候,就会产生 三个 ClassLoader,它们分别是Bootstrap Lo

2016-03-16 13:48:44 324

原创 JVM:垃圾回收问题

在什么时候回收首先需要知道,GC又分为minor GC 和 Full Gc。Java 堆内存分为新生代和老年代,新生代中又分为1个Eden区域 和两个 Survivor区域,当Eden区域内存不足的时候,就会触发minor GC,当老年代内存不足的时候,就会触发Full GC。但是,具体到什么时刻执行,这个是由系统来进行决定,是无法预测的。哪些需要回收主要根据可达性分析算法,如果一个对象不可达,那么

2016-03-16 10:07:11 305

原创 JVM:内存溢出问题

Java虚拟机规范规定JVM的内存分为了好几块,比如堆,栈,程序计数器,方法区等,而Hotspot jvm的实现中,将堆内存分为了两部:新生代,老年代。在堆内存之外,还有永久代,其中永久代实现了规范中规定的方法区,而内存模型中不同的部分都会出现相应的OOM错误,接下来我们就分开来讨论一下。栈溢出(StackOverflowError) 栈溢出抛出StackOverflowError错误,出现此种

2016-03-16 09:52:43 353

原创 JVM:内存结构和相关参数

Java 整体内存结构 JVM内存区域分为PC寄存器,JVM方法栈,本地方法栈,JVM方法区,JVM堆PC寄存器:存放下一条指令在方法中的偏移量。也可以看做是线程所执行的字节码的行号指示器,字节码解释器的工作就是通过改变这个计数器的值来选取下一条需要执行的指令。JVM方法栈:PC寄存器,JVM方法栈,和本地方法栈都是线程私有。在JVM方法栈有,有局部变量区和操作数区。人们经常说的JVM内存分为堆内

2016-03-16 09:32:01 379

原创 设计模式—策略模式

策略模式 策略模式定义了一系列算法,并将每个算法封装起来,使他们可以相互替换,且算法的变化不会影响到使用算法的客户。需要设计一个接口,为一系列实现类提供统一的方法,多个实现类实现该接口,设计一个抽象类(可有可无,属于辅助类),提供辅助函数。首先统一接口public interface ICalculator { public int calculate(String exp); }

2016-03-13 14:58:10 305

原创 设计模式—代理模式

动态代理不需要对每个类,都重写代理类。 代码如下:接口类Calculator.javapackage dproxy;public interface Calculator { int add(int a,int b);}接口实现类CalculatorImpl.javapackage dproxy;public class CalculatorImpl implements Calcul

2016-03-11 14:07:32 324

原创 redis使用watch秒杀抢购思路

1、使用watch,采用乐观锁 2、不使用悲观锁,因为等待时间非常长,响应慢 3、不使用队列,因为并发量会让队列内存瞬间升高测试代码:import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;import redis.clients.jedis.Jedis;/** * redis测试抢购

2016-03-10 11:06:19 1589 1

原创 redis命令总结

来自:http://redisdoc.com/这里不全,参考上面链接public class RedisTest { public static void main(String[] args){ Jedis jedis = new Jedis("192.168.3.202", 6379); try{ jedis.set("foo",

2016-03-09 16:11:57 661

原创 MySQL中的隔离级别和悲观锁及乐观锁示例

MySQL的事务支持 MyISAM:不支持事务,用于只读程序提高性能 InnoDB:支持ACID事务、行级锁、并发 隔离级别(主要对于InnoDB而言) 隔离级别决定了一个session中的事务可能对另一个session的影响、并发session对数据库的操作、一个session中所见数据的一致性 ANSI标准定义了4个隔离级别,MySQL的InnoDB都支持:1、READ UNCOMM

2016-03-09 10:10:51 652

原创 消息队列ActiveMQ(二)——安全配置

ActiveMQ分为2个安全配置:一个是Web控制台的安全配置;另外一个是对于队列/主题的访问安全配置。Web控制台的安全配置打开conf/jetty.xml文件,找到<bean id="securityConstraint" class="org.eclipse.jetty.util.security.Constraint"> <property name="name" value

2016-03-05 22:47:50 3935

原创 消息队列ActiveMQ(一)——Queue方式和Topic方式

下载地址 http://activemq.apache.org/download.html,这里下载的版本是5.13.0windows下安装 直接解压缩,运行apache-activemq-5.13.0\bin\win64\wrapper.exe文件,32位的运行win32目录下该文件目录说明 +bin (windows下面的bat和unix/linux下面的sh) +conf (ac

2016-03-04 17:56:05 4908

原创 Java多线程之concurrent包(六)——CountDownLatch

CountDownLatch是减计数方式,计数==0时释放所有等待的线程;CountDownLatch当计数到0时,计数无法被重置;CountDownLatch每次调用countDown()方法计数减一,调用await()方法只进行阻塞,对计数没任何影响;示例代码:public class TestCountDownLatch { private static final int N = 1

2016-03-03 14:51:41 421

mhash-0.9.9.9.tar.gz

mhash-0.9.9.9.tar.gz

2015-07-20

cmake-2.8.8.tar.gz

cmake-2.8.8.tar.gz

2015-07-20

android超高仿微信

android 高仿微信源码,谁用谁知道

2014-07-30

weblogic安装部署集成

详细介绍了weblogic下载安装,部署,以及与eclipse集成

2014-03-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除