自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(74)
  • 资源 (1)
  • 收藏
  • 关注

原创 23种设计模式之---单例模式

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。单例模式是一种创建型设计模式,它确保一个类只有一个实例,并提供了一个全局访问点来访问该实例。

2023-09-04 16:56:21 743

原创 工作流引擎之Flowable教程(整合SpringBoot)

Flowable是什么,下面是官方文档介绍:说人话,无论是学生还是职场员工,都用过OA系统,其中的请假流程大家应该都用过,一般是:发起请假->辅导员审批->院长审批,类似这样的流程。如果自己去实现这种功能的话,我个人的想法是使用状态机模式,每个过程如何流转都需要自己去实现,比较麻烦。而Flowable框架帮我解决了这个麻烦,只需要我们遵循BPMN 2.0(可以理解为一种流程规范)就可以帮我们自动完成。而且它提供了图形化页面,只需要使用拖拽的方式就可以完成流程的定义,我们只用关注业务逻辑即可。我们先用Jav

2023-08-17 16:40:47 1190

原创 一文讲懂Spring中三级缓存如何解决循环依赖问题以及各级缓存作用

既然我们的好兄弟Map帮我们解决了这个难题,那就叫他BroMap吧。2.2依赖注入--->填充A--->单例池中找A--->creatingSet中发现了A--->出现了循环依赖--->BroMap.get("A")--->没找到就创建--->2.2依赖注入--->填充A--->单例池中找A--->creatingSet中发现了A--->出现了循环依赖--->AOP--->2.2依赖注入--->填充A--->单例池中找A--->creatingSet中发现了A--->出现了循环依赖--->AOP--->

2023-08-03 16:03:16 399 6

原创 300行代码实现简易Spring框架

目录结构如下,service包为模拟业务逻辑,spring包为spring的实现(核心),其中ApplicationContext为核心类。该简易Spring框架实现的功能有。

2023-08-02 16:09:15 178

原创 solidity50行代码实现众筹项目

solidity经典入门项目

2022-10-16 15:35:47 232 1

原创 全网最全最通俗最装b的Kafka面试题

Kafka面试题网上有很多,但我看了很多之后发现大部分的面试题要么不全,要么不深入,要么就是没顺序,要么就是说的让人根本看不懂,看了也不知道面试怎么去表达。所以参考了很多资料后,励志呕心沥血决定写一份全网最全最通俗最装b的Kafka面试题,让你看了能跟面试官去吹个几天几夜。

2022-09-26 15:49:32 586

原创 Linux常用命令&&面试题

进来看不后悔!!

2022-09-24 11:54:17 554 2

原创 手写RPC框架--基于Netty和ZooKeeper

【代码】手写RPC框架--基于Netty和ZooKeeper。

2022-09-21 16:24:43 654

原创 ZooKeeper常见面试题

是一个分布式协调服务,提供了高性能、高可用的分布式数据一致性方案。

2022-09-12 10:32:28 532

原创 常用设计模式(通俗易懂的例子,小学生都能看懂!)

常用设计模式(通俗易懂的例子,小学生都能看懂!)

2022-08-29 16:04:42 156

原创 你一定要会的埃式筛法和欧式筛法求质数

大一时学过的算法,两年之后忘的一干二净,看了网上很多文章终于又弄懂了,尽量用通俗的说法说明白,避免再忘。原题链接题目描述给定整数 n ,返回 所有小于非负整数 n 的质数的数量 。示例 1:示例输入:n = 10输出:4解释:小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 。示例 2:输入:n = 0输出:0示例 3:输入:n = 1输出:0解法一:朴素算法顾名思义,地球人都能想到的算法。从2开始遍历到n,每个数都判断一下是不是质数,是的话cnt+1,最后

2022-05-28 17:32:46 739

原创 go语言300行代码实现即时通讯聊天室

