- 博客(220)
- 收藏
- 关注

原创 Java后端开发技术栈好文收藏【持续更新】
Java8系列之重新认识HashMap【基本功】不可不说的Java“锁”事从ReentrantLock的实现看AQS的原理及应用
2021-03-24 19:24:47
372

原创 西安交通大学控制专硕学硕考研资料清单(自动控制、数字信号处理、信号与系统)
材料目录1. 西交本科课程PPT自动控制原理 PPT信号与系统 PPT数字信号处理 PPT2. 教材《自动控制原理》 张爱民(附 课后习题答案)《数字信号处理》 邹理和《数字信号处理》 程佩青《信号与系统》 奥本海姆3. 辅导书自动控制理论学习指导典型题解(本校本科辅导书)数字信号处理学习指导典型题解(本校本科辅导书)4. 本校期末考题、考研真题往年考研真题自控 2001-2008信号与系统 1999-2008数字信号处理 22003-2008、20198
2020-12-03 10:27:04
3929
13

原创 小白入门SpringBoot项目【2】:员工管理系统(管理员注册、登录、员工增删改查)
员工管理系统一、项目简介二、部分代码解析2.1 实体类2.2 注册过程中的验证码逻辑2.3 验证码工具类说明:本项目非常适合小白入门,如果读者的水平比较高的话,可能这个项目对你并不会有什么额外的收获。欢迎读者在评论区互相交流讨论。对小白的收获可能包括:入门SpringBoot、Mybatis、Thymeleaf的使用。GitHub项目地址Gitee项目地址一、项目简介基于SpringBoot,利用Mybatis框架,前端使用Thymeleaf整合。实现了管理员的注册、登录,已
2020-11-17 19:27:38
3299
3

原创 小白入门SpringBoot项目【1】:在线文件管理系统(用户登录、文件上传、文件在线预览、文件下载)
在线文件管理系统一、简介二、技术点application.properties解释三、核心功能代码解析3.0 首先看一下实体类3.1 文件上传3.2 文件下载(预览)3.3 文件删除说明:本项目非常适合小白入门,如果读者的水平比较高的话,可能这个项目对你并不会有什么额外的收获。欢迎读者在评论区互相交流讨论。对小白的收获可能包括:入门SpringBoot、Mybatis、Thymeleaf的使用。GitHub项目地址点击下载源码一、简介本项目是基于Spring Boot,利用Mybatis框
2020-11-16 21:39:17
3650
7

