自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(52)
  • 资源 (8)
  • 收藏
  • 关注

原创 windows ping长包命令显示时间、记录日志

windows 使用ping命令执行长包,进行网络监控,记录日志

2024-03-05 14:50:39 3093

原创 基于Redis的Java分布式锁,接口并发处理,并发方案

使用自定义注解实现redis分布式锁、java分布式锁、接口并发问题,开箱即用,对业务代码无侵入

2023-05-26 14:51:55 2069

原创 Nacos配置热更新的4种方式、读取项目配置文件的多种方式,@value,@RefreshScope,@NacosConfigurationProperties

nacos热更新,@value,@NacosPropertySource,@ConfigurationProperties,@NacosConfigurationProperties,@RefreshScope

2022-04-24 17:46:44 27742 16

原创 windows启动jar nacos yaml配置文件中包含中文问题

yaml配置文件中文启动报错

2022-04-20 16:38:21 2709

原创 Mysql索引原理、聚簇索引和非聚簇索引、回表

我们都知道索引的作用是增加查询速度,大部分系统都是读多写少,索引对应查询的帮助是非常大的。特别是数据流越大的时候,索引对应查询性能的影响非常关键。就好比一本字典,如果没有目录,想要找一个字的话就要一页一页的查找,非常耗时,通过字典里面的目录就可以直接定位到数据在哪一页,这样查找效率就非常高。索引就类似字典里面的目录。一、索引的底层数据结构1、Hash(哈希表)哈希算法也叫散列算法,就是把任意的key通过哈希函数转变为固定长度的地址。2、B+树Mysql默认使用的就是B+树,B+树是一种平衡查找树。

2022-03-08 14:52:59 1673

原创 @Transactional注解失效的场景,为何会失效

@Transactional是我们项目中很常用的一个注解了,@Transactional可以为我们控制事务,可以保证事务内的操作要么全部成功,要么全部失败,@Transactional也是基于AOP切面实现事务的功能的。下面列举一下使用@Transactional会导致事务失效的场景:1、@Transactional应用在了非publice的方法上,事务将会失效:原因是SpringAOP对事务进行代理增强的时候会调用到computeTransactionAttribute方法,这个方法里面进行了判断,

2021-12-18 14:36:25 3558

原创 理解MVC架构模式,SpringMVC原理、执行流程图解

1、MVC架构模式说起SpringMVC就不得不说MVC,MVC是一种经典架构模式。MVC架构模式的重点是为了解耦,将软件用户界面和业务逻辑分离以使代码可扩展性、可复用性、可维护性、灵活性加强,很多应用程序的问题在于处理业务数据和显示业务数据的视图的对象之间存在紧密耦合。有一句很有名的话:一个层次的重定向几乎可以解决计算机业务中的所有问题。在模型(Model)和视图层(View)之间引入重定向层可以解决解耦问题,这个重定向层就是控制层(Controller)。这样模型和视图就实现了代码分离,解耦了,由控

2021-12-15 12:08:49 3637

原创 请求转发和重定向的区别

1、什么是请求转发和重定向?请求转发:request.getRequestDispatcher(String path).forward(requst,response);重定向response.sendRedirect(String path);简单来说,请求转发是服务端内部做的事情,和客户端无关,客户端也无感知;而重定向是客户端请求服务端,服务端重定向,客户端在发起二次请求才能拿到结果。2、请求转发和重定向的区别1、重定向是response发起,请求转发是request发

2021-12-14 10:49:23 545

原创 JDK8 lambda操作list常用功能,list转map,list选取字段拼接字符串,分组,统计

