- 博客(62)
- 资源 (7)
- 收藏
- 关注
转载 HashMap的扩容机制---resize() &; 死循环的问题
1.8 与1.7 变化较大,http://www.cnblogs.com/RGogoing/p/5285361.html学习内容:1.HashMap<K,V>在多线程的情况下出现的死循环现象 当初学Java的时候只是知道HashMap<K,V>在并发的情况下使用的话,会出现线程安全问题,但是一直都没有进行深入的研究,也是最近实验室的徒弟在问起这个问题...
2017-03-22 15:34:32 13327 5
转载 Java虚拟机解析篇之---内存模型
今天闲来无事来,看一下Java中的内存模型和垃圾回收机制的原理,关于这个方面的知识,网上已经有很多现成的资料可以供我们参考,但是知识还是比较杂的,在这部分知识点中有一本书不得不推荐:《深入理解Java虚拟机》,现在已经是第二版了。这本书就从头开始详细介绍了Java整个虚拟机的模型以及Java的类文件结构,加载机制等。这里大部分的知识点都是可以在这本书中找到的,当然我是主要还是借鉴这本书中的很多内容
2017-03-03 17:49:05 1362
转载 Linux常用系统管理命令(top、free、kill、df)
http://www.jb51.net/LINUXjishu/86334.html一、 top1.作用top命令用来显示执行中的程序进程,使用权限是所有用户。2.格式top [-] [d delay] [q] [c] [S] [s] [i] [n]3.主要参数d:指定更新的间隔,以秒计算。q:没有任何延迟的更新。如果使用者有超级用户,则top命令将会以最高的优先序执行。...
2017-03-31 12:19:38 2821
转载 Linux Swap交换分区介绍总结
Swap交换分区概念 什么是Linux swap space呢?我们先来看看下面两段关于Linux swap space的英文介绍资料: Linux divides its physical RAM (random access memory) into chucks of memory called pages. Swapping is the process whereby a
2017-03-31 11:45:57 864
转载 轻松理解MYSQL MVCC 实现机制
1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用. 大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,...
2017-03-31 11:26:47 1457 1
转载 数据库ACID、隔离级别与MVCC
首先需要明确事务的概念:一组原子性的SQL查询,如果数据库引擎能够成功的对数据库应用该组查询的全部语句,那么就执行该组语句,否则所有语句都不执行。事务有ACID四个特性,即:原子性:一个事务是一个不可分割的最小工作单元,其操作要么全部成功,要么全部失败;一致性:数据库总是从一个一致性状态转换为另一个一致性状态。所谓一致性状态,就是数据库的所有完整性约束(尤其注意用户定义约束
2017-03-31 11:25:56 1161
转载 分布式锁实现方案(REDIS,ZOOKEEPER,TAIR)
Zookeeper1、原生ZK方案Zookeeper中有一种节点叫做顺序节点,假如我们在/lock/目录下创建节3个点,ZooKeeper集群会按照提起创建的顺序来创建节点,节点分别为/lock/0000000001、/lock/0000000002、/lock/0000000003。ZooKeeper中还有一种名为临时节点的节点,临时节点由某个客户端创建,当客户端与Zoo
2017-03-30 13:25:12 8498
转载 Redis学习笔记--Redis持久化
Redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持四种持久化方式,一是 Snapshotting(快照)也是默认方式;二是Append-only file(缩写aof)的方式;三是虚拟内存方式;四是diskstore方式。下面分别介绍之。(一)Snapshotting 快照是默认的持久化方式。这种方
2017-03-30 13:19:51 811
转载 Java和groovy相互调用
java interfaceJava代码 package groovy; public interface IFoo { public Object run(Object foo, Object bar); } groovy implementsJava代码 package gro
2017-03-28 18:21:28 5211
转载 JAVA与groovy脚本的结合使用
java执行groovy shell脚本org.codehaus.groovygroovy-all2.4.0-beta-1添加groovy jar包支持====================================================package groovy;import groo
2017-03-28 17:35:01 5268
转载 ThreadPoolExecutor使用和思考(中)-keepAliveTime及拒绝策略
工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。 前记: jdk官方文档(javadoc)是学习的最好,最权威的参考。文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(Synch
2017-03-27 11:37:48 1181
转载 ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
工作中多处接触到了ThreadPoolExecutor。趁着现在还算空,学习总结一下。前记:jdk官方文档(javadoc)是学习的最好,最权威的参考。 文章分上中下。上篇中主要介绍ThreadPoolExecutor接受任务相关的两方面入参的意义和区别,池大小参数corePoolSize和maximumPoolSize,BlockingQueue选型(SynchronousQue...
2017-03-27 11:15:38 1032
转载 再聊线程池
引言最近恰好在组内分享线程池,又看了看四年前自己写的线程池文章,一是感叹时光荏苒,二是感叹当时的理解太浅薄了,三是感叹自己这么多年依然停留在浅薄的理解当中,没有探究其实现,羞愧难当。遂把分享的内容整理出来,希望能够让读者对线程池有一个全新的认识。池化这里池化并不是深度学习中的池化,而是将资源交给池来管理的这一过程。我们在开发中经常回接触到池化资源的技术,最常见的当然是数据库连接池,以及...
2017-03-27 11:10:46 892
转载 Java线程(篇外篇):线程本地变量ThreadLocal
首先说明ThreadLocal存放的值是线程内共享的,线程间互斥的,主要用于线程内共享一些数据,避免通过参数来传递,这样处理后,能够优雅的解决一些实际问题,比如hibernate中的OpenSessionInView,就是使用ThreadLocal保存Session对象,还有我们经常用ThreadLocal存放Connection,代码如:[java]view plain
2017-03-27 10:23:49 1265
转载 Java线程(十一):Fork/Join-Java并行计算框架
并行计算在处处都有大数据的今天已经不是一个新鲜的词汇了,现在已经有单机多核甚至多机集群并行计算,注意,这里说的是并行,而不是并发。严格的将,并行是指系统内有多个任务同时执行,而并发是指系统内有多个任务同时存在,不同的任务按时间分片的方式切换执行,由于切换的时间很短,给人的感觉好像是在同时执行。 Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题
2017-03-24 21:32:24 2040 1
转载 Java线程(十):CAS
前言 在Java并发包中有这样一个包,java.util.concurrent.atomic,该包是对Java部分数据类型的原子封装,在原有数据类型的基础上,提供了原子性的操作方法,保证了线程安全。下面以AtomicInteger为例,来看一下是如何实现的。[java] view plain copy print?public fin
2017-03-24 19:56:03 870
转载 MySQL中merge表存储引擎用法
在Mysql数据库中,Merge表有点类似于视图。mysql的merge引擎类型允许你把许多结构相同的表合并为一个表。之后,你可以执行查询,从多个表返回的结果就像从一个表返回的结果一样。每一个合并的表必须有完全相同表的定义和结构。Mysql Merge表的优点:A. 分离静态的和动态的数据B. 利用结构接近的的数据来优化查询C. 查询时可以访问更少的数据D. 更容易维护大数
2017-03-24 19:10:08 998
转载 Mysql分库分表方案
Mysql分库分表方案1.为什么要分表:当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了。分表的目的就在于此,减小数据库的负担,缩短查询时间。mysql中有一种机制是表锁定和行锁定,是为了保证数据的完整性。表锁定表示你们都不能对这张表进行操作,必须等我对表操作完才行。行锁定也一样,别的sql必须等我对这条数据操作完了,才能对这条数据进行
2017-03-24 19:08:13 795
转载 MySQL分库分表总结参考
单库单表单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有的读写
2017-03-24 19:06:17 3936 1
转载 线程的五大状态
线程从创建、运行到结束总是处于下面五个状态之一:新建状态、就绪状态、运行状态、阻塞状态及死亡状态。 1.新建状态(New): 当用new操作符创建一个线程时, 例如new Thread(r),线程还没有开始运行,此时线程处在新建状态。 当一个线程处于新生状态时,程序还没有开始运行线程中的代码 2.就绪状态(Runnable)
2017-03-24 14:39:18 981
转载 java之yield(),sleep(),wait()区别详解-备忘笔记
1、sleep()使当前线程(即调用该方法的线程)暂停执行一段时间,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORITY,另一个为MIN_PRIORITY,如果没有Sleep()方法,只有高优先级的
2017-03-24 14:28:30 1056
转载 Java线程(四):线程中断、线程让步、线程睡眠、线程合并
本文来自:高爽|Coder,原文地址:http://blog.csdn.net/ghsau/article/details/17560467,转载请注明。 最近在Review线程专栏,修改了诸多之前描述不够严谨的地方,凡是带有Review标记的文章都是修改过了。本篇文章是插进来的,因为原来没有写,现在来看传统线程描述的不太完整,所以就补上了。理解了线程同步和线程通信之后,再来看本文
2017-03-24 14:26:12 1365
转载 1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵(递归)
题目:1,2,3…n*n 的数字按照顺时针螺旋的形式打印成矩阵,如下:输入数字2,则程序输出:1 24 3输入数字3,则程序输出:1 2 38 9 47 6 5输入数字4, 则程序输出:1 2 3 412 13 14 511 16 15 610 9 8 7此题我的解题方法是递归,递归函数的作用
2017-03-24 13:54:25 2320
转载 设计模式——Spring IoC中用到的模板方法模式
http://www.cnblogs.com/gnidoc/p/4981447.html基本概念什么是模板方法(Template method):父类定义了骨架(调用哪些方法及顺序),某些特定方法由子类实现。最大的好处:代码复用,减少重复代码。除了子类要实现的特定方法,其他方法及方法调用顺序都在父类中预先写好了。所以父类模板方法中有两类方法:1、共同的方
2017-03-24 10:55:23 7767 1
转载 JAVA – 虚函数、抽象函数、抽象类、接口
Java – 虚函数、抽象函数、抽象类、接口1. Java虚函数虚函数的存在是为了多态。C++中普通成员函数加上virtual关键字就成为虚函数Java中其实没有虚函数的概念,它的普通函数就相当于C++的虚函数,动态绑定是Java的默认行为。如果Java中不希望某个函数具有虚函数特性,可以加上final关键字变成非虚函数PS: 其实C++和Java在虚函数的观点大同小异
2017-03-22 17:05:01 1239
转载 聊聊JVM的年轻代
http://ifeve.com/jvm-yong-generation/1.为什么会有年轻代我们先来屡屡,为什么需要把堆分代?不分代不能完成他所做的事情么?其实不分代完全可以,分代的唯一理由就是优化GC性能。你先想想,如果没有分代,那我们所有的对象都在一块,GC的时候我们要找到哪些对象没用,这样就会对堆的所有区域进行扫描。而我们的很多对象都是朝生夕死的,如果分代的话,我们把新
2017-03-22 16:51:39 848
转载 为什么新生代内存需要有两个Survivor区
在JVM的新生代内存中,为什么除了Eden区,还要设置两个Survivor区?1 为什么要有Survivor区先不去想为什么有两个Survivor区,第一个问题是,设置Survivor区的意义在哪里? 如果没有Survivor,Eden区每进行一次Minor GC,存活的对象就会被送到老年代。老年代很快被填满,触发Major GC(因为Major GC一般伴随着Mino
2017-03-22 16:21:24 1013
转载 用Linux命令行生成随机密码的十种方法
Linux操作系统的一大优点是对于同样一件事情,你可以使用高达数百种方法来实现它。例如,你可以通过数十种方法来生成随机密码。本文将介绍生成随机密码的十种方法。这些方法均收集于Command-Line Fu,并且在我们自己的Linux PC机上测试过。这十种方法的一些在安装了Cygwin的Windows下也是可以运行的,特别是最后一种方法。生成一个随机密码对于下面的任何一种方法,你可...
2017-03-22 10:52:34 1029
转载 Guava学习笔记:Preconditions优雅的检验参数
在日常开发中,我们经常会对方法的输入参数做一些数据格式上的验证,以便保证方法能够按照正常流程执行下去。对于可预知的一些数据上的错误,我们一定要做事前检测和判断,来避免程序流程出错,而不是完全通过错误处理来保证流程正确执行,毕竟错误处理是比较消耗资源的方式。在平常情况下我们对参数的判断都需要自己来逐个写方法判断,代码量不少并且复用性不高,如下所示:import org.junit.Test;
2017-03-21 18:07:11 1512
转载 漫画算法:辗转相除法是什么鬼?
http://blog.jobbole.com/106315/小灰的思路十分简单。他使用暴力枚举的方法,试图寻找到一个合适的整数 i,看看这个整数能否被两个整型参数numberA和numberB同时整除。这个整数 i 从2开始循环累加,一直累加到 numberA 和 numberB 中较小参数的一半为止。循环结束后,上一次寻找到的能够被两数整除的最大 i 值,就是两数的最大公约
2017-03-21 15:16:33 1593
转载 辗转相除法证明+最小公倍数证明+其他相关证明
辗转相除算法的简介 在数论中,辗转相除法(国际上一般称为Euclidean Algorithm 或 Euclid's Algorithm,即欧几里得算法)是一种求任意两个欧几里得环(Euclidean Domain)中的单位(如:整数)的最大公约数的算法。这个算法的一个重要特点就是其不需要通过分解因式来求取最大公约数。辗转相除法正因为其易操作性与易实现性而成为了计算机编程中的一个重要
2017-03-20 15:05:16 1721
转载 Java常见的几种排序算法-插入、选择、冒泡、快排、堆排等
本文就是介绍一些常见的排序算法。排序是一个非常常见的应用场景,很多时候,我们需要根据自己需要排序的数据类型,来自定义排序算法,但是,在这里,我们只介绍这些基础排序算法,包括:插入排序、选择排序、冒泡排序、快速排序(重点)、堆排序、归并排序等等。看下图:给定数组:int data[] = {9,2,7,19,100,97,63,208,55,78}一、直接插入排序(内部排
2017-03-20 12:08:38 3855
转载 分布式模式之Broker模式
问题来源: 创建一个游戏系统,其将运行在互联网的环境中。客户端通过WWW服务或特定的客户端软件连接到游戏服务器,随着流量的增加,系统不断的膨胀,最终后台数据、业务逻辑被分布式的部署。然而相比中心化的系统,复杂度被无可避免的增大了,该如何降低各个组件之间的耦合度。挑战: 需要保证可伸缩性、可维护性、可更新性,需要将服务划分为各个相对独立的组件,组件被分布式的部署,它们之间通过进程间通信方
2017-03-20 10:56:27 3669
转载 Linux中cat、more、less、tail、head命令的区别
http://www.cnblogs.com/losbyday/p/5856106.html一、cat 显示文件连接文件内容的工具cat 是一个文本文件(查看)和(连接)工具,通常与more搭配使用,与more不同的是cat可以合并文件。查看一个文件的内容,用cat比较简单,就是cat后面直接接文件名。如:root@ubuntu:/# cat /etc/passwd...
2017-03-19 12:59:14 2162
转载 Java类的加载,以及静态内部类的问题。
http://blog.csdn.net/lengyueaiq/article/details/511430641、属性的加载以及初始化的问题当要实例化一个类时,JVM会首先加载该类,并且在加载过程中检查这个类是否有静态属性以及静态代码块,如果有,就按顺序分配内存并初始化他们,并且只在类加载的过程中初始化一次。对于构造代码块,以及普通属性,是在类实例化时进行的,
2017-03-18 21:59:11 2779
转载 加载一个类时,其内部类是否同时被加载?静态内部类单例模式
加载一个类时,其内部类是否同时被加载?下面我们做一个实验来看一下。 Java代码 public class Outer { static { System.out.println("load outer class..."); } //静态内部类 static class
2017-03-18 21:45:59 1223
转载 使用Curator操作ZooKeeper
Curator是Netflix公司开源的一个ZooKeeper client library,用于简化ZooKeeper客户端编程。它包含如下模块:Framework:Framework是ZooKeeper API的High-Level的封装,它让访问ZooKeeper更加简单。它基于ZooKeeper添加了一些新的特性,同时屏蔽了访问ZooKeeper集群在管理连接和重试操作方面的复杂度
2017-03-17 16:48:25 2830
转载 Spring Validation Example – Spring MVC Form Validator
转自:http://www.journaldev.com/2668/spring-validation-example-mvc-validatorWhen we accept user inputs in any web application, it become necessary to validate them. We can validate the user inp
2017-03-16 15:11:00 1458
Zookeeper资源文件
2017-03-20
Zookeeper基础知识
2017-03-20
Zookeeper初识
2017-03-20
使用exe4j 制作java启动程序的 等候界面
2014-06-12
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人