自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(139)
  • 资源 (3)
  • 收藏
  • 关注

原创 sharding-jdbc实现分库分表

项目初期版本使用当当sharding-jdbc进行数据库的分库分表操作,后续项目存储更换为自研弹性数据库。总结学习当当数据库中间件sharding-jdbc,并完成demo,可运行,下面列出demo代码说明: 建表sql/*Navicat MySQL Data Transfer 在Navicat中直接运行本sql文件创建表* 两个库:test_msg1 包含两个表: t_order_0 t_order_1* test_msg2 包含两个表...

2020-10-15 15:11:02 586

原创 在Java项目中使用traceId跟踪请求全流程日志

最近在项目开发中遇到了一些问题,项目为多机部署,使用kibana收集日志,但并发大时使用日志定位比较麻烦,大量日志输出导致很难筛出指定请求的全部相关日志,以及下游服务调用对应的日志。因此计划对项目日志打印进行一些小改造,使用一个traceId跟踪请求的全部路径,前提是不修改原有的打印方式。简单的解决思路想要跟踪请求,第一个想到的就是当请求来时生成一个traceId放在ThreadLocal里,然后打印时去取就行了。但在不改动原有输出语句的前提下自然需要日志框架的支持了,搜索的一番发现主流日志框架都提

2020-09-01 18:10:40 859

原创 SpringBoot中消息中间件Kafka实现Websocket的集群

1、在实际项目中,由于数据量的增大及并发数的增多,我们不可能只用一台Websocket服务,这个时候就需要用到Webscoket的集群。但是Websocket集群会遇到一些问题。首先我们肯定会想到直接将Websocket的Session放到Redis等缓存服务器中,然后用的时候直接在Redis中获取。但是Webscoket的Session比较特殊,它不能被序列化,因为WebSocket的session是有状态的,还有就是WebSocket的session是有时效性的,只要连接一断开,该Session就会..

2020-07-14 18:35:00 1287 1

原创 websocket集群的问题及解决方案

现在的互联网项目大多采用分布式+微服务+服务集群的方式,那么当项目中的websocket采用集群时就会遇到这么一个问题:给用户页面推送消息的websocket服务未必是与该用户建立websocket连接的服务。单节点是没问题,多节点就会出现问题...

2020-07-14 18:30:57 1294

转载 Mybatis批量更新出错问题

Mybatis批量更新出错问题我们经常会遇到这样的需求,那就是利用Mybatis批量更新或者批量插入,但是,实际上即使Mybatis完美支持你的sql,你也得看看你说操作的数据库是否支持,而阿三,最近就遇到这样的一个坑**一看没毛病呀,打印出来sql也是正确的。的确,这段代码 是没有错误的。可是,只要一执行就要报语法错误。后来发现,原来mysql的批量更新是要我们主动去设置的, 就是在数据库的连接url上设置一下,加上 &allowMultiQueries=true 即可**...

2020-06-30 18:07:22 464

原创 前端精度丢失-@JsonSerialize

在项目中 当字段实体类为Long类型时 如果Long值超过前端js显示的长度范围时会导致前端回显错误此时我们想到的解决方案是将Long值返回给前端时转为String,但是我们又不想变更字段的类型,当然我们也不想额外添加新的字段。这个时候我们可以用@JsonSerialize,在Json序列化的时候把Long自动转为String,但是这里有个小坑,被转换的字段必须是包装类类型,否则会转换失败。@JsonSerialize(using = ToStringSerializer.class)

2020-06-30 18:04:44 901

转载 查看终端是csh还是bash和更改shell设置

1.判断终端是csh还是bash:终端命令:env直接执行:echo $SHELL 可以直接看出当前使用的shell2.更改shell设置:终端命令:chsh -s /bin/bash执行完退出重新登录,更改生效

2020-06-16 14:53:09 2762

原创 SpringBoot利用Redis管理分布式Session

前言由于Http连接是无状态的,所以使用Tomcat做服务器的时候Tomcat内部会维护一个叫做Session的东东用来保存客户端的状态,一般情况下每个客户端都有一个cookie里面保存着叫jsessionid的cookie,每次访问tomcat的时候都会携带上,Tomcat可以根据这个jsessionid找到对应的session。就像你去超市买东西,门口的储物柜可以视作一个session容器,而打出的二维码条就是cookie。在分布式系统中,对于同一个客户端,访问哪个Tomcat服务器就会在哪个To

2020-05-26 10:02:37 211

转载 JWT+SpringSecurity实现基于Token的单点登录:认证和授权

https://www.pianshen.com/article/9287270944/

2020-05-14 11:14:56 880 1

原创 mysql binlog介绍以及通过binlog实现数据恢复

mysql的二进制日志binlog可以说是mysql最重要的日志,它记录了所有数据更新sql,以事件形式记录,还包含语句所执行的消耗的时间,mysql的二进制日志是事务安全型的。binlog日志主要用于mysql主从复制和数据恢复。原文地址:代码汇个人博客 http://www.codehui.net/info/66.html简单了解binlogbinlog是一个二进制格式的文件,用于记录用户对数据库更新的sql语句信息,但是不包括select和show这类操作,因为这类操作对数据本身并没有修.

2020-05-14 10:42:48 617

原创 Spring Security实现短信验证码登录

概述手机验证码登录是目前很常见的一种登录方式,本文阐述基于Spring Security快速实现手机验证码登录。本文建立在你对Spring Security基本原理有所了解的基础上,有兴趣的同学戳这里是关于Spring Security基本原理的文章:https://www.jianshu.com/p/e22fdeedc9a3本文实验环境:SpringBoot:2.2.0.RELEASE IDE:IntelliJ IDEA 2018.2.4思路创建手机验证码实体和相关工具(生成器,发送器)

2020-05-12 09:24:46 1602

原创 SpringSecurity做简单登陆

一、要解决的问题  本篇要解决的问题项目级别统一拦截请求 注册加密 登录校验 登录成功/失败返回自定义信息 自定义用户信息二、原理  Spring Boot项目中引入Spring Security,通过WebSecurityConfigurerAdapter来实现请求的统一拦截,拦截到请求后,通过UserDetailsService来查询数据库中存储的用户信息,比对登录请求传输的信息,来确定登录成功与否。三、实战1.引入Spring Security<depe.

2020-05-11 20:25:03 321

原创 MySQL Binlog 解析工具 Maxwell 详解

Maxwell是一个能实时读取MySQL二进制日志binlog,并生成 JSON 格式的消息,作为生产者发送给 Kafka,Kinesis、RabbitMQ、Redis、Google Cloud Pub/Sub、文件或其它平台的应用程序。它的常见应用场景有ETL、维护缓存、收集表级别的dml指标、增量到搜索引擎、数据分区迁移、切库binlog回滚方案等。官网(http://maxwells-daemon.io)、GitHub(https://github.com/zendesk/maxwell)Maxw

2020-05-11 14:24:38 561

原创 cas单点登录实现原理

Spring Security与CAS结合使用的意义web应用中一个登陆过程,其实就是完成认证与授权。所谓认证,就是当用户试图进入系统,而系统发现用户没有登陆,就调转到登陆页面。所谓授权,指用户认证通过之后对该用户赋权限,即该用户能够访问这个系统的哪些功能(即该用户能够访问这个系统的哪些url地址及按钮)Cas它的功能就是进行用户名密码认证。如果spring security与cas集成,就相当于spring security自身的登录认证功能转移到cas框架上,然后spring secur

2020-05-09 15:20:37 307

原创 CAS单点登陆服务端搭建

先放上官网文档地址:https://apereo.github.io/cas/5.1.x/index.html环境:jdk1.8、tomcat8.5、maven3.3、windows/mac操作系统1、下载Overlay通过阅读官网文档(https://apereo.github.io/cas/5.1.x/planning/Getting-Started.html)了解到官方建议我们:It is recommended to build and deploy CAS locally usi

2020-05-09 15:17:40 887

转载 SpringBoot中使用Spring Security实现权限控制

Spring Security 基本介绍这里就不对Spring Security进行过多的介绍了,具体的可以参考官方文档我就只说下SpringSecurity核心功能:认证(你是谁) 授权(你能干什么) 攻击防护(防止伪造身份)基本环境搭建这里我们以SpringBoot作为项目的基本框架,我这里使用的是maven的方式来进行的包管理,所以这里先给出集成Spring Securi...

2020-05-06 14:31:45 1178

原创 MAC上Git安装与GitHub基本使用

目录安装git 创建ssh key、配置git 提交本地项目到GitHub一、安装GitMAC 上安装Git主要有两种方式首先查看电脑是否安装Git,终端输入:git安装过则会输出:WMBdeMacBook-Pro:~ WENBO$ gitusage: git [--version] [--help] [-C <path>] [-c na...

2020-05-03 16:00:14 435

转载 dump获取与分析

https://blog.csdn.net/zhaohong_bo/article/details/90070575

2020-04-29 10:31:32 314

原创 在Linux上安装Python3

在Linux上安装Python3一、安装依赖环境输入命令:yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel二、下载Python31...

2020-04-11 14:03:18 550

原创 SpringBoot使用Nacos配置中心

1.Nacos简介Nacos是阿里巴巴集团开源的一个易于使用的平台,专为动态服务发现,配置和服务管理而设计。它可以帮助您轻松构建云本机应用程序和微服务平台。Nacos基本上支持现在所有类型的服务,例如,Dubbo / gRPC服务,Spring Cloud RESTFul服务或Kubernetes服务。尤其是使用Eureka注册中心的,并且担心Eureka闭源的开发者们,可以将注册中心...

2020-03-24 15:49:35 837

转载 springcloud+eureka+grpc

https://blog.csdn.net/weixin_39648546/article/details/90416742

2020-03-18 09:57:14 849

原创 SpringBoot利用redis分布式锁解决集群下定时任务重复执行

一个应用里有利用定时任务统计数据并插入数据库的需求,在单机情况下,不用考虑任何重复执行问题但在集群下部署多个应用,定时任务就会出现重复执行的问题,为了避免资源浪费和脏数据的问题出现,借助redis分布式锁解决redis分布式锁原理如下:基于Redis实现的分布式锁其实很简单,底层就是使用redis的setnx指令来实现的加锁,我们来看看官方对setnx的定义:SETNX key valu...

2020-03-17 14:31:33 1962 2

原创 spring boot整合reids实现缓存分页

业务需求 首页 实现缓存分页spring boot 整合redis (我的是2.0.3版本的)在pom 文件写上依赖包即可<dependency><!--依赖包--> <groupId>org.springframework.boot</groupId> <artifac...

2020-03-16 15:04:17 1460

原创 RedisTemplate 中 opsForHash()使用

缓存菜单public List<Menu> selectMenus() throws Exception { Collection<String> menujsons = redisTemplate.opsForHash().entries("menuList").values(); //查看缓存是否存在菜单 if (me...

2020-03-16 14:42:37 6098

转载 Sentinel介绍与使用

【Sentinel(一)】Sentinel介绍与使用 https://blog.csdn.net/noaman_wgs/article/details/103328793

2020-03-16 14:20:48 404 1

原创 Linux下压力测试命令ab

Linux下压力测试命令ab  ab命令被集成到了httpd服务器中,所以想要使用ab命令需要先安装httpd服务。yum -y install httpd(1).ab命令的使用方法和常用选项ab [选项] [http[s]://]hostname[:port]/path常用选项: 1 2 -n requests 在测试会话中所执行的...

2020-03-16 14:19:36 393

原创 GRPC-java实践

1. 快速创建一个springboot项目Maven环境。 官网链接 :https://start.spring.io/2. pom.xml中配置完整的pom.xml<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="h...

2020-02-22 11:41:39 409

转载 logback输出日志到elasticsearch方案

功能一: 微服务日志采集汇聚方案第一步:maven引入,放在dependencys的第一位,一定是第一位<dependency> <groupId>com.suncreate</groupId> <artifactId>log-lib</artifactId> <version>1.0.0...

2020-02-14 14:52:03 755

转载 mac 安装protobuf 2.5.0

mac 安装protobuf 2.5.01.下载安装包目前protobuf的最新版本是3.5.0,但是hadoop等好多框架依然依赖的是2.5.0,因此,最好不要安装最新的。现在官网已经没有下载链接,下面这个是我很久之前搭建环境时保存下来的。链接:https://pan.baidu.com/s/1pKTSwfp密码: j13q2.编译安装解压到安装目录,并进入安装目录...

2020-02-10 19:59:21 552

转载 Leetcode Top100题目和答案(Java完整版 面试必备)

https://blog.csdn.net/weixin_38896998/article/details/88810177

2020-02-04 17:11:50 1071

转载 接口安全--签名验证

接口安全--签名验证为防止第三方冒充客户端请求服务器,可以采用参数签名验证的方法: 将请求参数中的各个键值对按照key的字符串顺序升序排列(大小写敏感),把key和value拼成一串之后最后加上密钥,组成key1value1key2value2PRIVATEKEY的格式,转成utf-8编码的字节序列后计算md5,作为请求的签名。计算出来的签名串应当全为小写形式。如果某个参数的值为空,...

2020-02-04 16:59:03 352

转载 springboot+websocket+vue 服务端像前端推送消息

https://blog.csdn.net/qq_39477018/article/details/101543741

2020-02-04 11:34:01 809

原创 java.sql.SQLException: GC overhead limit exceeded处理百万数据出现的异常

下面是Windows下Tomcat服务器日志中出现的异常:这种问题的异常解释是什么,我就不再描述了,百度有各种解说,只说一下在我的运行环境下怎么解决这个问题,不让问题出现,功能正常运行起来的方法。项目是一个简单的springboot框架,在eclipse中开发调试,使用springboot内置Tomcat运行项目,页面测试功能OK,没有出现以上所述异常。将项目打为war包部署到Tomc...

2020-02-03 11:25:06 11697

原创 git删除master分支后重建

git删除master分支后重建操作步骤1. git上打dag,备份master分支2. git的setting页面,把默认分支暂时替换为其他分支,如dev.3. git的setting->Protected Branches 把master分支设置为“Unprotect“4. 删除本地及远程的master分支.git bra...

2020-01-19 11:21:02 1834

原创 LINUX安装nginx详细步骤

1.安装依赖包//一键安装上面四个依赖yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel2.下载并解压安装包//创建一个文件夹cd /usr/localmkdir nginxcd nginx//下载tar包wget http://nginx.org/download/nginx-1.13....

2020-01-15 16:08:23 124

原创 Nginx负载均衡

集群是为了解决单节点无法服务高并发的情况,在集群中nginx是如何分配将来自客户端的请求 转发给服务器的负载均衡可以提高网站的吞吐量(接受和响应),减轻单台服务器的压力负载均衡提供了三种策略:轮询,权重,ip绑定打开nginx的nginx.conf配置文件:在回顾一下执行流程:当一个浏览器的请求 例如:发送www.jiahou.com 请求 以后,会先在本地查找hosts文件...

2020-01-15 16:08:13 131

原创 Nginx的location限流

本文以示例的形式,由浅入深讲解Nginx限流相关配置,是对简略的官方文档的积极补充。Nginx限流使用的是leaky bucket算法,如对算法感兴趣,可移步维基百科先行阅读。不过不了解此算法,不影响阅读本文。空桶我们从最简单的限流配置开始:limit_req_zone $binary_remote_addr zone=ip_limit:10m rate=10r/s;ser...

2020-01-15 16:07:34 753

原创 Nginx配置黑名单和白名单

只允许192.168.1.0/24、10.1.1.0/16网段的主机访问,拒绝其他所有:白名单配置location /admin/ {allow 192.168.1.0/24;allow 10.1.1.0/16;deny all;}也可以写成黑名单的方式禁止192.168.1.0/24、10.1.1.0/16等某些地址访问,允许其他所有,例如location ...

2020-01-15 16:04:15 894

转载 序列化与反序列化

一、什么是序列化与反序列化?Java 序列化是指把 Java 对象转换为字节序列的过程;Java 反序列化是指把字节序列恢复为 Java 对象的过程;二、为什么要用序列化与反序列化?在为什么要用序列化与反序列化之前我们先了解一下对象序列化的两种用途:把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中; 在网络上传送对象的字节序列。我们可以想想如果没有序列化之前,...

2020-01-14 14:54:52 100

转载 【TestNG】TestNG使用教程详解

【TestNG】TestNG使用教程详解原创df0128 最后发布于2018-10-23 10:53:06 阅读数 23883 收藏展开一、TestNG介绍TestNG是Java中的一个测试框架, 类似于JUnit 和NUnit, 功能都差不多, 只是功能更加强大,使用也更方便。详细使用说明请参考官方链接:https://testng.org/doc/index.html二、Tes...

2020-01-14 10:12:42 397

zookeeper.zip

zookeeper-3.4.8

2017-08-23

dubbo-master

dubbo-master

2017-08-23

Dubbo与Zookeeper、spring框架的整合。

本文采用Dubbo与Zookeeper、spring框架的整合

2017-08-22

空空如也

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

TA关注的人

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