学了2年Java,因为工作原因需要转Golang,3天时间学习了下go的基本语法,做这样一个聊天室小项目来巩固串联一下语法。实现的功能:公聊,私聊,修改用户名只用到了四个类:main.go:用来启动服务器server.go:服务器相关代码client.go:客户端相关代码,用户可以直接操作的可视化界面user.go:用户类,用来封装用户的业务逻辑架构图完整代码server.gopackage mainimport ( "fmt" "io" "net" "sync" "

2022-03-22 12:45:12 1115

原创 LeetCode--32 最长有效括号

原题链接题目描述给你一个只包含 ‘(’ 和 ‘)’ 的字符串,找出最长有效(格式正确且连续)括号子串的长度。示例 1:输入:s = “(()”输出:2解释:最长有效括号子串是 “()”示例 2:输入:s = “)()())”输出:4解释:最长有效括号子串是 “()()”示例 3:输入:s = “”输出:0思路分别设两个计数器l和r,表示目前已经存在的左括号的数量和右括号的数量,当l==r时,表示当前是一个有效的字串,更新最大值max即可。当r > l时,表示已经不可能有

2022-02-14 14:28:23 178

原创 LeetCode--6 Z字形变换

原题链接题目描述将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:P A H NA P L S I I GY I R之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“PAHNAPLSIIGYIR”。请你实现这个将字符串进行指定行数变换的函数:string convert(string s, int numRows);示例 1:输

2022-02-12 12:42:32 73

原创 Java面试题总结(持续更新)

JavaSEJava基础解释型语言和编译型语言的区别?Java是解释型语言还是编译型语言?编译型语言:把做好的源程序全部编译成二进制代码的可运行程序。然后,可直接运行这个程序。解释型语言:把做好的源程序翻译一句,然后执行一句,直至结束!编译型语言,执行速度快、效率高;依靠编译器、跨平台性差些。解释型语言,执行速度慢、效率低;依靠解释器、跨平台性好。个人认为,java是解释型的语言,因为虽然java也需要编译,编译成.class文件,但是并不是机器可以识别的语言,而是字节码,最终还是需要 j

2021-12-25 12:50:40 496

原创 动态规划---翻转字符(剑指offer-92)

原题链接题目描述如果一个由 ‘0’ 和 ‘1’ 组成的字符串,是以一些 ‘0’(可能没有 ‘0’)后面跟着一些 ‘1’(也可能没有 ‘1’)的形式组成的,那么该字符串是 单调递增 的。我们给出一个由字符 ‘0’ 和 ‘1’ 组成的字符串 s,我们可以将任何 ‘0’ 翻转为 ‘1’ 或者将 ‘1’ 翻转为 ‘0’。返回使 s 单调递增 的最小翻转次数。示例1输入:s = “00110”输出:1解释:我们翻转最后一位得到 00111.示例2输入:s = “010110”输出:2解释:我们

2021-10-19 21:12:41 1018

原创 动态规划---环形房屋偷盗(剑指offer-90)

原题链接题目描述一个专业的小偷,计划偷窃一个环形街道上沿街的房屋,每间房内都藏有一定的现金。这个地方所有的房屋都 围成一圈 ,这意味着第一个房屋和最后一个房屋是紧挨着的。同时,相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警 。给定一个代表每个房屋存放金额的非负整数数组 nums ,请计算 在不触动警报装置的情况下 ,今晚能够偷窃到的最高金额。示例1输入:nums = [2,3,2]输出:3解释:你不能先偷窃 1 号房屋(金额 = 2),然后偷窃 3 号

2021-10-18 20:37:33 1240

原创 动态规划---房屋盗窃(剑指offer-89)

原题链接题目描述一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响小偷偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组 nums ,请计算 不触动警报装置的情况下 ,一夜之内能够偷窃到的最高金额。示例1输入:nums = [1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3)。偷窃到的最高金额 = 1 + 3 = 4

2021-10-18 20:27:42 1482

原创 DFS合集---9.复原 IP(剑指offer-87)

原题链接题目描述给定一个只包含数字的字符串 s ,用以表示一个 IP 地址,返回所有可能从 s 获得的 有效 IP 地址 。你可以按任何顺序返回答案。有效 IP 地址 正好由四个整数(每个整数位于 0 到 255 之间组成,且不能含有前导 0),整数之间用 ‘.’ 分隔。例如:“0.1.2.201” 和 “192.168.1.1” 是 有效 IP 地址,但是 “0.011.255.245”、“192.168.1.312” 和 “[email protected]” 是 无效 IP 地址。示例1输入:s =

