自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(118)
  • 资源 (3)
  • 问答 (1)
  • 收藏
  • 关注

原创 事件风暴-协作探索复杂业务领域

事件风暴可以用在业务分析和技术分析,如果你做的业务已经有人做过了,那肯定会有这方面的专家,请来或者模仿去做一个公司特色的产品,事件风暴最合适不过,如果是从0到1的创新,不好意思打扰了请绕行(这种创新型业务一般不会有公司去搞,但是要是搞成了像微信那样,就会是垄断般的存在)如果是新业务,如果有业务领域专家当然是最好的,先给大家普及业务,然后再讨论,各个参与者在自己擅长的领域查漏补缺,要是没有熟悉的就去模仿,如果是无先例那就是从0创新,难度太大了,但如果成功了将是垄断性的(类似于头脑风暴)

2024-01-10 16:52:18 904

原创 到了一个公司怎么发挥自己的价值呢?

硬刚,妥协,还是不予理会,我的原则是:不惹事,不怕事,讲事实,说道理,实在讲不通就不接触,因公接触就按规章办事,实在不行就反馈,如果boss看你不爽了,干好本职,积极向上,实在不行就谈话,如果他一心要逼走你,只能说一句“你我无缘啊”多数人初入公司肯定是想好好干,争取能有一番作为的,奈何总会有各种原因在促使你走向另一条路,比如:公司给我的定位不是我想要的,没有岗位让我发挥,工资不涨,后来的人工资都比我高,得不到重用无法施展我的才华,没有话语权不想再任人摆布等等。这样坚持下来,工作应该能干好吧、、、、、、

2024-01-09 14:51:36 348

原创 DDD到底该怎么落地,代码到底该不该从MVC转到DDD

即便这么设计了分层,也不能保证百分百代码不烂,写代码的时候只顾一贯的堆,不理解设计模式,设计原则,很难写出优秀的代码经过这么多年的经验,只要能熟练使用模板、策略、工厂、单一原则就能解决80%的代码问题最后该不该从mvc到DDD呢?我觉得还是应该做我们宁可不要大牛的自由发挥,也要限制小白的自由发挥后期再进行间断性的代码review,不断改进,养成习惯,就成功了一大半。

2023-12-28 10:47:27 830

原创 多租户设计

多租户是SaaS(软件即服务)下的一个概念,那什么是SaaS呢?简单来说就是有一个公司它有一套服务,已对外暴漏,但不是什么人都能使用,如果需要使用必须先购买。也就是小企业可能没有自己的开发团队,为了节省成本直接买现成的服务使用,按照购买的服务和使用期限来付费;多租户:对于服务拥有者(供应商)来说就是提供服务部署,一套软件;对于使用者(微小企业)来说就是购买服务,也就是成为其中的一个租户。

2023-12-27 16:52:35 421

原创 DDD概念理解

领域驱动设计(DDD)

2023-09-12 10:01:32 118

原创 Redission实现分布式锁

1、代码中常见的redis分布式锁2、redission lock实现,有什么问题,注意事项3、红锁(redLock),联锁(multiLock)用来解决什么问题,比较4、看门狗是什么

2023-06-29 20:12:46 1261

原创 springboot自动装配原理

从主配置类开始着重看三个注解@SpringBootConfiguration@EnableAutoConfiguration@ComponentScan

2023-06-28 17:56:40 278

原创 MYSQL各种log

本章纲要1、mysql主从复制是怎么实现的(binlog,relaylog)2、事物执行原理是怎么保证ACID的(redolog,undolog)

2023-06-27 17:42:33 613

原创 分布式事务解决方案Seata谁建议你用的?

TC (Transaction Coordinator) - 事务协调者维护全局/分支事务的状态,驱动全局事务的提交与回滚TM (Transaction Manager) - 事务管理器定义全局事务的范围:开启、提交、回滚全局事务RM (Resource Manager) - 资源管理器管理分支事务(本地事务)与TC交互,注册、报告分支事务状态,管理分支事务的提交、回滚1、AT如上图如果使用的是AT模式,需要在每个DB创建一个UNDO_LOG 表,把业务Sql和前后镜像SQL租出一条回滚记录插入该表整体机制

