自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Screen

Screen5.1 安装screen流行的Linux发行版(例如Red Hat Enterprise Linux)通常会自带screen实用程序,如果没有的话,可以从GNU screen的官方网站下载。[root@TS-DEV ~]# yum install screen[root@TS-DEV ~]# rpm -qa|grep screenscreen-4.0.3-4.el5[root@TS-DEV ~]#5.2 创建一个新的窗口安装完成后,直接敲命令screen就可以启动它。但是这样启

2022-02-08 22:56:58 773

原创 Anaconda安装与使用

Anaconda安装1.1 下载安装文件1) 如果想直接下载到本地,在通过ftp上传到远程服务器,请忽略一下操作2) 如果服务器是联网的,可以直接通过wget命令【centos版本】直接下载服务器,操作如下:我使用的linux系统为centOS7.6.18-64bits,使用的是wget命令进行的脚本文件下载,命令如下:wget https://repo.anaconda.com/archive/Anaconda3-2019.10-Linux-x86_64.sh1.2 执行安装命令:sh A

2022-02-08 22:54:56 702

原创 迭代器

题库173. 二叉搜索树迭代器281. 锯齿迭代器284. 顶端迭代器341. 扁平化嵌套列表迭代器900. RLE迭代器1286. 字母组合迭代器1586. 二叉搜索树迭代器 II173. 二叉搜索树迭代器实现一个二叉搜索树迭代器类BSTIterator ,表示一个按中序遍历二叉搜索树(BST)的迭代器:BSTIterator(TreeNode root) 初始化 BSTIterator 类的一个对象。BST 的根节点 root 会作为构造函数的一部分给出。指针应初始化为一个不存在于

2021-04-17 16:18:59 182

原创 存在重复元素

