自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小猿的博客

工作记录

  • 博客(42)
  • 资源 (1)
  • 收藏
  • 关注

原创 dubbo

● 接口设计时,应该避免循环调用进程,不允许一个功能 wms -> plm -> wms 这样进行调用。–data-raw $‘{“interfaceName”:“com.hete.supply.demo.test.api.TestFa”,“method”:“test”,“params”:[{“reqParam”:“测试”}]}’hete.dubbo.open-api 用于本地 http 调试 dubbo 接口,会将 http 协议转换为 dubbo 协议进行调用 ⚠️ 生产环境禁止开启。

2023-04-20 11:38:33 614 1

原创 一致性框架设计方案

datetime NOT NULL DEFAULT ‘1970-01-01 00:00:00’ COMMENT ‘最后一次执行时间’,datetime NOT NULL DEFAULT ‘1970-01-01 00:00:00’ COMMENT ‘预期执行时间’,datetime NOT NULL DEFAULT ‘1970-01-01 00:00:00’ COMMENT ‘执行成功时间’,int unsigned NOT NULL DEFAULT ‘1’ COMMENT ‘版本号’,

2023-04-20 11:37:20 757

原创 consistency-starter

db-clear-job-start-hour DB清理任务,开始时间(小时) UTC 时间 例如,北京时间凌晨2点 = UTC时间 18点, 这里就要输入18 0。retention-hour-for-fail-msg 失败的历史数据的保留时间(从创建开始计算的时间) 72。db-clear-job-start-hour 后台清楚过期任务时间 0。handler-pool-config 处理器的线程池配置。handler-pool-config 线程池配置。pool-config 线程池配置。

2023-04-20 11:34:09 915

原创 RocketMq

使用说明功能自动配置BaseMqListenerRocketMqSender如何引入如何配置无需特殊配置版本更新1.0.0。

2023-04-20 11:30:58 431

原创 id生成器

混淆算法:https://ht-it-2022.yuque.com/gkpo1f/hdkd6d/ggn1wh#vbBgu。// 返回自增序列号,返回格式为key+自增id,其中数字部分最少6位。● ⚠️ key 在不同的业务不应该重复使用,否则单号无法连续使用。⚠️ 所有使用id的业务场景,应该在数据库层设置合理的唯一索引。⚠️ key 在不同的业务不应该重复使用,否则单号无法连续使用。配置文件的配置遵循xx-redis-starter的规定。在生成自增id的基础上,将自增结果进行混淆得到最后结果。

2023-04-20 11:29:00 1409

原创 elasticsearch-starter

● 提供3种读数据的方法:https://docs.spring.io/spring-data/elasticsearch/docs/current/reference/html/#elasticsearch.operations.criteriaquery。// 如果查询出的数量不足,意味着查询可结束,手动清掉 scroll_id 的缓存,释放 es 空间。● es 的操作,封装在对应 es 的 dao 中。● es 的操作,封装在对应 es 的 dao 中。● 数据导出,通过接入 SFDS 实现。

2023-04-20 11:25:37 439

原创 feign-starter

使用说明功能自动装配如何引入如何配置超时时间⚠️ 默认值比较大,需要手动根据实际场景设置feign:client:config:# 默认配置,单位msdefault:# @FeignClient 的 name,对特定 FeignClient 的配置fedex-api:设置重试。

2023-04-20 11:23:58 619

原创 链路跟踪starter

链路跟踪

2023-04-20 11:22:03 78

原创 后端应用架构

所有用户访问流量(web、app、小程序等)均需要经过网关再进入微服务集群。网关可以聚合商品、仓储、履约、基础能力(或交易中台、支付中台等)的 http 接口统一对外提供接口访问。⚠️ 生产环境实际部署中,基础能力、公共基础能力将分别在国内、美国集群部署。阿里云 SLB 负载均衡 实现 https -> http 协议转换能力,管理带宽、SSL证书、域名路由策略。接入层主要完成协议转换、熔断限流、统一鉴权等能力,起到保护内部微服务、统一对外接口的作用。部署于国内,主要服务于国内的供应链相关业务。

2023-04-18 16:54:26 495

原创 2021-09-18