2023-06-19 16:35:48 227

原创 Kubernetes集群本地连接调试工具KtConnect

KtConnect(Kt为Kubernetes Toolkit集群工具包的简写)是一款基于Kubernetes环境用于提高本地测试联调效率的小工具Connect:建立数据代理通道,实现本地服务直接访问Kubernetes集群内网(包括Pod IP和Service域名)Exchange:让集群服务流量重定向到本地,实现快速验证本地版本和调试排查问题(所有流量都可重定向到本地)Mesh:创建路由规则重定向特定流量,实现多人协作场景下互不影响的本地调试(指定版本的流量)

2023-06-17 11:29:53 2081

原创 额度系统设计

额度系统,管理额度用户额度,对额度进行预扣、释放、占用等一系列操作

2023-02-17 15:08:03 705

原创 营销-活动-优惠券这么做后续会省不少事

活动优惠券,主流程模板化,动态部分单独实现

2022-09-30 11:41:16 192

原创 进件(贷前)项目的从0到1

进件(贷前)从0到1整体设计

2022-08-01 19:12:53 871

原创 Spring-cloud-gateway加密验签可以这么玩

图片解释:图中api可以作为公司内部的集中入口统一做验签加解密,当然也可以公司的统一出口(假设api后面对接的是各家银行)针对对接不同的公司进行单独集中处理加解密这也就是网关要干的事,统一对外暴露出入口,对无关业务(验签,加解密,容错,限流)的操作进行集中开发处理(不建议在网关搞业务,不建议操作数据库)本节要实现的目标: 用最少的代码、配置来对接一个新的外部系统(需要验签,加解密)现状: 为保证数据通信安全,我们...

2021-11-10 11:49:40 4246 2

原创 生产环境发生OOM,还可以这么玩

背景:产品带着问题又来了,线上用户激活都半个小时了还没成功拿到单号,打开kibana像往常一样想着估计又哪个地方报错了,搜了半天发现上游系统已经将消息发到MQ,但我们系统迟迟未消费消息算了,本着用户优先的态度,先修数据吧,自己悄悄的从控制台手动重发了一个消息,成功了,,,怎么会没收到消息呢???第一反应是MQ丢消息了,正翻看着MQ控制台,他来了,带着问题又来了,又有用户卡单了,怎么回事发现问题:1、单条搜日志:又是没消费消息,有点小紧张了,看了一下数据库,新单子还..

2021-07-22 14:30:19 349 1

原创 Mysql索引设计与优化

