自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(186)
  • 资源 (1)
  • 问答 (1)
  • 收藏
  • 关注

原创 什么?你还不会Redis?超级详细最新Redis教程

NoSQL的特点解耦!1、方便扩展(数据之间没有关系,很好扩展)2、大数据量高性能(Redis 一秒写8万次,读取11万,NoSL的缓存记录级,是一种细粒度的缓存,性能会比较高)3、数据类型是多样型的!(不需要事先设计数据库!随取随用!)4、传统RDBMS和NoSQL传统的RDBMS - 结构化组织 - SQL - 数据和关系都存在单独的表中 - 操作 数据定义语言 - 严格的一致性 - 基础的事务NoSQL - 不仅仅是数据 - 没有固定的查询语言 - 键值对存储,列存储

2021-03-26 16:08:05 994

原创 IDEA常用快捷键

CtrlCtrl+F:查询Ctrl+R:查询替换Ctrl+Y:删除光标所在行Ctrl+D:将光标所在行复制到光标所在的下一行Ctrl+W:递进式选择代码块Ctrl+W:打开修改历史文件Ctrl+N:根据类名查找文件Ctrl+J:列出Live TemplesCtrl+P:显示方法的传入参数Ctrl+U:进入光标所在类的父类Ctrl+/:注释Ctrl+Shift+/:生成块级注释Ctrl+F1:显示光标所在错误行的错误信息Ctrl+F3:跳到选中词出现的下一个位置Ctrl+Tabl

2020-05-20 20:06:40 321

原创 LeetCode——1011. 在 D 天内送达包裹的能力

