自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

不可以庸俗堕落的博客

这是一个努力上进希望以后可以不受贫穷欺凌的初入社会者的博客

  • 博客(76)
  • 收藏
  • 关注

原创 Spring随笔-核心源码看三级缓存解决循环依赖

Spring三级缓存解决循环依赖问题循环依赖的产生三级缓存的名字及其结构三级缓存如何解决循环依赖循环依赖的产生在多个对象之间产生循环的互相引用的关系,在bean的初始化过程中,就会出现“先有蛋还是先有鸡”的问题。举个例子:@Componentpublic class A{ @Autowired private B b;}@Componentpublic class B{ @Autowired private A a;}此时,在bean的创建过程中,A创建时要在初始化过程中注入

2022-04-13 11:12:31 413

原创 Spring随笔-Spring事务传播

Spring事务传播机制Spring事务是什么?七个事务传播类型NESTED和REQUIRES_NEW的区别NESTED和REQUIRED的区别Spring事务是什么?多个事务方法相互调用,事务如何在这些方法直接进行传递?方法A是一个事务的方法,方法A执行过程中调用了方法B,那么方法B有无事务以及方法B对事务的要求不同都会对方法A事务具体执行造成影响,同时方法A的事务对方法B事务执行也有影响,这种影响具体是什么就由两个方法所定义的事务传播类型所决定;七个事务传播类型REQUIRED(Sp

2022-04-11 22:10:36 471

原创 完整版数据库系统概论(第五版)-课后答案-免费网盘自提

完全体课后题参考答案与复习笔记

2022-03-31 18:56:43 7543 7

原创 Java实现中缀表达式转后缀表达式

文章目录一、中缀表达式转后缀表达式的方法二、实现代码一、中缀表达式转后缀表达式的方法此处偷一下懒,直接引用别人的思想总结,写的比较好哦!中缀转后缀的三个基本方法(简单易懂)二、实现代码import java.util.*;/** * @Author 玛卡巴卡 * @Date 2020/11/7 0007 13:09 * @Dscription:使用上文链接中提到的第一个方法实现中缀表达式转后缀表达式, * 以下是几个关键点的总结: * 1.使用 Map 作为运算符的优先级集合;

2020-11-07 22:46:44 337

原创 Oracle OJDBC.jar 网盘自提

链接: https://pan.baidu.com/s/1K67WJaE7C9oW01IARhudSw提取码:nhao

2020-08-12 10:08:44 335

原创 Git的下载安装以及后续

Git的安装以及后续1.Git的下载方法1:官网下载(速度慢 版本全 保证最新)方法2:百度网盘自提(版本2.26.0 windows版)2.Git的安装3.Git基本信息配置4.码云配置ssh免密登陆1.Git的下载方法1:官网下载(速度慢 版本全 保证最新)01 百度搜索Git进入官网 https://git-scm.com/02 点击如下图所示的红色方框任选一个等待下载完成;方法2:百度网盘自提(版本2.26.0 windows版)链接地址 : https://pan.baidu.com/

2020-06-22 21:51:52 422

原创 SpringBoot2.x整合MybatisPlus(Mybatis同理)

SpringBoot2.X整合MybatisPlus1.导入MybatisPlus依赖2.导入数据库驱动3.配置信息3.1 配置数据源3.2 配置mybatis-plus整合mybatis也是同理1.导入MybatisPlus依赖 <dependency> <groupId>com.baomidou</groupId> <artifactId>mybatis-plus-boot-starter</

2020-06-05 17:03:27 433 1

原创 Docker配置阿里云镜像加速服务

1.百度搜索阿里云并登陆;2.控制台 -> 产品与服务 -> 容器镜像服务3.镜像加速器 -> 选择需要的系统4.运行命令;

2020-06-03 15:35:30 205

原创 MySql索引优化

1.全值匹配,按需取数据尽量于索引重合 ;2.最佳左前缀法则:即查询要从索引的最左列开始并且不跳过索引中的每一列,否则索引失效全表扫描;3.不再索引列做出任何操作(计算、函数、类型转换),会导致索引失效而转向全表扫描;4.存储引擎不能使用索引中范围条件右边的列;5.尽量使用覆盖索引(只访问索引的查询)减少select * 操作;6.mysql在使用非等值连接符(> < !=)的时候无法使用索引,导致全表扫描;7.is null,is not null无法使用索引;8.like以开头

2020-05-30 16:04:29 162

原创 MySQL使用explain语句性能分析详解

1.explain是如何进行工作的?使用explain关键字可以模拟优化器执行SQL查询语句,从而知道MySQL是如何处理你的SQL语句的。分析你的查询语句或者是表结构的性能瓶颈;语法为:explain SQL语句;2.explain查询的内容使用explain SQL语句;之后会出现如下的表头:以下为对该表头的详细解释:2.1 —— idid表示select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序;共分为三种情况:Ⅰ id相同,执行顺序由上到下;

2020-05-30 10:11:58 253

原创 存储过程原理简单解析

1.什么是存储过程?将一组预先编译好的SQL语句的集合,存放在一个特定的文件中。类似于JAVA中的方法。2.存储过程的工作原理将存储过程预先编译好的SQL语句集合称为集合A,里面包含SQL1、SQL2、SQL3…许多句需要在项目中使用的SQL语句。①当应用在调用SQL集合时可以直接调用集合A而不需要一个一个的调用SQL语句。②当系统在第二次调用这些SQL语句执行某些功能的时候,它会先去查看是否已经有编译过的SQL语句,当发现集合A有符合的情况时,会直接调用A。③假设没有存储过程,也就是SQL1

2020-05-24 17:05:00 1619 1

原创 MYSQL常见的数据类型与约束字段

1.整型整数类型字节范围Tinyint1有符号: -128~127 /无符号:0~255Smallint2有符号:-32768~32767 /无符号:0~65535Mediumint3有符号:-8388608~8388607 /无符号0~1677215Int/integer4有符号:-2147483648~2147483647 /无符号:0...

2020-04-23 17:09:08 209

原创 SQL——查询语句

1.分组查询可以将数据使用group by子句将表中的数据分成若干组;语法规则:SELECT column,group_function(column)From table[where condition][group by group_by_expression][order by column];# 1.where一定要放在from后面# 2.from...

2020-04-09 21:36:47 161

原创 SpringBoot2.X整合Zookeeper+Dubbo

对于服务提供方:1.创建web工程provider-ticket,并在pom文间中引入相关依赖<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instanc...

2020-03-19 16:03:33 797 6

原创 SpringBoot(2.X版本)配置Druid(亲测成功)

1.Pom文件中引入Druid依赖我的Pom依赖如下:<dependencies> <!--SpringBoot的starter--> <dependency> <groupId>org.springframework.boot</groupId> <artif...

2019-12-07 22:50:04 3626 4

原创 最新版google浏览器Encoding Charset插件(百度网盘自提)

链接:https://pan.baidu.com/s/1DIdRGITat1iwDecXyu8vQw 提取码:6c6h

2019-11-24 12:38:26 882

原创 Linux安装Docker详细步骤

首先Linux内核的版本必须是3.10及其以上的版本,那么如何查看Linux的内核版本?uname -r 查看Linux的内核版本1.安装Dockeryum install docker 联网安装docker等到出现如下所示,表示安装成功2.启动dockersystemctl start docker 启动docker3.查看docker信息docker...

2019-11-10 18:18:29 190

原创 自定义SpringBoot的三大组件(Servlet、Filter、Listener)

1.配置Servlet组件//当浏览器发送MyServlet请求,则返回自己配置的Servlet@Configurationpublic class MyServerConfig { @Bean public ServletRegistrationBean myServletregistBean(){ ServletRegistrationBean registra...

2019-11-08 17:30:29 151

原创 Spring Boot自动配置原理(深入源码)

Spring Boot的应用启动都是在创建项目后自动生成主配置类的Application代码:@SpringBootApplicationpublic class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class,...

2019-10-30 23:59:28 122

原创 创建一个入门级的Spring Boot项目HelloWorld

除过使用IDEA自带的一键式生成Sping Boot,第二个就是直接使用maven工具来创建并管理项目,对于一个Spring Boot项目,需要以下几个步骤:1.创建maven项目File -> new -> Project -> Maven -> Next -> 给自己的项目命名 一般的命名格式为GroupId = xx.xx,Artifactid =xx -...

2019-10-22 23:46:35 179

原创 死锁的产生和解决

死锁死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力的作用,他们都将无法推进下去。此时称系统处于死锁状态或者说系统产生了死锁,这些永远相互等待的进程称为死锁进程;集合中的每一个进程都在等待只能由本集合的其他进程才能引发的事件,那么该组进程是死锁的;例如:线程A锁住了锁1并等待锁2的释放,而线程B锁住了锁2并等待锁1的释放,这样两个线程就产...

2019-10-11 00:10:41 204

原创 一文读懂Spring IOC & DI & AOP & MVC & BOOT

简介作为一个Java的大家族,Spring是Java开发中应用最广泛最成熟的框架。在Spring的官方文档中,Spring的组件包括:1.Spring IOC(控制反转)Ioc (Inversion of Control),即“控制反转”它不是什么技术,而是一个思想。IOC意味着你将设计好的对象交给容器来控制,而不是像以前那样在对象的内部进行控制,举个简单的例子:当有一个类A,一个类B,...

2019-10-09 18:37:21 340

原创 详解ConcurrentHashMap(带源码)

1.继承关系public class ConcurrentHashMap<K,V> extends AbstractMap<K,V> implements ConcurrentMap<K,V>, Serializable源码所示,ConcurrentHashMap继承字AbstarctMap,并且实现了ConcurrentMap和Serializable接...

2019-10-05 21:55:29 116

原创 五种IO模型

在网络编程中,用户启动的应用程序都是以进程的形式存在,而无论对于网络数据还是磁盘上的数据,都以二进制的流方式传递,必须由内核把数据复制到进程所在的内存空间才能访问。如上图所示,一个客户端的HTTP请求发出后,先通过内核找到硬盘或者网络上的资源,加载到内核空间的缓冲区中,在通过内核复制回显到网页上,显示出用户所需要的HTML网页。在此期间进程实际上是阻塞的,在客户端没有得到所需要的数据之前进程会...

2019-10-04 16:40:19 110

原创 笔试常考的学生表查询SQL(亲测,绝对正确)

问题:已知关系模式:s (sno,sname) 学生关系表 ---------- sno为学号,sname为姓名c (cno,cname,cteacher) 课程关系-- cno为课程号,cname为课程名,cteacher为任课教师sc(sno,cno,scgrade) 选课关系表— sno关联s,cno关联c,scgrade为成绩根据此关系式我自己建立了几个表:1....

2019-09-30 21:04:26 2356

原创 Java中七大垃圾回收器

在Java中,垃圾回收是JVM最常见的工作,也是保证系统能稳定运行的保障之一,常见的垃圾回收算法有两种:分代回收和分区回收,他们各有优缺。当然回收垃圾不可能空手套白狼,所以下面就介绍一下七种垃圾回收器:下图向我们展示了JDK1.8之后,垃圾回收器的使用场景:新生代年老代SerialCMSParNewParallelOldParallelSacvengeSe...

2019-09-29 23:56:14 3111

原创 Java中的回调函数

对于回调函数,最常见的是出现在C语言的程序中,因为牵扯到指针问题,所以这块我也不是很懂,有关C的回调函数可以参考:C语言回调函数的实例 详情请点击这里回调函数是指使用者自己定义一个函数,实现这个函数的程序内容,然后把这个函数(入口地址)作为参数传入别人(或系统)的函数中,由别人(或系统)的函数在运行时来调用的函数。函数是你实现的,但由别人(或系统)的函数在运行时通过参数传递的方式调用,这就是...

2019-09-28 13:20:36 138

原创 进程间的通信

进程通信进程通信指的是进程间的数据传输。进程通信根据交换信息量的多少和效率的高低,分为低级通信(只能传递状态或整数值)和高级通信(提高信号通过的效率,传递大量数据,减轻程序编制的复杂度),其中高级进程的通信分为三种:共享内存模式消息传递模式共享文件模式所以进程共享的方式可分为以下五种:1.管道管道一般是指两个不同的进程之间的通信。当一个进程创建管道,并且调用fork创建自己的子进...

2019-09-27 12:00:38 365

原创 Spring的声明式事务

1.什么是事务?事务就是把一系列的操作当成一个整体单元来处理,这些动作要么全部成功,要么全部失败。将这一系列的操作当成原子性动作去执行。2.事务的属性(ACID)原子性(Automicity)事务是一个原子性的操作,有一系列的动作组成,要么成功要么失败,保证数据的完整性;若其中有一个事务出现失败情况,所有事务都将会回退到事务操作之前的状态;一致性(Consistency)事务不...

2019-09-22 23:59:57 129

原创 Http 1.0 Http 1.1 Http 2.0 Https

虽然本人是个程序猿,但是在好几场面试的时候面试官都问到了HTTP协议,由于对网络这方面不太熟悉,所以每次都是灰头土脸的出来,现在就总结一下HTTP协议,也为自己加深理解:1.HTTP协议1.1 什么是HTTP协议?HTTP(超文本传输协议),它是一个应用层协议,基于TCP/IP通信协议;常见的协议分层:应用层协议:HTTP FTP DNS SMTP POP3 telent传输层协议...

2019-09-22 23:13:23 211

原创 volatile关键字的作用

Java提供了一种稍弱的同步机制,即volatile变量,用来确保变量的更新操作能通知到其他线程。volatile保证了数据的可见性,禁止重排序,volatile变量不会被缓存到寄存器或者对其他处理器不可见的地方,因此在读取volatile变量的时候总会返回写入的新值。可见性当一个线程修改了变量的值,新的值对于其他线程可见。volatile变量不允许线程直接修改内存,所以对每个线程都是可见的...

2019-09-19 21:53:08 142

原创 线程上下文的切换

线程上下文的切换巧妙的利用了时间片轮转的方式,CPU给每个任务都服务一定的时间,然后把当前任务的状态保存下来,在加载下一任务的状态后,继续服务下一个任务;线程状态的保存及其再加载,就是线程的上下文切换。时间片轮询保证CPU的利用率:对于线程切换的几个关键词的解释:进程进程是一个具有一定独立功能的程序在一个数据集上的一次动态执行的过程,是操作系统进行资源分配和调度的一个独立单位,是应用程...

2019-09-19 11:45:38 397

原创 mysql和redis的数据一致性问题

在现在的高并发环境下,单单使用mysql用来存储数据已经不太现实了,需要用redis做为缓存,用户在访问数据的时候先查找缓存中是否存在,若存在则直接读缓存,不存在则读数据库然后将值写入缓存。读取缓存步骤一般没有什么问题,但是当更新数据的时候就会初夏如下问题:假设一个数据库中现在有100台ipad,需要进行秒杀业务,刚开始数据库中为100,redis中也是100:问题一如果先删缓存Red...

2019-09-19 01:05:19 640

原创 Java中常见的锁及其优化

常见锁作为并发编程的一部分,锁机制是必不可少的,常见的锁有以下几种:乐观锁、悲观锁、自旋锁、同步锁、递归锁、重量级锁、轻量级锁、偏向锁、分段锁,下面就来一一介绍一下这些锁:1.乐观锁乐观锁是一种乐观思想,它主要用在读多写少的场景。它认为别的线程在拿数据的时候只负责拿,并不会对数据进行改变,所以不会上锁。但是它在更新的时候会判断一下在此期间别人有没有对数据进行更新,采取先时先读当前的版本号,...

2019-09-18 23:07:03 348

原创 线程的生命周期和终止条件

在Java并发设计中,多线程是一个不可或缺的点。那么下面我们就来看一下线程的生命周期线程的生命周期线程的被创建启动之后并不会直接就进入执行状态,而是要经过以下5中状态:新建(New)——>就绪(Runnable)——>运行(Running)——>阻塞(Blocking)——>死亡(Dead)需要注意的是当线程启动之后CPU并不是在一个线程上一直执行下去,而是通过分片...

2019-09-17 15:00:57 548

原创 从二叉树的先序和中序构建二叉树

对于二叉树,我们一般的遍历方式有先序遍历(preOrder),中序遍历(inOrder),后序遍历(afterOrder),层序遍历(levelOrder),每个遍历方式都有自己的特点(这个大家可以自行了解,很简单),下面我们就来看一下利用树的先序(后序)和中序遍历来构建二叉树先序遍历的特点:数组的头一定是根节点,然后再从根结点向左向右遍历中序遍历的特点:数组的头结点将数组分成两部分,左边为...

2019-09-04 00:00:18 460

原创 代理模式(静态代理和动态代理)

代理模式代理是最基本的设计模式之一,在SpringAOP中非常常见,也是面试中必问的一项。代理为你提供了额外的或不同的操作,而插入的用来代替 “实际”对象的对象。这些操作通常涉及与“实例”对象的通信,因此代理通常充当中间人的角色。静态代理//定义代理接口public interface Interface { //定义两个方法 void doSomething(); void som...

2019-09-03 11:00:14 111

原创 线程池工作流程及线程复用原理

Java常用的线程池1.线程池的作用线程池的作用就是限制运行线程的数量;创建一个符合需求的线程池,可以有效的提高系统运行的效率;利用同步队列控制线程的执行与销毁;为什么使用线程池会提高效率?1.减少了创建和销毁线程的次数,每个工作线程都有可能被重复利用;2.根据系统的承载能力,调整线程池中的线程数目,避免开启太多线程;需要注意的是:Java里的线程池的顶级接口是Executor...

2019-08-28 18:58:39 2714

原创 长度为n的数组按顺序进出栈总共有几种方式?

这是一道很经典的也比较常考的笔试选择题,别因为这么简单的一道题就让我们痛失两分。这个也不用推导,你就记着:这个题就是考catalen数(卡塔兰数),不了解的可以百度一下就解决了;公式:C(n)=C(n-1)2(2n-1)/(n+1);还有几种情况也符合catalen数:1.凸n边形的三角划分;(当n=3时,只有一种划分方式);2.n个节点组成的二叉搜索树的个数;(当n=1时,只有一种);...

2019-08-17 16:54:32 515

原创 Java的集合框架(Collection)

简介Collection是层次结构中的根接口。Collection 表示一组对象,这些对象也称为 collection 的元素。一些 collection 允许有重复的元素,而另一些则不允许。一些 collection 是有序的,而另一些则是无序的。JDK 不提供此接口的任何直接 实现:它提供更具体的子接口(如 Set 和 List)实现。此接口通常用来传递 collection,并在需要最大普...

2019-08-16 16:59:13 193

空空如也

空空如也

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

TA关注的人

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