自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(261)
  • 资源 (3)
  • 收藏
  • 关注

原创 Spring的注入小技巧(接口前置处理,后置处理等优化写法)

接口的前置处理或是后置处理,这样写代码更优雅,可读性高,当然更有水平更装逼。前置处理或是后置处理,处理的事情肯定不是只有一件,一般都是多件。

2024-04-03 15:10:15 340

转载 万字详解,带你彻底掌握 WebSocket 用法(至尊典藏版)写的不错

WebSocket是一种协议,用于在Web应用程序和服务器之间建立实时、双向的通信连接。它通过一个单一的TCP连接提供了持久化连接,这使得Web应用程序可以更加实时地传递数据。WebSocket协议最初由W3C开发,并于2011年成为标准。

2024-04-02 10:16:39 148

转载 表设计的15个军规

对于后端开发同学来说,访问数据库,是代码中必不可少的一个环节。系统中收集到用户的核心数据,为了安全性,我们一般会存储到数据库,比如:mysql,oracle等。后端开发的日常工作,需要不断的建库和建表,来满足业务需求。通常情况下,建库的频率比建表要低很多,所以,我们这篇文章主要讨论建表相关的内容。如果我们在建表的时候不注意细节,等后面系统上线之后,表的维护成本变得非常高,而且很容易踩坑。今天就跟大家一起聊聊,数据库建表的15个小技巧,希望对你会有所帮助。

2024-03-19 09:06:30 50

转载 为什么很多人工作3年,却只有1年经验?(大佬终究是大佬)

阿里妹导读同样是在软件开发行业工作 3 年,为什么有些人经验丰富,可以独当一面,而有些人却还和工作一年的人差不多?作者给出了自己的答案。一、前言先听一个故事:程序员明明:“大师为作为一个具有 3 年工作经验的人,为啥别人 2 年工作经验比我还强呢?大师回答道:“你只是工作了三年,未必有三年的经验。程序员明明:“大师此话怎讲?大师回答道:“说来话长....,你还是直接去看悟鸣同学的文章吧.....”

2023-09-12 09:33:27 287

原创 leetcode 33 搜索旋转排序数组

( 例如,数组 [0,1,2,4,5,6,7] 可能变为 [4,5,6,7,0,1,2] )。搜索一个给定的目标值,如果数组中存在这个目标值,则返回它的索引,否则返回 -1。输入: nums = [4,5,6,7,0,1,2], target = 0。输入: nums = [4,5,6,7,0,1,2], target = 3。假设按照升序排序的数组在预先未知的某个点上进行了旋转。你的算法时间复杂度必须是 O(log n) 级别。你可以假设数组中不存在重复的元素。

2023-05-28 20:28:56 167

原创 CompletableFuture使用详解

它通过实现Actor模型来实现异步消息处理、并发管理、容错机制等功能,具有高效、稳定、可扩展、易维护等优点。CompletableFuture:CompletableFuture是Java8中新增的异步编程工具,可以极大地简化异步编程的复杂度、提高程序效率和性能,并且支持函数式编程风格,可以使代码更加简洁易读。Netty:Netty是一种Java异步网络编程框架,可以帮助开发者更加高效地处理TCP、UDP、HTTP等协议的网络编程,支持异步I/O操作、线程池、事件驱动等机制,可以提高程序的并发性和性能。

2023-04-24 16:55:01 625 1

转载 把 RabbitMQ 讲的那叫一个透彻,佩服

常见的消息队列很多,主要包括 RabbitMQ、Kafka、RocketMQ 和 ActiveMQ,相关的选型可以看我之前的系列,

2023-03-15 13:58:31 476

原创 设计模式之单例模式

单例模式,也叫单子模式,是一种常用的软件设计模式,属于创建型模式的一种。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。

2023-03-11 16:06:23 943

原创 设计模式之门面模式(外观模式)

