自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(81)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java基础面经

Java基础面经,整理详细,助你进大厂

2022-10-12 15:39:14 736 1

原创 算法题小记

文章目录一、TOPK问题一、TOPK问题技巧,中等题就用优先队列,难题就用二分法优先队列:class Solution { public int[] topKFrequent(int[] nums, int k) { int[] result = new int[k]; HashMap<Integer, Integer> map = new HashMap<>(); for (int num : nums

2022-05-18 20:33:31 635

原创 docker安装elasticsearch

文章目录一、安装elasticsearch1、下载镜像文件2、创建搭载目录3、 创建实例4、错误分析5、查看运行成功的结果二、安装Kibana1、下载镜像文件2、安装Kibana容器一、安装elasticsearch1、下载镜像文件elasticsearch是用来存储和检索数据的docker pull elasticsearch:7.4.22、创建搭载目录mkdir -p /mydata/elasticsearch/configmkdir -p /mydata/elasticsearch/d

2022-05-18 19:05:13 691

原创 MySQL事务:多版本并发控制

文章目录一、什么是MVCC二、快照读与当前读1、快照读2、当前读三、事务隔离级别和聚簇索引隐藏字段1、隔离级别2、聚簇索引隐藏字段一、什么是MVCCMVCC (Multiversion Concurrency Control),多版本并发控制。顾名思义,MVCC 是通过数据行的多个版本管理来实现数据库的 并发控制 。这项技术使得在InnoDB的事务隔离级别下执行 一致性读 操作有了保证。换言之,就是为了查询一些正在被另一个事务更新的行,并且可以看到它们被更新之前的值,这样在做查询的时候就不用等待另一个

2022-05-10 23:54:14 318

原创 MySQL事务:二进制日志(binlog)

文章目录一、什么是MySQL的 binlog?二、binlog操作1、查看默认情况2、查看binlog一、什么是MySQL的 binlog?MySQL的 binlog 是记录所有数据库表结构变更(例如 CREATE、ALTER TABLE)以及表数据修改(INSERT、UPDATE、DELETE)的二进制日志。binlog 不会记录 SELECT 和 SHOW 这类操作,因为这类操作对数据本身并没有修改,但你可以通过查询通用日志来查看 MySQL 执行过的所有语句。MySQL binlog 以事件形式

2022-05-07 14:49:11 1715

原创 JUC工具类: CountDownLatch详解

文章目录一、CountDownLatch介绍二、CountDownLatch源码分析1、类的继承关系2、类的内部类3、类的属性4、类的构造函数5、核心函数 - await函数6、核心函数 - countDown函数三、CountDownLatch示例四、更深入理解(通过面试题理解)面试问题1、什么是CountDownLatch?2、CountDownLatch底层实现原理?3、CountDownLatch一次可以唤醒几个任务?4、多个 CountDownLatch有哪些主要方法?5、 CountDownLa

2022-05-06 10:35:27 473

原创 Java排序算法

文章目录快速排序快速排序 public int partion(int[] nums, int left, int right){ // pos充当哨兵,取最左边的 int pos = nums[left]; while(left<right){ // 保证右边的值都是大于等于哨兵的 while(left<right&&nums[right]>=pos){

2022-05-05 11:15:42 206

原创 Java中的位运算

文章目录一、Java中支持的位运算二、位运算规则三、逻辑运算1、与运算(&)(1)运算规则(2)运算流程(3)特殊用法2、或运算(|)(1)运算规则3、异或运算(^)(1)运算规则4、取反运算(~)(1)运算规则四、位移操作1、左移(<<)(1)运算规则(2)特殊用法2、右移(>>)(1)运算规则(2)特殊用法3、无符号右移(>>>)(1)运算规则一、Java中支持的位运算位与(&):二元运算符,两个为1时结果为1,否则为0位或(|):二元运

2022-05-04 19:58:23 1299

原创 Java求解N皇后问题

设计一种算法,打印 N 皇后在 N × N 棋盘上的各种摆法,其中每个皇后都不同行、不同列,也不在对角线上。这里的“对角线”指的是所有的对角线,不只是平分整个棋盘的那两条对角线。示例:输入:4输出:[[“.Q…”,“…Q”,“Q…”,“…Q.”],[“…Q.”,“Q…”,“…Q”,“.Q…”]]解释: 4 皇后问题存在如下两个不同的解法。[[“.Q…”, // 解法 1“…Q”,“Q…”,“…Q.”],[“…Q.”, // 解法 2“Q…”,“…Q”,“.Q…”]]cl

2022-05-04 09:57:19 853

原创 MySQL事务日志

文章目录一、事务日志介绍二、REDO LOG1、为什么需要REDO日志?2、REDO日志的好处、特点:3、REDO日志的组成4、REDO的整体流程5、redo log的刷盘策略6、redo log file三、UNDO LOG一、事务日志介绍事务有4种特性:原子性、一致性、隔离性和持久性事务的隔离性由 锁机制 实现。REDO LOG 称为 重做日志 ,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的持久性。UNDO LOG 称为 回滚日志 ,回滚行记录到某个特定版本,用来保证事务的原子性

2022-05-03 20:29:23 1328

原创 docker安装mysql

拉取mysql镜像docker pull mysql:5.7创建mysql容器(创建目录挂载的目录)docker run -p 3306:3306 --name mysql \-v /mydata/mysql/log:/var/log/mysql \-v /mydata/mysql/data:/var/lib/mysql \-v /mydata/mysql/conf:/etc/mysql \-e MYSQL_ROOT_PASSWORD=root \-d mysql:5.7参数说明:-

2022-05-02 15:55:22 1600

原创 Linux命令

文章目录一、系统目录结构二、文件基本属性1、查看文件2、文件基本属性3、更改文件属性一、系统目录结构登录系统后,在当前命令窗口下输入命令: ls / 你会看到如下图所示:树状目录结构:/binbin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。/boot这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。/devdev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 L

2022-04-29 19:57:20 634

转载 join,left join和right join的区别

left join、join、right join和inner join等等各种join的区别如下图所示1、准备工作首先,我们先来建两张表,第一张表命名为kemu,第二张表命名为score:2、left join顾名思义,就是“左连接”,表1左连接表2,以左为主,表示以表1为主,关联上表2的数据,查出来的结果显示左边的所有数据,然后右边显示的是和左边有交集部分的数据。如下:select *from kemuleft join score on kemu.id = score.

2022-04-28 15:17:19 243

原创 Java常见转换

文章目录1、String和int之间的转换2、String和char之间的转换List快速转为数组1、String和int之间的转换(1) String转为intString s = "12";int a = Integer.parseInt(s);(2)int转为Stringint a = 12;String s = String.valueOf(a);2、String和char之间的转换(1) char转为Stringchar c = 'a';String s =

2022-04-26 15:31:40 981

原创 JUC Collections:ConcurrentHashMap详解

文章目录一、为什么需要ConcurrentHashMap?二、ConcurrentHashMap - JDK1.71、数据结构2、初始化3、put过程分析4、初始化槽: ensureSegment5、获取写入锁: scanAndLockForPut6、扩容: rehash7、get 过程分析8、并发问题分析三、ConcurrentHashMap - JDK1.81、数据结构2、初始化3、put过程分析4、初始化槽: ensureSegment5、获取写入锁: scanAndLockForPut6、扩容: r

2022-04-23 11:01:24 437

原创 Netty:Java I/O模型

文章目录一、I/O模型介绍1、I/O模型简单理解2、I/O模型分类2.1、BIO2.2、NIO2.3、AIO2.4、三种I/O模型的特点及使用场景分析一、I/O模型介绍1、I/O模型简单理解I/O 模型简单的理解:就是用什么样的通道进行数据的发送和接收,很大程度上决定了程序通信的性能2、I/O模型分类Java 共支持 3 种网络编程模型/IO 模式:BIO、NIO、AIO2.1、BIOBIO(Blocking I/O): 同步阻塞I/O模型,服务器实现模式为一个连接一个线程,即客户端有连接请求

2022-04-22 15:26:01 1065

原创 Netty简介

文章目录一、Netty介绍二、Netty的结构关系三、Netty的应用场景1、互联网行业2、游戏行业3、大数据领域一、Netty介绍Netty 是由 JBOSS 提供的一个 Java 开源框架,现为 Github上的独立项目。Netty 是一个异步的、基于事件驱动 的网络应用框架,用以快速开发高性能、高可靠性的网络 IO 程序。Netty主要针对在TCP协议下,面向Clients端的高并发应用,或者Peer-to-Peer场景下的大量数据持续传输的应用。Netty本质是一个NIO框

2022-04-22 14:37:33 109

原创 JUC Lock:ReentrantReadWriteLock详解

文章目录一、什么是ReentrantReadWriteLock,它的作用是什么?二、ReentrantReadWriteLock源码分析1、类的继承关系2、类的内部类2.1、内部类-Sync类2.1.1、Sync类的继承关系2.1.2、Sync类的内部类2.1.3、Sync类的属性2.1.4、Sync类的构造函数2.2、内部类-Sync类核心函数分析2.2.1、sharedCount函数2.2.2、exclusiveCount函数2.2.3、tryRelease函数2.2.4、tryAcquire函数2.2

2022-04-21 14:47:45 257

原创 JUC Lock:ReenTranLock详解

文章目录一、什么是ReenTranLock?面试7、ReentrantLock和Synchronized的对比?一、什么是ReenTranLock?ReentrantLock是一个可重入的互斥锁,又被称为“独占锁”。ReentrantLock锁在同一个时间点只能被一个线程锁持有;可重入表示,ReentrantLock锁可以被同一个线程多次获取。ReentraantLock是通过一个FIFO的等待队列来管理获取该锁所有线程的。在“公平锁”的机制下,线程依次排队获取锁;而“非公平锁”在锁是可获取状态时

2022-04-21 09:26:43 419

原创 Spring介绍

文章目录一、Spring简介1、Spring是什么以及特性?2、Spring的组件二、Spring 控制反转(IOC)和依赖注入(DI)1、概念理解1.1、 什么是IOC1.2、什么是DI1.3、 IOC和DI的关系一、Spring简介1、Spring是什么以及特性?一句话概括:Spring是一个轻量级的 控制反转(IoC)和面向切面(AOP) 的容器(框架)。特性:非侵入式:基于Spring开发的应用中的对象可以不依赖于Spring的API控制反转:IOC——Inversion of Con

2022-04-19 12:10:52 434

原创 MySQL索引的数据结构

文章目录一、索引的简介1、索引的概念2、索引的优点3、索引的缺点二、索引的代价1、空间上的代价2、时间上的代价三、索引的数据结构四、索引的适用和不适用场景1、适用场景2、不适用场景一、索引的简介1、索引的概念MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。索引的本质:索引是数据结构。你可以简单理解为“排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据, 这样就可以在这些数据结构的基础上实现 高级查找算法2、索引的优点类似

2022-04-18 11:34:31 10416

原创 JUC Lock:锁核心类AQS详解

文章目录一、AQS简介1、AQS的核心思想2、AQS对资源的共享方式3、AQS底层使用了模板方法模式二、AQS的数据结构三、AQS源码分析1、AQS的继承关系2、AQS的内部类2.1、Node类2.2、CondionObject类3、AQS的属性4、AQS的构造方法5、AQS的核心方法51、acquire()方法5.2、release()方法四、AQS示例详解1、测试用例2、结果分析五、AQS总结六、面试问题1、什么是AQS? 为什么它是核心?2、AQS的核心思想是什么? 它是怎么实现的? 底层数据结构等3

2022-04-17 19:09:12 854

原创 MySQL逻辑架构剖析

文章目录一、MySQL的整体逻辑架构二、第一层:连接层三、第二层:服务层1、SQL Interface: SQL接口2、Parser: 解析器3、Optimizer: 查询优化器4、Caches & Buffers: 查询缓存组件四、第三层:引擎层MySQL高级整体架构一、MySQL的整体逻辑架构以查询语句为例二、第一层:连接层系统(客户端)访问 MySQL 服务器前,做的第一件事就是建立 TCP 连接。经过三次握手建立连接成功后, MySQL 服务器对TCP 传输过来的账号密码做身

2022-04-16 20:51:21 643

原创 MySQL高级:整体目录

文章目录一、MySQL存储引擎介绍二、MySQL逻辑架构1、逻辑架构剖析2、SQL语句的执行过程三、MySQL索引1、索引的数据结构2、索引的创建与设计原则3、索引优化和查询优化四、MySQL事务1、MySQL事务基本知识2、MySQL事务日志3、MySQL锁4、MySQL多版本并发控制一、MySQL存储引擎介绍MySQL存储引擎介绍二、MySQL逻辑架构1、逻辑架构剖析2、SQL语句的执行过程三、MySQL索引1、索引的数据结构2、索引的创建与设计原则3、索引优化和查询优化四、MySQ

2022-04-16 19:45:36 724

原创 MYSQL:存储引擎介绍

文章目录一、查看MySQL引擎二、InnoDB数据引擎三、MyISAM数据引擎四、InnoDB和MyISAM的比较一、查看MySQL引擎show engines;结果:可以看到MySQL是支持大部分数据引擎的二、InnoDB数据引擎InnoDB 引擎是一个具备外键支持功能的事务存储引擎,是MySQL的默认数据引擎关于InnoDB的介绍如下:InnoDB是MySQL的 默认事务型引擎 ,它被设计用来处理大量的短期(short-lived)事务。可以确保事务的完整提交(Commit)和回

2022-04-16 19:08:45 972

原创 JUC Lock:LockSupport详解

文章目录一、LockSupport概念二、LockSupport核心源码分析1、构造函数2、核心函数分析2.1、 park函数2.2 、unpark函数三、LockSupport示例说明(通过对比说明优点)1、使用wait/notify实现线程同步2、使用park/unpark实现线程同步四、面试问题1、为什么LockSupport也是核心基础类?2、写出分别通过wait/notify和LockSupport的park/unpark实现同步?3、LockSupport.park()会释放锁资源吗? 那么Co

2022-04-16 15:36:02 980 1

原创 回溯组合排列总结

文章目录一、组合一、组合1、组合总数①给定一个无重复元素的数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的数字可以无限制重复被选取。说明:所有数字(包括 target)都是正整数。解集不能包含重复的组合。本题没有数量要求,可以无限重复,但是有总和的限制,所以间接的也是有个数的限制。回溯方法public void backtrace(int[] candidates, in

2022-04-15 17:20:30 100

原创 JUC Atomic:原子类解析

文章目录一、JUC 包中的原子类是哪 4 类?二、CAS详解1、CAS的概念2、CAS的好处3、CAS的问题3.1 ABA问题3.2 循环时间长开销大3.3 只能保证一个共享变量的原子操作一、JUC 包中的原子类是哪 4 类?基本类型使用原子的方式更新基本类型AtomicInteger:整形原子类AtomicLong:长整型原子类AtomicBoolean:布尔型原子类数组类型使用原子的方式更新数组里的某个元素AtomicIntegerArray:整形数组原子类Atomic

2022-04-15 13:13:03 702

原创 回溯算法理论基础

文章目录一、回朔法的本质二、回朔法能解决的问题三、回溯法的模板一、回朔法的本质回溯是递归的副产品,只要有递归就会有回溯。回溯的本质是穷举,穷举所有可能,然后选出我们想要的答案,如果想让回溯法高效一些,可以加一些剪枝的操作,但也改不了回溯法就是穷举的本质。那么既然回溯法并不高效为什么还要用它呢?因为没得选,一些问题能暴力搜出来就不错了,撑死了再剪枝一下,还没有更高效的解法深入理解回溯回溯法解决的问题都可以抽象为树形结构,是的,我指的是所有回溯法的问题都可以抽象为树形结构!因为回溯法解决的都是在集

2022-04-14 19:48:22 269

原创 JUC整体结构

文章目录一、JUC整体架构二、Lock框架三、Atomic:原子类四、Tools工具类五、Collections并发集合六、Executors线程池一、JUC整体架构JUC全名为java.util.concurrent ,与JUC有关的包共有三个,分别为java.util.concurrent 、java.util.concurrent.atomic 和java.util.concurrent.locks ,其中java.util.concurrent 又可以分为三大类,分别为工具类,集合与线程池,

2022-04-14 13:12:13 872 1

原创 二叉树的算法

文章目录1、判断二叉树是否对称1、判断二叉树是否对称LeetCode链接给你一个二叉树的根节点 root , 检查它是否轴对称。这题的重点在于怎么判断?我们判断的是两颗子树,即两个子树的外侧和外侧是否相等,里侧和里侧是否相等public boolean judge(TreeNode left, TreeNode right){ if(left==null&&right==null){ return true;

2022-04-11 13:20:19 556

原创 docker安装redis并搭建集群

一、docker安装redis1、拉取redis镜像文件docker pull redis查看镜像docker images2、在linux主机创建等会需要挂载的目录和文件创建data目录(存放数据文件,包括用于持久化的dump.rdb)mkdir -p /mydata/redis/data创建配置文件mkdir -p /mydata/redis/conftouch /mydata/redis/conf/redis.conf3、创建redis容器并进行端口映

2022-04-09 19:12:47 12946 10

原创 Redis配置文件redis.conf内容完整版

为什么需要这个了?因为在使用docker安装redis的时候,我们需要进行文件和目录的挂载,这就包括redis.conf配置文件,因此我们可以在linux主机下的redis.conf里面填上内容,当然不填也可以正常启动运行redis容器,但是不利于我们对其的修改redis.conf内容具体的解析可见:https://blog.csdn.net/qq_38327769/article/details/123984695redis.conf内容如下:# Redis configuration fil.

2022-04-09 16:48:58 5848

原创 二叉树遍历

文章目录一、二叉树的前序遍历1、递归遍历2、非递归遍历二、二叉树的中序遍历1、递归遍历2、非递归遍历三、二叉树的后序遍历1、递归遍历2、非递归遍历四、二叉树的层序遍历一、二叉树的前序遍历1、递归遍历递归遍历的三个要素确定递归函数的参数和返回值: 确定哪些参数是递归的过程中需要处理的,那么就在递归函数里加上这个参数, 并且还要明确每次递归的返回值是什么进而确定递归函数的返回类型。确定终止条件: 写完了递归算法, 运行的时候,经常会遇到栈溢出的错误,就是没写终止条件或者终止条件写的不对,操作系统

2022-04-08 09:51:46 690

原创 Redis

文章目录一:NoSQL介绍二、Redis介绍一:NoSQL介绍1、概念NoSQL最常见的解释是“non-relational”, “Not Only SQL”也被很多人接受。NoSQL仅仅是一个概念,泛指非关系型的数据库,区别于关系数据库,它们不保证关系数据的ACID特性。NoSQL是一项全新的数据库革命性运动,其拥护者们提倡运用非关系型的数据存储,相对于铺天盖地的关系型数据库运用,这一概念无疑是一种全新的思维的注入。2、特点易扩展NoSQL数据库种类繁多,但是一个共同的特点都是去掉关

2022-04-06 11:55:52 2474

原创 RabbitMQ

文章目录Rabbit核心组成部分1、核心概念2、RabbitMQ的运行流程3、RabbitMQ支持消息的模式代码讲解各种模式1、Java整合RabbitMQ另外再看一下Work模式,work模式有两种,第一种是轮询模式,第二种是公平模式==轮询模式==Rabbit核心组成部分1、核心概念Server:又称Broker ,接受客户端的连接,实现AMQP实体服务。 安装rabbitmq-server。Connection:连接,应用程序与Broker的网络连接 TCP/IP/ 三次握手和四次挥手C

2022-04-02 21:03:42 2156

原创 Java中Stream流计算

我们首先看一下JDK文档中对Stream的介绍那么Stream到底是什么了?Stream是数据渠道,用于操作数据源(集合、数组等)所生成的元素序列。“集合讲的是数据,流讲的是计算!”Stream 的特点Stream 自己不会存储元素。Stream 不会改变源对象,相反,他们会返回一个持有结果的新Stream。Stream 操作是延迟执行的。这意味着他们会等到需要结果的时候才执行。Stream数据流的基本操作代码测试在这之前你有必要先了解四大函数式接口,因为Stre

2022-03-24 15:59:47 1219

原创 Java 内置核心四大函数式接口

在java.util.function包内 , 有Java 内置核心四大函数式接口,可以使用lambda表达式1、函数型接口(有一个输入,有一个输出)public class Demo1 { public static void main(String[] args) { // Function函数式接口,有一个参数输入,一个输出// Function<String, String> function = new Function<Strin

2022-03-23 21:00:37 1285

原创 Java线程池三大方法,七大参数,四种拒绝策略

1、三大方法使用Executors 工具类来创建线程池的三大方法方法一:ExecutorService threadPool = Executors.newSingleThreadExecutor();只有单个线程方法二:ExecutorService threadPool = Executors.newFixedThreadPool(5); 创建一个固定的线程池大小方法三:ExecutorService threadPool = Executors.newCachedThreadPool();

2022-03-23 18:16:50 1325

原创 Java中HashSet和HashMap用法

哈希1、HashSethashset是什么?HashSet 基于 HashMap 来实现的,是一个不允许有重复元素的集合。HashSet 允许有 null 值。HashSet 是无序的,即不会记录插入的顺序。HashSet 不是线程安全的, 如果多个线程尝试同时修改 HashSet,则最终结果是不确定的。 您必须在多线程访问时显式同步对 HashSet 的并发访问。HashSet 实现了 Set 接口。定义一个hashsetHashSet<对象> sites = new

2022-03-20 14:09:46 1385

经典神经网络论文.zip

卷积神经网络的经典论文,包括LeNet、AlexNet、ResNet、YOLO、R-CNN、VGG16,作为引领卷积神经网络发展的论文,无论是深度学习小白,还是已经进入深度学习领域但还没有读过这些论文,都可以尝试着看看这些论文,从而体会前人的思想。

2020-07-09

空空如也

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

TA关注的人

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