java基础
文章平均质量分 69
刍 狗
天地不仁,以万物为刍狗。
展开
-
RunTime.getRunTime().addShutdownHook的用法
RunTime.getRunTime().addShutdownHook的用法_常识的Blog的博客-CSDN博客转载 2022-05-01 18:43:03 · 2742 阅读 · 0 评论 -
解决循环依赖(代码验证)
之前转的两篇文章都说过java中的循环依赖,现在大概写个代码demo验证下。之前地址:https://blog.csdn.net/u010730870/article/details/102602597,https://blog.csdn.net/u010730870/article/details/102607053。循环依赖有以下场景:1.模块间循环依赖,解决:见上边之前;2.同模块的类间循环依赖:<模型:A依赖B,B依赖C,C依赖A>(1)构造器声明对象式依赖:无法解.原创 2021-04-20 15:04:26 · 370 阅读 · 0 评论 -
maven的pom.xml中resources标签介绍
maven的pom.xml中resources标签介绍首先,这个是搬过来的。原文网址:https://my.oschina.net/anxiaole/blog/1613348在开发maven项目时,一般都会把配置文件放到src/main/resources目录下,针对这个目录,maven的resources对其进行单独的配置。resources配置一般如下:<build> <resources> <resource> .转载 2021-04-19 09:55:40 · 709 阅读 · 0 评论 -
java加解密算法
java加解密算法最近在搞报文加解密的一些业务,一路总是坑坑洼洼的。首先,部分内容是从别的地方搬运过来的。https://www.oschina.net/question/2534721_2143246?sort=default知识点1:sonarLint对加密算法使用的一些规范:Encryption algorithms should be used with secure mode and padding scheme Vulnerability Blockerj.原创 2021-04-13 11:41:27 · 11284 阅读 · 0 评论 -
Spring AOP 实例解析(InvocationHandler 的invoke的proxy 参数作用)
https://blog.csdn.net/rock154/article/details/80059344转载 2020-07-05 22:37:44 · 234 阅读 · 0 评论 -
代理模式
什么是代理模式? 代理模式的定义:代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。为什么要用代理模式?中介隔离作用:在某些情况下,一个客户类不想或者不能直接引用一个委托对象,而代理类对象可以在客户类和委托对象之间起到中介的作用,其特征是代理类和委托类实现相同的接口。 开闭原则,增加功能:代理类除了是客户类和委托类的中介之外,我们还可以通过给代理类增加额外的功能来扩展委托类的功能,这样做我们只需要修改代理类而不需要再修...原创 2020-06-03 09:43:55 · 183 阅读 · 0 评论 -
guava之Immutable(不可变)集合
一、概述 guava是google的一个库,弥补了java语言的很多方面的不足,很多在java8中已有实现,暂时不展开。Collections是jdk提供的一个工具类。 Guava中不可变对象和Collections工具类的unmodifiableSet/List/Map/etc的区别:当Collections创建的不可变集合的wrapper类改变的时候,不可变集合...转载 2020-04-16 22:04:16 · 446 阅读 · 0 评论 -
Spring Bean的scope(作用域)介绍
原文链接:https://blog.csdn.net/w_linux/article/details/80069039该篇博客主要阐述关于Bean的作用域(scope)。Spring容器最初提供了两种bean的scope类型:singleton和prototype,在Spring2.0之后又引入了另外三种scope类型:request、session、global session类型。不...转载 2020-04-15 19:58:33 · 243 阅读 · 0 评论 -
spring aop(spring interceptor), springmvc interceptor, servlet Filter有什么区别?
在spring中实现拦截功能时,有几个比较容易混淆的概念spring aop,spring interceptor,springmvc interceptor先总体上分析一下上面的3个术语看一下spring aop功能的继承关系图可以看到在spring中,Advice的实现接口就是Interceptor,所以可以看做:在spring中,spring aop与spring inter...转载 2020-03-28 15:13:05 · 345 阅读 · 0 评论 -
maven的一些优化经验
背景最近在优化一个系统的jar包依赖的问题,pom相关的问题,项目在install后报一堆黄色的警告,虽然不影响打包部署发布使用(maven已经很友好地帮忙给处理了),但一堆黄色的感叹号放那着实让人洁癖癌复发,太难受,消灭他们吧。操作问题1:有许多无用的依赖解决:通过“mvn dependency:analyze”命令扫描分析下,会指出所有无用的包(也不能以扫描的结果为准,删除...原创 2020-03-20 12:32:08 · 3287 阅读 · 0 评论 -
mybatis批量插入
原文网址:https://my.oschina.net/zjllovecode/blog/1818716一、首先对于批量数据的插入有两种解决方案(下面内容只讨论和Mysql交互的情况)1)for循环调用Dao中的单条插入方法2)传一个List<Object>参数,使用Mybatis的批量插入 (foreach)对于批量插入它的Mapper看起来向这样<ins...转载 2020-03-16 17:49:13 · 1520 阅读 · 0 评论 -
关于spring框架中初始化bean时指定执行一个方法:InitializingBean和init-method的使用
原文网址:https://www.cnblogs.com/weiqihome/p/8922937.htmlInitializingBean接口为bean提供了初始化方法的方式,它只包括afterPropertiesSet方法,凡是继承该接口的类,在初始化bean的时候都会执行该方法。测试,如下:import org.springframework.beans.factory.In...转载 2020-03-13 11:46:16 · 2680 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁详解
原文网址:https://www.cnblogs.com/xiaoxi/p/9140541.html一、读写锁简介 现实中有这样一种场景:对共享资源有读和写的操作,且写操作没有读操作那么频繁。在没有写操作的时候,多个线程同时读一个资源没有任何问题,所以应该允许多个线程同时读取共享资源;但是如果一个线程想去写这些共享资源,就不应该允许其他线程对该资源进行读和写的操作了。 针对这种场...转载 2020-03-05 15:01:49 · 259 阅读 · 0 评论 -
真正理解线程上下文类加载器(多案例分析)
原文链接:https://blog.csdn.net/yangcheng33/article/details/52631940通过上面的两个案例分析,我们可以总结出线程上下文类加载器的适用场景:当高层提供了统一接口让低层去实现,同时又要是在高层加载(或实例化)低层的类时,必须通过线程上下文类加载器来帮助高层的ClassLoader找到并加载该类。当使用本类托管类加载,然而加载本类的Cla...转载 2020-03-03 20:28:30 · 180 阅读 · 0 评论 -
灰度百分比策略简单实现
开发过程中有些业务存在不确定性,但部署生产后又不好回滚,因为不能为了这一个业务功能影响整个迭代的功能,回滚后所有的功能都无法上线。此时,就需要加上开关实现灰度发布。常用的灰度有两种:完全灰度和限流百分比灰度。以下详细介绍下:1.完全灰度:即百分百的灰度,要么这个功能使用新逻辑,要么使用旧逻辑。这就简单了,直接用if/else实现2.限流百分比灰度:在系同启动时,配置一个限流的灰度百分比a(...原创 2020-02-14 14:51:59 · 2638 阅读 · 0 评论 -
深入理解jvm-内存模型和GC
原文网址:https://www.jianshu.com/p/76959115d486转载 2020-02-01 19:59:47 · 202 阅读 · 0 评论 -
java对象复制
原文链接:https://blog.csdn.net/54powerman/article/details/64920431?locationNum=6&fps=1java赋值是复制对象引用,如果我们想要得到一个对象的副本,使用赋值操作是无法达到目的的:@Testpublic void testassign(){ Person p1=new Person(); p1...转载 2020-01-17 15:02:56 · 457 阅读 · 0 评论 -
GuavaCache内存缓存 理论 + 实践
两篇很好的文章:偏理论:https://blog.csdn.net/xlgen157387/article/details/47293517偏实践:https://blog.csdn.net/u012859681/article/details/75220605适用性缓存在很多场景下都是相当有用的。例如,计算或检索一个值的代价很高,并且对同样的输入需要不止一次获取值的时候,就应当考...转载 2019-12-17 14:54:14 · 180 阅读 · 0 评论 -
spring中类名相同,但包名不同,导致spring启动失败 解决方案
背景:本项目引入了一个三方jar包,但jar中出现了一个类名相同,但包名不同,导致spring启动失败 解决方案:方案一:排查下在本项目调用过程中是否不会用到某一个深层jar,要是没用到,则在引入该jar的坐标时用以下方式排除掉该冲突类所在的深层jar<dependency> <artifactId>三方jar</artifactId> ...原创 2019-12-13 17:23:55 · 4423 阅读 · 2 评论 -
java spring websocket实现
一、理论https://blog.csdn.net/d_holyDancer/article/details/81154132轮询:客户端定时向服务器发送Ajax请求,服务器接到请求后马上返回响应信息并关闭连接。 其主要用到js的setInterval()方法。优点:简单易懂,后端程序编写比较容易,不需要特别编写特别的代码。缺点:请求中有大半是无用,同时浪费带宽和服务器资源。...转载 2019-12-11 16:26:40 · 142 阅读 · 0 评论 -
线程池:异步处理 + 延迟响应
常见的线程池:ExecutorService executor = Executors.newCachedThreadPool() ;1、newFixedThreadPool() 创建固定大小的线程池 线程池的大小一旦达到最大值就会保持不变,如果某个线程因为执行异常而结束,那么线程池会补充一个新线程2、newCachedThreadPool() 创建一个可缓存的线程池,如果线程池的大小...原创 2019-12-11 14:20:50 · 1164 阅读 · 0 评论 -
java运行时的堆栈信息
我们知道,jvm内存结构主要有方法区(非堆或元数据区)、堆、java栈、native栈、程序计数器。其中java栈线程独有,会存java程序运行时某个方法的信息,当然,这些只是理论。当我们程序员想显示地看到这些信息时,可以通过以下方式,获取一些比较重要的、我们关心的内容:package com.yoyo.yotils.yoyo.ztest;import java.util.stream....原创 2019-12-02 11:42:43 · 693 阅读 · 0 评论 -
各种方式创建String及其在jvm中的创建情况
1.只在常量池上创建常量 String a1 = "AA";12.只在堆上创建对象 String a2 = new String("A") + new String("A");13.在堆上创建对象,在常量池上创建常量 String a3 = new String("AA");14.在堆上创建对象,在常量池上创建引用 String a4 = new Str...转载 2019-12-02 11:22:39 · 284 阅读 · 0 评论 -
maven提供的优化项目依赖工具
场景:项目上提个需求,要求一个系统打完包后大小不能超过10M,否则不能上传上去进行发布。分析:优化代码、删除冗余pom坐标包、设置pom中scope配置1.在删除完一些无用代码、下线的功能,优化代码后,发现包的大小只是减少了KB级的大小。所以还是着手于pom坐标的工作吧2.(1)maven提供了一个分析系统pom引用的问题的工具:找到需要分析的系统模块(全量系统的话再主pom的同级目录...原创 2019-12-02 11:01:12 · 6106 阅读 · 0 评论 -
JS 和 JAVA 执行cmd命令
JS建一个html文件,写个例子:<html> <head> <meta charset = "UTF-8"> </head> <body> Input Command :<input id = "cmdValue"/></br> <button onclick = "jsExec...原创 2019-11-27 12:44:17 · 957 阅读 · 0 评论 -
URL编码表
转载 2019-11-25 17:24:36 · 138 阅读 · 0 评论 -
Spring-IoC容器
IoC是一个过程,通过这个过程,对象定义它们的依赖关系,即它们使用的其他对象,只能通过构造函数参数,工厂方法的参数,或者在构造或从工厂方法返回后在对象实例上设置的属性。 然后容器在创建bean时注入这些依赖项。这个过程和我们平常使用的流程是相反的,因此称为控制反转,bean本身通过使用类的直接构造或诸如服务定位器模式之类的机制来控制其依赖关系的实例化或位置。org.springframewor...转载 2019-11-25 10:50:31 · 89 阅读 · 0 评论 -
BeanProcessor的使用案例
https://www.cnblogs.com/niechen/p/8651513.htmlhttps://www.jianshu.com/p/6a48675ef7a3转载 2019-11-25 10:44:03 · 406 阅读 · 0 评论 -
7种JVM垃圾收集器特点,优劣势、及使用场景
1.新生代的收集器包括:Serial PraNew Parallel Scavenge2.老年代的收集器包括:Serial Old Parallel Old CMS3.回收整个Java堆(新生代和老年代)G1收集器...转载 2019-11-25 10:37:23 · 234 阅读 · 0 评论 -
深入详解JVM内存模型与JVM参数详细配置
-Xms设置堆的最小空间大小。 -Xmx设置堆的最大空间大小。 -Xmn:设置年轻代大小 -XX:NewSize设置新生代最小空间大小。 -XX:MaxNewSize设置新生代最大空间大小。 -XX:PermSize设置永久代最小空间大小。 -XX:MaxPermSize设置永久代最大空间大小。 -Xss设置每个线程的堆栈大小 -XX:+UseParal...转载 2019-11-25 10:34:59 · 126 阅读 · 0 评论 -
java回调机制
回调:在类A.a()调用B.b()结束后,b中自动再去调A中接下来的逻辑。盗个图:好处:解耦、代码规范、感觉还有那么点模板模式的感觉代码:回调接口:package com.yoyo.yotils.yoyo.callback;/** * 回调函数 * @author yoyo * @version $Id: Callback.java, v 0.1 2019年11月1...原创 2019-11-18 21:12:09 · 117 阅读 · 0 评论 -
通过包名递归扫描包下的所有类 + 并获取每个类的注解内容(本例为注解的权限码内容)
业务背景:项目上给了个任务,要整理出系统中所有有权限码的功能,以及各个功能对应的权限码是什么。权限码是以注解的方式在功能方法上注解的。实现方式:1.扫描出项目中所有的类名集合2.对上边类名集合进行反射得到对应的类集合3.获取各个类的注解权限,4.对上边获取权限的方法进行批量操作具体源码:package com.yoyo.yotils.yoyo.utils;impo...原创 2019-11-15 18:17:32 · 759 阅读 · 0 评论 -
实现AOP的几种方式
源码地址:https://github.com/yuboYUBO/aop-imlhttps://www.cnblogs.com/flyingaway/archive/2017/12/28/8126178.htmlhttps://blog.csdn.net/Summer_YuXia/article/details/75104949转载 2019-11-14 19:34:31 · 334 阅读 · 0 评论 -
Spring的BeanPostProcessor和BeanFactoryPostProcessor区别
Spring提供了两种后处理bean的扩展接口,分别为BeanPostProcessor和BeanFactoryPostProcessor,这两者在使用上是有所区别的。BeanPostProcessor:bean级别的处理,针对某个具体的bean进行处理接口提供了两个方法,分别是初始化前和初始化后执行方法,具体这个初始化方法指的是什么方法,类似我们在定义bean时,定义了init-m...转载 2019-11-14 19:31:53 · 127 阅读 · 0 评论 -
spring bean中的id和name是否可以重复
同名bean:多个bean 有相同的 name 或者 id,称之为同名beanbean 的id 和 name的区别id和name都是spring 容器中中bean 的唯一标识符。id: 一个bean的唯一标识 , 命名格式必须符合XML ID属性的命名规范 name: 可以用特殊字符,并且一个bean可以用多个名称:name=“bean1,bean2,bean3” ,用逗号或者分号...转载 2019-11-14 18:08:34 · 3542 阅读 · 0 评论 -
在用常用的idea插件
1.maven helper:分析pom引用2.findBugs-idea:查找bug或有问题的代码3.checkstyle-idea:查找bug或有问题的代码(google出的)4.Power Mode II :设置敲代码时的酷炫效果5.smart tomcat:tomcat服务器6.sofa intellij idea plugin7.python community ...原创 2019-11-13 14:32:48 · 223 阅读 · 0 评论 -
static关键字作用总结
1、静态方法能不能引用非静态资源?不能,new的时候才会产生的东西,对于初始化后就存在的静态资源来说,根本不认识它。2、静态方法里面能不能引用静态资源?可以,因为都是类初始化的时候加载的,大家相互都认识。3、非静态方法里面能不能引用静态资源?可以,非静态方法就是实例方法,那是new之后才产生的,那么属于类的内容它都认识。...转载 2019-11-13 11:35:09 · 112 阅读 · 0 评论 -
java代码优化
原文链接:https://www.cnblogs.com/xrq730/p/4865416.html?spm=a2c4e.10696291.0.0.3c7a19a4UomczO(1)尽量指定类、方法的final修饰符带有final修饰符的类是不可派生的。在Java核心API中,有许多应用final的例子,例如java.lang.String,整个类都是final的。为类指定final...转载 2019-11-11 16:29:40 · 84 阅读 · 0 评论 -
Java架构师面试题——JVM性能调优
转载地址:https://blog.csdn.net/zhan_lang/article/details/88567569JVM系列直通BAT必考题系列:7种JVM垃圾收集器特点,优劣势、及使用场景直通BAT必考题系列:JVM的4种垃圾回收算法、垃圾回收机制与总结直通BAT必考题系列:深入详解JVM内存模型与JVM参数详细配置JVM内存调优-Xms设置堆的最小空间大...转载 2019-11-11 10:15:00 · 588 阅读 · 0 评论 -
java序列化和serialVersionUID 总结
原文链接:https://www.iteye.com/blog/m635674608-22336851.当一个类有父类有serialVersionUID,子类没有重写serialVersionUID,那么jvm会自动生成一个serialVersionUID2.序列化:序列化可以将一个java对象以二进制流的方式在网络中传输并且可以被持久化到数据库、文件系统中,反序列化则是可以...转载 2019-10-31 17:07:00 · 1679 阅读 · 0 评论