自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(119)
  • 资源 (2)
  • 收藏
  • 关注

原创 开发中,异常通常在什么地方处理

建议Dao层,直接往上抛异常(一般都是数据库的运行时异常),Service层因为是暴露给其它应用的,并且会有很多业务信息需要传递给上层的调用者,所以这里有两种方式:1.通过抛出业务异常来,告知调用方具体的业务异常信息/系统异常信息(系统异常,上层可能不会关注)。2.Service中保证不会出现异常,并且返回一个Result给上层,Result里面包括的信息有:这次调用是否成功,如果失败会有一些业务信息。所以不用层层都去抓异常,如果要处理就在Service中处理(不管是单应用还是以后的服务化),具

2021-12-08 10:40:00 896

原创 JDK SPI机制

JDK SPI深入理解SPI机制

2021-11-26 10:34:17 232

原创 Jpa Specifications动态查询

spring data jpa(Specifications动态查询、多表设计、JPA中的一对多、JPA中的多对多、Spring Data JPA中的多表查询)SpringDataJpa中的复杂查询和动态查询,多表查询。(保姆级教程)

2021-11-16 14:01:48 330

转载 stream流式编程对List<Map<String, Object>>类型数据进行处理

https://www.cnblogs.com/zklymm/p/13986205.html

2021-11-11 17:25:16 1277

原创 Java-求绝对值

求绝对值求绝对值其实一点也不简单,有很多需要注意的点,接下来请打开以下链接开始欣赏吧…https://habr.com/en/post/574082/

2021-09-23 10:27:58 124

原创 Could not find artifact com.alibaba.cloud:spring-cloud-alibaba-dependencies

记录一个SpringCloudAlibaba环境搭建过程中的坑:开始的时候直接用的spring官网提供的alibaba依赖刷新maven以后,pom疯狂爆红,但是找不到原因,排查了maven版本、maven的配置文件,都没问题。最后发现官网提供的{spring.cloud.alibaba-version}少了一个 $ 符号,你敢信…最后加上$符号成功解决。...

2021-08-13 10:15:12 14239 4

原创 秒懂设计模式之建造者模式(Builder pattern)

秒懂设计模式之建造者模式(Builder pattern)

2021-05-27 16:55:52 50

原创 基础知识补充

1.枚举类深入理解Java枚举类型(enum)

2021-05-26 10:53:24 62

转载 elasticsearch安装教程(超详细)

https://www.cnblogs.com/hualess/p/11540477.html

2021-05-13 13:24:13 327

原创 centos7 ping不通网络

刚开始遇到的问题是网卡没有启动,问题如下:网上的解决办法:在CentOS系统上,目前有NetworkManager和network两种网络管理工具。如果两种都配置会引起冲突。由于一般我们都是使用 network 配置静态ip,可能是关机(某种缘故)导致NetWorkManager自动配置,发生了冲突,所以把它禁用掉就好了。临时关闭systemctl stop NetworkManager永久关闭systemctl disable NetworkManager重启systemctl res

2021-04-23 09:49:45 1624

转载 git的简单使用

git使用

2021-04-19 22:51:25 46

转载 一次完整的HTTP请求过程

浏览器进行DNS域名解析,得到对应的IP地址根据这个IP,找到对应的服务器建立连接(三次握手)建立TCP连接后发起HTTP请求(一个完整的http请求报文)服务器响应HTTP请求,浏览器得到html代码(服务器如何响应)浏览器解析html代码,并请求html代码中的资源(如js、css、图片等)浏览器对页面进行渲染呈现给用户服务器关闭TCP连接(四次挥手)...

2021-03-29 15:10:09 45

转载 面试题:你在项目中用过多线程么?

你在项目中用过多线程么?

2021-03-28 09:11:40 1591

转载 Tomcat跑程序的本质

web容器就是Java web程序跑起来的一个运行环境,就像我们平时运行一个Java代码的时候要先为它创造好JDK环境。同样的道理,要想运行一个web项目也需要一个环境,我们平常大部分用的都是Tomcat服务器。Tomcat服务器就是一个web容器,它是一种单一的服务器,上面只能跑web项目,还有其他混合容器不仅可以运行web项目也可以跑其他项目,有兴趣的可以Google一下。以上的解释是通俗的说法。实际上Tomcat服务器就是管理servlet组件的容器,它通过调用自身的方法来实现servlet的运行,

