自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(95)
  • 收藏
  • 关注

原创 springboot+redis+lua实现限流

reids限流

2023-02-22 14:00:57 332

原创 oracle实现upsert逻辑功能

oracle upsert

2023-01-31 15:31:40 38

原创 集成第三方服务证书

linux服务器导入证书

2023-01-13 16:39:14 32

原创 和陶陶上山

亲子 爬山

2023-01-09 16:53:52 31

原创 dbz用connector入hana报错Invalid Java object for schema type INT64: class java.util.Long for field “null“

mysql-cdc hana flink-connector kafka

2022-12-29 10:41:56 207

原创 openresty调用redis模块使用订阅/发布模式

openresty redis 订阅和发布

2022-12-12 19:39:14 147

原创 openresty使用http模块调用http接口

openresty http

2022-12-08 13:07:19 336

转载 Spring @CrossOrigin 注解原理实现

现实开发中,我们难免遇到跨域问题,以前笔者只知道jsonp这种解决方式,后面听说spring只要加入@CrossOrigin即可解决跨域问题。本着好奇的心里,笔者看了下@CrossOrigin 作用原理,写下这篇博客。先说原理:其实很简单,就是利用spring的拦截器实现往response里添加 Access-Control-Allow-Origin等响应头信息,我们可以看下spring是怎么做的注:这里使用的spring版本为5.0.6我们可以先往RequestMappingHandlerMa

2022-12-08 11:42:54 192

原创 git跨仓库合并代码

git

2022-11-29 15:36:47 227

转载 java子线程抛出异常应该如何处理

java子线程抛出异常

2022-11-07 18:38:48 495

原创 500报错时chrome浏览器 reponse和review为空白问题解决

chrome

2022-11-07 15:07:55 435

原创 idea java项目打jar包包含依赖包

install 打jar包 包含依赖包

2022-11-02 13:49:22 333

转载 常用的性能数据

性能参数,常规操作

2022-09-08 12:48:46 174

原创 spring boot使用mysql-binlog-connector-java解析mysql binlog日志(实时+离线)

mysql binlog获取解析,在线和离线两种方式

2022-08-25 22:24:36 2603 5

转载 mysqlbinlog实时拉取mysql binlog日志

mysqlbinlog mysql日志备份 远程实时拉取

2022-08-22 12:33:44 378

转载 如何清除git仓库的所有提交记录,成为一个新的干净仓库

git 删除提交历史

2022-08-12 10:12:29 2485 2

原创 mysqlbinlog命令介绍(远程拉取binlog日志)

远程拉取binlog日志

2022-07-20 16:34:46 1032

原创 一次线上移动端报表网络连接失败问题定位与解决

线上网络异常问题排查解决

2022-06-15 12:48:54 124

原创 记一次线上偶现nginx 502问题排查与解决

负责的几台服务器上有7,8个服务,其中有一个是大屏项目,一周出现0-3次502 bad getway报错,因为是大屏,出现这个报错比较尴尬。其他的服务也有502 bad gateway出现,出现502时都是刷新一下就好了。服务网络架构为:F5->运维集中nginx->应用服务器nginx->应用服务应用服务器nginx里面一开始有报错信息:1.upstream timed out (110: Connection timed out) while reading respo

2022-05-30 12:50:17 600

原创 反编译jar包,修改后重新编译为jar包

使用开源jar包或者供应商jar包时,会发现一些bug或者已有功能无法满足我们要求,需要对jar中的.class文件进行修改。处理步骤如下所示:1.使用反编译工具将jar包反编译为源文件反编译工具请参考XJAD2.2版下载地址:http://www.blogjava.net/Files/96sd2/XJad2.2.rar如果只是少量的几个class需要修改,可以直接用IDEA或者jd-gui工具打开,将.class文件中的内容直接复制并创建同名的.java文件(需要根据jar包中建立所有的上层目

2022-05-23 15:00:34 3379

原创 本地前后端联调跳过cas sso单点登录

