java
油头小兄妹
风雨砥砺,前行不止
展开
-
Java学习之路-序列化与反序列化
对象序列化的目标是将对象保存到磁盘中,或允许在同络中直接传输对象。对象序列化机制允许把内存中的 Java 对象转换成平台无关的二进制流,从而允许把这种二进制流持久地保存在磁盘上,通过网络将这种二进制流传输到另一个网络节点。其他程序一旦获得了这种二进制流(无论是从磁盘中获取的,还是通过网络获取的),都可以将这种二进制流恢复成原来的 Java 对象。1,序列化的含义和意义序列化机制允许转载 2015-04-05 10:28:05 · 511 阅读 · 0 评论 -
Spring 如何注入值到静态变量
Spring 如何注入值到静态变量Spring不允许直接将值注册到静态变量中,可以间接完成在任意类中注入配置文件中的常量import org.springframework.beans.factory.InitializingBean;import org.springframework.beans.factory.annotation.Value;pu原创 2016-03-31 20:16:49 · 4998 阅读 · 0 评论 -
import static 包的作用
import static 包import static java.lang.Math.*;public class StaticImportTest{ public static void main(String arsg[]){ System.out.println("exp(1.5)="+exp(1.5)); }}引入静态包,可以直接使用Math包的原创 2016-03-23 14:12:45 · 428 阅读 · 0 评论 -
不变模式immutable
不变模式immutable当对象产生后,不发生任何改变。 java.lang.String类和其他八个基本数据类型的包装类就是典型的实现适合场景:(1) 当对象被创建后,其内部状态和数据不再发生变化。 (2) 对象需要共享、被多线程频繁访问。要注意一下几点: - 去除setter方法,及所有修改自身属性的方法 - 所有的属性都必须是私有的,并用final原创 2016-03-23 15:41:33 · 430 阅读 · 0 评论 -
使用ObjectMapper 序列化Json
使用ObjectMapper 序列化Jsonimport java.io.IOException;import java.io.InputStream;import java.text.SimpleDateFormat;import com.fasterxml.jackson.annotation.JsonInclude;import com.fasterxml原创 2016-03-23 18:27:30 · 4538 阅读 · 0 评论 -
try-catch-finally-return的执行顺序
情况1:try块中没有抛出异常try和finally块中都有return语句[java] view plain copypublic static int NoException(){ int i=10; try{ System.out.println("i in try block is"+i); retur转载 2016-02-28 10:36:08 · 513 阅读 · 0 评论 -
只用try-finally无catch的原因
只用try和finally而不使用catch的原因:try方法块抛出的异常,catch处理不了(NPE...) public void testTryAndFinally(String name){ try { name.length();// NullPointerException } finally {原创 2016-02-28 10:48:28 · 1844 阅读 · 0 评论 -
Java泛型中<? super String>和<? extends String>
java泛型中和:包括String和它的父类 :因为String是final,无法被继承,所以只包括null Listsuper String> list1 = new ArrayList list1.add(null); list1.add("String"); List list = new ArrayList list.add(null); // 会报错 list.a原创 2016-03-24 11:01:03 · 2019 阅读 · 1 评论 -
Java SE 7新增特效
Java SE 7新增特效官方文档在这Java Programming Language Enhancements Enhancements in Java SE 7 Binary Literals - In Java SE 7, the integral types (byte, short, int, and long) can also be expresse原创 2016-03-24 14:16:01 · 857 阅读 · 1 评论 -
org.springframework.beans.Beanutils copyProperties 原理
org.springframework.beans.Beanutils copyProperties 原理BeanUtils. copyProperties(source,targe)原理:根据source的属性来向target同名属性设值。 若target无该属性,则不设名字相同,基本类型和封装类型可以完成映射若target有source无,则target属性值为原创 2016-03-24 18:13:46 · 5103 阅读 · 2 评论 -
Servlet设置缓存
Servlet设置缓存 //不允许浏览器端或缓存服务器缓存当前页面信息。 httpServletResponse.setHeader("Pragma", "No-cache"); //浏览器和缓存服务器都不应该缓存页面信息 httpServletResponse.setHeader("Cache-Control", "no-cache");原创 2016-03-24 18:15:24 · 3106 阅读 · 0 评论 -
Java产生唯一的随机数
Java产生唯一的随机数说起唯一的随机数,可能很容易想到java.util.UUID,如下,可以产生32位长度的字符串。String str = UUID.randomUUID().toString().replaceAll("-", "");但是这样并不是一定没问题的,单机多线程的情况下也可能出现重复的情况。UUID按照开放软件基金会(OSF)制定的标准计原创 2016-03-28 19:44:52 · 11825 阅读 · 0 评论 -
Java实现QPS控制
Java实现QPS控制什么是QPS QPS:queries per second :每秒的请求数QPS控制的目的 防止恶意刷取,增加项目负载解决方案1(假设需要控制在1s内不多于400个请求):方案描述: 使用数组存储每个请求到来的时间,前400次请求顺利通过,并填满数组。 后续请求到来时,判断当前时间是否比数组中最早的时间晚1s,未晚,则打回, 晚则替换数组中原创 2016-03-23 15:33:50 · 13895 阅读 · 8 评论 -
Java:单例模式的七种写法
Java:单例模式的七种写法转载出处:http://www.blogjava.net/kenzhh/archive/2016/03/28/357824.html第一种(懒汉,线程不安全): 1 public class Singleton { 2 private static Singleton instance; 3 private转载 2016-07-31 20:52:10 · 533 阅读 · 0 评论 -
解决Hash冲突的几种方法
开放地址法:1.线性探测法 线性再散列法是形式最简单的处理冲突的方法。插入元素时,如果发生冲突,算法会简单的从该槽位置向后循环遍历hash表,直到找到表中的下一个空槽,并将该元素放入该槽中(会导致相同hash值的元素挨在一起和其他hash值对应的槽被占用)。查找元素时,首先散列值所指向的槽,如果没有找到匹配,则继续从该槽遍历hash表,直到:(1)找到相应的元素原创 2015-08-24 15:07:44 · 36401 阅读 · 4 评论 -
Java中守护线程的总结
在Java中有两类线程:User Thread(用户线程)、Daemon Thread(守护线程) 用个比较通俗的比如,任何一个守护线程都是整个JVM中所有非守护线程的保姆:只要当前JVM实例中尚存在任何一个非守护线程没有结束,守护线程就全部工作;只有当最后一个非守护线程结束时,守护线程随着JVM一同结束工作。Daemon的作用是为其他线程的运行提供便利服务,守护线程最典型的应转载 2016-03-17 18:32:35 · 352 阅读 · 0 评论 -
SpringMVC的拦截器Interceptor
SpringMVC的拦截器Interceptor使用拦截器的配置mvc:interceptors> mvc:interceptor> mvc:mapping path="/**"/> mvc:exclude-mapping path="/perm/**"/> mvc:exclude-mapping path="/api/**"/>原创 2016-03-17 16:24:43 · 383 阅读 · 0 评论 -
java synchronized详解
记下来,很重要。Java语言的关键字,当它用来修饰一个方法或者一个代码块的时候,能够保证在同一时刻最多只有一个线程执行该段代码。 一、当两个并发线程访问同一个对象object中的这个synchronized(this)同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。 二、然而,当一个线程访问ob转载 2015-04-19 10:09:54 · 350 阅读 · 0 评论 -
Java牛人博客
名称(站点名或人名) 国家 备注1Adam Bien德国Java EE相关2Antonio Goncalves法国Java EE相关(《Java EE 5》和《Java EE 7》的作者)3Henrik Warne瑞典编程过程中的一些思考4Billy Yarosh美国转载 2015-05-23 14:07:37 · 1312 阅读 · 0 评论 -
细小知识点之Maven
1.dependencyManagement和dependencies的区别dependencyManagementMaven 使用dependencyManagement 元素来提供了一种管理依赖版本号的方式。通常会在一个组织或者项目的最顶层的父POM 中看到dependencyManagement 元素。使用pom.xml 中的dependencyManagement 元素能让原创 2015-08-07 15:37:38 · 512 阅读 · 0 评论 -
《Java程序性能优化》学习笔记之ArrayList和LinkedList
1.ArrayList底层是数组实现,是一块连续的内存空间,查询速度,删除添加慢;LinkedList是双向链表,头结点中不存放数据,实现栈和队列的操作方法,因此也可以作为栈、队列和双端队列来使用,查询慢,删除添加速度2.ArrayList初始化大小为10,添加元素时要判断是否需要扩容,需要则扩大到1.5倍+1。添加和删除元素时,需要进行数组的复制(System.arraycopy),慢3原创 2015-07-28 21:22:59 · 656 阅读 · 0 评论 -
String 为什么是final
String基本约定中最重要的一条是immutable(不可变的)。不变对象的一个优点是 单个实例可以被多人共享 且不用花时间来处理同步和锁的问题。1.才有可能实现常量池,节省heap内存(因为用的多 才有池)2.如果字符串是可变的,那么会引起很严重的安全问题。譬如,数据库的用户名、密码都是以字符串的形式传入来获得数据库的连接3.因为字符串是不可变的,所以是多线程安全的原创 2015-08-24 15:02:53 · 549 阅读 · 0 评论 -
方法递归对性能的影响
根本原因是这样的,对于每一个线程,都有一个java栈 ,当有一个方法被调用的时候,会产生一些跟这个方法相关的信息,如方法名,参数,中间变量等等,这些叫做栈帧 ,当一个方法执行完毕 这个栈帧才会从栈顶pop掉 你递归的话 会一直向栈里push栈帧 而这个java栈是有一定的长度或深度的,当栈满了,无法再进行push的时候 就出现你上面的异常了,解决办法的话 就不要用递归操作 改用for 而且原创 2015-08-24 14:58:19 · 3139 阅读 · 0 评论 -
《Java程序性能优化》学习笔记之HashMap和LinkedHashMap
1.HashMap没啥可说的2.LinkedHashMap是HashMap的子类,在HashMap的基础上加了一个链表,每次put元素都会往链表上加节点。public LinkedHashMap(int initialCapacity, float loadFactor,boolean accessOrder): accessOrder为true的时候按照元素最后访问时间排序(LRU算原创 2015-07-30 12:03:04 · 5226 阅读 · 2 评论 -
细小知识点之Spring
1.Spring框架支持以下五种bean的作用域:singleton : bean在每个Spring ioc 容器中只有一个实例。prototype:一个bean的定义可以有多个实例。request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。session:在一个HTTP Session中,一个bean定义对原创 2015-07-30 15:08:07 · 413 阅读 · 0 评论 -
细小知识点之JSP&Servlet
1.Servlet生命周期:初始化阶段 调用init()方法2.Servlet初始化阶段:3.Servlet响应请求阶段:4.Servlet终止阶段:原创 2015-07-24 19:51:02 · 417 阅读 · 0 评论 -
细小知识点之Java
1.Integer ,Double等基本数据类型的封装类,当其值发生改变时,其引用地址也发生了变化。原创 2015-07-13 10:32:33 · 455 阅读 · 0 评论 -
Spring-Mybatis配置文件基本配置
EditSpringMvc与Mybatis集成,配置文件的基本配置web.xml基本配置!- 自动扫描Spring的配置文件,完成Spring的加载 的上下文参数声明应用范围内的初始化参数。它用于向 ServletContext提供键值对,即应用程序上下文信息。我们的listener, filter等在初始化时会用到这些上下文中的信息。在servlet里原创 2016-01-22 18:11:56 · 3271 阅读 · 0 评论 -
Spring从配置文件注入变量
Spring从配置文件注入数据注入基本数据类型和String,使用@Value注解使用格式为 : @Value(“${property:default value}”) 当配置文件没有property会设置为默认值,如果有但是没值,会注入null@Value("${insertVar:1000")private String insertVar;@Value("原创 2016-03-16 18:33:56 · 4437 阅读 · 0 评论 -
Spring三个重要的注解
Spring三个重要的注解context:annotation-config />这个标签告诉Spring到bean类中寻找一些annotation定义的类, 这些annotation基本如下: @Autowired @PostConstruct @PreDestroy @Resource 等。 需要注意的是。这个标签并没有激活@Transactional 和 @Trans原创 2016-03-16 19:37:55 · 1540 阅读 · 0 评论 -
java.text.MessageFormat类的学习
java.text.MessageFormat类的学习使用比较多的是MessageFormat.format(String pattern, Object … arguments):将pattern中的{}(只能为0-9,需要连续)一替换为argument; 直接上栗子:String formatStr = MessageFormat.format("helloWorld_原创 2016-03-29 18:25:59 · 1003 阅读 · 0 评论 -
unsafe入门
java是一种安全的编程语言,并且禁止编程人员对内存做一些胡乱的操作。如果编程人员像操作,可以通过unsafe类如果我们想使用unsafe类,首先要创建一个unsafe对象。但是unsafe的构造方法是私有的。Unsafe类有个getUnsafe方法可以获取unsafe对象,但是他会坚持classloaderpublic static Unsafe getUnsafe( ) { Class...原创 2018-03-26 16:55:07 · 343 阅读 · 0 评论