2021-03-27 22:59:11 127

转载 shiro 使用redis存储登录信息 实现单点登录

shiro是一款出色的权限框架,能够实现诸如登录校验、权限校验等功能,默认情况下,shir将session保存到内存中,这在应用分布式部署的情况下会出现session不一致的问题,所以我们要将session保存到第三方,应用始终从第三方获取session,从而保证分布式部署时session始终是一致的,这里我们采用redis保存session。单点登陆的实现逻辑是在用户登陆时,生成token,然后将token以用户登陆账号为key,保存到redis中,再把token放到cookie中,用户在访问的时候,我们

2021-03-19 16:23:07 1063

转载 Cookie、Session、Token、JWT?

https://juejin.cn/post/6844904034181070861

2021-03-17 09:03:19 48

转载 nodejs安装及npm全局模块路径的设置

参考:nodejs安装及npm全局模块路径的设置

2021-03-10 23:20:39 163

原创 复习Java基础知识中的一些思考

1.重载与重写之间的区别重载是同一个类中多个同名方法对于不同的传参来执行不同的逻辑处理。重写是子类对父类(或接口)方法的重新改造,外表不变,内部逻辑可以改变。2.Java语言3大特性:封装、继承、多态多态:是指程序中的引用变量所指向的具体类型和通过该引用变量发出的方法调用在编程时不确定,而是在运行期间才确定。多态的两种实现方式:继承(多个子类对同一个方法重写)接口(实现接口并覆盖接口中的同一方法)3.String为什么是不可变的?这样设计有什么好处?String 是由fin

2021-02-25 23:24:47 122

转载 cookie和session的区别

https://www.cnblogs.com/l199616j/p/11195667.html

2021-02-24 21:21:55 65

转载 剑指offer刷题--GZ23--二叉搜索树的后续遍历序列

解题思路:从O(nlogn)到O(n),比递归效率更高的方法:上限约束法方法一:递归法看了评论,发现大家普遍使用的是递归分割法,递归简单易懂容易实现,先来一次遍历以确定出左右子树的分界点,然后再分别对两棵子树进行递归判断。现在让我们来分析一下递归方法的时间复杂度:以标准的完美二叉搜索树为例,递归的每一层都涉及到对序列的遍历,虽然层数越深节点越少(少了子树的根节点),但是这种减少是微不足道的,即使是到了最底层,依旧有n/2的节点(完美二叉树第i层节点数是其上所有节点数之和+1),因此递归方法在每一层.

2021-01-28 01:13:33 107

原创 剑指offer刷题--GZ22--从上往下打印二叉树

解题思路:通过上面的具体例子分析,可以找到规律:每一次打印一个节点的时候,如果该节点有子节点,则把该节点的子节点放到一个队列的尾部。接下来到对队列的头部取出最早进入队列的节点放到ArrayList 中,重复前面的操作,直至队列中所有的节点都存到ArrayList中。注意:在Java中Queue是和List、Map同等级别的接口,LinkedList中也实现了Queue接口,该接口中的主要函数有:容量不够或队列为空时不会抛异常:offer(添加队尾元素)、peek(访问队头元素)、poll(访问队.

2021-01-25 00:34:30 89

原创 剑指offer刷题--GZ21--栈的压入,弹出顺序

解题思路:【思路】借用一个辅助的栈,遍历压栈顺序,先讲第一个放入栈中,这里是1,然后判断栈顶元素是不是出栈顺序的第一个元素,这里是4,很显然1≠4,所以我们继续压栈,直到相等以后开始出栈,出栈一个元素,则将出栈顺序向后移动一位,直到不相等,这样循环等压栈顺序遍历完成,如果辅助栈还不为空,说明弹出序列不是该栈的弹出顺序。举例:入栈1,2,3,4,5出栈4,5,3,2,1首先1入辅助栈,此时栈顶1≠4,继续入栈2此时栈顶2≠4,继续入栈3此时栈顶3≠4,继续入栈4此时栈顶4=4,出栈4,弹出序.

2021-01-24 00:48:05 102

原创 剑指offer刷题--GZ20--包含min函数的栈

题目描述定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1))。解题思路:看到这个问题, 我们最开始可能会想, 添加一个成员变量用于保存最小元素, 每次压栈时如果压栈元素比当前最小元素更小, 就更新最小元素.但是这样会有一个问题, 如果最小元素被弹出了呢, 如何获得下一个最小元素呢? 分析到这里可以发现, 仅仅添加一个成员变量存放最小元素是不够的, 我们需要在最小元素弹出后还能得到次小元素, 次小的弹出后, 还要能得到次次小的.因此, 用另一个栈来保存

