自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

老痒的农舍

欲望不要太多,别给自己过高的压力,不要太高估自己,了解自己,做自己能做且能做好的事情,去争取自己目前还没有做好的事情。

  • 博客(243)
  • 资源 (3)
  • 问答 (15)
  • 收藏
  • 关注

原创 ThreadLocal知识点

ThreadLocal解释ThreadLocal对象实质为ThreadLocalMap的keyThreadLocalMap是每个Thread对象中包含的一个Map容器ThreadLocalMap中存放的entry继承自WeakReference(弱引用)每个线程都用于各自的ThreadLocalMap,该容器的使用天生具有多线程访问下的互斥性。使用场景对象的跨层传递线程间的数据隔离事务操作(Spring的@Transactional)数据库连接管理,session会话管理源码阅

2022-02-05 16:12:11 923

转载 通俗讲解边缘计算

通俗讲解边缘计算通俗讲解边缘计算随着物联网越来越火,同时伴随着物联网而来的,就是各种概念和各种技术,其中一个就是边缘计算,当然还有雾计算。其实边缘计算和雾计算都差不多,雾计算只是和云计算是相对的。只是叫边缘计算呢,比较高大上吧。下面我们要通俗地讲一讲边缘计算。为什么要通俗的讲呢,怕如果不通俗,你听不明白。新的东西在出来的时候,往往是需要一个接纳和理解的过程。就像以前互联网刚出来的时候,很多人都不知道互联网,于是就得慢慢科普,让大家慢慢接受和理解呀。谁现在还解释什么是互联网呀。而边缘计算也有一段时间

2021-08-05 21:25:00 2224

原创 2021-07-31

20210729信通机房通信脚本部署知识复盘Linux命令篇0.远程ssh连接主机ssh (-p22) username@ip1.查看磁盘容量df -h2.将shell命令结果输入到文件中shell_order > file_name.txt3.解压命令tar -zxvf XXX.tar4.查看某服务进程号ps -aux | grep process_name5.杀掉某进程kill -9 process_id6.python第三方库脱机安装切换至

2021-07-31 10:42:11 259

原创 LC 11. 盛最多水的容器

