自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Linux常用指令

man +各种指令名:显示对这个指令的参数和使用说明ll -all -lls -a:列出该目录下所有的文件,包含隐式文件ll -l:列出文件的详细信息pwd:显示用户所在的当前目录cd:将当前工作目录改变成指定目录touch:创建文件mkdir:创建目录 -p(创建多级目录) mkdir -p /free/workrm:删除文件夹 -f(强制删除) -rf(删除目录及目录下所有的文件)cp 文件1 文件2:将文件1内容复制到文件2中mv 文件1 文件2:若文件2存在,会询问是否覆

2020-07-02 11:10:15 133

原创 HTTP协议面试考点

1.http的长连接和短连接http 有HTTP/1.0和HTTP/1.1两个版本。HTTP/1.1默认保持长链接,数据传输完成了保持TCP连接不断开(不发RST包,不四次挥手),等待在同域名下继续用这个通道传输数据;相反的就是短连接长连接:短连接:jdbc数据库连接数的Connection连接为短连接,使用数据池连接为长连接。...

2020-07-02 11:04:26 453

原创 JVM内存分布、类加载、GC

JVM内存线程私有的内存区域程序计数器一块比较小的内存空间,可以看做是当前线程执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖程序计数器来完成。为了线程切换后能恢复到正确的执行位置,每条线程有需要有一个独立的程序计数器,各个线程之间计数器互不影响,独立存储(线程私有)。java虚拟机栈Java虚拟机栈:和线程相关,不同线程内,即使运行同一个方法,也是处于不同内存。和方法有关,即使是

2020-06-21 18:12:22 232

原创 多线程(2)

乐观锁和悲观锁设计上解决线程安全的一种思想乐观锁设计上总是乐观的认为数据修改大部分场景都是没有线程并发修改,少量情况下才存在,线程安全上采取版本号控制(用户自己判断版本号,并处理)悲观锁悲观的认为总是有其他线程并发修改,每次都是加锁操作。CAS(Compare and Swap)实现:自旋尝试设置值的操作无锁操作,乐观锁技术背景:当线程执行的任务量较小时,使用synchronized(多个线程同时竞争对象锁)保证多线程安全时,效率较低,竞争失败的线程很快的在阻塞态和被唤醒态之间转化,影响性

2020-06-10 17:51:28 141

原创 JDBC

数据库驱动数据库驱动由数据库厂商提供,主要是在请求响应数据库接口服务时,网络数据可以封装/解析为数据库需要的格式,并提供数据库对应功能的API数据库连接数据库连接是创建会话并可以基于会话来执行sql,且基于TCP长连接。数据库的底层实现:(为什么统一接口编程,就可以使用第三方提供的功能)统一的接口编程:(谈对JDBC的理解)JDBC编码的方式是统一使用JDBC API作为对象的定义,new具体数据库需要的对象。父类引用指向子类对象(多态)。例如MySQLConnection c = new

2020-05-16 17:22:27 124

原创 IDEA中Tomcat配置

tomcat部署项目自动发布设置项目的web.xml生成

2020-05-12 19:46:47 126

原创 IDEA数据库配置

配置MYSQL数据库执行sql文件右击run

2020-05-12 18:59:40 174

原创 HashMap详细总结

1.实现Map接口2.HashMap的默认初始值为16 /** * The default initial capacity - MUST be a power of two. */ static final int DEFAULT_INITIAL_CAPACITY = 1 << 4; // aka 163.HashMap的默认最大容量为2^...

2020-05-08 16:13:12 202

原创 二叉搜索树操作

