自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 PostgreSQL - 基于pg_basebackup实现主从流复制

基于pg_basebackup实现主从流复制

2022-09-18 17:10:32 831 1

原创 jdk8 ReentrantLock源码注释解析

文章目录1 概述2 从ReentrantLock加锁的方法开始分析源码3 释放锁操作1 概述本篇是对jdk8 ReentrantLock的源码分析,jdk11跟这个有点差别。说ReentrantLock,必须先说一下AQS,ReentrantLock是基于AQS来实现。网上都这么说,什么叫基于AQS实现?其实就是ReentrantLock里调了很多AQS的方法,别被这种炒概念的说法给吓到,我一直被吓了好几年。对于锁,那么说什么可以当成锁?一个变量,一个存储,基于可以认为,任务一个可被共享访问的都可以

2022-05-29 18:05:11 227

原创 《SpringSecurity in Action》六: 基于Session实现登陆认证源码分析

文章目录1 概述2 认证流程2.1 Session是如何参与的3 源码解析1 概述本篇基于《SpringSecurity in Action》一: 基于Session实现登陆认证2 认证流程在《SpringSecurity in Action》书中,对登陆认证流程的示意图,可以看到流程还是很简单的,所以我们只要清楚的认识到就是这么几步,对登陆认证过程的认识就不会差到哪去。虽然流程图简单,但在细节上还是有很多需要学习的地方的,比如如何获取的用户信息,如何进行密码校验,登陆完成后做了什么,还有就是我

2022-05-01 13:33:39 491

原创 《SpringSecurity in Action》五:SpringSession基于redis实现分布式session设置session超时时间

文章目录1 概述2 原因3 测试1 概述在基于redis实现分布式session开发时,发现设置了session超时后怎么也不生效,我分别进行了两处设置:server: servlet: session: timeout: 300 # 5分钟spring: session: timeout: 300分别进行了这两处配置后,发现我们session并没有正确的设置为5分钟,还是默认的30分钟。2 原因当使用redis作为共享session时,会涉及到以下几个

2022-04-25 13:27:27 3563 1

原创 《SpringSecurity in Action》四:Session共享下的Session并发控制问题

文章目录1 概述2 原因3 解决方案4 方案实现1 概述该篇基于《SpringSecurity in Action》三:Session并发控制问题 & 《SpringSecurity in Action》二: 基于redis实现session共享在【《SpringSecurity in Action》三:Session并发控制问题】最后做测试时,刻意回避了一个问题,就是不要在多副本情况下进行测试,因为以上一篇的配置来说,还不支持在session共享下完成session并发控制。2 原因这里

2022-04-24 20:39:27 3996

原创 《SpringSecurity in Action》三:Session并发控制问题

文章目录1 概述2 实现方法3 测试方法1 概述Session并发控制指服务端控制客户端某个用户同时在线的数量,如某个账号在谷歌浏览器上进行了登陆,又在IE浏览器上进行了登陆,又在手动app上进行了登陆,那这时session并发数就是3.控制session并发的意思一是在于控制服务器资料占用,二是可以起到对帐号的保护作用。比较我们是不是都有这样的经历,我们正登着QQ呢,突然自己登出了,不久QQ就给我们发了一条消息,说你的帐号在哪哪哪登陆了,如果不是本人操作赶快修改密码。这就是session并发控制。如果

2022-04-24 19:38:36 1832

原创 《SpringSecurity in Action》二: 基于redis实现session共享

文章目录1 概述2 方案3 方案选择1 概述这一篇基于《SpringSecurity in Action》一: 基于Session实现登陆认证的简单实现SpringSecurity基于session实现登陆认证时,有一个问题就是无法实现分布式部署,因为session是存储在某一个节点(或是某一个服务副本)的内存里的。如有这么一个用户服务,有三个副本,当进行登陆时,登陆请求打在了副本1,而进行用户列表请求时,请求打在了副本2,这时副本2是没有副本1内存中的session信息的,所以请求会失败。这当然是一

2022-04-24 19:10:48 3125

原创 《SpringSecurity in Action》一: 基于Session实现登陆认证

