自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 生产者消费者模式

public class ProducerAndConsumer { private final int max = 10; private Queue<Integer> queue = new LinkedList<>(); class Product extends Thread { @Override public void run() { producter(); }

2020-06-10 00:22:46 224

原创 I/O 模型

I/O 模型操作系统内核是指大多数操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。一个输入操作通常包括两个阶段:等待数据准备好从内核向进程复制数据对于一个套接字上的输入操作,第一步通常涉及等待数据从网络中到达。当所等待数据到达时,它被复制到内核中的某个缓冲区。第二步就是把数据从内核缓冲区复制到应用进程缓冲区。Unix 有五种 I/O 模型:阻塞式 I/O非阻塞式 I/OI/O 复用(select 和 poll)信号驱动式 I/O(SIGIO)

2020-06-05 21:32:11 266

原创 代理模式

什么是代理代理,字面意思,帮忙做,是一种增强。代理的名称代理对象:增强后的对象目标对象:被增强的对象静态代理静态代理在使用时,需要定义接口或父类,被代理对象与代理对象一起实现相同的接口或者是继承相同的父类继承(class类)目标对象public class UserDaoImpl { public void login(String name){ System.out.println(name+" login success"); }}代理对象pu

2020-06-04 00:50:27 228

原创 工厂模式

工厂方法模式(通过继承)在变化里面找出稳定的部分,才有引入设计模式的价值本质把产品具体的实例化过程给推迟到子类即根据不同的参数 构建不同的实例化对象开闭原则只加入新的逻辑 没有修改旧的原则单一职责原则一个产品负责专门做这个产品做的事应用场景当你不知道该使用对象的确切类型的时候当你希望为库或者框架提供扩展其内部组件的方法时主要优点将具体产品和创建者解耦符合单一职责原则符合开闭原则实例public class FactoryMethod { public st

2020-06-03 11:17:51 175

原创 单例设计模式

模式定义保证一个类只有一个实例,并且提供一个全局访问点场景重量级的对象,不需要多个实例,如线程池,数据库连接池。结构提供了一个私有的属性提供了一个私有的构造函数提供了一个全局访问点具体实现懒汉模式延迟加载,只有在真正使用的时候,才开始实例化。类似于懒加载线程安全问题double check 加锁优化编译器,CPU有可能对指令进行重排序,导致使用到尚未初始化的实例,可以通过添加volatile关键字进行修饰,对于volatile修饰的字段,可以防止指令重排例子单线程publ

2020-05-29 23:54:40 213 1

原创 个人记录的零碎知识点

1、PUT和POSTPUT和POS都有更改指定URI的语义.但PUT被定义为idempotent的方法,POST则不是.idempotent的方法:如果一个方法重复执行多次,产生的效果是一样的,那就是idempotent的。也就是说:PUT请求:如果两个请求相同,后一个请求会把第一个请求覆盖掉。(所以PUT用来改资源)Post请求:后一个请求不会把第一个请求覆盖掉。(所以Post用来增资源)2、get和post1、GET参数通过URL传递,POST放在Request body中。2、GET请求

2020-05-29 18:13:34 219

原创 链表中倒数第k个节点

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/lian-biao-zhong-dao-shu-di-kge-jie-dian-lcof示例:给定一个链表: 1->2->3->4->5, 和

2020-05-26 10:29:57 172

原创 二叉树中和为某一值的路径

输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。示例:给定如下二叉树,以及目标和 sum = 22, 5 / \ 4 8 / / \ 11 13 4 / \ / \ 7 2 5 1来源:力扣(LeetCode)链接:https://leetcode

2020-05-25 16:11:39 151

原创 数组中的第K个最大元素

在未排序的数组中找到第 k 个最大的元素。请注意,你需要找的是数组排序后的第 k 个最大的元素,而不是第 k 个不同的元素。示例 1:输入: [3,2,1,5,6,4] 和 k = 2输出: 5示例 2:输入: [3,2,3,1,2,4,5,5,6] 和 k = 4输出: 4说明:你可以假设 k 总是有效的,且 1 ≤ k ≤ 数组的长度。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/kth-largest-element-in-a

2020-05-25 15:36:36 121

原创 操作系统相关知识

什么是操作系统操作系统是运行在计算机上最重要的一种软件,它管理计算机的资源和进程以及所有的硬件和软件。它为计算机硬件和软件提供了一种中间层。通常情况下,计算机上会运行着许多应用程序,它们都需要对内存和CPU进行交互,操作系统的目的就是为了保证这些访问和交互能够准确无误的进行。操作系统的主要目的是什么管理计算机资源提供一种图形界面,它提供了用户和计算机之间的桥梁为其他软件提供服务,操作系统与软件进行交互,以便为其分配进行所需的任何必要资源什么是线程,线程和进程的区别进程是正在运行的程序的实例,

2020-05-23 11:37:46 231

原创 ReentrantLock底层相关原理笔记

synchronized 重量级的锁 会去调用操作系统的函数(1.6) JVM级别(1.7)阻塞操作 就是 让出CPUwait(完成线程通信)和notifyall关键字一起使用轻量级锁:底层调用Java代码(jdk)重量级锁:底层调用os的函数(1.6之前)整个AQS队列中的队头 Thread永远为null(空)持有锁的线程不在这个队列当中。交替执行:速度快 没有堵塞 没有队列的产生 jdk级别单个线程–交替执行它其实和队列无关–jdk级别解决同步问题ReentrantLock 和

2020-05-18 14:44:06 683

原创 560. 和为K的子数组

给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。说明 :数组的长度为 [1, 20,000]。数组中元素的范围是 [-1000, 1000] ,且整数 k 的范围是 [-1e7, 1e7]。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/subarray-sum-equals-kcl

2020-05-15 23:20:11 140

原创 JMM与volatile关键字

Java线程内存模型跟CPU缓存模型类似,是基于CPU缓存模型来建立的,Java的线程内存模型是标准化的,屏蔽了底层不同计算机的区别。JMM数据原子操作read(读取):从主内存读取数据load(载入):将主内存读取到的数据写入工作内存中user(使用):从工作内存读取数据来计算assign(赋值):将计算好的值重新赋值到工作内存中store(存储):将工作内存数据写入主内存write(写入):将store过去的变量值赋值给主内存中的变量lock(锁定):将主内存变量加锁,标识为线程独占

2020-05-15 21:40:28 195

原创 1091. 二进制矩阵中的最短路径

在一个 N × N 的方形网格中,每个单元格有两种状态:空(0)或者阻塞(1)。一条从左上角到右下角、长度为 k 的畅通路径,由满足下述条件的单元格 C_1, C_2, …, C_k 组成:相邻单元格 C_i 和 C_{i+1} 在八个方向之一上连通(此时,C_i 和 C_{i+1} 不同且共享边或角)C_1 位于 (0, 0)(即,值为 grid[0][0])C_k 位于 (N-1, N-1)(即,值为 grid[N-1][N-1])如果 C_i 位于 (r, c),则 grid[r][c] 为

2020-05-10 15:02:49 163

原创 有效的数独

判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。上图是一个部分填充的有效的数独。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/valid-sudoku示例 1:输入:[ ["5","3",".",".",

2020-05-09 15:36:42 117

原创 N皇后

n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击。上图为 8 皇后问题的一种解法。给定一个整数 n,返回 n 皇后不同的解决方案的数量。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/n-queens-ii示例:输入: 4输出: 2解释: 4 皇后问题存在如下两个不同的解法。[ [".Q..", // 解法 1 "...Q", "Q...", "..Q."], ["..

2020-05-09 15:34:48 121

原创 矩阵中的路径

静态变量递归的时候不回溯请设计一个函数,用来判断在一个矩阵中是否存在一条包含某字符串所有字符的路径。路径可以从矩阵中的任意一格开始,每一步可以在矩阵中向左、右、上、下移动一格。如果一条路径经过了矩阵的某一格,那么该路径不能再次进入该格子。例如,在下面的3×4的矩阵中包含一条字符串“bfce”的路径(路径中的字母用加粗标出)。[[“a”,“b”,“c”,“e”],[“s”,“f”,“c”,“s”],[“a”,“d”,“e”,“e”]]但矩阵中不包含字符串“abfb”的路径,因为字符串的第一个字符b占

2020-05-08 22:47:32 112

转载 200. 岛屿数量

给你一个由 ‘1’(陆地)和 ‘0’(水)组成的的二维网格,请你计算网格中岛屿的数量。岛屿总是被水包围,并且每座岛屿只能由水平方向或竖直方向上相邻的陆地连接形成。此外,你可以假设该网格的四条边均被水包围。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/number-of-islands示例 1:输入:111101101011...

2020-05-08 16:50:31 155

原创 synchronized底层原理解析

Synchronizedpublic class TestSync { static L l=new L(); static ReentrantLock reentrantLock=new ReentrantLock(); public static void main(String[] args) { lockTest(); } pub...

2020-05-06 21:06:54 155

原创 spring部分源码分析--------bean

bean实例化过程的大概流程假设 有个x类 通过javac编译成一个class文件 然后 通过classloader加载到jvm虚拟机中运行 main 方法的时候 会初始 spring环境和上下文 在上下文中 解析 主类发现 这个类需要扫描 某些包下的所有类 比如说 扫描到x 扫描到之后 spring 不是立马把它new出来它 扫描到之后 通过循环 用 BeanDefintio...

2020-05-05 11:56:04 133

原创 MySQL常用语句

DDL操作数据库 和 表操作数据库创建:create database 数据库名称;* 删除:drop database 数据库名称;* 修改:ALTER DATABASE 数据库名 CHARACTER SET 要修改的字符集名称* 查询:show databases; – 查询所有数据库的名称show create database 数据库名称; – 查询创建数据库语句语法:创...

2020-05-04 14:00:21 226

原创 JVM底层原理与性能调优

JVM底层栈又叫线程栈 是用来放局部变量的 以下面的这个类为例math就是个局部变量 a b c也是 放在栈内存空间中public class Test { public static final int a=100; public static User user=new User(); public int math(){ int a...

2020-05-01 01:11:59 462

原创 Spring和Mybatis主流框架的部分源码分析

Mybatis的简单查询首先 我们按照官方文档 新建一个查询配置数据源@SpringBootApplication@MapperScan("com.springmybatisexample.demo.Dao")public class test implements ApplicationRunner { @Autowired UserService userServic...

2020-04-29 23:22:11 336

原创 替换空格

请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。一个空格要替换成三个字符(%20),所以当遍历到一个空格时,需要在尾部填充两个任意字符 public static String replaceSpace(StringBuffer str) { int i = st...

2020-04-28 17:56:08 80

原创 数组中的重复数字

在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。public class Solution { // Parameters: // numbers: ...

2020-04-28 17:02:01 108

原创 二维数组中的查找

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。public class Solution { public boolean Find(int target, int[][] array) { if (array == null ||...

2020-04-28 17:00:51 80

原创 合并K个排序链表

合并 k 个排序链表,返回合并后的排序链表。请分析和描述算法的复杂度。示例:输入:[1->4->5,1->3->4,2->6]输出: 1->1->2->3->4->4->5->6来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/merge-k-sorted...

2020-04-27 00:25:28 89

原创 用栈实现队列

使用栈实现队列的下列操作:push(x) – 将一个元素放入队列的尾部。pop() – 从队列首部移除元素。peek() – 返回队列首部的元素。empty() – 返回队列是否为空。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); ...

2020-04-26 22:47:31 89

原创 无重复字符的最长子串

给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是 “wke”,所...

2020-04-23 22:44:10 103

原创 两数相加

给出两个 非空 的链表用来表示两个非负的整数。其中,它们各自的位数是按照 逆序 的方式存储的,并且它们的每个节点只能存储 一位 数字。如果,我们将这两个数相加起来,则会返回一个新的链表来表示它们的和。您可以假设除了数字 0 之外,这两个数都不会以 0 开头。示例:输入:(2 -> 4 -> 3) + (5 -> 6 -> 4)输出:7 -> 0 -> ...

2020-04-23 20:15:06 91

原创 硬币

硬币。给定数量不限的硬币,币值为25分、10分、5分和1分,编写代码计算n分有几种表示法。(结果可能会很大,你需要将结果模上1000000007)示例1:输入: n = 5输出:2解释: 有两种方式可以凑成总金额:5=55=1+1+1+1+1示例2:输入: n = 10输出:4解释: 有四种方式可以凑成总金额:10=1010=5+510=5+1+1+1+1+110=1+...

2020-04-23 17:57:44 188

原创 初级排序与高级排序

排序算法1.比较类排序通过比较来决定元素间的相对次序,由于其时间复杂度不能突破O(nlogn),因此也称为非线性时间比较类排序2.非比较类排序(一般用于整型相关的数据类型)不通过比较来决定元素间的相对次序,它可以突破基于比较排序的时间下界,以线性时间运行,因此也称为线性时间非比较类排序。初级排序(O(n^2))1.选择排序每次找最小值,然后放到待排序数组的起始位置2.插入排序从前...

2020-04-19 15:23:59 462

原创 HTTPS 详述

HTTPS是什么HTTPS(HyperText Transfer Protocol Secure)超文本传输安全协议,数据通信仍然是HTTP,但利用SSL/TLS加密数据包。工作流程用户在浏览器发起HTTPS请求(如 https://www.mogu.com/),默认使用服务端的443端口进行连接;HTTPS需要使用一套CA数字证书,证书内会附带一个公钥Pub,而与之对应的私钥Priva...

2020-04-18 16:42:33 1956

转载 B+树详述

B+树的特性B+树和B树一样都是多路平衡树,也叫多叉树。两者的性质也基本一致。B+树大部分特性都和B树一样,唯一不同的只有以下几点:所有的数据都存储在叶子节点,中间节点不存放数据中间节点的元素数量和子树数量一致,而B树子树数量比元素数量多1叶子节点是一个链表,可以通过指针顺序查找从上图我们可以看到,所有出现在中间节点的元素都能在叶子节点当中找到,这对应了刚才说的所有数据都存放在叶...

2020-04-18 16:33:04 872

转载 B树详解

B树B树,一般都被叫做B-树。定义B树中的每个节点的元素和子树数量是有限的,除了根节点外,所有节点最多拥有M-1个元素,所有非叶子非根节点最多拥有M个子树,即为M阶树。根节点至少拥有两个子树,除了根节点之后的非叶子节点拥有K个子树以及K-1个元素((M+1)/2<K<M),元素按照递增或递减顺序排列所有叶子节点属于同一层B树的查找因为B树当中一个节点对应的K个子树和它...

2020-04-18 15:17:15 4031

原创 322. 零钱兑换

给定不同面额的硬币 coins 和一个总金额 amount。编写一个函数来计算可以凑成总金额所需的最少的硬币个数。如果没有任何一种硬币组合能组成总金额,返回 -1。示例 1:输入: coins = [1, 2, 5], amount = 11输出: 3解释: 11 = 5 + 5 + 1示例 2:输入: coins = [2], amount = 3输出: -1来源:力扣(Leet...

2020-04-17 17:47:46 189

原创 198. 打家劫舍

你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你在不触动警报装置的情况下,能够偷窃到的最高金额。示例 1:输入: [1,2,3,1]输出: 4解释: 偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号...

2020-04-17 17:17:00 94

原创 53. 最大子序和

给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。示例:输入: [-2,1,-3,4,-1,2,1,-5,4],输出: 6解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/maximum-subarray解法神奇:cla...

2020-04-17 15:05:36 79

原创 1143. 最长公共子序列

给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没...

2020-04-17 01:07:18 137

原创 120. 三角形最小路径和

给定一个三角形,找出自顶向下的最小路径和。每一步只能移动到下一行中相邻的结点上。例如,给定三角形:[[2],[3,4],[6,5,7],[4,1,8,3]]自顶向下的最小路径和为 11(即,2 + 3 + 5 + 1 = 11)。来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/triangleclass Solution ...

2020-04-17 01:01:22 89

空空如也

空空如也

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

TA关注的人

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