题目描述:解题思路:因为存在一个ans比这个ans小的一定不能按照规定运送完货物,比ans大的一定能按照规定运送完,所以ans可以通过二分查找来确定。左边界和右边界分别是数组中最大值,和数组总和。参考代码: public int shipWithinDays(int[] weights, int D) { int l=0,r=0; for (int i = 0; i < weights.length; i++) { l=Math

2021-04-26 22:11:26 273

原创 LeetCode——897. 递增顺序搜索树

题目描述:解题思路:先中序遍历保存所有节点的信息,然后模拟构建。 List<Integer> list=new ArrayList<>(); public TreeNode increasingBST(TreeNode root) { LDR(root); TreeNode resTree=new TreeNode(list.get(0)); TreeNode temp=resTree;

2021-04-25 17:10:52 219

原创 使用nginx负载均衡将秒杀分配到多个服务

1、在秒杀接口里面写个用于测试的方法,以便我们查看哪个端口的服务。之后我们会在输出的日志文件中查看到服务运行在哪个端口。2、将打好的Jar包上传到Linux服务器上。确保防火墙的端口打开,使用下面的命令运行jar包。nohup java -jar miaosha-8080.jar --server.port=8080 >> 8080.log &nohup java -jar miaosha-8080.jar --server.port=8081 >> 8081.l

2021-04-21 10:45:56 490

原创 Linux安装MYSQL8.0

记录一下

2021-04-20 21:45:16 315

转载 MySQL索引-B+树(看完你就明白了)

今天在看MySQL的知识点的时候,看到一个写的很不错的博客,记录一下。MySQL索引-B+树(看完你就明白了)

2021-04-17 16:59:53 142

原创 LeetCode——198. 打家劫舍 |、||(简单DP)

题目描述:解题思路:这是一道简单的dp,转移方程是dp[i]=Math.max(dp[i-2]+nums[i],dp[i-1]);当前偷窃到的金额等于前面[i-2]偷到的金额,加上这次要偷窃的,也就是说这次偷加上隔一个前面偷,或者这次不偷加上前一次偷,这两个情况取最大值。参考代码: public int rob(int[] nums) { if(nums.length<=2){ if(nums.length<=1)

2021-04-16 17:28:21 111

原创 Linux服务器安装RabbitMQ——SpringBoot整合(过程+踩坑)

下载erlang下载地址下载好之后,将文件上传到linux服务器上,通常上传到/usr/local/bin目录下。一种面向并发的编程语言,RabbitMQ需要依赖erlang。注意不同版本的RabbitMQ需要不同版本的erlang。具体可以通过rabbitmq官网查看下载RabbitMQ下载地址两个都下载完成,上传至linux。安装erlang1、安装依赖yum install ncurses-devel2、解压tar xf otp_src_20.1.tar.gz3、进入文件

2021-04-16 10:44:14 675

原创 LeetCode——搜索旋转排序数组题目(二分查找)

153.寻找旋转排序数组中的最小值33. 搜索旋转排序数组81. 搜索旋转排序数组 II33. 搜索旋转排序数组解题思路:这些题都是利用二分查找的思想,因为本来有序的数组,在经过旋转后,分成了两部分各自有序的排列,在旋转后的数组中寻找一个target,可以证明的是target一定会落在一个有序的区间内,那么只需要去确定这个区间就可以了。nums[mid] > nums[left]) { //前半部分有序中间的这个值大于left,根据数组是有序旋转得到的,说明落到了前半部分有序的地方,例如

2021-04-07 20:46:54 188

原创 JVM学习笔记总结

面试题:​ 1、谈谈你对JVM的理解?java8虚拟机和之前的变化更新?​ 2、什么是OOM,什么是栈溢出StackOverFlowError?怎么分析?​ 3、JVM的常用调优参数有哪写?​ 4、内存快照如何抓取,怎么分析Dump文件?​ 5、谈谈JVM中类加载器你的认识?​1、JVM的位置[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Lh8TiWwR-1616987640569)(C:\Users\超厉害的我啊\AppData\Roaming\Typora

2021-03-29 11:14:21 107

原创 Java多线程总结

线程创建三种方式​ 1、继承Thread类 线程不一定立即执行,CPU安排调度​ 2、实现Runnable接口 把Runnable接口的实现类丢进Thread里面,再调用start(代理)​ 3、实现Callable接口(了解) 1、创建执行服务 2、提交执行 3、获取结果 4、关闭服务​ Callable 实现多线程好处:​ 1、可以定义返回值​ 2、可以抛出异常/** * 回顾总结线程的创建 */public class ThreadNew { public s

2021-03-29 11:02:37 118

原创 SpringBoot整合Redis的坑

我在项目的测试包里面写了测试方法,然后注入RedisTemplate,发现redisTemplate爆红,提示找不到bean。首先说下我犯得错误。1、这是主要的原因,没有加@RunWith(SpringRunner.class)注解然后我的@SpringBootTest还要在后面指定上classes = Application.class,这是因为我的main启动的包名和Test的包名不一致导致的。spring boot测试类包名与main下application.class启动类的包名默认要一致

2021-03-23 22:40:38 1975 1

原创 Java高频面试题——基础篇(持续更新)

如有错误,欢迎在下方评论指出Java高频面试题——基础篇(持续更新)1、谈谈对Java平台的理解?**a、**Java是一种面向对象的语言,具有跨平台运行的能力,能够 write once,run anywhere**b、**Java的GC机制,Java通过垃圾回收器去回收分配的内存,程序员不需要关系内存回收问题**c、**JRE和JDK:JRE是java的运行环境,包含JVM和Java类库。JDK则是在JRE的基础上提供了一些工具,比如编译器和一些诊断工具2、Java是解释执行语言吗?这

2021-03-22 19:37:50 778

原创 Mysql基础知识总结

数据库分类关系型数据库(SQL)​ Mysql,Oracle, Sql Server,DB2,SQLlite​ 通过表和表之间,行和列之间的关系进行数据的存储​非关系型数据库(NoSQL)Not only sql​ Redis,MongDB​ 非关系数据库,对象存储,通过对象的自身属性来决定外键​ 物理外键,数据库级别的外键,不建议使用!避免数据库过多造成困扰​ 最佳实现​ 数据库就是单纯的表,只用来存数据,只有行(数据)和列(字段)​ 要使用多张表的数据,使用外键用程序去实现DE

2021-03-22 17:16:41 138

原创 LeetCode——73. 矩阵置零

题目描述:解题思路:1、这道题一开始想尝试用dfs去解决,但是边界和判断的地方一直有问题,但是dfs是肯定能解开的,调试了好久,最终过了,但是解法的效率很低。2、看别人的题解,分别有O(n+m)和O(1)的解法。3、我也太菜了。参考代码:dfs int[][] res; boolean[][] pan; int[][] arr; public void setZeroes(int[][] matrix) { this.res = matrix;

2021-03-22 16:34:22 115

原创 LeetCode——227. 基本计算器 II

题目描述:解题思路:利用栈,记录数字前的符号,遇到+号就将数字压入栈中,-号就将数字的相反数压入栈中,遇到乘除,需要将栈顶数字取出后进行运算再放入栈中,最后将栈里元素相加即可。注意整数的个数不止有一位,所以要先将遍历的字符存起来。参考代码: public int calculate(String s) { char[] c = s.toCharArray(); Stack<Integer> stack = new Stack<>();

2021-03-11 08:56:02 186

原创 LeetCode——1208. 尽可能使字符串相等(双指针,滑动窗口)

题目描述:解题思路:首先将两个字符串的差值存入数组,然后根据滑动窗口的思想,利用双指针解题,定义变量来储存left和right区间内的总和,因为窗口是一个只增大,不减小的,所以当总和小于等于maxcost的时候,就让right++窗口增大,反之,则让left++,同时因为窗口不可能变小,所以right也要++,同时更新总和,这样最后的窗口大小就是该题目的答案,可以在增大窗口的时候设置变量,也可以直接让length减去left的位置都正确。这道题需要注意的地方是判断小于还是小于等于的地方容易搞错,需

2021-02-05 15:28:41 119

原创 Spring Cloud Config笔记总结

创建一个git仓库:1、 搭建一个git服务或者使用github私有仓库2、 在git服务中创建一个仓库用于存放我们的配置文件3、 比如创建名为:siki-xhb-config4、 在仓库中创建目录:siki-xhb-repository5、 在目录下创建与服务名相同的文件名:siki-xhb-hello-dev.yml6、 在各个服务名相同的文件夹下创建我们不同环境的配置文件一、Config Server1、 引入Spring Cloud Config依赖 <dependency

2021-02-04 15:02:08 124

原创 LeetCode——424. 替换后的最长重复字符(滑动窗口)

题目描述:解题思路:利用双指针或者滑动窗口解决,只是在最基础的滑动窗口上面加了个k,在判断的时候,只需要历史最长的连续序列+k即可。参考代码: public int characterReplacement(String s, int k) { int[] map=new int[26]; char[] c=s.toCharArray(); if(s.length()<=0) { return 0;

2021-02-02 16:41:20 103

原创 VMware Linux虚拟机修改ip地址

今天用ssh连接linux集群发现没办法连接,然后ip a查看发现ip地址莫名其妙改变了,由于jar包配置文件里面ip地址都写好了,只能把ip地址修改回原来的了。实验了无数次终于弄好了,搞了3个多小时真的坑。vi /etc/sysconfig/network-scripts/ifcfg-ens33进入配置文件修改获取IP的方式,由dhcp动态获取改成static静态获取,ip地址修改GATEWAY 网关NETMASK 子网掩码DNS1 设置为和网关一模一样的这三个在vm里面可以找到

2021-01-16 18:11:36 890

原创 LeetCode——86. 分隔链表(链表)

题目描述:解题思路:遍历链表,按照大小分成两个链表,然后将两个合并。参考代码: public ListNode partition(ListNode head, int x) { ListNode smallHead=new ListNode(); ListNode bigHead=new ListNode(); ListNode smallTail=smallHead; ListNode bigTail=bigHead;

2021-01-11 12:11:17 76

原创 LeetCode——122. 买卖股票的最佳时机 II&714. 买卖股票的最佳时机含手续费(入门dp,优化dp)

题目描述:解题思路:这道题之前用贪心写的,没去看dp的解法,现在补上。甜姨题解参考题解: public int maxProfit(int[] prices) { int dp[][]=new int[prices.length][2]; //[i][0]不持有 //[i][1]持有 dp[0][0]=0; dp[0][1]=-prices[0]; for (int i = 1; i <

2020-12-17 19:28:45 105

原创 LeetCode——738. 单调递增的数字

题目描述:解题思路:这道题贪心的去写,一开始暴力,超时了。甜姨的题解从前面往后面寻找,找到第一个str[i]>str[i+1],就将str[i]-1,后面位置全部变成9,但是有特殊情况,比如2333332,这就需要把第一个最大3变成2,然后后面的全变成9,res = 2299999,也就是从开始找,最大的数,但是要index值最小,一旦找到str[i]>str[i+1]的时候,就可以执行操作了,然后break。参考代码: public static int monotone

2020-12-15 22:19:37 86

原创 Android Studio安装运行HelloWorld踩坑

大致流程buggradle之前写web的时候用过,老是出错,这次安卓也遇到一大堆问题,文章里写的好:请不厌其烦的且厚不要脸的多次点击小象,哈哈哈gradle bug创建模拟器时unknown error模拟器The emulator process for AVD was killed.模拟器The emulator process for AVD was killed.build.gradle文件,里面镜像改成手写的,https http都试一下,不停的编译,防止证书问题。...

2020-12-15 01:08:28 383

原创 LeetCode——861. 翻转矩阵后的得分(贪心)

题目描述:解题思路:给定一个翻转方案,则它们之间任意交换顺序后,得到的结果保持不变。因此,我们总可以先考虑所有的行翻转,再考虑所有的列翻转。为了使最大,第一列要先全变成1,然后后面的列,如果0比1多,就变换。参考代码: public static int matrixScore(int[][] A) { //更改第一列 for (int i = 0; i < A.length; i++) { if(A[i][0]!=1)

2020-12-08 14:41:23 164

原创 LeetCode——842. 将数组拆分成斐波那契序列(深搜、贪心)

题目描述:解题思路:12月是贪心月,难受参考代码: public List<Integer> splitIntoFibonacci(String S) { List<Integer> res=new ArrayList<>(); backtrack(S.toCharArray(),res,0); return res; } private boolean backtrack(char[]

2020-12-08 14:28:47 177

原创 LeetCode——118. 杨辉三角

题目描述:解题思路:每一行第一个和最后一个数是1,中间的数等于上一行的(index-1)+index参考代码: public List<List<Integer>> generate(int numRows) { List<List<Integer>> res=new ArrayList<>(); for (int i = 0; i <numRows ; i++) {

2020-12-06 10:36:01 243

原创 LeetCode——204. 计数质数(埃氏筛)

题目描述:解题思路:10^6的数据范围,暴力超时了,需要用素数筛,欧拉筛看了几篇博客没看懂,还有另一种埃氏筛,就是先把所有都当成质数,然后从2开始他的倍数都标记为合数,csdn看半天,不如去看甜姨的题解,动图一下子就明白了,至于原理,不证明也行,会用就行。参考代码: public int countPrimes(int n) { boolean[] isprime = new boolean[n]; int count=0; Arrays.fi

2020-12-03 21:56:27 125

原创 牛客编程巅峰赛S2第5场:牛牛与后缀表达式

题目描述:原题链接解题思路:利用栈去模拟后缀表达式参考代码: public long solve (String str) { // write code here Stack<Long> s = new Stack<>(); long temp = 0; for(int i =0; i<str.length(); i++){ if(str.charAt(i)>='

2020-12-02 20:10:08 217

原创 牛客编程巅峰赛S2第5场:怕npy的牛牛(滑动窗口)

题目描述:原题链接解题思路:这道题类似与leetcode的第三题求无重复字符的最长子串,利用滑动窗口的思想,去不断更新left,维护max从一开始遍历整个字符串,每次遍历到就添加进去,添加进去后判断是否包含n p y三个字母,如果不是全部包含,max = Math.max(max,i-left+1);维护max的值即可,如果都包含了,就找到n p y 三个字母那个位置再最左边,也就是位置坐标最小的一个,将left指针更新到该处+1即可,然后还是维护max的值。参考代码: public

2020-12-02 20:00:16 212

原创 LeetCode——34. 在排序数组中查找元素的第一个和最后一个位置(二分)

题目描述:解题思路:一开始用暴力写了,没注意到题目要 O(log n),然后这道题一看复杂度,而且是有序的,就要想到二分。但是这道题要考虑开始位置和结束位置不同二分,也就是找左边界的时候,要找到最左边,就是当mid等于target的时候,也要继续向左找,相反,对于右边界也是一样。这里注意一下二分的坑,就是需要注意mid的下取整,mid要变成int mid = left + (right - left + 1) / 2;这里需要多调试才能有熟练。可以去看liweiwei的视频更好理解参考代码:

2020-12-01 19:43:31 68

原创 IME++ Starters Try-outs 2019

Building Bridges原题链接最长公共子序列,动态规划参考代码: public static void main(String[] args) { Scanner sc=new Scanner(System.in); char[] s1 = sc.next().toCharArray(); char[] s2 = sc.next().toCharArray(); int[][] dp = new int[s1.lengt

2020-12-01 17:35:16 81

原创 牛客编程巅峰赛S2第四场:牛牛摆玩偶

题目描述:解题思路:这道题写的时候,没有思路,感觉像是dp但是不是。这道题其实是利用二分+贪心的思想,就是二分答案,如果一个距离符合条件,那么比这个距离小的就都符合条件,相反,如果不符合,那么比这个距离大的也就都不符合,所有二分的去找答案,然后check去判断是否符合,判断符合的时候就利用贪心的思想。参考代码: public class Interval { int start; int end; public Interval(int start, int end)

2020-11-28 16:02:45 142

原创 牛客编程巅峰赛S2第四场:交叉乘

题目描述:解题思路:这道题需要数学推导加前缀和,比较不容易想到,一开始我写的暴力,很显然过不了。首先这个式子可以想到乘法表,一个区间的和就类似于99乘法表。这个可以推导出来,写出乘法表的式子,可以推导出来,就是把区间的所有数的平方都存起来,但是最后结果要减去对角线上的,因为那个是不需要的,在除于2就是结果,但是java比较麻烦,在取模的时候需要用到题目给的提示。参考代码: public int[] getSum(int[] a, int[] query) { int

2020-11-28 15:54:34 154

原创 LeetCode——454. 四数相加 II

题目描述:解题思路:这道题利用哈希表做。可以讲4个数组分成2个map,每一个map用双重for循环,所有相加的和保存到Key中,如果出现多个相同,则Value+1,当两个是相反数的时候,说明符合条件,具体其实一个map就可以实现了。参考代码: public int fourSumCount(int[] A, int[] B, int[] C, int[] D) { HashMap<Integer, Integer> map = new HashMap<&g

2020-11-27 19:29:03 94

原创 LeetCode——452. 用最少数量的箭引爆气球(贪心、Lambda表达式区间右端升序排序)

题目描述:解题思路:1、 一开始做这道题,我思路想错了,以为是合并区间后,然后看还有多少个区间就是答案。其实这道题不是这样的。因为前面如果按照合并区间后,可能出现几个区间需要多个子弹射击才能符合条件,但是由于前面吧区间合并了,所有最后计算的时候也会出错。这道题正确的做法,是按照右端端点升序排序后利用贪心。重点是要理解为什么用右端排序。2、 右端升序排序后,第一个区间的结束位置和下一个区间的开始位置比较,如果比下一个区间小的话,说明两个区间不连续,无法做到一个子弹射击掉,所有count++,然

2020-11-23 21:48:17 197

原创 LeetCode——283. 移动零

题目描述:解题思路:第一种方法,统计零的个数,然后重构数组第二种方法,双指针,其实和第一种方法差不多。第三种方法,利用快排的思路,遍历一次。参考代码: public void moveZeroes(int[] nums) { int zc=0; for (int i = 0; i < nums.length; i++) { if(nums[i]==0) zc++; } i

2020-11-19 11:21:50 96

原创 CCPC2019河南省赛:最大下降矩阵

题目描述:解题思路:这道题目是求最长上升序列的变形题,在求最长上升序列的时候,我们定义dp数组来存储每个位置上对应的符合条件的状态量,遍历,当前面有小于自身的数的时候,dp就更新和自身以及小于自身数+1取最大值,这里对应的思想就是,如果前面出现了比某个数大的数,这个数就可以加到前面数字后面,构成新长度的序列.这道题我们把矩阵每一行看作一个数,在更新dp状态时候的判断就变成了判断一整行的元素情况了.因为这道题是下降矩阵,所以就是当前面行所有元素都比下面行元素大的时候,才去更新dp的状态,否则,一旦前

2020-11-18 22:07:32 233

原创 LeetCode——134. 加油站

题目描述:参考代码: public static int canCompleteCircuit(int[] gas, int[] cost) { int len=gas.length; //每一个节点可以走到终点,就放入index否则放入-1;最后返回数组中最大的元素即是答案 int f=-1; int[] res=new int[len]; int count; for (int i = 0;

2020-11-18 20:18:30 100

sms-login.zip

SpringBoot整合SSM框架用户登陆注册Deom,有前端页面的显示,有过滤器的配置,注解详细。

2020-06-03

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

TA关注的人

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