- 博客(295)
- 资源 (17)
- 收藏
- 关注
原创 java项目实现流水号自动增长-2-分布式环境
1、上一篇说的流水号自动增长,存在两个问题,第一如果编号是字母+数字格式的,数字自增可以使用AtomicInteger实现,但是与字母组合拼接肯定是一个非原子、非线程安全的,可以通过线程同步实现;第二是如果服务集群部署,涉及到分布式锁问题。下面的这个例子就是解决分布式环境下实现流水号自动增长的功能,通过线程同步+redis分布式锁实现。 代码实例如下:@Servicepublic class D
2017-04-08 16:06:01 7670 3
原创 java项目实现流水号自动增长
项目中有一个规则编号字段,从1开始,编号长度为5位,那么第一条数据编号就是00001。实现的基本思路就是项目启动时,从数据库获取当前最大值,作为静态变量存储; 业务获取新的编码,考虑并发问题,获取编码方法(编码自增部分)为synchronized同步方法,如果自增为原子操作,则无需同步; 编码前置0,使用String.format("%05d", newNum);格式化获取。实现代码如下:pub
2017-04-08 14:31:35 43167 10
原创 项目改造过程与心得体会-2-数据库与Power Designer工具使用
数据库改造篇:原系统数据库存在结构混乱、含义不清、多重冗余、拼音缩写、缺少备注等问题,随着本次系统改造,数据库也彻底被改造,全面重构。下面举例说明几个表的改造情况与改造过程。原库存在的问题:系统中存在两个种主要角色,客户和代理,都包括基本信息和账户信息,原库为客户和代理各设计了3张表保存并维护他们的信息,客户相关分别为客户基础信息表、客户账户表、中间关联表,代理相关分别为代理基础信息表、代理账户表、
2017-03-08 19:02:11 871
原创 SpEL表达式使用记录
SpEL表达式的首要目标是通过计算获得某个值。在计算这个数值的过程中,会使用到其他的值并会对这些值进行操作。最简单的SpEL求值或许是对字面值、Bean的属性或者某个类的常量进行求值。SpEL表达式使用#{}作为取值运算符。一、字面值1、最简单的SpEL表达式或许仅包含一个字面值:<property name="count" value="#{5}"/>2、非SpEL表达式的值混用:<propert
2017-03-03 19:23:58 2601
原创 一个例子,序列化与反序列化
/** * @author javaloveiphone * @date 创建时间:2016年11月10日 上午11:27:04 * @Title: SerilazeUtil.java * @Package com.mdf.sc.common.utils * @Description: * 序列化就是将对象写到流的过程,写到流中的对象是原有对象的一个拷贝,而原对象仍
2017-03-03 17:29:23 917
转载 Java不可变类机制
不可变类(Immutable Class):所谓的不可变类是指这个类的实例一旦创建完成后,就不能改变其成员变量值。如JDK内部自带的很多不可变类:Interger、Long和String等。可变类(Mutable Class):相对于不可变类,可变类创建实例后可以改变其成员变量值,开发中创建的大部分类都属于可变类。不可变类的特性对Java来说带来怎样的好处?1)线程安全:不可变对象是线程安全的,在线
2017-03-03 16:29:30 574
原创 一个请求方法是一个线程吗?不是!
之前对于线程和方法的理解有些偏差,竟稀里糊涂的认为一个线程就是一个方法,一个方法就是一个线程。尤其在理解ThreadLocal执行原理的时候,更是晕乎 (ThreadLocal把当前线程作为key,来维护管理一个可变的对象,在某一个方法里面set值,在后面的某个方法调用里面get值,如果一个方法就是一个线程,那set和get使用的key就不是同一个了,set进去的值get是拿不出来了) 现在
2017-03-02 10:27:35 19724 4
原创 深入理解线程本地变量ThreadLocal
ThreadLocal理解:如果在多线程并发环境中,一个可变对象涉及到共享与竞争,那么该可变对象就一定会涉及到线程间同步操作,这是多线程并发问题。否则该可变对象将作为线程私有对象,可通过ThreadLocal进行管理,实现线程间私有对象隔离的目的。可以发现,ThreadLocal并没有解决多线程并发的问题,因为ThreadLocal管理的可变对象的性质本来就不会涉及到多线程并发而引发的共享、竞争和同
2017-02-28 15:45:00 5066
原创 Spring中报"Could not resolve placeholder"的解决方案
除去properites文件路径错误、拼写错误外,出现”Could not resolve placeholder”很有可能是使用了多个PropertyPlaceholderConfigurer或者多个<context:property-placeholder>(<context:property-placeholder>底层也是PropertyPlaceholderConfigurer)的原因。
2017-02-27 17:12:26 22462
转载 maven 单独构建多模块项目中的单个模块
最近在公司的一个项目里用到了maven的多模块,由于项目比较大,每次修改后构建整个工程耗时太久,需要单独构建某个模块,mvn有支持的选项:-pl, --projects Build specified reactor projects instead of all projects 构建指定的模块,模块间用逗号分隔;-am, --also-make
2017-02-24 16:48:58 2440 1
转载 在Eclipse Subversion中使用Beyond Compare对比文件
1、打开:window -> Preferences -> Team -> SVN -> Diff Viewer -> Add2、按照下图,添加参数:其中:Diff program arguments:"${base}" "${mine}"/lefttitle="Base ${base}"/righttitle="Local ${mine}"Merge program arguments:"${
2017-02-24 16:39:34 2158
原创 项目改造过程与心得体会-1-架构
前言:接下来用最简洁的方式,记录当前项目执行过程。项目背景:该项目是一个改造升级的后台管理系统项目;项目处理的业务:客户管理和资金管理,70%为报表查询和导出功能;项目改造原因:1、原项目采用的技术框架为SSH,因为业务功能主要是报表实现,sql灵活多变,hibernate严重制约了功能实现,导致service层充斥了大量的sql拼接语句,hibernate不仅没有利用起来,更因此带来结构混乱、开发
2017-02-15 18:01:41 1965
原创 eclipse中添加tomcat8:The Apache Tomcat installation at this directory is version 8.5.11. A Tomcat 8.0 i
eclipse中添加tomcat8报错:The Apache Tomcat installation at this directory is version 8.5.11. A Tomcat 8.0 installation is expected.解决: 打开tomcat安装目录:apache-tomcat-8.5.11\lib 找到catalina.jar用解压缩工具打开 org/apa
2017-02-15 17:13:14 9338 5
原创 eclipse中,jdk7和jdk8并存开发的实现方式
原来使用jdk7,现在新项目需要使用jdk8,所以我直接在本地安装有jdk7的基础上直接安装jdk8,下一步,下一步,完成,环境变量还是jdk7的配置。然后通过命令行:java -version查看版本信息,报错:has value '1.8', but '1.7' is required.通过度娘,找到这篇博客:解决win7 安装完jdk7后,再安装jdk8出现的问题 has value ‘1.8
2017-02-15 17:05:19 3191
原创 (spring mvc)使用google的kaptcha生成验证码
1、添加kaptcha依赖包: <dependency> <groupId>com.github.penggle</groupId> <artifactId>kaptcha</artifactId> <version>2.3.2</version> </dependency> 2、web.xml
2017-02-10 10:51:10 1443
原创 java多线程Future、FutureTask使用示例,返回异步的结果
1、Future、FutureTask介绍Future是一个接口,该接口用来返回异步的结果。FutureTask是一个类,是Future 的一个实现。2、主要方法future.get();或者future.get(10000, TimeUnit.MILLISECONDS);获取多线程异步执行结果,但get方法是一个同步方法,如果未拿到结果或者未超时,主线程则一直等待。future.cancel(
2017-02-07 14:37:59 15729
原创 java多线程Semaphore使用实例,细化粒度控制并发数量
1、Semaphore:线程协同类,用来控制线程并发数量,并且可以更加细粒度的进行控制,因为真正被控制最大并发的代码放到了acquire和release之间。2、主要方法://初始值 count 表示当前的信号量当前所允许访问的线程数Semaphore semaphore = new Semaphore(int count);semaphore.acquire(); 是获得一个
2017-02-07 11:33:22 2850
原创 java多线程CyclicBarrier使用示例,让线程起步走
1、CyclicBarrier:一个同步辅助类,用于协调多个子线程,让多个子线程在这个屏障前等待,直到所有子线程都到达了这个屏障时,再一起继续执行后面的动作。2、使用场景举例: 年末公司组织团建,要求每一位员工周六上午8点【自驾车】到公司门口集合,然后【自驾车】前往目的地。 在这个案例中,公司作为主线程,员工作为子线程。3、代码示例;package com.test.spring.suppo
2017-01-25 17:20:32 3859 1
原创 java多线程CountDownLatch及线程池ThreadPoolExecutor/ExecutorService使用示例
1、CountDownLatch:一个同步工具类,它允许一个或多个线程一直等待,直到其他线程的操作执行完后再执行。2、ThreadPoolExecutor/ExecutorService:线程池,使用线程池可以复用线程,降低频繁创建线程造成的性能消耗,同时对线程的创建、启动、停止、销毁等操作更简便。3、使用场景举例: 年末公司组织团建,要求每一位员工周六上午8点到公司门口集合,统一乘坐公司所租大巴
2017-01-25 15:18:23 14391
原创 java动态代理机制
一、在java动态代理机制中涉及的角色1、委托类和委托对象:也可以称为业务类、真正类和业务对象、真正对象,比如;UserServiceImpl.java2、程序处理类、目标类(或代理类):实现InvocationHandler接口的类,实现invoke()方法,比如:LogHandler.java处理程序对象、目标对象(或代理对象):invocation handler,由程序处理类、目标类(或代理
2017-01-20 19:12:22 424
原创 深入了解session/cookie机制
一、相关概念cookie:实现客户端只有状态。 session:实现服务端持有状态。 jsessionid:一个唯一标识号,用来标识服务器端的Session,也用来标识客户端的Cookie,客户端和服务器端通过这个JSESSIONID来一一对应。二、session是什么时候创建的?Session并不是在客户端第一次访问就会在服务器端生成,而是在服务器端(一般是servlet里)使用request
2017-01-04 15:47:59 954
原创 mysql使用sql语句记录
一、基础sql语句记录1、将查询结果插入到一个已存在的表,t_name_1表字段顺序的类型与查询结果集字段顺序类型要保持一致insert into t_name_1(field1,field2) select field1,field2 from t_name_2;或者如果结果集字段与目标表字段完全一致insert into t_name_1 select field1,field2 from t_
2017-01-03 16:14:41 589
原创 结合springmvc,使用ajax上传base64图片数据
一、前端:<input type="file" id="myImage" name="myImage"/> <script type="text/javascript"> $("#myImage").bind("change",function(){ uploadFile($(this)); }); //通过onChange直接获取base64数据q
2016-12-26 18:38:34 14983 1
原创 使用jquery validate表单验证插件
一、jquery validate的官方演示和文档地址:官方网站:http://jqueryvalidation.org/ 官方演示:http://jqueryvalidation.org/files/demo/ 官方文档:http://jqueryvalidation.org/documentation/二、使用jquery validate1、引入插件:<script src="/js/jq
2016-12-20 10:51:10 937
转载 SpringMVC结合ajaxfileupload.js实现ajax无刷新文件上传
一、spring mvc配置1、web.xml<?xml version="1.0" encoding="UTF-8"?> <web-app version="2.5" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation
2016-12-20 10:12:12 6108
转载 SpringMvc如何传递获取Date类型数据
在控制器中加入如下代码:@InitBinderpublic void initBinder(ServletRequestDataBinder bin){ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); CustomDateEditor cust = new CustomDat
2016-12-19 17:52:50 9045
原创 由service层接口有什么用?引申到基于JDK原生和CGLIB动态代理实现spring事务管理的机制的思考
问题1:Services层为什么要用(Services接口 类 + Services接口实现 类)分开,这样做有什么好处?回答:http://www.iteye.com/problems/66260 评论区总结:1.编程接口化, 2.Spring的事物管理默认用的是java动态代理。问题2:Spring事物管理实现的机制或原理?回答:http://blog.csdn.net/jdream314/
2016-12-19 17:48:03 1104
原创 JMS之activeMQ使用介绍(一)
一、jms简介java消息服务(java message service),简称JMS,相对于RMI、Hessian、Burlap等而言,它是面向异步消息而制定的API,实现的消息机制如下图: 在JMS中有两个重要概念:消息代理(message broker)和目的地(destination)。消息代理:当一个应用发送消息的时候,给把消息交给一个消息代理,消息代理可以确保把消息投放到目的地,同时释
2016-11-28 17:54:18 901 1
原创 Jedis的Publish/Subscribe功能的使用
redis内置了发布/订阅功能,可以作为消息机制使用。所以这里主要使用Jedis的Publish/Subscribe功能。1、使用Spring来配置Jedis连接池<!-- pool配置 --> <bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig"> <property name="maxActi
2016-11-21 15:25:17 10772 1
转载 Java多线程-线程的同步与锁
一、同步问题提出线程的同步是为了防止多个线程访问一个数据对象时,对数据造成的破坏。 例如:两个线程ThreadA、ThreadB都操作同一个对象Foo对象,并修改Foo对象上的数据。package cn.thread;public class Foo { private int x = 100; public int getX() { return x; }
2016-11-21 14:57:38 362 1
转载 分布式缓存技术redis学习系列(九)——Redis主从实现读写分离
前言 大家在工作中可能会遇到这样的需求,即Redis读写分离,目的是为了压力分散化。下面我将为大家介绍借助AWS的ELB实现读写分离,以写主读从为例。实现 引用库文件<!-- redis客户端 --><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.6.2</ve
2016-11-16 17:42:19 5937 4
原创 分布式缓存技术redis学习系列(八)——JedisCluster源码解读:集群初始化、slot(槽)的分配、值的存取
redis集群环境,客户端使用JedisCluster获取连接并操作redis服务,上一篇 分布式缓存技术redis学习系列(七)——spring整合jediscluster 简单介绍了spring使用JedisCluster,这篇从JedisCluster源码层面看看是如何使用。一、集群初始化1、从单元测试开始,代码如下: @Autowired private JedisClus
2016-11-16 15:46:00 12161 7
原创 分布式缓存技术redis学习系列(七)——spring整合jediscluster
1、maven依赖<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.7.2</version></dependency>2、spring配置JedisCluster<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="
2016-11-16 13:54:22 13155
原创 分布式缓存技术redis学习系列(六)——sentinel哨兵机制
一、简介:1、Redis 的 Sentinel 系统用于管理多个 Redis 服务器(instance),该系统执行以下三个任务:1)监控(Monitoring):Sentinel 会不断地检查你的主服务器和从服务器是否运作正常。2)提醒(Notification):当被监控的某个 Redis 服务器出现问题时,Sentinel 可以通过 API 向管理员或者其他应用程序发送通知。3)自动故障迁移(
2016-11-11 18:15:59 2567 1
原创 一点一点学maven(13)--利用maven的filter和profile实现不同环境使用不同的配制
在我们平常的java开发中,会经常使用到很多配制文件(xxx.properties,xxx.xml),而当我们在本地开发(dev),测试环境测试(test),线上生产使用(product)时,需要不停的去修改这些配制文件,次数一多,相当麻烦。现在,利用maven的filter和profile功能,我们可实现在编译阶段简单的指定一个参数就能切换配制,提高效率,还不容易出错,详解如下。一,原理:1、利用
2016-11-08 14:44:46 960
转载 一点一点学maven(12)——Linux 使用nexus搭建maven私服
前言使用Maven可以对项目的各种依赖进行统一管理,在pom文件中定以好依赖,就可以从Maven中央库或者第三方库中下载到本地。但在企业内部使用也会遇到一些问题,每个使用者都需要去下载相应的依赖包或者插件,效率低下,浪费带宽,所以搭建企业内部的私服就很有必要。搭建私服后,所有的依赖就可以从私服下载,私服会自动判定,如果私服库里没有这个资源,则私服会自动去网上下载,如果私服已经包含所需资源,则可以通过
2016-11-06 17:52:10 612
原创 jQuery插件开发实例
<%@ page language="java" contentType="text/html; charset=utf-8" pageEncoding="utf-8"%><!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body id
2016-10-27 17:48:58 386
转载 Javascript模块化编程(一):模块的写法
转载:http://www.ruanyifeng.com/blog/2012/10/javascript_module.html随着网站逐渐变成”互联网应用程序”,嵌入网页的Javascript代码越来越庞大,越来越复杂。网页越来越像桌面程序,需要一个团队分工协作、进度管理、单元测试等等……开发者不得不使用软件工程的方法,管理网页的业务逻辑。 Javascript模块化编程,已经成为一个迫切的需求
2016-10-27 16:26:59 1331
转载 Dubbo与Zookeeper、SpringMVC整合和使用(负载均衡、容错)
互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,Dubbo是一个分布式服务框架,在这种情况下诞生的。现在核心业务抽取出来,作为独立的服务,使前端应用能更快速和稳定的响应。第一:介绍Dubbo背景大规模服务化之前,应用可能只是通过RMI或Hessian等工具,简单的暴露和引用远程服务,通过配置服务的URL地址进行调用,通过F5等硬件进行负载均
2016-09-30 09:45:00 672
转载 Java并发编程:volatile关键字解析
转载:http://www.cnblogs.com/dolphin0520/p/3920373.html Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 vo
2016-09-26 18:09:34 416
深入分析Java Web技术内幕 修订版.pdf
2018-04-09
spring事务管理几种方式代码实例
2016-08-22
spring-aware接口实现与bean作用域(spring多容器层面)
2016-08-08
poi-bin-3.8-20120326.zip
2013-07-26
poi-bin-3.7-20101029.zip
2013-07-26
xml数据前后台解析:jdom与dom4j源码,程序可以跑
2013-04-01
SVN1.6.17 服务器-客户端-汉化包-安装文档
2012-12-05
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人