import java.util.Stack;public class BTSTreeClass { private BTSNode root = null; public static class BTSNode { BTSNode left; BTSNode right; int val; public B...

2020-04-26 16:52:25 216

原创 删除二叉搜索树中的一个结点

删除结点将要删除的结点用cur标记,parent是它的父节点。1 . cur没有左孩子时若cur是根节点,parent =null时,直接删除根节点,root=null。若cur不是根节点:当cur是parent的左孩子时parent.left = cur.right;当cur是parent的右孩子时parent.right = cur.right;2 . cur...

2020-04-26 16:51:16 117

原创 TCP协议特点与实现原理 UDP协议特点

UDP协议特点面向无连接,不可靠的数据报协议不保证安全,性能比较好无连接 知道接收端的IP和端口号就直接进行传输,不需要建立连接不可靠:没有确认机制、重传机制;如果因为网络故障无法发给对方,UDP协议也不会给应用层返回任何错误信息面向数据报:能传输的数据最大长度为64K,不能灵活地控制读写数据的次数和数量- 应用层交给UDP多长的报文,UDP原样发送,既不会拆分,也不会合并。有...

2020-04-19 20:44:05 484

原创 在数组中找到只出现1次的数字(位运算)

前置知识异或运算将2个数的二进制位按位运算,相同的结果为0,不同结果为1.异或运算性质任何数和0异或结果为任何数任何数和自己异或结果为0异或运算满足交换律只出现一次的数字(1)数组中只有一个数字出现一次,其他数字均出现两次。利用异或,两个相同的数异或为0,任何数与0异或为自己,将这组数字全员异或,得到的结果为出现一次的数字。class Solution { pu...

2020-04-14 10:06:59 195

原创 常用经典排序算法(面试必备)

哈哈哈哈哈哈哈哈哈哈

2020-04-13 22:01:02 126

原创 OSI七层模型TCP/IP四层模型重点知识

OSI七层模型物理层:物理层的任务就是为它的上一层提供一个物理连接。数据链路层:它控制网络层与物理层之间的通信。它的主要功能是如何在不可靠的物理线路上进行数据的可靠传递网络层:其主要功能是将网络地址翻译成对应的物理地址,并决定如何将数据从发送方路由到接收方传输层:传输协议同时进行流量控制或是基于接收方可接收数据的快慢程度规定适当的发送速率会话层:负责在网络中的两节点之间建立、维持和终止...

2020-04-11 21:01:42 897

原创 多线程安全01

进程与线程1.进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。2.线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任...

2020-04-05 17:32:08 84

原创 优先级队列(小堆/大堆)

1.优先级队列(1)概念普通队列有着先进先出的性质比如:入队顺序:3,1,2 出队顺序:3,1,2但优先级队列不同比如:入队顺序:3,1,2 出队顺序:1,2,3(此种为队首为最小元素的优先级队列) 或3,2,1(此种为队首为最大元素的优先级队列)因为优先级队列有着这样的特性,所以它存放的元素必须是可以比较大小的。(2)优先级队列的...

2020-03-29 21:57:56 375

原创 JAVA引用类型比较与基本类型比较

基本数据类型比较在java中,基本数据类型可以直接比大小。在JVM中内部,已经具备这样的指令,所以可以直接比较大小。引用类型的比较class Card{ int rank; String suit; public Card(int rank,String suit){ this.rank=rank; this.suit...

2020-03-25 22:01:16 568

原创 找到二叉树中两个指定结点的最近公共祖先

1.此树为二叉搜索树时利用二叉搜索树的特点:根节点的只大于左子树每个结点的值,大于右子树每个结点的值。当两个结点有一个是根时,则最近公共祖先为root当结点1 的值小于root.val且结点1的值大于root.val 或者 当结点1 的值大于root.val且结点1的值小于root.val ,这两种情况的结果都是 root当两个结点值都小于root.val时,递归去root的左子树中去...

2020-03-18 17:42:01 242

原创 非递归实现二叉树的后序遍历

后序遍历顺序:左子树----->右子树----->根节点算法思路 使用栈保存结点1.沿着根节点的左子树,找最左的结点,并保存沿途所经过的结点;2.找到最左节点,此时它是没有左子树的,然后再看他是否有右子树;3.若没有右子树,删除栈顶元素,遍历此节点4.若有右子树,此时将他的右子树作为新的根,去遍历其左右子树,将沿途结点保存进栈如果仅根据以上条件写出代码,会出现死循环,死...

2020-03-14 20:10:56 219

原创 根据后序遍历和中序遍历结果构造二叉树

后序遍历的特点:左子树–右子树–根节点中序遍历的特点:左子树–根节点–右子树 例如: 后序遍历 postorder = [7,15,20,9,3] 中序遍历 inorder = [9 ,3,15,20,7] 在后序遍历结果中可以找到:这棵树的根 为 3(index=postorder.length-1); 再去中序中,可以分辨出9为3的左子树内容,15、20、7为3的右子树...

2020-03-12 18:50:15 687

原创 根据前序遍历,中序遍历结果构造二叉树

前序遍历的特点:根节点–左子树–右子树中序遍历的特点:左子树–根节点–右子树例如 前序遍历 preorder = [3,9,20,15,7] 中序遍历 inorder = [9,3,15,20,7] 在前序遍历结果中可以找到:这棵树的根 为 3 再去中序中,可以分辨出9为3的左子树内容,15、20、7为3的右子树 递归去构造3的左子树,3的右子树。 注意一定要给出子树的范围...

2020-03-12 18:35:13 139

原创 二叉树的非递归遍历----层次遍历(广度优先)

借用队列实现层次遍历层次遍历要求遍历节点时,按照一层一层的顺序遍历,遍历完此节点,仅接着遍历它的同一层结点,借用队列可以控制好这种顺序。题目1:遍历的结点值存在一维数组中 public List<Integer> levelOrderBottom(TreeNode root) { List<Integer> l=new ArrayList<>();...

2020-03-07 14:18:00 127

原创 二叉树的非递归操作---先序遍历

借助栈实现先序遍历方法1:左孩子和右孩子都入栈public List<Integer> preorderTraversal(TreeNode root) { List<Integer> l=new ArrayList<>(); Stack<TreeNode> s=new Stack<>();...

2020-03-07 14:06:52 61

原创 二叉树非递归操作----二叉树的完全性检验

给定一个二叉树 确定它是否是一个完全二叉树首先一个K层完全二叉树一定满足这3个条件它的前K-1层是饱和的,达到了最大值;它的第k-2层的所有节点均有两个孩子;它的第K-1层不是所有的结点都有孩子,找到第一个孩子不全(不饱和)的结点记为cur:这里条件3就含有3种情况:(1)cur只有左孩子,那接下来和cur同属一层的另一个结点一定没有孩子,否则,不是完全二叉树;(2)cur只有右孩...

2020-03-07 13:46:53 161

原创 二叉树的递归操作(2)

结点结构: public class TreeNode { int val; TreeNode left; TreeNode right; TreeNode(int x) { val = x; } }两树是否相同class Solution { public boolean isSameTree(TreeNode p, TreeNo...

2020-03-05 18:31:09 92

原创 二叉树的递归操作(1)

先序递归遍历private void preOrder(BTNode root){ if(root!=null){ System.out.print(root.val+" "); preOrder(root.left); preOrder(root.right); } } 中...

2020-03-01 21:37:43 105

原创 反转链表指定位置

题目反转从位置 m 到 n 的链表。请使用一趟扫描完成反转。说明:1 ≤ m ≤ n ≤ 链表长度。示例:输入: 1->2->3->4->5->NULL, m = 2, n = 4输出: 1->4->3->2->5->NULL题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/pro...

2020-02-29 16:08:57 350

原创 二叉树基础理论知识(针对选择题的考点)

基本概念节点的度:一个节点含有的子树的个数称为该节点的度; 如上图:A的为6 比特科技树的度:一棵树中,最大的节点的度称为树的度; 如上图:树的度为6叶子节点或终端节点:度为0的节点称为叶节点; 如上图:B、C、H、I…等节点为叶节点双亲节点或父节点:若一个节点含有子节点,则这个节点称为其子节点的父节点; 如上图:A是B的父节点孩子节点或子节点:一个节点含有的子树的根节点称为该节点的...

2020-02-26 21:10:11 419

原创 存在重复元素II

题意给定一个整数数组和一个整数 k,判断数组中是否存在两个不同的索引 i 和 j,使得 nums [i] = nums [j],并且 i 和j的差的绝对值最大为 k。示例 1:输入: nums = [1,2,3,1], k = 3输出: true示例 2:输入: nums = [1,0,1,1], k = 1输出: true示例 3:输入: nums = [1,...

2020-02-26 15:57:21 99

原创 判定是否互为字符重排

题意:给定两个字符串 s1 和 s2,请编写一个程序,确定其中一个字符串的字符重新排列后,能否变成另一个字符串示例 1:输入: s1 = “abc”, s2 = “bca”输出: true示例 2:输入: s1 = “abc”, s2 = “bad”输出: false题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/ch...

2020-02-22 21:30:22 199

原创 栈的应用——删除最外层的括号

题意:有效括号字符串为空 ("")、"(" + A + “)” 或 A + B,其中 A 和 B 都是有效的括号字符串,+ 代表字符串的连接。例如,"","()","(())()" 和 “(()(()))” 都是有效的括号字符串。如果有效字符串 S 非空,且不存在将其拆分为 S = A+B 的方法,我们称其为原语(primitive),其中 A 和 B 都是非空有效括号字符串。给出一个非空...

2020-02-15 21:52:19 142

原创 循环队列

运用size来记录队列内元素个数,并利用它判断队列的空或满;使用front标记队首元素下标;使用 front+size-1)%capatity 得到队尾元素下标。时间复杂度:O(1)空间复杂度:O(n)缺点:缺乏线程安全型class MyCircularQueue { int[] arr;//数组空间实现队列 int front=0;//队首元素下标 i...

2020-02-13 20:38:37 75

原创 栈的应用——棒球比赛

题意:给定一个字符串列表,每个字符串可以是以下四种类型之一:1.整数(一轮的得分):直接表示您在本轮中获得的积分数。2."+"(一轮的得分):表示本轮获得的得分是前两轮有效 回合得分的总和。3.“D”(一轮的得分):表示本轮获得的得分是前一轮有效 回合得分的两倍。4.“C”(一个操作,这不是一个回合的分数):表示您获得的最后一个有效 回合的分数是无效的,应该被移除。题目来源:力扣(...

2020-02-12 18:48:38 264

原创 栈的应用——股票价格跨度

题意:编写一个 StockSpanner 类,它收集某些股票的每日报价,并返回该股票当日价格的跨度。今天股票价格的跨度被定义为股票价格小于或等于今天价格的最大连续日数(从今天开始往回数,包括今天)。例如,如果未来7天股票的价格是 [100, 80, 60, 70, 60, 75, 85],那么股票跨度将是 [1, 1, 1, 2, 1, 4, 6]。题目来源:力扣(LeetCode)...

2020-02-12 18:36:03 203

原创 给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。

题意:给定一个由整数组成的非空数组所表示的非负整数,在该数的基础上加一。 最高位数字存放在数组的首位, 数组中每个元素只存储单个数字。假设除了整数 0 之外,这个整数不会以零开头示例 1:输入: [1,2,3]输出: [1,2,4]解释: 输入数组表示数字 123。示例 2:输入: [4,3,2,1]输出: [4,3,2,2]解释: 输入数组表示数字 4321。题目来源:力扣(...

2020-02-11 20:35:53 1933

原创 字符串压缩Java

1.非原地压缩 //非原地修改 public static int compress(char[] chars) { //存储压缩结果 char[] res = new char[chars.length]; int index = 0;//标记res写进的下标 for (int i ...

2020-02-11 16:16:48 286

原创 Java数据结构之队列

1.概念队列:是一种特殊的线性表,在一端插入数据,在另一端删除数据。入队:将数据插入队列,只能从队尾插入。出队:将队头元素删除。只能从队头删除元素。队列的特性:先进先出,后进后出。2.队列的操作poll( ):删除队头元素,返回值为删除的对象。offer( ):元素入队,返回值为boolean类型。peek( ):查看队头元素,返回值为队头元素对象。isEmpty( ):判断队列...

2020-01-07 21:05:56 85

原创 Java数据结构之栈的应用

1.概念栈:一种特殊的线性表,只允许在一端(栈顶)进行数据的插入和删除,另一端成为栈底。进栈:将数据压入、插入栈内,只能栈顶一端插入。出栈:将栈顶元素删除。只能从栈顶删除元素。栈的特性:先进入栈的数据后出栈,后进入栈的数据先出栈。2.栈的操作peek( ):查看栈顶元素,返回值为Object类对象。pop( ):删除栈顶元素,返回值为这个对象(Object)。push():将数据压...

2020-01-07 20:46:11 291

原创 python实现单词小助手

设计要求:可以分为三个部分实现:其一,建立一个文本文件,文件名由用户用键盘输入;其二,给定单词计数,输入一个不含空格的单词,统计输出该单词在文本中的出现次数(检索在当前工程目录下的所有.txt文件内容);其三,检索给定单词,输入一个单词,检索并输出该单词所在的行号、该行中出现的次数以及在该行中的相应位置。菜单选项包括1. 建立文件2. 单词计数3. 单词定位4. 退出程序import...

2020-01-07 19:53:40 236

原创 java扑克牌游戏

实现功能:扑克牌的构造 洗牌 发牌利用list<>,实现一副牌,list中的元素是牌这个对象。import java.util.ArrayList;import java.util.List;import java.util.Random;//牌类class Card{ private String suit; private int rank; ...

2019-12-30 18:06:59 209

空空如也

空空如也

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

TA关注的人

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