Java常见问题
文章平均质量分 72
小灰灰1234
挣扎于现实的理想主义者
展开
-
Disruptor的事件处理机制
单生产者,多消费者模式。消费者1、2不重复消费消息,消费者3、4消费消费者1或2消费过的消息,且独立重复消费。消费者5消费消费者3、4均消费过的消息。单生产者,多消费者模式。消费者1、2独立消费每一条消息,消费者3、4不重复消费消费者1、2均处理过的消息,消费者5消费消费者3或4消费过的消息。消费者之间存在消费顺序,相当于在各个EventHandlerGroup之间进行级联,形成依赖关系。多消费者之间不重复消费,且不同的消费者WorkPool之间存在依赖关系。多生产者,单消费者版本。...原创 2022-08-12 17:36:15 · 984 阅读 · 1 评论 -
Spring Bean方法的异步执行
@Configuration@EnableAsyncpublic class ThreadPoolTaskConfig { private static final int corePoolSize = 10; // 核心线程数(默认线程数) private static final int maxPoolSize = 100; // 最大线程数 private static final int keepAliveTime = 10; // 允许线程空闲时间(.转载 2021-03-14 16:56:46 · 1292 阅读 · 0 评论 -
oracle spfile 与 pfile的管理与启动
pfile: 初始化参数文件(Initialization Parameters Files),Oracle 9i之前,ORACLE一直采用pfile方式存储初始化参数,pfile 默认的名称为“init+例程名.ora”文件路径:/data/app/oracle/product/12.1.0/dbhome_1/dbs,这是一个文本文件,可以用任何文本编辑工具打开。spfile:服务器参数文件(Server Parameter Files),从Oracle 9i开始,Oracle引入了Spfile文件,原创 2020-12-28 16:34:14 · 603 阅读 · 0 评论 -
Pattern 和 Matcher
package com.jerry.frame.utils;import org.junit.Test;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by zjh on 2017/4/7. */public class TestPattern{ @Test原创 2017-04-07 12:21:26 · 588 阅读 · 0 评论 -
内部类详解
内部类详解1、定义 一个类的定义放在另一个类的内部,这个类就叫做内部类。Java代码 public class First { public class Contents{ public void f(){ System.out.println("In Class First's inner Class Contents method f(转载 2017-02-28 16:07:07 · 238 阅读 · 0 评论 -
HashTable 和HashMap
HashTable 是线程安全的HashMap 是线程不安全的转载 2017-02-28 15:30:43 · 291 阅读 · 0 评论 -
使用Decorator设计模式增强request对象
package me.gacl.web.filter;import java.io.IOException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.servlet.FilterConfig;import javax.servlet.ServletExcep转载 2016-11-02 09:32:52 · 687 阅读 · 0 评论 -
ThreadLocal + Filter 处理事务
package me.gac.web.filter;import java.io.IOException;import java.sql.Connection;import java.sql.SQLException;import javax.servlet.Filter;import javax.servlet.FilterChain;import javax.s转载 2016-11-01 17:14:45 · 1427 阅读 · 0 评论 -
request接收表单提交中文参数乱码问题
3.1、以POST方式提交表单中文参数的乱码问题例如有如下的form表单页面: 1 @ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 2 3 DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 4 html> 5转载 2016-11-01 16:12:38 · 568 阅读 · 0 评论 -
生成各种验证码图片的servlet
package gacl.response.study;import java.awt.Color;import java.awt.Font;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.image.BufferedImage;import java.io.IOException;转载 2016-11-01 15:35:13 · 696 阅读 · 0 评论 -
DatabaseMetaData类
DatabaseMetaData类DatabaseMetaData类是Java.sql包中的类,利用它可以获取我们连接到的数据库的结构、存储等很多信息。如: 1、数据库与用户,数据库标识符以及函数与存储过程。 2、数据库限制。 3、数据库支持不支持的功能。 4、架构、编目、表、列和视图等。 通过调转载 2017-03-31 14:56:01 · 518 阅读 · 0 评论 -
java中volatile关键字的含义
在java线程并发处理中,有一个关键字volatile的使用目前存在很大的混淆,以为使用这个关键字,在进行多线程并发处理的时候就可以万事大吉。Java语言是支持多线程的,为了解决线程并发的问题,在语言内部引入了 同步块 和 volatile 关键字机制。 synchronized 同步块大家都比较熟悉,通过 synchronized 关键字来实现,所有加上synchronized转载 2017-04-11 10:36:12 · 292 阅读 · 0 评论 -
Java四种代码块及运行优先级
一、普通代码块 直接在一个方法中出现的{}就称为普通代码块,例子程序如下: public class CodeDemo01{ public static void main(String[] args){ //普通代码块 { int x = 10; System.out.println("x=" + x); }转载 2017-04-11 12:29:00 · 2904 阅读 · 0 评论 -
四种代码快执行的优先级
Java静态代码块、构造代码块、构造方法的执行顺序静态代码优先于非静态的代码,是因为被static修饰的成员都是类成员,会随着JVM加载类的时候加载而执行,而没有被static修饰的成员也被称为实例成员,需要创建对象才会随之加载到堆内存。所以静态的会优先非静态的。执行构造器(构造方法)的时候,在执行方法体之前存在隐式三步: 1,super语句,可能出现以下三种情况: 1)构造方转载 2017-04-11 12:32:15 · 2255 阅读 · 0 评论 -
enum 的ordinal方法
返回枚举对象在枚举类中的序号。从0开始。原创 2017-04-28 10:19:07 · 11682 阅读 · 0 评论 -
ThreadPoolExcutor(线程池)初识
1、概念: 用于管理java的多线程。线程的生命周期包括创建、就绪、运行、阻塞、销毁,当有大量的线程任务需要创建时,内存的开销就大了,此时,使用线程池,在一定程度上能够很好的缓解线程的大开销。2、优势: (1)降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。 (2)提高响应速度。当任务到达时,任务可以不需要等到线程转载 2017-06-27 17:56:18 · 1464 阅读 · 0 评论 -
Socket read阻塞 处理方法
从Socket上读取对端发过来的数据一般有两种方法:1)按照字节流读取[java] view plain copyBufferedInputStream in = new BufferedInputStream(socket.getInputStream()); int r = -1; List l = new LinkedList(); while ((r = in.read()) != -1)转载 2017-06-27 13:17:27 · 7613 阅读 · 0 评论 -
sleep()和wait()的区别
sleep()和wait()的区别Java中的多线程是一种抢占式的机制而不是分时机制。线程主要有以下几种状态:可运行,运行,阻塞,死亡。抢占式机制指的是有多个线程处于可运行状态,但是只有一个线程在运行。 当有多个线程访问共享数据的时候,就需要对线程进行同步。线程中的几个主要方法的比较: Thread类的方法:sleep(),yield转载 2017-11-28 14:25:31 · 2526 阅读 · 0 评论 -
JVM关闭钩子 ---ShutdownHook
Java程序经常也会遇到进程挂掉的情况,一些状态没有正确的保存下来,这时候就需要在JVM关掉的时候执行一些清理现场的代码。JAVA中的ShutdownHook提供了比较好的方案。JDK提供了Java.Runtime.addShutdownHook(Thread hook)方法,可以注册一个JVM关闭的钩子,这个钩子可以在一下几种场景中被调用:程序正常退出使用System.exit()终端使用Ctr...转载 2018-04-11 09:32:10 · 2014 阅读 · 0 评论 -
ThreadLocal解读
先,ThreadLocal 不是用来解决共享对象的多线程访问问题的,一般情况下,通过ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。各个线程中访问的是不同的对象。另外,说ThreadLocal使得各线程能够保持各自独立的一个对象,并不是通过ThreadLocal.set()来实现的,而是通过每个线程中的new 对象 的操作来创建的转载 2015-09-28 15:56:33 · 356 阅读 · 0 评论 -
Java enum
用法一:常量在JDK1.5 之前,我们定义常量都是: public static fianl.... 。现在好了,有了枚举,可以把相关的常量分组到一个枚举类型里,而且枚举提供了比常量更多的方法。public enum Color { RED, GREEN, BLANK, YELLOW } 用法二:switchJDK1.6之前的switch语句只支持int,原创 2015-09-04 00:00:43 · 344 阅读 · 0 评论 -
Java基础
只有记住抽象类与普通类的唯一区别就是不能创建实例对象和允许有abstract方法。抽象类和接口的区别:1.抽象类可以有构造方法,接口中不能有构造方法。2.抽象类中可以有普通成员变量,接口中没有普通成员变量3.抽象类中可以包含非抽象的普通方法,接口中的所有方法必须都是抽象的,不能有非抽象的普通方法。4. 抽象类中的抽象方法的访问类型可以是public,protected和(默原创 2013-12-16 11:18:07 · 552 阅读 · 0 评论 -
泛型子类获取父类的模板类型方法
package com.zjh.test;import java.lang.reflect.ParameterizedType;import java.lang.reflect.Type;import org.junit.Test;abstract class BaseDao { public void getType(){ //获取父类类型原创 2015-03-05 10:59:52 · 2091 阅读 · 0 评论 -
Jvm工作原理学习笔记
一、 JVM的生命周期1. JVM实例对应了一个独立运行的java程序它是进程级别a) 启动。启动一个Java程序时,一个JVM实例就产生了,任何一个拥有public static void main(String[] args)函数的class都可以作为JVM实例运行的起点b) 运行。main()作为该程序初始线程的起点,任何其他线转载 2015-05-20 16:05:18 · 380 阅读 · 0 评论 -
CGLIB 和 JDK生成动态代理类的区别
AOP 使用的设计模式就是代理模式,是对IOC设计的补充。为了扩展性,往往会加上反射,动态生成字节码,生成代理类。 这里往往还会使用到DI,把代理的实现类通过依赖注入的方式,传给代理工厂。 关于生成动态代理类的方式有两种:JDK和CGLIB。 CGLIB,是一个开源工具。spring 和hibernate已经广泛使用。 关于AOP的概念解释网上有很多。 附件的内容是关于JD转载 2015-06-25 17:42:49 · 547 阅读 · 0 评论 -
反射与泛型
反射是Java语言中很重要的一个组成部分,所以就此话题讨论的资源可谓数之不尽,日常开发也会经常使用到关于反射的Reflection API。Java5.0 Tiger出现以后,更对反射API有了新的扩展,尽管讨论的话题很多,不过我还是觉得不够全面,尤其是对泛型这一块,所以就我所知,再花力气总结一番首先反射的入口是从Class开始的,所以如何获取Class就变得十分关键了。这里总结了几种方式转载 2015-03-05 17:55:14 · 1187 阅读 · 0 评论 -
log4j.properties文件的介绍
文主要解释log4j的配置文件各个配置项的含义,内容是从网上转载的1.Log4j的优点 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送地;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。最令人感兴趣的就是,这些可以通过一个配置文件来灵活地进行配置,而不需要修改应用的代码。转载 2014-09-21 16:31:36 · 1835 阅读 · 0 评论 -
由Cannot create a generic array of ArrayList<xx>引出的学习Java范型
最近在用Java写某个程序时希望写出一个包括ArrayList的数组自己定义如下:ArrayList[] edges = new ArrayList()[10];然后编译器报错如下:Cannot create a generic array of ArrayList;在C++里可以这样比较方便的定义: vector a[100];在Java里报错,查询了一下,转载 2015-03-06 16:09:57 · 879 阅读 · 0 评论 -
线程和子线程的关系
最近在和同事讨论java主线程和子线程之间的关系,自己也到网上搜索了下,发现各种答案都有,有些还是互相矛盾的。经过测试自己得出以下几个结论,跟大家分享下,如果有错误,欢迎大牛指正,帮助我这只小菜鸟。废话不多说,直接上结论:(一)Main线程是个非守护线程,不能设置成守护线程。 这是因为,main线程是由java虚拟机在启动的时候创建的。main方法开始执行转载 2015-07-21 14:41:44 · 2638 阅读 · 1 评论 -
MongoDB的creatCollection方法
完整的命令如下:db.createCollection(name, {capped: , autoIndexId: , size: , max } )name:集合的名字capped:是否启用集合限制,如果开启需要制定一个限制条件,默认为不启用,这个参数没有实际意义size:限制集合使用空间的大小,默认为没有限制max:集合中最大条数限制,默认为没有限制autoInde转载 2014-11-29 15:39:08 · 1445 阅读 · 0 评论 -
Apache中commons包的各种jar的功能说明
commons-logging.jar -----记录日志,通常和 log4j.jar共同使用 原因: 在 sun 开发 logger 前,apache 项目已经开发了功能强大的 log4j 日志工具,并向 sun 推荐将其纳入到 jdk 的一部分,可是 sun 拒绝了 apache 的提议,sun 后来自己开发了一套记录日志的工具。可是现在的开源项目都使用的是 log4j,log4原创 2014-10-17 11:37:06 · 3323 阅读 · 0 评论 -
CountDownLatch
CountDownLatch,一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。主要方法 public CountDownLatch(int count); public void countDown(); public void await() throws InterruptedException 构造方法参数指定了计数的次数转载 2014-10-10 16:30:34 · 388 阅读 · 0 评论 -
Java泛型理解
泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率;原创 2014-11-07 17:00:19 · 478 阅读 · 0 评论 -
Java发邮件功能实现
import javax.mail.MessagingException;import javax.mail.internet.MimeMessage;import net.sf.json.JSONObject;import org.apache.log4j.Logger;import org.springframework.mail.javamail.JavaMa原创 2014-11-10 16:53:43 · 610 阅读 · 0 评论 -
垃圾回收机制
Java提供finalize()方法,垃圾回收器准备释放内存的时候,会先调用finalize()。 (1).对象不一定会被回收。 (2).垃圾回收不是析构函数。 (3).垃圾回收只与内存有关。 (4).垃圾回收和finalize()都是靠不住的,只要JVM还没有快到耗尽内存的地步,它是不会浪费时间进行垃圾回收的。原创 2013-12-16 00:10:26 · 505 阅读 · 0 评论 -
反射与泛型的总结
Class的方法getDeclaredClasses() 获取当前类所有申明的内部类(不含父类继承)getClasses()获取当前类所有的公有内部类,包含从父类继承来的。Field的方法getDeclaredFields()获取当前类所有申明的属性。(不含父类继承)getFields()获取当前类所有的公有属性,包含从父类继承来的。Met原创 2015-03-06 19:51:27 · 432 阅读 · 0 评论 -
It is indirectly referenced from required .class files。的解决方法
Itis indirectly referenced from required .class files。出现该句是现引用的jar包依赖于其他包,但其他包还没有被引进来,导致编译不通过。原创 2015-03-09 15:37:50 · 1991 阅读 · 0 评论 -
Java位运算
位运算符主要用于整数的二进制位运算。可以把它们分为移位运算和按位运算。1. 移位运算1) 位右移运算(>>)>>用于整数的二进制位右移运算,在移位操作的过程中,符号位不变,其他位右移。例如,将整数a进行右移2位的操作: a>>22) 位左移运算(例如,将整数a进行左移3位的操作: a2) 不带符号右移运算(>>>)>>>用于整数的二进制位右移运算,在移位操原创 2013-12-13 11:15:17 · 664 阅读 · 0 评论 -
web本地客户端缓存图片实现
摘要1、Etag和Expires中Client 端Http Request Header及Server端Http Reponse Header工作原理。2、静态下Apache、Lighttpd和Nginx中Etag和Expires配置3、非实时交互动态页面中Etag和Expires处理在客户端通过浏览器发出第一次请求某一个URL时,根据 HTTP 协议 的规定,浏览器会向服务转载 2015-07-30 23:41:53 · 7318 阅读 · 0 评论 -
Java IO流
字符流和字节流字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 字节流和字符流的区别:读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单位,根据码表映射字符,一次可能读多个字节。处理对象不同:字节流能处理所有类型的数据(如图片、avi等),而字符流只能处理字符类型的数据。 */原创 2013-12-16 00:05:25 · 508 阅读 · 0 评论