- 博客(99)
- 收藏
- 关注
原创 Effective Java——第一条:用静态工厂方法代替构造器
总共讲述了静态工厂方法的五大优势和两个缺点优势1. 静态工厂方法有名称(用Boolean类来举例)java手册链接这是我常用的java手册,虽然有时候翻译很不好,但是看一些方法和属性很便捷上面两张图是Boolean类的构造方法和静态方法(返回值是Boolean的是其静态工厂方法),可以看到几点区别和相同点1.构造方法没有名称,静态工厂方法有名称2.构造方法和静态工厂方法返回的对象都是Boolean这时候就凸显了静态工厂的优点,我们可以通过名称看出来我们调用这个方法的要干嘛。2. 在
2021-04-16 17:43:20
256
原创 对Map排序涉及到Comparator的用法
Java语言利用Collections.sort对Map,List排序TreeMap排序Map<String, String> treeMap = new TreeMap<String, String>(new Comparator<String>() { public int compare(String o1, String o2) { // 升序排序 return o1.
2021-04-14 11:56:47
585
原创 springboot秒杀系统与架构(1)--建立工程
想记录一下这次整个工程的过程创建项目spring initializr添加依赖(主要是整理父工程的pom.xml)这是一个商品秒杀项目,技术栈 springboot+redis+RabbitMQ,先暂时添加这么多依赖,后面再添加其他需要的这是创建之后的工程,但是这个不行,应该是父工程、子工程,所以这个父工程最开始添加依赖也没有用,那需要在父工程做什么呢1、统一管理jar包的版本,其依赖需要在子工程中定义才有效2、统一的依赖管理3、控制插件的版本4、聚合工程POM关系
2021-04-10 20:04:19
169
原创 interceptor和filter的理解
Servlet是什么???servlet是一个接口,有五个方法,是一种规范servlet容器,比如Tomcat直接和request打交道,负责将request交给合适的servlet,比如DispatcherServlet,根据url负责mapping之类的。spring容器和Servlet容器?servlet容器,web容器,spring容器,springmvc容器的区别这个文章的意思就是request先到达servlet容器,servlet容器通过分发器分发到spring容器中,spr..
2021-04-03 22:22:43
108
原创 优先队列的比较器
PriorityQueue<Map.Entry<Integer,Integer>> queue = new PriorityQueue<>(new Comparator<Map.Entry<Integer,Integer>>(){ @Override public int compare(Map.Entry<Integer,Integer> o1,Map.Entry<Integer.
2020-11-05 10:31:03
665
原创 LeetCode 347 前K个高频元素
class Solution { public int[] topKFrequent(int[] nums, int k) { HashMap<Integer,Integer> map = new HashMap<>(); PriorityQueue<Map.Entry<Integer,Integer>> queue = new PriorityQueue<>(new Comparator<Map.E.
2020-11-03 10:01:28
69
原创 LeetCode 394 字符串解码
1.class Solution { int index=0; public String decodeString(String s) { return analysis(s); } public String analysis(String s){ StringBuilder sb = new StringBuilder(); int num=0; String temp; while.
2020-11-01 12:10:37
142
原创 LeetCode 34 在排序数组中查找元素的第一个和最后一个位置
1.自己的解法,二分法,但是比较笨class Solution { public int[] searchRange(int[] nums, int target) { if(nums.length==0) return new int[]{-1,-1}; int left=0,right=nums.length-1; int[] res = new int[2]; while(left<right&&(nu
2020-10-20 11:23:38
62
原创 LeetCode 153 寻找旋转排序数组中的最小值
class Solution { public int findMin(int[] nums) { if(nums.length==1) return nums[0]; int left=0,right=nums.length-1; while(left<right){ int mid=(left+right)/2; if(nums[mid]<nums[right]){ .
2020-10-18 15:31:21
112
原创 java.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present
ava.lang.TypeNotPresentException: Type javax.xml.bind.JAXBContext not present at java.base/sun.reflect.generics.factory.CoreReflectionFactory.makeNamedType(CoreReflectionFactory.java:117) ~[na:na] at java.base/sun.reflect.generics.visitor.Reifier.visitC.
2020-10-17 16:41:44
177
原创 LeetCode 33 搜索旋转排序数组
class Solution { public int search(int[] nums, int target) { if(nums.length==0) return 0; if(nums.length==1) return nums[0]==target?0:-1; int left=0,right=nums.length-1; while(left<=right){ int mid=(left+.
2020-10-17 16:24:23
71
原创 LeetCode 278 第一个错误的版本
public class Solution extends VersionControl { public int firstBadVersion(int n) { int left=1,right=n,mid; while(left<right){ mid=left+(right-left)/2; if(isBadVersion(mid)) right=mid; else left...
2020-10-16 11:28:29
57
原创 LeetCode 376 摆动序列
1.自己的解法class Solution { public int wiggleMaxLength(int[] nums) { if(nums.length==0) return 0; int count=1,up=1,down=1; for(int i=1;i<nums.length;i++){ if(nums[i]>nums[i-1]){ up=1;
2020-10-16 10:23:45
67
原创 LeetCode 75 颜色分类 283 移动零
1.双指针class Solution { public void sortColors(int[] nums) { int p0=0,p1=0; for(int i=0;i<nums.length;i++){ if(nums[i]==1){ int temp = nums[i]; nums[i] = nums[p1]; nums[p1]
2020-10-15 11:39:58
64
原创 LeetCode 228 汇总区间
class Solution { public List<String> summaryRanges(int[] nums) { List<String> res = new ArrayList<>(); if(nums.length==0) return res; int L=nums[0],R=nums[0],i; for(i=1;i<nums.length;i++){ ...
2020-10-14 10:27:39
67
原创 LeetCode 152 乘积最大子数组
1.动态规划数组class Solution { public int maxProduct(int[] nums) { int[][] dp = new int[nums.length][2]; dp[0][0]=nums[0]; dp[0][1]=nums[0]; for(int i=1;i<nums.length;i++){ if(nums[i]>=0){
2020-10-13 11:22:09
91
原创 LeetCode 238 除自身以外的数组乘积
1.左右乘积class Solution { public int[] productExceptSelf(int[] nums) { int n=nums.length,R=1; int[] res = new int[n]; res[0]=1; for(int i=1;i<n;i++){ res[i]=nums[i-1]*res[i-1]; } for(int i.
2020-10-12 10:35:16
71
原创 LeetCode 209 长度最小的子数组
1.题解 双指针class Solution { public int minSubArrayLen(int s, int[] nums) { int sum=0,start=0,end=0,max=Integer.MAX_VALUE; while(end<nums.length){ sum+=nums[end]; while(sum>=s){ max=Math.min(
2020-10-12 09:16:26
67
原创 LeetCode 53 最大子序和
1.贪心算法class Solution { public int maxSubArray(int[] nums) { int max=nums[0]; for(int i=1;i<nums.length;i++){ if(nums[i-1]>0) nums[i]+=nums[i-1]; max=Math.max(max,nums[i]); } return max;
2020-10-11 11:55:53
72
原创 LeetCode 239 滑动窗口最大值
1.暴露class Solution { public int[] maxSlidingWindow(int[] nums, int k) { int[] res = new int[nums.length-k+1]; if(nums.length==1||k==1) return nums; int n=0; for(int i=0;i<=nums.length-k;i++){ int max=nu
2020-10-11 11:48:20
51
原创 JavaWeb 为什么springboot查不出数据库的信息
因为我是初学,没用过这个springboot和通用mapper,没想到这个主键要自己加,我以为会自己识别哪个是主键,太天真了
2020-10-10 19:34:59
813
原创 LeetCode 56 合并区间
1.按首元素排序class Solution { public int[][] merge(int[][] intervals) { if(intervals.length==0) return new int[0][2]; Arrays.sort(intervals,new Comparator<int[]>(){ public int compare(int[] intervals1,int[] intervals2){
2020-10-10 11:48:16
76
原创 LeetCode 135 分发糖果
1.暴力解法class Solution { public int candy(int[] ratings) { int sum=0; int[] candies = new int[ratings.length]; Arrays.fill(candies,1); boolean flag=true; while(flag){ flag=false; for(int
2020-10-09 11:02:10
102
原创 LeetCode 287 寻找重复数
1.自己的做法class Solution { public int findDuplicate(int[] nums) { int i; for(i=0;i<nums.length;i++){ while(nums[i]!=i+1&&nums[i]!=nums[nums[i]-1]){ int temp=nums[i]; nums[i]=nums[te
2020-10-08 15:38:53
67
原创 LeetCode 164 最大间距
1.这个排序+比较class Solution { public int maximumGap(int[] nums) { if(nums.length<2) return 0; Arrays.sort(nums); int max=0; for(int i=1;i<nums.length;i++){ max=Math.max(max,nums[i]-nums[i-1]); }
2020-10-08 14:53:51
75
原创 LeetCode 334 递增的三元子序列
1.哎,出错了好多次class Solution { public int longestConsecutive(int[] nums) { if(nums.length==0) return 0; if(nums.length==1) return 1; Arrays.sort(nums); int max=0,pos=0,i,k=0; for(i=1;i<nums.length;i++){
2020-10-07 12:13:57
55
原创 LeetCode 334 递增的三元子序列
1.这个题看的题解class Solution { public boolean increasingTriplet(int[] nums) { if(nums.length<3) return false; int small=Integer.MAX_VALUE,mid=Integer.MAX_VALUE; for(int i=0;i<nums.length;i++){ if(nums[i]<small
2020-10-07 11:13:22
65
原创 LeetCode 42 接雨水
1.自己的解法class Solution { public int trap(int[] height) { if(height.length==0) return 0; int left=0,right=height.length-1,count=0,maxl=height[0],maxr=height[height.length-1]; while(left<right){ if(height[left]<
2020-10-06 11:21:57
59
原创 LeetCode 11 盛最多水的容器
1.双指针class Solution { public int maxArea(int[] height) { int left=0,right=height.length-1,max=0; while(left<right){ int count=(right-left)*Math.min(height[left],height[right]); max=Math.max(max,count);
2020-10-06 10:15:41
63
原创 LeetCode 714 买卖股票的最佳时机含手续费 + 309 最佳买卖股票时机含冷冻期
class Solution { public int maxProfit(int[] prices, int fee) { if(prices.length==0) return 0; int dp_i_0=0,dp_i_1=Integer.MIN_VALUE,temp; for(int i=0;i<prices.length;i++){ temp=dp_i_0; dp_i_0=Math.max(.
2020-10-05 16:41:58
65
原创 LeetCode 188 买卖股票的最佳时机|V
1.真的好烦了看见这个题,就其实是把“买卖股票的最佳时机III”的dp方法的k=2改为题上的k就OK但是,会报错,超内存然后,看了题解,一次交易由买入和卖出构成,至少需要两天。所以说有效的限制 k 应该不超过 n/2,如果超过,就没有约束作用了,相当于 k = +infinity。就是“买卖股票的最佳时机II”的情况 k=+无穷然后我就拼凑了两种方法在一起,也不知道其他大神怎么来的,但是这个系列把我折磨死了class Solution { public int maxP
2020-10-05 16:20:45
92
原创 LeetCode 123 买卖股票的最佳时机|||
1.根据前面两个题的动态规划思想做的class Solution { public int maxProfit(int[] prices) { if(prices.length==0) return 0; int[][][] dp = new int[prices.length][3][2]; for(int i=0;i<prices.length;i++){ for(int k=1;k<3;k++){ .
2020-10-05 16:02:33
55
原创 LeetCode 122 买卖股票的最佳时机||
1.自己的做法class Solution { public int maxProfit(int[] prices) { int out=0; for(int i=1;i<prices.length;i++){ if(prices[i]>prices[i-1]){ out+=prices[i]-prices[i-1]; } } return
2020-10-05 11:58:54
96
原创 LeetCode 121 买卖股票的最佳时机
1.自己的做法class Solution { public int maxProfit(int[] prices) { if(prices.length==0) return 0; int in=prices[0],out=0; for(int i=1;i<prices.length;i++){ if(prices[i]>in&&prices[i]-in>out){
2020-10-05 11:27:02
64
原创 LeetCode 45 跳跃游戏||
1.递归+贪心算法class Solution { public int jump(int[] nums) { if(nums.length==1) return 0; return cJ(nums,0,0); } public int cJ(int[] nums,int begin,int count){ if(begin+nums[begin]>=nums.length-1) return count+1;
2020-10-04 15:52:34
90
原创 LeetCode 55 跳跃游戏
1.自己的做法,递归class Solution { public boolean canJump(int[] nums) { return cJ(nums,0); } public boolean cJ(int[] nums,int begin){ int max=0,pos=begin; for(int i=begin+1;i<nums.length&&i<=begin+nums[begin];i+
2020-10-04 15:01:27
75
原创 LeetCode 220 存在重复元素|||
1.暴力class Solution { public boolean containsNearbyAlmostDuplicate(int[] nums, int k, int t) { if(k==10000) return false; for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length&&j<=i+k;j++){ .
2020-10-03 16:22:00
63
原创 LeetCode 219 存在重复元素||
1.线性搜索class Solution { public boolean containsNearbyDuplicate(int[] nums, int k) { for(int i=0;i<nums.length;i++){ for(int j=i+1;j<nums.length&&j<=i+k;j++){ if(nums[i]==nums[j]) return true;
2020-10-03 13:44:46
52
原创 LeetCode 217 存在重复元素
1.第一种排序,循环class Solution { public boolean containsDuplicate(int[] nums) { Arrays.sort(nums); for(int i=1;i<nums.length;i++){ if(nums[i]==nums[i-1]){ return true; } } return f
2020-10-03 13:04:46
65
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人