本文目的:认识索引,创建最合适的索引,优化sql,本文基于Mysql5.7 innoDB1、认识索引创建索引的目的:为了帮助Mysql高效的查询数据,其本身也是一种数据结构(B+Tree)索引的分类:普通单一字段索引:索引只包含一个字段,一个表可以存着多个 唯一索引:可以包含1-16个字段,一般控制在3-5个,组合字段值必须全表唯一,可以为空值,但不建议为空值 组合索引:可以包含1-16个字段,一般控制在3-5个,使用时注意最左原则(1,12,123) 主键索引:特殊的唯一索引(单个或

2021-03-26 18:08:27 150

原创 JVM问题排查常用小工具

本文涉及:jps,jstat,jmap,jstack1、jps可以输出虚拟机正在运行的进程的端口和执行的主类端口:603,启动主类Bootstrapjps -l输出端口和全路径jps -v输出虚拟机启动时的JVM参数2、jstat用于监视虚拟机运行时数据的命令工具,具体支持操作:jstat -optionsjstat -gc 603 250 20603进程号,250每250毫秒打印一次,20打印20次 S0C:第一个幸存区的大小 S

2021-03-25 18:24:42 212 1

原创 一次突然的技术分享--危机感是怎么产生的

技术、、、即便当时搞通了,过上个一年半载不用也就忘了我们普通工作岗位基本都是快速迭代业务,由于历史业务太多也不会轻易去改变之前的技术时间+不轻易改变=荒废,为了改变这种趋势,训练就成了和平时期的必须课有此种感慨也是因为近期安排了组内技术分享,时间紧的情况下找题材,肯定是要把之前学过的知识点拿出来,但翻看之前的博客,发现一年前写的那些貌似有点陌生了(可能是当时理解的不到位,写作能力欠佳),我感觉到了一丝丝危急,我正走在荒废的道路上我供git上找出之前写的代码,对比当时写的博客开始试运行,,,总

2021-01-27 10:38:37 196

原创 二分查找-变种

最简单的二分查找图片分析解释:假设要查找的数字是6(value) 定义要查找数组的边界值,首先找到数组的中间值下标 如果小于value,说明要找的值在右边将数组最小值设为:中间值+1 依次类推直至找到value相等的下标,或者最大最小指针指向一个下标停止代码实现public static int search(int [] items,int value){ int low = 0; int high = items.length-1; while (low &lt

2020-09-23 16:14:03 124

原创 复杂度分析/快速排序

一、大O复杂度分析首先我们来看一段代码public void sort(int [] items){ //外层循环从1开始,0无需往前对比 for (int i = 1 ;i < items.length ; i++){ //将要对比的基准值放入临时字段 int temp = items[i]; //内层循环从外层循环开始值往前循环和基准值对比 int j = i-1; for (;j>=0;j--){ //往前循环对比,如果比基准值大,则

2020-09-21 17:26:05 128

原创 冒泡排序/插入排序

学习思路:思路讲解 代码实现一、冒泡排序1、通过双重循环,相邻两个数据做对比,通过位置交换使其变得有序2、时间复杂度:O(n*n);空间复杂度:O(1)图片分析解释:外部循环从0开始i 内部循环从0开始j,完整循环后会将本次最大值放入数组最后,下次循环可忽略相应的尾部数据(length-i-1) 重复1、2步即可完成排序代码实现public class BubbleSort { public void sort(int [] items){ //外部循环

2020-09-17 18:05:42 172 1

原创 大数据量定时超时-精确到秒

一、背景开发过程中或多或少会遇到某些场景,要求数据在规定的时间内如果没处理就要失效掉;如:用户下单,订单在30分钟内没支付就要自动取消,防止长时间占用库存等;面对这种情况我们来扒拉一下:系统启一个定时任务,定时扫库,取出超过30分钟的数据,取消释放库存 用户下单后将订单放入MQ的延迟队列(比如RocketMQ的延迟消息),依赖于MQ的通知实时触发取消 将数据放入Redis,定时扫描Redis 将数据放入收尾相连的环形链路中,依次触发超时二、实现思路1、定时任务扫库在分布式定时

2020-07-30 14:13:02 1463

原创 gitllab+jenkins+docker--idea push后自动部署

原创 gitlab集成jira-相关配置 原创 jenkins集成gitlab-push后自动build 已前两节为基础,没看的可以返回查看本文基于spring boot项目一、安装docker插件1、首先在操作系统内安装docker,可参考第一篇文章2、在jenkins安装docker-build-step插件3、Jenkins配置Docker:Manager Jenkins-->Global Tool Configuration-->Docker二、Jen

2020-06-03 15:46:46 362

原创 jenkins集成gitlab-push后自动build

原创 gitlab集成jira-相关配置 一、jenkins安装不建议用docker安装(jenkins依赖外部太多),建议使用最简单的方法,下载war包放入tomcat,启动1、jdk安装2、maven安装3、git客户端安装安装完毕后二、jenkins配置前提:1、有一个gitlab项目、访问用户2、jenkins插件(包含默认插件):Git、GitLab、Gitlab Hook、Generic Webhook Trigger3、配置jenkins:Manag

2020-06-02 16:53:06 626

原创 持续交付流水线

本文是对本人对devops持续交付流水线的一些个人理解(只针对现所在公司的情况),不一定准确,仅供参考,后期会不定期修改一、任何公司项目都存在流水线一些初创公司有可能就寥寥数人,老板可能就兼任产品经理,开发可能兼任开发、测试、运维、、即便这样的情况,我也说项目从提出到面向用户也是存在流水线的都会经历:需求提出-->开发-->测试-->上线这可以说是最简单的一个流水线了,每个节点都是人工手动完成,还可能是同一个人完成,可能没有人给出什么时间点干什么事,但具体的流程架子是抹

2020-05-29 17:32:15 852

原创 gitlab集成jira-相关配置

学习思路:gitlab基于docker安装 jira基于docker安装 gitlab配置jira-代码push后jira自动显示注释,Merged Master后自动修改jira状态一、基于docker安装gitlab1、镜像拉取#拉取最新的gitlab镜像docker pull gitlab/gitlab-ce当然还可以指定版本拉取docker pull gitlab/gitlab-ce:xxx2、运行容器docker run -d -p 8443:443 -

2020-05-29 15:39:57 2311

原创 历史好文

一、多线程多线程-线程间通讯 多线程-线程安全-volatile 线程加锁过程-锁升级二、JVMjvm内存模型-GC算法-垃圾回收器三、日常汇总https加密原理-为什么说https能保证数据安全 分片字段userId-用手机号查询 分库分表-首次上线-老数据-数据迁移 从ACID到CAP到BASE 专治各种数据脱敏-Jackson-fastjson-logback...

2020-04-27 10:54:14 276

原创 多线程-线程间通讯

学习思路:线程同步-锁 wait、notify join ThreadLocal 通过管道输入/输出流(字符流、字节流)服务如果一直处于单线程访问,那将毫无意义,多用户访问必然产生多线程,而多线程访问必然离不开线程间通讯一、线程同步-锁多线程操作共享资源时势必会产生线程安全的问题(也就是我们说的线程相互影响),而遇到线程安全问题我们最先想到的基本都是锁,比如:syncrhoi...

2020-04-14 17:41:52 120

原创 多线程-线程安全-volatile

学习思路:线程安全的三大特性 普通成员变量内存读取流程 被volatile修饰后的成员变量一、线程安全的三大特性原子性:指定代码块是原子操作(要么全成功要么全失败,不可拆分) 可见性:修改共享变量时立即同步到主内存,保证对其它线程可见,读取共享变量时直接从主内存读取 有序性:代码的执行循序和语句的顺序保持一致,在JVM中为了提高运行效率,允许处理器和编译器对指令进行重排序二、普...

2020-04-08 16:29:29 259

原创 线程加锁过程-锁升级

都说synchronized锁jdk1.6之前很慢,1.6以后优化的已经很快了,今天看一下到底怎么个快法了,优化了哪些呢?大概意思就是jdk1.6以前加锁就是重量级锁之后又引入了偏向锁、轻量级锁,从而总共有了四种锁状态,由低到高为:无锁状态-》偏向锁状态-》轻量级锁状态-》重量级锁状态1、无锁状态没有对资源进行锁定,所有线程都能访问公共资源2、偏向锁一段同步代码块,不存在多线程...

2020-04-01 17:58:20 442

原创 jvm内存模型-GC算法-垃圾回收器

本文知识点全是对那本书的回顾-记录:众所周知深入理解JVM的各种博客已烂大街,但其主要来源还是来自那本书,本文不准备另辟蹊径,只是将脑子里的知识点做一汇总,立贴准备后面打脸本文学习思路:各个模块简介,触发异常 各个模块对应的GC算法、垃圾收集触发场景 各种垃圾回收器的简介 Metaspace一、运行时数据区5大模块简介1、方法区属于线程共享的数据区 主要存放:运行...

2020-03-30 18:53:44 318

原创 计算机网络原理-网络七层-传输层

一、传输层的基本服务1、传输层功能传输层的核心任务:应用进程之间提供端到端的逻辑通信服务 只有主机才有传输层,网络核心中的:路由器、交换机、集线器,只有下三层 传输层的功能(简答题) 对应用层报文进行分段重组 面向应用层实现复用与分解 实现端到端的流量控制 拥塞控制 传输层寻址 对报文进行差错检测 实现进程间端到端的可靠数据控制传输 2、传输层寻址与端...

2020-03-17 16:11:45 872

原创 https加密原理-为什么说https能保证数据安全

学习思路名词解释 https实现原理 实际中我们应该怎么设计对外暴露接口一、名词解释对称加密:客户端和服务端公用一个秘钥,既可以进行加密操作也可以进行解密操作,常见的对称加密算法如:AES等优点:算法公开、加解密速度相对较快等 缺点:秘钥对外公开,安全性得不到保障非对称加密:包含一对秘钥,其中对外暴露公钥,客户端数据公钥加密;服务端保留私钥,解密公钥加密的数据优点:公钥私...

2020-01-19 18:43:54 1288

原创 MongoDB-Springboot增删改查

学习思路对比mysql名词解释 分布式原理 代码实现一、对比mysql名词解释解释:一个database包含多个collection,document以json格式存储,同时也支持唯一索引和联合索引,用的方式和mysql基本一致,创建索引时也跟mysql一样会默认锁表,但mongodb提供了background方式让创建工作在后台执行,避免了长时间锁表db.values.c...

2020-01-10 11:50:43 213

原创 elasticsearch-springboot增删改查

学习思路:elasticsearch本地安装 版本说明 代码解析一、elasticsearch本地安装1、elasticsearch6.8.4下载 :https://www.elastic.co/cn/downloads/elasticsearch如果想要下载指定版本,点击链接进去即可2、配置解压后,打开config/elasticsearch.yml,对其中两...

2020-01-06 18:08:42 513

原创 elasticsearch-分布式增删改查原理

学习思路:分片算法 分布式CRUD原理一、分片算法主分片数量是在索引创建的时候确定(7.0版本前默认5个)并且后期不可修改 ,复制分片可以随时更改,为什么主分片数量确定后就不可修改,这要从它的分片算法说起:分片算法跟数据库分片算法的概念一样,首先需要一个分片字段(默认_id)然后按照一定的算法将数据分配得到指定的分片,分片算法如下分片=hash(分片字段value)%主分片数量...

2020-01-02 16:35:39 227

原创 elasticsearch-集群健康-横向扩展-故障转移

学习思路:名词解释 集群健康状况 集群扩展、故障转移一、名词解释集群(cluster):一个或多个cluster.name相同的节点(node)形成一个集群 节点(node):每启动一台elasticsearch实例就是一个节点,常用配置的节点有:master节点、data节点、client节点,默认配置node.master: true(可以被选举为主节点) ;node.data...

2019-12-31 16:17:41 295 1

原创 elasticsearch-数据操作-增删改查

学习思路:什么是文档? RESTful API增删改查 版本控制一、什么是文档文档(document):通常是指elasticsearch中的一条数据,可以代表任何一个json格式的字符串,在elasticsearch中是用json格式存储的,其中_index+_type+_id能确定唯一一个文档_index:文档存储的地方,类似于Mysql库的概念 _type:代表一个ind...

2019-12-30 19:15:21 1016

原创 elasticsearch-倒排索引

学习思路名词概念解释 举个小栗子一、名词解释正向索引:我们熟悉的数据库索引,通过索引值(key)找到对应的数据(value) 反向索引(倒排索引):value一般是一个文档(字符相对较长),通过分词得到多个词语,然后给每个词语建立正向索引都指向value;通过分词后的任意一个词都能查到value(实际中一般不是直接对应value,而是对应value的唯一标识,然后通过唯一标识查val...

2019-12-26 17:57:33 324

原创 分片字段userId-用手机号查询

选取好分片字段,数据库分片就完成了一大半面对用户维度(2C)的业务我们最常用的分片字段就是user_id,但登录基本都拿手机号(没见过拿user_id的)这样的场景怎么实现呢?下面我们提供三种实现方案:一、维护映射关系在数据库新建表,表只有两列,维护手机号-user_id的映射同时将映射表数据维护到缓存;操作顺序如下用户注册时拿手机号查询缓存,如果不存在直接走注册流程...

2019-12-24 18:59:19 1033

SpringIOC全流程.gif

Spring IOC全流程图,由于图片太大,所以上传附件,Spring IOC全流程图,由于图片太大,所以上传附件

2019-11-13

appdatas.7z

CAT启动必备文件,请放于\data\appdatas\cat 将里边的127.0.0.1换成CAT安装内外地址,,,切记

2019-09-29

开发jar包sssssssssssss

jstl jar servletssssssssssssssssssss

2016-03-04

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

TA关注的人

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