Java
文章平均质量分 71
meng_xiaohua
这个作者很懒,什么都没留下…
展开
-
Spring常见问题
Spring 是一款开源的轻量级 Java 开发框架,旨在提高开发人员的开发效率以及系统的可维护性。Spring 翻译过来就是春天的意思,可见其目标和使命就是为 Java 程序员带来春天啊!感动!题外话 : 语言的流行通常需要一个杀手级的应用,Spring 就是 Java 生态的一个杀手级的应用框架。我们一般说 Spring 框架指的都是 Spring Framework,它是很多模块的集合,使用这些模块可以很方便地协助我们进行开发。比如说 Spring 自带 IoC(Inverse of原创 2022-04-26 23:24:49 · 803 阅读 · 0 评论 -
【java】多线程判断全部线程执行结束的方法
1.join()如果是一个线程,可以使用此方法,多个不合适2.CountDownLatch此为并发计数器,每个线程结束后减一(countDown()),countDownLatch.await();//等待所有子线程执行完public class ImportThread extends Thread { private CountDownLatch threadsSignal; public ImportThread(CountDownLatch threadsSignal) { th...原创 2020-10-22 17:58:44 · 2897 阅读 · 0 评论 -
【Java】Java对象为啥要实现Serializable接口
导读最近这段时间一直在忙着编写Java业务代码,麻木地搬着Ctrl-C、Ctrl-V的砖,在不知道重复了多少次定义Java实体对象时“implements Serializable”的C/V大法后,脑海中突然冒出一个思维(A):问了自己一句“Java实体对象为什么一定要实现Serializable接口呢?”,关于这个问题,脑海中的另一个思维(B)立马给出了回复“居然问这么幼稚和基础的问题,实现Serilizable接口是为了序列化啊!”,思维(A):“哦,好吧!然而,然后呢?”此时思维(B)陷入了沉原创 2020-08-05 17:53:59 · 156 阅读 · 0 评论 -
【Java】自定义ThreadPoolExecutor创建线程池
平时我们在项目中使用多线程时,建议不要使用jdk自带的四个创建线程池的方法:newFixedThreadPool,newSingleThreadExecutor,newCachedThreadPool,newScheduledThreadPool。这也是阿里巴巴编码规范要求的。FixedThreadPool和SingleThreadPoolPool :使用的是无界队列,允许的请求队列长度为 Integer.MAX_VALUE,可能导致堆积大量请求在队列中;newCachedThreadPool,n.原创 2020-07-21 16:16:39 · 697 阅读 · 0 评论 -
【集合】HashMap和ConcurrentHashMap的知识总结
哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表。一、什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 数组 采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1); 通过给定值进行查找,需要遍历数组,...转载 2020-04-08 16:24:49 · 172 阅读 · 0 评论 -
【Java】类的初始化顺序
1. 父类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行2. 子类静态成员和静态初始化块 ,按在代码中出现的顺序依次执行3. 父类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行4. 父类构造方法5. 子类实例成员和实例初始化块 ,按在代码中出现的顺序依次执行6. 子类构造方法结论:对象初始化的顺序,先静态方法,再构造方法,每个又是先基类后子类。...原创 2020-03-17 17:01:31 · 94 阅读 · 0 评论 -
ConcurrentHashMap的实现原理(JDK1.7和JDK1.8)
HashMap、CurrentHashMap 的实现原理基本都是BAT面试必考内容,阿里P8架构师谈:深入探讨HashMap的底层结构、原理、扩容机制深入谈过hashmap的实现原理以及在JDK 1.8的实现区别,今天主要谈CurrentHashMap的实现原理,以及在JDK1.7和1.8的区别。内容目录:1.哈希表2.ConcurrentHashMap与HashMap、HashTable的区...转载 2020-03-16 15:06:47 · 169 阅读 · 0 评论 -
static和非static的区别
关于static和非static变量的区别1.static 修饰的变量称为类变量或全局变量或成员变量,在类被加载的时候成员变量即被初始化,与类关联,只要类存在,static变量就存在。非static修饰的成员变量是在对象new出来的时候划分存储空间,是与具体的对象绑定的,该成员变量仅为当前对象所拥有的。2.static修饰的变量在加载的时候先于main方法加载在内存中的数据共享区----...原创 2020-02-28 17:11:09 · 400 阅读 · 0 评论 -
如何访问接口中的常量
接口中常量:1.接口中的常量的修饰符都是:public final static2.可以通过接口名来访问: 接口名.常量名3.可以通过实现了接口的类来访问:类名.常量名4.可以通过定义对象(实现了接口的类的对象):对象名.常量名请看下面的例子:public class TestInterfaceStaticVar i...原创 2020-02-27 10:49:39 · 2864 阅读 · 0 评论 -
ArrayList的底层实现原理
https://www.cnblogs.com/maoyali/p/8805975.html转载 2019-08-22 14:59:44 · 197 阅读 · 0 评论 -
HikariCP连接池
性能最好的java数据库连接池原文地址:http://blog.csdn.net/clementad/article/details/46928621官网:https://github.com/brettwooldridge/HikariCP<!-- Hikari数据源 --> <bean id="dataSource" class="com.zaxxer...原创 2020-02-05 00:19:13 · 176 阅读 · 0 评论 -
Java调用CXF WebService接口的两种方式实例
通过http://127.0.0.1:10082/DCCS/ws/MeterReading?wsdl访问到xml内容如下,说明接口可以访问,没有问题。1.静态调用 // 创建一个WS客户端代理工厂Bean JaxWsProxyFactoryBean factory = new JaxWsProxyFactoryBean(); // 判断是否抛出异常 fac...原创 2019-12-31 11:52:29 · 3210 阅读 · 0 评论 -
Java中static块,构造块,构造函数的执行顺序
public class Father { static { System.out.println("Father静态块"); } { System.out.println("Father构造块"); } public Father() { System.out.println("Father构造函数")...原创 2019-12-25 18:10:55 · 157 阅读 · 0 评论 -
CXF生成webservice客户端代码
cxf下载地址:apache-cxf-3.1.10.zip,下载解压就行。配置环境变量path中再加入;%CXF_HOME%\bin打开cmd命令行进入cxf安装目录下的bin,利用wsdl2java生成代码。出现这种情况是因为url地址不正确正确执行完毕之后会在-d后的路径下看到-p包对应的java文件wsdl2java写法:wsdl2java -p co...原创 2019-12-25 16:56:51 · 206 阅读 · 0 评论 -
JDK7的maven项目切换到JDK8全纪录
今天花了一个下午的时间,将一个之前用JDK7写的web项目升级到了JDK8,这个过程中遇到了许多麻烦,在这里简单的记录一下,方便日后查看。1、下载JDK8并且配置环境变量。 2、eclipse配置。原创 2019-10-10 17:45:28 · 347 阅读 · 0 评论 -
java创建线程的三种方式及其对比
一、Java中创建线程主要有三种方式:1、继承Thread类创建线程类(1)定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体。(2)创建Thread子类的实例,即创建了线程对象。(3)调用线程对象的start()方法来启动该线程。package com.thread; public c...转载 2019-08-22 16:16:18 · 118 阅读 · 0 评论 -
JSP9个内置对象
JSP内置对象(9个常用的内置对象) 1.request对象客户端的请求信息被封装在request对象中,通过它才能了解到客户的需求,然后做出响应。它是HttpServletRequest类的实例。序号方法说明objectgetAttribute(Stringname) 返回指定属性的属性值EnumerationgetAttributeNames() 返回所有可用属性名的枚举Stringget...原创 2018-06-28 16:17:04 · 141 阅读 · 0 评论 -
Java垃圾回收中对象的强引用,软引用,弱引用和虚引用
众所周知,java中是JVM负责内存的分配和回收,这是它的优点(使用方便,程序不用再像使用c那样操心内存),但同时也是它的缺点(不够灵活)。为了解决内存操作不灵活这个问题,可以采用软引用等方法。 在JDK1.2以前的版本中,当一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及状态,程序才能使用它。这 就像在日常生活中,从商店购买了某样物品后,如果有用,就...转载 2018-06-28 16:21:07 · 609 阅读 · 0 评论 -
HashMap的底层实现
1. HashMap概述: HashMap是基于哈希表的Map接口的非同步实现(Hashtable跟HashMap很像,唯一的区别是Hashtalbe中的方法是线程安全的,也就是同步的)。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。2. HashMap的数据结构: 在java编程语言中,最基本的结构就是两种,一个是数组,另...转载 2018-06-28 16:22:47 · 139 阅读 · 0 评论 -
HashMap底层实现原理及面试问题
①HashMap的工作原理HashMap基于hashing原理,我们通过put()和get()方法储存和获取对象。当我们将键值对传递给put()方法时,它调用键对象的hashCode()方法来计算hashcode,让后找到bucket位置来储存值对象。当获取对象时,通过键对象的equals()方法找到正确的键值对,然后返回值对象。HashMap使用链表来解决碰撞问题,当发生碰撞了,对象将会储存在链...转载 2018-06-28 16:23:38 · 13941 阅读 · 6 评论 -
Vector与ArrayList区别
在写java的时候,基本上都喜欢用arraylist,甚至我都不知道有个vector的存在。查了一下发现又是线程安全问题。。。咋个线程安全天天围着我转呢。。。多得阿里巴巴,让我开始认识java的所谓线程安全问题。the following is from:http://blessed24.javaeye.com/blog/7513361. Vector & ArrayList 1) Ve...原创 2018-06-28 16:24:10 · 149 阅读 · 0 评论 -
过滤器和拦截器的本质区别
1、首先要明确什么是拦截器、什么是过滤器1.1 什么是拦截器: 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。 在Webwork的中文文档的解释为——拦截器是动态拦截Action调用的对象。它提供了一种机制可以使开发者可以定义在一个action执行的前后执行的代码,也可以...转载 2018-07-02 16:46:55 · 176 阅读 · 0 评论 -
JAVA中堆和栈的区别
在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在堆中分配的内存,由Java虚拟机的自动垃圾回收器来管理。 在堆中产生了一...转载 2018-07-02 16:46:47 · 113 阅读 · 0 评论 -
JVM内存模型
我们知道,计算机CPU和内存的交互是最频繁的,内存是我们的高速缓存区,用户磁盘和CPU的交互,而CPU运转速度越来越快,磁盘远远跟不上CPU的读写速度,才设计了内存,用户缓冲用户IO等待导致CPU的等待成本,但是随着CPU的发展,内存的读写速度也远远跟不上CPU的读写速度,因此,为了解决这一纠纷,CPU厂商在每颗CPU上加入了高速缓存,用来缓解这种症状,因此,现在CPU同内存交互就变成了下面的样子...转载 2018-07-02 16:46:39 · 105 阅读 · 0 评论 -
J2EE的13个规范总结
什么是J2EE?在企业级应用中,都有一些通用企业需求模块,如数据库连接,邮件服务,事务处理等.既然很多企业级应用都需要这些模块,一些大公司便开发了自己的通用模块服务,即中间件.这样一来,就避免了重复开发,开发周期长和代码可靠性差等问题.但是,各公司的中间件不兼容的问题就出现了,用户无法将它们组装在一起为自己服务.于是,"标准"就应运而生了.J2EE就是基于JAVA技术的一系列标准.J2EE是Jav...转载 2018-07-12 09:14:09 · 220 阅读 · 0 评论 -
【Java】一次SpringMVC+ ibatis 配置多数据源经历
问题如何在一个web项目中使用两个数据源,并且不同的接口可以按需选择数据库。方案最开始的做法因为我们的项目用的是ibatis作为ORM框架,在其配置文件中可以配置数据源信息,原始配置如下:spring-application.xml<!-- DBCP数据源 --> <bean id="dataSource" class="org.apach...原创 2018-10-18 09:32:34 · 524 阅读 · 0 评论 -
Java遍历目录下的所有文件
1.遍历本目录下所有的文件(不包括目录的目录里的文件)import java.io.File; public class main { public static void main(String[] args) { String path = "D:\\JAVA"; //要遍历的路径 File file = new File(path); //获取其file对象 ...原创 2018-10-19 09:52:11 · 6822 阅读 · 1 评论 -
Collections.sort的两种用法
Collections是一个工具类,sort是其中的静态方法,是用来对List类型进行排序的,它有两种参数形式: public static <T extends Comparable<? super T>> void sort(List<T> list) { list.sort(null); } pu...原创 2018-11-08 10:35:48 · 171 阅读 · 0 评论 -
null不可以toString(),但是可以(String)强转
null不可以toString(),但是可以(String)强转为(String)null原创 2019-02-22 16:53:50 · 5053 阅读 · 0 评论 -
Java设计模式的常见应用场景
一、Java I/O中的设计模式1、适配器模式适配器模式就是把一个类的接口变换成客户端所能接受的另一种接口,从而使两个接口不匹配而无法在一起工作的两个类能够在一起工作。通常被用在一个项目需要引用一些开源框架来一起工作时,这些框架的内部都有一些关于环境信息的接口,需要从外部引入,但是外部的接口不一定能匹配,在这种情况下,就需要适配器模式来转换接口。 Java的I/O类库中有许多这样的需求,如将字符...转载 2018-06-27 10:14:56 · 2048 阅读 · 1 评论