图说设计模式》外观模式(Facade Pattern):外观模式又称为门面模式,外部与一个子系统的通信必须通过一个统一的外观对象进行,为子系统中的一组接口提供一个一致的界面,外观模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。它是一种对象结构型模式。《设计模式之禅》:要求一个子系统的外部与其内部的通信必须通过一个统一的对象进行。门面模式提供一个高层次的接口,使得子系统更易于使用。

2023-03-10 15:07:52 736

原创 项目中用到的责任链模式

将请求的发送和接收解耦,让多个接收对象都有机会处理这个请求。将这些接收对象串成一条链,并沿着这条链传递这个请求,直到链上的某个接收对象能够处理它为止。以上定义来自《设计模式之美》

2023-03-10 11:25:54 655

原创 给对象讲工厂模式,必须易懂易会

设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。使用设计模式是为了重用代码、让代码更容易被他人理解、保证代码的可靠性。设计模式共有23种,其中工厂模式是 Java 中最常用的设计模式之一,这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。

2023-03-10 10:05:39 331

原创 java常问面试题5道,offer来碗里(四)干货满满

创建、切换线程(UT)依旧是廉价的,并且可以拥有大量的线程;同时利用 LWP作为UT到KLT(内核线程)的桥梁, 享受了系统内核的线程调度、CPU映射,免去了自行实现系统调用的部分,进行系统调用时,阻塞整个进程的概率也低于 用户线程模型。方法区的作用为:存放虚拟机加载的:类型信息,域(Field)信息,方法(Method)信息,常量,静态变量,即时编译器编译后的代码缓存。区别于内核线程模型,此时线程的调度不再依赖内核,极少占据内核资源,基本限定在用户态内,所以可以突破量的限制,并且减少线程切换时的损耗。

2023-02-25 18:16:30 627

转载 Zookeeper的服务与注册原理阐述

目录前言:分布式带来的问题用 Redis 解决用 Zookeeper 解决Zookeeper的重点特性(1)树状目录结构(2)持久节点(Persistent)(3)持久有序节点(Persistent_sequential)(4)临时节点(Ephemeral)(5)临时有序节点(Ephemeral_sequential)(6)节点监听(Wacher)Zookeeper 实现服务注册发现服务注册原理服务动态发现原理小结对微服务稍有了解的小伙伴应该都听说过 Zookeeper,我们来看看在官网上是如何介绍的:作为

2022-12-07 10:51:43 1339

原创 389. 找不同(简单不一定知道)

给定两个字符串 s 和 t ,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。

2022-11-17 10:39:51 435

原创 剑指offer22链表中倒数第k个节点(必会)

输入一个链表,输出该链表中倒数第k个节点。为了符合大多数人的习惯,本题从1开始计数,即链表的尾节点是倒数第1个节点。例如,一个链表有6个节点,从头节点开始,它们的值依次是1、2、3、4、5、6。这个链表的倒数第3个节点是值为4的节点。思路:快指针先走k步,然后快慢指针一起走到快指针到头为止,这时慢指针就是答案。给定一个链表: 1->2->3->4->5, 和 k = 2.返回链表 4->5.

2022-10-24 23:44:12 707

转载 过滤器和拦截器,一篇安排的明明白白

过滤器和拦截器都是基于 AOP 思想实现的,用来处理某个统一的功能的,但二者又有 5 点不同:出身不同、触发时机不同、实现不同、支持的项目类型不同以及使用的场景不同。过滤器通常是用来进行全局过滤的,而拦截器是用来实现某项业务拦截的。

2022-10-24 14:42:35 1237

转载 Spring事务失效的这10种坑,坑坑致命!

Service}}我们可以看到add方法被定义成了final的,这样会导致spring aop生成的代理对象不能复写该方法,而让事务失效。

2022-10-24 10:33:49 243 3

转载 死锁的原因,模拟死锁,死锁排查工具和死锁的解决方案

本文介绍了死锁的概念,以及产生死锁的 4 个条件,排查死锁可以通过本文提供的 4 种工具中的任意一种来检测,从易用性和性能方面来考虑,推荐使用 jconsole 或 jvisualvm,最后我们介绍了死锁问题的两种解决方案:顺序锁和轮询锁。