多数据源使用文档介绍部分项目中存在多数据源需求,现基于mybatisplus的dynamic-datasource做多数据源demo,需要进行多数据源引入的项目可参考以下步骤。使用方法Demo????dynamic-datasource-sample.zipgit@code.dayu.work:dynamic-datasource-demo/dynamic-datasource-demo.git引入依赖示例demo版本基于3.3.2,使用框架为springBoot+Druid+Mybatis

2023-03-23 17:50:31 240

原创 算法相关概念

1.时间复杂度时间复杂度被用于度量一个算法执行时间的长短。常见的算法时间复杂度有:常数阶O(1)、对数阶O(logn)、线性阶O(n)、线性对数阶O(n·logn)、平方阶O(n2)、立方阶O(n3)……k次方阶O(nk)和指数阶O(2n)等。随着问题规模n的不断增大,上述时间复杂度不断增大,算法的执行效率越来越低。也就是说时间复杂度从小到大依次为:O(1)<O(logn)<O(n)<O(n·logn)<O(n2)<O(n3)<…<O(2n)<O(n!)。通

2023-03-23 16:02:34 82

原创 springboot + mybatis+多数据源 + 分页插件 集成

多数据源分页

2022-02-26 15:36:58 652

原创 SQL慢查询与优化

1.慢查询MySQL的慢查询,全名慢查询日志,是MySQL提供的一种日志记录,用来记录在MySQL中应时间超过阈值的语句。默认情况下,MySQL数据库并不启动慢查询,需要手动来设置这个参数。如果不是调优需要的话,一般不建议启动该参数,开启慢查询日志会或多或少带来一定的性能影响。慢查询日志可用于查找需要很长时间才能执行的查询,因此是优化的候选者。查看“慢查询”的配置信息SHOW VARIABLES LIKE “%slow%”;查看“慢查询”的时间定义SHOW VARIABLES LIKE “

2021-12-18 01:15:42 1039

原创 Spring boot自定义starter

Spring boot自定义starter1、简介SpringBoot 最强大的功能就是把我们常用的场景抽取成了一个个starter(场景启动器),我们通过引入springboot 为我提供的这些场景启动器,再进行少量的配置就能使用相应的功能。即使是这样,springboot也不能囊括我们所有的使用场景,往往我们需要自定义starter,来简化我们对springboot的使用。2、如何自定义starter2.1、官方命名空间• 前缀:spring-boot-starter-• 模式:spring

2021-12-18 00:30:43 708

原创 DDD与微服务架构浅析

一、软件技术架构的演进我们都知道这些年随着设备以及技术的发展,软件架构发生了很多变化,从最初的单机(BS/CS)架构到后面的集中式架构,再到如今的微服务架构, 现在基本可以说是微服务架构盛行的时代, DDD早在2004年就由埃里克·埃文斯提出, 但一直处于一个不愠不火的状态,直到Martin Fowler的《Microservices》引起大家注意, 也就是微服务盛行之后, DDD再次回到人们视野中间,为什么呢 ?我们先看一下三种技术架构的演进以及主要区别:• 单机架构:面向过程的设计方法、包括客

2021-12-18 00:22:47 856

原创 索引问题小排查

简介: 数据库表已建立相关索引,查询SQL也遵循了相关规范,但是查询SQL依然不走索引。甚至同样的表,同样的索引,同样的查询SQL,在非生产环境走索引,但是生产环境却走了全表扫描。遇到此类问题该如何排查?又有那些注意事项呢?在日常研发和排查线上环境中,我们常常遇到数据库SQL查询的性能问题。通常而言,我们按照相关的规范要求,针对数据库表,建立合适的索引,在查询SQL中遵循相关的规范即可解决相关问题。但往往也会遇到一些特殊情况。如数据库表已建立相关索引,查询SQL也遵循了相关规范,但是查询SQL依然不走索引

2021-12-18 00:19:50 781

原创 XXL-JOB定时任务知识点和应用实例

一、XXL-JOB简介简介:XXL-JOB是一个分布式任务调度平台,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。现已开放源代码并接入多家公司线上产品线,开箱即用。该处只是介绍xxl_job的一下基础知识和使用的实例,具体的安装调试请参照对应的最新的官方文档,中文开源地址:https://www.xuxueli.com/xxl-job建议使用的环境:• Maven3+• Jdk1.8+• Mysql5.7+当前介绍的xxl_job版本如下:<!-- https://mvnre

