
java
张云生
Don't complain,don't explain
展开
-
Java的内存与回收
Java引用的种类1.对象在内存中的状态对于JVM的垃圾回收机制来说,是否回收一个对象的标准在于:是否还有引用变量引用改对象?只要有引用变量引用对象,垃圾回收机制就不会回收它。也就是说,当java对象被创建出来之后,垃圾回收机制会实时的监控每个对象的运行状态,包括对象的申请,引用,被引用,赋值等。当垃圾回收机制实时的监控到某个对象不再被引用变量所引用时,垃圾回收机制就会回收它所占用的空转载 2017-09-23 13:00:45 · 286 阅读 · 0 评论 -
Log4j使用指南
1概述本文档是针对Log4j日志工具的使用指南。包括:日志介绍、日志工具介绍、Log4j基本使用、Log4j的高级使用、Spring与log4j的集成等。并进行了举例说明。本文档适合所有Java开发人员。2 日志介绍存储软件程序、服务或操作系统产生的消息记录的文件。电脑里的日志是指日志数据可以是有价值的信息宝库,也可以是毫无价值的数据泥潭。要保护和提高你的网络安全,由各转载 2018-01-17 18:37:20 · 269 阅读 · 0 评论 -
ThreadLocal的使用及实现原理
一、ThreadLocal使用public class ThreadLocalApp { public static void main(String[] args) { Number t1 = new Number(); Number t2 = new Number(); Number t3 = new Number(); t1.start(); t2.start();原创 2018-02-01 19:09:53 · 258 阅读 · 0 评论 -
ConcurrentHashMap源码详解
1. ConcurrentHashMap概述ConcurrentHashMap是线程安全的哈希表,不同于HashTable,后者在方法上增加synchronized关键字,利用对象同步锁实现线程之间的同步。显然,HashTable实现线程安全的方式太“重”,并发度高的情况下,很多线程争用同一把锁,吞吐量较低。ConcurrentHashMap通过锁分段技术,只有在同一个段内,才会存在锁竞争,提高了...转载 2018-05-10 14:14:46 · 204 阅读 · 0 评论 -
HashMap源码解析
创建HashMap,对初始容量和负载因子进行校验public V put(K key, V value) { if (table == EMPTY_TABLE) { //如果hash表为空,则进行扩容 inflateTable(threshold); } if (key == null) //如果key为null,则添加元素 ...原创 2018-05-10 14:01:05 · 145 阅读 · 0 评论 -
tomcat7以上,设置maxPostSize="0"参数后台获取不到的问题
遇到两次这个问题,记录一下。 登录的时候后台获取不到验证码,本地环境是tomcat7.32,服务器是tomcat7.82,一样的配置,本地没有发生这样的情况。查询资料发现tomcat7配置的时候,把maxPostSize=”0”的配置去掉的时候问题消失。根据以往的经验,maxPostSize=”0”不就是不限制post数据的大小的么,怎么还反倒限制了数据的大小了呢?因为项目里面要post一个数据到...转载 2018-05-30 15:22:38 · 1603 阅读 · 0 评论 -
Tomcat中server.xml配置详解
tomcat中server.xml配置详解Tomcat Server的结构图如下:该文件描述了如何启动Tomcat Server<Server> <Listener /> <GlobaNamingResources> </GlobaNamingResources> <Service> <...转载 2018-05-31 09:56:45 · 199 阅读 · 0 评论 -
内存屏障与volatile
内存屏障由于现代操作系统都是多处理器操作系统,每个处理器都会有自己的缓存,可能存再不同处理器缓存不一致的问题,而且由于操作系统可能存在重排序,导致读取到错误的数据,因此,操作系统提供了一些内存屏障以解决这种问题:LoadLoad屏障对于Load1; LoadLoad; Load2 ,操作系统保证在Load2及后续的读操作读取之前,Load1已经读取。StoreStore屏障对于Store1; St...转载 2018-07-15 13:19:23 · 678 阅读 · 0 评论 -
org.xml.sax.SAXNotRecognizedException 异常
org.xml.sax.SAXNotRecognizedException: Feature 'http://javax.xml.XMLConstants/feature/secure-processing' is not recognized. at org.apache.xerces.parsers.AbstractSAXParser.setFeature(Unknown Source)...原创 2018-11-14 09:50:47 · 5739 阅读 · 0 评论 -
Springboot集成redis实现分布式锁
1、在pom.xml文件中新增如下依赖<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId></dependency>2、ap...原创 2018-12-12 19:26:22 · 794 阅读 · 0 评论 -
springboot配置多数据源,注解操作数据库
最近新搭建了一个项目,需要去不同的数据库中查询数据,需要多个数据源,在网上搜索了下,基本上实现都很复杂,下面我自己实现了一个很简单的配置方法。1、原来我们都是在application.yml文件中配置数据源,现在不需要在application.yml文件中配置了。 新建jdbc.properties文件,内容如下:2、新建beans.xml,内容如下<?xml...原创 2018-12-12 19:59:34 · 634 阅读 · 0 评论 -
JDK8 lambda表达式 及四大内置核心函数式接口
package com.hundsun.java.se.java8; import org.junit.Test; import java.util.Comparator;import java.util.function.Consumer; /*** @Description: lambda表达式的基础语法* @author:zhangys* @date:...原创 2018-12-30 19:45:33 · 1133 阅读 · 0 评论 -
JDK8 引用(方法引用、构造器引用、数组引用)
/*** @Description:* 一、方法引用* 如果lambda 体中的内容有方法已经实现了,我们可以使用“方法引用”* (可以理解为方法引用是 Lambda表达式的另外一种表现形式)* 主要有三种语法格式:* 对象 ::实例方法名* 类:: 静态方法名* 类::实例方法名* 注 : Lambda 体中调用方法的参数列表和返回类型,要与函数式接口中抽象方...原创 2018-12-30 21:21:40 · 732 阅读 · 0 评论 -
JVM学习总结
文章内图片可保存到本地,放大查看!原创 2017-09-23 19:32:53 · 180 阅读 · 0 评论 -
高性能IO模型浅析
服务器端编程经常需要构造高性能的IO模型,常见的IO模型有四种:(1)同步阻塞IO(Blocking IO):即传统的IO模型。(2)同步非阻塞IO(Non-blocking IO):默认创建的socket都是阻塞的,非阻塞IO要求socket被设置为NONBLOCK。注意这里所说的NIO并非Java的NIO(New IO)库。(3)IO多路复用(IO Multiplexi转载 2017-10-17 18:23:21 · 182 阅读 · 0 评论 -
java同步控制
原创 2017-10-10 19:15:25 · 385 阅读 · 0 评论 -
线程sleep、wait、yield、join、notify、notifyAll 以及queue
1、sleep()方法 在指定时间内让当前正在执行的线程暂停执行,但不会释放“锁标志”。sleep()使当前线程进入阻塞状态,在指定时间内不会执行,让其他线程有机会继续执行,但它并不释放对象锁。也就是说如果有synchronized同步快,其他线程仍然不能访问共享数据。注意该方法要捕捉异常。例如有两个线程同时执行(没有synchronized)一个线程优先级为MAX_PRIORIT原创 2017-10-14 09:43:37 · 283 阅读 · 0 评论 -
volatile关键字学习总结
volatile:如果一个变量使用volatile修饰,则该共享变量在多个线程之间可见,不具备原子特性。 1、可见性代码如下:public class Volatile extends Thread{ private boolean isRunning = true; //volatile public void setRunning(boolean isRunning) { thi原创 2017-10-13 19:53:44 · 231 阅读 · 0 评论 -
java千万级数据txt文件导入数据库
最近在做项目的时候,有要把txt文件导入到数据库,txt文件有千万级,如果使用传统的读文件,写数据库,效率很慢。自己按照这种方式使用100万条数据的txt文件导入到oracle数据库,花费了二十多分钟。针对这种情况,可使用sqlLoader方式加载。数据说明:文件名:abc.txt文件格式如下:1111111|1|20171025|100|1|2|3|111原创 2017-10-31 15:53:58 · 13150 阅读 · 0 评论 -
线程池
一、为什么使用线程池线程要不停的创建和销毁,合理的使用线程池便可重复利用已创建的线程,以减少在创建线程和销毁线程上花费的时间和资源。二、Executor、ExecutorService、AbstractExecutorService、ThreadPoolExecutor、Executors之间的关系三、线程池的种类newFixedThreadPool:线程池的数原创 2017-10-11 18:15:56 · 207 阅读 · 0 评论 -
Java反射机制
一、获取class对象的方式1、通过类的class属性获取,该方法最为安全可靠,程序性能最高;Class clazz = Person.class;2、通过对象调用getclass()方法来获取Class clazz2 = "abc".getClass();3、通过class对象的forName()静态方法获取,但可能抛出ClassNotFoundExcep原创 2017-11-10 10:19:51 · 195 阅读 · 0 评论 -
Linux下配置JDK及JConsole远程连接配置
在Linux中,使用指令:tar zxvf 文件名(注意空格)解压完 .tar.gz 文件,或使用指令:unzip 文件名 解压完 .zip 文件,只需要在Linux中对他们进行配置,便可以使用你下载的工具了,这里介绍一下Java JDK的配置。对Java JDK的配置分为两种情况,一种是ROOT用户进行配置,一种是普通用户进行配置。ROOT用户配置完成后,即为Linux下各用户(ROO原创 2017-11-18 18:04:25 · 938 阅读 · 0 评论 -
IO和NIO操作文件的对比
原来的IO是以流的方式处理数据的,面向流的IO一次一个字节地处理数据,简单方便,但效率不高;NIO使用块IO的处理方式,每一个操作都在一步中读取或者写出一个数据块(缓存)。一、IO1.1 读取文件内容使用IO读取指定文件前1024个字节内容原创 2017-11-30 20:07:32 · 2075 阅读 · 0 评论 -
JDK8 Stream API
package com.hundsun.java.se.java8;import org.apache.ibatis.reflection.SystemMetaObject;import org.junit.Test;import java.sql.SQLOutput;import java.util.*;import java.util.stream.Collectors;imp...原创 2018-12-31 20:25:56 · 214 阅读 · 0 评论