自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 pom文件显示删除线

idea中的pom文件显示删除线的解决方案

2022-06-10 18:21:42 7712 1

原创 常用sql语句

文章目录1.sql语句的分类2.超键、候选键、主键、外键3.SQL约束4.关联查询4.1.INNER JOIN4.2.LEFT JOIN4.3.RIGHT JOIN4.4.UNION4.5.UNION ALL4.6.FULL JOIN5.子查询5.1.MySQL子查询在WHERE子句中5.1.1.MySQL子查询与比较运算符5.1.2.具有IN和NOT IN运算符的MySQL子查询5.2.FROM子句中的MySQL子查询5.3.MySQL相关子查询5.4.MySQL子查询与EXISTS和NOT EXISTS

2022-03-30 15:35:51 1439

原创 Mysql存储引擎的不同

文章目录1.MyISAM与Innodb的区别1.1.事务支持1.2.存储结构1.3.存储空间1.4.可移植性、备份及恢复1.5.AUTO_INCREMENT1.6.表锁差异1.7.全文索引1.8.表主键1.9.表的具体行数1.10.CURD操作1.11.外键1.12.查询效率2.MyISAM和InnoDB两者的应用场景1.MyISAM与Innodb的区别1.1.事务支持MyISAM不支持事务,而InnoDB支持。InnoDB的AUTOCOMMIT默认是打开的,即每条SQL语句会默认被封装成一个事务,

2022-03-30 15:34:50 535

原创 Mysql的视图、存储过程与函数、触发器

文章目录1.视图什么是视图1.2视图的特点1.3视图的使用场景1.4视图的优点1.5视图的缺点1.6什么是游标2.存储过程2.1什么是存储过程2.2存储过程的优点2.3存储过程的缺点3.触发器3.1什么是触发器3.2使用场景3.3Mysql中的触发器1.视图什么是视图为了提高复杂SQL语句的复用性和表操作的安全性,MySQL数据库管理系统提供了视图特性。所谓视图,本质上是一种虚拟表,在物理上是不存在的,其内容与真实的表相似,包含一系列带有名称的列和行数据。但是,视图并不在数据库中以储存的数据值形式存在

2022-03-28 13:12:59 792

原创 Mysql的索引

文章目录1.什么是索引2.索引的使用场景3.索引的缺点4.索引的类型5.索引的数据结构(B树,Hash)6.索引的基本原理7.索引的算法8.索引设计的原则9.创建索引的原则10.创建索引的三种方式10.1.在执行create table 时创建索引10.2.使用alter table命令去增加索引10.3.使用 create index命令创建11.删除索引的方式11.1.根据索引名删除普通索引、唯一索引、全文索引11.2.删除主键索引12.百万级别或以上的数据如何删除13.前缀索引14.最左前缀原则15.

2022-03-28 13:12:27 160

原创 Mysql基础知识

文章目录1.数据库基础知识1.1数据库三大范式1.2mysql有关权限的表1.3MySQL的binlog的三种录入格式2.数据类型3.引擎3.1MyISAM引擎与InnoDB引擎区别3.2InnoDB引擎的4大特性3.3存储引擎选择4.事务4.1什么是数据库事务?4.2事务的四大特性4.3事务的隔离级别5.锁5.1隔离级别与锁的关系5.2锁的类别5.3MySQL中InnoDB引擎的行锁的实现5.4InnoDB存储引擎的锁的算法有三种5.5怎么解决死锁5.5怎么解决死锁1.数据库基础知识1.1数据库三大范

2022-03-28 13:11:11 158

原创 07- 图

07-图图的逻辑结构图的存储结构顺序存储结构(有向图为例)行标代表起点,列标代表终点,表格中的值代表有无路径行标代表起点,列标代表终点 ,表格中值为权值,没有权值的,存储一个无穷大的数邻接矩阵//邻接矩阵的结构型定义typedef struct{ int no; //顶点编号 char info; //顶点其他信息,一般默认char型}VertexType; //顶点类型//图的定义typedef struct{ int edges[maxSize