原创 【每周更新】Java数据结构与算法
数据结构【数据结构 1】顺序表及其Java实现【数据结构 2】单向链表及其Java实现【数据结构 3】双向链表及其Java实现【数据结构 4】栈及其Java实现【数据结构 5】队列及其Java实现【数据结构 6】符号表及其Java实现(使用链表实现)【数据结构 7】二叉查找树及其Java实现【数据结构 8】并查集及其Java实现(待更新)【数据结构 9】优先队列及其Java实现(待更新)【数据结构 10】无向图及其Java实现(深度or广度优先搜索、路径查找)【数据结构 11】有向图及
2020-11-09 00:22:08
302
原创 互联网大厂笔试都考什么题?最新各大厂秋招春招实习笔试题合集【持续更新...】
本文整理网上的大厂笔试题。主要是让读者可以感受一下各个厂的笔试难度!如有侵权,请私信删除!.
2022-03-11 19:59:43
5594
原创 后端开发业务场景一文总结【持续收藏更新】
本文记录一些业务场景下的优秀设计思路12306抢票,极限并发带来的思考?实战!聊聊如何解决MySQL深分页问题
2021-09-28 21:47:19
845
原创 【Java并发编程】测试JUC的原子操作类,多线程对原子变量的有序自增操作
1、原子变量AtomicBoolean、AtomicInteger、AtomicLong 和 AtomicReference 的实例各自提供对相应类型单个变量的访问和更新。每个类也为该类型提供适当的实用工具方法。AtomicIntegerArray、AtomicLongArray 和 AtomicReferenceArray 类进一步扩展了原子操作,对这些类型的数组提供了支持。这些类在为其数组元素提供 volatile 访问语义方面也引人注目,这对于普通数组来说是不受支持的。源码中核心方法:bool
2021-03-31 10:28:48
304
原创 【Java并发编程】测试volatile变量的多线程可见性
1. 使用volatile定义一个类,实现Runnable接口,类中定义一个由volatile修饰的布尔成员变量。重写run方法,在run方法中修改成员变量。class ThreadDemo implements Runnable { private volatile boolean flag = false; @Override public void run() { try { Thread.sleep(200); } catch (InterruptedExcepti
2021-03-31 09:50:20
282
原创 Java利用HttpClient发送请求生成微信支付二维码、查询支付状态
一、HttpClient工具类import org.apache.http.Consts;import org.apache.http.HttpEntity;import org.apache.http.NameValuePair;import org.apache.http.client.ClientProtocolException;import org.apache.http.client.entity.UrlEncodedFormEntity;import org.apache.http
2021-03-03 16:54:22
3339
2
原创 Java实现订单编号工具类
public class OrderNoUtil { /** * 获取订单号 * @return */ public static String getOrderNo() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String newDate = sdf.format(new Date()); String result =
2021-03-03 16:09:24
2748
1
原创 Java实现MD5加密工具类
public final class MD5 { public static String encrypt(String strSrc) { try { char hexChars[] = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; byte[] bytes = strSr
2021-03-03 10:27:17
394
原创 Java随机数4位6位生成工具类
public class RandomUtil { private static final Random random = new Random(); private static final DecimalFormat fourdf = new DecimalFormat("0000"); private static final DecimalFormat sixdf = new DecimalFormat("000000"); public static String getFour
2021-03-02 20:21:57
767
原创 JWT工具类
public class JwtUtils { public static final long EXPIRE = 1000 * 60 * 60 * 24; //设置token过期时间 public static final String APP_SECRET = "ukc8BDbRigUDaY6pZFfWus2jZWLPHO"; //密钥 //生成token字符串的方法 public static String getJwtToken(String id, String
2021-03-02 19:55:48
480
原创 【设计模式】设计模式的目的和重要性
一、设计模式的重要性软件工程中, 设计模式(design pattern)是对软件设计中普遍存在(反复出现)的各种问题,所提出的解决方案。这个术语是由埃里希·伽玛(Erich Gamma)等人在 1990 年代从建筑设计领域引入到计算机科学的。没有设计模式写的软件:用了设计模式写的软件:二、为什么需要设计模式?考虑这么几个问题:拿实际工作经历来说, 当一个项目开发完后,如果 客户提出增新功能,怎么办?面对新功能的需求,软件如何保证可扩展性?如果项目开发完后,原来程序员
2021-01-09 21:22:21
2466
原创 【LeetCode击败99%+】设计一个支持增量操作的栈
题目请你设计一个支持下述操作的栈。实现自定义栈类 CustomStack :CustomStack(int maxSize):用 maxSize 初始化对象,maxSize 是栈中最多能容纳的元素数量,栈在增长到maxSize 之后则不支持 push 操作。void push(int x):如果栈还未增长到 maxSize ,就将 x 添加到栈顶。int pop():弹出栈顶元素,并返回栈顶的值,或栈为空时返回 -1 。void inc(int k, int val):栈底的 k个元素
2021-01-08 21:08:48
154
原创 【LeetCode击败99%+】栈的最小值
题目请设计一个栈,除了常规栈支持的pop与push函数以外,还支持min函数,该函数返回栈元素中的最小值。执行push、pop和min操作的时间复杂度必须为O(1)。示例:MinStack minStack = new MinStack();minStack.push(-2);minStack.push(0);minStack.push(-3);minStack.getMin(); --> 返回 -3.minStack.pop();minStack.top(); -
2021-01-08 21:05:48
125
原创 【LeetCode击败99%+】化栈为队
题目实现一个MyQueue类,该类用两个栈来实现一个队列。示例:MyQueue queue = new MyQueue();queue.push(1);queue.push(2);queue.peek(); // 返回 1queue.pop(); // 返回 1queue.empty(); // 返回 false说明:你只能使用标准的栈操作 – 也就是只有 push to top, peek/pop from top, size 和 is empty操作是合法的。 你
2021-01-08 21:02:29
219
原创 【LeetCode击败99%+】用栈操作构建数组
题目给你一个目标数组 target 和一个整数 n。每次迭代,需要从 list = {1,2,3…, n} 中依序读取一个数字。请使用下述操作来构建目标数组 target :Push:从 list 中读取一个新元素, 并将其推入数组中。Pop:删除数组中的最后一个元素。如果目标数组构建完成,就停止读取更多元素。题目数据保证目标数组严格递增,并且只包含 1 到 n 之间的数字。请返回构建目标数组所用的操作序列。题目数据保证答案是唯一的。示例 1:输入:target =
2021-01-08 20:55:35
161
原创 【LeetCode击败99%+】文件夹操作日志搜集器
题目每当用户执行变更文件夹操作时,LeetCode 文件系统都会保存一条日志记录。下面给出对变更操作的说明:"../" :移动到当前文件夹的父文件夹。如果已经在主文件夹下,则 继续停留在当前文件夹 。"./" :继续停留在当前文件夹。"x/" :移动到名为 x 的子文件夹中。题目数据 保证总是存在文件夹 x 。给你一个字符串列表 logs ,其中 logs[i] 是用户在 ith 步执行的操作。文件系统启动时位于主文件夹,然后执行 logs 中的操作。执行完所有变更文件夹操作
2021-01-08 20:13:22
187
原创 【LeetCode击败99%+】MySQL——变更性别
题目给定一个 salary 表,如下所示,有 m = 男性 和 f = 女性 的值。交换所有的 f 和 m 值(例如,将所有 f 值更改为 m,反之亦然)。要求只使用一个更新(Update)语句,并且没有中间的临时表。注意,您必只能写一个 Update 语句,请不要编写任何 Select 语句。例如:| id | name | sex | salary ||----|------|-----|--------|| 1 | A | m | 2500 || 2 | B
2021-01-08 20:09:09
163
原创 大白话讲解JVM那点事【持续更新和语言打磨】
Part I 内存与垃圾回收第1章:JVM与Java体系结构第2章:类加载子系统第3章:运行时数据区概述及线程第4章:程序计数器第5章:虚拟机栈第6章:本地方法接口第7章:本地方法栈第8章:堆第9章:方法区第10章:对象的实例化内存布局与访问定位第11章:直接内存第12章:执行引擎第13章:StringTable第14章:垃圾回收概述第15章:垃圾回收相关算法第16章:垃圾回收相关概念第17章:垃圾回收器...
2021-01-05 22:14:27
86
原创 【LeetCode击败99%+】患某种疾病的患者
题目患者信息表: Patients+--------------+---------+| Column Name | Type |+--------------+---------+| patient_id | int || patient_name | varchar || conditions | varchar |+--------------+---------+patient_id (患者 ID)是该表的主键。'conditions' (疾病)包含
2020-12-10 20:33:59
250
原创 【LeetCode击败99%+】检查两个字符串数组是否相等
题目给你两个字符串数组 word1 和 word2 。如果两个数组表示的字符串相同,返回 true ;否则,返回 false 。数组表示的字符串 是由数组中的所有元素 按顺序 连接形成的字符串。示例 1:输入:word1 = ["ab", "c"], word2 = ["a", "bc"]输出:true解释:word1 表示的字符串为 "ab" + "c" -> "abc"word2 表示的字符串为 "a" + "bc" -> "abc"两个字符串相同,返回 true示
2020-12-10 20:31:56
212
原创 【LeetCode击败99%+】MySQL——院系无效的学生
题目院系表: Departments+---------------+---------+| Column Name | Type |+---------------+---------+| id | int || name | varchar |+---------------+---------+id 是该表的主键该表包含一所大学每个院系的 id 信息学生表: Students+---------------+--
2020-12-10 20:28:31
176
原创 【LeetCode击败99%+】MySQL——使用唯一标识码替换员工ID
题目Employees 表:+---------------+---------+| Column Name | Type |+---------------+---------+| id | int || name | varchar |+---------------+---------+id 是这张表的主键。这张表的每一行分别代表了某公司其中一位员工的名字和 ID 。EmployeeUNI 表:+--------
2020-12-10 20:24:06
250
原创 【LeetCode击败99%+】柠檬水找零
题目在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false 。示例 1:输入:[5,5,5,10,20]输出:true解释:前 3 位顾客那里,我们按顺序收取 3 张
2020-12-10 20:19:01
197
原创 【LeetCode击败99%+】设计 Goal 解析器
题目请你设计一个可以解释字符串 command 的 Goal 解析器 。command 由 “G”、"()" 和/或 “(al)” 按某种顺序组成。Goal 解析器会将 “G” 解释为字符串 “G”、"()" 解释为字符串 “o” ,"(al)" 解释为字符串 “al” 。然后,按原顺序将经解释得到的字符串连接成一个字符串。给你字符串 command ,返回 Goal 解析器 对 command 的解释结果。示例 1:输入:command = "G()(al)"输出:"Goal"解释:Goa
2020-12-10 20:14:20
243
原创 【LeetCode击败99%+】不同路径
题目一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?示例 1:输入:m = 3, n = 7输出:28示例 2:输入:m = 3, n = 2输出:3解释:从左上角开始,总共有 3 条路径可以到达右下角。1. 向右 -> 向右 -> 向下2. 向右 -> 向下 -> 向右
2020-12-10 20:05:02
173
原创 【排序算法系列 7】堆排序
【排序算法系列 1】冒泡排序【排序算法系列 2】选择排序【排序算法系列 3】 插入排序【排序算法系列 4】 高级排序——希尔排序(插入排序的改进)【排序算法系列 5】 高级排序——归并排序【排序算法系列 6】 高级排序——归并排序(由冒泡排序改进)堆排序简介:堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。需求:给定一个数组:String[] arr
2020-12-05 23:09:18
333
原创 【数据结构 9】优先队列及其Java实现
【数据结构 1】顺序表及其Java实现【数据结构 2】单向链表及其Java实现【数据结构 3】双向链表及其Java实现【数据结构 4】栈及其Java实现【数据结构 5】队列及其Java实现【数据结构 6】符号表及其Java实现(使用链表实现)【数据结构 7】二叉查找树及其Java实现【未完待续…】不定期更新,内容总结整理不易,欢迎点赞关注博主!感谢!优先队列一、什么是优先队列二、最大优先队列2.1 最大优先队列API设计2.2 最大优先队列代码实现三、最小优先队列3.1 最小优先队列A
2020-12-05 22:04:44
1070
原创 【数据结构 8】并查集及其Java实现
【数据结构 1】顺序表及其Java实现【数据结构 2】单向链表及其Java实现【数据结构 3】双向链表及其Java实现【数据结构 4】栈及其Java实现【数据结构 5】队列及其Java实现【数据结构 6】符号表及其Java实现(使用链表实现)【数据结构 7】二叉查找树及其Java实现【未完待续…】不定期更新,内容总结整理不易,欢迎点赞关注博主!感谢!并查集一、什么是并查集1.1 并查集1.2 并查集的结构二、并查集设计2.1 并查集API设计2.2 并查集的实现2.2.1 UF(int
2020-12-05 21:18:27
594
原创 【LeetCode击败99%+】二叉树的最近公共祖先 III
评论:经典递归题目给定一棵二叉树中的两个节点 p 和 q,返回它们的最近公共祖先节点(LCA)。每个节点都包含其父节点的引用(指针)。Node 的定义如下:class Node { public int val; public Node left; public Node right; public Node parent;}根据维基百科中对最近公共祖先节点的定义:“两个节点 p 和 q 在二叉树 T 中的最近公共祖先节点是后代节点中既包括 .
2020-12-05 01:23:39
150
原创 【LeetCode击败99%+】最富有客户的资产总量
题目给你一个 m x n 的整数网格 accounts ,其中 accounts[i][j] 是第 i 位客户在第 j 家银行托管的资产数量。返回最富有客户所拥有的 资产总量 。客户的 资产总量 就是他们在各家银行托管的资产数量之和。最富有客户就是 资产总量 最大的客户。示例 1:输入:accounts = [[1,2,3],[3,2,1]]输出:6解释:第 1 位客户的资产总量 = 1 + 2 + 3 = 6第 2 位客户的资产总量 = 3 + 2 + 1 =
2020-12-05 01:23:23
259
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人