SpringSecurity - 基于Session实现登陆认证1 依赖2 代码示例2.1 代码说明1 依赖 <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency>

2022-04-10 11:03:06 1423

原创 postgres分区表修改分区规则

需求描述:如按列表分区,有一个分区表里存放的是 l_type in ('1'),现在想把这个分区改为t_type in ('1', '3')。postgres好像没有直接提供这样的方法,需要间接地进行一下修改,这里会用到 ATTACH PARTITION 和 DETACH PARTITION。为了演示,准备工作就是把数据建出来创建父表create table list_partition_test(id serial, l_type char(1)) partition by list( l_typ

2022-02-09 18:39:51 695

原创 springmvc response.sendError()自定义消息提示

当http请求异常时,springmvc默认只返回错误码,但错误信息却给忽略了。message字段是空,如果想获取详情信息,可以在配置文件中添加如下配置:server: error: include-message: always添加后响应体为:...

2021-10-21 14:17:59 1897

原创 mybatis-plus + pagehelper 分页失效

失效就失效吧,muybatis-plus本来就带关分页功能呢,其实可以不用github的pagehelper插件。不过在使用mybatis-plus的分页时,要先配置一个分页拦截器:/** * @author kaige.wang * @date 2021-10-12 */@Configurationpublic class PageConfig { @Bean public MybatisPlusInterceptor mybatisPlusInterceptor() {

2021-10-14 09:34:42 2039

原创 Sublime text json格式化 for mac

1 安装Package Control这个直接按官网上安装就很好很好。Package ControlTools->command palette2 安装Pretty Json这个也直接按官网上安装就很好很好。Pretty JsonTools->command palette搜索install package,等会,出现弹窗后再搜索Pretty JSON.第1步安装的package control相当于一个包管理工具,第2步是从这个包管理工具里去安装Pretty JSON。注

2021-10-11 16:25:22 471

原创 springboot2.x启动日志不打印请求路径

这个也不知道为什么,反正springboot在2.x后修改了的启动日志里打印请求路径的日志级别。即、既然是修改了级别,那在配置文件里修改相应的日志级别–>trace,请求路径就回来了。如果是直接在yml文件里配置的话,如下:logging: level: org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping: traceproperties文件自然就是logging.l

2021-09-28 19:54:02 461

原创 nginx 报错 “http“ directive is not allowed here in ...

在nginx配置文件 /etc/nginx/nginx.conf 里有一行扩展配置 include /etc/nginx/config.d/*.conf,意思是说可以将子项目的配置写在config.d这个目录下,nginx在启动时,会加载该目录下所有以.conf结尾的配置文件。include /etc/nginx/config.d/*.conf这行配置是在主配置文件在http标签下的,意味着在/etc/nginx/config.d/*.conf里的配置文件都会被加载到主配置文件的http标签里去。所以如果

2021-09-27 19:48:21 21431 1

原创 redis GEO 结构 坐标计算

redis geo数据结构可以用来做坐标计算,其底层结构是 sort_set语法规则:geoadd key longitude latitude member [longitude latitude member …]member通常用某个具体的地点来表示,如现在要设置北京西站和北京南站两个地点的经纬度,语句如下:127.0.0.1:6379> GEOADD bj 116.321275 39.895096 bjxz 116.378438 39.864666 bjnz1) "bjxz"2)

2021-09-15 13:43:39 513

原创 docker搭建hadoop hdfs完全分布式集群

1 制作hadoop镜像参见 https://www.cnblogs.com/rmxd/p/12051866.html该博客中只参考制作镜像部分,固定IP及启动集群的部分应该跳过。这里注意,在做好的镜像里,要安装 which 工具,否则在执行 hdfs 命令时会报命令不存在异常。2 启动容器```docker run --name hmaster --hostname hmaster --network hadoop -d -P \-p 50070:50070 \-p 50010:500.

2021-09-07 17:56:38 2673 1

原创 PostgreSQL多条件执行update语句

以某一查询结果作为更新结果update t_infe set name = ( select t_pub.name from t_pub where t_pub.id = 21)-- update语句的限制条件where t_infe.t_pub = 21;该写法要求select语句只能返回一个一行一列的结果集。update的where条件是必不可少的,select语句的where条件只是用来限制查询的结果集的,不要误认为是update语句的限制条件。如果缺少update语句...

2021-01-08 17:50:32 3011

原创 PostgreSQL通过过程函数执行update语句

PostgreSQL通过过程函数执行update语句以某一查询结果作为更新结果update t_infe set name = ( select t_pub.name from t_pub where t_pub.id = 21)-- update语句的限制条件where t_infe.t_pub = 21;该写法要求select语句只能返回一个一行一列的结果集。update的where条件是必不可少的,select语句的where条件只是用来限制查询的结果集的,不要误认为是u

2021-01-08 15:50:09 1666

原创 PostgreSQL在插入数据时校验重复

insert into "user"( display_name, telephone, address, username, "password")select '王凯歌', null, null, 'wangkaige', '$2a$10$i2Wwn3AFp8t'where not exists( select id from "user" where username ='wangkaige' and delete_flag = false .

2021-01-01 22:32:56 1779

原创 tk-mybatis配置自定义TypeHandler

在使用tk-mybatis进行jpa方式配置ORM时,可以使用javax.persistence包提供的@Column注解,也可以使用tk-mybatis提供的@ColumnType。这两种方式可以同时出现在一个实体类中,如下:@Table(name = "hgd_user")@Datapublic class HgdUser implements Serializable { private static final long serialVersionUID = 1L; //

2020-12-07 23:41:42 2284

原创 tk-mybatis + PostgreSQL返回主键自增

tk-mybatis框架对PostgreSQL好像并不怎么友好,没有直接给出返回自增主键的功能,不过我们可以自己稍做努力加以实现。在tk-mybatis的tk.mybatis.mapper.common.base.insert.InsertSelectiveMapper接口中提供了通用的insert操作,该接口并没有提供返回自增主键的功能,如下:/** * 通用Mapper接口,插入 * * @param <T> 不能为空 * @author liuzh */@Regist

2020-12-07 23:34:35 1318

原创 maven免费视频--来自一个开发的整理

该视频由本人自己录制,风格略不同与培训机构,如果您怕被讲睡着,兴许可以换个品味听听这个。视频中,本人对一些问题并没有做更详细的讲解,而是将问题抛出,希望大家能自行探索,探索比学习更重要。链接如下:链接:https://pan.baidu.com/s/1vmHg8HrHEPzcFODScbb_uw提取码:40ap...

2020-06-14 15:38:59 123

原创 logback——(二)按域值输出日志

logback当使用域值过滤器时,有可能会报以下异常:no applicable action for [onMatch], current ElementPath is [[configuration][appender][filter][onMatch]]这可能是因为在其它地方Copy了logback.xml文件,里面用的过滤器是ch.qos.logback.classic...

2019-11-13 23:10:36 712

原创 logback——(一)按日志级别分别输出debug、info、warn、error日志到文件

logback<property name="log.path" value="D:/run/all-here/hgd11/shangcun-node/log"/>这一行用了绝对路径,使用相对路径的话,在IDE开发工具里可能用创建不出日志文件,所以在这里用绝对路径。不过这里不用担心,在生产环境里这里完全可以改为相对路径,开发环境只是为了规避IDE开发工具带来的BUG。同学们也可...

2019-11-12 23:40:12 12784

原创 图解HashMap内部结构

HashMap内部结构,见下图

2019-10-19 15:26:34 227

原创 Swagger使用介绍三之为Controller中参数添加JSONObject类型字段说明

回顾上文中我们介绍了如果给Controller中的参数添加字段说明:https://blog.csdn.net/shangcunshanfu/article/details/100838687,也留下了一个问题,那就是如何给JSONObject类型的参数添加字段说明,本章就来进行介绍说明Swagger其实是没有针对JSONObject添加字段说明功能的,这也很好理解,因为Swagger并没...

2019-09-17 23:22:14 8520 2

原创 Swagger使用介绍二之为Controller中参数添加字段说明

回顾上文介绍了Swagger如何生成API文档--https://blog.csdn.net/shangcunshanfu/article/details/100838137,本篇介绍一下如何在API文档上为参数添加说明。添加头信息import cn.hgd11.swagger.success.entity.TestEntity;import io.swagger.annotation...

2019-09-15 00:20:01 10996

原创 Swagger使用介绍一之生成API文档

简介Swagger UI允许任何人—无论是您的开发团队还是您的最终消费者—可视化并与API的资源交互,而不需要任何适当的实现逻辑。它是由您的OpenAPI(以前称为Swagger)规范自动生成的,带有可视化文档,便于后端实现和客户端使用。这是Swagger官网上对Swagger UI的介绍,简单讲就是它提供了一个可视化的API文档引入依赖SpringBoot集成的依赖<de...

2019-09-14 23:05:35 692

原创 mariadb数据库搭建一主一从

1 安装mariadb数据库略2 环境准备主库:192.168.239.129从库:192.168.239.1303 主库配置文件修改vim /etc/my.cnf在[mysqld]标签下添加以下三条配置log-bin=mariadblog # 打开二进制日志事件server-id=1 # 主库标识号,可自定义binlog-do-db=zentao # 需要进行同步的库名(前提...

2019-09-03 11:26:30 209

原创 SpringBoot整合Redis

首先来看一下目录结构一:创建一个SpringBoot项目后引入需要的jar包&lt;project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0...

2018-04-06 16:08:54 149

原创 jQuery动态添加多个元素后,绑定事件全部触发的解决办法

这个解决办法非常简单,而且我也深深地意识到这篇文章不会写太长,因为真的很简单。首先来看一下例子:for (var i = 0; i < 5; i++) { $tr += "" + "" + (i + 1) + "" //此处是非关键代码 + "" + "<input type='button' name='pa

2017-12-27 22:30:50 4601 4

原创 java中的static关键字

1 static 用来修饰成员变量先看一下以下代码public class Pen { private String color; private double price; public void write(){ System.out.println("this is a "+color+" pen,price is ¥"+price); }}public class

2017-12-15 21:20:23 137

原创 $ajax说明

说明到ajax,首先来说明几件事:1 C/S架构是指客户端与服务器端架构,用户通过客户端程序与服务器之间进行连接,如我们经常使用的QQ就是C/S架构的程序2 B/S架构是指浏览器与服务器端架构,用户不再需要下载安装客户端程序,只要你的电脑上有浏览器(IE,火狐,搜狗什么的都可以),就能够实现与服务器之间的连接3 B/S架构虽然能名实现只需要浏览器就能够达到与服务器的连接,但他也有个缺点

2017-12-04 15:50:04 306

原创 $.get $.post $.getJSON $.load异步请求的区别

$.get()与$.post()请求分别以get方式与post方式向服务器提出异步请求,语法如下$.get(url,[data],[success],[dataTyle]$.post(url,[data],[success],[dataTyle]url——请求的地址data——可选参数,请求的内容success——可选参数,请求成功后的回调函数dataType——可选参

2017-12-04 15:05:16 443

原创 java异常处理

java异常处理合机制使程序员从查找异常中解脱出来,更专心地把精力放到程序的设计上去……(此处省略许多字,从网上都查得到,我们直接进入正题)相信很多初学java的人都跟我有一个同样的疑惑,就是明明Exception就可以完成对异常的捕获,为什么还是设计那么多子异常,下面就对此问题发表一下自己的观点,并不代表权威。先来看一个测试Scanner s=new Scanner(System.i

2017-11-27 22:10:22 228

转载 java学习基本流程

J2EE是目前电子商务应用的经典技术。新手要学习掌握J2EE,个人认为应该从以下几个方面入手:1、学习DreamWaveMX中文版的网页设计技术。HTML网页设计,这是最基本的。学习XML的一些基本知识。初步掌握一些JSCRIPT的应用。2、学习JAVA语言。这应该分成2次来进行:第1次找一本国人写的JAVA程序设计书即可,重在学会JDK下的编程方法,最好不要用Jbuilder

2017-10-23 21:08:51 207

北大青鸟一单元嗖嗖移动营业厅项目

本项目较课本为升级版,添加了Socket与XML文档存储数据。项目中部分路径需要网友自己设置,并自行配置dom4j的jar包

2017-10-10

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

TA关注的人

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