自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 newBigdecimal的时候,参数不能传入数字,应该传入字符串,否则精度会出现问题

BigDecimal enDecimal = new BigDecimal(111231.555).setScale(2, RoundingMode.HALF_UP);//结果是111231.55BigDecimal enDecimal = new BigDecimal("111231.555").setScale(2, RoundingMode.HALF_UP);//结果是111231.56所以前端给后端传输数据的时候,采用string,而不是bigdecimal具体应用:流程引擎...

2021-09-08 11:13:39 728

原创 不同的接口掉同一個manager去save同一個表,無法插入行信息,@Transactional

现在要往我自己建的的表里插入一条数据,已经用manager封好了去调用rep,rep去调用bo转实体类,然后用mybatisplus去save实体类。1.用controller调用usecase,调用service,调用manager,就可以成功插入这条数据2.在另一个service里调用checksupport调用这个manager,就无法插入这条数据,报错:不存在该数据表(这个数据表应该在legal数据库中,但是报错报的是bpm数据库中不存在这个表)原因:2中的service中,调用checks

2021-09-07 17:22:55 175

原创 maven强制刷新本地包:(用于打包后重新加载)

强制刷新本地包:(用于打包后重新加载)mvn clean install -Dmaven.test.skip=true -e -U

2021-09-02 18:44:46 3347

原创 使用MapStruct的@Mapper(componentModel = “spring“, unmappedTargetPolicy = ReportingPolicy.IGNORE)注解 不能重载

想进行DTOtoBO和BOtoDTO代码自动生成的时候,遇到的问题 Result<BudgetOccupyBO> toBudgetOccupyBO(Result<BudgetOccupyDTO> budgetOccupyDTO); BudgetOccupyBO toBudgetOccupyBO(BudgetOccupyDTO budgetOccupyDTO);这样写,由于有重载,所以Converter虽然自动生成了代码,但是生成的是错的,把其中一个换名字即可

2021-08-25 14:46:12 4160

原创 jstl引入失败,报红,c标签无法使用解决方案

应该引入正确的依赖:<dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>2.2.1-b03</version> </dependency> <dependency>

2021-07-23 20:15:23 1438

原创 pom配置文件中build标签中<artifactId>spring-boot-maven-plugin</artifactId>标红,解决方案

在这里,spring-boot-maven-plugin标红,导致项目无法正常启动<build> <finalName>${project.artifactId}</finalName> <plugins> <plugin> <groupId>org.springframework.boot</groupId>

2021-07-19 20:24:04 9862

原创 后端面试总结 持续更新

字节 一面 凉项目问到了反爬虫基础知识提问mysql如何保证数据一致性?我答了事务的隔离级别,读已提交和可重复度synchronize的关键字的原理?我讲了一下可重入锁,偏向锁->轻量级锁,自旋锁->重量级锁的升级过程。问synchronized修饰了以后是不是并发安全的?我说是查了一下,我觉得面试官的问题应该是在问高并发相关的问题,但我对高并发还不了解。所以答了是。synchronized只对单个jvm生效,真实使用中,考虑到高并发的情况,不可能只部署在单个系统上conc

2021-07-07 19:20:11 116

原创 Spring笔记

文章目录1、Spring控制反转 IoCHello,Spring!IoC创建对象方式2、Spring配置3、依赖注入3.1 构造器注入3.2 set方式注入(重点)3.3 拓展方式注入3.4 Bean scope (作用域)4、Bean的自动装配(autowired)5、使用==注解==进行自动装配6、使用注解开发7、使用Java的方式配置Spring8、代理模式8.1、静态代理8.2、动态代理8.3 使用spring的aop方式1:使用原生API接口方式2:使用自定义类实现AOP方式3:使用注解实现8.4

2021-07-02 23:29:13 290 5

原创 Mybatis笔记

. Mybatis笔记1、简介1.1 什么是mybatis是一个优秀的持久层框架,支持定制化sql、存储过程和高级映射。避免了所有jdbc代码和手动设置参数以及获取结果集。可以使用简单的xml或注解来配置和映射原生类型、接口和Java中的POJO为数据库中的记录。如何获得mybatis?maven仓库github中文文档:直接百度搜索获得1.2 持久化数据持久化:将程序的数据在持久状态和瞬时状态转换的过程。内存:断电即失 ,有些对象不能让他丢掉,所以需要持

