
java
hqlccc
这个作者很懒,什么都没留下…
展开
-
nacos微服务调用
nacos 404错误原创 2022-11-10 16:04:26 · 477 阅读 · 0 评论 -
ThreadLocal的使用
threadLocal是线程封闭的一种实现。线程封闭:当访问共享的可变数据,通常需要使用同步。一种避免使用同步的方法就是不共享。如果单线程内访问数据,就不需要同步。这种技术就是线程封闭。局部变量和ThreadLocal就是这种机制的一种实现。其实就是每个thread有自己的副本,不共享。下面看下代码(也是参考了网上其他人的):public class SequenceNumber { //①通过匿名内部类覆盖ThreadLocal的initialValue()方法,指定初始值//原创 2021-07-25 10:08:01 · 579 阅读 · 0 评论 -
Spring的@PostConstruct注解
今天遇到一个问题,本来想在构造函数里面使用 @Autowired 注入的对象b,结果b为null。但是通过@PostConstruct 注解获取的对象可以。@Componentpublic class AA{ @Autowired private BB b; AA() { System.out.println("AA-----"); this.iv = b.getKeystoreIv(); } @PostConstruct public void init() { Syst原创 2021-06-09 17:44:14 · 217 阅读 · 0 评论 -
Springboot AOP的介绍
说到AOP,面试高频考点。说白了,就是在正常业务流程中织入一些流程化的代码。我们可能最先想到的就是两个东西,一个是拦截器,一个是代理类。拦截器代码:package interceptor;import java.lang.reflect.InvocationTargetException;/** * 拦截器接口 * @author huql * @date 2021/4/14 23:06 * @comments: */public interface Interceptor {原创 2021-04-15 16:44:11 · 140 阅读 · 0 评论 -
RuntimeException().getStackTrace()的使用
今天阅读spring boot源码发现一句:RuntimeException().getStackTrace();作用是推断出当前执行流中的某个类。可以发现获取的值都是调用栈的方法名。本地测试了一下,代码如下:public static void main(String[] args) throws Exception{ StackTraceElement[] stackTrace = new RuntimeException().getStackTrace(); St原创 2021-03-30 16:39:23 · 2219 阅读 · 0 评论 -
StringBuffer的equals方法比较相同的两个字符串不相等
直接上代码public static void main(String[] args) { String a = "xxxx"; StringBuffer buffer = new StringBuffer("xxxx"); System.out.println(buffer.equals(a)); }输出结果:false进入object的equals方法,发现两个对象的value的char数组长度不同。原因是new StirngBu原创 2021-02-05 15:18:47 · 785 阅读 · 0 评论 -
DispatcherServlet ClassNotFoundException 问题
今天搭建springMVC项目的时候出了个问题。pom依赖为4版本的时候启动报错<dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>4.1.4.RELEASE</version> <原创 2021-01-19 22:30:44 · 705 阅读 · 0 评论 -
关于java8的lambda的学习以及Consumer和BiConsumer实例
lambda基本格式为:参数 -> 表达式。作用:将一块代码块传递到一个对象(定时器或者这个sort 方法),这个代码块将在未来某个时期被调用。如:public class lambdaTest { public static void main(String[] args) { // 这是将代码块传递到sort String[] planets = ...原创 2020-02-12 22:18:28 · 3261 阅读 · 0 评论 -
可以看看的网页
http://lrwinx.github.io/2017/03/04/%E7%BB%86%E6%80%9D%E6%9E%81%E6%81%90-%E4%BD%A0%E7%9C%9F%E7%9A%84%E4%BC%9A%E5%86%99java%E5%90%97/原创 2020-01-12 14:05:59 · 886 阅读 · 0 评论 -
阿里规约:所有整型包装类对象之间值的比较,全部使用 equals 方法比较。
对于这一条阿里规约坐下说明。代码:Integer a = 99999;Integer b = 99999;System.out.println(a == b);System.out.println(a == b.intValue());System.out.println(a.equals(b));依次输出 false,true,true。原因: java == 作用于8个基本数...原创 2019-11-22 21:14:17 · 1384 阅读 · 0 评论 -
设计模式--组合模式
组合模式:对于树形结构,当容器对象(如文件夹)的某一个方法被调用时,将遍历整个树形结构,寻找也包含这个方法的成员对象(可以是容器对象,也可以是叶子对象)并调用执行,牵一而动百,其中使用了递归调用的机制来对整个结构进行处理。由于容器对象和叶子对象在功能上的区别,在使用这些对象的代码中必须有区别地对待容器对象和叶子对象,而实际上大多数情况下我们希望一致地处理它们,因为对于这些对象的区别对待将会使得程序...原创 2019-11-22 17:02:03 · 121 阅读 · 0 评论 -
Java--策略模式
策略模式主要目的:将算法的使用和定义分开,将算法的行为和环境分开。具体是将算法放在策略类中,在环境类中通过策略类调用具体的算法。比如买电影票。学生票、儿童票可以享受不同折扣。最常采用的方法是定义一个电影票的类,如果是学生就打几折,如果是儿童就打几折。这种硬编码不符合开闭原则。可以通过建立一个Discount 接口,不同的对象实现这个接口的calculate方法,来进行一个折扣的计算。代码如下...原创 2019-10-20 09:14:04 · 190 阅读 · 0 评论 -
关于HashMap的无序问题实验
HashMap是无序的,插入的顺序和最后遍历输出的顺序不同。实验代码如下:import javax.xml.bind.SchemaOutputResolver;import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import static java.util.Objects.hash;...原创 2019-10-18 21:18:55 · 343 阅读 · 0 评论 -
栈和栈帧
栈和栈帧: https://blog.youkuaiyun.com/qian520ao/article/details/79118474转载 2019-09-18 11:24:37 · 134 阅读 · 0 评论 -
设计模式--适配器模式
假如一个公司以前开发了一个软件,其中包括接口ScoreOperation,接口中有排序方法 sort(int[]) 和 查找方法search(int[], int)。现在为了提高排序和查找的效率,决定采用算法库中的快速排序算法类QuickSort 和二分查找算法类BinarySearch。其中的QuickSort的quickSort(int[])方法实现了快速排序,BinarySearch 的bi...原创 2019-09-17 15:06:49 · 217 阅读 · 0 评论 -
Java内存区域
java虚拟机在执行java程序的过程中会把它所管理的内存划分为多个不同的区域。这些区域有各自的用途,以及创建时间和销毁时间。总结如下:1、程序计数器程序计数器是一块较小的内存空间,他可以看做是当前线程所执行的字节码的行号指示器。然后jvm的字节码解释器在工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等基础功能都需要依赖这个计数器。由于...原创 2019-09-16 21:36:41 · 114 阅读 · 0 评论 -
设计模式--单例模式
背景:在日常开发中,有时候为了节约资源,有时需要确保系统中某个类只有唯一一个实例,当这唯一一个实例创建成功后,我们无法再创建一个同类型的其他对象,所有操作只能基于这一个实例。为了确保对象唯一性,可以通过单例模式进行。单例模式三个要点:1、某个类只能有一个实例;2、它必须自行创建这个实例(私有构造函数);3、自行向整个系统提供这个实例。例一:提供一个服务器的负载均衡器,将访问进行分发。由于集群...原创 2019-09-09 16:30:01 · 197 阅读 · 0 评论 -
设计模式--工厂模式
1、由浅入深,先讲简单工厂模式。简单工厂模式就是说在创建对象时,将需要创建的不同对象的相关代码封装到不同的类中,这些称为具体产品类,而将他们的公共代码抽象到一个抽象产品类中,每一个具体产品类的对象都是抽象产品类的子类;然后提供一个工厂类用于创建各种产品,在工厂类中提供一个创建茶产品的工厂方法,该方法可以根据所传入的参数不同,创建不同的具体产品对象。package SimpleFactoryPat...原创 2019-09-07 13:38:41 · 122 阅读 · 0 评论 -
Java的Collections.sort 排序
Collections.sort 排序第一种:直接排序import java.util.*;public class test { public static void main(String[] args){ List<Integer> archinfolist = Arrays.asList(1,4,2,6,56,24); System...原创 2019-06-05 23:17:27 · 489 阅读 · 0 评论 -
Java虚拟机类加载机制--类加载时机
虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。类在JVM中的生命周期:加载–>验证–>准备–>解析–>初始化–>使用–>卸载其中 验证–>准备–>解析 部分统称连接。那么什么情况下会进行加载?JVM的规范中没有强制约束,可以交给虚拟机的...原创 2019-05-31 22:43:30 · 388 阅读 · 2 评论 -
函数初始化
先看代码class Parent { int i = 1; Parent() { System.out.println(i); int x = getValue(); System.out.println(x); } { i = 2; }//这个叫构造块 protected int g...原创 2019-06-12 23:34:14 · 5686 阅读 · 1 评论 -
Java类加载机制--类加载过程(加载)
Java虚拟机加载类的全过程包括:加载、验证、准备、解析、初始化。前三个叫连接过程。今天我们讲加载。首先明确“加载”是“类加载”的一个过程,不要混淆。加载过程中,虚拟机需要完成下列三个事情:通过一个类的全限定名获取定义此类的二进制字节流;将这个字节流所代表的静态存储结构转化为方法区运行时的数据结构;在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据...原创 2019-06-01 22:57:58 · 3322 阅读 · 0 评论 -
Java类加载机制--类加载过程(验证)
Java虚拟机加载类的全过程包括:加载、验证、准备、解析、初始化。验证、准备、解析叫连接过程。今天我们讲验证。验证是连接阶段的第一步,这一阶段的目的是为了确保Class文件的字节流中包含的信息符合当前虚拟机的要求,不会危害虚拟机的自身安全。java语言相对安全(相对于C/C++),使用纯粹的java代码无法做到一些行为,诸如访问数组边界以外的数据、将一个类型转型为它并未实现的类型、跳转到不存在...原创 2019-06-01 23:47:14 · 1098 阅读 · 0 评论 -
Java类加载机制--类加载过程(准备)
Java虚拟机加载类的全过程包括:加载、验证、准备、解析、初始化。验证、准备、解析叫连接过程。今天我们讲准备。准备阶段是正式为类变量分配内存并设置类变量初始值的阶段,这些变量所使用的内存都将在方法区内进行分配。这个阶段中有两个容易产生混淆的概念需要强调一下。首先,这时候仅对类变量(被static修饰的变量),进行内存分配。不会对实例变量进行分配,实例变量将在对象实例化时随着对象一起被分配在jav...原创 2019-06-02 14:33:52 · 416 阅读 · 0 评论 -
Java类加载机制--类加载过程(解析)
Java虚拟机加载类的全过程包括:加载、验证、准备、解析、初始化。验证、准备、解析叫连接过程。今天我们讲解析。解析阶段是虚拟机将常量池内的符号引用替换为直接引用的过程,符号引用在class文件中以CONSTANT_Class_info、CONSTANT_Fieldref_info、CONSTANT_Methodref_info等类型的常量出现,那解析阶段中,所说的直接引用和符合引用有什么关联呢?...原创 2019-06-02 16:11:24 · 5031 阅读 · 3 评论 -
Java类加载机制--类加载过程(初始化)
Java虚拟机加载类的全过程包括:加载、验证、准备、解析、初始化。验证、准备、解析叫连接过程。今天我们讲初始化。类加载过程的最后一步是类的初始化,前面的类加载过程中,除了在加载阶段用户应用程序可以通过自定义类加载器参与之外,其余动作完全由虚拟机主导和控制。到了初始化阶段,才真正开始执行类中定义的Java程序代码(或者说字节码)。在准备阶段,变量已经赋过一次系统要求的初始值,而在初始化阶段,则根...原创 2019-06-02 18:29:53 · 447 阅读 · 0 评论 -
Java的类加载器
虚拟机设计团队把类加载阶段中的“通过一个类的全限定名来获取描述此类的二进制字节流”这个动作放到java虚拟机外部去实现,以便让应用程序自己决定如何去获取所需要的类。实现这个动作的代码模块称为“类加载器”。类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一。他最初是为了满足Java Applet的需求而开发出来的。虽然Java Applet现在应用不多,但是类加载器在类层次...原创 2019-06-09 02:48:54 · 163 阅读 · 0 评论 -
Tomcat:正统的类加载器架构
代码编译的结果从本地机器码转变为字节码,什么是机器码:机器码(machine code),学名机器语言指令,有时也被称为原生码(Native Code),是电脑的CPU可直接解读的数据。通常意义上来理解的话,机器码就是计算机可以直接执行,并且执行速度最快的代码。什么是字节码:字节码(Bytecode)是一种包含执行程序、由一序列 op 代码/数据对 组成的二进制文件。字节码是一种中间码,它比机...原创 2019-06-11 22:46:36 · 1619 阅读 · 0 评论 -
ftp视频下载
最近在工作中遇到了一个问题。客户那边有个视频录制服务器,视频进行录制完成后就存放在视频服务器上(外网,云上)。这个时候,客户希望晚上对视频进行一个转存,转存到他们内网的服务器上。为什么在晚上做,因为晚上没有业务,不怕占用内网带宽。因此需要进行一个视频批量转存的功能。首先核心功能是视频下载,代码如下:import java.io.*;import java.net.MalformedURLEx...原创 2019-07-10 22:18:49 · 1141 阅读 · 0 评论 -
JAVA操作redis
java调用redis的代码如下:顺便分享两个东西,一个是 redis.clients.jedis.Jedis 的jar包,一个是redis的可视化管理工具。import redis.clients.jedis.Jedis;import redis.clients.jedis.SortingParams;import java.util.Iterator;import java.uti...原创 2019-08-19 17:01:01 · 146 阅读 · 0 评论 -
利用java反射分析对象
反射库提供了一个非常丰富且精心设计的工具集,以便编写能够动态操作Java代码的程序。这项功能被大量用在JavaBean中,他是Java组件的体系结构。在设计或运行中添加新类时,能够快速地应用开发工具动态地查询新添类的能力。能够分析类能力的程序称为反射。反射机制可以用来:在运行时分析类的能力在运行时查看对象,例如编写一个toString方法供所有类使用实现通用的数组操作代码利用Metho...原创 2019-08-19 21:59:24 · 295 阅读 · 0 评论 -
JAVA动态代理和代理模式简介
1、背景在项目中,可能遇到一种情况就是原来代码中有个地方调用了类A的方法,现在要在类A之前或者之后进行别的业务逻辑的处理。此时最好不要直接对该方法进行修改,因为这个类可能在别的地方也被调用,只是你不清楚而已,你一改可能影响到别的项目,所以代理模式呼之欲出。2、代理和代理模式代理分为动态代理和静态代理,动态代理是根据需要通过反射机制在程序运行期动态的为目标对象创建代理对象,代理的行为可以代理多...原创 2019-08-15 10:51:15 · 156 阅读 · 0 评论 -
java的static总结
java的static总结:1、static只能修饰变量和方法;2、static定义的对象是在内存中只有一份;非static对象被实例化时会有多份;3、通常情况下,类成员必须通过它的类的对象访问,但是可以创建这样一个成员(被static修饰),它能够被它自己使用,而不必引用特定的实例。同时,这个static修饰的成员(a)如果在类A中,能够直接通过A.a访问,不需要new一个A。4、sta...原创 2019-05-18 10:10:28 · 395 阅读 · 2 评论