自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浅谈ZooKeeper分布式锁(来自LJ)

目前的应用系统,大部分都是分布式部署的,分布式应用中的数据一致性问题是每个系统都要面临的问题,分布式的CAP理论告诉我们“一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足两项。”,所以在对一个分布式系统架构设计的过程中,往往会在系统的可用性和数据一致性之...

2018-09-21 19:44:29 320

转载 Spring中的bean,factoryBean,beanFactory

1 普通Bean的创建    spring 中的普通bean的创建是通过读取配置文件,将所有配置文件信息保存到beandefinition中,在使用getbean的时候通过反射创建实例,然后再将属性值填充。 1.1  普通bean的注入方式  1)   使用构造器注入 Java代码                     2)   使用s

2017-03-26 16:56:44 374

转载 什么是跨域?怎么解决跨域问题?

什么是跨域?跨域,指的是浏览器不能执行其他网站的脚本。它是由浏览器的同源策略造成的,是浏览器对javascript施加的安全限制。所谓同源是指,域名,协议,端口均相同,不明白没关系,举个栗子:http://www.123.com/index.html 调用 http://www.123.com/server.php (非跨域)http://www.123.com/i

2017-03-06 15:18:09 263

转载 web.xml中load-on-startup的作用

web.xml中load-on-startup的作用如下一段配置,熟悉DWR的再熟悉不过了:   dwr-invoker   org.directwebremoting.servlet.DwrServlet       debug    true      1   dwr-invoker   /dwr/*我们注意到它里面包含了这段配置:1

2017-03-06 14:26:33 279

原创 SpringMVC 上传文件大小的限制问题

项目中上传文件遇见 java.lang.IllegalStateException: File has been moved - cannot be read again  ,但发现文件是正确的,原因是因为,需要配置配置加个参数1638400这个默认是10K  设成16M好了  大于这个大小的文件会放到临时目录 当你读取的时候 判断的avaliable参数是false  因

2017-02-23 12:09:44 2964

转载 分布式服务框架原理(一)设计和实现

分布式服务框架设计分布式服务框架一般可以分为以下几个部分,(1)RPC基础层:包括底层通信框架,如NIO框架、通信协议,序列化和反序列化协议,以及在这几部分上的封装,屏蔽底层通信细节和序列化方式差异(2)服务发布/消费:服务提供者根据消费者请求消息中的接口名,方法名,参数列表等信息,通过Java反射,调用本地的接口实现类;服务消费者将服务提供者发布的接口封装成远程服务调

2017-02-15 14:09:59 271

转载 SSL工作原理

关键词:SSL,PKI,MAC摘    要:SSL利用数据加密、身份验证和消息完整性验证机制,为基于TCP等可靠连接的应用层协议提供安全性保证。本文介绍了SSL的产生背景、安全机制、工作过程及典型组网应用。缩略语:缩略语英文全名中文解释AESAdvanced Encryption Standard

2017-02-10 10:53:22 283

转载 java.util.BitSet 研究

java.util.BitSet可以按位存储。计算机中一个字节(byte)占8位(bit),我们java中数据至少按字节存储的,比如一个int占4个字节。如果遇到大的数据量,这样必然会需要很大存储空间和内存。如何减少数据占用存储空间和内存可以用算法解决。java.util.BitSet就提供了这样的算法。比如有一堆数字,需要存储,source=[3,5,6,9]用i

2016-12-21 20:28:53 190

转载 mysql length与char_length用法区别

length:   是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符char_length:不管汉字还是数字或者是字母都算是一个字符建表时的那个长度与 与 char_length 相同

2016-12-05 14:25:47 367

转载 聚簇索引和非聚簇索引以及二级索引

聚簇索引和非聚簇索引。这是索引的两种类型。在聚簇索引中,索引树的叶级页包含实际的数据:记录的索引顺序与物理顺序相同。在非聚簇索引中,叶级页指向表中的记录:记录的物理顺序与逻辑顺序没有必然的联系。关于mysql是否支持聚簇索引的问题:我用标准sql尝试建立聚簇索引会出错,如类似这样的sql:CREATE CLUSTERED INDEX mycolumn_clust_index ON

2016-11-29 13:41:44 485

转载 JAVA的Random类(转)

Random类 (java.util)          Random类中实现的随机算法是伪随机,也就是有规则的随机。在进行随机时,随机算法的起源数字称为种子数(seed),在种子数的基础上进行一定的变换,从而产生需要的随机数字。相同种子数的Random对象,相同次数生成的随机数字是完全相同的。也就是说,两个种子数相同的Random对象,第一次生成的随机数字完全相同,第二次生成的随机数字也

2016-11-22 16:04:41 154

转载 字节流与字符流的区别详解

字节流与字符流先来看一下流的概念:在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是

2016-11-21 18:21:43 194

转载 字节流与字符流的区别详解

字节流与字符流先来看一下流的概念:在程序中所有的数据都是以流的方式进行传输或保存的,程序需要数据的时候要使用输入流读取数据,而当程序需要将一些数据保存起来的时候,就要使用输出流完成。程序中的输入输出都是以流的形式保存的,流中保存的实际上全都是字节文件。字节流与字符流在java.io包中操作文件内容的主要有两大类:字节流、字符流,两类都分为输入和输出操作。在字节流中输出数据主要是

2016-11-21 18:20:36 182

转载 Java:对象的强、软、弱和虚引用

本文介绍对象的强、软、弱和虚引用的概念、应用及其在UML中的表示。author: ZJ 07-12-1Blog: [url]http://zhangjunhd.blog.51cto.com/[/url]1.对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使

2016-11-16 12:08:59 129

转载 MySQL中的锁(表锁、行锁)

锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。 概述    相对其他数据库而言,MySQL的锁机制

2016-11-10 15:19:33 262 1

原创 关于java数组复制与多态

首先有三个类,如下所示public class Apple { private String appleName; private String appleColor; private String appleProvider; public Apple() { } public void setAppleC

2016-11-03 16:36:00 328

原创 Java基本类型注意点

1  java 7 支持数字字面量加下划线 如 1_000_000.2  java 的所有的数值类型所占的自己数量与平台无关(64位,32位无关不像C++那样),且没有任何的无符号类型3  double有效位15位,float有效位6~7位,浮点数值不适用禁止出现误差的金融计算例如 double a = (2-1.1)此时 a=0.8999999999999999 而不是0.9,此时需要使

2016-11-01 15:41:18 178

转载 理解CAS算法在JAVA中的作用

在JDK 5之前Java语言是靠synchronized关键字保证同步的,这会导致有锁。锁机制存在以下问题:(1)在多线程竞争下,加锁、释放锁会导致比较多的上下文切换和调度延时,引起性能问题。(2)一个线程持有锁会导致其它所有需要此锁的线程挂起。(3)如果一个优先级高的线程等待一个优先级低的线程释放锁会导致优先级倒置,引起性能风险。volatile是不错的机制,但是volati

2016-10-27 20:17:56 159

转载 冷热数据分离注意的问题

web产品最重要的核心单元无疑是数据,而主流的存储容器则是Mysql,对于快速增长的数据,其性能可能会呈指数级的递减,为解决该问题,主流的做法基本是水平和垂直拆分,根据数据的特性将数据进行库和表级的拆分,实际上的理论还是数据分割,但是终有一天你会发现单表的数据还是越来越大,也许你可以说我再拆分,可拆分的代价可能就是部署多次方的辅库.存储容量可能会让你很吃惊,而且这样的做法有没有人真正去想有用吗?很

2016-10-13 15:39:10 4005

转载 [MySQL] 浅谈 MySQL Query Cache

Query Cache就是把 “查询返回的结果” 缓存起来。但“查询返回的结果” 其实不准确,MySQL 还会缓存查询语句。并在内存中把“查询语句”及“返回的结果集” 映射起来。Query Cache 默认为打开。主要参数有:query_cache_limit:允许 Cache 的单条 Query 结果集的最大容量,默认是1MB,超过此参数设置的 Query 结果集将不会被 C

2016-10-13 14:56:05 211

转载 java7 MethodHandle学习笔记

简介java7在JSR 292中增加了对动态类型语言的支持,使java也可以像C语言那样将方法作为参数传递,其实现在lava.lang.invoke包中。MethodHandle作用类似于反射中的Method类,但它比Method类要更加灵活和轻量级。通过MethodHandle进行方法调用一般需要以下几步:(1)创建MethodType对象,指定方法的签名;(2)在MethodHan

2016-10-03 10:56:04 469

转载 JVM中的直接引用和符号引用

在JVM中,类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载7个阶段。而解析阶段即是虚拟机将常量池内的符号引用替换为直接引用的过程。1.符号引用(Symbolic References):符号引用以一组符号来描述所引用的目标,符号可以是任何形式的字面量,只要使用时能够无歧义的定位到目标即可。例如,在Class文件中它以CONS

2016-09-29 12:00:53 392

转载 JVM对象的创建、内存布局、访问

对象的创建、内存布局、访问  这里会深入探讨HotSpot虚拟机在Java堆中的对象分配、布局和访问的全过程。一.对象的创建  虚拟机遇到一条new指令时,首先将去检查这个指令的参数是否能在常量池中定位到一个类的符号引用,并且检查这个符号引用代表的类是否已被加载、解析和初始化过。如果没有,那必须先执行相应的类加载过程。  在类加载检查通过后,接下来虚拟机将为新生对象

2016-09-29 10:57:22 257

转载 JVM对象探秘

对象的建立对象的建立过程                图一:对象建立过程 1、类加载检查。 当JVM检测到有一条new指令时,首先先检查该指令的参数是否在常量池中定位到一个类的符号引用,并检查这个符号引用所代表的类是否已被加载、解析和初始化过。如果存在的话,JVM将直接使用已有的信息对该类进行操作。 如果没有,则执行相应的类加载过程。 2、为新生对象分配内容。 

2016-09-29 10:56:03 211

转载 MySQL之char、varchar和text的设计

最近有表结构设计中出现了varchar(10000)的设计引起了大家的讨论,我们下面就来分析分析。 首先我们先普及一下常识:1、char(n)和varchar(n)中括号中n代表字符的个数,并不代表字节个数,所以当使用了中文的时候(UTF8)意味着可以插入m个中文,但是实际会占用m*3个字节。2、同时char和varchar最大的区别就在于char不管实际value都会占用

2016-09-08 15:48:58 164

转载 java 排序 算法与问题

java 默认排序算法的实现打开java.util包中的Arrays类文件,我们可以看到其sort方法主要是分以下三种情况分别进行实现java 基本类型的排序在Arrays类中使用方法重载提供了对int、long、short、char、byte、float、double型数组的排序,其实现都是通过调用DualPivotQuicksort.sort()方法。在DualPivotQ

2016-05-18 17:10:01 341

转载 JDK7的Comparison method violates its general contract异常

1.摘要前一阵遇到了一个使用Collections.sort()时报异常的问题,跟小伙伴@zhuidawugui 一起排查了一下,发现问题的原因是JDK7的排序实现改为了TimSort,之后我们又进一步研究了一下这个神奇的算法。2.背景先说一下为什么要研究这个异常,前几天线上服务器发现日志里有偶发的异常:123456789java.lang.Illega

2016-05-17 20:37:05 176

转载 系统吞吐量、TPS(QPS)、用户并发量、性能测试概念和公式

PS:下面是性能测试的主要概念和计算公式,记录下:一.系统吞度量要素:  一个系统的吞度量(承压能力)与request对CPU的消耗、外部接口、IO等等紧密关联。单个reqeust 对CPU消耗越高,外部系统接口、IO影响速度越慢,系统吞吐能力越低,反之越高。系统吞吐量几个重要参数:QPS(TPS)、并发数、响应时间        QPS(TPS):每秒钟reque

2016-05-16 20:54:01 261

转载 Select For update语句浅析

Select …forupdate语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。本篇我们就来介绍一下这个子句的用法和功能。 下面是采自Orac

2016-05-16 13:45:07 211

转载 Select For update语句浅析

Select …forupdate语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。本篇我们就来介绍一下这个子句的用法和功能。 下面是采自Orac

2016-05-16 13:43:06 234

转载 静态工厂模式

静态工厂模式设想,Apple和Grape都有相同的say()方法,但由于它们并没有共同的商业逻辑,这时该怎么办? 设想,要在SinaWeibo和TencentWeibo之间打通数据的获取方法,如getId()、getNickName()等方法,但它们开放的第三方API接口并不一致,这时该怎么办?如何提供出通用方法供团队协作使用?对于第一个设想,想解决问题,就要找到它

2016-05-10 19:48:29 177

转载 Quartz与Spring的整合-Quartz中的job如何自动注入spring容器托管的对象

问题Quartz中的job是由Quartz框架动态创建的(配置该job的classname,通过反射创建),而job一般会依赖到配置在spring中的bean,怎样获取或者更好的自动注入这些依赖bean呢?预期效果我们希望达到这样的效果:/** * * 取消超时未支付订单的任务。 * * @author arganzheng */public class