2021-01-24 00:09:21 83

转载 Redis在docker上的安装、启动、停止、删除操作

查找镜像按名称搜索图像docker search redis按名称搜索并显示非截断描述(–no-trunc)docker search --stars=3 --no-trunc redis按名称redis搜索出星数至少为3颗星的镜像docker search --filter stars=3 redis显示名称中包含“redis”的图像,并且是自动构建docker search --filter is-automated redis显示的图像名称包含“redis”,至少3颗星,并且是官方版

2021-01-22 00:38:14 824

原创 XShell连接虚拟机centOs(NAT模式下)失败解决方法

最近发生了一件奇怪的事情,就是XShell有时候能连接Contos,有时候连不上,报一下错误。ens32网卡的ip信息跟虚拟网络编辑器中的ip也对着呢。啥原因呢?另外,我发现在contos7中可以ping通百度,可以ping通自己和网关,就是ping不通主机VMnet8而且,在windows中ping不通虚拟机百度了一大堆资料,比如看端口啊,防火墙啊,查看虚拟网络编辑器,始终解决不了。今天看了一篇博客,终于解决了这个困扰我许久的问题。因此,在这里记录下。原博客地址:NAT模式下虚拟机cen

2021-01-21 16:41:08 1316 1

原创 剑指offer刷题--GZ19--顺时针打印矩阵

