- 博客(55)
- 收藏
- 关注
原创 word前两页不设置页码,从第三页开始设置页码(word页码设置)
word页码设置,从第三页开始设置页码,从第二页,第四页,第n页设置页码都是一个道理。
2022-05-06 13:19:46
21068
转载 sleep和wait的区别
sleep()是使线程暂停执行一段时间的方法。wait()也是一种使线程暂停执行的方法。例如,当线程执行wait()方法时候,会释放当前的锁,然后让出CPU,进入等待状态。并且可以调用notify()方法或者notifyAll()方法通知正在等待的其他线程。notify()方法仅唤醒一个线程(等待队列中的第一个线程)并允许他去获得锁。notifyAll()方法唤醒所有等待这个对象的线程并允许他们去竞争获得锁。具体区别如下:原理不同。sleep()方法是Thread类的静态方法,是线程用来控制自身流程的
2021-06-28 17:12:33
299
原创 Java中三种IO模式Bio,Nio,Aio 以及 Tomcat中的 Bio, Nio,Apr模式
概述:由于项目需要,来来回回看了几篇有关的博客,这里就简要做一下总结分析:java支持的三种io模式中,分为三种,Bio,Nio,Aio,其中Aio也叫Nio2. Nio是jdk1.4及以后支持的,Aio是jdk7及以后支持的。Tomacat服务器中也有三种模式,分别为Bio, Nio,Apr模式。和上述的io模式有些类似。先来整体认识下同步阻塞,同步非阻塞,异步阻塞的概念。同步阻塞IO:在此种方式下,用户进程在发起一个IO操作以后,必须等待IO操作的完成,只有当真正完成了IO操作以后,用户进
2021-06-27 11:11:32
2049
转载 threadLocal详解,使用场景,内存泄露
一、threadlocal基本介绍作用ThreadLocal 的作用是:提供线程内的局部变量,不同的线程之间不会相互干扰,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或组件之间一些公共变量传递的复杂度。总结:线程并发: 在多线程并发的场景下传递数据: 我们可以通过ThreadLocal在同一线程,不同组件中传递公共变量线程隔离: 每个线程的变量都是独立的,不会互相影响常用方法:ThreadLocal类与synchronized关键字 虽然ThreadLocal模式与s
2021-06-20 12:27:40
643
原创 原码,反码,补码,上溢,下溢
具体的原码,反码,补码我就不详细介绍了,懒得码字~这个知乎上的大佬我觉得已经解释到极限了,写的很好,链接如下:https://zhuanlan.zhihu.com/p/91967268在具体的上下溢过程中,我看了这两个博客,感觉也还可以:https://blog.youkuaiyun.com/lwgkzl/article/details/78678211https://blog.youkuaiyun.com/longintchar/article/details/77870955接下来是自我总结的部分:首先看图有两个
2021-04-11 21:48:29
788
转载 并发中的各种锁
概念多线程访问共享资源的时候,避免不了资源竞争而导致数据错乱的问题,所以我们通常为了解决这一问题,都会在访问共享资源之前加锁。最常用的就是互斥锁,当然还有很多种不同的锁,比如自旋锁、读写锁、乐观锁等,不同种类的锁自然适用于不同的场景。首先介绍下在锁里面常用的LOCK锁,synchronized关键字。对于使用Synchronized锁,需要注意几点:可以使用关键字Synchronized来锁方法,这就是同步方法,也可以用来锁代码块。同步方法默认使用this对象(也就是方法的调用者)或者当前类做
2021-04-01 19:39:59
636
原创 数据库MySQL的各种锁以及数据库索引
以下这几个链接总结的不错,我先存着留个记录,以后有时间再总结深入理解数据库行锁与表锁细谈数据库表锁和行锁数据库索引部分,我看了看一个B站视频链接,也还没总结~B站数据库索引...
2021-03-27 21:32:33
115
原创 ThreadLocal场景分析及原理分析
ThreadLocal其实是与线程绑定的一个变量。ThreadLocal和Synchonized都用于解决多线程并发访问。但是ThreadLocal与synchronized有本质的区别。Synchronized用于线程间的数据共享,而ThreadLocal则用于线程间的数据隔离。Synchronized是利用锁的机制,使变量或代码块在某一时该只能被一个线程访问。而ThreadLocal为每一个线程都提供了变量的副本,使得每个线程在某一时间访问到的并不是同一个对象,这样就隔离了多个线程对数据的数据共享。而S
2021-03-27 21:23:06
111
原创 SpringBoot项目整理
项目介绍:用SpringBoot实现一个员工管理系统一、准备工作1. 准备前端页面素材1.1 这部分素材来源于BootStrap网站https://getbootstrap.com/docs/4.0/examples/1.2 创建一个SpringBoot项目1.3
2021-03-24 12:23:45
279
原创 SpringBoot整合JDBC, Mybatis框架
一、SpringBoot整合JDBC1. 创建SpringBoot项目,添加依赖,驱动等配置:<!--jdbc--><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jdbc</artifactId></dependency><!--mysql驱动--><de
2021-03-24 11:17:38
329
原创 SpringMVC扩展配置踏坑
最近在做一个springboot的小项目,需要对SpringMVC进行扩展配置,首先在Controller里面进行了测试,发现怎么都是对的,这里设置端口号为8088,通过 lohost:8088:/ 或者 local:8088/index.html 或者 localhost:8088/a 都是可以正常访问到首页的。@Controllerpublic class HelloController { @RequestMapping({"/","/index.html","a"}) publ
2021-03-22 16:38:30
204
原创 自定义SpringBoot的starter,以及如何导入jar包
一、介绍SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入springboot 为我提供的这些场景启动器,我们再进行少量的配置就能使用相应的功能。即使是这样,springboot也不能囊括我们所有的使用场景,往往我们需要自定义starter,来简化我们对springboot的使用。启动器starter只是用来做依赖管理,需要专门写一个类似spring-boot-autoconfigure的配置模块,用的时候只需要引入启动器starter,就可以使
2021-03-22 10:23:08
3315
原创 SpringBoot理解
概念SpringBoot就是一个javaweb的开发框架,简化开发,约定大于配置,能迅速的开发web应用。这就是Java企业级应用->J2EE->spring->springboot的过程。随着 Spring 不断的发展,违背了最初的理念,人称配置地狱。SpringBoot 正是在这样的一个背景下被抽象出来的开发框架,为了让大家更容易的使用 Spring 、更容易的集成各种常用的中间件、开源软件;SpringBoot 基于 Spring 开发,SpirngBoot 本身并不提供 S
2021-03-21 20:08:20
514
转载 SpringBoot自动配置原理
分析自动配置原理我们以HttpEncodingAutoConfiguration(Http编码自动配置)为例解释自动配置原理;//表示这是一个配置类,和以前编写的配置文件一样,也可以给容器中添加组件;@Configuration //启动指定类的ConfigurationProperties功能; //进入这个HttpProperties查看,将配置文件中对应的值和HttpProperties绑定起来; //并把HttpProperties加入到ioc容器中@EnableConfigu
2021-03-21 19:49:09
88
原创 CAS理解
CAS : 比较当前工作内存中的值和主内存中的值,如果这个值是期望的,那么则执行操作!如果不是就一直循环!缺点:1、 循环会耗时2、一次性只能保证一个共享变量的原子性3、ABA问题package com.kuang.cas;import java.util.concurrent.atomic.AtomicInteger;public class CASDemo { // CAS compareAndSet : 比较并交换! public static void main(Str
2021-03-11 11:18:06
157
原创 JMM中的指令重排,Volatile关键字(内存屏障)
JMM的概念Java内存模型,不存在的东西,概念!约定!关于JMM的一些同步的约定:1、线程解锁前,必须把共享变量立刻刷回主存。2、线程加锁前,必须读取主存中的最新值到工作内存中!3、加锁和解锁是同一把锁线程、工作内存与主存之间的关系内存交互操作有8种,虚拟机实现必须保证每一个操作都是原子的,不可在分的(对于double和long类型的变量来说,load、store、read和write操作在某些平台上允许例外)lock (锁定):作用于主内存的变量,把一个变量标识为线程独占状态un
2021-03-11 09:53:38
332
原创 线程池详解
线程池优势:降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))。管理线程线程池需要掌握的知识点:三大方法、7大参数、4种拒绝策略1. 三大方法:package com.kuang.poo
2021-03-10 20:47:19
123
原创 常见设计模式
设计模式概念:设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、以及解决问题的思考方式。 设计模免去我们自己再思考和摸索。就像是经典的棋谱,不同的棋局,我们用不同的棋谱。 ”套路”。下面将介绍几种常见的设计模式:单例模式(饿汉,懒汉)、生产者与消费者模式(sychronized,lock+JUC)。单例模式概念所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法。如果我们要让类在一个虚拟机中只能产生一个
2021-03-09 11:37:05
152
原创 java 变量,以及存放位置等
概念局部变量:在方法内定义的变量称为“局部变量”或“临时变量”,方法结束后局shu部变量占用的内存将容被释放。成员变量:在类体的变量部分中定义的变量,也称为字段。全局变量:全局变量,又称“外部变量”,它不是属于哪个方法,作用域从定义的地址开始到源文件结束。作用域局部变量和成员变量主要是他们作用域的区别:成员变量个是类内部;局部变量是定义其的方法体内部(或者方法体内部的某一程序块内——大括号,主要看定义的位置)。成员变量可以不显式初始化,它们可以由系统设定默认值;局部变量没有默认值,所以必
2021-03-08 23:00:45
386
原创 调试代码、排错技巧
基本原则每写一个模块就测试一下,写出其对应得Test方法进行测试,及时发现问题。如果出现错误,可以采取以下几种方式进行排错:可以插入System.out.println()函数在不同的地方输出相关信息(这种仅仅是针对已知道问题大概在哪,一般是项目不大的时候可以采用)。可以自定义异常类,在适当的位置进行抛出,然后进行捕获。采用代码编辑器的Debug工具,我用过的很多编辑器都是有Debug功能的,Java方面Idea 和Eclipse都有,Python的Pycharm编辑器,C++的Visual s
2021-03-08 15:26:07
891
原创 二叉树小结(附Java代码可直接运行)
二叉树常见类型1、满二叉树一棵二叉树的结点要么是叶子结点,要么它有两个子结点(如果一个二叉树的层数为K,且结点总数是(2^k) -1,则它就是满二叉树。)层数与此层节点数的对应关系:第K层,节点数为2^(K)。K从0开始。计算公式等比数列求和公式最终得出2、完全二叉树若设二叉树的深度为k,除第 k 层外,其它各层 (1~k-1) 的结点数都达到最大个数,第k 层所有的结点都连续集中在最左边,这就是完全二叉树。3、平衡二叉树它或者是一颗空树,或它的左子树和右子树的深度之差(平衡因
2021-03-03 13:52:44
233
原创 剑指 Offer 68 - II. 二叉树的最近公共祖先
题目给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。(相当于是把68-I的搜索二叉树换成了普通的二叉树)解题思路来源:作者:jyd链接:https://leetcode-cn.com/problems/er-cha-shu-de-zui-jin-gong-gong-zu-xian-lcof/solution/mian-shi-ti-68-ii-er-cha-shu-de-zui-jin-gong-gon-7/来源:力扣(LeetCode)换成普通二叉树后,没有了搜索二叉树的定义条件,因此
2021-03-02 21:25:15
141
原创 剑指 Offer 68 - I. 二叉搜索树的最近公共祖先
题目给定一个二叉搜索树, 找到该树中两个指定节点的最近公共祖先。百度百科中最近公共祖先的定义为:“对于有根树 T 的两个结点 p、q,最近公共祖先表示为一个结点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”例如,给定如下二叉搜索树: root = [6,2,8,0,4,7,9,null,null,3,5]解题思路来源:作者:jyd链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-z
2021-03-02 19:53:38
112
原创 剑指 Offer 55 - II. 平衡二叉树
题目输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1,那么它就是一棵平衡二叉树。最初级的解法:这道题本身就是基于Offer55-I出发的,先采用层序遍历的思想,把每一层的节点都保存到queue队列中,然后把每个节点的左右子树分别传到maxDepth()函数中,求解其左右子树的最大深度,然后进行比较即可,若出现左右子树深度差大于1的情况,则直接return。这个方法复杂度实在是有点高,时间复杂度最差应该是O(N^2),进而导致时间超时。/** * D
2021-03-02 11:04:51
84
原创 剑指 Offer 55 - I. 二叉树的深度
题目输入一棵二叉树的根节点,求该树的深度。从根节点到叶节点依次经过的节点(含根、叶节点)形成树的一条路径,最长路径的长度为树的深度。解题思路来源:作者:jyd链接:https://leetcode-cn.com/problems/er-cha-shu-de-shen-du-lcof/solution/mian-shi-ti-55-i-er-cha-shu-de-shen-du-xian-xu-bia/来源:力扣(LeetCode)树的遍历方式总体分为两类:深度优先搜索(DFS)、广度优先搜索(
2021-03-01 22:41:15
226
原创 剑指 Offer 54. 二叉搜索树的第k大节点
题目给定一棵二叉搜索树,请找出其中第k大的节点。解题思路来源:作者:jyd链接:https://leetcode-cn.com/problems/er-cha-sou-suo-shu-de-di-kda-jie-dian-lcof/solution/mian-shi-ti-54-er-cha-sou-suo-shu-de-di-k-da-jie-d/来源:力扣(LeetCode)本文解法基于此性质:二叉搜索树的中序遍历为 递增序列 。根据以上性质,易得二叉搜索树的 中序遍历倒序 为 递减序列
2021-03-01 20:50:45
132
原创 剑指 Offer 37. 序列化二叉树
题目请实现两个函数,分别用来序列化和反序列化二叉树。解题思路:来源:作者:jyd链接:https://leetcode-cn.com/problems/xu-lie-hua-er-cha-shu-lcof/solution/mian-shi-ti-37-xu-lie-hua-er-cha-shu-ceng-xu-bian-/来源:力扣(LeetCode)通常使用的前序、中序、后序、层序遍历记录的二叉树的信息不完整,即唯一的输出序列可能对应着多种二叉树可能性。题目要求的 序列化 和 反序列化
2021-03-01 10:53:56
107
1
原创 剑指 Offer 34. 二叉树中和为某一值的路径
题目输入一棵二叉树和一个整数,打印出二叉树中节点值的和为输入整数的所有路径。从树的根节点开始往下一直到叶节点所经过的节点形成一条路径。解题思路来源leetcode 作者:jyd链接:https://leetcode-cn.com/problems/er-cha-shu-zhong-he-wei-mou-yi-zhi-de-lu-jing-lcof/solution/mian-shi-ti-34-er-cha-shu-zhong-he-wei-mou-yi-zh-5/来源:力扣(LeetCod
2021-02-28 21:07:56
81
原创 剑指 Offer 33. 二叉搜索树的后序遍历序列
题目输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。
2021-02-27 10:35:15
120
原创 剑指 Offer 32 - III. 从上到下打印二叉树 III
题目请实现一个函数按照之字形顺序打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右到左的顺序打印,第三行再按照从左到右的顺序打印,其他行以此类推。解题思路来源于leetcode,作者:jyd链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-iii-lcof/solution/mian-shi-ti-32-iii-cong-shang-dao-xia-da-yin-er–3/来源:力扣(Leet
2021-02-25 21:29:57
89
原创 剑指 Offer 32 - II. 从上到下打印二叉树 II
题目从上到下按层打印二叉树,同一层的节点按从左到右的顺序打印,每一层打印到一行。解题思路来源于leetcode,作者:jyd链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-ii-lcof/solution/mian-shi-ti-32-ii-cong-shang-dao-xia-da-yin-er-c-5/来源:力扣(LeetCode)方法一其实和剑指 Offer 32 - I.差不多,就是在那
2021-02-25 19:39:56
94
原创 剑指 Offer 32 - I. 从上到下打印二叉树
题目从上到下打印出二叉树的每个节点,同一层的节点按照从左到右的顺序打印。题解来源于作者:jyd链接:https://leetcode-cn.com/problems/cong-shang-dao-xia-da-yin-er-cha-shu-lcof/solution/mian-shi-ti-32-i-cong-shang-dao-xia-da-yin-er-ch-4/来源:力扣(LeetCode)解题思路:题目要求的二叉树的 从上至下 打印(即按层打印),又称为二叉树的 广度优先搜索(BF
2021-02-25 11:19:24
77
原创 剑指 Offer 28. 对称的二叉树
题目请实现一个函数,用来判断一棵二叉树是不是对称的。如果一棵二叉树和它的镜像一样,那么它是对称的题解这道题本身比较简单一些,来源于作者:jyd链接:https://leetcode-cn.com/problems/dui-cheng-de-er-cha-shu-lcof/solution/mian-shi-ti-28-dui-cheng-de-er-cha-shu-di-gui-qing/来源:力扣(LeetCode)解题思路:对称二叉树定义: 对于树中 任意两个对称节点 L 和 R ,一定
2021-02-25 10:21:56
98
原创 剑指 Offer 27. 二叉树的镜像
题目请完成一个函数,输入一个二叉树,该函数输出它的镜像。解法一:递归来源于leetcode作者:jyd链接:https://leetcode-cn.com/problems/er-cha-shu-de-jing-xiang-lcof/solution/mian-shi-ti-27-er-cha-shu-de-jing-xiang-di-gui-fu-/来源:力扣(LeetCode)根据二叉树镜像的定义,考虑递归遍历(dfs)二叉树,交换每个节点的左 / 右子节点,即可生成二叉树的镜像递归解析
2021-02-24 22:57:52
80
原创 springboot打包错误
springboot打包错误:Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0…首先在file->settings->里面修改下maven的路径然后修改maven-resources-plugin的版本号
2021-02-24 21:23:25
172
原创 剑指 Offer 26. 树的子结构
题目输入两棵二叉树A和B,判断B是不是A的子结构。(约定空树不是任意一个树的子结构)B是A的子结构, 即 A中有出现和B相同的结构和节点值。(以下内容均来自leetcode作者:jyd链接:https://leetcode-cn.com/problems/shu-de-zi-jie-gou-lcof/solution/mian-shi-ti-26-shu-de-zi-jie-gou-xian-xu-bian-li-p/。大佬太牛皮,我就是跟着写一下而已)解题思路若树 BB 是树 AA 的子结构,则
2021-02-24 15:25:11
73
原创 剑指 Offer 09. 用两个栈实现队列
题目用两个栈实现一个队列。队列的声明如下,请实现它的两个函数 appendTail 和 deleteHead ,分别完成在队列尾部插入整数和在队列头部删除整数的功能。(若队列中没有元素,deleteHead 操作返回 -1 )来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/yong-liang-ge-zhan-shi-xian-dui-lie-lcof著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。题解官方题解(来源lee
2021-02-24 14:29:17
78
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人