自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 JAVA面试专题-微服务篇

自己创建类实现IRule接口,再通过配置类(全局生效)或者配置文件(局部生效)即可。

2024-05-02 20:17:05 1383 1

原创 JAVA面试专题-框架篇(Spring+Mybatis)

bean上面可以加入注解@Scope,如果是singleton(默认),意味着bean在每个spring IOC容器中只有一个实例;如果是prototype,说明一个bean定义可以有多个实例。spring框架没有对单例bean进行任何多线程的封装处理,关于单例bean的线程安全和并发安全需要开发者考虑。

2024-05-02 12:15:57 1072 1

原创 JAVA面试专题-MySQL

对这个数据库实例加锁,加锁后整个实例处于只读状态,DDL和DML阻塞,DQL可以。

2024-05-01 12:12:34 1276 1

原创 JAVA面试专题-Redis

缓存穿透:查询一个不存在的数据,mysql查询不到数据也不好直接写入缓存,导致每次请求都查数据库。解决方案一:缓存空数据,即使查询返回的数据为空,也把这个空结果进行缓存(如key:1,value:null)。优点:简单缺点:消耗内存(总有空数据),不一致问题(来真的数据了)解决方案二:布隆过滤器(可以使用redisson实现):查询之前先访问布隆过滤器,如果不存在就直接返回优点:内存占用少,没有多余key。

2024-04-30 10:01:16 881 1

原创 学成在线 面试

从以下几个方面进行项目介绍:1、项目的背景,包括:是自研还是外包、什么业务、服务的客户群是谁、谁去运营等问题。2、项目的业务流程3、项目的功能模块4、项目的技术架构5、个人工作职责6、个人负责模块的详细说明,包括模块的设计,所用到的技术,技术的实现方案等。一个例子:我最近参与的项目是我们公司自研的专门针对成人职业技能教育的网络课堂系统,网站提供了成人职业技能培训的相关课程,如:软件开发培训、职业资格证书培训、成人学历教育培训等课程。

2024-04-26 18:49:39 633

原创 黑马点评项目笔记 II

stream是一种数据类型,可以实现一个功能非常完善的消息队列key:队列名称nomkstream:如果队列不存在是否自动创建,默认创建maxlen/minid:设置消息队列的最大消息数量*|ID 唯一id:时间戳-递增数字field value:消息体:键值对XREAD 命令特点:消息可回溯,一个消息可以被多个消费者读取,可以阻塞读取,有消息漏读风险。

2024-03-31 15:54:16 600

原创 黑马点评项目笔记 I

将逻辑过期时间写入redis里面表现层不变,业务层做一些改动,生成验证码存到redis里面,在登录校验的时候直接从redis里面读取验证码,再随机生成token,存入到redis里面。

2024-03-30 14:35:55 825

原创 Linux常用命令

cp【-r】source dest 用于复制文件或目录 -r如果复制的是目录要用这个,包含子文件。cat【-n】fileName 查看文件内容 -n从去开始对输出内容行数编号。rm【-rf】name 删除文件或目录 -f删除目录 -r无需确认,直接删除。ls【-al】【dir】 -a显示所有文件及目录 -l显示更多详情信息。tail【-f】fileName 查看文件末尾内容 -f动态。mkdir【-p】dirName 创建目录 -p创建多层目录。vim(要先用yum install vim)

2024-03-28 10:33:17 425

原创 JaveSe复习(下半)

创建一个线程当然也可以这样来创建第二种创建线程的方法(可以传参)还有一种方法线程安全第一种:在方法里public和void之间加入synchronized第二种:在需要线程安全的地方加入synchronized(共享资源){---}第三张:创建一个锁对象private final Lock lk = new ReentrantLock();线程池:new ThreadPoolExecutor。

2024-03-26 20:35:58 402

原创 JavaSe复习(上半)

将系统默认的打印流对象改为自己设置的打印流:System.setOut(new PrintStream("D:\\code\\javasepromax\\io-app2\\src\\itheima01.txt"));转换成指定类型的数组:toArray(new String[c.size()])toArray:收集放到数组中;日期格式化:先创建DateTimeFormatter.ofPattern(-----------)数组的长度:数组名.length, 字符串的长度:字符串对象.length();

2024-03-26 19:03:23 492

原创 苍穹外卖项目笔记

本项目涉及了Springboot,redis,mysql,Swagger,HttpClient,Spring Cache,Spring Task,Apache POI等技术栈,打通了前后端以及小程序,实现了外卖系统

2024-03-25 15:00:59 1027

原创 Redis基础