2021-10-17 20:27:47 1244

原创 DFS合集---8. 分割回文子字符串(剑指offer-86)

原题链接题目描述给定一个字符串 s ,请将 s 分割成一些子串,使每个子串都是 回文串 ,返回 s 所有可能的分割方案。回文串 是正着读和反着读都一样的字符串。示例1输入:s = “google”输出:[[“g”,“o”,“o”,“g”,“l”,“e”],[“g”,“oo”,“g”,“l”,“e”],[“goog”,“l”,“e”]]示例2输入:s = “aab”输出:[[“a”,“a”,“b”],[“aa”,“b”]]示例3输入:s = “a”输出:[[“a”]]思路假设我们从

2021-10-17 20:16:32 1287

原创 DFS合集---7. 生成匹配的括号 (剑指offer-85)

原题链接题目描述正整数 n 代表生成括号的对数,请设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。示例1输入:n = 3输出:["((()))","(()())","(())()","()(())","()()()"]示例2输入:n = 1输出:["()"]思路既然有n对括号,那么一定有n个左括号和n个右括号。我们在生成括号序列时,对于当前来说,有两种选择:生成左括号。生成左括号的条件很简单,只要左括号的数量小于n,我们就可以生成它。生成右括号。生成右括号的条件除了小

2021-10-17 20:09:34 1310

原创 DFS合集---6.含有重复元素集合的全排列 (剑指offer-84)

原题链接题目描述给定一个可包含重复数字的整数集合 nums ,按任意顺序 返回它所有不重复的全排列。示例1输入:nums = [1,1,2]输出:[[1,1,2],[1,2,1],[2,1,1]]示例2输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]思路这道题和上一题的区别在于,这道题数组中有重复元素,并且要求我们最后的解集里面不可以重复。那么我们只需要加一个简单的判断:在当前位和后面的数交

2021-10-17 20:03:23 1278

原创 DFS合集---5.没有重复元素集合的全排列(剑指offer-83)

原题链接题目描述给定一个不含重复数字的整数数组 nums ,返回其 所有可能的全排列 。可以 按任意顺序 返回答案。示例1输入:nums = [1,2,3]输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1]]示例2输入:nums = [0,1]输出:[[0,1],[1,0]]示例3输入:nums = [1]输出:[[1]]思路求n个数全排列,我们可以从低位起依次确定该位的情况,比如求[1,2,3]的全排列,步骤如下:先求第一位

2021-10-17 19:55:17 1275

原创 DFS合集---4.含有重复元素集合的组合(剑指offer-82)

原题链接题目描述给定一个可能有重复数字的整数数组 candidates 和一个目标数 target ,找出 candidates 中所有可以使数字和为 target 的组合。candidates 中的每个数字在每个组合中只能使用一次,解集不能包含重复的组合。示例1输入: candidates = [10,1,2,7,6,1,5], target = 8,输出:[[1,1,6],[1,2,5],[1,7],[2,6]]示例2输入: candidates = [2,5,2,1,2],

2021-10-17 18:48:37 1442

原创 DFS合集---3.允许重复选择元素的组合(剑指offer-81)

原题链接题目描述给定一个无重复元素的正整数数组 candidates 和一个正整数 target ,找出 candidates 中所有可以使数字和为目标数 target 的唯一组合。candidates 中的数字可以无限制重复被选取。如果至少一个所选数字数量不同,则两种组合是唯一的。对于给定的输入,保证和为 target 的唯一组合数少于 150 个。示例1输入: candidates = [2,3,6,7], target = 7输出: [[7],[2,2,3]]示例2输入: candi

2021-10-17 18:21:37 1210

原创 DFS合集---2.含有 k 个元素的组合(剑指offer-80)