2022-09-06 10:52:49 597 2

转载 对抗35岁职业危机,你要做好这三件事(写的很好转载)

老板在100楼,领导在10楼,而你在1楼,你要学会从看的细到看的远,主动跑到5楼、8楼,甚至跑到10楼看一看,再回到1楼去执行,你就理解了管理和执行的区别。知道现在市场上需要什么样的人,什么样的技能,在过去的这一段时间里,你的工作对你来说,是一种消耗,让你跟市场的需求逐步脱节了,还是一种赋能,让你的职业竞争优势更加明显了,你能够心中有数。在做事的过程中用心琢磨,有没有更高效的方法,有没有可简化的流程,别人想不到的你想到了,别人没做的你做了,甚至想方设法做到了极致,这就是价值。其一,你的能力要是核心能力。..

2022-08-26 15:08:33 331

转载 最强分布式锁工具:Redisson

什么是Redisson?Redisson是一个在Redis的基础上实现的Java驻内存数据网格(In-Memory Data Grid)。它不仅提供了一系列的分布式的Java常用对象,还提供了许多分布式服务。

2022-08-26 14:31:05 337

原创 多线程间的5种通信方式,你能说几种?

JUC必要掌握,学习第一天JUC必要掌握(Synchronized,Lock,可重入锁ReentrantLock,可重入锁,读写锁,自旋锁,线程间通信,集合的线程安全),学习第二天JUC必要掌握(Callable&Future、JUC 三大辅助类、 阻塞队列),学习第三天。

2022-08-25 09:45:08 196

原创 @Transactional注解加不加 rollbackFor = Exception.class 的区别和@Transactional 注解失效的3种原因及解决办法

4.1 第一种Transactional注解标注方法修饰符为非public时,注解将会不起作用。例如以下代码。定义一个错误的标注实现,修饰一个默认访问符的方法/****/}}}在同一个包内,新建调用对象,进行访问。//调用@Transactional标注的默认访问符方法}}测试用例@Test}}以上的访问方式,导致事务没开启,因此在方法抛出异常时,操作不会进行回滚。如果方法改为public的话将会正常开启事务,将会进行回滚。

2022-08-24 15:39:41 2217

转载 SpringBoot 读取配置文件的 5 种方法

在 Spring Boot 中读取配置文件有以下 5 种方法:使用 @Value 读取配置文件。使用 @ConfigurationProperties 读取配置文件。使用 @PropertySource 读取配置文件。使用 Environment 读取配置文件。使用原生方式读取配置文件。

2022-08-23 16:17:22 231 1

转载 Spring Boot 如何优雅的校验参数?

JSR-303是JAVA EE 6中的一项子规范,叫做。为JavaBean验证定义了相应的元数据模型和API。缺省的元数据是,通过使用XML可以对原有的元数据信息进行覆盖和扩展。在应用程序中,通过使用或是你自己定义的constraint,例如@NotNull,@Max,@ZipCode, 就可以确保数据模型(JavaBean)的正确性。constraint可以附加到字段,getter方法,类或者接口上面。对于一些特定的需求,用户可以很容易的开发定制化的constraint。

2022-08-23 16:05:57 326 2

原创 196. 删除重复的电子邮箱

[email protected]重复两次。我们保留最小的Id=1。该表的每一行包含一封电子邮件。电子邮件将不包含大写字母。所有重复的电子邮件,只保留一个id最小的唯一电子邮件。通过次数153,609提交次数226,963。仅需要写删除语句,将自动对剩余结果进行查询)查询结果格式如下所示。id是该表的主键列。...

2022-07-25 17:02:32 527

原创 185. 部门工资前三高的所有员工(必会)

公司的主管们感兴趣的是公司每个部门中谁赚的钱最多。一个部门的高收入者是指一个员工的工资在该部门的不同工资中排名前三。该表的每一行都表示员工的ID、姓名和工资。departmentId是Department表中ID的外键。编写一个SQL查询,找出每个部门中收入高的员工。-没有第三高的工资,因为只有两名员工。-兰迪和乔都赚取第二高的独特的薪水。该表的每一行表示部门ID和部门名。-威尔的薪水是第三高的。提交次数186,076。Id是该表的主键列。Id是该表的主键列。-山姆的薪水第二高。...