2024-03-17 13:12:43 76

原创 JavaWeb(p135-p155)

第二步:配置过滤器,Filter类加入@WebFilter注解,配置拦截资源的路径,写在其中的urlPatterns中,引导类上加@ServletComponentScan注解,开启Servlet组件支持。@Transactional注解:在当前这个方法执行开始之前来开启事务,方法执行完毕之后提交事务,如果在这个方法执行的过程当中出现的异常,就会对事务进行回滚操作,可以写在方法上,类上,接口上。返回值 包名.类名.?@After :后置通知,此注解标注的通知方法在目标方法后被执行,无论是否有异常都会执行。

2024-03-16 18:55:48 849

原创 JavaWeb(p116-p134)

数据添加成功以后,需要获取插入数据库数据的主键,要在Mapper接口中的方法上加入一个注解:@Option(useGeneratedKeys = true,keyProperty = “id”)where:只会在子元素有内容的情况下才插入where语句,而且会自动去除子句开头的and或者or。数据库连接池是个容器,负责分配,管理数据库连接,默认是hikari,可以通过依赖换成Druid。concat(‘%’,#{name},‘%’),这样就解决了SQL注入的风险。include:在原来抽取的地方进行引用。

2024-03-16 15:09:08 579

原创 JavaWeb(p67-p115)

RequestParam:解决方法形参名称与请求形参名称不匹配的问题,例如RequestParam(name = “name”),里面是有required属性的,默认为true,代表该请求参数必须传递,如果是可选参数,就将他设置为false。

2024-03-16 14:29:10 383

原创 Mybatis-plus

查询 get查一个,list查多个 count查数量 page分页查询。

2024-03-16 13:56:06 223

原创 Day51 42 接雨水 84柱状图中的最大矩形

给定 n 个非负整数表示每个宽度为 1 的柱子的高度图,计算按此排列的柱子,下雨之后能接多少雨水。本题可以用单调栈来求解,以往的单调栈问题中,都是找第一个比这个元素大的元素或者第一个比这个元素小的元素,而本题要找到左面的大元素和右面的大元素,右面的按照常规方法肯定好找,那么左面的呢?别忘了这是一个单调栈,栈里面的元素大小都是有规律的,栈顶的下一个元素就是左面的元素。

2024-02-21 13:36:39 223 1

原创 Day50 739每日温度 496下一个更大元素I 503下一个更大元素II

请根据每日 气温 列表,重新生成一个列表。对应位置的输出为:要想观测到更高的气温,至少需要等待的天数。如果气温在这之后都不会升高,请在该位置用 0 来代替。例如,给定一个列表 temperatures = [73, 74, 75, 71, 69, 72, 76, 73],你的输出应该是 [1, 1, 4, 2, 1, 1, 0, 0]。提示:气温 列表长度的范围是 [1, 30000]。每个气温的值的均为华氏度,都是在 [30, 100] 范围内的整数。

2024-02-20 15:07:21 615

原创 Day49 647 回文子串 516 最长回文子序列

给定一个字符串,你的任务是计算这个字符串中有多少个回文子串。具有不同开始位置或结束位置的子串,即使是由相同的字符组成,也会被视作不同的子串。方法一:动态规划:采用一个二维的dp数组,dp的含义是从i到j(闭区间)里的字符串是否是回文串。

2024-02-19 12:40:52 234

原创 Day48 115 不同的子序列 583 两个字符串的删除操作 72编辑距离

给定一个字符串 s 和一个字符串 t ,计算在 s 的子序列中 t 出现的个数。字符串的一个 子序列 是指,通过删除一些(也可以不删除)字符且不干扰剩余字符相对位置所组成的新字符串。(例如,"ACE" 是 "ABCDE" 的一个子序列,而 "AEC" 不是)

2024-02-18 12:21:47 276

原创 Day47 1143最长公共子序列 53最大子数组和 392判断子序列

我们在两条独立的水平线上按给定的顺序写下 A 和 B 中的整数。现在,我们可以绘制一些连接两个数字 A[i] 和 B[j] 的直线,只要 A[i] == B[j],且我们绘制的直线不与任何其他连线(非水平线)相交。以这种方法绘制线条,并返回我们可以绘制的最大连线数。

2024-02-13 10:30:49 165

原创 Day46 300最长递增子序列 674最长连续递增子序列 718最长重复子数组 1143最长公共子序列

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。

2024-02-12 10:54:32 716

原创 Day45 买卖股票的最佳时机

给定一个数组 prices ,它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。你只能选择 某一天 买入这只股票,并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。返回你可以从这笔交易中获取的最大利润。如果你不能获取任何利润,返回 0。暴力搜索:超时动态规划:dp数组为二维数组,dp【i】【0】表示第i天持有股票,dp【i】【1】表示第i天不持有股票。

2024-02-11 17:17:37 534

原创 Day44 198打家劫舍 213打家劫舍II 337打家劫舍III

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

2024-02-05 13:37:11 601

原创 Day43 377组合总和IV 70爬楼梯 322零钱兑换 279完全平方数 139单词拆分

给定一个由正整数组成且不存在重复数字的数组,找出和为给定目标正整数的组合的个数。所有可能的组合为: (1, 1, 1, 1) (1, 1, 2) (1, 2, 1) (1, 3) (2, 1, 1) (2, 2) (3, 1)请注意,顺序不同的序列被视作不同的组合。因此输出为 7。

2024-02-04 18:51:53 751

原创 Day42 474一和零 完全背包理论基础 518零钱兑换II

给你一个二进制字符串数组 strs 和两个整数 m 和 n。请你找出并返回 strs 的最大子集的大小,该子集中 最多 有 m 个 0 和 n 个 1。如果 x 的所有元素也是 y 的元素,集合 x 是集合 y 的 子集。示例 1:输入:strs = ["10", "0001", "111001", "1", "0"], m = 5, n = 3输出:4解释:最多有 5 个 0 和 3 个 1 的最大子集是 {"10","0001","1","0"} ,因此答案是 4。

2024-02-03 13:02:31 715

原创 Day41 416分割等和子集 1049最后一块石头的重量 494目标和

有一堆石头,每块石头的重量都是正整数。每一回合,从中选出任意两块石头,然后将它们一起粉碎。假设石头的重量分别为 x 和 y,且 x <= y。那么粉碎的可能结果如下:如果 x == y,那么两块石头都会被完全粉碎;如果 x!= y,那么重量为 x 的石头将会完全粉碎,而重量为 y 的石头新重量为 y-x。最后,最多只会剩下一块石头。返回此石头最小的可能重量。如果没有石头剩下,就返回 0。public:i++) { // 遍历物品j--) { // 遍历背包。

2024-02-02 13:26:32 242

原创 Day40 0-1背包问题

小明是一位科学家,他需要参加一场重要的国际科学大会,以展示自己的最新研究成果。他需要带一些研究材料,但是他的行李箱空间有限。这些研究材料包括实验设备、文献资料和实验样本等等,它们各自占据不同的空间,并且具有不同的价值。小明的行李空间为 N,问小明应该如何抉择,才能携带最大价值的研究材料,每种研究材料只能选择一次,并且只有选与不选两种选择,不能进行切割。第一行包含两个正整数,第一个整数 M 代表研究材料的种类,第二个正整数 N,代表小明的行李空间。第二行包含 M 个正整数,代表每种研究材料的所占空间。

2024-02-01 15:00:56 972

原创 Day39 62不同路径 63不同路径II 343整数拆分 96不同的二叉搜索树

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish” )。问总共有多少条不同的路径?解释: 从左上角开始,总共有 3 条路径可以到达右下角。本题用动态规划五部曲进行分析:首先dp数组的含义是到达这个点有多少种走法,这里题目已经给了按时,递推方程为左边的走法加上面的走法,即dp[i][j] = dp[i - 1][j] + dp[i][j - 1];