原题链接题目描述给定两个整数 n 和 k,返回 1 … n 中所有可能的 k 个数的组合。示例1输入: n = 4, k = 2输出:[[2,4],[3,4],[2,3],[1,2],[1,3],[1,4],]示例2输入: n = 1, k = 1输出: [[1]]思路与DFS合集第一题的思路几乎一样,建议先看第一篇:DFS合集–1.所有子集对于数组中的每个数字,只有两种情况:不将它加入集合。那么可以直接去遍历下一个数字,而遍历每个数字的操作是一样的,那么就递归调用

2021-10-17 18:06:45 1254

原创 DFS合集---1.所有子集(剑指offer-79)

原题链接题目描述给定一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。示例1输入:nums = [1,2,3]输出:[[],[1],[2],[1,2],[3],[1,3],[2,3],[1,2,3]]示例2输入:nums = [0]输出:[[],[0]]思路对于数组中的每个数字,只有两种情况:不将它加入集合。那么可以直接去遍历下一个数字,而遍历每个数字的操作是一样的,那么就递归调用。将它

2021-10-17 18:01:49 1346

原创 排序数组中只出现一次的数字(剑指offer-70)

原题链接题目描述给定一个只包含整数的有序数组 nums ,每个元素都会出现两次,唯有一个数只会出现一次,请找出这个唯一的数字。示例1输入: nums = [1,1,2,3,3,4,4,8,8]输出: 2示例2输入: nums = [3,3,7,7,10,11,11]输出: 10思路1第一种解法用常规的异或,异或的性质:同位相同为0,不同为1。那么两个相同的数字异或的结果就是0了。所以我们只需要扫描一遍数组,把所有的数都异或起来,最后的异或值就是只出现一次的那个数了。时间复杂度为O(n)

2021-10-08 20:53:24 1771

原创 最大的异或(剑指offer-67)

