自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JVM --- 垃圾回收机制

前言:1、JVM内存五大结构:方法区、Java堆、Java栈、本地方法栈、程序计数器2、其中程序计数器、Java栈和本地方法栈三个区域是线程私有的,随线程启动和销毁。3、Java堆、方法区这两部分内存的回收是动态的,是垃圾回收需要关注的。一、判断对象是否存活Java堆中存放着几乎所有的对象实例,垃圾回收器在进行垃圾回收前,要先判断这些对象是否存活,判断存活有以下方法:1、引用计数法(1)给对象增加一个引用计数器,每当有一个地方引用它时,计数器+1;当引用失效时,计数器-1;任何时刻计数器为0

2022-04-23 21:11:27 492

原创 JVM --- 类的生命周期

一、类的生命周期加载-----》校验-----》准备-----》解析-----》初始化-----》使用-----》卸载二、类加载过程1、加载(1)主要工作:通过类的全限定名来获取定义此类的二进制字节流。将这个类字节流代表的静态存储结构转换为方法区的运行时数据结构。在堆中生成了一个代表此类的java.lang.Class对象,作为访问这些方法区的数据入口。(2)支持的两种类加载器:引导类加载器用户(加载)自定义类加载器2、校验校验作为连接的第一步,用于确保类或接口在二进制表示结构上是正

2022-04-15 11:33:23 691

原创 JVM---内存管理

JVM是一种用于计算设备的规范,他是一个虚构的计算机。是通过在实际的计算机上的仿真模拟各种计算机的功能来实现的。引入java虚拟机后,java语言在不同的平台上运行时不需要重新编译,运行字节码即可。五大内存区域1、方法区(1)所有线程共享的内存区域(2)用于存储已被虚拟机加载的类信息、常量、静态常量等。如:被static修饰的常量(3)方法区中的信息来源于类装载子系统,其加载class信息(4)这个区域的内存回收目标主要针对于常量池的回收和堆类型的卸载2、Java堆(1)是所有线程共享的内

2022-04-15 11:29:04 1112

原创 企微群机器人定时提醒

在工作小组群,当我们每周需提醒群内成员写周报,提醒群内成员开周会点时候,为了更方便,我们可以在企微群内设置一个机器人来提醒大家。我们先要在群内添加一个机器人????️右击群聊天 --> 点击"添加群机器人"一定要保存好webhook地址。代码可以直接放在一些在运行的项目中,比如内部使用的工具的代码中。 /** * xxx提醒 * @return */ @Scheduled(cron = "0 0 19 ? * MON") public

2021-11-22 11:38:20 2364 1

原创 SpringBoot中VO、DTO、DO、PO