2021-12-18 00:17:27 3263

原创 Dayu多语言支持组件

背景基于客户的诉求,部分国际交付项目需要实现前端页面、弹窗的多语言实现。随着交付项目的增多,有此需求的项目也在日益增长。针对Java语言,多语言的实现基本都一样,因此需要一套统一的实现。主要功能● "静态"内容的国际化,包括异常信息,提示信息,前端显示的内容,比如菜单配置,权限配置等。● "动态"内容的国际化,包括用户录入,可动态增加/修改的内容,比如政府部门的名称,街道地址等。● "nacos"内容的国际化,这类内容的国际化方案试用nacos的动态注册,通过修改nacos来做到实时生效。spr

2021-09-19 01:20:51 440

原创 文件批量下载

背景随着数字媒体的发展,每天产生的媒体文件越来越多。日常使用系统的过程中,涉及到文件下载的场景也得越来常见。这对文件下载,这个功能的体验提出了新的要求。 为了提升对文件下载功能的友好型,很有必要提供文件打包下载这个功能。主要功能● 对多个文件进行打包压缩:针对需要下载的多个文件,进行打包压缩(提供7z、tar、zip格式)。并且可以对压缩文件进行下载操作。代码地址git@code.dayu.work:gts-compress/compress-parent.gitexample示例代码???

2021-09-19 00:57:01 498

原创 Mybatis数据库字段加密组件

背景为了服务阿里云交付场景,沉淀重复组件;我们现在针对身份证、姓名、电话号码等敏感字段进行加密存放,读取的时候进行解密的需求做数据库加解密组件封装。主要功能● 数据库指定字段加解密:配置指定Mapper里的字段,对其进行加解密。1.examples代码获取1.1 示例程序????mybatis-security-starter-example.zip1.2 setting.xml????settings_public.xml使用如果需要使用已发布的版本,在dependencies 中添加

2021-09-19 00:00:23 484

原创 多数据源使用文档

多数据源使用文档介绍部分项目中存在多数据源需求,现基于mybatisplus的dynamic-datasource做多数据源demo,需要进行多数据源引入的项目可参考以下步骤。使用方法Demo????dynamic-datasource-sample.zipgit@code.dayu.work:dynamic-datasource-demo/dynamic-datasource-demo.git引入依赖示例demo版本基于3.3.2,使用框架为springBoot+Druid+Mybatis

2021-09-18 23:55:18 2802

原创 缓存的风险

缓存穿透缓存的目的是为了缓解 CPU 或者 I/O 的压力,譬如对数据库做缓存,大部分流量都从缓存中直接返回,只有缓存未能命中的数据请求才会流到数据库中,这样数据库压力自然就减小了。但是如果查询的数据在数据库中根本不存在的话,缓存里自然也不会有,这类请求的流量每次都不会命中,每次都会触及到末端的数据库,缓存就起不到缓解压力的作用了,这种查询不存在数据的现象被称为缓存穿透。缓存穿透有可能是业务逻辑本身就存在的固有问题,也有可能是被恶意攻击的所导致,为了解决缓存穿透,通常会采取下面两种办法:对于业务逻辑本

2021-09-16 16:54:38 165

翻译 Spring Boot整合Kafka

Kafka是一个分布式的、可分区的、可复制的消息系统,下面是Kafka的几个基本术语:Kafka将消息以topic为单位进行归纳;将向Kafka topic发布消息的程序成为producers;将预订topics并消费消息的程序成为consumer;Kafka以集群的方式运行,可以由一个或多个服务组成,每个服务叫做一个broker。producers通过网络将消息发送到Kafka集群,集群向消费者提供消息,如下图所示:创建一个topic时,可以指定partitions(分区)数目,partiti

2021-09-04 21:24:47 521

翻译 学习Dockerfile

在 Docker 镜像与容器 一节中我们通过Dockerfile构建了镜像,这节我们来了解下Dockerfile的语法。Dockerfile包含了诸多关键字,所以要学习Dockerfile的用法,得先从这些关键字入手。FROM位于Dockerfile开头,表示基于什么镜像构建:FROM scratch # 制作base imageFROM ubuntu:16.04 #使用ubuntu:16.04这个image出于安全考虑,最好使用官方的image作为base image。LABELDocker

2021-09-04 21:23:02 90

