JAVA
文章平均质量分 79
arno_dzl
这个作者很懒,什么都没留下…
展开
-
JAVA内存区域之栈
JAVA栈分为虚拟机栈和本地方法栈:这里阐述的是虚拟机栈,它和程序计数器一样也是线程私有的,生命周期和线程相同。虚拟机栈描述的是JAVA方法执行的内存模型:每个方法在执行的同时都会创建一个栈帧用于存储局部变量表、操作数栈、动态链接、方法出口等信息。每一个方法从调用直至执行完成的过程,就对应着一个栈帧在虚拟机栈中入栈到出栈的过程。 经常有人把JAVA内存区分为堆内存和栈内存,这种方法比较粗糙,原创 2017-08-01 14:10:39 · 202 阅读 · 0 评论 -
IOUtils和FileUtils的使用区别
JDK中提供的文件操作相关的类,功能非常基础,进行复杂操作时需要做大量编程工作。实际开发中,往往需要你自己动手编写相关的,尤其在遍历目录文件时,经常用到递归,非常繁琐。 Apache-commons工具包中提供了FileUtils,可以让我们非常方便的对文件和目录进行操作。 本文就是让大家对FileUtils类有一个全面的认识,便于大家以后开发文件和目录相关功能。 Apache I原创 2017-08-03 00:51:53 · 1262 阅读 · 0 评论 -
redis缓存使用
一、添加依赖1234 org.springframework.boot spring-boot-starter-data-redis二、配置application.properties12345###################原创 2017-08-03 00:53:40 · 364 阅读 · 0 评论 -
java 线程协作 join方法
在实际开发中我们往往会遇到这样的情况一个线程的执行需要依赖另一个线程执行后的结果。即主线程生成并起动了子线程,如果子线程里要进行大量的耗时的运算,主线程往往将于子线程之前结束,但是如果主线程处理完其他的事务后,需要用到子线程的处理结果,也就是主线程需要等待子线程执行完成之后再结束,这个时候就要用到join()方法了。join()join() 方法主要是让调用该方法的thread完成原创 2017-08-03 00:58:38 · 307 阅读 · 0 评论 -
Mysql主从配置,读写分离
大型网站为了软解大量的并发访问,除了在网站实现分布式负载均衡,远远不够。到了数据业务层、数据访问层,如果还是传统的数据结构,或者只是单单靠一台服务器扛,如此多的数据库连接操作,数据库必然会崩溃,数据丢失的话,后果更是 不堪设想。这时候,我们会考虑如何减少数据库的联接,一方面采用优秀的代码框架,进行代码的优化,采用优秀的数据缓存技术如:memcached,如果资金丰厚的话,必然会想到假设服务器群,来原创 2017-08-04 11:23:09 · 249 阅读 · 0 评论 -
Spring实现读写分离MySQL实现主从复制
1. 背景我们一般应用对数据库而言都是“读多写少”,也就说对数据库读取数据的压力比较大,有一个思路就是说采用数据库集群的方案,其中一个是主库,负责写入数据,我们称之为:写库;其它都是从库,负责读取数据,我们称之为:读库; 那么,对我们的要求是:1、读库和写库的数据一致;2、写数据必须写到写库;3、读数据必须到读库;2. 方案解决读写分离的方案有两种:应用原创 2017-08-04 13:23:23 · 317 阅读 · 0 评论 -
java解析json生成excel
这里我们使用的是maven项目,给出POM文件作为参考:dependency> groupId>org.apache.poigroupId> artifactId>poiartifactId> version>3.15version> dependency> dependency> groupId>org.apache.p原创 2017-08-04 13:32:35 · 9487 阅读 · 3 评论 -
logback日志写入数据库的配置
配置如下: %-20(%d{HH:mm:ss.SSS} [%thread]) %-5level %logger{80} - %msg%n原创 2017-08-04 13:41:05 · 1201 阅读 · 0 评论 -
log4j-over-slf4j与slf4j-log4j12共存stack overflow异常分析
log4j-over-slf4j和slf4j-log4j12是跟java日志系统相关的两个jar包,当它们同时出现在classpath下时,就可能会引起堆栈溢出异常。异常信息大致如下(摘自slf4j官网文档Detected both log4j-over-slf4j.jar AND slf4j-log4j12.jar on the class path, preempting StackO原创 2017-08-04 13:45:33 · 359 阅读 · 0 评论 -
Maven聚合模块与继承和Maven的生命周期配置
Maven聚合模块:因为Maven是提倡模块化编程的,所以会以多个工程分为多个模块。如果所有的功能、模块都写在一个工程里的话,不方便于扩展、升级、修改、查看和团队开发,而且也不方便于模块的复用。Maven则是提倡将一个项目拆分成多个工程,每个工程完成一个模块或功能,这些工程就像零件一般,分别去进行开发,分为多个工程也方便于维护和分工合作。每个工程模块可以通过pom配置文件实现串联,例如原创 2017-08-04 13:54:30 · 256 阅读 · 0 评论 -
java中static语句块详解
static{}(即static块),会在类被加载的时候执行且仅会被执行一次,一般用来初始化静态变量和调用静态方法,下面我们详细的讨论一下该语句块的特性及应用。 一、在程序的一次执行过程中,static{}语句块中的内容只被执行一次,看下面的示例:示例一 Java代码 class Test{ public static int X=1原创 2017-08-04 14:00:11 · 415 阅读 · 0 评论 -
spring实现远程监听
近期项目需要集群,缓存集群是自己实现的,需要在缓存发生变动后,需要发生消息给各个节点更新缓存。所以就做了个远程监听功能。远程监听用rmi协议,事件发布前都动态查询出活动的节点,事件发布后会被活动节点上的listener监听到。上代码1.定义event和listenerJava代码 public class BaseEvent extends EventObject原创 2017-08-04 14:21:54 · 459 阅读 · 0 评论 -
kettle调用java代码处理数据
1.新建Java测试类,导出Jar包,放在kettle目录中的libext文件中 package test; public class Test{ public static final String getMyName(String name){ return name+"12345"; }原创 2017-08-04 14:23:59 · 5311 阅读 · 0 评论 -
ZXing二维码编解码的使用
Google开源项目ZXing的网方网址:http://code.google.com/p/zxing/ ZXing (pronounced "zebra crossing") is an open-source, multi-format 1D/2D barcode image processing library implemented in Java, with ports to ot原创 2017-08-04 14:27:50 · 2407 阅读 · 0 评论 -
PrintWriter和BufferedWriter的使用区别
BufferedWriter:将文本写入字符输出流,缓冲各个字符从而提供单个字符,数组和字符串的高效写入。通过write()方法可以将获取到的字符输出,然后通过newLine()进行换行操作。BufferedWriter中的字符流必须通过调用flush方法才能将其刷出去。并且BufferedWriter只能对字符流进行操作。如果要对字节流操作,则使用BufferedInputStream。原创 2017-08-03 00:50:18 · 4457 阅读 · 2 评论 -
JAVA实现线程同步
由于同一进程的多个线程共享同一片存储空间,在带来方便的同时,也带来了访问冲突这个严重的问题。Java语言提供了专门机制以解决这种冲突,有效避免了同一个数据对象被多个线程同时访问时的冲突问题。 由于我们可以通过 private 关键字来保证数据对象只能被方法访问,所以我们只需针对方法提出一套机制,这套机制就是synchronized关键字,它包括两种用法:synchronized原创 2017-08-03 00:49:07 · 231 阅读 · 0 评论 -
java设计模式之单例模式
java中的单例模式Java中单例模式是一种常见的设计模式,要求保证一个类仅有一个实例,并提供一个访问他的全局访问点具体要求:一、构造方法私有化;二、声明一个本类对象;三、给外部提供一个静态方法,获取对象实例两种实现方式:1.饿汉式故名之意:先创建实例,class sington1{ private static singto原创 2017-08-03 00:46:55 · 261 阅读 · 0 评论 -
JAVA内存区域之堆
对于大多数应用来说,JAVA堆是JAVA虚拟机所管理的内存中最大的一块,JAVA堆是被所有线程共享的一块内存区域,在虚拟机启动时创建。此内存区域的唯一目的就是存放对象实例,几乎所有的对象实例都在这里分配内存。这一点在JAVA虚拟机规范中的描述是:所有的对象实例以及数组都要在堆上分配,但是随着JIT编译器的发展与逃逸分析技术逐渐成熟,栈上分配、标量替换优化技术将会导致一些微妙的变化发生,所有的对象都原创 2017-08-01 16:00:03 · 243 阅读 · 0 评论 -
JAVA注解的使用
元注解(meta-annotation):元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:1.@Target,2.@Retention,3.@Documented,4.@Inherited这些类型和它们所支持的类在java.lang.anno原创 2017-08-01 17:21:48 · 256 阅读 · 0 评论 -
linux上安装Mysql
CentOS 7 安装 MySQL环境CentOS 7.1 (64-bit system)MySQL 5.6.24依赖MySQL 依赖 libaio,所以先要安装 libaioyum search libaio # 检索相关信息yum install libaio # 安装依赖包成功安装,提示如下:[root@bogon /]# yuminstal原创 2017-08-01 17:24:40 · 398 阅读 · 1 评论 -
Hibernate多种查询方法
Hibernate查询对象所有字段,单个字段 ,几个字段取值的问题 .查询整个映射对象所有字段Java代码//直接from查询出来的是一个映射对象,即:查询整个映射对象所有字段Stringhql="fromUsers";Queryquery=session.crea... 1. 查询整个映射对象所有字段Java代码 //直接from查询出来的是一个映射对原创 2017-08-01 17:28:52 · 281 阅读 · 0 评论 -
J2EE的十三个规范
J2EE想必大家都不陌生吧,貌似现在更流行将其称作JavaEE,不管名字怎么变,核心和思想是没有变的。学习J2EE首先要了解它的规范,下面我们一起看看它的十三个规范。 1,JDBC(Java Database Connectivity) 用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,它由一组用Java语言编写的类和接口组成。个人理解:跟微软的OD原创 2017-08-01 17:37:40 · 300 阅读 · 0 评论 -
log4j的几种常用配置
log4j.rootLogger=DEBUG,console,dailyFilelog4j.additivity.org.apache=true# 控制台(console)log4j.appender.console=org.apache.log4j.ConsoleAppenderlog4j.appender.console.Threshold=DEBUGlog4j.a原创 2017-08-01 17:52:43 · 1249 阅读 · 0 评论 -
JAVA的垃圾回收机制
Java引入了垃圾回收机制,令C++程序员最头疼的内存管理问题迎刃而解。JAVA程序员可以将更多的精力放到业务逻辑上而不是内存管理工作上,大大的提高了开发效率。垃圾回收原理和算法1)内存管理Java的内存管理很大程度指的就是对象的管理,其中包括对象空间的分配和释放。对象空间的分配:使用new关键字创建对象即可对象空间的释放:将对象赋值null即可。垃圾回收器将负原创 2017-08-01 17:59:05 · 277 阅读 · 0 评论 -
Mybatis一对多和多对一的映射
在学习MyBatis3的过程中,文档上面一直在强调一个id的东西!在做这个实验的时候,也因为没有理解清楚id含义而导致一对多的“多”中也只有一条数据。id和result的唯一不同是id表示的结果将是当比较对象实例时用到的标识属性。这帮助来改进整体表现,特别是缓存和嵌入结果映射。所以不同数据的id应该唯一区别,不然导致数据结果集只有一条数据。二、实体1.person原创 2017-08-01 18:11:29 · 455 阅读 · 0 评论 -
Arrays.copy()和ArrayList.clone()的使用区别
copy方法是浅拷贝还是深拷贝?结论是:只是复制了引用地址,数组内的对象还是和旧数组一样的代码如下:/** * @author wqf * */public class TestArrayCopy { public static void main(String[] args) { Test t1 = new Test原创 2017-08-01 18:14:42 · 1220 阅读 · 0 评论 -
堆栈及队列的实现
队列的堆栈的元素移动import java.awt.List;import java.util.ArrayList;import java.util.Arrays;import java.util.Stack;public class stackQueue { public static void main(String[] args) {原创 2017-08-03 00:39:36 · 240 阅读 · 0 评论 -
Servlet与JSP的区别
一、概念ServletServlet(Server Applet)是Java Servlet的简称,是为小服务程序或服务连接器,用Java编写的服务器端程序,主要功能在于交互式地浏览和修改数据,生成动态Web内容。狭义的Servlet是指Java语言实现的一个接口,广义的Servlet是指任何实现了这个Servlet接口的类,一般情况下,人们将Servlet理解为后者。Servle原创 2017-08-03 00:40:56 · 292 阅读 · 0 评论 -
Java线程池的使用
1. 引言合理利用线程池能够带来三个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达 时,任务可以不需要的等到线程创建就能立即执行。第三:提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定 性,使用线程池可以进行统一的分配,调优和监控。但是要做到合理的利用线程池,必须对其原理了如指掌。原创 2017-08-03 00:43:12 · 188 阅读 · 0 评论 -
解决tomcat端口被占用的问题
运行tomcat一般不会出现什么问题,但是如果一旦别占用,我们的tomcat就无法启动了。 这里就以win7为例进行讲解。首先打开cmd,打开的方法很简单,在开始菜单中直接输入即可。同样也可以按下win+R打开运行,然后输入cmd即可。在dos命令中输入以下命令查询正在被使用的端口号以及使用它的程序。命令:netstat -ano内容分析原创 2017-08-03 00:45:18 · 226 阅读 · 0 评论 -
Maven插件之mybatis-generator自动生成DAO层代码的插件
1在pom.xml中做两处配置 1.1配置dependency 1.2配置plugin2 创建generatorConfig.xml 2.1 配置文件路径名称以及内容 2.2 其它说明3 对项目做运行参数配置并执行命令 3.1 配置 3.2 执行mybatis-generator:g原创 2017-08-06 15:37:42 · 3552 阅读 · 1 评论