- 浏览: 289521 次
- 性别:
- 来自: 北京
-
最新评论
-
dengfj:
session = sessionFactory. ...
Activiti源码分析 -
xewsk:
CommandContextIntercepter Inter ...
Activiti源码分析 -
XiaoFan012:
关于所谓的缓存,我理解它实际只是在一个session内部的小缓 ...
Activiti源码分析 -
liyonghui160com:
zmf829 写道感觉有个bug, for (Future&l ...
java异步计算Future的使用 -
zmf829:
感觉有个bug, for (Future<String& ...
java异步计算Future的使用
文章列表
tcp状态:
LISTEN:侦听来自远方的TCP端口的连接请求SYN-SENT:再发送连接请求后等待匹配的连接请求SYN-RECEIVED:再收到和发送一个连接请求后等待对方对连接请求的确认ESTABLISHED:代表一个打开的连接FIN-WAIT-1:等待远程TCP连接中断请求,或先前的连接中断请求的确认FIN-WAIT-2:从远程TCP等待连接中断请求CLOSE-WAIT:等待从本地用户发来的连接中断请求CLOSING:等待远程TCP对连接中断的确认LAST-ACK:等待原来的发向远程TCP的连接中断请求的确认TIME-WAIT:等待足够的时间以确保远程TCP接收到连接中断请求 ...
关于java的CountDownLatch。Latch:门闩之意。
CountDownLatch经常用来在多线程环境下,主线程协调多个子线程的步调。生活中最相似的场景就是运动员比赛,裁判员(主线程)控制比赛的开始和结束,运动员(子线程)完成自己的比赛,当且仅当所有运动员都完成比赛时,裁判员就可以下令整场比赛结束。下面转载网友针对上述场景的模拟代码,以便更好地理解CountDownLatch的使用。
import java.util.concurrent.CountDownLatch;2 import java.util.concurrent.Executor;3 impo ...
java.util.HashMap类提供了静态的hash方法和indexFor方法:
/*** Applies a supplemental hash function to a given hashCode, which* defends against poor quality hash functions. This is critical* because HashMap uses power-of-two length hash tables, that* otherwise encounter collisions for hashCodes that do not dif ...
刚接触db,索引貌似还是一个高级货,那么多新名词,新概念让人很晕,其实索引真的很简单。我们知道IO操作是数据库访问很耗时的操作,应该尽量避免。索引就是在内存中(当然如果索引太大,也可能在硬盘固定的,连续的存储块中)建立一个真实数据的映射,通过索引,我们确定要找的数据范围,然后再通过尽量少的IO到硬盘上把目标数据抓回来。以下是可以作为索引的数据结构,其中mysql采用的是B+树。
顺序文件:几种简单的文件组织,其产生方式是将数据文件按某个查找键排序,并在该文 件上建立索引。 • 稠密索引:这种索引为数据文件的每个记录设一个键-指针对。这些键-指针对按它们的键 值顺序存放。 • 稀疏索引:这些索 ...
在jvm规范中,每个类型都有自己的常量池。常量池是某类型所用常量的一个有序集合,包括直接常量(基本类型,String)和对其他类型、字段、方法的符号引用。之所以是符号引用而不是像c语言那样,编译时直接指定其他类型,是因为java是动态绑定的,只有在运行时根据某些规则才能确定具体依赖的类型实例,这正是java实现多态的基础。
为了对常量池有更具体的认识,下面引用几个例子:
1,常量池中对象和堆中的对象
#是否以后台进程运行,默认为no,如果需要以后台进程运行则改为yes
daemonize no
#如果以后台进程运行的话,就需要指定pid,你可以在此自定义redis.pid文件的位置。
pidfile /var/run/redis.pid
#接受连接的端口号,如果端口是0则redis将不会监听TCP socket连接
port 6379
# If you want you can bind a single interface, if the bind option is not
# specified all the interfaces wi ...
jedis是Redis官网推荐的java客户端实现。下面分析一下JedisPool的实现
JedisPool源码如下:
package redis.clients.jedis;
import org.apache.commons.pool.impl.GenericObjectPool.Config;
import redis.clients.util.Pool;
public class JedisPool extends Pool<Jedis>
{
public JedisPool(GenericObjectPool.Config poolCo ...
先以两个问题开篇:
1.如果一个类有多个子类,那么new多个子类对象时,父类的对象是一个还是多个?
2.每个类型有一个常量池,还是每个对象都有自己的常量池?
你可以很快地正确回答吗?了解了java虚拟机方法区的原理,这两个问题就很清晰了。
java虚拟机把内存划分为方法区、堆和线程栈。简单说方法区用来存储类型的元数据信息,一个.class文件是类被java虚拟机使用之前的表现形式,一旦这个类要被使用,java虚拟机就会对其进行装载、连接(验证、准备、解析)和初始化。而装载(这里涉及到类加载器的相关理论)后的结果就是由.clas
理论部分
包的复用原则可以分为两大类
组件的内聚性原则:粒度
重用-发布等价原则(Reuse-Release Equialence Principle, REP)
重用的粒度就是发布的粒度。
你自己如果是某个可重用组件(包)的用户,这个组件(包 ...
括号使用规则
If表达式必须使用{},无论有多少语句
错误实例:
public class Foo {
public void bar() {
int x = 0;
if (foo) x++;//if(foo){x++;}
用以判断JVM是否存在内存问题呢?如何判断JVM垃圾回收是否正常?一般的top指令基本上满足不了这样的需求,因为它主要监控的是总体的系统资源,很难定位到java应用程序。
Jstat是JDK自带的一个轻量级小工具。全称 ...
为什么需要锁?
因为数据库要解决并发控制问题。在同一时刻,可能会有多个客户端对Table1.rown进行操作,比如有的在读取该行数据,其他的尝试去删除它。为了保证数据的一致性,数据库就要对这种并发操作进行控制,因此就有了锁的概念。
锁的分类
从对数据操作的类型(读\写)分
读锁(共享锁):针对同一块数据,多个读操作可以同时进行而不会互相影响。
写锁(排他锁):当当前写操作没有完成前,它会阻断其他写锁和读锁。
从锁定的数据范围分
表锁
行锁
为了尽可能提高数据库的并发度,每次锁定的数据范围越小越好,理论上每次只锁定当前操作的数据的方案会得到最大的并发度,但是管理锁是很耗资 ...
AUTOCOMMIT
Mysql默认自动提交,可以通过如下命令查看和修改:
mysql> SHOW VARIABLES LIKE 'AUTOCOMMIT';+---------------+-------+| Variable_name | Value |+---------------+-------+| autocommit | ON |+---------------+-------+1 row in set (0.00 sec)mysql> SET AUTOCOMMIT = 1;
隐式锁显式锁
InnoDB在开启事务时,获取隐式锁,在事务提交或者回滚时释放锁,In ...
最关心的是MyIsam和InnoDB两种。
MyIsam:
存储文件:
数据文件:.MYD
索引文件:.MYI
特点:
表锁,不支持事务,支持全文索引,支持对TEXT和BLOB类型建立索引
数据恢复貌似很慢,因为没有log
InnoDB:
特点:
行锁,支持事务,数据恢复块,因为有binlog
曾经有人问:数据量很大,不需要事务支持,使用哪种存储引擎好?