2022-07-25 16:41:05 232

原创 175. 组合两个表(非常简单)

表: Person+-------------+---------+| 列名 | 类型 |+-------------+---------+| PersonId | int || FirstName | varchar || LastName | varchar |+-------------+---------+personId 是该表的主键列。该表包含一些人的 ID 和他们的姓和名的信息。表: Address+-------------+-

2022-07-25 16:08:26 191

原创 177. 第N高的薪水(简单)

编写一个SQL查询来报告Employee表中第n高的工资。如果没有第n个最高工资,查询应该报告为null。该表的每一行都包含有关员工工资的信息。表Employee。查询结果格式如下所示。通过次数169,071。提交次数362,608。Id是该表的主键列。...

2022-07-25 15:21:34 259

原创 leetcode 222. 完全二叉树的节点个数(必会)

给出一个完全二叉树,求出该树的节点个数。说明:完全二叉树的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。输入: 1 / \ 2 3 / \ /4 5 6输出: 6求完全二叉树的结点个数运行结果:我要刷300道算法题,第106道...

2022-07-14 11:26:12 122

原创 leetcode162. 寻找峰值

峰值元素是指其值严格大于左右相邻值的元素。给你一个整数数组 nums,找到峰值元素并返回其索引。数组可能包含多个峰值,在这种情况下,返回 任何一个峰值 所在位置即可。你可以假设 nums[-1] = nums[n] = -∞ 。你必须实现时间复杂度为 O(log n) 的算法来解决此问题。示例 1:输入:nums = [1,2,3,1]输出:2解释:3 是峰值元素,你的函数应该返回其索引 2。示例 2:输入:nums = [1,2,1,3,5,6,4]输出:1 或 5解释:你的函数可以返回索引 1,

2022-07-12 10:47:32 102

原创 367. 有效的完全平方数(入门必会)

367. 有效的完全平方数给定一个 正整数 num ,编写一个函数,如果 num 是一个完全平方数,则返回 true ,否则返回 false 。进阶:不要 使用任何内置的库函数,如 sqrt 。示例 1:输入:num = 16输出:true示例 2:输入:num = 14输出:false提示: 1 ......

2022-07-11 19:57:23 154

原创 374. 猜数字大小(入门 必会)

374. 猜数字大小猜数字游戏的规则如下: 每轮游戏,我都会从 1 到 n 随机选择一个数字。 请你猜选出的是哪个数字。 如果你猜错了,我会告诉你,你猜测的数字比我选出的数字是大了还是小了。你可以通过调用一个预先定义好的接口 int guess(int num) 来获取猜测结果,返回值一共有 3 种可能的情况(-1,1 或 0): -1:我选出的数字比你猜的数字小 pick < num 1:我选出的数字比你猜的数字大 pick > num 0:我选出的数字和你猜的数字一样

2022-07-11 19:39:43 542

原创 二分查找(leetcode704.很简单必会的)

给定一个 n 个元素有序的(升序)整型数组 nums 和一个目标值 target ,写一个函数搜索 nums 中的 target,如果目标值存在返回下标,否则返回 -1。输入: nums = [-1,0,3,5,9,12], target = 9输出: 4解释: 9 出现在 nums 中并且下标为 4示例 2:输入: nums = [-1,0,3,5,9,12], target = 2输出: -1解释: 2 不存在 nums 中因此返回 -1我要刷300道算法题,第102道...

2022-07-11 18:38:13 99

原创 报错:注入到ioc的类用不了。 mvn clean install报错mvn <args> -rf :custdfzq-interface-impl

mvn clean install报错mvn <args> -rf :custdfzq-interface-impl;Maven install报错To see the full stack trace of the errors, re-run Maven with the -e switch.解决检查了N遍代码,百度了各种办法,尝试了各种办法 ,都没有用。最后的解决办法是:清楚idea的缓存,都是缓存惹的祸。希望可以帮助到你...