2021-06-30 23:11:36 285 2

原创 JavaWeb笔记-超市订单管理系统

SMBMS-超市订单管理系统项目搭建准备工作1、创建一个maven项目2、使用tomcat3、测试项目能不能跑起来4、导入项目中常用jar包​ jsp、Servlet、mysql驱动5、创建项目包结构daofilterserviceservletutilspojo6、编写实体类​ ORM——关系映射(表-类映射)7、编写基础公共类​ 1、数据库配置文件​ 新建db.properties里面写:driver=com.mysql.jdbc.Driverurl=jd

2021-06-30 23:10:07 639 1

原创 实习投递记录

实习投递记录4.18 腾讯笔试五道题AC率:0,0.6,0,0.9,04.23查看官网显示笔试通过,等待初试(面试)但是这之前我进行了一个操作,就是把简历上的“城市服从调剂”改为了“是”,然后又改回了“否”,再次刷新的时候发现进初试了。3.6 腾讯提前批面试1.讲一讲synchronized和可重入锁的区别,synchronized是可重入锁吗?可重入锁的概念?不可重入锁:自己这个方法占用了锁以后,在这个方法内部还有一些操作,需要用到这个锁,但是因为这个锁已经被自己拿了,所以自己内部的这

2021-06-30 23:09:08 197

原创 Java Web 笔记

Java Web 笔记1、Maven项目架构管理工具Maven是一个工具,帮助我们导入jar包,不再需要手动导入。核心思想:约定大于配置。有约束,不要去违反。Maven会规定好如何编写java代码,必须按照这个规范来。web配置先在command+, 中设置tomcat的位置然后在具体的项目中 右上角configuration中设置该项目在tomcat中webapp的位置(该位置应设置为为此项目的webapp目录)Maven环境优化1.修改web.xml为最新的<?xml vers

2021-06-30 22:58:47 353

原创 TreeMap按照value排序

TreeMap默认实现只能根据key来排序,或者定义treeMap的时候new Comparator,自定义key排序的方法,但是不能按照value进行排序。可以使用下面的方法,对value进行一次排序。Map<String,Integer> map = new TreeMap<String,Integer>(); List<Map.Entry<String,Integer>> list = new ArrayList<Map.Ent

2021-06-26 16:20:15 5856 3

原创 leetcode 1105. 填充书架

题:https://leetcode-cn.com/problems/filling-bookcase-shelves/解1(超时):public static int minHeightShelves(int[][] books, int shelf_width) { int[] minHigh = new int[]{Integer.MAX_VALUE}; dfs(minHigh,0,books,shelf_width,0); return minH

2021-06-08 18:10:07 173

原创 leetcode103. 二叉树的锯齿形层序遍历

