
Java
licelice163
这个作者很懒,什么都没留下…
展开
-
java客户端post与get请求
使用httpclient工具包commons-httpclient-3.1.jar,依赖commons-logging-1.0.4.jar和commons-codec-1.3.jarimport java.io.BufferedReader;import java.io.IOException;import java.io.InputStreamReader;import jav转载 2017-01-03 11:12:28 · 335 阅读 · 0 评论 -
eclipse中server location灰色,如何修改?
Eclipse中tomcat service设置 选择window —-show view---services可以看到服务的面板 双击tomcat进入配置界面Service Locations(Specify the server path (i.e. catalina.base) and deploy path. Server must be published with no module转载 2017-05-09 20:34:21 · 795 阅读 · 1 评论 -
日期注解格式
@DateTimeFormat(pattern=”yyyy-MM-dd”)原创 2017-07-11 11:16:32 · 3872 阅读 · 0 评论 -
Java 引用方式
⑴强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ps:强引用其实也就是我们平时A a = new A()这个意思。⑵软引用(SoftReference)如果一个对象只具有软引用,转载 2017-07-04 14:28:55 · 197 阅读 · 0 评论 -
Java list add方法和addAll方法效率
结论是: 在数据量较小时,add方法配合for循环遍历比addAll来得快.但是在大量数据时,addAll的方法的效率更高.list.addAll()是浅拷贝,只是将内存中的地址进行了拷贝,指向了原先list的末尾做了拼接.原创 2017-07-06 14:05:20 · 14420 阅读 · 0 评论 -
Java8 Stream 基本操作示例
package Stream;import java.util.ArrayList;import java.util.Arrays;import java.util.IntSummaryStatistics;import java.util.List;import java.util.Optional;import java.util.OptionalInt;import java.ut原创 2017-07-06 16:52:24 · 523 阅读 · 0 评论 -
CRC8校验 java实现
以下为CRC8的实现package server;/** * CRC8相关计算 * encode: utf-8 * * @author trb * @date 2013-11-21 */ public class CRC8 { static byte[] crc8_tab = { (byte) 0, (byte) 94, (byte) 188, (byte转载 2017-06-28 15:29:17 · 7196 阅读 · 3 评论 -
volatile关键字作用
1.保持可见性 2. 禁止进行指令的重排序(volatile关键字能确保变量在线程中的操作不会被重排序而是按照代码中规定的顺序进行访问)原创 2017-06-30 15:19:24 · 9049 阅读 · 2 评论 -
JAVA 回调机制
public class SuperCalculator{ public void add(int a, int b, Student xiaoming) { int result = a + b; xiaoming.fillBlank(a, b, result); }}public class Student{ private转载 2017-11-06 14:49:42 · 256 阅读 · 0 评论 -
Spring-bean 的生命周期
spring容器的生命周期: (a)在单例情况下: 1、由spring容器创建对象 2、spring容器调用初始化方法 3、客户点调用该对象的某些方法 4、关闭spring容器的时候,执行摧毁方法(b)在多例的情况下: 1、由spring容器创建对象 2、spring容器调用初始化方法 3、客户点调用该对象的某些方法...转载 2018-02-28 09:23:49 · 418 阅读 · 0 评论 -
Java 应用问题排查
基本步骤是 1、先看程序的内存占用情况,如果原先是2G,现在是4G,那内存肯定异常 2、判断数据库连接占用了多少内存,如果连接占用内存很大,可能是查询语句有问题,查询的数据太大了,或者脏数据,导致程序内存过大 3、看日志,分析是否有堆内存异常或者栈内存溢出 4、用jdk自带的jvisiovm工具分析 5、获取dump文件,查看内存中哪些对象较多 6、然后看看这些对象和gc root之间...原创 2018-02-28 10:24:09 · 374 阅读 · 0 评论 -
zk实现的分布式锁
/** * 基于zookeeper特性实现分布式锁 * * @author huangwu * */public class DistributedLock implements Lock, Watcher {private ZooKeeper zk = null;// 根节点private final String ROOT_LOCK = "/locks";/...原创 2018-04-17 17:10:24 · 400 阅读 · 0 评论 -
redis实现分布式锁
public class RedisTool {private static final String LOCK_SUCCESS = "OK";private static final String SET_IF_NOT_EXIST = "NX";private static final String SET_WITH_EXPIRE_TIME = "PX";/** * 尝试获取分布式...原创 2018-04-17 17:13:13 · 297 阅读 · 0 评论 -
Redis工具类
import org.apache.log4j.Logger;import org.apache.log4j.chainsaw.Main;import com.alibaba.fastjson.JSONObject;import redis.clients.jedis.Jedis;import redis.clients.jedis.JedisPool;import redis.clien转载 2017-03-30 19:13:51 · 1562 阅读 · 0 评论 -
com.jacob.com.ComFailException: VariantChangeType failed
调用jacob组件出错: com.jacob.com.ComFailException: VariantChangeType failed在C:\Windows\System32\config\systemprofile下创建文件夹Desktop即可!原创 2017-04-25 16:22:22 · 1768 阅读 · 1 评论 -
Socket通信之NIO
这里有一个完整的示例,打开一个Selector,注册一个通道注册到这个Selector上(通道的初始化过程略去),然后持续监控这个Selector的读事件ServerSocketChannel ssChannel = ServerSocketChannel.open(); //2. 切换非阻塞模式 ssChannel.configureBlocking(false);原创 2017-04-20 19:43:31 · 334 阅读 · 1 评论 -
JVM class加载机制
1.概述 Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息:如构造函数,属性和方法等,Java允许用户借由这个Class相关的元信息对象间接调用Class对象的功能。 虚拟机把描述类的数据从class文件加载到内存,并对数据进行校验,转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机转载 2017-01-10 09:17:18 · 335 阅读 · 0 评论 -
JVM内存划分
一.运行时数据区包括哪几部分?根据《Java虚拟机规范》的规定,运行时数据区通常包括这几个部分:程序计数器(Program Counter Register)、Java栈(VM Stack)、本地方法栈(Native Method Stack)、方法区(Method Area)、堆(Heap)。 下面我们来了解一下运行时数据区的每部分具体用来存储程序执行过程中的哪些数据。1.Java栈 Java转载 2017-01-10 15:55:44 · 250 阅读 · 0 评论 -
关于锁(悲观锁与乐观锁)
锁( locking )业务逻辑的实现过程中,往往需要保证数据访问的排他性。如在金融系统的日终结算处理中,我们希望针对某个 cut-off 时间点的数据进行处理,而不希望在结算进行过程中(可能是几秒种,也可能是几个小时),数据再发生变化。此时,我们就需要通过一些机制来保证这些数据在某个操作过程中不会被外界修改,这样的机制,在这里,也就是所谓的 “ 锁 ” ,即给我们选定的目标数据上锁,使其无法被其他转载 2017-03-02 13:55:41 · 367 阅读 · 0 评论 -
java IO
初学Java,一直搞不懂java里面的io关系,在网上找了很多大多都是给个结构图草草描述也看的不是很懂。而且没有结合到java7 的最新技术,所以自己来整理一下,有错的话请指正,也希望大家提出宝贵意见。 首先看个图:(如果你也是初学者,我相信你看了真个人都不好了,想想java设计者真是煞费苦心啊!)这是Java io 比较基本的一些处理流,除此之外我们还会提到一些比较深入的基于io的处理类,比如c转载 2017-03-03 08:34:07 · 230 阅读 · 0 评论 -
mybatis+SpringMVC中mybatis实例化接口Dao原理
今天早上有个疑惑,在mybatis+SpringMVC的工程中,我只定义了一个接口UserMapper,而spring就产生了一个UserMapper的对象,这个是我所不明白的,一个接口如何实例化。查了一下,发现Java 动态代理机制分析及扩展,估计mybatis也是这样实现的。看了看mybatis的源码,就有下文了。本文主要跟踪mybatis的源码,了解mapper接口的动态代理对象的生成myba转载 2017-03-03 15:30:19 · 2214 阅读 · 0 评论 -
@ResponseBody 注解
作用: 该注解用于将Controller的方法返回的对象,通过适当的HttpMessageConverter转换为指定格式后,写入到Response对象的body数据区。使用时机: 返回的数据不是html标签的页面,而是其他某种格式的数据时(如json、xml等)使用;转载 2017-03-18 16:16:55 · 404 阅读 · 0 评论 -
Java ExecutorService
(1). newCachedThreadPool 创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。示例代码如下:ExecutorService cachedThreadPool = Executors.newCachedThreadPool(); for (int i = 0; i < 10; i++) { final int inde转载 2017-03-20 14:29:15 · 1827 阅读 · 2 评论 -
十六进制数据与字符串的相互转换
public static String bytesToHexString(byte[] src){ StringBuilder stringBuilder = new StringBuilder(""); if (src == null || src.length <= 0) { return null; }转载 2017-03-21 14:26:48 · 1177 阅读 · 0 评论 -
Ehcache
一、简介 非常简单,而且易用。 ehcache 是一个非常轻量级的缓存实现,而且从1.2 之后就支持了集群,而且是hibernate 默认的缓存provider。ehcache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。 ehcache可以直接使用。也可以和Hibernate对象/关系框架结合使用。还可以做Servl转载 2017-03-28 15:01:45 · 316 阅读 · 0 评论 -
ActiveMQ
在 Java 里有 JMS 的多个实现。其中 apache 下的 ActiveMQ 就是不错的选择。用 ActiveMQ 最好还是了解下 JMSJMS 公共点对点域发布/订阅域ConnectionFactoryQueueConnectionFactoryTopicConnectionFactoryConnectionQueueConnectionTopicConnectionDestinationQ转载 2017-04-01 13:37:23 · 222 阅读 · 0 评论 -
Maven的使用
maven作为一个项目管理的工具,它的内置依赖管理和Repository实现了依赖的管理和统一存储,我们所需要的项目的jar包和它的依赖包都在maven的仓库中,这里在maven安装目录下的conf文件夹里的setting.xml文件是建立仓库必须的,下面介绍下仓库:(下面介绍的setting.xml文件必须放在这个位置,内容在下面的介绍中有,下载仓库必须先配置setting.xml) 如果是要下转载 2017-03-15 22:44:45 · 234 阅读 · 0 评论 -
socket取流阻塞
刚开始感到很奇怪,大文件的复制不都是这样做的么,怎么还会出错,在网上搜了一下,socket在close后,才会发送给另一端结束符EOF,从而才会read到流结尾信息而返回-1。 以前写java聊天功能的时候其实遇到过这样的问题的,要退出聊天发一个特定的字符,然后在break出循环,接着会close掉socket,这样另一端的会由于这端的socket被close掉也跳出循环。只是现在由于只写服务端转载 2017-04-13 13:40:01 · 1718 阅读 · 1 评论 -
Socket长连接实现思路
长连接的正确实现方式 1、不关闭流实现长连接? 流关闭了而不关闭Socket,还是无法达到长连接的效果的,所以,要长连接,流必须不能关闭!那么,是不是直接不关闭流,然后每次要发消息就直接往流里面任进去数据,然后调用flush()方法强制刷新就行了?其实不行的,这样客户端是无法正常接收信息的,你会发觉就算服务端flush了,客户端还是会一直在read方法那里阻塞!具体原因各位可以看一下java原创 2017-04-19 10:11:17 · 6327 阅读 · 1 评论 -
import java.util.LinkedList; import java.util.Queue; import java.util.Scanner; import java.util.Stac
import java.util.LinkedList;import java.util.Queue;import java.util.Scanner;import java.util.Stack;/* Created by Flynnon on 17-2-25. 对二叉树的递归定义、前序、后序、中序、层序遍历方法的归纳 *//** * 定义节点类 * 为了简单就不定义...转载 2018-06-14 18:30:31 · 2091 阅读 · 0 评论