解题:import java.util.ArrayList;public class Solution { public ArrayList<Integer> printMatrix(int [][] matrix) { //判断边界 if(matrix.length == 0){ return new ArrayList<Integer>(0); } //遍历方向--右下左上 .

2021-01-21 00:10:32 85

原创 剑指offer刷题--GZ18--二叉树的镜像

解题思路:交换左右子树的节点,然后递归调用该方法。/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public void Mirror(TreeNode root) .

2021-01-20 22:53:17 83

原创 剑指offer刷题--GZ17--树的子结构

自己写的:/**public class TreeNode { int val = 0; TreeNode left = null; TreeNode right = null; public TreeNode(int val) { this.val = val; }}*/public class Solution { public boolean HasSubtree(TreeNode root1,TreeNode root.

2021-01-19 00:28:22 84

原创 剑指offer刷题--GZ16--合并两个排序的链表

/*class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode Merge(ListNode list1,ListNode list2) { //先定义新链表的头结点 ListNode newListNode = n.

2021-01-18 00:16:18 87

原创 剑指offer刷题--GZ15--反转链表

题目描述输入一个链表,反转链表后,输出新链表的表头。示例1输入{1,2,3}返回值{3,2,1}public class Solution { public ListNode ReverseList(ListNode head) { if(head==null) return null; //head为当前节点,如果当前节点为空的话,那就什么也不做,直接返回null; ListNode pre = nu

2021-01-16 23:59:33 92

原创 剑指offer刷题--GZ14--链表中倒数第k个节点

题目描述输入一个链表,输出该链表中倒数第k个结点。示例1输入1,{1,2,3,4,5}返回值{5}方法一:/*public class ListNode { int val; ListNode next = null; ListNode(int val) { this.val = val; }}*/public class Solution { public ListNode FindKthToTail(ListNode h

2021-01-16 23:31:47 66

原创 剑指offer刷题--GZ13--调整数组顺序使得奇数位于偶数前面

题目描述输入一个整数数组,实现一个函数来调整该数组中数字的顺序,使得所有的奇数位于数组的前半部分,所有的偶数位于数组的后半部分,并保证奇数和奇数,偶数和偶数之间的相对位置不变。public class Solution { public void reOrderArray(int [] array) { //类似冒泡算法,前偶后奇数就交换: int oddNum = 0;//记录已经摆好位置的奇数的个数 for(int i = 0; i <

2021-01-16 22:28:16 61

原创 剑指offer刷题--GZ12--数值的整数次方

题目描述:给定一个double类型的浮点数base和int类型的整数exponent。求base的exponent次方。保证base和exponent不同时为0示例1输入2,3返回值8.00000暴力解法:public class Solution { public double Power(double base, int exponent) { //暴力解法:时间复杂度o(n),空间复杂度o(1) if(base == 0 &&amp

2021-01-16 00:04:43 83

原创 剑指offer刷题--GZ11--二进制中1的个数

题目描述:输入一个整数,输出该数32位二进制表示中1的个数。其中负数用补码表示。示例1:输入10返回值2如果不了解左移和右移,那么久先去了解下:https://blog.csdn.net/kaixuansui/article/details/92806813首先来看一个错误的解法:public class Solution { //从n的2进制形式的最右边开始判断是不是1 /* * 该解法如果输入时负数会陷入死循环,因为负数右移时,在最高位补得是1 *

2021-01-15 23:16:16 81

原创 hexo操作

2021-01-11 23:12:41 68

原创 java: 无法访问org.springframework.security.core.userdetails.UserDetailsService

前段时间做一个SSM企业权限管理系统的时候,遇到了一个bug项目没有成功编译什么原因呢,网上找了很久也没找到答案,算了自己摸索一下吧:看报错的字面意思就是缺少相关依赖呗,但是问题来了,service模块有SpringSecurity的依赖啊,并且web模块也导入了相关依赖,不应该存在这个问题啊!!!算了,可能是IDEA的bug,自己手动引入下吧,然后就ok了,就这么简单。...

2021-01-04 20:52:17 6541 2

原创 Java多线程产生死锁的4个必要条件?如何避免死锁?

一般造成死锁必须同时满足以下4个条件:1. 互斥条件:线程使用的资源必须至少有一个是不能共享的。2. 请求与保持条件:指的是进程至少有一个资源,但又提出了新的资源请求,而该资源已被其它线程占有,此时请求进程阻塞,但又对自己获得的其它资源保持不释放。3. 不剥夺条件:指的是进程已获得资源,在未使用完之前,不能被剥夺,只能在使用完时由自己释放。4. 循环等待条件:第一个线程等待其他的线程释放资源。后者又在等待第一个线程释放资源。因为要产生死锁,这4个条件必须同时满足。因此要防止死锁的话,只需要破坏其中

2020-12-21 09:43:10 1222

原创 MySQL索引到底使用int还是varchar

MySQL索引到底使用int还是varchar?这个问题就牵涉到利用索引存储数据方式的问题了我们都知道,MySQL默认使用InnoDB存储引擎,创建索引时底层使用的是B+Tree,通常B+Tree一共有3层或者4层。如下图所示:假如是三层B+Treee,假如每层能容纳16kb。 每一对指针p和key占了10个字节,每个data占了1kb,那么这个B+Tree到底能存储多少条数据呢?答案就是:第一层:16 * 1024/10第二层:16 * 1024/10第三层:16/1最终就是:16 *

2020-12-14 16:33:05 3146 1

原创 二叉树

二叉树:每个节点最多只有两个子节点的树被称为 二叉树满二叉树:如果二叉树的所有叶子节点都在同一层,且节点个数为2^n-1,则为满二叉树完全二叉树:如果该二叉树的所有叶子节点都在最后一层或者倒数第二层,而且最后一层的叶子节点在左边连续,倒数第二层的叶子节点在右边连续,我们称为完全二叉树。...

2020-12-08 23:05:58 55

原创 什么是TCP/IP协议中的“三次握手,四次挥手”?

2020-11-27 13:19:27 91

python-GeoLiteCity-latest.zip

redis实战配套资源

2022-01-08

Java程序设计基本逻辑训练.txt

1. 用三种循环语句求1+2+...+100的和。 2. 分别求100以内奇数和偶数的和,含100。 3. 求100以内3的倍数的和。 4. 将1到20的整数依次加到sum中,直到sum大于等于100。 5. 除了10和11,将1到20的整数加到sum中。 6. 求1+1/2+1/3+1/4+...+1/n的和。 7. 求1-1/2+1/3-1/4+...-1/100的和。 8. 依次输出1到100以内的每个数,每行5个。 9. 判断输入的整数是否为质数。

2019-05-17

空空如也

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

TA关注的人

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