很多项目集成cas单点登录系统,在本地开发联调的时候,往往会遇到单点登录的拦截,这会影响到我们正常的联调。我们客户端和服务通信的身份信息存储在浏览器cookie里面,那么处理方式非常简单。我们只要想办法获取cookie并在浏览器application中手动增加cookieName=value即可。当前端下次再去请求后端接口,因为有cookie,服务器会查询到对应的session,就会认为客户端已经登录了。注意:1.不管session存在服务器或者redis中都要保证手动拿到的sessionId(

2022-04-25 13:10:22 2491

原创 浏览器导出ssl证书导入jdk

采购的BI软件需要集成公司cas 单点登录(java语言),单点集成时无法访问安全的单点地址:https://abc/xxx,只能访问http://abc/xxx。BI软件无法识别/信任公司的ssl证书,具体的原因还不清楚,查询资料可以手动导入信任的证书到jdk中。这里先抛个问题,BI服务没有识别公司ssl证书的原因?jdk里面可能没有根证书,但是操作系统目录/etc/ss/certs下面可以查询到公司的ssl证书。查询操作系统里面所有根证书命令如下所示。cd /etc/ss/certsawk -v

2022-04-24 20:10:12 1057

原创 google浏览器高版本 跨域第三方cookie(qlik)无法携带问题解决

报表门户网站多租户改造时,某个租户访问网站的域名属于外网(假设为:a.niu.com) 和集成的qlik报表服务域名不同(假设为:qlik.diao.com),这时候diao.com的cookie无法从当前站点a.niu.com携带到qlik.diao.com,这个问题目前常用的解决方案就是:第三方服务器设置cookie的属性:SameSite=None; Secure 即可。下面是samesite属性的简单介绍:SameSite 有3个值1. StrictStrict最为严格,完全禁止第三方 Co

2022-04-20 17:05:12 1165

转载 java打印日志规范建议

java打印日志规范建议

2022-04-18 14:40:56 2250

原创 oracle获取元数据变更语句

orace 获取元数据变更

2022-04-18 09:45:29 491

原创 SSL证书转换:cer转jks,pfx转jks

进入jdk相应的目录使用keytool工具:cd C:\Program Files\Java\jdk1.8.0_101\binpfx转换为jks命令:keytool -importkeystore -srckeystore "D:\aaa\test\client.pfx" -srcstoretype pkcs12 -destkeystore "D:\aaa\test\clientjks" -deststoretype JKScer转jks命令:keytool -import -alias m

2022-04-12 10:28:12 4968 1

原创 jvm堆外内存泄漏分析简介

先上一个代码demo,利用unsafe开辟1g内存空间,不释放。import java.lang.reflect.Field;import java.util.concurrent.CountDownLatch;import sun.misc.Unsafe;public class OutOfHeapOOM { public static final Unsafe UNSAFE; static { try { Field theUn.

2022-04-06 16:08:46 523

转载 nginx 多个 server_name 如何匹配

nginx 多个server_name

2022-04-02 11:16:38 4905

原创 移动端项目带版本路径实现的三种方式

q移动端发布时候如果不更新路径,那么一些静态资源缓存在本地,新发布的功能便加载不到。为了解决这个问题,下面介绍两种方式。1.修改项目入口地址每次发布项目时,打的包里面都需要有v1.0.1这种版本号的文件夹路径,比如正常的前端资源目录为:带版本号的前端资源路径为:项目入口地址加上或者修改版本路径/*/v1.0.1/*/即可。2.nginx重定向这种方式在修改不了项目入口地址时使用,nginx需要增加一个入口地址的location精确匹配,比如 location = /xxx/

2022-03-30 16:55:19 2970

原创 多租户多域名访问同一个服务实现

之前做的项目要迭代多租户功能,不同租户对应同一个数据库的多个schema,进行逻辑上的数据隔离。每个租户要求独立域名,但是前端服务和后端服务仍然只有一份(部署是集群部署)。本来只需要在dns服务器上配置一下域名解析就可以了,但是要集成单点登录cas和安全框架(security), cas 中原生的类是不支持多个serve-name(服务域名)的,需要修改一下cas中的一些组件,所以总结一下。看一下关键的配置文件:SecurityConfigurationpackage com.xxx.config

2022-03-23 19:53:30 2663

原创 当 @PathVariable 遇上.特殊字符,参数值获取不全问题解决

移动端项目一个获取用户信息的接口,如下所示:@RequestMapping(value = "/getUserStatus/{userAccount}", method = RequestMethod.GET)public Result getUserInfo(@PathVariable String userAccount) {线上发现一个问题:查询参数为老外账号时,查不到数据,数据库明明是有的,于是分析老外账号有啥特点:laowai.wailao,中间有个小数点,而一般的账号比如zhangs

2022-03-09 18:30:51 508

原创 spring boot 动态切换数据源实现多租户开发

之前的文章有介绍过spring boot 动态切换数据源spring boot 动态切换数据源(数据源信息从数据库中读取)_lgq2016的博客-CSDN博客,今天简单介绍一下动态数据源切换实战,主要是实现多租户功能,数据隔离采用的方式是:同一个库,多个schema(数据库使用oracle)实现。多租户实现的核心逻辑是:通过访问域名区分不同的租户,进而切换到不同的数据源,即不同的schema.AbstractRoutingDataSourcespring中对切换数据源...

2022-03-09 09:56:50 2023

原创 项目灰度发布功能设计

平台项目迭代发布过程中,有一些功能发布时会产生较大的影响,一旦出现问题,会影响用户使用体验,降低产品信誉。为了解决这一问题,在重要功能发布时需要引入灰度发布功能,借助一小部分用户在生产环境进行功能的验证,平稳运行一段时间,一般是一周后再大规范应用到生产环境的所有用户。基于nginx+lua(openresty)可以在nginx网关上进行灵活的业务逻辑处理,本文也使用openresty实现。常见的灰度发布是对指定ip网段进行特定的路由处理,但是公司内网的某个网段范围仍然较大,涉及人员较多,本文使用平台管理

2022-03-07 11:19:49 2438

转载 OpenResty 实现项目的灰度发布

1、安装 openresty 依赖模块:[root@Centos opt]# yum -y install pcre-devel openssl openssl-devel postgresql-devel2、编译安装 openresty:[root@Centos opt]# tar -zxvf openresty-1.15.8.2.tar.gz...(略去内容)...[root@Centos opt]# cd openresty-1.15.8.2/[root@Centos openr

2022-03-01 18:48:09 302

原创 移动端项目发布时路径中增加版本号

目前应用发布终端常用的两种方式,pc和移动端,一些前端功能迭代发布时会因为缓存问题导致功能发布后,用户并没有获取到新发布的功能,pc可以通过清除缓存来解决,但是移动端,比如手机用户并不知道怎么清除缓存,导致一些前端新功能发布到手机后,用户没办法获取到新发布的功能。我通过在路径中增加版本号来解决这个问题。比如:https://www.cnblogs.com/v1.0.0/taven/archive, 其中v1.0.0为增加的发布版本号项目使用docker部署,下面展示一下具体的实现细节。1.doc

2022-02-28 11:25:07 2110

原创 spring security+sso 认证通过后跳转原始路径

我们访问一个域名+路径(需要授权访问)时,如果没有登录会返回一个登录页面,登录完成后我们希望继续访问之前输入的域名+路径,我的实现方案如下:前端:1.没有授权时访问(这里页面肯定会报错),2.弹出登录界面,这两个动作过程中必须确定前端一定会调用某个接口,然后和后端协商,通过这个接口将浏览器地址栏内容(即原始路径)放到http header中传递到后端。前端代码不再展示,主要逻辑就是,获取地址栏地址然后放到header里面通过接口发送到后端。后端:使用过滤器,优先级设置为-101,因为securi

2022-02-28 10:43:05 4155

原创 openresty引入nginx_upstream_check_module模块

openresty使用nginx的健康检查,但是原生nginx并没有该功能,需要引入nginx_upstream_check_module 打补丁并重新完成编译。现在简单介绍一下如何引入健康检查模块。下面代码就引入了健康检查,具体含义不再介绍。upstream mr_api { server 10.1.1.1:8080; server 10.1.1.2:8080; check interval=3000 rise=2 fall=5 timeout=2000 type=http;...

2022-02-24 19:40:54 1864

转载 nginx小技巧之批量关闭进程

ps -ef | grep nginx | grep -v grep | awk '{print $2}' | xargs kill -9pgrep nginx | xargs kill -9转载:nginx小技巧之批量关闭进程 - SummerKing? - 博客园

2022-02-24 08:59:57 526

原创 MyBatis中使用collection一对多分页查询时记录数量不准确的问题

假设有如下实体表USER和USER_GROUP,及其映射表USER_MAPPING_USER_GROUPUSER ID USER_ACCOUNT USER_NAME 1 zhangsan 张三 USER_GROUP ID USER_GROUP_NAME 1 管理员组 USER_MAPPING_USER_GROUP USER_ID USER_GROUP_ID 1 1 现在要根据传入的查询参数:USER_ACCONT和USER..

2022-02-21 19:52:04 1354 1

转载 openresty的安装和使用

1.简介  OpenResty(又称:ngx_openresty) 是一个基于 NGINX 的可伸缩的 Web 平台,是一个强大的 Web 应用服务器,在性能方面,OpenResty可以 快速构造出足以胜任 10K 以上并发连接响应的超高性能 Web 应用系统。目标是让你的 Web 服务直接跑在 Nginx 服务内部,充分利用 Nginx 的非阻塞 I/O 模型,不仅仅对 HTTP 客户端请求,甚至于对远程后端诸如 MySQL,PostgreSQL,~Memcaches 以及 ~Redis 等都进行..

2022-02-16 18:17:24 170

空空如也

空空如也

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

TA关注的人

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