2022-03-26 22:06:48 425

原创 Spring和JDBC实现事务

文章目录1.Spring如何实现事务1.1编程式事务和声明式事务的区别1.2编程式事务实现1.2.1使用TransactionTemplate1.2.2使用PlatformTransactionManager1.3声明式事务实现1.3.1配置方式2.JDBC如何实现事务1.Spring如何实现事务Spring 事务四种实现方式:基于编程式事务管理实现基于TransactionProxyFactoryBean的声明式事务管理基于AspectJ的XML声明式事务管理基于注解的声明式事务管理1.

2022-03-25 20:49:05 423

原创 Spring 数据访问

文章目录1.解释对象/关系映射集成模块2.Spring框架中如何更有效地使用JDBC3.Spring DAO 有什么用4.Spring 事务4.1Spring支持的事务管理类型, spring 事务实现方式有哪些4.2Spring事务的实现方式和实现原理4.3Spring的事务传播行为4.4Spring 的事务隔离4.5Spring框架的事务管理优点1.解释对象/关系映射集成模块​ Spring 通过提供ORM模块,支持我们在直接JDBC之上使用一个对象/关系映射映射(ORM)工具,Spring支持集

2022-03-25 17:28:32 261

原创 Spring MVC知识总结

文章目录1.SpringMVC框架介绍2.SpringMVC原理图3.SpringMVC接口解释4.SpringMVC运行原理5.Spring MVC 的优点1.SpringMVC框架介绍spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,可以选择是使用内置的 Spring Web 框架还是 Struts 这样的 Web

2022-03-25 17:27:54 843

原创 Spring IOC知识总结

文章目录1.什么是IOC/DI1.1IOC(控制反转)1.1.1控制反转(IoC)有什么作用1.1.2IOC的优点是什么?1.1.3Spring IoC 的实现机制1.2DI(依赖注入)1.2.1什么是Spring的依赖注入1.2.2依赖注入的优势2.IOC/DI的实现方式2.1IOC的三种实现方式2.1.1xml配置2.1.2Java配置2.1.3注解配置2.2DI的三种实现方式2.2.1setter方式2.2.2构造方法注入(Construct注入)2.2.3注解注入3.Spring IOC体系结构3.

2022-03-25 17:27:06 1112

原创 Spring AOP知识总结