题库217.存在重复元素 I219.存在重复元素 II220.存在重复元素 III217.存在重复元素 I给定一个整数数组,判断是否存在重复元素。如果存在一值在数组中出现至少两次,函数返回 true 。如果数组中每个元素都不相同,则返回 false 。示例 1:输入: [1,2,3,1]输出: true示例 2:输入: [1,2,3,4]输出: false示例 3:输入: [1,1,1,3,3,4,3,2,4,2]输出: trueclass Solution { p

2021-04-17 09:57:33 125

原创 区间dp

区间dp背景:给定一个序列或字符串要进行一些操作,从最后一步出发,要将序列或字符串去头、去尾,如果做过最长回文子串,你就就可以想一下这样子的操作。区间型dp一般用 dp[i][j] ,i代表左端点,j代表右端点,若有其他维度可再添加,若两个端点之间存在联系,则可再压缩空间。力扣上还有一些题也属于区间 dp5. 最长回文子串516. 最长回文子序列312. 戳气球1246. 删除回文子数组(这个题微软面试问的很多)5. 最长回文子串给你一个字符串 s,找到 s 中最长的回文子串。示例 1:

2021-04-16 10:29:01 93

原创 Leetcode N数之和

模板哈希mapclass Solution { public int[] twoSum(int[] nums, int target) { HashMap<Integer,Integer> hash = new HashMap<>(); for(int i = 0; i < nums.length; i++){ if(hash.containsKey(target - nums[i])){

2021-04-15 16:37:51 436

转载 Static

JAVA静态变量staticstatic表示“全局”或者“静态”的意思,用来修饰成员变量和成员方法,也可以形成静态static代码块,但是Java语言中没有全局变量的概念。被static修饰的成员变量和成员方法独立于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运行时数据区的方法区内定找到他们。因此,static对象可以在它的任何对象创建之前访问,无需引用任何对象。用public修饰的static成员变量和成员方法本质是全局变量和全

2021-03-23 17:30:27 105

原创 手撕单例模式

为什么要有单例模式实际编程应用场景中,有一些对象其实我们只需要一个,比如线程池对象、缓存、系统全局配置对象等。这样可以就保证一个在全局使用的类不被频繁地创建与销毁,节省系统资源。实现单例模式的几个要点1首先要确保全局只有一个类的实例。要保证这一点,至少类的构造器要私有化。2单例的类只能自己创建自己的实例。因为,构造器私有了,但是还要有一个实例,只能自己创建咯!3单例类必须能够提供自己的唯一实例给其他类就是要有一个公共的方法能返回该单例类的唯一实例。代码1、饿汉式—静态常量方式(线程安全

2021-02-18 19:06:13 183

原创 LRU

1 DLinkedNode{key, value,prev,next}2 HashMap cache,size,capacity,head,tail3 LRUCache{size,capacity,head,tail}4 get5 put6 addToHead7 removeNode8 moveToHead9 removeTailpublic class LRUCache { class DLinkedNode { int key; int valu

2021-02-18 19:04:34 96

原创 记录面试所做到的算法题

1给定一个整数数组 nums 和一个整数目标值 target,请你在该数组中找出 和为目标值 的那 两个 整数,并返回它们的数组下标。你可以假设每种输入只会对应一个答案。但是,数组中同一个元素不能使用两遍。你可以按任意顺序返回答案。(数组无序)leetcode:1class Solution { public int[] twoSum(int[] nums, int target) { int n = nums.length; for (int i = 0; i

2021-01-30 15:51:21 122

原创 缓存问题

缓存穿透指的是对某个一定不存在的数据进行请求,该请求将会穿透缓存到达数据库。解决方案:对这些不存在的数据缓存一个空数据;对这类请求进行过滤。缓存击穿缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力。解决方案:设置热点数据永远不过期。加互斥锁,互斥锁参考代码如下:缓存雪崩指的是由于数据没有被加载到缓存中,或者缓存数据在同一时间大面积失效(过期),又或者缓存服务

2021-01-21 20:10:23 145

原创 剑指offer(1/20)

二叉搜索树的第k个结点给定一棵二叉搜索树,请找出其中的第k小的结点。public class Solution { int index = 0; TreeNode KthNode(TreeNode pRoot, int k) { if(pRoot != null){ TreeNode node = KthNode(pRoot.left,k); if(node != null){ ret

2021-01-20 14:41:34 177 1

原创 剑指offer(1/19)

二叉树的下一个结点给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。/*public class TreeLinkNode { int val; TreeLinkNode left = null; TreeLinkNode right = null; TreeLinkNode next = null; TreeLinkNode(int val) { this.v

2021-01-19 13:24:44 110

转载 Spring MVC的工作流程

Spring MVC的工作流程在 SpringBoot 之前,几乎所有的 Web 应用都是已 web.xml 为入口的,Spring MVC 也不例外,学习过 Servlet 的应该都理解,Spring MVC 其实就是对 Servlet 接口,Servlet 规范的一种实现。Servlet 提供了五个接口,其中两个接口最为核心,分别是 init 方法和 service 方法。1. init方法:init方法是在服务器装入 Servlet 时执行,在 Servlet 的生命周期中,它只执行一次。如它

2021-01-18 13:51:09 186

原创 剑指offer(1/18)

正则表达式匹配请实现一个函数用来匹配包括’.‘和’‘的正则表达式。模式中的字符’.‘表示任意一个字符,而’'表示它前面的字符可以出现任意次(包含0次)。 在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配public class Solution { public boolean match(char[] str, char[] pattern){ if (str == null

2021-01-18 13:35:55 107

原创 剑指offer(1/17)

条件限制求和求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。public class Solution { public int Sum_Solution(int n) { int sum = n; boolean ans = (n>0)&&((sum += Sum_Solution(n-1))>0); return sum;

2021-01-17 13:11:10 116

原创 Docker常用命令

Docker常用命令1、Docker容器信息2、镜像操作2.1镜像查看2.2镜像搜索2.3镜像下载2.4镜像删除2.5镜像构建3、容器操作3.1容器启动3.2容器进程3.3容器日志3.4容器进入与退出3.5查看容器3.6查看停止与删除3.7生成镜像3.8容器与主机间的数据拷贝1、Docker容器信息##查看docker容器版本docker version##查看docker容器信息docker info##查看docker容器帮助docker --help2、镜像操作2.1镜像查看##

2021-01-16 13:09:49 84

原创 剑指offer(1/16)

和为S的两个数字输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。import java.util.ArrayList;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { ArrayList<Integer> result = new Array

2021-01-16 11:41:37 141

原创 剑指offer(1/15)

数字在升序数组中出现的次数统计一个数字在升序数组中出现的次数。public class Solution { public int GetNumberOfK(int [] array , int k) { if(array.length <= 0 || array == null) return 0; int first = binarySearch(array,k); int last = binarySearch(array,k+1);

2021-01-15 15:00:43 94

原创 剑指offer(1/14)

第一次只出现一次的字符在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)public class Solution { public int FirstNotRepeatingChar(String str) { int res = -1; if(str ==null || str.length() == 0) return res;

2021-01-14 13:04:08 90

原创 SQL(1/14)

牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率牛客每天有很多人登录,请你统计一下牛客每个日期新用户的次日留存率。-- 联立两表-- 每个日期新用户的次日留存数/每个日期登录新用户的个数 即为每个日期新用户留存率 SELECT one.date,IFNULL(ROUND(two.counts/one.sum,3),0) p FROM ( #每个日期新用户的次日留存数 SELECT l.date,IFNULL(t.sum,0) sum FROM login l

2021-01-14 11:51:53 329

原创 接口和抽象类的区别

接口和抽象类有什么区别?设计目的相同点不同点总结设计目的接口的设计目的,是对类的行为进行约束(更准确的说是一种“有”约束,因为接口不能规定类不可以有什么行为),也就是提供一种机制,可以强制要求不同的类具有相同的行为。它只约束了行为的有无,但不对如何实现行为进行限制。对“接口为何是约束”的理解,我觉得配合泛型食用效果更佳。而抽象类的设计目的,是代码复用。当不同的类具有某些相同的行为(记为行为集合A),且其中一部分行为的实现方式一致时(A的非真子集,记为B),可以让这些类都派生于一个抽象类。在这个抽象类

2021-01-13 21:11:13 111

原创 剑指offer(1/13)

整数中1的个数求出1—13的整数中1出现的次数,并算出100-1300的整数中1出现的次数?为此他特别数了一下1~13中包含1的数字有1、10、11、12、13因此共出现6次,但是对于后面问题他就没辙了。ACMer希望你们帮帮他,并把问题更加普遍化,可以很快的求出任意非负整数区间中1出现的次数(从1 到 n 中1出现的次数)。public class Solution { public int NumberOf1Between1AndN_Solution(int n) { int

2021-01-13 17:15:08 71

原创 SQL(1/13)

异常的邮件概率现在有一个需求,让你统计正常用户发送给正常用户邮件失败的概率:有一个邮件(email)表,id为主键, type是枚举类型,枚举成员为(completed,no_completed),completed代表邮件发送是成功的,no_completed代表邮件是发送失败的。简况如下:第1行表示为id为2的用户在2020-01-11成功发送了一封邮件给了id为3的用户;…第3行表示为id为1的用户在2020-01-11没有成功发送一封邮件给了id为4的用户;…第6行表示为id为4的用户

2021-01-13 16:23:41 113

原创 剑指offer(1/12)

数组中出现长度超过一半的数字数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。import java.util.Arrays;public class Solution { public int MoreThanHalfNum_Solution(int [] array) { Arrays.sort(array);

2021-01-12 17:07:38 91

原创 SQL(1/12)

按照salary的累计和running_total,按照salary的累计和running_total,其中running_total为前N个当前( to_date = ‘9999-01-01’)员工的salary累计和,其他以此类推。 具体结果如下Demo展示。。CREATE TABLE salaries ( emp_no int(11) NOT NULL,salary int(11) NOT NULL,from_date date NOT NULL,to_date date NOT NULL,

2021-01-12 16:49:41 113

原创 剑指offer(1/11)

复杂链表的复制输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针random指向一个随机节点),请对此链表进行深拷贝,并返回拷贝后的头结点。(注意,输出结果中请不要返回参数中的节点引用,否则判题程序会直接返回空)//下面那段代码思维太混乱了,大家不要参考,如果要用map解决此题,看这段代码就好import java.util.*;public class Solution { public RandomListNode Clone(RandomListNo

2021-01-11 21:04:47 83

原创 SQL(1/11)

查找排除最大、最小salary之后的当前员工的平均工资avg_salary查找排除最大、最小salary之后的当前(to_date = ‘9999-01-01’ )员工的平均工资avg_salary。CREATE TABLE salaries ( emp_no int(11) NOT NULL,salary int(11) NOT NULL,from_date date NOT NULL,to_date date NOT NULL,PRIMARY KEY (emp_no,from_date));

2021-01-11 20:44:02 107

原创 剑指offer(1/10)

层次遍历从上往下打印出二叉树的每个节点,同层节点从左至右打印。import java.util.ArrayList;import java.util.LinkedList;public class Solution { public ArrayList<Integer> PrintFromTopToBottom(TreeNode root) { ArrayList<Integer> list = new ArrayList<>();

2021-01-10 13:19:47 101

原创 SQL(1/10)

将所有获取奖金的员工当前的薪水增加10%请你写出更新语句,将所有获取奖金的员工当前的(salaries.to_date=‘9999-01-01’)薪水增加10%。(emp_bonus里面的emp_no都是当前获奖的所有员工)create table emp_bonus(emp_no int not null,btype smallint not null);CREATE TABLE salaries (emp_no int(11) NOT NULL,salary int(11) NOT NUL

2021-01-10 13:05:33 146

原创 剑指offer(1/9)

顺时针打印矩阵输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下4 X 4矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10.import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] mat

2021-01-09 23:02:30 96

原创 SQL(1/9)

删除重复的记录,只保留最小的id对应的记录删除emp_no重复的记录,只保留最小的id对应的记录。CREATE TABLE IF NOT EXISTS titles_test (id int(11) not null primary key,emp_no int(11) NOT NULL,title varchar(50) NOT NULL,from_date date NOT NULL,to_date date DEFAULT NULL);insert into titles_test v

2021-01-09 22:13:59 120

原创 剑指offer(1/8)

合并两个排序链表输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则。//递归/*struct ListNode { int val; struct ListNode *next; ListNode(int x) : val(x), next(NULL) { }};*/public class Solution { public ListNode Merge(ListNode list1,ListNode list2) {

2021-01-08 11:07:34 67

原创 SQL(1/8)

创建索引针对如下表actor结构创建索引:(注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作,mysql支持ALTER TABLE创建索引)CREATE TABLE actor (actor_id smallint(5) NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL,last_name varchar(45) NOT NULL,last_update datetime

2021-01-08 10:41:14 86

原创 MySQL数据库优化

数据库优化选取最适用的字段属性使用连接(JOIN)来代替子查询(Sub-Queries)使用联合(UNION)来代替手动创建的临时表事务锁定表使用外键使用索引优化的查询语句优化Mysql数据库的8个方法选取最适用的字段属性MySQL可以很好的支持大数据量的存取,但是一般说来,数据库中的表越小,在它上面执行的查询也就会越快。因此,在创建表的时候,为了获得更好的性能,我们可以将表中字段的宽度设得尽可能小。例如,在定义邮政编码这个字段时,如果将其设置为CHAR(255),显然给数据库增加了不必要的空间,甚至

2021-01-07 15:26:03 272

原创 剑指offer(1/7)

调整数组顺序使奇数位于偶数前面输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。public class Solution { public void reOrderArray(int [] array) { for(int i = 0 ;i < array.length; i++){ for(int j = array.length

2021-01-07 11:09:47 93

原创 SQL(1/7)

将employees表的所有员工的last_name和first_name拼接起来作为Name将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分(注:sqllite,字符串拼接为 || 符号,不支持concat函数,mysql支持concat函数)CREATE TABLE employees ( emp_no int(11) NOT NULL,birth_date date NOT NULL,first_name varchar(14

2021-01-07 10:35:42 85

原创 SQL基础知识整理

SQL基础知识整理思维导图表:DQL单列索引普通索引唯一索引主键索引组合索引全文索引索引的删除使用索引的优点使用索引的缺点注意事项什么情况下不创建索引思维导图表:DDL :数据定义语言 create table …/ drop table … / rename … to…/ truncate table…/alter table …DCL : 数据控制语言 commit : 提交 / rollback : 回滚 / 授权grant…to… /revokeDML : 数据操纵语言insert

2021-01-06 16:16:48 108

原创 剑指offer(1/6)

矩形覆盖我们可以用21的小矩形横着或者竖着去覆盖更大的矩形。请问用n个21的小矩形无重叠地覆盖一个2*n的大矩形,总共有多少种方法?假设:n块矩形有f(n)种覆盖方法。进行逆向分析,要完成最后的搭建有两种可能。第一种情况等价于情形1中阴影部分的n-1块矩形有多少种覆盖方法,为f(n-1);第二种情况等价于情形2中阴影部分的n-2块矩形有多少种覆盖方法,为f(n-2);故f(n) = f(n-1) + f(n-2),还是一个斐波那契数列。。。。public class Solution {

2021-01-06 11:17:38 83

原创 SQL(1/6)

汇总各个部门当前员工的title类型的分配数目汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的当前(dept_emp.to_date = ‘9999-01-01’)员工的当前(titles.to_date = ‘9999-01-01’)title以及该类型title对应的数目count,结果按照dept_no升序排序(注:因为员工可能有离职,所有dept_emp里面to_date不为’9999-01-01’就已经离职了,不计入统计,而且

2021-01-06 10:45:47 96

空空如也

空空如也

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

TA关注的人

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