2024-01-31 11:35:31 1031

原创 Day38 509 斐波那契数 70爬楼梯 746 使用最小花费爬楼梯

斐波那契数,通常用 F(n) 表示,形成的序列称为 斐波那契数列。该数列由 0 和 1 开始,后面的每一项数字都是前面两项数字的和。也就是: F(0) = 0,F(1) = 1 F(n) = F(n - 1) + F(n - 2),其中 n > 1 给你n ,请计算 F(n)。如果用动态规划(dp)的方法来做,需要按照以下步骤:动规五部曲:1. 确定dp数组和下标的含义:dp【i】:第i个斐波那契数值是dp【i】

2024-01-30 11:22:58 182

原创 Day37 56合并区间 738单调递增的数字 968监控二叉树

给出一个区间的集合,请合并所有重叠的区间。本题主要技巧是在result数组里面进行重叠操作,而不是在原数组里面进行合并。

2024-01-27 13:10:43 356

原创 Day36 435无重叠区间 763划分字母区间

给定一个区间的集合,找到需要移除区间的最小数量,使剩余区间互不重叠。注意: 可以认为区间的终点总是大于它的起点。区间 [1,2] 和 [2,3] 的边界相互“接触”,但没有相互重叠。

2024-01-26 11:25:38 169

原创 Day35 860柠檬水找零 406根据身高重建队列 452引爆气球

