自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(183)
  • 问答 (1)
  • 收藏
  • 关注

原创 Conductor之动态分叉

关于动态分叉,参考。

2023-12-01 18:13:56 100

原创 Java安全-开篇

Java安全技术包括大量API、工具以及常用安全算法、机制和协议的实现。Java安全API涉及广泛的领域,包括密码学、公钥基础设施、安全通信、身份验证和访问控制。Java安全技术为开发人员提供了编写应用程序的全面安全框架,同时也为用户或管理员提供了一套安全管理应用程序的工具。

2023-01-10 14:35:27 200 1

原创 k8s之Controller

k8s之Controller

2022-10-07 11:09:49 195

原创 k8s之Pod

pod的基本概念

2022-10-07 10:52:44 261

原创 k8s生成yaml的两种方式

k8s生成yaml的方式

2022-10-07 10:10:14 1420

原创 No converter for [class XXX] with preset Content-Type ‘application/octet-stream;charset=UTF-8‘

No converter for

2022-08-29 12:24:32 14272

原创 OAuth 2.0 笔记 (1) 世界观

OAuth 2.0笔记(1)世界观来自台湾同胞的博客:https://blog.yorkxin.org/posts/oauth2-1-introduction.html,繁体字做了复制转换。最近需要实现 OAuth 2 认证,不是接别人的 OAuth 2 ,而是自己制作出可以让别人接我们的 OAuth 2 的服务(俗称 Provider)。 但看到既有的 OAuth 2 server library 如 rack-oauth2 却都看不懂,所以花了很久的时间来研读 RFC 6749 这份 OAuth

2022-03-08 18:07:34 308

原创 Dubbo常用技巧

环境、Apollo服务地址、dubbo标签-Dspring.profiles.active=dev-Denv=dev-Dapollo.configService=http://192.168.60.9:8080-Ddubbo.provider.tag=huangxiao-local-debug-Ddubbo.consumer.tag=huangxiao-local-debug##-Ddubbo.protocol.port=20882dubbo zk连接超时配置项加上:dubbo: co

2021-11-30 17:09:48 1355

原创 解决IDEA的maven刷新依赖时出现Connot reconnect错误

使用IDEA的maven刷新依赖时报如下错误:其原因是因为IDEA的maven中的importing使用的JDK与你实际项目使用的JDK版本不一致导致的。比如我的项目使用的是JDK 1.8,但maven的importing用的是JDK 11,修改为你的实际JDK版本即可。...

2021-05-13 17:21:06 16567 7

转载 Spring Validation最佳实践及其实现原理,参数校验没那么简单!