新建UserDTO对象:package com.list;import lombok.Data;@Datapublic class UserDTO { public UserDTO(){} public UserDTO(Integer id, String userName, String mobile){ this.id = id; this.userName = userName; this.mobile = mobile;

2021-11-18 11:23:11 7620 1

原创 Spring AOP 面向切面编程,XML和注解方式使用切面

一、AOPAPO即Aspect Oriented Programing的缩写,字面直译的意思就是:面向切面编程。AOP采用横向抽取机制,取代了传统的纵向继承体系中的重复性代码,是对OOP面向对象编程的一种补充和完善。AOP最重要或者说要达到的目的就是开发者在不修改不侵入源代码的前提下,给系统中的业务组件添加某种通用的功能。比如现在要统计系统中service层的所有方法的执行时间,如果使用面向对象的话只能在每个方法前后手动编写一段代码打印开始结束时间,来计算每个方法的执行时间;如果使用AOP就可以把计算

2021-11-16 17:12:52 1131

转载 Spring ioc 通俗易懂的讲清楚什么是IOC、DI

1、IOC的理论背景我们都知道,在采用面向对象方法设计的软件系统中,系统底层都是有N个对象组成,所有的对象通过彼此的合作最终完成系统的业务逻辑。图1:软件系统中的耦合对象当我们打开机械手表的后盖,就会看到如图一上面的类似情景,各个齿轮分别带动时针、分针、秒针顺时旋转,从而在手表上显示正确的时间。图一就是描述的这样一个齿轮组,它拥有多个独立的齿轮,这些齿轮互相啮合在一起,协同工作,共同完成某项任务。我们可以看看到,在这样的齿轮组中,如果有一个齿轮出现了问题,就可能会影响到整个齿轮组的正常运转。齿轮组中

2021-11-12 15:10:22 525

原创 IDEA使用maven插件MyBatis Generator自动生成java实体类代码

1、在项目的pom.xml文件中添加plugin插件<build> <plugins> <plugin> <groupId>org.mybatis.generator</groupId> <artifactId>mybatis-generator-maven-plugin</artifactId> <v

2021-11-10 15:20:39 1689

原创 MongoDB(三)SpringBoot整合MongoDB,使用MongoRepository和MongoTemplate

一、启动MongoDB1、创建文件夹:D:\Java\mongo_db2、启动mongodb// mongod --dbpath D:\Java\mongo_db二、新建项目及配置(MongoRepository方式)1、新建如下项目:2、pom依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="

2021-11-10 11:38:52 1614

原创 MongoDB(二)备份恢复、导入导出、主从复制、副本集集群、分片存储

一、备份和恢复MongoDB提供了备份和恢复的功能,分别是mongodump和mongorestore,可以使用如下命令:1、备份:mongodump// 语法mongodump -h host -d dbname -o directory -u username -p pwd// 示例,将本地test1数据库的数据备份到D:\Java\mongo_dump文件夹下面mongodump -h 127.0.0.1 -d test1 -o D:\Java\mongo_dump -u testAdmi

2021-11-06 15:28:08 1838 2

原创 MongoDB(一)简介、和关系型数据库比较、安装及常用命令、账号配置

一、MongoDB简介及和关系型数据库比较1、MongoDB是一种非关系型数据库,是用C++语言编写的。其特点是高性能、易部署、易使用,存储数据方便。主要特性:面向集合存储,易于存储对象类型数据;支持动态查询,支持完全索引,包含内部对象模式自由支持主从复制、分布式和故障恢复使用高效的二进制存储,包括大型对象文件的存储格式未BSON(JSON格式的一种扩展)2、MongoDB和关系型数据库对比比较项MongoDBMysql/Oracle表集合collection

2021-11-05 10:53:38 1555

原创 Hibernate框架介绍,一级缓存二级缓存

一、Hibernate介绍1、Hibernate是一种ORM框架,也就是持久层的框架,应用于DAO层,是对JDBC的一种封装,可以让程序直接通过面向对象的方式去完成对数据库的操作,可以做到不用手写SQL语句就能完成对数据库的各种操作。2、ORM框架,那么什么是ORM?O:ObjectR:RelationalM:MappingORM就是对象关系映射(Object Relational Mapping,简称ORM),关注的是对象和数据库中对应表的关系。通过描述对象和数据库之间映射的元数据,将程序中

2021-10-29 10:56:33 699

原创 jvm类加载器,java有哪些类加载器,有什么作用

一、什么是类加载器类加载器ClassLoader就是将我们的.class文件转换成Class对象。类Class只有被加载到jvm中后才能运行,jvm会将编译生成的字节码.class文件加载到内存中,组织成一个完整的java应用程序,这个过程是由类加载器ClassLoader和它的子类来完成的。二、jvm中的类加载器jvm中有三个类加载器:1、引导类加载器:BootStrap,它用来加载 Java 的核心库,是用原生代码来实现的,并不继承自 java.lang.ClassLoader2、扩展类

2021-09-29 14:25:21 1814

原创 Mysql数据库优化、数据库规范

1 命名规范(1) 数据库名、表名、字段名必须使用小写字母,并采用下划线”_”分割。(2) 数据库名、表名、字段名禁止超过32个字符,须见名知意,建议使用名词不是动词。(3) 数据库名、表名、字段名禁止使用MySQL保留字。(4) 临时库名、表名必须以tmp为前缀,并以日期为后缀。(5) 备份库名、表名必须以bak为前缀,并以日期为后缀。2 基础规范(1) 使用INNODB存储引擎(2) 表字符集使用UTF8(3) 所有表都需要添加注释(4) 单表数据量建议控制在5000W以内(

2021-09-07 15:52:09 611

原创 java将文件夹和里面的所有文件打包成zip或rar并导出,亲测好用

有一个项目需要将文件夹里面的所有文件压缩成zip并导出下载,并且保留原来文件夹里面的所有目录结构,找了一些资料整理了一下。上代码:import org.apache.commons.io.FileUtils;import org.apache.commons.io.IOUtils;import javax.servlet.http.HttpServletResponse;import java.io.*;import java.net.URLEncoder;import java.tex

2021-08-23 10:36:35 5958 13

原创 java Enum枚举的原理,看编译后的源码

一、java中的枚举Enum是jdk1.5开始引入的一个新的类型,为开发提供了很大的便利。enum是一个特殊的class,实际上枚举声明定义的类型就是一个类。比如下面的一个枚举,我们通过反编译工具可以看到编译后的内容:public enum ColourEnum { RED(1, "红色"), BLUE(2, "蓝色"), BLACK(3, "蓝色"); // 成员变量 private int state; private String colour

2021-08-18 15:40:21 1639

原创 java反射介绍、使用、获取成员变量、获取成员方法执行

反射在java中是非常强大的一个技术,很多框架内部都使用到了反射。一、反射是什么,如何理解?反射中包含了一个“反”字,要理解“反”的意思,就要知道“正”的意思。一般情况下我们使用某个类的时候都知道这是什么类,用来做什么,如何初始化,有什么属性和方法,例如有一个User类:public class User { private Long userId; private String userName; public String sex; public User(){

2021-08-06 11:12:03 1757

原创 java多线程、生命周期、start和run的区别、wait和sleep的区别

1、经常说多线程,那什么是线程,什么是多线程?线程是操作系统能够进行调度的最小单位,线程包含在进程中,是进程的实际运作单位。一个进程至少包含一个线程,可以有多个线程,每个线程可以执行不同的任务。一个进程可以理解为系统中运行的一个应用程序。2、多线程的好处采用多线程可以更好的利用系统资源,可以充分利用CPU的空闲时间,可以更快的提高程序的响应速度,可以设置不同任务的优先级顺序。3、java如何实现多线程继承Thread类,重写run方法;实现Runnable接口,重写run方法;使用线程池;

2021-07-21 16:42:15 522 3

原创 IO简介、IO流的体系结构

什么是IO?IO就是Input,OutPut的简称,即输入输出。对计算机来说,计算机的核心CPU和内存,于其他设备之间的数据转移就是IO,比如数据从磁盘读到内存,数据从内存写入到磁盘都是IO操作。Java中输入输出是相对于Java程序而言,常见的上传图片,图片上传到程序接口中,对于程序来说是输入;下载文件,对于程序来说是输出。Java中常见IO体系java中分为字节流和字符流,字节流是以字节为单位,字符流是以字符为单位。1、字节流a、字节输入流InpuptStream– FileInputS

2021-07-07 10:29:38 1139

原创 finally里面的代码return后会不会执行,什么时候执行?final,finally,finalize的区别

1、这是一个经常面试到的面试题:在finally代码前执行了return,那么finally里面的代码还会执行吗?是return前执行还是return后执行?finally一般都是配合try catch一起使用,一般用作资源释放等,无论程序释放异常或者其他方式返回,只要虚拟机不退出(一般也不会发生)finally里面的代码始终都会执行。会在return前执行。public static void main(String[] args){ int c = testReturn();

2021-07-02 09:52:06 973

原创 java正则替换ip地址,将字符串中的IP地址替换为指定内容

使用java替换字符串中的ip地址public static void main(String[] args){ String reg = "((2[0-4]\\d|25[0-5]|[01]?\\d\\d?)\\.){3}(2[0-4]\\d|25[0-5]|[01]?\\d\\d?)"; //匹配ip的正则 String str = "http://192.168.1.108/index.html"; String baidu = "www.baidu.c

2021-06-25 17:32:29 3058

原创 maven引入本地仓库jar包

java项目中使用maven引入本地仓库的jar包1、下载好要使用的jar包,我这里下载了专用钉钉的java jar包,命名sdk-java-1.2.0.jar2、找到自己本地仓库的文件夹,我的路径是D:\Java.m2\repository\,然后在repository文件夹里面新建文件夹com,在com文件夹里面新建文件夹ding,在ding文件夹里面新建文件夹sdk-java,在sdk-java文件夹里面新建文件夹1.2.0,然后把sdk-java-1.2.0.jar 这个文件放,1.2.0文件夹

2021-05-19 09:37:02 1624

原创 Bean注入@Autowried和@Resource的区别

开发过程中经常使用bean注入,常用的就是@Autowried和@Resource这两个注解。1、区别1、@Autowried是Spring自己定义的注解,而@Resource是属于J2EE的。2、@Autowried默认按照类型装配,默认情况下要求装配对象必须存在,如果允许null值,可以设置required属性为false;@Resource默认按照名称装配,可以按照name和type属性指定,如果没有指定,默认按照字段名称进行查找,当名称找不到是会按照类型进行装配。2、@Resource的装

2021-01-20 15:31:57 1162

原创 Mysql事务隔离级别、事务的ACID、事务的传播行为

一、事务的ACID特性1、原子性(Atomicity):事务开始后的所有操作要么全部成功,要么全部失败,不能停在某一个环节,如果执行过程中出错,要回滚到操作之前。2、一致性(Consistency):事务开始前和结束后,数据库的的完整性没有被破坏,比如A向B转账,不能A账号钱扣了,而B没有收到转账。3、隔离性(Lsolation):同一个数据在同一时间只允许一个事务处理,不同事务直接的操作彼此直接没有干扰,比如A正在给B转账,A给B转账结束前C不能给A转账。4、持久性(Durability):

2021-01-20 14:28:43 526

原创 linux访问局域网内的服务器,linux局域网内数据互传

linux使用命令跳转到局域网的其他服务器ssh root@192.168.0.44 -p 40022ssh [对方服务器账号]@[对方服务器ip地址] -p [端口号],默认连接的是22端口,如果对方服务器开放了22端口,可以不加 -p 40022这个,默认访问的就是22端口。linux局域网内数据互传scp -P 40022 /usr/mysql_file/abc.sql root@192.168.0.44:/usr/abc.sqlscp -P [对方服务器的端口] [本机服务器的文件路径]

2020-11-19 18:47:34 2154

原创 Java中==和equals的区别,原理,Integer超出-128和127使用==返回false

==和equals有什么区别?1、比较基本数据类型== 是比较两个基本数据类型的值是否相等equals 也是比较两个基本数据类型的值是否相等,因为这些基本数量类型的对象都重写了equals方法。 public static void main(String args[]){ int a = 12; int b = 12; System.out.println("基本数据类型比较:a==b-->" + (a== b));

2020-09-26 15:17:02 1234

原创 冒泡排序、选择排序、二分查找法

一、冒泡排序冒泡排序是一直比较简单的排序算法排序原理:这种算法的原理是重复访问要排序的数组,对相邻的两个元素进行比较,如果顺序错误就将两个元素的内容交换,一直到没有两个相邻元素需要交换,排序完成。这个算法名称的由来是由于在不断的元素比较交换过程中,较小的元素会慢慢的浮到数组的顶端,就像水中的气泡往上浮一样,故名"冒泡排序";java代码示例:public static void main(String args[]){ // 冒泡排序 // 定义一个数组

2020-09-22 15:19:55 622

原创 java面向对象的四大特性,抽象、封装、继承、多态

java是面向对象的语言,面向对象有四大特性:抽象、封装、继承、多态。一、抽象1、抽象就是将一个事务共有的属性和方法进行抽取。把多个类中相同的方法声明进行抽取,定义到一个类中。如果这个类中的方法只有方法声明没有方法体,这个方法就是抽象方法,有抽象方法的类一定是抽象类。2、抽象的特点:抽象类和抽象方法都要用abstract修饰;有抽象方法的类一定是抽象类,而抽象类不一定有抽象方法;一个类继承一个抽象类的时候,要么重写所有抽象方法,要么本身也是抽象类;抽象类不能被实例化;二、封装封装就是把抽象

2020-09-22 10:35:42 2138 1

原创 匿名内部类,lambda表达式list.forEach的时候引用变量必须是final修饰

匿名内部类,lambda表达式list.forEach的时候引用变量必须是final修饰的问题。开发中遇到过以下问题,使用list.forEach循环的时候,不能对外部变量进行操作,而且提示:Variable used in lambda expression should be final or effectively final意思是:lambda表达式中使用的变量应该是final或实际上是final这是因为lambda表达式list.forEach也是属于匿名内部类,匿名内部类实际上也是一个

2020-09-18 16:18:37 1927

转载 volatile关键字的作用,指令重排问题

java中volatile关键字的作用及原理1、保证内存可见性如下图所示,在jvm中,所有线程的共享变量都存在主内存中,然后每个线程有自己独有的工作内存,每个线程不直接操作主内存中的数据,而是将主内存中的变量变成一个副本存在自己的工作内存中,线程值操作自己工作内存中的变量。在单线程中不会出现问题,多线程的时候就可能出现脏数据!例如:int i = 1;AB两个线程同时拿到了变量 i,进行递增操作,AB两个线程都将i放到自己工作内存中进行+1操作,而此时A线程操作了 i 之后,还没有将结果刷新到主

2020-09-03 16:36:50 639 2

原创 JVM堆栈、值传递和引用传递

JVM里面堆栈的功能主要是分配内存空间,程序里面的方法、变量、对象都是JVM在内存中分配的。栈(stack)java栈是和每一个线程关联的,会为每一个线程分配栈空间。主要用来存放基本数据类型和对象类型的引用地址,栈是线程独享的,每个线程有自己的栈空间。栈空间随着线程的终止而释放。值传递:就是程序里面基本数据类型的传递,例如:int a = 10; 然后将a传递到别的方法里面,别的方法对这个值做了修改,初始的a的值是不会变的。堆(deap)主要用来存储new的对象,栈里面的引用指向这个对象。

2020-09-02 15:07:13 533

原创 进制间的相互转换,二进制转十进制,八进制转十进制,十六转十进制

1、什么是进制进制:就是进位制,规定的一种进位方法。对于任何一种进制 X ,标识在某一位上的数运算时,逢X进一。二进制:逢2进1,用0和1表示;八进制:逢8进1,0-7;十进制:逢10进1,0-9;十六进制:逢16进1,0-9,A-F(10-15);我们默认使用的是10进制计数。2、二进制和十进制的相互转换二进制----->十进制:计算公式:系数 * 基数 ^ 权次(这个公式适用于任何进制到十进制的转换)权次:从右到左的角标,从0开始 10100010 = 0*2^0 + 1

2020-09-01 10:48:58 2035 1

原创 JVM垃圾回收理解,垃圾回收算法、JVM堆内存分代模型

我们写java代码的时候,业务逻辑处理里面会产生很多对象,这些对象在调用结束后jvm的垃圾回收器GC就帮我们回收处理了,但是具体的逻辑是如何处理的,如何如优化。1、什么是垃圾?简单来说就是:没有任何引用指向这个对象,那这个对象对jvm来说就是垃圾,需要回收。2、jvm如何定位到这些垃圾?使用的什么算法jvm定位垃圾的算法有两种:1:引用计数器顾名思义,就是通过计数来判断这个对象是否被引用。当一个对象有引用时计数器+1,引用消失时计数器-1,当计数器为0的时候,对象不在被引用,也就标记为垃圾。

2020-08-18 11:41:31 876

原创 synchronized和Lock锁原理理解,CAS原理,锁升级策略

synchronized的原理synchronized底层是通过对象内部的一个监视器锁(monitor)来实现的,是由一对monitorenter/monitorexit指令实现的。什么是监视器锁?参考JVM对监视器锁的描述:monitorenter :Each object is associated with a monitor. A monitor is locked if and only if it has an owner. The thread that executes monit

2020-08-14 10:47:30 1198

原创 TcpIp协议、三次握手四次挥手抓包演示、socket理解、四元组

1、什么是tcpip?简单理解就是:面向连接的、可靠的、基于字节流的传输通信协议。是计算机通过网络通信事先都要遵守的一种约定。2、网格分层tcpip分为7层:物理层,数据链路层、网络层、传输层、会话层、表示层、应用层3、三次握手(建立TCP连接)tcp是通过三次握手来建立连接的,是指建立一个TCP连接时,需要客户端和服务端总共发送3个包以确认连接的建立,由客户端主动触发:客户端 -----(发送SYN和随机值seq)---------------> 服务端服务端 -----(响应

2020-08-12 11:17:54 1935

原创 rabbitmq(三),ACK机制、Confirm、Return机制(附源码)

RabbitMQ本身提供了三种机制来保证消息的成功投递,成功消费,和消息丢失的处理,一个一个测试一下。1、RabbitMQ的ACK机制ACK机制是rabbitmq保证消息成功消费的机制,默认应该是自动签收的,也就是消息被队列取出即视为已消费,但是往往业务流程里面会存在必须等业务处理完成才能是已签收,或者处理业务的过程中发生了异常,不能签收,所以ACK机制可以保证这个问题。1、首先要将签收设置为非自动签收2、然后消费者消费消息,业务处理完成后,手动回应服务端,已签收创建连接工厂:public cl

2020-08-05 14:35:51 3258

mongodb-win32-x86_64-2008plus-ssl-3.6.23.zip

mongodb3.6.23 64位压缩包下载,下载完成解压缩即可使用

2021-11-05

中国所有省市区县的sql文件,导入即可使用

中国所有省市区县的sql文件,导入即可使用

2021-08-26

Another-Redis-Desktop-Manager redis可视化工具

一款免费好用的redis可视化管理工具,Another-Redis-Desktop-Manager

2021-08-26

Xjad是一款很好用的java反编译工具

Xjad是一款很好用的java反编译工具,解压就可以使用,其他反编译工具只能还原代码,这款反编译工具可以看到虚拟机编译后的源代码,非常实用!

2021-08-26

使用js实现map功能

使用js实现map工具类

2017-03-17

ognl-3.0.19.jar

struts2.3.22所需的ognljar包

2017-03-17

freemarker-2.3.22.jar

freemarker-2.3.22.jar

2017-03-17

Android反编译工具

Android反编译工具,轻松实现反编译

2015-08-05

空空如也

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

TA关注的人

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