- 博客(36)
- 资源 (8)
- 收藏
- 关注

原创 消息中间件研究
文章目录一、为什么使用消息队列?**1.解耦**2.**异步****3.削峰**二、消息队列的缺点1.系统可用性降低2.系统复杂度提高3.一致性问题三、消息队列选型四、如何保证消息队列的高可用?1.RabbitMQ 的高可用性**单机模式****普通集群模式(无高可用性)****镜像集群模式(高可用性)**2.Kafka 的高可用性五、如何保证消息不被重复消费?六、如何保证消息的可靠性传输?1.生...
2020-05-04 16:45:54
1483
1

原创 生产环境-Mysql高可用配置(dble+mysql+keeplived)
一、架构分析1.体系dble+mysql+keeplived2.机器与软件描述mysql01(172.28.8.65)mysql02(172.28.8.61)dble01(172.28.8.62)dble02(172.28.8.63)keeplived01(172.28.8.62)keeplived02(172.28.8.63)3.架构图二、主主同步1.拉取镜像dock...
2020-04-29 23:46:51
1617

原创 HZERO-CAS单点登录
源码地址: https://gitee.com/DiDiaoXiaoMoLong/sso_server0.文档介绍文档以CAS作为单点登录服务器主要介绍了以下方面1.配置HTTPS搭建单点登录服务器2.使用数据库构建用户授权中心3.基于SpringBoot+SpringSecurity+CAS搭建客户端单点登录连接已配置的服务器4.如何支持HTTP客户端连接HTTPS单点服务器5.整...
2020-04-19 14:55:15
1716
2
原创 算法题:将生成1-5随机数函数转换为1-7随机数函数
题目将生成1-5随机数函数转换为1-7随机数函数。解法方法一简单的说, 把 1-5 的随机数发生器用两次, 拼成一个5进制的数, 就是1-25. 将这 1-25 平均分配的25种情况映射到7种情况上, 问题就解决了. 因为21是7的倍数, 我们可以每三个映射到一个, 即1-3 映射到1, …, 19-21 映射到7. 可见, 这些情况之间的概率是一样的. 那么, 要是拼成的数字正好是 22-25 这四个呢? 有两种方法, 第一种是丢弃这个数字, 从头再来, 直到拼成的数字在1-21之间.
2022-04-14 20:20:09
1883
原创 CPU、寄存器、内存、磁盘、网络性能分析
介绍寄存器最靠近 CPU 的控制单元和逻辑计算单元的存储器,就是寄存器了,它使用的材料速度也是最快的,因此价格也是最贵的,那么数量不能很多。存储器的数量通常在几十到几百之间,每个寄存器可以用来存储一定的字节(byte)的数据。比如:32 位 CPU 中大多数寄存器可以存储 4 个字节; 64 位 CPU 中大多数寄存器可以存储 8 个字节。寄存器的访问速度非常快,一般要求在半个 CPU 时钟周期内完成读写,CPU 时钟周期跟 CPU 主频息息相关,比如 2 GHz 主频的 CPU,那么它
2022-04-14 20:15:13
5465
1
原创 Spring Security深入剖析
关键源码io.undertow.servlet.core.ManagedFilter:42io.undertow.servlet.handlers.FilterHandler:58org.springframework.web.filter.OncePerRequestFilter:42org.apache.catalina.core.ApplicationFilterChainorg.springframework.security.web.savedrequest.HttpSessionReq
2021-05-26 21:51:52
945
4
原创 Activity专题(一)-Activity流程引擎配置
文章目录一、 使用Activity的API设置流程引擎1.读取默认的配置文件2.读取自定义的配置文件3.读取输入流配置二、数据源配置1.DBCP数据源配置2.C3P0数据源配置3.数据库策略配置4.databaseType配置三、其他属性配置1.history配置2.邮箱服务器配置四、ProcessEngineConfigration及其子类1.自定义ProcessEngineConfiguration五、Activity的命令拦截器1.自定义拦截器2.配置拦截器3.运行一、 使用Activity的API
2021-01-29 14:00:08
1740
原创 HZERO报表结合POI实现报表中的图片
1.引入依赖(非必选)<!--通用组件 pgc--><dependency> <groupId>com.github.mrpangu</groupId> <artifactId>hzero-plus</artifactId> <version>0.0.7.RELEASE</version></dependency>2.RTF基础模板不带图片变量使用BI Publ
2020-08-21 18:29:58
525
原创 Error creating bean with name ‘requestMappingHandlerMapping‘ defined in class path resource
报错Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name ‘requestMappingHandlerMapping’ defined in class path resource [org/springframework/boot/autoconfigure/web/servlet/WebMvcAutoConfiguration$EnableWebMvcConfi
2020-08-12 20:26:34
1483
原创 技术最佳实践-RabbitMQ深入研究
文章目录1.应用场景2.安装RabbitMq3.RabbitMq相关词汇介绍4.Springboot整合RabbitMQ4.1 引入依赖4.2 整合fastjson4.3 RabbitMq配置文件5.基于FanoutExchange的消息模型6.基于DirectExchange的消息模型实战6.1. 单个绑定6.2. 多个绑定7.基于Topic Exchange通配符交模型8.消息的确认消费8.1 生产者确认消费8.2 消费者确认消息9.RabbitMQ持久化9.1交换机持久化9.2 队列持久化9.3 消息
2020-08-11 09:43:38
713
原创 Netty-SocketIO实现实时聊天与实时通讯
注意:开发时关闭缓存不然没法看到实时页面1.引入依赖<!-- Netty-SocketIO --><dependency> <groupId>com.corundumstudio.socketio</groupId> <artifactId>netty-socketio</artifactId> <version>${netty-socketio.version}</version>
2020-07-09 23:55:34
1691
原创 技术最佳实践-javassist字节码编程
作者时间邮箱19778(潘顾昌)2020/05/30guchang.pan@hand-china.comjavassist编程概述什么是动态编程?动态编程解决什么问题?Java中如何使用?什么原理?如何改进?什么是动态编程动态编程是相对于静态编程而言的,平时我们讨论比较多的就是静态编程语言,例如Java,与动态编程语言,例如JavaScript。那二者有什么明显的区别呢?简单的说就是在静态编程中,类型检查是在编译时完成的,而动态编程中类型检查是在运行时完成的。所谓动态...
2020-07-09 23:51:40
1072
1
原创 Guava
作者日期邮箱潘顾昌2019/10/05guchang.pan@hand-china.comGuava1 基本工具一、Optional针对Java开发中null的问题,guava设计了Optional类。虽然util包下也有自带的Optional类,但是Guava对其做了更好的处理。Optional 用来表示可能为null的T类型的引用,两个实现类Present(存在)和Absent(不存在)。那么Optional究竟有什么用呢,我们来看一下主要的方法:Optiona...
2020-07-09 23:47:44
505
原创 HZERO-报表解决中文乱码及字符缺失问题
1.前言HZERO的报表服务使用可以参考官方文档: http://hzerodoc.saas.hand-china.com/zh/docs/service/report/这里仅介绍中文乱码及字符缺失问题解决方案。官网提供了相关中文乱码解决方案但是实践证明,这种方式有个缺陷:①只能解决中文乱码问题,不能解决字符缺失问题。②需要下载字体放置到服务器。如果使用K8S部署,还要将字体路径映射到容器内部,繁琐。2.解决方案1.思路通过HZERO报表生成word,不会发生中文乱码及字符缺失问题。这种
2020-07-08 23:26:39
670
原创 生产环境-数据库备份方案
一、引言在产品上线之后,我们的数据是相当重要的,容不得半点闪失,应该做好万全的准备,搞不好哪一天被黑客入侵或者恶意删除,那就崩溃了。所以要对我们的线上数据库定时做全量备份与增量备份。例如:每小时做一次增量备份,热点数据库每天做一次全量备份,冷数据库每周做一次备份。以下所涉及的操作系统为 centos7 。二、全量备份/usr/bin/mysqldump -uroot -proot --lock-all-tables --flush-logs hzero-customs > /home/back
2020-06-27 16:10:08
2626
原创 Mysql通过存储过程导入Excel数据
文章目录1.确认excel结构2.设计临时表,将excel数据导入临时表3.通过客户端工具将excel导入临时表4.创建存储过程,将临时表数据导入数据库中5.调用存储过程1.确认excel结构2.设计临时表,将excel数据导入临时表3.通过客户端工具将excel导入临时表我这里使用的Sqlyog4.创建存储过程,将临时表数据导入数据库中DELIMITER $$USE `hzero_platform`$$DROP PROCEDURE IF EXISTS `employee_
2020-06-22 20:11:31
1613
原创 ThreadLocalRandom原理剖析
文章目录1.介绍2.Random类及其局限性3.ThreadLocalRandom作者时间邮箱潘顾昌2020/06/20guchang.pan@hand-china.com1.介绍ThreadLocalRandom是JDK7在JUC包下新增的随机数生成器,它弥补了Random在多线程下的缺陷。2.Random类及其局限性public class Demo03 { public static void main(String[] args) {
2020-06-20 12:32:24
281
原创 ELK+Filebeat日志收集分析
文章目录1.什么是ELK2.ELK架构3.为什么采用ELK架构4.环境准备ES的配置方式ES的节点5.单实例方式部署ELK6. 集群部署ELK6.1 不区分集群中的节点角色6.2 区分集群中节点角色7.使用Filebeat监控收集容器日志8.统一部署1.安装elasticsearch2.安装elasticsearch-head3.logstash4.kibana5.filebeat作者邮箱时间潘顾昌guchang.pan@hand-china.com2020/01/291.
2020-06-04 19:21:32
2019
原创 HZERO-审计
文章目录1.hzero审计1.搭建审计功能服务端2.操作审计2.1页面配置操作审计2.2 注解方式操作审计3.数据审计4.操作审计源码解析5.数据审计源码解析作者邮箱时间潘顾昌guchang.pan@hand-china.com2020/03/201.hzero审计1.搭建审计功能服务端在hzero选配页面下载该服务:http://hzero.saas.hand-china.com/hzeroStart/注意修改启动类package com.pigic;im
2020-05-30 11:38:37
1355
1
原创 Docker技术研究
文章目录一、Docker入门1.Docker对比虚拟机1.镜像查看所有镜像docker打标签查看镜像的详细信息只搜索关注度1000以上的镜像删除镜像导出镜像导入镜像上传镜像2.容器新建容器新建并启动容器守护态运行仅仅简单启动容器查看日志查看实时日志查询所有容器查询容器不截取命令查询容器自定义表格样式导出容器导入容器如何指定容器的工作目录?3.仓库公有仓库(阿里云)1. 登录阿里云Docker Registry2. 从Registry中拉取镜像3. 将镜像推送到Registry4. 选择合适的镜像仓库地址5.
2020-05-30 10:52:21
3393
原创 HZERO多语言维护及源码解析
一、实现1.多语言的保存多语言Entity实体类实体类上添加@MultiLanguage注解,多语言字段添加@MultiLanguageField注解标记package org.wms.mdm.domain.entity;import com.fasterxml.jackson.annotation.JsonInclude;import io.choerodon.mybatis.annotation.ModifyAudit;import io.choerodon.mybatis.annot
2020-05-28 21:47:19
1610
原创 java代码最佳性能优化
文章目录一、类、方法、变量尽量指定final修饰二、字符串拼接优先StringBuilder、StringBuffer三、尽量重用对象、不要循环创建对象四、容器类初始化的时候指定长度五、使用Entry遍历Map六、ArrayList随机遍历快,linkedList添加删除快七、尽量使用基本类型而不是包装类型八、及时消除过期像的引用,防止内存泄漏九、ThreadLocal缓存线程不安全的对象,SimpleDateFormat十、尽量减少使用反射,如果使用反射,第一次用反射,然后加入缓存十一、尽量使用连接池、线
2020-05-17 22:19:46
929
原创 Mysql数据库最佳性能优化
文章目录一、数据库代码层次优化1、选取最适用的字段属性2.在只需要一条记录的情况下使用limit 13.使用连接(JOIN)来代替子查询(Sub-Queries)4.使用索引5.最好是在相同类型的字段间进行比较的操作。6.尽量避免使用LIKE关键字和通配符7.应尽量避免在 where 子句中使用!=或<>操作符,8.应尽量避免在 where 子句中使用 or 来连接条件9.in 和 not in 也要慎用10.应尽量避免在 where 子句中对字段进行表达式操作11.exists 代替 in12
2020-05-17 22:18:27
824
原创 生产环境-最佳Mysql中间件Atlas实践
一、对比其他中间件1.比较Sharding-JDBCSharding-JDBC只使用于JAVA程序,还需要配置代码。Atlas与代码解耦,使用于任何语言。2.比较Mycat与DBLEMycat与DBLE存在很多BUG,比如不支持子查询,不支持AND、OR括号混用等等。DBLE之前在生产环境部署了,后来由于各种BUG、各种语法不支持最终放弃改用Atalas。二、Atlas简介Atlas是奇虎360团队弄出来的一套基于MySQL-Proxy基础之上的代理,修改了MySQL-Proxy的一些B
2020-05-10 19:53:38
1061
2
原创 生产环境-SpringBoot-Redis集群方案
文章目录一、架构分析1.涉及技术2.机器资源描述3.架构图二、Redis安装1. 两台机器均下载redis2. 两台机器均安装redis3.配置每个节点4.启动每个节点三、配置集群1.准备ruby集群环境2.通过redis-cli实现集群3.验证集群作者邮箱时间潘顾昌guchang.pan@hand-china.com2020/05/03一、架构分析1.涉及技术Redis-5.0.3、Redis-Cli2.机器资源描述资源机器Redis-5.0.
2020-05-10 19:14:42
723
转载 生产环境-Minio集群方案
文章目录一、分布式Minio快速入门1、分布式Minio有什么好处?二、Minio分布式集群搭建1、获取Minio2、目录创建3、集群启动文件4、创建服务5、二进制文件6、权限修改7、启动集群三、通过nginx代理集群1.下载nginx2.配置负载均衡3.keepalived配置双主热备作者邮箱时间潘顾昌guchang.pan@hand-china.com2020/05/05一、分布式Minio快速入门分布式Minio可以让你将多块硬盘(甚至在不同的机器上)组成一个对象存
2020-05-10 19:12:30
3753
原创 Expression #3 of SELECT list is not in GROUP BY clause and contains nonaggregated column报错
1.场景2020-05-09 17:54:23.297 WARN 1 --- [ XNIO-3 task-10] .m.m.a.ExceptionHandlerExceptionResolver : Resolved [org.springframework.jdbc.BadSqlGrammarException: ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException
2020-05-10 18:53:52
2214
1
原创 猪齿鱼创建微服务共享目录
1.创建NFS动态存储卷创建 NFS 服务器NFS 允许系统将其目录和文件共享给网络上的其他系统。通过 NFS,用户和应用程序可以访问远程系统上的文件,就象它们是本地文件一样。安装nfs-utils在集群每一个节点安装nfs-utilssudo yum install -y nfs-utils配置nfs-server创建共享目录mkdir -p /u01/prod编辑/etc/exports文件添加需要共享目录,每个目录的设置独占一行,编写格式如下:NFS共享目录路径
2020-05-10 18:42:20
632
原创 Redis-cli创建集群,查看key报错(error) MOVED
1.现象[root@register ~]# redis-cli -h 172.28.8.65 -p 7001172.28.8.65:7001> get mm(error) MOVED 125 172.28.8.65:7000172.28.8.65:7001> get mm(error) MOVED 125 172.28.8.65:7000172.28.8.65:7001&...
2020-05-07 19:04:37
1054
原创 The dependencies of some of the beans in the application context form a cycle循环依赖解决方案
1.问题描述Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.2020-05-07 09:59:53.905 ERROR 18672 --- [ main] o.s.b.d.LoggingFailur...
2020-05-07 10:43:15
911
原创 java.lang.NoClassDefFoundError Could not initialize class org.apache.batik.bridge.CursorManager解决方案
一、场景1.系统Debian2.控制台报错--------------------------------------------------------2020-05-06 11:51:45.100 DEBUG 1 --- [ XNIO-3 task-64] o.a.e.impl.interceptor.LogInterceptor : 2020-05-06 11:51:45...
2020-05-06 21:57:50
2589
原创 Spring boot使用spring retry重试机制
文章目录注解方式使用Spring Retry(一)Maven依赖(二)配置类添加注解 @EnableRetry(三)Service方法编写(四)测试注意事项作者时间邮箱19778(潘顾昌)2019/09/07guchang.pan@hand-china.com当我们调用接口的时候由于网络原因可能失败,再尝试就成功了,这就是重试机制。非幂等的情况下要小心使用重试。...
2020-05-04 16:26:34
481
原创 使用nginx配置负载均衡
文章目录1.下载nginx2.配置负载均衡3.配置双主热备1.下载nginx准备环境yum install gcc-c++yum install -y pcre pcre-develyum install -y openssl openssl-devel准备nginx:下载:# wget http://nginx.org/download/nginx-1.8.1.tar.g...
2020-05-04 12:04:15
238
原创 创建systemd启动服务,并设置为开机自启动服务
1.创建启动脚本run.sh#!/bin/bashexport MINIO_ACCESS_KEY=rootexport MINIO_SECRET_KEY=12345678/data/minio/run/minio server --config-dir /etc/minio \http://172.28.8.65/data/minio/data \http://172.28.8.61...
2020-05-03 23:15:06
1278
原创 React百度地图开发
导入相关依赖“@uiw/react-baidu-map”: “^1.2.1”cnpm install @uiw/react-baidu-map --save// 或npm install @uiw/react-baidu-map --save0.申请私钥1.地图引入Map 的父组件必须具有宽度和高度; import { Map, APILoader } from '@uiw/...
2019-12-03 10:17:10
1080
Redis硬核性能优化
2022-04-14
数据结构与算法-校园导游.rar
2020-08-01
技术最佳实践-BI Publisher RTF报表使用.doc
2020-05-03
生产环境-Mysql高可用配置(dble+mysql+keeplived).pdf
2020-04-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人