文章目录1.AOP(面向切面编程思想)1.1概念1.2核心概念1.3AOP的通知类型2.AOP的实现原理和场景2.1场景2.2实现技术3.Spring AOP的两种代理模式3.1JDK动态代理3.2CGLIB动态代理3.3JDK动态代理与CGLIB动态代理的区别4.Spring AOP 的两种代理方式使用4.1接口使用JDK代理4.1.1定义接口4.1.2实现类4.1.3定义切面4.1.4输出4.2非接口使用CGLIB代理4.2.1类定义4.2.2定义切面4.2.3输出5.Spring AOP的切入点(po

2022-03-25 17:25:19 1279

原创 Mybatis数据源与连接池

文章目录Mybatis数据源与连接池MyBatis数据源DataSource分类数据源DataSource的创建过程DataSource什么时候创建Connection对象不使用连接池的UnpooledDataSource使用了连接池的PooledDataSource获取java.sql.Connection对象的过程popConnection()方法java.sql.Connection对象的回收怎样实现Connection对象调用了close()方法,而实际是将其添加到连接池中JNDI类型的数据源Dat

2022-03-24 13:35:39 1927

原创 SpringBoot基础知识总结

文章目录Spring Boot概述什么是SpringBootSpringBoot的优点SpringBoot的核心注解配置JavaConfigSpringBoot自动配置原理SpringBoot配置加载顺序YAML配置bootstrap.properties 和 application.propertiesSpring Profiles安全实现SpringBoot应用程序的安全性Spring Security 和 Shiro 各自的优缺点Spring Boot 中如何解决跨域问题CSRF攻击监视器Spring

2022-03-23 20:42:34 2173

原创 Java锁机制

文章目录CAS(比较并交换-乐观锁机制-锁自旋)概念及特性ABA问题AQS(抽象队列同步器)AQS 定义两种资源共享方式Exclusive独占资源-ReentrantLockShare共享资源-Semaphore/CountDownLatch自定义同步器Mark Word乐观锁悲观锁可重入锁(递归锁)公平锁和非公平锁JAVA中的锁ReentrantLockReentrantLock与synchronizedCondition 类和Object 类锁方法区别共享锁和独占锁ReadWriteLock 读写锁自旋

2022-03-23 16:32:02 554

原创 HashMap死循环问题

文章目录HashMap的死循环问题问题原因分析HashMap的put方法分析案例分析总结HashMap的死循环问题问题​ 如果是在单线程下使用HashMap,自然是没有问题的,如果后期由于代码优化,这段逻辑引入了多线程并发执行,在一个未知的时间点,会发现CPU占用100%,居高不下,通过查看堆栈发现,线程都在hashMap的get()方法上,服务重启之后,问题消失,过段时间可能又复现了。原因分析HashMap使用一个Entry数组保存key、value数据,当一对key、value被加入时,会通

2022-03-22 20:33:46 468

原创 ConcurrentHashMap的扩容实现(jdk1.8)

文章目录深入分析ConcurrentHashMap的扩容实现什么情况会触发ConcurrentHashMap扩容transfer实现深入分析ConcurrentHashMap的扩容实现什么情况会触发ConcurrentHashMap扩容第一种:如果新增节点之后,所在链表的元素个数达到了阈值 8,则会调用 treeifyBin 方法把链表转换成红黑树,不过在结构转换之前,会对数组长度进行判断,实现如下:private final void treeifyBin(Node<K,V>[]

2022-03-22 20:08:48 1383

原创 多线程详解

java多线程详解、包括线程池创建使用、阻塞队列、拒绝策略、线程状态

2022-03-22 17:07:22 602

原创 JVM详解

文章目录JVM的主要组成及其作用作用堆栈的区别物理地址内存分别存放的内容程序可见度对象的创建为对象分配内存处理并发安全问题对象的访问定位句柄访问直接指针类装载的执行过程双亲委派模型User user =new User()操作JVM内存模型与GC算法JVM内存模型程序计数器(线程私有)Java虚拟机栈(线程私有)本地方法栈(线程私有)Java堆(线程共享)方法区(线程共享)运行时常量池直接内存GC算法标记-清除算法复制算法标记-整理算法垃圾回收(GC在什么时候,对什么东西,做了什么事情)在什么时候对什么东西

2022-03-21 15:02:01 492

原创 ConcurrentHashMap底层原理以及与HashTable的区别

ConcurrentHashMap底层具体实现及实现原理jdk1.7​ 首先将数据分为一段一段的存储,然后给每一段数据一把锁,当一个线程征用所访问其中一个数据时,其他段的数据也能被其他线程访问。​ 在jdk1.7中采用segment数组+HashEntry的方式来实现,结构如下:一个ConcurrentHashMap里包含一个segment数组。segment的结构和HashMap类似,是一种数组和链表结构,一个segment包含一个HashEntry数组,每个HashEntry是一个链表结构的

2022-03-20 14:35:55 780

原创 HashMap与HashTable的区别

Hash与HashTable的区别线程安全HashMap是非线程安全的,HashTable内部方法基本都经过了synchronized修饰,所以HashTable是线程安全的效率因为线程安全的问题,HashMap要比HashTable的效率高一点儿对Null key和Null value的支持HashMap中,null可以作为键,这样的键只有一个,可以有一个或多个值为nullHashTable不允许有null的键或值,如果put进的键值只要有一个为null,则抛出空指针异常初始容量大小与每次

2022-03-20 13:44:53 448

原创 HashMap解决哈希冲突

HashMap解决Hash冲突什么是哈希冲突当两个个不同的值,根据同一散列函数计算出相同的散列值现象,称为哈希冲突HashMap的数据结构HashMap是由数组+链表组成的,jdk1.8后加入了红黑树​ 使用链地址法来解决哈希冲突,这样我们可以将具有相同哈希值的对象组织成一个链表放在hash值所对应的bucket下,但是相比hashCode返回的int类型,HashMap初始的容量大小为DEFAULT_INITIAL_CAPACITY = 1 << 4(即2的四次方16)要远小于

2022-03-20 11:45:56 1572

原创 HashMap的put方法具体流程

HashMp的put方法具体流程,手撕源码

2022-03-19 21:22:21 1104

原创 LeetCode_Hot100-easy难度的算法题目

LeetCode_hot_100算法题目,,记录下来刷题思路,以及模糊点,。大佬请绕道而行。题目后的括号内写的是对应LeetCode_hot100题库中的序号,方便下回找到相应题目继续淦它。LeetCode_hot_100-Easy难度的题目也不知道谁划定的难度,我乌鸡鲅鱼呀,一脸懵逼呀。。。。。。两数之和(1)题目给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 target 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一.

2022-03-18 20:11:53 1175

原创 07-Spring面试题总结

什么是Spring框架一般说的Spring是指Spring Framework,它是很多模块的集合,使用这些模块可以很方便的协助我们进行开发。这些模块是:核心容器、数据访问/集成、Web、AOP、工具、消息、和测试模块。Spring的6个特征:核心技术:依赖注入,aop,事件,资源,验证,数据绑定,类型转换,i18n,SpEL测试:模拟对象,TestContext框架,Spring MVC测试,WebTestClient数据访问:事务,DAO支持,JDBC,ORM,编组XMLWeb支持:Spr

2022-03-09 19:39:46 437

原创 06-Java虚拟机-相关面试题

Java内存区域(运行时数据区)JDK1.8之前:JDK1.8之后:线程私有的:程序计数器虚拟机栈本地方法栈线程共享的:堆方法区直接内存(非运行时数据区的一部分)程序计数器(线程私有)​ 程序计数器是一块较小的内存空间,可以看做是当前线程锁执行的字节码的行号指示器。字节码解释器工作时通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支、循环、跳转、异常处理、线程恢复等功能都需要依赖这个计数器来完成。​ 为了线程切换后能恢复到正确的执行位置,每条线程都需要有一

2022-03-09 15:11:07 158

原创 05-Java多线程-相关面试题

什么是线程和进程?进程​ 进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。​ 在java中,当我们启动main函数时其实就是启动了一个JVM进程,而main函数所在的线程就是进程中的一个线程,也称为主线程。线程​ 线程与进程相似,单线程是一个比进程更小的执行单位。一个进程再起执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈、和本地方法栈,所以系

2022-03-09 15:10:18 208

原创 04-Java集合-相关面试题

Java集合概述List、Set、Map三者的区别ListSetMap数据格式元素有序可重复元素无序不重复key无序不重复,value无序可重复是否实现了Collection接口是是否集合框架底层数据结构总结List:ArrayList:Object[]数组Vector:Object[]数组LinkedList:双向链表(jdk1.6之前为循环链表,jdk1.7取消了循环)Set:HashSet(无序,唯一):基于HashMap实现的,底

2022-03-05 23:34:30 365

原创 03-Java异常-相关面试题

Java异常在Java中,所有异类都有一个共同的祖先java.lang包中的Throwable类。Throwable:有两个重要的子类Exception和Error异常类层次结构图如下:Error​ Error是指程序无法处理的错误,表示运行程序中较为严重的问题。大多数错误与代码编写者的执行操作无关,而表示代码运行时JVM出现的问题。Exception​ Exception是程序本身可以处理的异常。Throwable类常用方法public String getMessage(

2022-03-05 23:33:49 189

原创 02-Java面向对象-相关面试题

Java类和对象面向对象和面向过程的区别面向过程:面向过程比面向对象的性能高。因为类调用是需要实例化,开销比较大、比较消耗资源、所以当性能是最重要的考量因素时一般采用面向过程开发。但是,面向过程没有面向对象易维护、易复用、易扩展面向对象:面向对象易维护、易复用、易扩展。因为面向对象有封装、继承、多态性的特性,所以设计出低耦合的系统、是系统更加灵活、更加易于维护。但是,面向对象性能比面向过程低面向过程也需要分配内存,计算内存偏移量,Java性能差的主要原因并不是因为他是面向对象语言,而是JAVA

2022-03-05 23:32:57 174

原创 01-java基础知识-相关面试题

Java基础概念Java语言的特点简单易学面向对象(封装、继承、多态)平台无关性(Java虚拟机实现平台无关性)可靠性安全性支持多线程支持网络编程并且很方便编译与解释并存JVM-JDK-JREJVM​ JVM是运行java字节码的虚拟机。JVM有针对不同系统的特定实现,目的是使用相同的字节码,它们都会给出相同的结果。字节码在java中,JVM可以理解的代码叫做字节码(.class文件),它不面向任何特定的处理器,只面向虚拟机。Java语言通过字节码的方式,在一定程度上解决了传

2022-03-05 23:32:18 349

原创 05-Sentinel规则持久化

Sentinel规则持久化sentinel的所有规则都是内存存储,重启后所有规则都会丢失。在生产环境下,我们必须确保这些规则的持久化,避免丢失。规则管理模式规则是否能持久化,取决于规则管理模式,sentinel支持三种规则管理模式:推送模式说明优点缺点原始模式API 将规则推送至客户端并直接更新到内存中,扩展写数据源(WritableDataSource),默认就是这种简单,无任何依赖不保证一致性;规则保存在内存中,重启即消失。严重不建议用于生产环境Pull

2022-02-19 22:17:33 1022 1

原创 04-Sentinel授权规则

授权规则授权规则可以对请求方来源做判断和控制。授权规则基本规则授权规则可以对调用方的来源做控制,有白名单和黑名单两种方式。白名单:来源(origin)在白名单内的调用者允许访问黑名单:来源(origin)在黑名单内的调用者不允许访问点击左侧菜单的授权,可以看到授权规则:资源名:就是受保护的资源,例如/order/{orderId}流控应用:是来源者的名单,如果是勾选白名单,则名单中的来源被许可访问。如果是勾选黑名单,则名单中的来源被禁止访问。我们允许

2022-02-19 22:16:47 965

原创 03-Sentinel隔离和降级

Sentinel隔离和降级限流是一种预防措施,虽然限流可以尽量避免因高并发而引起的服务故障,但服务还会因为其它原因而故障。而要将这些故障控制在一定范围,避免雪崩,就要靠线程隔离(舱壁模式)和熔断降级手段了。线程隔离:调用者在调用服务提供者时,给每个调用的请求分配独立线程池,出现故障时,最多消耗这个线程池内资源,避免把调用者的所有资源耗尽。熔断降级:是在调用方这边加入断路器,统计对服务提供者的调用,如果调用的失败比例过高,则熔断该业务,不允许访问该服务的提供者了。不管是线程隔离还是熔断降级,都是

2022-02-19 19:57:15 1123

原创 02-Sentinel流量控制

雪崩问题解决方案-Sentinel流量控制(限流)簇点链路项目内的调用链路,链路中被监控的每个接口就是一个资源。默认情况下sentinel会监控SpringMVC的每一个端点(Endpoint),因此SpringMVC的每一个端点(Endpoint)就是调用链路中的一个资源。流控、熔断等都是针对簇点链路中的资源来设置的,因此我们可以点击对应资源后面的按钮来设置规则:流控:流量控制降级:降级熔断热点:热点参数限流,是限流的一种授权:请求的权限控制示例添加限流规则:其含义是限制 /

2022-02-18 21:43:53 258

原创 01-Sentinel基础、安装、雪崩问题

Sentinel基础、安装、雪崩问题雪崩问题及解决方案雪崩问题微服务中,服务间调用关系错综复杂,一个微服务往往依赖于多个其它微服务。如果服务提供者1发生了故障,当前的应用的部分业务因为依赖于服务1,因此也会被阻塞。此时,其它不依赖于服务1的业务似乎不受影响。但是,依赖服务I的业务请求被阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到来,越来越多的线程会阻塞服务器支持的线程和并发数有限,请求一直阻塞,会导致服务器资源耗尽,从而导致所有其它服务都不可用,那么当前服务也就不

2022-02-17 23:56:51 579

原创 jmeter安装及简单使用

安装jmeterJmeter依赖于JDK,所以必须确保当前计算机上已经安装了JDK,并且配置了环境变量。下载可以Apache Jmeter官网下载,地址:http://jmeter.apache.org/download_jmeter.cgi下载zip压缩包解压即可使用解压进入bin目录,运行jmeter.bat即可启动运行双击即可运行,但是有两点注意:启动速度比较慢,要耐心等待启动后黑窗口不能关闭,否则Jmeter也跟着关闭了设置中文语言默认Jmeter的语言是英文,需要设置:

2022-02-17 19:51:48 774

原创 13-ES集群模式

ES集群单机的elasticsearch做数据存储,必然面临两个问题:海量数据存储问题、单点故障问题。海量数据存储问题:将索引库从逻辑上拆分为N个分片(shard),存储到多个节点单点故障问题:将分片数据在不同节点备份(replica )ES集群相关概念:集群(cluster):一组拥有共同的 cluster name 的 节点。节点(node) :集群中的一个 Elasticearch 实例分片(shard):索引可以被拆分为不同的部分进行存储,称为分片。在集群环境下,一

2022-02-16 16:46:01 2138

原创 12-mysql与ES实现数据同步

mysql和ES实现数据同步思路分析常见的数据同步方案有三种:同步调用异步通知监听binlog同步调用基本步骤如下:服务1对外提供接口,用来修改elasticsearch中的数据服务2在完成数据库操作后,直接调用服务1提供的接口,异步通知服务2对mysql数据库数据完成增、删、改后,发送MQ消息服务1监听MQ,接收到消息后完成elasticsearch数据修改监听binlog给mysql开启binlog功能mysql完成增、删、改操作都会记录在binlog中

2022-02-16 16:22:18 3800

原创 11-ES的自动补全

自动补全在搜索框输入字符时,我们应该提示出与该字符有关的搜索项,因为需要根据拼音字母来推断,因此要用到拼音分词功能。拼音分词器要实现根据字母做补全,就必须对文档按照拼音分词。在GitHub上恰好有elasticsearch的拼音分词插件。地址:https://github.com/medcl/elasticsearch-analysis-pinyin安装方式可以参考IK分词器的安装方式:https://editor.youkuaiyun.com/md/?articleId=122899932测试拼音分词器P

2022-02-16 15:03:57 1255

python爬虫豆瓣电影TOP250,以及数据化分析

python爬虫豆瓣电影TOP250,以及数据化分析

2022-01-20

PotPlayerSetup_v1.7.21526.exe

万能格式视频播放器

2021-11-15

PicGo-Setup-2.3.0-ia32.exe

图床

2021-11-15

程序员记笔记的小工具

一款程序员笔记工具,编辑好的文件存储为.md文件,支持pdf和html格式的导出,完全支持Markdown语法

2020-03-25

SSH进销存管理项目.zip

家具进销存管理项目,超级管理员以及普通管理员两种用户,超管查看进出货物量以及人员注册信息。图标插件HightChars.包括数据库文件前端bootstrap技术

2019-09-04

excel导出.zip

ssh完成对数据库的查询以及以excel文件的形式进行导出,uers2.xls为excel模板

2019-08-16

Netbeans软件

一款二级Java考试编程软件,习惯了用eclipse开发的人,考二级需要提前预习Netbeans软件

2018-10-12

MarkDownPad2

一款博客内容编辑工具,包括工具内的插件 以及安装方法

2018-10-12

空空如也

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

TA关注的人

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