翻译 Docker 镜像与容器

开始之前,可以通过Vagrant构建一个CentOS环境,然后根据官方文档来安装Dokcer,下面的例子运行在CentOS7环境下。Docker Image俗称Docker镜像,它是由一系列图层(Layer)构成的,每个图层代表Dockerfile(通过Dockerfile我们可以创建镜像)中的一行指令,镜像是只读的。那什么是Dockerfile呢,举个简单的Dockerfile示例:FROM centosRUN yum install -y vim上面的Dockerfile包含两行命令(所以它对

2021-09-04 21:22:11 104

翻译 Nginx upstream

upstream指令用于配置Nginx后端服务器组。Nginx支持设置一组服务器作为后端服务器,由标准的HTTP模块ngx_http_upstream_module进行解析和处理。服务器组的设置涉及以下几个指令:upstream指令该指令为设置后端服务器组的主要指令,其他的指令都在该指令中进行配置,语法结构如下:upstream name { }其中name为后端服务器组的名称,{}中包含服务器。某个服务器组收到请求后,按照权重的大小依次选择组内的服务器处理请求。如果出现错误,则顺次交给组内的下一

2021-09-04 21:21:11 551

翻译 Nginx的基本配置

Nginx配置文件主要分成四部分:main(全局设置)、http(HTTP的通用设置)、server(虚拟主机设置)、location(匹配URL路径)。还有一些其他的配置段,如event,upstream等。一个完整的Nginx配置如下:user www www; ## Default: nobodyworker_processes 5; ## Default: 1error_log logs/error.log;pid logs/nginx.pid;work

2021-09-04 21:20:00 760

原创 docker-compose部署springboot项目

因为本人最近玩过用docker-compose部署项目的经历,所以就简单介绍下自己研究出来的经验。首先用docker-compose部署项目,要先拥有一个docker环境,一个springboot项目,本人用的的在window10下的子系统Ubuntu中安装的docker,装好docker后还要安装docker-compose,这里不介绍docker及docker-compose的安装,可自行百度,很简单的。springboot项目就不用说了,可用idea工具创建一个项目。 准备工作完了,说说doc

2021-09-02 01:02:01 1521

原创 并发基础

2016-03-14 | Visit count 1081Thread 类的每一个实例都表示一个线程, 进程是操作系统级别的多任务,JVM 就是运行在一个进程中的。所以在Java 中我我们只考虑线程。进程有独立的内存,一个进程间的多个线程共享进程的内存进程中至少要有一个线程。线程状态Concurrent-basis.pngNew:当我们创建一个线程时,该线程并没有纳入线程调度,其处于一个new状态。Runnable:当调用线程的start方法后,该线程纳入线程调度的控制,其处于一个可运行状态,

2021-09-01 14:08:14 73

转载 java8 stream操作

原文链接: https://www.jianshu.com/p/11c925cdba50相信Java8的Stream 大家都已听说过了,但是可能大家不会用或者用的不熟,笔者将在《玩转Java8Stream》系列文章中带大家从零开始使用,循序渐进,带你走向Stream的巅峰。操作符什么是操作符呢?操作符就是对数据进行的一种处理工作,一道加工程序;就好像工厂的工人对流水线上的产品进行一道加工程序一样。image-20190124191452884Stream的操作符大体上分为两种:中间操作符和终止操作

2021-08-29 22:22:05 126

转载 分布式事务了解吗?你们是如何解决分布式事务问题的?

面试题分布式事务了解吗?你们是如何解决分布式事务问题的?面试官心理分析只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。现在面试,分布式系统成了标配,而分布式系统带来的分布式事务也成了标配了。因为你做系统肯定要用事务吧,如果是分布式系统,肯定要用分布式事务吧。先不说你搞过没有,起码你得明白有哪几种方案,每种方案可能有啥坑?比如 TCC 方案的网络问题、XA 方案的一致性问题。面试题剖析分布式事务的实现主

2021-08-29 21:55:30 164

转载 分布式锁如何设计

面试题一般实现分布式锁都有哪些方式?使用 Redis 如何设计分布式锁?使用 zk 来设计分布式锁可以吗?这两种分布式锁的实现方式哪种效率比较高?面试官心理分析其实一般问问题,都是这么问的,先问问你 zk,然后其实是要过渡到 zk 相关的一些问题里去,比如分布式锁。因为在分布式系统开发中,分布式锁的使用场景还是很常见的。面试题剖析Redis 分布式锁官方叫做 RedLock 算法,是 Redis 官方支持的分布式锁算法。这个分布式锁有 3 个重要的考量点:互斥(只能有一个客户端获取锁)不能

2021-08-29 21:54:03 204

转载 如何设计一个高并发系统?

面试题如何设计一个高并发系统?面试官心理分析说实话,如果面试官问你这个题目,那么你必须要使出全身吃奶劲了。为啥?因为你没看到现在很多公司招聘的 JD 里都是说啥,有高并发就经验者优先。如果你确实有真才实学,在互联网公司里干过高并发系统,那你确实拿 offer 基本如探囊取物,没啥问题。面试官也绝对不会这样来问你,否则他就是蠢。假设你在某知名电商公司干过高并发系统,用户上亿,一天流量几十亿,高峰期并发量上万,甚至是十万。那么人家一定会仔细盘问你的系统架构,你们系统啥架构?怎么部署的?部署了多少台机器

2021-08-29 21:50:49 103

转载 如何保证缓存与数据库的双写一致性?

如何保证缓存与数据库的双写一致性?面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可以保证一定不会出现不一致的情况,但是它也会导致系统的吞吐量大幅度降低,用比正常情况下多几倍的机器去支撑线上的一个请求

2021-08-29 21:34:15 205

转载 springcloud 之最全篇

全文链接:https://view.inews.qq.com/a/20210827A0EJUA00首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟。图片什么是Spring cloud构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应用于生产中。

2021-08-29 21:13:07 115

原创 统一工具类试用文档

背景为了服务阿里云交付场景,沉淀重复组件,我们现在针对坐标转换与近邻搜索这一使用需求做统一工具类封装,近邻搜索封装使用spring boot starter的方式来暴露服务,使用mybatis interceptor 统一处理近邻搜索查询。主要功能坐标转换:支持百度坐标(BD09)、国测局坐标(火星坐标,GCJ02)、和WGS84坐标系之间的转换的工具。近邻搜索:支持搜索指定坐标与距离的范围的数量。HuTool: 支持HuTool(https://hutool.cn/docs/#/)Data-

2021-06-27 01:47:10 378

原创 统一异常、返回、接口文档试用文档

概述SpringBoot基于约定优于配置的思想,可以让开发人员不必在配置与逻辑业务之间进行思维的切换,全身心的投入到逻辑业务的代码编写中,从而大大提高了开发的效率,一定程度上缩短了项目周期。但是使用Springboot进行企业项目开发,我们依然需要进行最基础的重复开发。比如:对于统一结果的封装、统一异常的处理、API文档接口生成。aliyun-gts-base-starter在springboot的基础上,提供了项目开发中项目所需要的基础支撑功能。特性统一结果返回统一异常处理API接口文档生成

2021-06-27 01:33:33 580

原创 一些正则表达式校验Java

// 车牌号public static final Pattern p4 = Pattern.compile("^[京津沪渝冀豫云辽黑湘皖鲁新苏浙赣鄂桂甘晋蒙陕吉闽贵粤青藏川宁琼使领A-Z]{1}[A-Z]{1}(?:(?![A-Z]{4})[A-Z0-9]){4}[A-Z0-9挂学警港澳]{1}$");// 身份证public static final Pattern p6 = Pattern.compile("^[1-9]\\d{5}(18|19|([23]\\d))\\d{2}((0[1-9.

2020-07-16 09:48:48 169

原创 webservice客户代码生成

安装apache-cxf后执行以下任一命令wsimport -s C:\Users\chris.zeng\Desktop\webservice -encoding utf-8 -Xnocompile -p com.goldlion.oa.webservice.service http://10.2.0.25/sys/webservice/sysNotifyTodoWebService?wsdlwsdl2java -p com.goldlion.oa.webservice.service -d C:.

2020-05-27 15:31:44 189

原创 oracle查看历史快照

select * from table_name AS OF TIMESTAMP to_timestamp('20191226 10:00:00','yyyymmdd hh24:mi:ss') where name='xxxx';--根据时间查看某表的历史数据

2020-05-27 15:05:09 4152

空空如也

空空如也

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

TA关注的人

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