VO(View Object):视图层,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的时为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式条用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。PO(Persistent Ob

2021-05-10 11:19:51 4339

原创 安装brew会出现问题及解决办法

brew 全称Homebrew 是Mac OSX上的软件包管理工具Homebrew 安装和卸载工具 只用一行命令就能完成最省心的办法:/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"官方安装命令/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/insta

2020-12-08 17:01:37 678

原创 JZ64 --- 滑动窗口的最大值

题目描述:给定一个数组和滑动窗口的大小,找出所有滑动窗口里数值的最大值。例如,如果输入数组 { 2,3,4,2,6,2,5,1 } 及滑动窗口的大小3,那么一共存在6个滑动窗口,他们的最大值分别为{4,4,6,6,6,5}; 针对数组 { 2,3,4,2,6,2,5,1 } 的滑动窗口有以下6个: {[2,3,4],2,6,2,5,1}, {2,[3,4,2],6,2,5,1}, {2,3,[4,2,6],2,5,1}, {2,3,4,[2,6,2],5,1}, {2,3,4,2,[6,2,5],1},

2020-09-12 09:52:47 114

原创 JZ63 --- 数据流中的中位数

题目描述:如何得到一个数据流中的中位数?如果从数据流中读出奇数个数值,那么中位数就是所有数值排序之后位于中间的数值。如果从数据流中读出偶数个数值,那么中位数就是所有数值排序之后中间两个数的平均值。我们使用Insert()方法读取数据流,使用GetMedian()方法获取当前读取数据的中位数。题解:因为数据流是动态的,所以我们需要动态的调整整个数据序列,以及需要找出其中位数。我们知道,如果元素个数为偶数且序列有序,中位数为最中间两数之和。如果是奇数,就为最中间的那个数。所以我们采用大堆和小堆,让元素在

2020-09-11 18:52:45 142

原创 JZ62 --- 序列化二叉树

题目描述:给定一棵二叉搜索树,请找出其中的第k小的结点。例如, (5,3,7,2,4,6,8) 中,按结点数值大小顺序第三小结点的值为4。题解:根据二叉树的特性,可知中序遍历搜索二叉树得到的序列是有序的。可以利用此特性来解决这个问题。解法一:递归public class Solution { TreeNode kNode = null; int count = 0; private void help(TreeNode root, int k) {

2020-09-10 22:09:38 175

原创 JZ61 --- 序列化二叉树

题目描述:请实现两个函数,分别用来序列化和反序列化二叉树二叉树的序列化是指:把一棵二叉树按照某种遍历方式的结果以某种格式保存为字符串,从而使得内存中建立起来的二叉树可以持久保存。序列化可以基于先序、中序、后序、层序的二叉树遍历方式来进行修改,序列化的结果是一个字符串,序列化时通过 某种符号表示空节点(#),以 ! 表示一个结点值的结束(value!)。二叉树的反序列化是指:根据某种遍历顺序得到的序列化字符串结果str,重构二叉树。例如,我们可以把一个只有根节点为1的二叉树序列化为"1,",然后通过自

2020-09-09 22:53:54 156

原创 JZ60 --- 把二叉树打印成多行

题目描述:从上到下按层打印二叉树,同一层结点从左至右输出。每一层输出一行。题解:层序遍历public ArrayList<ArrayList<Integer> > Print(TreeNode pRoot) { ArrayList<ArrayList<Integer>> res = new ArrayList<> (); Queue<TreeNode> queue = new LinkedList<>

2020-09-09 17:39:26 91

原创 JZ59 --- 按之字顺序打印二叉树

题目描述:请实现一个函数按照之字形打印二叉树,即第一行按照从左到右的顺序打印,第二层按照从右至左的顺序打印,第三行按照从左到右的顺序打印,其他行以此类推。题解:由题意知,需要按S形打印二叉树,实则为层序遍历只是奇数层正序打印,偶数层逆序打印。(1)设置一个布尔型的变量flag,奇数层置为true,偶数层置为false。(2)打印时判断flag,来决定如何打印。public ArrayList<ArrayList<Integer> > Print(TreeNode pRoo

2020-09-09 17:10:54 94

原创 JZ58 --- 对称的二叉树

题目描述:请实现一个函数,用来判断一棵二叉树是不是对称的。注意,如果一个二叉树同此二叉树的镜像是同样的,定义其为对称的。题解:递归判断其根结点的左右子树是否对称。递归结束条件:(1)两个结点同为空,表示遍历结束,返回true。(2)有一方结点为空,另一方结点不为空,则表示不对称,返回false。(3)当前的两个结点不相等,则返回false。public boolean judge(TreeNode node1, TreeNode node2) { if (node1 == null

2020-09-09 16:09:47 123

原创 JZ57 --- 二叉树的下一个结点

题目描述:给定一个二叉树和其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的指针。题解:(1)输入的是二叉树中的某一结点,先遍历到二叉树的最末尾结点。(2)树中包含指向父结点的指针,可以根据此特性中序遍历构造二叉树。(3)二叉树构建好之后,遍历中序序列,找到相等的结点,输出下一个结点。public class Solution { static ArrayList<TreeLinkNode> list = new

2020-09-09 11:22:29 158

原创 JZ56 --- 删除链表中重复的结点

题目描述:在一个排序的链表中,存在重复的结点,请删除该链表中重复的结点,重复的结点不保留,返回链表头指针。 例如,链表1->2->3->3->4->4->5 处理后为 1->2->5题解:(1)需要一个前置结点,用作删除结点后连接之后的结点。(2)遍历结点,如果当前节点重复就一直往下走,直至走到不重复的结点,让前置结点直接指向这个结点,重复结点即删除。public ListNode deleteDuplication(ListNode pHead)

2020-09-07 22:01:32 120

原创 JZ55 --- 链表中环的入口结点

题目描述:给一个链表,若其中包含环,请找出该链表的环的入口结点,否则,输出null。题解:(1)设置一个快指针,一个慢指针。(2)快指针一次走两步,慢指针一次走一步。如果是循环链表,那么两指针终会相遇。(3)相遇后,重新指定一个指针从链表头开始走,另一个指针从相遇点开始走,再次相遇的点就是入环点。public ListNode EntryNodeOfLoop(ListNode pHead){ ListNode fast = pHead; ListNode slow = pHead

2020-09-06 17:52:04 116

原创 JZ54 --- 字符流中第一个不重复的字符

题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。输出描述:如果当前字符流没有存在出现一次的字符,返回 # 字符。题解:使用LinkedHashMap,可以保持住插入顺序。import java.util.LinkedHashMap;import java.util.Map;public class Solution

2020-09-05 21:41:42 110

原创 JZ53 --- 表示数值的字符串

题目描述:请实现一个函数用来判断字符串是否表示数值(包括整数和小数)。例如,字符串"+100",“5e2”,"-123",“3.1416"和”-1E-16"都表示数值。 但是"12e",“1a3.14”,“1.2.3”,"±5"和"12e+4.3"都不是。题解:(1)+ - 号后必须为数字或者 . (-.123 = -0.123)(2)+ - 号只出现在第一位或者 eE 后一位(3). 后面必定为数字或为最后一位(233. = 233.0)(4)eE后面必定为数字或者 + - 号public

2020-09-05 17:19:45 154

原创 JZ52 --- 正则表达式匹配

题目描述:请实现一个函数用来匹配包括 ’ . ’ 和 ’ * '的 正则表达式。模式中的字符 ’ . ’ 表示任意一个字符,而 ’ * ’ 表示它前面的字符可以出现任意次(包含0次)。在本题中,匹配是指字符串的所有字符匹配整个模式。例如,字符串"aaa"与模式"a.a"和"abaca"匹配,但是与"aa.a"和"ab*a"均不匹配。题解:设置指针 i ,指针 j 分别指向 str数组 和 pattern数组。当前 i,j 所指向的元素相等,两指针全都向后移。当前 j 指向的元素为 ’ .

2020-09-04 13:02:08 235

原创 JZ51 --- 构建乘积数组

题目描述:给定一个数组A[0,1,…,n-1],请构建一个数组B[0,1,…,n-1],其中B中的元素B[i]=A[0]A[1]…*A[i-1]A[i+1]…*A[n-1]。不能使用除法。(注意:规定B[0] = A[1] * A[2] * … * A[n-1],B[n-1] = A[0] * A[1] * … * A[n-2];)对于A长度为1的情况,B无意义,故而无法构建,因此该情况不会存在。题解:由题知:B[i] 是 A数组中所有元素的乘积但不包括 A[i]。这里需要考虑两个特殊情况:(

2020-09-03 22:29:49 102

原创 JZ50 --- 数组中重复的数字

题目描述:在一个长度为n的数组里的所有数字都在0到n-1的范围内。 数组中某些数字是重复的,但不知道有几个数字是重复的。也不知道每个数字重复几次。请找出数组中任意一个重复的数字。 例如,如果输入长度为7的数组{2,3,1,0,2,5,3},那么对应的输出是第一个重复的数字2。题解:找出其中第一个重复的数字,可以利用 Set,Set中的数字必须是唯一的。 public boolean duplicate(int numbers[],int length,int [] duplication) {

2020-09-03 21:52:22 131

原创 JZ49 --- 把字符串转换成整数

题目描述:将一个字符串转换成一个整数,要求不能使用字符串转换整数的库函数。 数值为0或者字符串不是一个合法的数值则返回0题解:(1)判断是否合法。(2)判断第一个字符是 “+” 或是 “-” 。(3)循环乘加。 public static int StrToInt(String str) { int res = 0; int flag = 0; for(int i = 0;i < str.length ();i++){

2020-09-02 21:53:30 112

原创 JZ48 --- 不用加减乘除做加法

题目描述:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。题解:不用加减乘除的加法运算,需要用到位运算。(1)将两数异或异或0+00 ^ 0 = 00+10 ^ 1 = 11+01 ^ 0 = 11+11 ^ 1 = 0(答案错误)我们从以上表格可以看出,当涉及到进位时结果就会错误,所以我们需要处理进位。(2)两数相与并左移一位与运算1 & 1 = 1(需要进位)1 & 0

2020-09-02 21:16:53 95

原创 JZ47 --- 求1+2+3+...+n

题目描述:求1+2+3+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。题解:题目为等差数列的和,即 sum =(a1 + an)n/2代入题目,sum =(1 + n)n/2即sum = (n + n^2) / 2我们知道除于二就等于右移一位。public int Sum_Solution(int n) { int res =(int)( n + Math.pow (n,2)); return res

2020-08-24 21:52:23 103

原创 测试用例 --- 表情包收藏

2020-08-24 20:14:57 1260

原创 测试用例 --- 登陆界面测试

2020-08-24 20:12:15 545

原创 测试用例 --- 注册163邮箱密码

2020-08-24 20:11:21 2490

原创 JZ46 --- 孩子们的游戏(圆圈中最后剩下的数)

题目描述:每年六一儿童节,牛客都会准备一些小礼物去看望孤儿院的小朋友,今年亦是如此。HF作为牛客的资深元老,自然也准备了一些小游戏。其中,有个游戏是这样的:首先,让小朋友们围成一个大圈。然后,他随机指定一个数m,让编号为0的小朋友开始报数。每次喊到 m-1 的那个小朋友要出列唱首歌,然后可以在礼品箱中任意的挑选礼物,并且不再回到圈中,从他的下一个小朋友开始,继续0…m-1报数…这样下去…直到剩下最后一个小朋友,可以不用表演,并且拿到牛客名贵的“名侦探柯南”典藏版(名额有限哦 !! ^ _ ^ )。请你试

2020-08-24 17:54:41 153

原创 JZ45 --- 扑克牌顺子

题目描述:LL今天心情特别好,因为他去买了一副扑克牌,发现里面居然有2个大王,2个小王(一副牌原本是54张_)…他随机从中抽出了5张牌,想测测自己的手气,看看能不能抽到顺子,如果抽到的话,他决定去买体育彩票,嘿嘿!!“红心A,黑桃3,小王,大王,方片5”,“Oh My God!”不是顺子…LL不高兴了,他想了想,决定大\小 王可以看成任何数字,并且A看作1,J为11,Q为12,K为13。上面的5张牌就可以变成“1,2,3,4,5”(大小王分别看作2和4),“So Lucky!”。LL决定去买体育彩票啦。

2020-08-24 10:10:20 576

原创 JZ44 --- 翻转单词顺序列

题目描述:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?题解:(1)字符串整体翻转。(2)逐个单词翻转。public class Solution { public Stri

2020-08-23 22:48:57 133

原创 JZ43 --- 左旋转字符串

题目描述:汇编语言中有一种移位指令叫做循环左移(ROL),现在有个简单的任务,就是用字符串模拟这个指令的运算结果。对于一个给定的字符序列S,请你把其循环左移K位后的序列输出。例如,字符序列S=”abcXYZdef”,要求输出循环左移3位后的结果,即“XYZdefabc”。是不是很简单?OK,搞定它!题解:(1)当字符串为空时,直接输出空字符串。(2)旋转长度可能大于字符串长度,此时只需旋转 n %= len。(3)使用str.substring (n),其中 n 为截取字符串的始下标。(4)使

2020-08-23 21:48:04 172

原创 JZ42 --- 和为S的两个数

题目描述:输入一个递增排序的数组和一个数字S,在数组中查找两个数,使得他们的和正好是S,如果有多对数字的和等于S,输出两个数的乘积最小的。题解:因为数组是有序的,让一个指针指向数组头,一个指向数组尾,最外层的乘积就说最小的。import java.util.ArrayList;public class Solution { public ArrayList<Integer> FindNumbersWithSum(int [] array,int sum) { A

2020-08-23 21:13:36 99

原创 leetcode46 --- 全排列

题目:给定一个没有重复 数字的序列,返回其所有可能的全排列。示例:题解:以下文字内容全部来组leetcode题解区:https://leetcode-cn.com/problems/permutations/solution/hui-su-suan-fa-python-dai-ma-java-dai-ma-by-liweiw/「回溯」算法(深度优先遍历 + 状态重置 + 剪枝)首先介绍“回溯”算法的应用。“回溯”算法也叫“回溯搜索”算法,主要用于在一个庞大的空间里搜索我们所需要的问题

2020-08-21 22:37:35 194

原创 SQL --- 视图

概念视图是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和列数据来自由定义视图的查询所引用的表,并且在引用视图时动态生成。为什么使用视图?重用SQL语句。简化复杂的SQL操作。在编写查询后,可以方便的重用它而不必知道其基本查询细节。使用表的一部分而不是整个表。保护数据。可以授予用户访问表的特定部分的权限,而不是整个表的访问权限。更改数据格式和表示。视图可返回与底层表的表示和格式

2020-08-20 10:53:50 88

原创 SQL1~10

员工信息表CREATE TABLE employees (emp_no int(11) NOT NULL, – ‘员工编号’birth_date date NOT NULL,first_name varchar(14) NOT NULL,last_name varchar(16) NOT NULL,gender char(1) NOT NULL,hire_date date NOT NULL,PRIMARY KEY (emp_no));工资表CREATE TABLE salarie.

2020-08-18 22:27:55 331

原创 JZ41 --- 和为S的连续正数序列

题目描述:小明很喜欢数学,有一天他在做数学作业时,要求计算出9~16的和,他马上就写出了正确答案是100。但是他并不满足于此,他在想究竟有多少种连续的正数序列的和为100(至少包括两个数)。没多久,他就得到另一组连续正数和为100的序列:18,19,20,21,22。现在把问题交给你,你能不能也很快的找出所有和为S的连续正数序列? Good Luck!输出所有和为S的连续正数序列。序列内按照从小至大的顺序,序列间按照开始数字从小到大的顺序题解:类滑动窗口,但是此题中滑动窗口大小可随意变动。publ

2020-08-18 22:03:22 123

原创 JZ40 --- 数组中只出现一次的数字

题目描述:一个整型数组里除了两个数字之外,其他的数字都出现了两次。请写程序找出这两个只出现一次的数字。题解:题解一:利用HashMappublic void FindNumsAppearOnce(int[] array, int num1[], int num2[]) { HashMap<Integer,Integer> map = new HashMap<Integer,Integer> (); for(int i = 0;i < array.leng

2020-08-18 21:23:16 185

原创 JZ39 --- 平衡二叉树

题目描述:输入一棵二叉树,判断该二叉树是否是平衡二叉树。在这里,我们只需要考虑其平衡性,不需要考虑其是不是排序二叉树。题解:平衡树(Balance Tree,BT) 指的是,任意节点的子树的高度差都小于等于1。求出每颗子二叉树的子树高度差,如果大于1那就不是平衡二叉树,反之一定是。 // 求子树高度差 public int getDepth(TreeNode root){ if(root == null){ return 0; }

2020-08-18 20:22:13 123

原创 JZ38 --- 二叉树的深度

题目描述:输入一棵二叉树,求该树的深度。从根结点到叶结点依次经过的结点(含根、叶结点)形成树的一条路径,最长路径的长度为树的深度。题解:题解一:递归实现。public int TreeDepth(TreeNode root) { if(root == null){ return 0; } int left = TreeDepth (root.left); int right = TreeDepth (root.right); return M

2020-08-18 11:47:07 217

原创 如何测出四毫升的水?

题目:只有两个杯子,有充足的水,一个5毫升,一个3毫升。如何量出4毫升的水?答:先将 3ml 的杯子装满水,倒进 5ml 的杯子中,此时 5ml 的杯子中有 3ml 的水。再将 3ml 的杯子装满水,倒进 5ml 的杯子中,此时 5ml 的杯子只能装的下 2ml 的水,3ml 杯子中还余 1ml 的水。将 5ml 杯子中的水全部倒掉,余下的 1ml 水倒进 5ml 杯子中。将 3ml 杯子接满水,倒进 5ml 杯子中,此时被子中的水为 1+3=4ml。...

2020-08-18 10:13:48 4408

空空如也

空空如也

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

TA关注的人

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