原题链接题目描述给定一个整数数组 nums ,返回 nums[i] XOR nums[j] 的最大运算结果,其中 0 ≤ i ≤ j < n示例1输入:nums = [3,10,5,25,2,8]输出:28解释:最大运算结果是 5 XOR 25 = 28.示例2输入:nums = [0]输出:0示例3输入:nums = [2,4]输出:6示例4输入:nums = [8,10,2]输出:10示例5输入:nums = [14,70,53,83,49,91,36,80,92

2021-10-07 20:27:54 1652

原创 SpringBoot整合Shiro和Redis

demo源码1.准备工作导入pom.xml<?xml version="1.0" encoding="UTF-8"?><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:

2021-10-07 17:05:09 2128

原创 实现前缀树(字典树)(剑指offer-62)

原题链接题目描述Trie(发音类似 “try”)或者说 前缀树 是一种树形数据结构,用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。请你实现 Trie 类:Trie() 初始化前缀树对象。void insert(String word) 向前缀树中插入字符串 word 。boolean search(String word) 如果字符串 word 在前缀树中,返回 true(即,在检索之前已经插入);否则,返回 false 。boolean st

2021-10-04 17:30:35 1800

原创 二叉搜索树中两个节点之和(剑指offer-56)

原题链接题目描述给定一个二叉搜索树的 根节点 root 和一个整数 k , 请判断该二叉搜索树中是否存在两个节点它们的值之和等于 k 。假设二叉搜索树中节点的值均唯一。示例1输入: root = [8,6,10,5,7,9,11], k = 12输出: true解释: 节点 5 和节点 7 之和等于 12示例2输入: root = [8,6,10,5,7,9,11], k = 22输出: false解释: 不存在两个节点值之和为 22 的节点思路1栈 + 哈希表。哈希表里存放遍历过的

2021-09-27 09:15:42 2388

原创 序列化与反序列化二叉树(剑指offer-48)

原题链接题目描述序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。思路题目说白了就是让你设计两个算法,一个是把二叉树转成字符串,一个是把字符串转成二叉树。前序遍历比较适合序列化二叉树,先把根节点序列化

2021-09-25 17:09:25 2365

原创 直方图最大矩形面积(剑指offer-39)

原题链接题目描述给定非负整数数组 heights ,数组中的数字用来表示柱状图中各个柱子的高度。每个柱子彼此相邻,且宽度为 1 。求在该柱状图中,能够勾勒出来的矩形的最大面积。示例1输入:heights = [2,1,5,6,2,3]输出:10解释:最大的矩形为图中红色区域,面积为 10示例2输入: heights = [2,4]输出: 4第1种思路(分治法)对于某个柱子来说,最大矩形有三种情况。1.最大矩形是以这个柱子为顶部的。2.最大矩形的起始柱子和终点柱子都在这个柱子的

2021-09-22 20:23:50 3493

原创 最近最少使用缓存(LRU算法)Java实现 (剑指offer-31)

原题链接题目描述运用所掌握的数据结构,设计和实现一个 LRU (Least Recently Used,最近最少使用) 缓存机制 。实现 LRUCache 类:LRUCache(int capacity) 以正整数作为容量 capacity 初始化 LRU 缓存int get(int key) 如果关键字 key 存在于缓存中,则返回关键字的值,否则返回 -1 。void put(int key, int value) 如果关键字已经存在,则变更其数据值;如果关键字不存在,则插入该组「关键字-

2021-09-17 21:22:01 2727

原创 插入、删除和随机访问都是 O(1) 的容器(剑指offer-30)

原题链接题目描述设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构:insert(val):当元素 val 不存在时返回 true ,并向集合中插入该项,否则返回 false 。remove(val):当元素 val 存在时返回 true ,并从集合中移除该项,否则返回 false 。getRandom:随机返回现有集合中的一项。每个元素应该有 相同的概率 被返回示例1输入: inputs = [“RandomizedSet”, “insert”, “remove”, “in

2021-09-17 20:30:16 2803

原创 aop注解开发中通知无法生效的原因

spring配置文件中可能没有加这个,不加这个的话切面类的注解是无法被试别的<aop:aspectj-autoproxy/>当然,不要忘了开启组件扫描还有加上命名空间可以直接复制下面这个到spring配置文件<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.or

2021-09-16 09:02:28 2600

原创 链表中环的入口结点(剑指offer-22)

原题链接题目描述给定一个链表,返回链表开始入环的第一个节点。 从链表的头节点开始沿着 next 指针进入环的第一个节点为环的入口节点。如果链表无环,则返回 null。为了表示给定链表中的环,我们使用整数 pos 来表示链表尾连接到链表中的位置(索引从 0 开始)。 如果 pos 是 -1,则在该链表中没有环。注意,pos 仅仅是用于标识环的情况,并不会作为参数传递到函数中。说明:不允许修改给定的链表。示例1输入:head = [3,2,0,-4], pos = 1输出:返回索引为 1 的链表

2021-09-15 16:57:21 2864

原创 和为k的数组(剑指offer-10) (前缀和&&哈希表)

原题链接题目描述给定一个整数数组和一个整数 k ,请找到该数组中和为 k 的连续子数组的个数。示例1输入:nums = [1,1,1], k = 2输出: 2解释: 此题 [1,1] 与 [1,1] 为两种不同的情况示例2输入:nums = [1,2,3], k = 3输出: 2第1种思路前缀和,扫一遍数组,求出下标从0-i的数字之和,比如 [1, 2, 3],那么前缀和数组为[1, 3, 6]。然后两层循环,后面的和减去前面的和,即为两指针区间内的和,找到每一个满足条件的并记录,时间

2021-09-10 20:08:45 2356

原创 求前n个数字二进制形式中1的个数---几种思路,层层递进(剑指offer-03)(位运算)

原题链接题目描述给定一个非负整数 n ,请计算 0 到 n 之间的每个数字的二进制表示中 1 的个数,并输出一个数组。示例1输入: n = 2输出: [0,1,1]解释:0 --> 01 --> 12 --> 10示例2输入: n = 5输出: [0,1,1,2,1,2]解释:0 --> 01 --> 12 --> 103 --> 114 --> 1005 --> 101第0种思路最笨的方法, 用循环先将每个十进

2021-09-06 19:31:07 2839 1

EgoSpring源码文件

EgoSpring源码文件

2023-08-02

2019012364袁梦达.zip

2019012364袁梦达.zip

2021-05-29

空空如也

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

TA关注的人

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