Java
Java Blog
HaiwiSong
一切只为让自己变得更优秀!
展开
-
继承中类初始化顺序
在继承体系中,父子类的初始化存在先后顺序,涉及父子类中都存在静态变量、静态代码块、普通变量、普通代码块、构造函数。 其初始化流程图如下:原创 2014-04-16 14:20:29 · 1242 阅读 · 0 评论 -
学习笔记:Spring注解注入
注解注入顾名思义就是通过注解来实现注入,Spring和注入相关的常见注解有Autowired、Resource、Qualifier、Service、Controller、Repository、Component。原创 2016-05-18 12:35:03 · 812 阅读 · 0 评论 -
SpringMVC学习笔记:Ajax与Controller的参数交互
在SpringMVC的开发中,前端和后端的开发是必须掌握的知识点,无论是form提交还是Ajax提交,梳理好相关知识,在开发过程中将游刃有余。本博文旨在整理归纳,以备查用。原创 2016-06-06 21:09:11 · 18266 阅读 · 1 评论 -
SpringMVC学习笔记:表单的数据回显
在JSP页面中通过form表单提交时候,往往需要进行数据回显效果。例如以下场景往往需要数据回显: (1)提交后,如果出现错误,将刚才提交的数据回显到刚才的提交页面。 (2)查询页面,点击查询后往往需要查询条件表单的数据回显。原创 2016-06-15 13:17:59 · 10048 阅读 · 0 评论 -
反射获得或设置bean字段
反射获得或设置bean字段(两种方式:1、通过get或set方法;2、直接反射字段(包含父类字段))原创 2016-12-09 11:06:36 · 1730 阅读 · 0 评论 -
年周(年+周)的算法
在很多场景下需要由日期获得该日期对应的年周(例如:2016-11-22对应的年周为201647),在iso标准中,当在跨年计算年周时候, Calendar中calendar.get(Calendar.WEEK_OF_YEAR)的算法:跨年周(即1月1日所处的那周)的归属原则为跨年周的周四处于哪年,则该跨年周属于哪年。例如,2016-01-01的那周的周四(2015-12-31)在2015年,那...原创 2016-11-22 21:11:39 · 4014 阅读 · 0 评论 -
面试题:不用Java内置函数把String类型转int类型
面试中遇到一道算法题:不采用java的内置函数,把String类型转换为int类型。原创 2016-04-06 12:53:33 · 4605 阅读 · 2 评论 -
学习笔记:Quartz初印象
Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行任务调度提供了简单却强大的机制。作为 Spring 默认的调度框架,Quartz 很容易与 Spring 集成实现灵活可配置的调度功能。原创 2016-06-01 18:45:54 · 1183 阅读 · 0 评论 -
UML之类图
最近在看一些开源项目的源码分析,其中涉及到UML建模方面的知识,在网上查找了一些好的基础资料,现写成博文做一些基础积累。(部分属于转载,本着学习的态度,原作者勿怪) 在UML类图中,常见的有以下几种关系:泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dep...转载 2014-03-30 14:54:24 · 662 阅读 · 0 评论 -
初识OSGI框架
一、OSGI(面向Java的动态模型系统) OSGi(Open Service Gateway Initiative)技术是面向Java的动态模型系统。OSGi服务平台向Java提供服务,这些服务使Java成为软件集成和软件开发的首选环境。Java提供在多个平台支持产品的可移植性。OSGi技术提供允许应用程序使用精炼、可重用和可协作的组件构建的标准化原语。这些组件能够组装进一个应用和部署中。...原创 2014-03-16 14:33:57 · 1701 阅读 · 0 评论 -
第一个OSGI开发实例-简易字典查询程序
由于是初次接触OSGI开发,先模仿编写一个简易字典查询程序,用于理解基于OSGI的程序开发。 要求:实现一个B/S应用的简易字典查询,提供一个字典服务,用户在浏览器中输入一个单词,点击查询,给出这个单词的解释(由于是练习程序,所以仅仅支持很少单词的查询)。 有四个Bundle,分别是字典查询响应Bundle,字典查询接口Bundle,本地字典服务Bundle,远程字典服务Bundle。下...原创 2014-03-16 18:49:59 · 1635 阅读 · 0 评论 -
服务端HTTP压力测试框架locust
locust使用篇locust安装:pip install locustiogithub:https://github.com/locustio/locust官方文档:https://docs.locust.io/en/stable/示例:locust_test.py#coding=utf-8from locust import HttpLocust, TaskSet, taski...原创 2019-02-24 17:20:58 · 406 阅读 · 0 评论 -
一文弄懂Java线程安全队列
文章目录一、分类二、BlockingQueue 阻塞队列三、ConcurrentLinkedQueue 非阻塞队列一、分类java中所有队列都继承至java.util.Queue接口,该接口定义了以下三组方法:方法名抛出异常返回特殊值插入add(e)offer(e)移除remove()poll()检查element()peek()Java提...原创 2019-03-01 17:26:45 · 7976 阅读 · 0 评论 -
Java集合框架
简化图:Java平台提供了一个全新的集合框架。“集合框架”主要由一组用来操作对象的接口组成。不同接口描述一组不同数据类型。Java 2集合框架图集合接口:6个接口(短虚线表示),表示不同集合类型,是集合框架的基础。抽象类:5个抽象类(长虚线表示),对集合接口的部分实现。可扩展为自定义集合类。实现类:8个实现类(实线表示),对接口的具体实现。在很大程度上,一旦您理解了接口...转载 2014-04-25 15:41:31 · 704 阅读 · 0 评论 -
Hashtable 和 HashMap的区别
我们先看2个类的定义public class Hashtable extends Dictionary implements Map, Cloneable, java.io.Serializablepublic class HashMap extends AbstractMap implements Map, Cloneable, Serial...转载 2014-04-25 15:56:43 · 795 阅读 · 0 评论 -
一文弄懂Java8新特性之函数式编程
文章目录lambda表达式函数式接口Stream1、Stream的创建2、Stream操作(1)中间操作方法filterdistinctlimit/skipmapflatMapconcatpeeksortedforEachallMatch/anyMatch/noneMatchmin/max/countfindFirst/findAnycollect,将流转换为其他形式reduce3、stream和...原创 2019-02-02 16:50:26 · 508 阅读 · 0 评论 -
一文弄懂Java中的线程池
文章目录一、线程二、线程池1、ThreadPoolExecutor2、ForkJoinPool三、Java通过Executors提供的线程池四、Spring中线程池1、ThreadPoolTaskExecutorXML配置注解配置2、ThreadPoolTaskSchedulerXML配置注解配置五、监听Future任务结果的解决方案1、Guava中ListenableFuture实现(1)对任务...原创 2019-02-02 17:10:16 · 724 阅读 · 0 评论 -
一文弄懂常用分布式事务解决方案
文章目录CAP理论BASE理论常见分布式事务解决方案2PC(二阶段提交)方案:强一致性3PC(三阶段提交)方案:强一致性TCC 事务:最终一致性本地消息表:最终一致性事务消息:最终一致性Saga 事务:最终一致性命令协调各方案适用场景及对比CAP理论在一个分布式系统(指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性(Consistence)、可用性(Availabilit...原创 2019-02-02 17:29:34 · 446 阅读 · 0 评论 -
学习笔记:Spring Bean的作用域
Spring Framework支持五种作用域(其中有三种只能用在基于web的Spring ApplicationContext)。 分别为:singleton、prototype、request、session、global session。原创 2016-03-15 14:39:40 · 732 阅读 · 0 评论 -
学习笔记:Spring中default-autowire与autowire区别
default-autowire与autowire主要用于Spring的IOC的注解注入,明白两者的区别和用法将使你的开发事倍功半。原创 2016-05-26 17:16:34 · 14669 阅读 · 0 评论 -
Java中ThreadLocal类(解决多线程程序中并发问题的一种新思路,主要为参数的拷贝问题)
百度百科的解释(部分摘抄) JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序,ThreadLocal并不是一个Thread,而是Thread的局部变量。 ThreadLocal主要由四个方法组成i原创 2014-08-09 19:32:09 · 1139 阅读 · 0 评论 -
Hashtable和HashMap(及扩展知识)
首先我们看一下java中的集合类,其类图如下另外:Hashtable和HashMap继承的类不同,其源码如下:publicclassHashtableextendsDictionaryimplementsMap,Cloneable, java.io.SerializablepublicclassHashMapextendsAbstract原创 2014-08-01 18:59:06 · 652 阅读 · 0 评论 -
Java中堆栈理解(有关基本数据和引用数据)
栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。栈内存堆内存基础类型,对象引用(堆内存地址)由new创建的对象和数组存取速度快相对于栈内存较慢数据大小声明周期必须确定分配的内存由java虚拟机自动垃圾回收原创 2014-11-03 19:24:13 · 1675 阅读 · 0 评论 -
Java的I/O体系简介
Java的I/O操作类在包java.io下,主要分为:基于字节操作的 I/O 接口:InputStream 和 OutputStream基于字符操作的 I/O 接口:Writer 和 Reader基于磁盘操作的 I/O 接口:File和RandomAccessFile基于网络操作的 I/O 接口:Socket 前两组主要是根据传输数据的数据格式,后两组主要是根原创 2014-11-11 11:27:02 · 1249 阅读 · 1 评论 -
解决【应用程序已被安全设置阻止】弹出框的手动设置方法
在包含Applet标签的页面,运行中较高的jdk版本(例如jdk1.7或jdk1.8),会弹出【应用程序已被安全设置阻止】的安全警告框(如下图),这是由于oracle在jdk1.7(主要涉及到jdk7u21, jdk7u45, jdk7u51版本)中引入了对java浏览器插件的安全策略,以解决Applet的安全漏洞问题,具体可参看我的另一篇博文:JDK中Applet的安全性策略探究。原创 2015-05-03 18:50:05 · 24516 阅读 · 1 评论 -
JDK中Applet的安全性策略探究
众所周知,通过浏览器访问Applet存在安全漏洞,jdk1.6及更早的一些版本一直存在这些问题,为了解决Applet的安全漏洞问题,在jdk1.7陆续发布了几个用于修补安全漏洞的jdk版本。相关版本更新简图如下:一、 jdk1.7 update21版本详情链接:英文:https://blogs.oracle.com/java/entry/java_se_7_update_2原创 2015-05-03 17:31:33 · 2298 阅读 · 0 评论 -
Java垃圾回收机制与引用类型
从JDK1.2版本开始,把对象的引用分为四种级别,从而使程序能更加灵活的控制对象的生命周期。这四种级别由高到低依次为:强引用、软引用、弱引用和虚引用。 Java的垃圾回收器要负责完成3件任务:分配内存、确保被引用的对象的内存不被错误回收和回收不再被引用的对象的内存空间。原创 2015-08-30 20:30:54 · 1432 阅读 · 0 评论 -
Java中垃圾回收和静态类型
今天在网上看到一个讨论命题:当一个单例的对象长久不用时,会不会被jvm的垃圾收集机制回收。 答案为:单例模式中静态成员不会被垃圾回收机制回收。原创 2015-08-30 20:43:29 · 7226 阅读 · 0 评论 -
struts2+Jquery+Json异步提交(传递复杂JSON对象)
最近,在使用Struts2+Jquery实现异步提交传递复杂JSON对象时候,遇到了各种问题,经过各方的不懈努力,最终找到了解决方案,记录下以备忘。 基础知识 JSON建构于两种结构: 1. “名称/值”对的集合(A collection of name/value pairs)。不同的语言中,它被理解为对象(object),记录(record)原创 2014-07-17 10:41:15 · 1358 阅读 · 0 评论 -
MyEclipse/Eclipse快捷键
Shift+Enter 在当前行之下插入空行Ctrl+Shift+Enter 在当前行之上插入空行CTRL+Alt+↓ 复制当前行到下一行(复制增加)CTRL+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置Alt+↑ 当前行和上面一行交互位置Ctrl+S转载 2014-03-30 15:25:35 · 970 阅读 · 0 评论 -
让代码帮助我们研发--代码半自动化
让代码帮助我们研发–代码半自动化在新系统的前期开发过程中,总会遇到大量基于数据库表(物理表或试图)的大量操作。比如:物理表的增删改、生成bean和bean之间的快速拷贝。如果此时数据表中字段较少还好,但是当一个表的字段数达到几十个或更多时候,那么单纯的sql字段的书写及赋值到bean中将是一个无法忍受的任务量。而现有的代码生成器总会虽然好,但程序员本身不能随时改变生成器代码来适应自己的需求,因...原创 2015-10-20 19:48:48 · 1029 阅读 · 0 评论 -
RPC中Hessian请求转发
由于产品开发需要,最近研究了一下RPC中请求转发技术,现先介绍RPC协议和Hessian基础知识如下: (1)RPC(Remote Procedure Call Protocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。详情见百度百科:RPC远程过程调用协议 (2)Hessian是一个轻量级的remoting onhtt...原创 2016-03-11 16:23:16 · 2035 阅读 · 0 评论 -
Spring中AOP动态代理
AOP:面向切面、面向方面、面向接口是一种横切技术,主要用于以下场景:事务管理: (1)数据库事务:(2)编程事务(3)声明事物;日志处理;安全验证。AOP中采用了两种动态代理:采用JDK反射机制动态代理和用CGLIB动态代理。原创 2016-04-07 14:59:18 · 2594 阅读 · 0 评论 -
读书笔记:java多线程中的volatile
Java语言规范第三版中对volatile的定义如下: java编程语言允许线程访问共享变量,为了确保共享变量能被准确和一致的更新,线程应该确保通过排他锁单独获得这个变量。Java语言提供了volatile,在某些情况下比锁更加方便。如果一个字段被声明成volatile,java线程内存模型确保所有线程看到这个变量的值是一致的。原创 2016-03-15 12:43:40 · 539 阅读 · 0 评论 -
读书笔记:ConcurrentHashMap的原理
ConcurrentHashMap是一个线程安全的Hash Table,它的主要功能是提供了一组和HashTable功能相同但是线程安全的方法。ConcurrentHashMap可以做到读取数据不加锁,并且其内部的结构可以让其在进行写操作的时候能够将锁的粒度保持地尽量地小,不用对整个ConcurrentHashMap加锁。原创 2016-03-15 15:06:42 · 443 阅读 · 0 评论 -
Spring事务之事务控制方式
编程式事务控制和XML配置(AOP)事务控制原创 2016-04-13 19:32:57 · 6768 阅读 · 0 评论 -
Spring事务之如何保证同一个Connection对象
Spring容器的事务机制的实质是对传统JDBC的封装,也即是Spring事务管理无论是对单数据库实例还是分布式数据库实例,要实现事务管理,那么必须保证在一个事务过程获得Connetion对象是同一个,那么即使在同一个函数中调用其他多个的函数,通过Spring框架的AOP动态代理机制,使得Spring容器底层能够按传统JDBC的方式进行事务处理,从而保证对这个函数做事务控制。原创 2016-04-13 19:21:46 · 10769 阅读 · 1 评论 -
基于Redis的分布式锁实现
锁:解决多个线程争抢资源的情况,保证任何时候有且只有一个线程能持有资源,并且避免死锁。关注问题:分布式、过期、宕机、代码原子性、GC、重入(lock次数)分布式锁必须保证可靠性,需满足以下四个条件:1、互斥性。在任意时刻,只有一个客户端能持有锁。2、不会发生死锁。即使有一个客户端在持有锁的期间崩溃而没有主动解锁,也能保证后续其他客户端能加锁。3、具有容错性。只要大部分的Redis节点正...原创 2019-02-02 17:24:33 · 338 阅读 · 0 评论