2016-05-09 17:22:35 338

转载 Quartz工作机制

1. 启动初始化Quartz启动时会根据配置信息进行相应的初始化。例如下面的这个spring-quartz.xml配置文件:<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:sc

2016-05-09 17:19:39 3769

转载 静态方法中不能new内部类的实例对象的总结

class Test{ public void main(String[] args){ A testA=new A(); //这里会出现问题 new Thread(new Runnable(){ public void run(){ testA.printout(); } }).start(); System.out.pr

2016-04-07 23:09:05 352

转载 Linux写时拷贝技术(copy-on-write)

COW技术初窥:      在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内容复制一份给子进程。      那么子进程的物理空间没有代码,怎么去取指令执行exec系统调用呢?      在fork之后exec之前两

2016-04-07 20:18:29 291

原创 java transient简介

ObjectInputStream与ObjectOutputStream类所读写的对象必须实现Serializable接口,对象中的transient和static类型成员变量不会被读取和写入

2016-03-24 20:12:03 184

原创 大坑之 resultMap = Long

出现at com.sun.proxy.$Proxy28.selectList(Unknown Source)的原因 resultMap = long 了resultType="Long"resultType="Long"

2016-03-22 20:37:46 1517

转载 Spring 实现数据库读写分离

http://www.cnblogs.com/surge/p/3582248.html

2016-03-01 12:26:36 328

转载 细聊分布式ID生成方法

一、需求缘起几乎所有的业务系统,都有生成一个记录标识的需求,例如:(1)消息标识:message-id(2)订单标识:order-id(3)帖子标识:tiezi-id这个记录标识往往就是数据库中的唯一主键,数据库上会建立聚集索引(cluster index),即在物理存储上以这个字段排序。这个记录标识上的查询,往往又有分页或者排序的业务需求,例如:

2016-03-01 10:07:09 376

原创 大坑------对象比较

对象比较 像Long Integer 不是转化成 int 就是转化成long 或者用equals,反正不要直接用==

2016-03-01 10:04:53 312

java面试总结

java面试总结java面试总结java面试总结java面试总结java面试总结java面试总结java面试总结

2018-08-14

Spark 快速大数据分析

Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析Spark 快速大数据分析

2018-08-12

umongo windows mongo

umongo windows mongoumongo windows mongoumongo windows mongoumongo windows mongoumongo windows mongo

2017-09-25

Java并发编程的艺术

Java并发编程的艺术Java并发编程的艺术Java并发编程的艺术

2017-08-13

空空如也

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

TA关注的人

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