错题备忘录双指针解题思路证明假设:存在l, r,使得[l, r]之间的部分构成最优解,双指针i, j分别从最左和最优向中间逼近至最优解的位置,则有一侧优先到达指定位置可证明:若i / j其中之一优先到达指定位置(这里假设i先到达l),那么[r, j)的所有竖线长度均小于等于l处竖线长度(反证法可证明)得出结论:双指针向置定位逼近时遵循,那侧小那侧移动的原则。代码class Solution {public: int maxArea(vector<int>& h) {

2021-05-02 20:31:17 142

原创 @Transactional(propagation = Propagation.REQUIRES_NEW)

请先看如下代码:@Transactionalpublic CommonReturnType funA() { //... funB(); // 调用函数B //... func(); // 调用函数C //...}@Transactional(propagation = Propagation.REQUIRES_NEW)public void funB() { //...}@Transactional(propagation = Propagation.REQUIRES)pu

2021-05-01 20:06:00 8945

原创 剑指 Offer 60. n个骰子的点数

剑指 Offer 60. n个骰子的点数从递归到动递推记忆化搜索最后一个数据点混不过去,会超时class Solution {public: int dfs(vector<vector<int>> &f, int n, int s) { if (s < 0) return 0; if (n == 0) return !s; if (f[n][s] != 0) return f[n][s];

2021-04-28 19:00:52 62

原创 LC 236. 二叉树的最近公共祖先

思路使用“类后序遍历”的做法可以使得时间复杂度为O(n),这里我们需要考虑这样一些情况,若以2进制位表示是否有我们需要的节点(000:中间为根,左右为孩子,0表示无,1表示有),即有:101:根满足情况110、011:根亦满足情况(易被忽略)代码/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right;

2021-04-14 20:51:36 252

原创 剑指 Offer 46. 把数字翻译成字符串

剑指 Offer 46. 把数字翻译成字符串思路简单递推,dp[i]表示的是以当前字符结尾可能存在的字符串种类数量,其中字符有1位和2位可以组合,因此有dp[i] = dp[i - 1] + dp[i - 2],此外有两种特殊情况需要注意:数位组合超过25不能构成字符数位首位为0(第一次做就忽略了这种情况)代码递推方法const int N = 105;class Solution {public: string num; int dp[N]; int tran

2021-04-11 22:42:13 77

原创 LC 146. LRU 缓存机制

题目连接点击这里解决思路使用哈希表 + 双链表进行存储数据,hash主要负责key -> 链表node 的映射,而node中除了存储key、val其主要作用是判断当前键值的优先级,使用频次越高的键值对放在链表的头起,使用频次低的节点向后放置。详细见代码。代码class LRUCache {public: typedef struct Node { int key, val; Node *left, *right; Node(int k

2021-04-06 09:25:58 136

转载 ByteDance常考八股文题单

ByteDance常考八股文题单Java▲ 20 Java 中垃圾回收机制中如何判断对象需要回收?常见的 GC 回收算法有哪些?▲ 18 synchronized 关键字底层是如何实现的?它与 Lock 相比优缺点分别是什么?▲ 17 hashmap 和 hashtable 的区别是什么?▲ 15 HashMap 与 ConcurrentHashMap 的实现原理是怎样的?ConcurrentHashMap 是如何保证线程安全的?▲ 11 HashMap 实现原理,为什么使用红黑树?▲ 9 h

2021-04-05 21:00:31 565

原创 LC 179. 最大数

思路自定义排序,自定义排序规则的合理性可以使用“全序关系”来证明(离散数学知识点)0的问题,除去相同元素0,见代码代码class Solution {public: // 我们自定义一种排序规则 // 该规则是否可以用来进行排序?使用“全序关系”进行证明后,满足3个条件,可用 // 1.反对称性:如果 a ≤ b 且 b ≤ a 则 a = b (易证) // 2.传递性:如果 a ≤ b 且 b ≤ c 则 a ≤ c(有点复杂,略) // 3.完整性

2021-04-05 17:07:47 153

原创 剑指 Offer 39. 数组中出现次数超过一半的数字

题目链接投票法(不一定非要按照这种做法,但是这种做法效率最高),感觉如果之前没见过,现场去想这种做法还是不现实的,现在记录一下思路可以这样理解这个问题:我们要得到的数相当于“水晶”,其他的数相当于消耗水晶的物品,因为水晶个数大于一半,所以无论最终怎么消耗,剩下的还是水晶。具体见下代码。class Solution {public: int majorityElement(vector<int>& nums) { int n = nums.size();

2021-04-05 15:35:10 60

原创 LC “打家劫舍”系列问题

针对Byte Dance某一次面试的算法题目(LC 337. 打家劫舍 III ),现做如下整理。目录LC 198. 打家劫舍 - 递推LC 213. 打家劫舍 II - 递推LC 337. 打家劫舍 III - 树形dp声明:以下“选”和“劫取”是同义词,自由替换LC 198. 打家劫舍思路对于每一所房子有两种状态,要么选择,要么不选择,使用dp[i]记录当前位置房子所能劫取到的最大价值,即有:dp[i] = max(dp[i - 1], dp[i - 2] + nums[i])代码

2021-04-04 22:00:45 120

原创 4.2面试问题复盘

4.2面试问题复盘1.varchar实际存储容量的问题情景:面试官开始问我的问题是:“在设计数据库字段是是会注意哪些问题?”(后来又追问了这个题,感觉他真正想听的是在设计字符类型数据时char与varchar的选择,以及varchar“可变长”的原理)更详细的字段设计总结问题:如果我有一个表,该表的字段声明为接受varchar(100),然后我实际上插入单词"hello",那么在mysql服务器上将使用多少实际存储空间?答案:6字节 = 5字节的实际长度 + 1字节(长度记录值,该值超过255会变

2021-04-03 18:13:10 103 1

原创 LC 面试题 17.21. 直方图的水量

题目连接将可以蕴含的总水量划分成局部区间来求当前区间可以蕴含的水量 = min(其左边区间最大高度, 其右边区间的最大高度) - 当前区间的高度LC特色:特判一下(n == 0时),不然要REC++ 代码class Solution {public: int trap(vector<int>& height) { int n = height.size(); if (n == 0) return 0; vector&lt

2021-04-03 14:25:37 92

原创 子集生成相关问题

这里选取LeetCode两道子集生成的问题LC 78. 子集(集合中无重复元素)LC 90. 子集II(集合包含重复元素)LC 78. 子集(集合中无重复元素)DFSconst int N = 15;class Solution {public: bool vis[N]; vector<vector<int>> ans; void dfs(vector<int>& nums, int x) { if

2021-03-31 13:46:09 75

原创 LC 173. 二叉搜索树迭代器

题目点击这里next() 和 hasNext() 操作均摊时间复杂度为 O(1) ,并使用 O(h) 内存的做法。其中 h 是树的高度,O(1)为平均时间复杂度。/** * Definition for a binary tree node. * struct TreeNode { * int val; * TreeNode *left; * TreeNode *right; * TreeNode() : val(0), left(nullptr), righ

2021-03-28 09:36:15 94

原创 面试题:进程与线程的区别

进程与线程的区别程序与进程程序就是我们平时说的代码(静态的)进程是程序的一次执行过程(即把代码装载到内存中跑一次,是动态的)进程与线程的区别1.从定义上区分:进程是程序的一次执行过程,是程序执行的最小单位线程是资源分配的基本单位,是调度运行的基本单位,是系统中并发执行的单位!可以这么理解,一段代码跑一趟这一趟就是一个进程,代码中的一条执行路径就是该进程中的一个线程2.一个线程只能属于一个进程,一个进程能够拥有多个进程;多线程就是允许一个进程在同一时刻执行多个任务3.

2021-03-24 16:42:41 148

原创 面试题:谈一谈CAS

谈一谈CASCAS(Compare And Swap)即比较并交换public class CASDemo { public static void main(String[] args) { AtomicInteger atomicInteger = new AtomicInteger(5); // true, 2020 System.out.println(atomicInteger.compareAndSet(5, 2020) + ", "

2021-03-24 10:27:11 161

原创 LC 456. 132模式

题目描述给定一个整数序列:a1, a2, …, an,一个132模式的子序列 ai, aj, ak 被定义为:当 i < j < k 时,ai < ak < aj。设计一个算法,当给定有 n 个数字的序列时,验证这个序列中是否含有132模式的子序列。注意:n 的值小于15000。样例example1:输入: [1, 2, 3, 4]输出: False解释: 序列中不存在132模式的子序列。example2:输入: [3, 1, 4, 2]输出: Tru

2021-03-24 10:22:41 86

转载 HTTPS要点总结

HTTPS要点总结1.HTTPS的特点HTTPS的本质还是HTTP 在TCP层加上了SSL或TLS端口:HTTP:80HTTPS:4432.HTTPS安全性1)提供验证服务,验证本次会话身份的合法性2)提供加密服务,强加密机制能保证通信中的消息不被破译3)提供防篡改服务,利用Hash算法对消息进行签名,通过验证签名保证通信内容不被篡改3.图解|----------------------------------------||

2021-03-23 23:14:32 323

原创 TCP协议的三次握手与四次挥手

TCP/IP协议的三次握手与四次挥手TCP报文的格式先明确一个问题:每一次client与server交换的东西叫 —— 报文段TCP是面向连接的,安全可靠的协议,三次握手正是为了保证能够建立一个安全可靠的连接何为安全,如何保证安全?双方都已经就绪已经做好后续数据交换的准备(协商得知对方的序列号)三次握手的全过程(客户端企图建立连接)1.客户端向服务端发起建立连接的请求在这个建立连接的请求中,标志位至1(SYN=1),随机生成一个初始的32位序列号seq=x(initial seq

2021-03-23 15:40:04 94 3

原创 LC 341. 扁平化嵌套列表迭代器

题目描述给你一个嵌套的整型列表。请你设计一个迭代器,使其能够遍历这个整型列表中的所有整数。列表中的每一项或者为一个整数,或者是另一个列表。其中列表的元素也可能是整数或是其他列表。样例输入: [[1,1],2,[1,1]]输出: [1,1,2,1,1]解释: 通过重复调用 next 直到 hasNext 返回 false,next 返回的元素的顺序应该是: [1,1,2,1,1]。使用dfs先将原List中的元素依次存储到一个数组中,完后对数组中的元素一次操作即可注意数组尺寸1e5+,题目

2021-03-23 09:09:22 44

原创 多线程基础知识复习

多线程基础知识复习程序、进程、线程的作用程序:一组指定集合(一段静态代码)- 静进程:程序的一次执行过程(把程序加载到内存让它跑起来,即运行起来的程序)- 动线程:进程可以进一步细化为线程,是程序内部的一条执行路径线程作为调度和执行的单位,每个线程拥有独立的运行栈和程序计数器补充无关知识点:单核与多核单核:一个时间只能做一件事,假的多线程多核:一个时间可以做多件事情,真正的多线程一个java应用程序至少有3个线程:main、gc、异常处理并行与并发并行:多个CPU同一时间

2021-03-22 09:43:37 66

原创 LC 92. 反转链表 II

题目描述给你单链表的头节点 head 和两个整数 left 和 right ,其中 left <= right 。请你反转从位置 left 到位置 right 的链表节点,返回 反转后的链表 。样例输入:head = [1,2,3,4,5], left = 2, right = 4输出:[1,4,3,2,5]做链表题目的关键是 画图、画图、画图!1.数组记录并交换存储的值Java 代码/** * Definition for singly-linked list. * pub

2021-03-18 14:10:56 93

原创 LC 107. 二叉树的层序遍历 II

题目描述给定一个二叉树,返回其节点值自底向上的层序遍历。 (即按从叶子节点所在层到根节点所在的层,逐层从左向右遍历)例如:给定二叉树 [3,9,20,null,null,15,7],样例 3 / \ 9 20 / \ 15 7返回其自底向上的层序遍历为:[ [15,7], [9,20], [3]]Java 代码/** * Definition for a binary tree node. * public class Tree

2021-03-17 17:40:19 97

原创 面试题:关于静态块、构造块、构造函数、普通代码块的优先级问题

面试题:关于静态块、构造块、构造函数、普通代码块的优先级问题静态块:的优先级最高,伴随类的加载而加载,且只会加载一次构造块:即成员代码块(写在类体中的代码块),优先级次于静态块,高于构造函数,且每次创建新对象都会执行构造函数:优先级次于静态块、构造块,每次创建新对象都会调用普通快:最没地位,优先级最低总结: 静态块 > 构造块 > 构造函数 > 普通快看下面一段代码,了解在继承关系中,四者的优先级及调用顺序父类public class Father { //

2021-03-15 16:10:05 287 1

原创 LC 54. 螺旋矩阵

题目描述给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。样例输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]之前自己写的模拟太蠢了,参考了下y总的思路,很清晰,高频题目,要求快速准确写出Java 代码class Solution { boolean[][] vis; List<Integer> list = new ArrayList<

2021-03-15 12:28:31 79

原创 汉诺塔问题

汉诺塔问题解决思路(分治)以三根柱子,n个圆盘为例;将一根柱子上的所有圆盘分成上n - 1堆和最下面一个,先设法将n - 1个移动到第二根柱子上(中转站),再将最大的一个盘子移动到目标柱子上;随后再将第一根柱子作为中转站,将第二根柱子上的n - 1个圆盘设法移动到目标柱子上递归求解方式详解点击这里class Solution { int ans = 0; void dfs(int n, List<Integer> A, List<Integer&gt

2021-03-15 10:32:19 99

原创 LC 705. 设计哈希集合

题目描述不使用任何内建的哈希表库设计一个哈希集合(HashSet)。实现 MyHashSet 类:void add(key) 向哈希集合中插入值 key 。bool contains(key) 返回哈希集合中是否存在这个值 key 。void remove(key) 将给定值 key 从哈希集合中删除。如果哈希集合中没有这个值,什么也不做。样例输入:["MyHashSet", "add", "add", "contains", "contains", "add", "contains", "

2021-03-13 22:08:23 98

原创 LC 331. 验证二叉树的前序序列化

题目描述序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如#。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #样例输入: "9,3,4,#,#,1,#,#,2,#,6,#,#"输出: true算法dfs模拟建树Java 代码class Solution { Strin

2021-03-12 16:33:32 77

原创 LC 227. 基本计算器 II

题目描述给你一个字符串表达式s,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。样例输入:s = "3+2*2"输出:7算法栈模拟时间复杂度O(n)O(n)O(n)Java 代码class Solution { int[] stk1; char[] stk2; int tt1 = 0, tt2 = 0; int solve(int a, int b, char op) { int ans = 0;

2021-03-11 16:56:18 114

原创 LC 224. 基本计算器

题目描述实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。样例输入:s = "(1+(4+5+2)-3)+(6+8)"输出:23算法栈模拟本题不难,难在怎么一次做对开两个栈一个存放操作数和括号(栈1,为方便负数运算,这里栈建议定义成数值型,括号可以使用特殊数值替代),一个存放运算符+、-(栈2)遇到’('直接入栈1,遇到运算符直接入栈2;遇到’)‘先不要让其入栈,弹出栈1的栈顶元素放入temp保存,再弹出栈1的栈顶元素(这个元素一定是’(’,没有为什么,按照这套

2021-03-10 16:11:51 141

原创 LC 132. 分割回文串 II

题目描述给你一个字符串 s,请你将s分割成一些子串,使每个子串都是回文。返回符合要求的 最少分割次数 。样例输入:s = "aab"输出:1解释:只需一次分割就可将 s 分割成 ["aa","b"] 这样两个回文子串。算法动态规划f(i)表示的是以i结尾的字符串所包含回文子串的数量0-i 划分为 0-k-1(以k-1结尾包含回文串的最小数量)、k-i(最后一段)即递推式:f[i] = min(f[k - 1] + 1, f[i])!因为我这里下标是从0开始的,所以当k==0时要

2021-03-08 15:03:50 116

原创 LC 131. 分割回文串

题目描述给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。样例输入: "aab"输出:[ ["aa","b"], ["a","a","b"]]算法dfs + 剪枝在回文判断中预先打表Java 代码class Solution { List<List<String>> ans = new ArrayList<>(); List<String> part = new

2021-03-07 15:13:39 87

原创 LC 503. 下一个更大元素 II

题目描述给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。样例输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数; 第二个 1 的下一个最大的数需要循环搜索,结果也是 2。注意: 输入数组的长度不会超过 10000。算法1暴

2021-03-06 15:38:47 92 2

原创 LC 354. 俄罗斯套娃信封问题

题目描述给定一些标记了宽度和高度的信封,宽度和高度以整数对形式 (w, h) 出现。当另一个信封的宽度和高度都比这个信封大的时候,这个信封就可以放进另一个信封里,如同俄罗斯套娃一样。请计算最多能有多少个信封能组成一组“俄罗斯套娃”信封(即可以把一个信封放到另一个信封里面)。说明:不允许旋转信封。样例输入: envelopes = [[5,4],[6,4],[6,7],[2,3]]输出: 3 解释: 最多信封的个数为 3, 组合为: [2,3] => [5,4] => [6,7]。

2021-03-04 15:11:13 85 1

原创 JavaSE面试题之一:写一个Singleton

JavaSE面试题之一:写一个Singleton关于Singleton的说明单例设计模式,即某个类在系统中只能有一个实例对象可被获取和使用的代码模式例如:代表JVM运行环境的Runtime类要点某个类只能有一个实例构造器私有化必须自行创建这个实例含有一个该类的静态变量来保存这个唯一实例必须自行向整个系统提供这个实例对外提供获取该实例对象的方式直接暴露用静态变量的get方法获取常见形式饿汉式:直接创建对象,不存在线程安全问题直接实例化(简洁直

2021-03-02 15:13:04 73

原创 LC 395. 至少有K个重复字符的最长子串

题目描述找到给定字符串(由小写字符组成)中的最长子串 T , 要求 T 中的每一字符出现次数都不少于 k 。输出 T 的长度。样例输入:s = "aaabb", k = 3输出:3最长子串为 "aaa" ,其中 'a' 重复了 3 次。算法(枚举 + 双指针)时间复杂度O(26∗n)O(26 * n)O(26∗n)参考文献Java 代码class Solution { int[] word = new int [26]; int K, x, y;

2021-02-27 10:42:46 83

原创 LC 1052. 爱生气的书店老板

题目描述今天,书店老板有一家店打算试营业 customers.length 分钟。每分钟都有一些顾客(customers[i])会进入书店,所有这些顾客都会在那一分钟结束后离开。在某些时候,书店老板会生气。 如果书店老板在第 i 分钟生气,那么 grumpy[i] = 1,否则 grumpy[i] = 0。 当书店老板生气时,那一分钟的顾客就会不满意,不生气则他们是满意的。书店老板知道一个秘密技巧,能抑制自己的情绪,可以让自己连续 X 分钟不生气,但却只能使用一次。请你返回这一天营业下来,最多有多少

2021-02-23 15:25:49 58 2

play framework 学生信息管理系统

本资源为校内javaEE play framework框架大作业,欢迎大家下载!

2018-12-15

play framework测试项目

一个最初的play框架的程序,为的是让大家了解play框架的结构。

2018-11-08

软件工程可行性研究课件

如有问题请访问我的博客https://blog.csdn.net/easylovecsdn给我留言

2018-10-17

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

TA关注的人

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