自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 全网最全的Java系列面试学习笔记免费获取

发现一份的特别全又特别好的资料,非常适合正在找工作的小伙伴儿,就想单纯的分享给大家,没有任何意图,如果有需要的小伙伴儿,可以点一波关注后留言或者私信我,我把网盘的链接发给大家!!抱拳请看目录...

2021-07-05 20:50:52 171 10

原创 深入理解MVCC实现原理以及当前读和快照读存在的问题

1. MVCC基础知识1、什么是MVCC?MVCC,全称Multi-Version Concurrency Control,即多版本并发控制。MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问。意义就是在并发且不加锁的状态下,提高数据库的读写效率,并且能保证数据一致性。MVCC其实和JUC中的CAS的意义类似,就是在不加锁的情况下,既能保证多线程的安全,又能提高并发效率。2、什么是当前读和快照读?当前读:读取的是数据的最新版本,总是读取到最新数据当前读的

2021-08-29 10:59:14 1630 5

原创 Linux之Shell编程详解

1. 为什么要学习shell编程1)Linux运维工程师:编写Shell程序进行服务集群管理。2)Python和JavaEE程序员:编写Shell脚本程序或者是服务器的维护,比如编写一个定时备份数据库的脚本。大3)数据程序员:编写Shell程序来管理集群。2. Shell 是什么Shell 是一个命令解释权,它为用户提供了一个向 Linux 内核发送请求以便运行程序界面系统级程序,用户可以用 Shell 来启动、挂起、停止甚至是编写一些程序。3. Shell 编程快速入门3.1 脚本格式要求

2021-08-14 17:16:16 2832

原创 一分钟搞定leetcode回文串的问题