2022-06-22 14:54:07 1000

转载 听说你精通操作系统,我们来切磋下

可以这么说,操作系统是一种运行在内核态的软件。它是应用程序和硬件之间的媒介,向应用程序提供硬件的抽象,以及管理硬件资源。操作系统是什么操作系统最主要的功能:处理器(CPU)管理:CPU的管理和分配,主要指的是进程管理。内存管理:内存的分配和管理,主要利用了虚拟内存的方式。外存管理:外存(磁盘等)的分配和管理,将外存以文件的形式提供出去。I/O管理:对输入/输出设备的统一管理。除此之外,还有保证自身正常运行的健壮性管理,防止非法操作和入侵的安全性管理。操作系统主要功能可以这么说,内核是一个计算机程序,它是操作

2022-06-12 21:22:42 159

转载 听说你精通 MyBatis,我们来切磋一下

目录基础1. 说说什么是MyBatis?2. Hibernate 和 MyBatis 有什么区别?3. MyBatis使用过程?生命周期?4. 在mapper中如何传递多个参数?5. 实体类属性名和表中字段名不一样 ,怎么办?6. Mybatis是否可以映射Enum枚举类?7. #{}和${}的区别?8. 模糊查询like语句该怎么写?9. Mybatis能执行一对一、一对多的关联查询吗?10. Mybatis是否支持延迟加载?原理?11. 如何获取生成的主键?12. MyBatis支持动态SQL吗?13.

2022-06-12 20:40:02 265

原创 JUC必要掌握(Callable&Future、JUC 三大辅助类、 阻塞队列),学习第三天

目录1. Callable&Future 接口1.1 Callable1.2 Future1.3 FutureTask1.4 话不多说直接上demo(CV运行,感受一下)1.4.1 普通小demo,拿去即可运行1.4.2 线程池方式2. JUC 三大辅助类2.1 减少计数 CountDownLatch2.2 循环栅栏 CyclicBarrier2.3 信号灯 Semaphore3. 阻塞队列4. CompletableFuture1..

2022-05-31 22:42:21 465 1

原创 (多线程) 按序打印 (leetcode1114)

题目描述:我们提供了一个类:public class Foo { public void one() { print("one"); } public void two() { print("two"); } public void three() { print("three"); }}三个不同的线程将会共用一个 Foo 实例。线程 A 将会调用 one() 方法线程 B 将会调用 two() 方法线程 C 将会调用 three() 方法请设计修改程序,以确保 tw

2022-05-31 18:17:53 85

原创 JUC必要掌握(Synchronized,Lock,可重入锁ReentrantLock,可重入锁,读写锁,自旋锁,线程间通信,集合的线程安全),学习第二天

公平锁:效率高,可能线程饿死非公平锁:效率低,雨露均沾可重入锁(递归锁):synchronized(隐式)和lock(显式)都是可重入锁

2022-05-30 16:43:52 581 3

原创 JUC必要掌握,学习第一天

1.什么是进程和线程进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程是:资源分配的最小单位。线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程:程序执行的最小单位。2.wait/sleep 的区别(1)sleep 是 Thread 的静态方法,wait 是 Object 的方法,任何对象实例都能调用。(2)sleep 不会释放锁,它也不需要占用锁。wait 会释放锁,但调用它的前提是当前线程占有锁(即代码要在 synchro

2022-05-04 22:50:34 228 2

jshERP-master.zip

管理系统项目,springboot+mybatis,下载就可以跑起来。里面有所需要的各种文档,可数据设计表,可以跑着用

2020-08-05

数据结构《C语言版》清华大学出版社

数据结构《C语言版》清华大学出版社的教学PPT,需要的同学请拿走,谢谢

2019-01-13

数据结构(C语言第二版)严蔚敏PPT

数据结构(C语言第二版)严蔚敏PPT,需要的同学请拿走

2019-01-13

空空如也

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

TA关注的人

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