java
文章平均质量分 65
zjt1388
这个作者很懒,什么都没留下…
展开
-
java中volatile修饰符语义
当一个变量定义为volatile之后,它将具备两种特性。第一是保证此变量对所有线程的可见性。这里的“可见性”是指当一条线程修改了这个变量的值,新值对于其他线程来说是可以立即得知的。而普通变量不能做到这一点,普通变量的值再线程间传递均需要通过主内存来完成,例如,线程A修改了一个普通变量的值,然后向主内存进行回写,另外一条线程B在线程A回写完成了之后再从主内存进行读写操作,原创 2014-09-18 20:07:25 · 446 阅读 · 0 评论 -
Redis 和 Memcached 的区别
Redis 的作者 Salvatore Sanfilippo 曾经对这两种基于内存的数据存储系统进行过比较:Redis支持服务器端的数据操作:Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里,你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的GE转载 2016-07-04 19:57:53 · 338 阅读 · 0 评论 -
spring读取配置文件优化
1、达到目的:根据tomcat的启动参数中配置不同的spring.profiles.active的值,读取不同环境的配置参数。2、spring配置文件的代码: classpath:config/system.devjunit.properties classpath:config/system.development.properties转载 2016-06-22 12:35:48 · 943 阅读 · 0 评论 -
mybatis分页样例(一)
1、达到目的:与具体ORM实现无关的分页参数及查询结果封装.2、分页代码封装:public class Page implements Iterable { //-- 公共变量 --// public static final String ASC = "asc"; public static final String DESC = "原创 2016-06-22 12:39:33 · 472 阅读 · 0 评论 -
JAVA多态性实现机制
方法解析Class文件的编译过程中不包含传统编译中的连接步骤,一切方法调用在Class文件里面存储的都只是符号引用,而不是方法在实际运行时内存布局中的入口地址。这个特性给Java带来了更强大的动态扩展能力,使得可以在类运行期间才能确定某些目标方法的直接引用,称为动态连接,也有一部分方法的符号引用在类加载阶段或第一次使用时转化为直接引用,这种转化称为静态解析。这在前面的“Java内存区域转载 2016-07-20 09:25:11 · 304 阅读 · 0 评论 -
spring 编程式事务
一、Spring事务的相关知识 1、事务是指一系列独立的操作,但在概念上具有原子性。 比如转账:A账号-100, B账号+100,完成。这两个操作独立是没问题的。 但在逻辑上,要么全部完成,要么一起失败。 1)jdbc事务:每个Connection都带有一个事务,只是默认被设置为自动提交。一个连接可以有多个事务。对于JDBC,只有在同一个连接内,才有讨论是否提交的前提。 2)转载 2016-09-12 19:07:13 · 388 阅读 · 0 评论 -
Struts2架构流程
Struts2架构流程【Struts2】 Action实现。 interceptor实现。 Filter工作原理。 使用 拦截器来处理请求。业务逻辑控制器与 Servlet API分离。================================================================================转载 2016-09-02 16:33:12 · 318 阅读 · 0 评论 -
通过反编译深入理解Java String及intern
一、字符串问题 字符串在我们平时的编码工作中其实用的非常多,并且用起来也比较简单,所以很少有人对其做特别深入的研究。倒是面试或者笔试的时候,往往会涉及比较深入和难度大一点的问题。我在招聘的时候也偶尔会问应聘者相关的问题,倒不是说一定要回答的特别正确和深入,通常问这些问题的目的有两个,第一是考察对 JAVA 基础知识的了解程度,第二是考察应聘者对技术的态度。 我们看看以下程序转载 2016-09-05 18:56:08 · 323 阅读 · 0 评论 -
JAVA-RPC框架介绍
Motan是一套高性能、易于使用的分布式远程服务调用(RPC)框架。功能支持通过spring配置方式集成,无需额外编写代码即可为服务提供分布式调用能力。支持集成consul、zookeeper等配置服务组件,提供集群环境的服务发现及治理能力。支持动态自定义负载均衡、跨机房流量调整等高级服务调度能力。基于高并发、高负载场景进行优化,保障生产环境下RPC服务高可用。gith原创 2016-10-20 19:07:58 · 474 阅读 · 0 评论 -
JAVA-mysql读写分离插件介绍
kingshardkingshard是一个由Go开发高性能MySQL Proxy项目,kingshard在满足基本的读写分离的功能上,致力于简化MySQL分库分表操作;能够让DBA通过kingshard轻松平滑地实现MySQL数据库扩容。 kingshard的性能是直连MySQL性能的80%以上。github地址:https://github.com/flike/kingshard原创 2016-10-20 11:01:33 · 1845 阅读 · 0 评论 -
maven仓库地址
一、地址:http://central.maven.org/maven2/原创 2016-11-13 22:50:29 · 299 阅读 · 0 评论 -
spring事务,内部调用生效
1、示例类:public interface AService{void a();void b();}@Servicepublic class AServiceImpl implements AService{@Transactional(propagation=Propagation.REQUIRED)public void a(){this.b(转载 2017-07-27 20:50:47 · 633 阅读 · 0 评论 -
java动态代理-生成代理类
一、生成动态代理类$Proxy0.class/** * 被代理类 */public interface Product { void method();}二、还原我们的代理类 public static void createProxyClassFile(){ byte[] data = ProxyGenerator.generatePro原创 2017-09-16 23:49:40 · 765 阅读 · 0 评论 -
java动态代理-自己实现
一、被代理类public interface Product { void method() throws Throwable;}public class ProductImpl implements Product{ public void method() { System.out.println("执行方法"); }}二、MyInvoc原创 2017-09-16 23:53:54 · 298 阅读 · 0 评论 -
spring通过名称获取配置的bean实例
/** * 服务工厂接口. * * * */public interface ServiceFactory extends Serializable { /** * 获取服务,通过class. * * @param clazz * @return */ public <T> T getService(...原创 2018-03-15 16:52:36 · 2972 阅读 · 0 评论 -
Java中Runtime运行时环境机制总结
最近由于在编码中需要在java代码中执行linux命令,使用到了Runtime类的一些方法,也出现几个小bug,所以趁这个机会对Runtime也就是运行时环境这个类进行总结。Runtime.getRuntime()能得到一个Runtime对象实例,也就是当前运行时环境实例,这个玩艺是什么东西?java中称为虚拟机的运行时环境,这个说法很抽象,我在网上百度了很久,没有确切的说法,我感觉这个Run...转载 2018-09-12 09:45:52 · 2866 阅读 · 0 评论 -
spring+EnCache缓存示例
一、ehcahe的介绍EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。Ehcache是一种广泛使用的开源Java分布式缓存。主要面向通用缓存,Java EE和轻量级容器。它具有内存和磁盘存储,缓存加载器,缓存扩展,缓存异常处理程序,一个gzip缓存servlet过滤器,支持REST和SOAP api等特点。转载 2016-07-02 11:09:49 · 2136 阅读 · 0 评论 -
JAVA细粒度锁实现的几种方式
1. 分段锁 借鉴concurrentHashMap的分段思想,先生成一定数量的锁,具体使用的时候再根据key来返回对应的lock。这是几个实现里最简单,性能最高,也是最终被采用的锁策略,代码如下:/** * 分段锁,系统提供一定数量的原始锁,根据传入对象的哈希值获取对应的锁并加锁 * 注意:要锁的对象的哈希值如果发生改变,有可能导致锁无法成功释放!!! */pu转载 2016-07-01 14:52:33 · 714 阅读 · 0 评论 -
spring事务管理
事物管理对于企业应用来说是至关重要的,好使出现异常情况,它也可以保证数据的一致性。spring支持编程式事务管理和声明式事务管理两种方式。 编程式事务管理使用TransactionTemplate或者直接使用底层的PlatformTransactionManager。对于编程式事务管理,spring推荐使用TransactionTemplate。 声明式事务管理建立在AOP之上的。转载 2016-07-23 17:01:51 · 244 阅读 · 0 评论 -
java动态代理
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。使用Proxy和InvocationHandler创建动态代理Proxy提供用于创建动态代理类和代理对象的静态方法,它也是所有动态代理类的父类。如果我们在程序中为一个或多个接口动态的生成实现类,就可以使用P原创 2014-08-12 11:01:28 · 459 阅读 · 0 评论 -
java线程同步锁优化
高效并发是从jdk1.5到jdk1.6的一个重要改进,HotSpot虚拟机开发团队在这个版本上花费了大量的精力去实现各种锁优化技术,如适应性自旋(Adaptive Spinning)、锁消除(Lock Ehmination)、锁粗化(Lock Coarsening)、轻量级锁(LinghtWeight Locking)和偏向锁(Baised Locking)等,这些技术都是为了在线程之间更高效地共原创 2014-09-20 16:54:15 · 753 阅读 · 0 评论 -
java单例模式
Java 单例模式详解概念: java中单例模式是一种常见的设计模式,单例模式分三种:懒汉式单例、饿汉式单例、登记式单例三种。 单例模式有一下特点: 1、单例类只能有一个实例。 2、单例类必须自己自己创建自己的唯一实例。 3、单例类必须给所有其他对象提供这一实例。 单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中转载 2014-08-11 23:32:00 · 354 阅读 · 0 评论 -
java多线程
一、线程与进程几乎所有的操作系统都支持同时运行多个任务,一个任务通常就是一个程序,每个运行中的程序就是一个进程。当一个程序运行时,内部可能包含了多个顺序执行流,每个顺序执行流就是一个线程。二、线程的创建及运行1、线程的创建继承Thread类实现Runnable接口2、运行调用start()方法。3、两种方式的对比 采用实现Runnable接口方式的原创 2014-08-12 16:53:38 · 428 阅读 · 0 评论 -
同步工具类--闭锁
闭锁是一种同步工具类,可以延迟线程的进度直到其达到终止状态。闭锁的作用相当于一扇门:在闭锁到达结束状态之前,这扇门一直是关闭的,并且没有任何线程能通过,当到达结束状态时,这扇门会打开并允许所有的线程通过。当闭锁到达结束状态后,将不会再改变状态,因此这扇门将永远保持打开状态。闭锁可以用来确保某些活动直到其它活动都完成后才继续执行,例如:1、确保某个计算在其需要的所有资源都原创 2014-09-25 23:29:42 · 640 阅读 · 0 评论 -
java动态代理
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。在某些情况下,一个对象不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。使用Proxy和InvocationHandler创建动态代理Proxy提供用于创建动态代理类和代理对象的静态方法,它也是所有动态代理类的父类。如果我们在程序中为一个或多个接口动态的生成实现类,就可以使用P转载 2014-09-27 16:25:57 · 365 阅读 · 0 评论 -
struts2自定义标签
1.首先在WEB-INF目录下建立文件itags.tld 2.2.31.2i/itagstest tag NumTag com.zhou.common.tag.NumToUpper num true true 2.建立类com.zhou.common.tag.NumToUppe原创 2014-10-08 16:56:37 · 373 阅读 · 0 评论 -
java.util.concurrent.atomic
类的小工具包,支持在单个变量上解除锁的线程安全编程。类摘要AtomicBoolean可以用原子方式更新的 boolean 值。AtomicInteger可以用原子方式更新的 int 值。AtomicIntegerArray可以用原子方式更新其元素的 int 数组。AtomicIntegerFieldUpdater基于反原创 2014-10-28 14:22:15 · 324 阅读 · 0 评论 -
jdk代理模式
package com.zhou.daili;public interface UserService { public void add();}package com.zhou.daili;public class UserServiceImpl implements UserService{ public void add() { System.out.println原创 2015-07-15 09:59:51 · 383 阅读 · 0 评论 -
java发送email
package com.zhou.email; import java.io.IOException;import java.io.InputStream;import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import转载 2015-07-14 17:22:43 · 502 阅读 · 0 评论 -
JFreeChart画图示例
package com.zhou.email;import java.awt.Color;import java.awt.Font;import java.io.File;import java.io.FileOutputStream;import java.text.DecimalFormat;import java.text.NumberFormat;import org.j转载 2015-07-14 17:17:02 · 995 阅读 · 0 评论 -
线程安全的实现延迟初始化的方案
1、基于volatile的解决方案public class SafeDoubleCheckedLocking { private volatile static Instance instance; public static Instance getInstance(){ if(instance == null){ synchronized(SafeDoubleCheck转载 2015-09-16 20:39:33 · 436 阅读 · 0 评论 -
springMVC下导出Excel功能
1、ExcleUtils.java代码:public class ExcelUtils { //excel默认宽度; private static int width = 256*14; //默认字体 private static String excelfont = "微软雅黑"; /** * * @param excelName 导出的EXCEL名字 * @p原创 2016-06-25 11:13:21 · 8417 阅读 · 2 评论 -
java关键字static
一、 static代表着什么在Java中并不存在全局变量的概念,但是我们可以通过static来实现一个“伪全局”的概念,在Java中static表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,当然也可以修饰代码块。Java把内存分为栈内存和堆内存,其中栈内存用来存放一些基本类型的变量、数组和对象的引用,堆内存主要存放一些对象。在JVM加载一个类的时候,若该类存在转载 2016-07-10 21:35:26 · 230 阅读 · 0 评论 -
@Transactional spring 配置事务 注意事项
1. 在需要事务管理的地方加@Transactional 注解。@Transactional 注解可以被应用于接口定义和接口方法、类定义和类的 public 方法上 。2. @Transactional 注解只能应用到 public 可见度的方法上 。 如果你在 protected、private 或者 package-visible 的方法上使用 @Transactional 注解,转载 2016-07-23 16:48:52 · 1655 阅读 · 0 评论 -
Spring中常用类或者接口的汇总
一、BeanNameAware(接口)实现BeanNameAware接口需要实现setBeanName()方法,这个方法只是简单的返回我们当前的beanName这个接口表面上的作用就是让实现这个接口的bean知道自己在spring容器里的名字,而且听官方的意思是这个接口更多的使用在spring的框架代码中,实际开发环境应该不建议使用,因为spring认为bean的名字与bean的联系并不是很深,...转载 2018-10-09 10:01:50 · 872 阅读 · 0 评论