之前也写过一篇关于Spring Validation使用的文章,不过自我感觉还是浮于表面,本次打算彻底搞懂Spring Validation。本文会详细介绍Spring Validation各种场景下的最佳实践及其实现原理,死磕到底!项目源码:spring-validation(https://github.com/chentianming11/spring-validation)。简单使用Java API规范(JSR303)定义了Bean校验的标准validation-api,但没有提供实现。hibe

2021-05-13 16:11:50 167

原创 数据库和缓存一致性问题

一般来说我们的业务场景是把Redis作为缓存来用,而把关系型数据库作为持久化来用,那么当数据修改时就存在数据一致性的问题。而解决这种一致性问题主要有两种模式:双写模式和失效模式。双写模式从上图可知,由于服务器存在网络分区问题(网络闪断、服务性能差异、CPU、内存等各种因素),存在写缓存不一致形成了短暂的脏数据。另外,可能存在更新逻辑比较复杂,如果再用复杂的逻辑去更新缓存得不偿失,因此在这种情况下双写模式并不是很合适。失效模式此模式相比复杂修改时要好一些,但同样存在缓存不一致的情况。

2021-04-01 16:37:02 198

原创 消息的可靠性保障

所谓MQ消息可靠性抵达其实就是生产者生产的消息能准确无误的被消费者消费到。要保证消息的不丢失、可靠抵达,可以采用AMQP 0-9-1协议的事务消息(并非所有的MQ中间件都支持),但这样会导致吞入量下降250倍,为此建议使用确认机制(参考RabbitMQ官方文档的Publisher Confirms章节:https://www.rabbitmq.com/confirms.html)。注意此模式由三个节点(解释不准确)组成,分别为:确认回调、返回回调、确认。确认回调表示生产者把消息发送到MQ服务器(B

2021-04-01 01:21:20 182

原创 Spring注入的正确使用

想必不在乎代码警告的人可能根本就没有察觉到下面的代码是有问题的:@Autowireprivate JdbcTemplate jdbcTemplate;鼠标移动上去观察提示:Field injection is not recommended Inspection info: Spring Team recommends: “Always use constructor based dependency injection in your beans. Always use assertions f

2021-03-31 10:32:30 245

原创 分布式锁之Redisson

1. 读写锁(ReadWriteLock)读写锁的特点是一定能保证读取到最新的数据,可以认为是强一致性。接下来看下几种模式情况下,其结果如何:读 + 读:是一个共享锁,并发可读,会一一记录所有的读操作。读 + 写:存在读锁,写操作必须等读操作完成后才能写。写 + 读:存在写锁,读操作必须等写操作完成后才能读,读到的是最新的数据。写 + 写:存在写锁,阻塞后面的写操作,必须等上一个写操作完成后才能写。总结:写锁是一个排它锁(互斥锁、独享锁),而读锁是共享锁所有的读操作都可以同时进行。...

2021-03-29 23:21:26 207

原创 Docker中使用Nginx

拉取镜像# 这里拉取的是最新版本docker pull nginx运行镜像docker run -d --name nginx --restart=always -p 80:80 -v $PWD/html:/usr/share/nginx/html nginx-v $PWD/html:usr/share/nginx/html表示容器的目录与宿主机的目录进行挂载,这样在容器中操作的也映射到宿主机上了。...

2021-03-17 15:02:17 95

原创 Docker中使用Redis

二、安装、运行、操作redis1. 拉取镜像(也可指定版本)docker pull redis:latest2. 运行镜像创建宿主机文件夹和文件mkdir -p /docker/redis/conf/touch /docker/redis/conf/redis.conf运行命令docker run --name redis -p 6380:6379 --restart=always -v /docker/redis/data:/data \-v /docker/redis/conf/r

2021-03-15 15:37:40 270

原创 Docker中使用MySQL

安装、运行、操作mysql拉取镜像```bashdocker pull mysql:latest```表示拉取mysql最新版本,可指定拉取的版本:```bashdocker pull mysql:5.7```运行镜像docker run --name mysql5.7 -p 3307:3306 --restart=always -v /docker/mysql/log:/var/log/mysql -v /docker/mysql/data:/var/lib/mysql -v /do

2021-03-15 15:35:23 327

原创 Docker中使用Jenkins,并部署Spring Boot项目(基于Java 11)

注意:本文基于Java 11环境下的配置。先看下运行命令:docker run --restart=always -v jenkins-home:/var/jenkins_home -v /opt/software/apache-maven-3.6.3:/usr/local/maven --name jenkins -d jenkins/jenkins:jdk11-v /opt/software/apache-maven-3.6.3:/usr/local/maven注意上述命令中的maven配置,表

2021-03-12 15:28:31 657

原创 升级java11后,maven命令打包报错

我相信有不少人打算用Java 11来构建项目,但是当你用maven命令的时候会出现无法识别Java 11版本。有的说什么修改为1.8版本,这不是有点那个什么吗?还有些改了pom.xml中的版本还是不行,但使用IDEA自带的maven鼠标点击执行却可以,自己在终端使用maven命令却始终不行。那么这个时候你就要看下你的系统环境变量是不是Java 11。贴一个补充的链接:https://www.cnblogs.com/janes/p/13926380.html...

2021-03-12 13:57:43 593

原创 主流数字证书都有哪些格式?

转自:https://help.aliyun.com/document_detail/42214.html?spm=5176.14113079.0.0.3b5e56a7iiWdjp#concept-a4g-mbv-ydb主流Web服务软件一般来说,主流的Web服务软件,通常都基于OpenSSL和Java两种基础密码库。Tomcat、Weblogic、JBoss等Web服务软件,一般使用Java提供的密码库。通过Java Development Kit (JDK)工具包中的Keytool工具,生成Ja

2021-03-04 13:05:37 603 1

原创 解决MyBatis-Plus不使用数据库默认值的问题

前言有时候我们在设计数据表时希望某些字段使用默认值,比如create_time、和update_time这样在数据库中设置:`create_time` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`update_time` datetime ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间'Navicat截图如下(网络图片):也就是说只要是插入操作create_time和update_time字段就使

2021-02-25 16:14:59 4299

原创 Swagger之@ApiImplicitParam的使用

@ApiImplicitParam该注解可替代另一个@ApiParam,用于统一对Spring MVC的参数进行定义。以下是该注解的参数:属性名称数据类型默认值说明nameString“”参数名称,参数名称将从 filed/method/parameter 名称中派生,但你可以覆盖它,路径参数必须始终命名为它们所代表的路径部分valueString“”参数简单描述defaultValueString“”描述参数默认值allowableValu

2021-02-18 13:00:28 3646

原创 Spring MVC接收数组或集合的写法

有时候为了方便一两个参数直接写在URL查询参数上,方便前端也方便后端。比如说我现在需要接收一组数据,如果写在URL上该如何写呢?前端this.$http({ url: this.$http.adornUrl(`/basic/fieldDictionary`), method: 'get', params: this.$http.adornParams({ 'strings': [6, 7].join()

2021-01-31 16:19:39 403

原创 键盘符号中英文对照表

转自:https://www.cnblogs.com/wkfvawl/p/9821411.html键英文中文~tilde波浪符`back quote反引号!exclamation mark or bang叹号@at艾特#hash or number or sharp井号$dollar美元符%percent百分号^caret脱字符、插入符、指数符号&and or ampersand与和符*

2021-01-28 16:49:59 4188

转载 MySQL中的几种日志

MySQL中有以下日志文件,分别是:  1. 重做日志(redo log)  2. 回滚日志(undo log)  3. 二进制日志(binlog)  4. 错误日志(errorlog)  5. 慢查询日志(slow query log)  6. 一般查询日志(general log)  7. 中继日志(relay log)。其中重做日志和回滚日志与事务操作息息相关,二进制日志也与事务操作有一定的关系,这三种日志,对理解MySQL中的事务操作有着重要的意义。一、重做日志(redo log)

2020-11-03 20:47:07 593 1

原创 分布式事务详解

所谓分布式事务,这个概念就不再多说了,下面就来总结下几种解决方案吧!一、基于本地消息表总的方案就是在生产者方增加一个生产日志表,并记录未完成状态,然后生产者方开启一个定时任务,并调用消费方提供的接口,等待消费方返回状态。如果成功,则更新日志表为成功,否则为失败。定时任务如此往复,直到日志表的状态为成功或者业务定义为失败时结束。但使用本方案有个最大的问题,就是数据库性能太差,不利于大数据量的存储。二、基于消息队列(MQ)MQ的处理量毋庸置疑,当然并非所有的MQ都支持,这里以阿里巴巴出品的Rocke

2020-10-29 16:21:31 175

原创 解决Maven报Cannot resolve org.springframework.boot:spring-boot-starter-test:2.3.4.RELEASE的问题

总之莫名其妙的在IDEA中报Maven无法解析某些依赖,但当你去本地的Maven仓库去看好像是正常的,或者是这样的:就是.jar后面有个.lastUpdated后缀,就是因为这个惹的祸导致Maven无法解析到。为了避免其它问题,可以把当前文件夹的内容全部删除,然后重新刷新一下,如果没有这个后缀说明正常了。...

2020-10-22 23:29:31 23131 1

原创 SQL面试题总结1

给定如下数据,输出结果。1. 建表语句部门表:CREATE TABLE `t_depart` ( `d_id` int(11) NOT NULL, `d_name` varchar(255) DEFAULT NULL, PRIMARY KEY (`d_id`)) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;INSERT INTO `t_depart` VALUES (1, 'A');INSERT INTO `t_depart` VALUES (2,

2020-10-16 20:12:11 109

转载 HashMap的底层原理分析

转自:https://zhuanlan.zhihu.com/p/79507868,稍作修改HashMap是一个集合,键值对的集合,源码中每个节点用Node<K,V>表示static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key; V value; Node<K,V> next; // ...Node是一个内部类,这里的key为

2020-10-16 10:32:58 231

原创 Nginx高可用之负载均衡LVS

上篇讲解了使用Keepalived来实现高可用,但就Nginx本身来说它处于网络模型中的第七层,处理效率上偏低、单台处理能力弱,因此作为网络模型第四层的LVS可以来协调此事。// todo

2020-10-16 10:07:06 98

原创 Nginx高可用之集群架构Keepalived

在前面章节中所说的Nginx架构都是单机状态下,对于小流量、负载不是很高的情况下没什么问题,但如果大流量、高负载的情形之下,就要考虑高可用、高并发了。那么对于Nginx来说,实现这方式就是利用Keepalived。// TODO...

2020-10-16 10:02:06 86

原创 MyBatis批量执行,以及解决通用Mapper的坑

说到MyBatis的批量插入、修改相信很多人会说使用foreach遍历集合,然后去执行SQL语句;或者在XML中去使用foreach标签拼接SQL语句然后执行。其实这不是批量执行,而只能称之为是遍历执行。那么怎么才是批量执行呢?答案就在MyBatis官方文档中写着呢!http://www.mybatis.org/mybatis-3/configuration.html#settings执行类型描述选项默认值defaultExecutorTypeConfigures the def

2020-09-22 17:45:35 1357

原创 Redis集群之多主多从

在上篇中——Redis集群之哨兵中我们使用了哨兵模式来解决主从模式下的弊端,但从架构上来看,哨兵模式其实也是主从模式,因此在业务量暴增的情形下,单一主节点处理能力也是有限的,无法支撑大数据量,这个时候我们可以采用水平扩容的方式来实现多主多从模式。构建Redis集群,需要至少3个节点作为master,以此组成一个高可用的集群,此外每个master都需要配备一个slave,所以整个集群需要6个节点,这也是最经典的Redis集群,也可以称之为三主三从,容错性更佳。所以在搭建的时候需要有6台服务器。一、配置集群

2020-08-31 16:26:46 6328 2

原创 Redis集群之哨兵

上一篇讲解了主从架构,同时也说到了该架构只适用于读多写少的情形,主要原因是因为从节点只允许读(当然也可以设置为写,但是这样又会出现其它问题),一旦主节点崩溃了或者网络故障,那么主节点就不能对外提供写的操作。因此Redis在主从架构下又提供了另外一种解决方案,即哨兵(Sentinel)。哨兵是用于监控Redis集群中master状态的工具,是 Redis 高可用解决方案,哨兵可以监视一个或者多个master服务,以及这些master服务的所有从服务;当某个master服务宕机后,会把这个master下的某个

2020-08-31 14:15:22 371

原创 Redis集群之主从架构

一般来说,在一个系统架构下Redis也有多种架构方式,比如主从(读写分离)、哨兵、集群等。一、主从架构使用命令可以查看redis当前的信息:127.0.0.1:6379> info replication# Replicationrole:masterconnected_slaves:0master_replid:033ce405050cc5cf839ff633056c47e6b2def39cmaster_replid2:00000000000000000000000000000000

2020-08-27 17:57:30 369

原创 Redis的持久化

在redis中持久化有两种,即RDB和AOF,这两种方式是可以结合使用的。RDB:每隔一段时间,把内存中的数据写入磁盘的临时文件,作为快照,恢复的时候把快照文件读进内存。如果宕机重启,那么内存里的数据肯定会没有的,那么再次启动redis后,则会恢复。AOF:把所有的对Redis的服务器进行修改的命令都存到一个文件里,命令的集合。一、RDB优势每隔一段时间备份,全量备份灾备简单,可以远程传输子进程备份的时候,主进程不会有任何io操作(不会有写入修改或删除),保证备份数据的的完整性相对A

2020-08-27 15:05:54 181

原创 Redis的安装(源码)

Redis发展至今已经迭代到6.0版本了,其重要性相信是每个后端开发者必备的技能,今天就来开始学习下Redis。1. 下载访问https://redis.io/,下载相应的版本即可,这里下载的是Redis 6.0.6版本。2. 安装把下载好的安装包上传到Linux服务器,解压到目录中。安装C++所需的库yum install gcc-c++需要注意的是,CentOS版本不一样安装的gcc版本也不一样,从而会造成不同Redis版本无法正常安装。执行编译、安装进入到解压目录,执行make命令

2020-08-27 11:40:40 166

原创 CentOS7开放端口

查看开放的端口:firewall-cmd --list-ports开启端口,其他端口类似firewall-cmd --zone=public --add-port=80/tcp --permanent重新加载防火墙firewall-cmd --reload如果开发了端口还是不能访问,说明还有相关规则没有放开。关闭防火墙开发、测试环境下可以systemctl stop firewalld.service禁用开机启动开发、测试环境下可以systemctl di.

2020-08-14 14:42:36 106

原创 基于XML和注解的事务(中篇)

都知道在事务的控制不是提交就是回滚,正常情况下正常执行就提交,异常就回滚。所以只要存在事务的情形下,这个范式代码是少不了的: public void transfer(String account1, String account2) { Connection conn = //初始化忽略 try { customerDao.save(customer); conn.commit(); } catch(SQLException e) { // 其它忽略 conn.rol

2020-08-13 18:18:33 116

原创 基于注解的AOP(下篇)

Spring发展到现在,基本上能用XML的配置,注解也是可以做到的。回顾下上篇的标签aop:aspect、aop:pointcut、aop:before、aop:after-returning、aop:after-throwing、aop:after、aop:around如果使用注解的该怎么写?前置、后置、异常、最终通知/** * @Aspect表示是切面,等同于XML中aop:aspect标签 */// @EnableAspectJAutoProxy@Aspect@Componentpub

2020-08-13 15:24:26 124

空空如也

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

TA关注的人

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