自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(102)
  • 收藏
  • 关注

原创 mockito-study-api

Testverify(arrayList, description("size()没有调用")).size();// org.mockito.exceptions.base.MockitoAssertionError: size()没有调用verify(arrayList, timeout(200).times(3).description("验证失败")).add(anyString());

2023-12-23 13:42:40 949

原创 源码级别理解java拆箱装箱过程

知道字节码吗,字节码都有哪些?比较下面代码x == y都经过了哪些过程public class interview { public static void main(String[] args) { Integer x = 5; int y = 5; System.out.println(x == y); }}通过idea的工具jClasslib插件查看main方法的code,发现:然后我们去Integer中查看Valueof和i

2021-09-13 15:04:53 182

原创 剑指 Offer 10- I. 斐波那契数列

title: 剑指 Offer 10- I. 斐波那契数列categories:算法剑指offertags: 剑指offerabbrlink: 7eea4da1剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,   F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由.

2021-09-07 16:21:32 174

原创 剑指 Offer 09. 用两个栈实现队列

title: 剑指 Offer 09. 用两个栈实现队列categories:算法剑指offertags: 剑指offerabbrlink: 6fda8efa剑指 Offer 09. 用两个栈实现队列用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 ) 示例 1:输入:["CQueue","appendT.

2021-09-07 16:20:33 155

原创 剑指 Offer 07. 重建二叉树

title: 剑指 Offer 07. 重建二叉树categories:算法剑指offertags: 剑指offerabbrlink: 73d0ff75剑指 Offer 07. 重建二叉树题目输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。假设输入的前序遍历和中序遍历的结果中都不含重复的数字。Input: preorder = [3,9,20,15,7], inorder = [9,3,15,20,7]Output: [3,9,20,null,null.

2021-09-07 16:20:12 80

原创 剑指 Offer 06. 从尾到头打印链表

title: 剑指 Offer 06. 从尾到头打印链表categories:算法剑指offertags: 剑指offerabbrlink: 8c70c103剑指 Offer 06. 从尾到头打印链表输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。 示例 1:输入:head = [1,3,2]输出:[2,3,1] 限制:0 <= 链表长度 <= 10000原理:链表只有一个头结点,想要到尾结点只能从头.

2021-09-07 16:19:30 90

原创 剑指 Offer 05. 替换空格

title: 剑指 Offer 05. 替换空格categories:算法剑指offertags: 剑指offerabbrlink: baec5e48剑指 Offer 05. 替换空格请实现一个函数,把字符串 s 中的每个空格替换成"%20"。 示例 1:输入:s = "We are happy."输出:"We%20are%20happy." 限制:0 <= s 的长度 <= 10000class Solution { .

2021-09-07 16:18:42 72

原创 剑指 Offer 04. 二维数组中的查找

title: 剑指 Offer 04. 二维数组中的查找categories:算法剑指offertags: 剑指offerabbrlink: 58b0f60b剑指 Offer 04. 二维数组中的查找在一个 n * m 的二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个高效的函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。 示例:现有矩阵 matrix 如下:[ [1, 4, 7, 11.

2021-09-07 16:16:46 54

原创 剑指 Offer 03. 数组中重复的数字

title: 剑指 Offer 03. 数组中重复的数字categories:算法剑指offertags: 剑指offerabbrlink: 7e9ab8a剑指 Offer 03. 数组中重复的数字找出数组中重复的数字。在一个长度为 n 的数组 nums 里的所有数字都在 0~n-1 的范围内。数组中某些数字是重复的,但不知道有几个数字重复了,也不知道每个数字重复了几次。请找出数组中任意一个重复的数字。示例 1:输入:[2, 3, 1, 0, 2, 5, 3]输出:2.

2021-09-07 16:15:48 53

原创 redis分布式锁

title: redis分布式锁categories:分布式分布式锁tags: 分布式锁abbrlink: e2ee4148背景为了保证数据的一致性,在一些业务处理中都会选择加锁来保证数据的一致性。在单机模式下我们通常选择使用synchronized等这种JAVA提供好的jvm锁来实现,但是在集群和分布式情况下,这种jvm级别的锁式无法满足我们的需求,因为一个服务部署在多台服务器上,这些服务器上的jvm是无法通讯的,所以我们需要一种方案来解决分布式情况下数据一致性。在互联网公司,基本.

2021-09-05 19:49:28 831 2

原创 有三个线程T1,T2,T3,如何保证顺序执行?

有三个线程T1,T2,T3,如何保证顺序执行?在多线程中有多种方法让线程按特定顺序执行,你可以用线程类的join()方法在一个线程中启动另一个线程,另外一个线程完成该线程继续执行。为了确保三个线程的顺序你应该先启动最后一个(T3调用T2,T2调用T1),这样T1就会先完成而T3最后完成。实际上先启动三个线程中哪一个都行,因为在每个线程的run方法中用join方法限定了三个线程的执行顺序。public class JoinTest2 { // 1.现在有T1、T2、T3三个线程,你怎样保证

2021-08-15 21:07:40 2305

原创 剑指 Offer 10- I. 斐波那契数列

剑指 Offer 10- I. 斐波那契数列写一个函数,输入 n ,求斐波那契(Fibonacci)数列的第 n 项(即 F(N))。斐波那契数列的定义如下:F(0) = 0,   F(1) = 1F(N) = F(N - 1) + F(N - 2), 其中 N > 1.斐波那契数列由 0 和 1 开始,之后的斐波那契数就是由之前的两数相加而得出。答案需要取模 1e9+7(1000000007),如计算初始结果为:1000000008,请返回 1。&nb

2021-08-08 17:38:55 77

原创 spring ioc aop

Spring IOC和AOPIOC(Inverse of Control):控制反转是一种设计思想:将原本在程序中手动穿件对象的控制权,交给Spring 框架来管理。Ioc在其他语言中也有应用,并非spring特有。Ioc容器是Spring用来实现ioc的载体,Ioc容器实际上就是个map(key,value),Map中存放的是各种对象。将对象之间的相互依赖关系交给 IoC 容器来管理,并由 IoC 容器完成对象的注⼊。这样可以很⼤程度上简化应⽤的开发,把应⽤从复杂的依赖关系中解放出来。 IoC 容

2021-08-01 18:09:42 94

原创 JVM面试题总结

类加载过程https://cloud.tencent.com/developer/article/1749366加载——链接(验证、准备、解析)——初始化——卸载(程序结束或异常终止)加载(3件事):通过全类名获取该class文件,以二进制流的形式读入内存将字节流所代表的静态存储结构转化为方法区的运行时数据结构在内存中国生产一个类的class对象,最为方法区这个类的各种数据入口验证:验证文件格式、语义、语法、符号引用是否有错误准备:静态变量在方法区分配内存并赋初值解析:将符号引用转化为

2021-07-27 09:16:03 76

原创 spring bean创建过程——源码级

创建bean读取文件信息BeanDefintionReader @Override protected final void refreshBeanFactory() throws BeansException { if (hasBeanFactory()) { destroyBeans(); closeBeanFactory(); } try { DefaultListableBeanFactory beanFactory = createBeanFactory();

2021-07-11 12:36:24 122

原创 拥塞控制和滑动窗口有什么区别

两者都是对流量的控制,但是一个是接收方控制一个是发送方控制,适用于不用的情况。滑动窗口:是接收端进行的流量控制。流量控制是为了控制发送方的发送速率,保证接收方来得及接收信息。发送方和接收方都有一个缓存队列,接收方发送确认报文的时候都会携带上要求发送方的流量窗口大小。当接收方的缓存队列已经满的时候,接收方在发送确认报文的时候,会减小窗口大小,是发送发下一次发送更少的数据。因为这个窗口时动态改变大小的,所以叫滑动窗口。拥塞控制:也是对流量 的控制,是发送方主动发起的。拥塞控制主要是解决网络中的流量过大超过了

2021-06-26 10:34:56 1265 2

原创 java中的值传递和String的特殊性(不可变性)

/** * @author Lvzixin * @date 2021/6/20 11:05 */public class StringExer { String str = new String("good"); char [] ch = {'t','e','s','t'}; int a = 1; public void change(String str, char ch [],int a ) { str = "test ok";

2021-06-20 12:04:28 364

原创 深入理解 start方法和run方法的区别

代码查看public class Test2 { public static void main(String[] args) { MyRunnable myRunnable = new MyRunnable(); myRunnable.run(); Thread thread = new Thread(myRunnable, "线程用例"); thread.run(); thread.start(); }}

2021-06-12 17:57:02 3637 1

原创 什么Java序列化,有什么用

为什么要序列化在我们进行操作对象的时候,往往有这样的一个需求,需要把当前对象的信息保存起来,然后通过网络传递或者保存到本地以便于下次的读取。例如:我们在进行web开发的时候,往往与数据库对应有一个entity类,我们需要把从数据库中的信息保存到一个new 的entity对象中,然后在进行网络传输的时候需要把这样的一个对象中的信息取出,然后转为一个json字符串传递个前端,或者前端传递过来的数据我们要把json对象转为一个对象,这个时候就需要java的序列化和反序列化。对一个对象进行序列化后,就是吧该

2021-06-07 11:14:23 111

原创 微信小程序 input数据动态绑定,并封装为组件

官方提供的案例:https://developers.weixin.qq.com/miniprogram/dev/component/input.html在官方提供的案例中只有一个简单的时间,并没有去封装为一个组件,在时间项目开发中我们常常要把共有的部分抽象出来,封装为一个组件,下面提供一个实现注意:在微信小程序中默认不是动态绑定的,需要我们对不同的输入框调用不用的方法,实现对不同的数据动态绑定,因此我们封装组件的时候必须考虑到不同的方法在template.wxml(没有请创建)中<templ

2021-05-30 11:18:31 1408

原创 测试、注解和反射

标签 : javawebJunit单元测试测试分类:黑盒input output 不需要关注代码内容,只关心输入输出白盒需要写代码,关注程序的具体执行流程使用:步骤:定义测试类建议:测试的类名在末尾加Test eg:PersonText包名在末尾加.test com.lv.test定义一个测试方法:可以独立运行建议:方法名:test加测试的方法名 eg:testAdd()返回值: void参数列表:空参给

2021-05-23 15:32:16 208 1

原创 springboot自定义注解

创建自定义注解@Inherited@Documented@Target({ElementType.PARAMETER})//注解是作用在什么位置@Retention(RetentionPolicy.RUNTIME)public @interface CurrentUserId {}自定义参数解析器,实现HandlerMethodArgumentResolver接口public class CurrentUserMethodArgumentResolver implements ..

2021-05-17 21:53:01 58

原创 java注解常用api

java中元注解有四个: @Retention @Target @Document @Inherited;@Retention:注解的保留位置@Retention(RetentionPolicy.SOURCE) //注解仅存在于源码中,在class字节码文件中不包含@Retention(RetentionPolicy.CLASS) // 默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得,@Retention(RetentionPolicy.RUNTIME) // 注解会在c

2021-05-09 08:54:05 415

原创 docker安装rabbitmq

docker安装步骤1、查询rabbitmq镜像docker search rabbitmq:management2、拉取rabbitmq镜像docker pull rabbitmq:management3、创建并启动容器3.1创建和启动docker run -d --name rabbitmq -p 15672:15672 rabbitmq:management其中:–hostname:指定容器主机名称–name:指定容器名称-p:将mq端口号映射到本地3.2备选启动同时设置用户和

2021-05-03 08:01:23 574

原创 LocalDateTime时间转换

@JsonDeserialize(using = CustomLocalDateTime.CustomLocalDateTimeDeserializer.class)@JsonSerialize(using = CustomLocalDateTime.CustomLocalDateTimeSerializer.class)在entity上的localdatetime上添加这样两个字段这样在时间转化的时候,就可以正常是用...

2021-04-24 09:53:15 118

原创 统一异常处理

什么是统一异常处理我们想让异常结果也显示为统一的返回结果对象,并且统一处理系统的异常信息,那么需要统一异常处理统一异常处理在service-base中创建统一异常处理类GlobalExceptionHandler.java:/** * 统一异常处理类 */@ControllerAdvicepublic class GlobalExceptionHandler { @ExceptionHandler(Exception.class) @ResponseBody pub

2021-04-18 10:59:40 119 1

原创 mvn 常用命令

一,Maven常用命令:创建Maven的普通Java项目:mvn archetype:create-DgroupId=packageName-DartifactId=projectName2. 创建Maven的Web项目:mvn archetype:create-DgroupId=packageName-DartifactId=webappName-DarchetypeArtifactId=maven-archetype-webapp...

2021-04-12 08:05:03 272

原创 swagger常用api

常用注解:- **@Api()**用于类;表示标识这个类是swagger的资源- **@ApiOperation()**用于方法;表示一个http请求的操作- **@ApiParam()**用于方法,参数,字段说明;表示对参数的添加元数据(说明或是否必填等)- **@ApiModel()**用于类表示对类进行说明,用于参数用实体类接收- **@ApiModelProperty()**用于方法,字段表示对model属性的说明或者数据操作更改- **@ApiIgnore()**用于类,方法

2021-04-05 08:03:39 2284

原创 mysql 非root用户安装

一 安装前准备1、检查是否已经安装过mysql,执行命令[root@localhost /]# rpm -qa | grep mysql从执行结果,可以看出我们已经安装了mysql-libs-5.1.73-5.el6_6.x86_64,执行删除命令[root@localhost /]# rpm -e --nodeps mysql-libs-5.1.73-5.el6_6.x86_64再次执行查询命令,查看是否删除[root@localhost /]# rpm -qa | grep mysql

2021-03-28 14:28:31 313

原创 linux查看端口占用

//查看是否监听在0.0.0.0:1025netstat -aptn |grep -i 1025 //a:all_sockets p:process t:tcp n:num//查看TCP类型的端口netstat -lptn |grep -i 1025 //l:listening_sockets p:process t:tcp n:num//查看UDP类型的端口netstat -lpun |grep -i 1025 //l:listening_sockets p:process u:udp

2021-03-21 14:40:47 108

原创 git强制覆盖

git强制覆盖:- git fetch --all- git reset --hard origin/master- git pull第一个是:拉取所有更新,不同步;第二个是:本地代码同步线上最新版本(会覆盖本地所有与远程仓库上同名的文件);第三个是:再更新一次(其实也可以不用,第二步命令做过了其实)...

2021-03-14 14:44:15 113

原创 linux centos 设置防火墙

1.安装防火墙安装iptables-services :2.防火墙基本操作查看版本: firewall-cmd --version显示状态: firewall-cmd --state查看所有打开的端口: netstat -anp开启防火墙 systemctl start firewalld关闭防火墙 systemctl stop firewalld开启防火墙 service firewalld start若遇到无法开启先用:systemctl unmask firewalld.servi

2021-03-08 11:27:28 53

原创 docker安装

Centos7以上确定是centos7cat /etc/redhat-releaseyum 安装gcc相关yum -y install gccyum -y install gcc-c++如果有旧版本需要卸载yum -y remove docker docker-common docker-selinux docker-engine安装需要的安装包yum install -y yum-utils device-mapper-persistent-data lvm2设置s

2021-02-28 14:07:27 131

原创 docker后端基础环境搭建

docker利用dockerfile生成基础后端环境java8+git+maven创建dockerfile文件FROM centos:7RUN yum -y update \ && yum -y install vim \ && yum -y install git \ && yum -y install java-1.8.0-openjdk-devel.x86_64 \ && yum install

2021-02-21 10:30:37 107

原创 docker安装fastdfs 并实现每个项目单独路径存放

docker安装fastdfs拉取镜像docker pull delron/fastdfs启动tracker服务docker run -d --network=host --name tracker -v /root/fastdfs/tracker:/var/fdfs delron/fastdfs tracker启动storage服务docker run -d --name storage --restart=always --net host -v /root/fastdfs/storag

2021-02-16 14:32:53 1503 2

原创 ym显示自定义属性提示

一、需要的注解@ConfigurationProperties 配置属性文件,需要指定前缀 prefix@EnableConfigurationProperties 启用配置,需要指定启用的配置类@NestedConfigurationProperty 当一个类中引用了外部类,需要在该属性上加该注解二、POM依赖<dependency> <groupId>org.springframework.boot</groupId> <artifac

2021-02-07 09:16:40 211

原创 swagger 父子工程 Cannot convert undefined or null to object(或者swagger打不开)

swagger 父子工程 Cannot convert undefined or null to object(或者swagger打不开)根本原因:启动类无法扫描到配置文件和controller解决:排除:是否添加了扫描controller的包 @Bean public Docket createRestApi() { return new Docket(DocumentationType.SWAGGER_2)// .enable(sw

2021-01-25 23:04:01 844

原创 docker搭建后端基本环境

docker利用dockerfile生成基础后端环境java8+git+maven创建dockerfile文件FROM centos:7RUN yum -y update \ && yum -y install vim \ && yum -y install git \ && yum -y install java-1.8.0-openjdk-devel.x86_64 \ && yum install

2021-01-24 20:00:53 275

原创 docker安装

Centos7以上确定是centos7cat /etc/redhat-releaseyum 安装gcc相关yum -y install gccyum -y install gcc-c++如果有旧版本需要卸载yum -y remove docker docker-common docker-selinux docker-engine安装需要的安装包yum install -y yum-utils device-mapper-persistent-data lvm2设置s

2021-01-23 11:09:03 71

原创 在@Test线程中多线程的方法并不起作用

@Test不会等待其他线程结束再去结束程序,只要@Test执行完成,那么这个程序也就结束了而在main方法中运行时会区分子线程是否是守护线程解析:junit是将要测试的方法作为参数传递给了main函数,在main函数中执行test函数在main函数中执行,如果test执行结束,那么main函数将会调用system.exit(0);即时还有其他的线程还在运行,main函数也会直接调用system.exit(0)的方法system.exit(0)是系统调用的,通知系统理解结束jvm的运行,即时jvm中

2021-01-17 08:08:44 342

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除