感谢大家的理解与指正!觉的写的不错的小伙伴儿,一键三连支持一下,后期会有持续更新!!抱拳了罒ω罒1. 回文子串 —— leetcode_647首先使用动态规划来进行解决:状态:dp[i][j] 表示字符串s在[i,j]区间的子串是否是一个回文串。状态转移方程:当 s[i] == s[j] && (j - i < 2 || dp[i + 1][j - 1]) 时,dp[i][j]=true,否则为false这个状态转移方程是什么意思呢?当只有一个字符时,比如 a ,s[.

2021-08-12 20:06:34 205 2

原创 一分钟搞定leetcode子序列与子串的问题

子序列问题1. 最长递增子序列—— leetcode_300定义 dp[i] 为考虑前0到 i - 1 个元素,以第 i - 1个数字结尾的最长递增子序列的长度,就是前i个元素最长递增子序列的长度。我们从小到大计算 dp 数组的值,在计算 dp[i] 之前,我们已经计算出 dp[0…i−1] 的值,则状态转移方程为:dp[i]=max(dp[j])+1,其中0≤j<i且num[j]<num[i]。比如num = [3,1,6,5,7],dp[4]是dp[1]、dp[2]的最大值加1,为什

2021-08-12 09:39:12 210

原创 一分钟搞定最长公共子序列与最长公共子串的问题

import java.util.Arrays;public class longestCommonSubsequence_1143 { public static int longestCommonSubsequence(String text1, String text2) { int m = text1.length(); int n = text2.length(); //dp[i][j]表示text1(0,i)和text2(0,j)最长公

2021-08-10 22:55:16 160

原创 零基础SpringBoot整合Mybatis完整版

1. 创建一个SpringBoot项目可参考 :零基础使用IDEA创建SpringBoot项目2. 在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-instance" xsi:schemaLocation=

2021-08-02 09:40:27 143 7

原创 零基础使用IDEA创建SpringBoot项目

1. 打开IDEA,新建工程项目  2. 选择Spring Initializr,创建一个SpringBoot项目  3. 填写Group,Artifact,以及选择的java的版本  4. 勾选Sping Web,点击next,并点击finsh,至此项目创建完成。  5. 可以删除以下五个文件(不删也可以)。  6. 新建一个Controller文件夹,再新建一个helloWorldController  7. helloWorldController中的内容

2021-08-01 21:05:14 154

原创 高并发场景下,到底先更新缓存(Redis)还是先更新数据库(MySQL)的问题?

对于热点数据(经常被查询,但不经常被修改的数据),我们可以将其放入redis缓存中,以增加查询效率,但需要保证从redis中读取的数据与数据库中存储的数据最终是一致的。针对一致性的问题进行了汇总总结。【 问题介绍 】  客户端对数据库中的数据主要有两类操作,读(select)与写(DML)。缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。  对于写操作(DML),缓存与数据库中的内容都需要被修改,但两者的执行必定存在一个先后顺.

2021-07-31 17:00:02 5032 7

原创 MyBatis-Plus自定义SQL语句的每一层

使用SpringBoot和Mybatis Plus进行后端开发时,想要自定义SQL与Mapper方法,而不仅仅是使用逆向工程自动生成的那些方法。xml文件Mapper层Service层(注意注解)只能使用@Resource注解,不能使用@AutowairedController层输出...

2021-07-19 21:21:31 221

转载 图解排序算法之堆排序算法

精心整理的堆排序,并配图加代码,方便理解,实属不易,但是难免不了存在纰漏,感谢大家的指正与理解!觉的写的不错的小伙伴儿,一键三连支持一下,后期会有持续更新!!抱拳了罒ω罒...

2021-07-16 16:15:27 186

原创 图解排序算法之归并排序算法

1. 算法思路  " 归并 " 的含义就是将两个或两个以上的有序表组合成一个新的有序表。假定待排序的表有n个记录,则可将其视为n个有序的子表,每个子表的长度为1,然后两两归并,得到一个⌈n / 2⌉个长度为2或1的有序表;再两两归并……如此重复,直到合并成一个长度为n的有序表为止,这种排序的方法称为2路归并排序。...

2021-07-14 12:00:03 569

原创 图解排序算法之快速排序算法

1. 算法思路1.先从数组中取出一个数(通常第一个数)作为基准数。2.将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。3.对左右两边的子数组进行递归排序,直到只剩下一个元素则全部排序完成。2. 性能时间复杂度:平均情况下的时间复杂度为O(nlogn)。最好的情况是O(n),最坏情况下时间复杂度为O(n2)。空间复杂度:它是一种原地排序,只需要一个很小的栈作为辅助空间,空间复杂度为O(log2n),所以适合在数据集比较大的时候使用。稳定性:不稳定的算法3. 举例说明 

2021-07-13 20:20:41 441

原创 超级好懂的设计模式——观察者模式

精心整理了设计模式——观察者模式,并配图加代码,方便理解,实属不易,但是难免不了存在纰漏,感谢大家的指正与理解!觉的写的不错的小伙伴儿,一键三连支持一下,后期会有持续更新!!抱拳了罒ω罒观察者模式简介观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种 一对多 的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新。观察者模式的主要角色:抽象主题(Subject):它是一个抽象类或接口,主要包括保存观察者的集.

2021-07-07 15:43:52 110

原创 超级好懂的设计模式——适配器模式

适配器模式的简介把一个类的接口变换成客户端所期待的另一种接口,从而使原本接口不匹配而无法一起工作的两个类能够在一起工作。分类:适配器模式主要分为类适配器模式和对象适配器模式角色:被适配者( Adaptee ):需要被适配的类,就是原接口适配器( Adapteer ):包装一个对象,将原接口转换成目标接口适配者(Target ):目标接口,用户所需要的接口以电脑网线接口为例,需要将网线接口利用适配器转换成USB接口,说明适配器的用法:类和接口之间的关系图1. 类适

2021-07-06 20:47:55 106

原创 超级好懂的设计模式——代理模式

  代理模式:为其他对象提供一种代理以控制对这个对象的访问。通过代理就是不改变原有业务的基础上,对业务方法进行增强。  代理模式分为静态代理和动态代理;实现动态代理的方式有JDK 动态代理和CGLIB 动态代理...

2021-07-05 17:07:13 133

原创 超级好懂的设计模式——工厂模式

1. 工厂模式简介  工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。主要有三种不同实现方式:简单工厂模式,工厂方法模式,抽象工厂模式。  应用实例: 您需要一部手机,可以直接从工厂里面提货,而不用去管这部手机是怎么做出来的,以及这个手机里面的具体实现。2. 简单工厂模式  该模式对对象创建管理方式最为简单,该模式通过向工厂传递类型来

2021-07-04 10:36:32 190

原创 超级好懂的设计模式——单例模式

1. 单例模式简介定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。常见的使用场景:线程池,数据库连接池、网站计数器、Spring容器默认Bean构建方式:饿汉式,懒汉式,内部类不管是哪一种实现方式,单例类的构造函数必须是私有的;instance 成员变量和方法必须是 static 的。2. 饿汉式指全局的单例实例在类装载时构建,因此不需要考虑线程安全问题class HungrySington{ //类加载是就直接实例化对象。 private static Hu

2021-07-03 09:53:36 172

转载 最详细的设计模式的七大原则讲解

设计模式的七大原则面向对象的设计模式有七大基本原则:开闭原则(Open Closed Principle,OCP)单一职责原则(Single Responsibility Principle, SRP)里氏代换原则(Liskov Substitution Principle,LSP)依赖倒转原则(Dependency Inversion Principle,DIP)接口隔离原则(Interface Segregation Principle,ISP)合成/聚合复用原则(Composite/A

2021-06-30 21:30:58 349 4

原创 最全面的手撕面试SQL语句

  每一条语句都认真编写与调试,我把建库建表插入数据一同整理了,方便各位调试与练习,但是难免不了存在纰漏,感谢大家的指正与理解!觉的写的不错的小伙伴儿,一键三连支持一下,后期会有持续更新!!抱拳了罒ω罒1. 创建数据库stu_test2CREATE DATABASE stu_test2;USE stu_test2;SHOW TABLES ;2. 分别创建四个数据表# 学生信息表CREATE TABLE Student(s_no INT, # 学号sname VARCHAR(20), .

2021-06-20 22:10:37 516 7

原创 一文让你深刻记住背包问题的解决

觉的写的不错的小伙伴儿,一键三连支持一下,后期会有持续更新!!抱拳了1、定义  背包问题是一类经典的动态规划问题,它非常灵活,需要仔细琢磨体会,本文先对背包问题的几种常见类型作一个总结,然后再看看LeetCode上几个相关题目  背包问题(Knapsack problem)是一种组合优化的NP完全问题。问题可以描述为:给定一组物品,每种物品都有自己的重量和价格,在限定的总重量内,我们如何选择,才能使得物品的总价格最高。主要分为三类:0-1背包,完全背包,多重背包。2、0-1背包  0-1背包是.

2021-06-15 20:43:21 259 8

原创 详细讲解布隆过滤器的原理

什么是布隆过滤器  布隆过滤器(Bloom Filter)是1970年由布隆提出的,布隆过滤器是一种数据结构,特点是高效地插入和查询,这个算法无需存储该元素(key)的值就可以判断某个元素是否在某个集合中。它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。实现原理  布隆过滤器是一个 bit 向量或者说 bit 数组,如下图:...

2021-06-07 16:31:25 490 2

原创 Linux最常用命令集合(基于狂神说的linux)

1. 关机指令shutdown -h 10 #将在10分钟后关机shutdown -h now #立马关机shutdown -h 20:30 #系统会在今天20:30关机shutdown -r now #系统立马重启shutdown -r 10 #系统十分钟后重启reboot #就是重启,等同于shutdown -r nowhalt #关闭系统,等同于shutdown -h now和poweroff注意:不管是重启还是关闭系统,首先要运行sync命令,把内存中的数据写到磁盘中,执行命令之

2021-05-31 19:51:05 216 2

原创 Xshell ssh连接错误:Socket error Event: 32 Error: 10053.

首先确保Centos7开启SSH服务,如果没有请参考:https://www.cnblogs.com/kinwing/p/11134179.htmlssh连接centos7失败出现一下错误:以下四种解决办法:内网可以ping通服务器,并且服务器可以上网,使用ifconfig 查看地址也没错,多次重装openssh-server运行chmod 400 /etc/ssh/*,修改ssh目录的权限运行一下命令,修改权限cd /etc/sshchmod 0644 *chmod 0600 ss.

2021-05-27 20:01:57 596

原创 Redis常见的面试题硬核整理

1. 谈谈对Redis的认识Redis是一个高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。与传统数据库不同的是 Redis 的数据是存在内存中的,所以读写速度非常快,因此 redis 被广泛应用于缓存方向。优点:读写性能优异;支持数据持久化;支持事务,操作都是原子性的;数据结构丰富;支持主从复制,可以进行读写分离缺点:数据库容量受到物理内存的限制,不能用作海量数据的高

2021-05-24 11:09:49 715

转载 跳跃表的原理以及实现

一、跳表的基本概念1、跳表的定义  跳表全称叫做跳跃表,简称跳表。跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。跳表在原有的有序链表上增加了多级索引,通过索引来实现快速查询。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。  跳表是一个随机化的数据结构,可以被看做二叉树的一个变种,它在性能上和红黑树、AVL树不相上下,但是跳表的原理非常简单,目前在Redis和LevelDB中都有用到。2、跳表的详解           说明:本文中的图片

2021-05-09 10:21:45 3137

原创 Spring常见面试题总结

1. 谈谈对Spring的理解Spring是一个轻量级的java开发框架,旨在提高开发人员的开发效率和系统的可维护性主要包括spring core、spring beans、spring context、spring jdbc、spring aop、spring Web、spring test等模块Spring的优点是简化开发,方便解耦;支持AOP编程和声明式事务;方便程序测试和集成优秀框架。缺点是Spring依赖反射,影响性能,学习入门时间较长。核心就是IOC和AOP,即控制反转和面向切面编程

2021-05-03 22:32:59 372

原创 JVM常见面试题汇总

1. JVM内存结构2. 谈谈对jvm的理解  Java虚拟机,它是虚构出来的一种计算机,是一种规范,通过在计算机中仿真模拟真实计算机功能实现的,其内部体系结构主要由类装载器,运行时数据区,执行引擎和本地方法接口组成。类装载器:将编译后的class文件加载到JVM内存中。加载class后为模板Class。数据区:就是常说的JVM内存执行引擎:在执行字节码,或者执行本地方法本地方法接口:这个方法调用的是底层操作系统和第三方C语言函数库方法3. 类加载器的种类启动类加载器(根加载器):用

2021-05-01 09:36:26 423 2

原创 JUC并发编程常见面试题目

1. 进程和线程,并发和并行进程:进程是计算机程序在一个数据集上的一次运行过程,也是资源分配和调度的基本单位线程:线城是进程中的一个执行单元。一个进程中至少有一个线程并行:指的是两个或多个事件在同一时刻发生,并发:指的是两个或多个事件在同一时间间隔内发生2. 守护线程和用户线程的区别用户 (User) 线程:运行在前台,执行具体的任务,如程序的主线程守护 (Daemon) 线程:运行在后台,为用户线程服务。一旦所有用户线程都结束运行,守护线程会随 JVM 一起结束工作,如垃圾回收线

2021-04-26 16:16:46 1685

原创 MySQL数据库常见面试题目

1. 数据库三大范式1NF:每个属性都不可再分;2NF:在1NF基础上,消除了非主键对于主键的部分函数依赖;3NF:在2NF基础上,消除了非主键对于主键的传递函数依赖;2. SQL约束的种类非空约束(NOT NULL): 用于控制字段的内容一定不能为空唯一约束(UNIQUE): 控件字段内容不能重复,一个表允许有多个唯一约束。主键约束(PRIMARY KEY): 也是用于控件字段内容不能重复且不能为空。外键约束(FOREIGN KEY): 外键约束是指用于在两个表之间建立关系,需

2021-04-25 18:40:54 327 3

原创 java手写一个阻塞队列

import java.util.LinkedList;import java.util.List;import java.util.concurrent.locks.Condition;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantLock;/** * @program: * @description: 手写一个阻塞队列 * @author: colorful *

2021-04-24 12:37:16 405

原创 java手写一个自旋锁

/*** 利用原子引用实现自旋锁*/public class spinLockTest{ AtomicReference<Thread> atomicReference = new AtomicReference<>(); //加锁 public void myLock(){ Thread thread = Thread.currentThread(); System.out.println(thread.getNam

2021-04-22 23:05:34 327 3

原创 java代码手写一个死锁

死锁:是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。public class deadLockTest { public static void main(String[] args) { dataSource da = new dataSource(); //开启线程A,先获取A锁,在获取B锁 new Thread(()->{ try { .

2021-04-22 22:48:36 574

原创 AQS实现的基本原理

AbstractQueuedSynchronizer 抽象队列同步器是;用来构建锁或者其它同步器组件的重量级基础框架及整个JUC体系的基石,通过内置的FIFO队列来完成资源获取线程的排队工作,并通过一个int类型变量表示持有锁的状态。...

2021-04-21 21:39:32 251 2

转载 Mybatis常见面试题集合

转载于:https://blog.csdn.net/a745233700/article/details/80977133

2021-04-20 15:30:41 90 1

原创 对HashMap按值和按键进行排序操作

HashMap本身是无序的,但是HashMap的排序却是一个比较常见的问题,我们可以借助List和LinkedHashMap,对List排序,再放到LinkedHashMap中。import java.util.*;class Student{ private String name; private int age; public Student(String name, int age) { this.name = name; this.a

2021-04-20 09:18:14 639

原创 java集合常见面试题

1. List,Set,Map三者的区别?List:一个有序(元素存入集合的顺序和取出的顺序一致)容器,元素可以重复,可以插入多个null元素,元素都有索引。常用的实现类有 ArrayList、LinkedList 和 VectorSet:一个无序(存入和取出顺序有可能不一致)容器,不可以存储重复元素,只允许存入一个null元素,必须保证元素唯一性。Set 接口常用实现类是 HashSet、LinkedHashSet 以及 TreeSetMap是一个键值对集合,存储键、值和之间的映射。 Key无序,

2021-04-19 11:57:04 841

原创 常见Java基础面试总结

1. final 在 Java 中有什么作用?修饰的类不可以被继承修饰的方法不可以被重写修饰的变量不可以被重新赋值。final修饰不可变的是变量的引用,而不是引用指向的内容,引用指向的内容是可以改变的2. 抽象类与接口的比较共同点:1)不能实例化 2)都位于顶端,需要继承或实现 3)都包含抽象方法不同点:3. 抽象类和普通类的比较抽象类可以包含抽象方法,普通类不能包含抽象方法抽象类不能被直接实例化,普通类可以直接实例化4. 抽象类不能用final修饰定义抽象类就是让子类继承

2021-04-13 23:07:11 330 6

原创 Spring通知类型与解决循环依赖(解释)

1.引入库代码如下(示例):import numpy as npimport pandas as pdimport matplotlib.pyplot as pltimport seaborn as snsimport warningswarnings.filterwarnings('ignore')import sslssl._create_default_https_context = ssl._create_unverified_context2.读入数据代码如下(示例):

2021-04-09 18:51:45 174

转载 Spring的依赖注入方式

Spring的依赖注入方式转载于https://blog.csdn.net/wu1317581750/article/details/89927352

2021-04-09 16:48:21 44

空空如也

空空如也

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

TA关注的人

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