在柠檬水摊上,每一杯柠檬水的售价为 5 美元。顾客排队购买你的产品,(按账单 bills 支付的顺序)一次购买一杯。每位顾客只买一杯柠檬水,然后向你付 5 美元、10 美元或 20 美元。你必须给每个顾客正确找零,也就是说净交易是每位顾客向你支付 5 美元。注意,一开始你手头没有任何零钱。如果你能给每位顾客正确找零,返回 true ,否则返回 false。

2024-01-25 11:49:37 846

原创 Day34 1005k次取反最大值 134加油站 135分发糖果

给定一个整数数组 A,我们只能用以下方法修改该数组:我们选择某个索引 i 并将 A[i] 替换为 -A[i],然后总共重复这个过程 K 次。(我们可以多次选择同一个索引 i。以这种方式修改数组后,返回数组可能的最大和。

2024-01-22 12:45:19 363

原创 Day33 122买卖股票最佳时机 55跳跃游戏 45跳跃游戏II

给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格。设计一个算法来计算你所能获取的最大利润。你可以尽可能地完成更多的交易(多次买卖一支股票)。注意:你不能同时参与多笔交易(你必须在再次购买前出售掉之前的股票)。本题保持相邻数组之间差值为正数存入结果即可:局部最优:每天的正利润,全局最优:最大利润。

2024-01-21 12:05:25 844

原创 Day32 455分发饼干 376摆动序列 53最大子数组和

为什么一个先遍历胃口,第二个先遍历饼干呢,可以发现,先for循环遍历的一定是至少可以满足不影响后面的,第一个为例:如果胃口太大并且先遍历饼干,那么后面的饼干就都和大胃口相比较;例如, [1,7,4,9,2,5] 是一个摆动序列,因为差值 (6,-3,5,-7,3) 是正负交替出现的。相反, [1,4,7,2,5] 和 [1,7,4,5,5] 不是摆动序列,第一个序列是因为它的前两个差值都是正数,第二个序列是因为它的最后一个差值为零。给定一个整数序列,返回作为摆动序列的最长子序列的长度。

2024-01-19 12:46:42 824

原创 Day31 46全排列 47全排列II 回溯去重tips 51N皇后 37解数独

给定一个 没有重复 数字的序列,返回其所有可能的全排列。排列问题与组合问题的不同之处就在于,没有startIndex,同时需要设置一个used数组,遍历过的就设置成true,下次遇到时跳过。

2024-01-18 15:18:54 872

原创 Day30 78子集 90子集II 491非递减子序列

给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集)。说明:解集不能包含重复的子集。示例: 输入: nums = [1,2,3] 输出: [ [3], [1], [2], [1,2,3], [1,3], [2,3], [1,2], [] ]注意本题与之前所有回溯算法所不同的一点就是,之前都是在叶子节点返回结果,而求子集需要在所有节点返回结果。同时这个终止条件可写可不写。

2024-01-15 15:42:32 895

原创 Day29 131分割回文串 93复原ip地址

给定一个字符串 s,将 s 分割成一些子串,使每个子串都是回文串。返回 s 所有可能的分割方案。示例: 输入: "aab" 输出: [ ["aa","b"], ["a","a","b"] ]上面的代码还存在一定的优化空间, 在于如何更高效的计算一个子字符串是否是回文字串。上述代码函数运用双指针的方法来判定对于一个字符串s, 给定起始下标和终止下标, 截取出的子字符串是否是回文字串。但是其中有一定的重复计算存在:例如给定字符串"abcde", 在已知"bcd"不是回文字串时, 不再需要去双指针操作。

2024-01-14 12:55:13 372

原创 Day28 17电话号码的字母组合 39组合求和 40组合求和II

17 电话号码的字母组合给定一个仅包含数字 2-9 的字符串,返回所有它能表示的字母组合。给出数字到字母的映射如下(与电话按键相同)。注意 1 不对应任何字母。 因为输入的数字的数量是不确定的,所以for循环的次数也是不确定的,这里就需要用到回溯的方法了。 一般回溯里面,递归都是深度,for循环都是宽度。注意本题的index和之前两道题的index不太一样,因为本题不是从同一个集合里面取,而是从多个集合里面取。同时for循环的起始位置是0,因为此时不存在从

2024-01-13 12:58:21 523

空空如也

空空如也

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

TA关注的人

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