思:使用双端队列当奇数层结点被弹出后(使用尾部弹出),将它的孩子从左到右,模拟的加入到队列头部当偶数层结点被弹出后(使用头部弹出),将它的孩子从右到左,模拟的加入到队列尾部码:public static List<List<Integer>> zigzagLevelOrder(TreeNode root) { Deque<TreeNode> deque = new LinkedList<TreeNode>(); Lis

2021-05-29 21:51:06 88

原创 每日随机一题 leetcode778. 水位上升的泳池中游泳

题:思:使用迪杰斯特拉算法的思想,对其进行变化,改为:每次选一个当前可选的最小的边,当右下角那个点被遍历时,结束程序。刚开始只有(0,1)和(1,0)位置的点是可以选的,于是将它们加入到待遍历的点集合里。每次从待遍历的边里选一个权值最小的点,并更新当前最小值。然后将其上下左右还没有加入过队列的点,加入到队列中。当右下角那个点被遍历的时候,代表存在了一条连通的路使得左上角到右下角连通,并且此时最小值即为答案。使用优先队列来存放待遍历的点。码:class Node { in

2021-05-22 20:06:26 104

原创 每日一题 leetcode810. 黑板异或游戏 博弈论

看到这个题,第一反应就是上次连答案也没看懂的石子游戏,这个题答案讲的很清楚,属于博弈论内容题解链接:https://leetcode-cn.com/problems/chalkboard-xor-game/solution/hei-ban-yi-huo-you-xi-by-leetcode-soluti-eb0c/码:public boolean xorGame(int[] nums) { if(nums.length % 2 == 0) return ..

2021-05-22 14:58:00 82

原创 每日一题 leetcode 993.二叉树的堂兄弟结点

题:思:用第二个队列来保存在同一层的所有结点,如果能找到x和y,且它们不拥有同一个父节点,则返回true如果只能找到一个x或者y,则返回false,因为此时这意味着另一个x或者y,和我们这一层找到的x或者y一定不在同一层如果既没找到x又没找到y,则再找下一层最后也没找到,返回false码:public boolean isCousins(TreeNode root, int x, int y) { if (root.val == x || root.val == y)

2021-05-17 19:22:37 80

原创 每日随机一题 leetcode1452. 收藏清单 api的巧妙使用(List与Set的contains和containsAll的时间复杂度不同)

题:思:不断的考虑新的一个List,来更新map,map用于保存当前所有的满足条件的收藏清单如果新的list和过去的某一个list长度一样,那么他们一定不同如果新的list包含过去的某一个list的全部,那么就删除原来的,添加新的。可能会同时删除很多个如果新的list被包含于过去的一个list,那么新的list将不再考虑,直接考虑下一个list码:public List<Integer> peopleIndexes(List<List<String>>

2021-05-17 18:50:07 520

原创 leetcode 146. LRU缓存机制

题:思路:相当于自己定义一个带时间限制的treeMap 比较大小通过最后一次访问时间来判断map的底层显然是用链表实现的 1.put操作 遍历队列,看看是否已经存在这个key 如果已经存在,则找到位置并更新value,然后将该结点移至队列头 如果不存在 如果容量没满 直接头插 如果容量满了

2021-05-15 02:06:31 80

原创 二刷 leetcode 3. 无重复字符的最长子串 动态规划可以做

题:思:六个月前是用暴力解法做的,今天一看,可以用动态规划来做嘛!思路里最关键的一点在于Math.min详见代码码:public int lengthOfLongestSubstring(String s) { if(s.length() == 0) return 0; // int maxLen = 0; // map存的是 当前元素最后一次出现的位置 // dp存的是截止当前位置,从后往前没有重复元素的子串长度

2021-05-15 01:09:01 152

原创 每日随机一题 leetcode538. 把二叉搜索树转换为累加树

题:方法1:哈希表class TreeNode { int val; TreeNode left; TreeNode right; TreeNode() { } TreeNode(int val) { this.val = val; } TreeNode(int val, TreeNode left, TreeNode right) {

2021-05-14 22:37:43 52

原创 每日随机一题 leetcode638. 大礼包

题:思:深搜暴力解法码:public static int shoppingOffers(List<Integer> price, List<List<Integer>> special, List<Integer> needs) { // 深搜 要使得needs的所有元素恰好变为0时,所需的最小的价格和 // 对于needs的每一项,只要不为0,就有以下几种选择: // 1.直接减少自己 2.寻找一

2021-05-14 21:56:20 137

原创 每日随机一题 leetcode37. 解数独

题:思:暴力解法,深搜+回溯每次判断当前格子能不能从1到9里面选一个数,如果能就继续dfs当dfs到最后一行结束的时候,整个递归结束,得到答案。如果当前这个位置选了一个数,不能使得我们的递归运行到最后一行,说明当前位置不能选择这个数,因为当前位置可以考虑选择下一个数。如果当前位置不能选1-9任意的一个数,说明前面出问题了,回溯到前一步,改变前一步的数字。码:public static void solveSudoku(char[][] board) { /*

2021-05-14 14:33:51 86

原创 每日一题 leetcode1482. 制作m束花所需的最少天数

题:思:flower[i][j]表示第i天的时候,第j朵花是否开放 1为开放,0为不开放遍历所有可能的i(从bloomDay中选),如果能找到m组连续的k个 flower[i][j] == true 则返回i最后也没找到就返回-1结果:超出空间限制,因为使用了flower数组,开辟了过多的空间,实际上不需要使用该数组优化空间后,超出时间限制,因为是从set[0]开始找哪一天能满足条件,其实这是个二分查找经过两次优化后,终于勉强过了所有测试用例码:public int minDays(i

2021-05-13 21:04:40 78

原创 每日一题 leetcode1734.解码异或后的排列

题:码+思:public int[] decode_overTime(int[] encoded) { // 使用前缀和的思想,使得encoded[i] = perm[0] ^ perm[i+1] // 因为已知答案唯一,所以第一个数的答案只能是1到n中的一个数,因此暴力解法,直到找到合适的第一个数为止 for(int i = 1 ; i < encoded.length ; i++){ encoded[i] = encod

2021-05-13 19:17:23 84

原创 每日一题 leetcode1269. 停留在原地的方案数

题:思+码:public int numWays(int steps, int arrLen) { int sum = 0; // sum最后的值至少为1,因为可以选择全不动 /* 每次可以选择 向右、不动、向左 相当于背包问题,每次选择一项相当于背包容量-1 向右导致value+1 向左导致value-1 不动的话value不变 初始value为0,要保证经过steps操

2021-05-13 11:23:05 83

原创 leetcode 850. 矩形面积II (线段树)

答案看不懂,放弃。

2021-05-10 18:58:56 211

原创 每日随机一题 leetcode1449. 数为成本和为目标值的最大数字 完全背包问题,两个小时 自己写出来了!

题:思:最终的数位成本和必须恰好等于target换算为背包问题(拿了以后还可以再拿)数位1到9 对应9个物品,cost[0到8] 对应9个物品的重量;物品本身代表了自己的价值:要在尽可能的多拿物品(多拿数位),然后对结果进行排序,得到最大的价值所以可以把每个物品的价值都理解为1,因为每个物品的价值是等价的dp[i]表示重量为i的时候,最大的数位和(String类型)对于每一个物品(数位),我们可以选择拿或者不拿,如果拿的话,则把它插入到头部,因为循环越往后,数位越大,这样就无需给已经获得

2021-05-09 01:41:03 83 2

原创 每日随机一题 leetcode879.盈利计划 0-1背包问题 最难的dp问题类型之一,直接看答案思路

题:正确思路:首先将本题转换为背包问题:n个人相当于背包容量,minProfit相当于要求我背包里最少装的价值,group代表每个物品的重量,profit代表每个物品的价值对于第i个物品,dp[j][k]表示截止到第i个物品时,用j大小的容量,获取k的价值,有dp[j][k]条策略初始化dp[M][0] = 1; M=1,2,3,…n 解释:对于M大小的容量,初始情况下想要获取0的价值,只有一种方案,就是什么都不放。(现在还没有遍历过所有物品,有的物品价值是为0的)设w为第i个物品的重量,v

2021-05-05 21:46:22 144

原创 每日一题 leetcode740.删除并获得点数(dp、没做出来)

一道很好的dp问题,一开始压根没想到要用dp做,以为贪心可以做。看了答案,才知道dp还可以这么用题:答案思路先搞一个数组arr,用来存放1这个数字出现了几次,2这个数字先了几次…比如[2,2,3,3,3,4]放到arr里就是[0,0,2,3,1] 分别代表0这个数字出现了0次,1这个数字出现了0次,2这个数字出现了2次…然后dp[i]表示到i这个数为止,可以获得的最大的点数。由题可知,我如果选择j这个数,则直接获得j的所有点数,比如上面我选了3,那么直接获得点数9,然后我不能再选2和4于

2021-05-05 19:26:03 108

原创 每日一题 leetcode1473. 粉刷房子III

题:思:如果房子数为0则直接返回-1先数出已有街区machi ,如果已有街区大于target,直接返回-1M=target-machi代表还需要的街区数量如果M = 0,则答案唯一,直接计算即可 —> 不对,如果M = 0 答案也不一定唯一e.g houses[1,2,0,1,1] target=3 M=0 ,此时0可以被刷成1也可以被刷成2否则题目化简为,在剩余的所有没上色的房子houses里,划分M个街区的最小消耗开始时,当前已有街区cur为0从houses[0]里选择最小

2021-05-05 00:35:57 145

原创 每日随机一题 leetcode980.不同路径III

题:思:dp[i][j] 表示到坐标轴为i,j的点时,有dp[i][j]条路线dp[i][j] = dp[i-1][j]+dp[i][j-1]+dp[i][j+1]+dp[i+1][j]初始化:如果grid[i][j] == 1 ,则dp[i][j] =1计算完所有dp的值以后,返回dp[i][j],满足grid[i][j]==2关键点:从哪个点开始计算dp? 从grid[i][j]==1的地方开始计算! —> 也不行,需要引入记忆化!答案的动态规划思路看不懂,放弃思2:dfs

2021-05-04 22:41:53 101

原创 每日随机一题 leetcode290. 单词规律

题:思:哈希表码:public boolean wordPattern(String pattern, String s) { Map<Character, String> map = new HashMap<Character, String>(); String[] str = s.split(" ", 0); if(pattern.length()!=str.length) return fals

2021-05-04 21:28:01 229

原创 每日随机一题 leetcode1425. 带限制的子序列和

题:思:dp[i]表示右端点为i的最大的子序列和dp[0] = nums[0]dp[i] = max(max(dp[i-Q])+nums[i],nums[i]) ; Q = 1,2,…,k化简得 dp[i] = max(dp[i-Q],0) + nums[i]; Q = 1,2,…,k返回dp里最大的值上面的方法会超时,看了答案的思路,需要使用单调队列(单调栈)进行维护,避免多余的运算单调栈原理:如果dp[i] > dp[i-1] 则每次挑选max的时候,就不要去和dp[i-1]

2021-05-03 01:07:18 95

原创 每日一题 leetcode690.员工的重要性

题:思:广度优先搜索码:public int getImportance(List<Employee> employees, int id) { // 先找到员工id Employee start = findUseId(employees, id); if (start == null) return 0; int sum = 0; if (start.subordinates == null) retu

2021-05-02 22:31:36 87

原创 每日一题:leetcode554. 砖墙

题:思:对于每一行,将砖块转换为数字 [1,2,2,1] -> [1,3,5,6]把每一行都转换完以后,遍历[1,5]每一列,找出一条竖线使穿过的砖头最小对于每一列,如果有一行存在对应列数的数字,则表示经过此行没有穿过砖头代码超时当wall == [[100000000],[100000000],[100000000]]时,还从1遍历到100000000,显然是浪费时间优化方法:不从1开始遍历,只遍历出现过的数字,因为如果数字没出现,代表根本不可能在这一列减去1码:pu

2021-05-02 19:17:32 121

原创 每日随机一题 leetcode846. 一手顺子

题:思:例:hand = [1,2,3,6,2,3,4,7,8], W = 3true --> [1,2,3],[2,3,4],[6,7,8]思:先排序[1,2,3,6,2,3,4,7,8] --> [1,2,2,3,3,4,6,7,8]每次先挑一个最小的数,然后顺着找,找不到连续的W-1个数,就直接返回false如果找到了W个连续的数,则再找下一组如:[1,2,3,4,5,6] W=2 时,应该返回true,因为可以[1,2],[3,4],[5,6]码:publi

2021-05-02 16:46:42 81

原创 贪心专项练习:leetcode134. 加油站

题:思:出发点只能选在gas[i]>=cost[i]的这些位置每次减去cost[i]如果为负数,则放弃本次循环如果为正数,则再加上gas[i+1]码:public int canCompleteCircuit(int[] gas, int[] cost) { Stack stack = new Stack(); // 寻找合适的初始位置 for (int i = 0; i < gas.length; i++) {

2021-05-02 15:52:00 77

原创 贪心专项练习:leetcode122. 买卖股票的最佳时机II

题:思:思路:贪心,只要涨了我就卖,然后跌了我就买。买的前提是确保他会涨,卖的前提是确保他会跌例:[6,1,3,2,4,7]如果用上面的算法,找到7比6大,所以最后结果是1,但是最好的结果应该是(3-1)+(7-2)=7所以外面还要再套一层,表示从第一个点开始找的情况,第二个点开始找的情况…最后选出max这样还是不行,因为例:[2,1,2,1,0,1,2],第四个数是1,找到比它大的2,循环结束。换思路:dp[i-1] = dp[i] + prices[i-1]<prices[i]

2021-05-02 15:22:06 66

空空如也

空空如也

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

TA关注的人

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