- 博客(43)
- 收藏
- 关注
原创 ThreadLocal详解
ThreadLocal是java提供的线程私有局部变量的工具。以ThreadLocal为键,任意类型为值,每个线程可以持有自己的变量。
2025-03-02 20:24:10
699
原创 京东物流一面面经
remove也一样的,先用hash算法算出地址,然后去校验key是否相等,不相等的话向后遍历找符合key的。ThreadLocal是java的一种线程局部变量副本,线程之间不会共享这些副本。通常用于多线程环境下存储当前线程的变量如traceId等。在设计线程池时,设计等待队列主要是为了有效地管理线程的执行和任务的调度。可以平衡系统的负载,避免任务丢失,确保任务得到合理的分配。通过等待队列的引入,线程池能够有效管理任务流量,根据先入先出的策略,允许线程池在高负载时有更多的控制空间。
2025-02-28 17:40:43
795
原创 idea上远程debug代码
需求背景我们希望在本地可以方便的知道远程服务器上代码的运行时状态,如果靠打日志终归有点不方便,而且可能打日志的地方不对就需要多次push代码。实现工具服务器:阿里云ESC编辑器:idea2019JDK:1.8杂七杂八:maven3.6.3、springboot实现流程新建springboot项目:就最简单的springboot项目,插件选一个web就好,目的是测试新建一个controller,贴上我的项目路径:新建并编辑controller,以下是我已经开启了debug模式:
2021-01-15 22:09:53
399
1
原创 并查集
什么是并查集并查集主要用于解决分组问题,它用来管理一系列不想交的集合,支持如下两种操作:合并:把两个不相交的集合合并为一个集合查询:查询某个元素的根节点,可以判断两个元素的根节点是否相等判断两个元素是否在一个并查集中。**最佳应用:**亲戚问题题目背景若某个家族人员过于庞大,要判断两个人是否是亲戚,确实还很不容易,现在给出某个亲戚关系图,求任意给出的两个人是否具有亲戚关系。题目描述规定:x和y是亲戚,y和z是亲戚,那么x和z也是亲戚。如果x,y是亲戚,那么x的亲戚都是y的亲戚,y的亲戚
2021-01-13 23:51:26
1548
原创 快速排序——Java&&Go
快速排序基本思想快速排序的思想是指将带排序的数组分为左右两部分,以一个基准数分开,每次调整当前数组的左侧都比基准数小,右侧都比基准数大。对左右两个数组再次执行上述过程,直到子数组的长度为1,此时数组为有序的。排序流程从数组中选出一个基准数,个人习惯设置为待排序数组的第一个元素,声明:int i = left;int j = right;int K = nums[i];从j开始向左循环数组,直到找到一个小于基准数的元素,进行nums[i] = nums[j],因为我们初始声明了基准数int
2020-12-28 23:26:21
194
原创 goByExample——channels
channelschannel 是连接多个 go 程的管道,你可以使用一个 go 程去给 channel 发送值并且使用另一个 go 程接收值。声明channel我们使用 make(chan val-type) 的语法来声明一个 channel。package mainimport "fmt"func main() { // 声明一个 channel 采用 make(chan val-type) 语法 messages := make(chan string) // 向 chan
2020-09-01 15:16:38
245
原创 关于window.location.replace()以及history.go()方法
需求当我们从商品列表界面点击商品进入商品编辑界面后,我们点击保存按钮,再跳转回商品列表界面。但此时会有一个问题,在商品列表界面返回上一界面,会返回到商品编辑界面。而我们希望它能返回到它真正的上一级,也就是我如果在主页点击该界面,编辑商品完成后,我应该返回主界面。模拟定义三个界面,home.html表示主界面,index.html表示商品列表界面,index1.html表示商品编辑界面,如下:<!DOCTYPE html><html> <head> <
2020-07-03 18:07:14
7908
原创 mysql更改my.ini后无法启动服务
前提背景使用mysql.msi安装mysql后,默认安装到了C盘,于是想把mysql的数据文件移到D盘中,所以就修改了my.ini文件,之后mysql服务无法启动。解决方法很多编辑软件默认为UTF-8编码,但是my.ini编码格式为ANSI,修改回来更改数据文件时,需要将已有的Data文件夹剪切复制到你更改的文件夹中补充使用msi方式安装mysql后,my.ini文件会在C盘的隐藏目录C:\ProgramData\MySQL\MySQL Server 5.7中。更改数据目录就是my.i
2020-07-01 13:01:30
1844
原创 有效的数独——Go
题目描述判断一个 9x9 的数独是否有效。只需要根据以下规则,验证已经填入的数字是否有效即可。数字 1-9 在每一行只能出现一次。数字 1-9 在每一列只能出现一次。数字 1-9 在每一个以粗实线分隔的 3x3 宫内只能出现一次。数独部分空格内已填入了数字,空白格用 ‘.’ 表示。示例 1:输入:[[“5”,“3”,".",".",“7”,".",".",".","."],[“6”,".",".",“1”,“9”,“5”,".",".","."],[".",“9”,“8”,".","
2020-06-16 17:52:07
293
原创 两个数组的交集 II——Go
题目描述给定两个数组,编写一个函数来计算它们的交集。示例 1:输入: nums1 = [1,2,2,1], nums2 = [2,2]输出: [2,2]示例 2:输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]输出: [4,9]思路分析计算重复的交集,我们可以采用一个数组或者map集合来记录其中一个数组出现的次数遍历另一个数组,得到上一个数组出现过的数,并记录到一个新的切片中即可代码实现/*** 声明map,记录较短的数组,之后遍历长数组
2020-06-16 14:37:23
303
原创 springboot+jQuery+JPA小小小项目
项目概述平时我们工作学习中,需要记录到自己改动过哪些文件,以方便自己日后总结归纳或者上线等。那么一般我们可以采用表格来做,不过作为小小程序员,兴趣之下就做了这个小小小项目,用来记录文件的修改记录,提供记录的增删改查功能。技术选型后端框架采用springboot整合JPA进行。因为springboot可以快速搭建一个web项目,而由于界面只涉及到一个表,也就是改动记录的表,所以使用JPA可以很方便地进行数据库操作前端框架因为是个前端小菜鸡,采用的是jQuery框架。数据库设计在sprin
2020-06-12 20:27:21
604
原创 深度优先及广度优先详解——java
以具体的例子来距离,假设我们现在有如下一个图:我们要遍历上述这个无向图,就需要用到深度优先和广度优先遍历了,图的邻接矩阵为:[0, 1, 1, 0, 0][1, 0, 1, 1, 1][1, 1, 0, 0, 0][0, 1, 0, 0, 0][0, 1, 0, 0, 0]提一嘴邻接矩阵的意思吧,就是说 A到B是可达的,也就是1,A到C也是1,A到D并没有路线,所以A到D 是0,也...
2020-05-02 15:30:22
805
原创 平衡二叉树AVL左旋,右旋,双旋——java
概念分析平衡二叉树也叫平衡二叉搜索树,又被称为AVL树,它能保证查询效率较高他具有以下特点:它是一颗空树或者它的左右两颗子树的高度差的绝对值不大于一,并且左右子树都是平衡二叉树,其也满足二叉排序树的特点小练习看过上述的概念之后,我们应该可以分辨哪些是平衡二叉树。为什么出现平衡二叉树上一章讲的是二叉排序树,其效率一般是大于链表的,那么如果我们添加的数列是{1,2,3,4,5,6}呢...
2020-04-29 23:58:43
1128
1
原创 二叉排序树——BST(java)
概念分析二叉排序树:对于二叉排序树的任何一个非叶子节点,要求左子结点的值比当前结点的值要小,右子结点的值比当前结点的值要大。如果有相同的值,可以将该结点放在左子结点或者右子结点。注:下文中所有BST均代表二叉排序树(BinarySortTree)图解我们将数组{7, 3, 10, 12, 5, 1, 9, 2}依次添加进BST中。建立一个BST叶子节点class BinarySor...
2020-04-28 22:19:30
459
1
原创 堆排序——Java与Go实现
概念分析堆排序是使用堆这种数据结构进行排序的方法。(好像是废话)思路分析首先,我们将待排序的数组看作一个完全二叉树将此二叉树转成大顶堆或者小顶堆将堆顶元素与堆的最后一个元素互换,之后丢弃最后一个元素重复第二步与第三步,知道堆只剩一个堆顶具体解析什么是完全二叉树?对于一个深度为k,有n个节点的二叉树,其所有的结点与深度为k的满二叉树对应的编号一样,则称之为完全二叉树。数组如...
2020-04-26 12:07:32
254
原创 力扣3.—— 无重复字符的最长子串
1. 题目描述给定一个字符串,请你找出其中不含有重复字符的 最长子串 的长度。示例 1:输入: “abcabcbb”输出: 3解释: 因为无重复字符的最长子串是 “abc”,所以其长度为 3。示例 2:输入: “bbbbb”输出: 1解释: 因为无重复字符的最长子串是 “b”,所以其长度为 1。示例 3:输入: “pwwkew”输出: 3解释: 因为无重复字符的最长子串是...
2020-04-13 14:37:21
126
原创 浅谈Go中的init()
1. init()函数init()函数会在包被初始化后自动执行,并且在main()函数之前执行,但是需要注意的是init()以及main()函数都是无法被显式调用的,如下图:运行报错如下:2. 执行顺序那么init()是不是最先执行的呢? 答案是否定的,首先,在他之前会进行全局变量的初始化;如下代码:main.go:package mainimport ( "fmt" "ch...
2020-03-31 21:03:11
1337
原创 java、Go实现希尔排序
1. 希尔排序上篇文章我们讲述了插入排序,其效率高于冒泡以及选择排序,但是插入排序有一个问题就是如果数组中较小的数字在后方,那么数组需要移动的次数是很多的,于效率而言是不好的,由此我们引出了希尔排序。我们可以将数组中较小的数先放在数组靠前的位置,之后再进行插入排序,这样的话效率肯定会提升,此排序方法就为希尔排序。2. 实现思路将数组分为若干个小组,每个小组内进行插入排序。分小组的规则为:定...
2020-03-31 18:38:22
138
原创 GO、JAVA实现冒泡、选择、插入排序
1. 冒泡排序数组中每一个元素与其后一个元素进行比较,较大的或者较小的放在后面,即其与后面这个元素换位置。即第一个与第二个比,第二个与第三个比,知道倒数第二个与倒数第一个比,之后在数组的末尾就是最大或者最小的数了;之后继续上一个步骤,不过由于上一趟排序中,最后一个数已经为有序的,所以只需要比较到倒数第三个与倒数第二个比较;之后比较的次数逐次减少。java代码private void bubb...
2020-03-28 00:35:46
167
原创 Go、java实现八皇后问题
题目描述八皇后问题,一个古老而著名的问题,是回溯算法的典型案例。该问题由国际西洋棋棋手马克斯·贝瑟尔于 1848 年提出:在 8×8 格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。高斯认为有 76 种方案。1854 年在柏林的象棋杂志上不同的作者发表了 40 种不同的解,后来有人用图论的方法解出 92 种结果。计算机发明后,有多...
2020-03-27 18:19:19
266
原创 任意实体类转map集合
思路因为程序不知道具体转化时具体需要处理哪个实体类,所以运用反射机制。获取到传入的类之后,获取该类所有方法,得到该方法的get方法(一般实体类里只有属性,get、set方法吧),通过get方法得到属性的值,并且截取方法名get之后的字段,即为参数名。代码package com.nansl.util;import java.lang.reflect.InvocationTargetExce...
2020-03-26 15:17:43
1324
原创 遍历对角线——力扣498
题目描述给定一个含有 M x N 个元素的矩阵(M 行,N 列),请以对角线遍历的顺序返回这个矩阵中的所有元素,对角线遍历如下图所示。示例:输入:[[ 1, 2, 3 ],[ 4, 5, 6 ],[ 7, 8, 9 ]]输出: [1,2,4,7,5,3,6,8,9]解释:来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems...
2020-03-26 11:28:45
309
原创 java递归实现迷宫出口问题
1. 题目描述给定一个m*n的迷宫,随机给出障碍物,使得小球从起点可以走到出口2. 迷宫设计这个视自己喜好设定,障碍物也随便设点,使用二维数组模拟迷宫,1即为墙壁与障碍物3. 思路分析使用递归来模拟小球运动,假设小球从(1,1)开始,到(n-1,m-1)即为找到出口。我们规定 2 为可以找到下一条路线的点,3 为四处无法行走的点,未走过的点为0.行进方向自行规定,此处我使用顺...
2020-03-25 23:21:07
574
原创 中缀转后缀表达式——java(附四则运算)
1. 后缀表达式后缀表达式,即为逆波兰表达式,其运算方法为从左到右扫描表达式,当遇到符号时,取该符号前两位数,使用前一个数运算后一个数,将结果放入刚才两个数的位置,运算的两个数以及符号便去掉。由此得知,使用栈运算会很方便,下面会有完整的计算一个四则运算表达式的代码2. 思路分析1.将字符串转化为list,目的是方便操作2.简历一个符号栈与结果队列,符号栈用于存储遍历得到的符号,队列利用其先...
2020-03-24 23:21:52
260
原创 逆波兰表达式求值——力扣题库
1. 题目描述根据逆波兰表示法,求表达式的值。有效的运算符包括 +, -, *, / 。每个运算对象可以是整数,也可以是另一个逆波兰表达式。说明:整数除法只保留整数部分。给定逆波兰表达式总是有效的。换句话说,表达式总会得出有效数值且不存在除数为 0 的情况。示例 1:输入: [“2”, “1”, “+”, “3”, “*”]输出: 9解释: ((2 + 1) * 3) = 9...
2020-03-23 22:07:16
261
原创 约瑟夫问题——环形链表实现
1. 约瑟夫问题约瑟夫问题是个有名的问题:N个人围成一圈,从第一个开始报数,第M个将被杀掉,最后剩下一个,其余人都将被杀掉。例如N=6,M=5,被杀掉的顺序是:5,4,6,2,3,1。2. 思路分析采用环形链表的方式,该链表中存储first结点与cur结点,分别表示第一个人与最后一个人,其中cur.next = first,即最后一个人指向第一个人。采取循环的方式进行,设置计数器times...
2020-03-18 23:28:42
767
原创 反转单链表——力扣面试题24
1. 思路本方法为头插法,即建立一个新的头结点,将原链表按序插入到头结点后,新插入的节点的next域指向之前的结点。1.1 图解1.2 运行结果2. 代码/** * Definition for singly-linked list. * public class ListNode { * int val; * ListNode next; * Li...
2020-03-16 09:45:53
171
原创 单链表——java
1. 单链表单链表是一种链式存储结构,其包括data域以及next域。data内存放数据,next指向下一个节点。1.1 巨丑的图解如图即是单链表的逻辑结构2. 操作2.1 节点类class Node<E>{ /** * data域 */ public E data; public Node<E> next;...
2020-03-15 10:51:42
109
原创 数组实现队列——java
1.队列队列是一种线性表,它在队列尾部插入元素,在队列头删除元素。2.设计采用静态数组的方式实现队列,并且测试使用,所以只支持int类型,感兴趣的朋友可以自己制作泛型队列。其中设计指向头的元素:front,指向最后一个元素的下一个:rear,队列的空间:maxSize,队列的数据:data[]。front 指向队列的头元素,从0开始rear 指向队列尾元素的下一个元素 从0开始 当fr...
2020-03-12 23:08:26
107
原创 数据结构——稀疏数组(java)
1.概念分析稀疏数组:二维数组中存在大量的无意义元素,而其中有意义的元素只占很少一部分,此时我们可以将其进行压缩,来达到减少内存消耗的作用。2.举例0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ...
2020-03-07 10:17:11
140
原创 力扣有效的括号
1.题目描述给定一个只包括 ‘(’,’)’,’{’,’}’,’[’,’]’ 的字符串,判断字符串是否有效。有效字符串需满足:左括号必须用相同类型的右括号闭合。左括号必须以正确的顺序闭合。注意空字符串可被认为是有效字符串。2.解题思路利用栈后进先出的特性,记录所有左括号,之后判断有括号是否与栈顶元素匹配3.代码import java.util.Stack;class Solu...
2020-02-26 21:56:14
343
原创 LeetCode最小栈
1.题目描述设计一个支持 push,pop,top 操作,并能在常数时间内检索到最小元素的栈。push(x) – 将元素 x 推入栈中。pop() – 删除栈顶的元素。top() – 获取栈顶元素。getMin() – 检索栈中的最小元素。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push...
2020-02-26 20:18:17
105
原创 List.add(Map)重温java参数传递
1.情景描述 //test1 public static void main(String[] args){ List<HashMap<String,Object>> list = new ArrayList<HashMap<String, Object>>(); for(int i=0;i<5;i++){...
2019-11-26 10:35:13
1578
原创 Oracle如何将两个没有关联的表查询出来的结果合在一起
今天工作中遇到的需求,要查出几个表中的数据,但是本着方便客户的思想,想将这几条查询语句变成一条,只需要一次就可以查询到所有的结果,妹滴狠。1. 使用子查询以及union all,拼接查询结果1.1 union all 解析union all,用于合并两个或多个select语句的结果集。需注意,列的数量必须相同,列名不必相同,列的类型也不必相同,如下:--建表 Create table T...
2019-11-15 17:33:45
14243
2
原创 选择排序详解——java实现
1.概念选择排序是一种很容易理解和实现的简单排序算法。它的原理是:找到数组中最大(或最小)的元素,同该数组第一个(或最后一个)元素进行对换;之后在未完成排序的元素中(从第二个开始以后或者从倒数第二个以前)找到最小的元素,同第二个(或倒数第二个)元素进行对换;之后如上步骤继续,直至数组长度减一次为止,完成排序。即每次总是在选择最小的或最大的元素(取决于你心情,爱咋排咋排),所以叫做选择排序。2....
2019-11-07 16:38:43
131
原创 DataGrip连接MySQL报错
Server returns invalid timezone. Go to ‘Advanced’ tab and set ‘serverTimezon’原因:时区错误解决办法:打开mysql的客户端,输入密码后执行以下语句 set global time_zone='+8:00';再次连接后成功...
2019-10-15 16:52:07
612
原创 留着看MarkDown的操作
这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Ma...
2019-10-15 16:47:35
85
原创 spring 装配bean(基于xml)-------实例工厂
创建maven项目创建之后的项目骨架如图所示配置pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h...
2018-10-16 10:42:11
309
原创 Spring装配Bean(基于xml)-----静态工厂
建立项目,完成后的项目骨架如图所示配置pom.xml<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://...
2018-10-16 10:00:30
418
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人