自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

牧竹子

个人微信订阅号:牧竹子

  • 博客(281)
  • 资源 (6)
  • 收藏
  • 关注

原创 服务网格Service Mesh和Istio

对于大规模和复杂的应用场景,Istio可能是一个更好的选择,因为它提供了丰富的功能和强大的扩展性。Istio的功能涵盖了流量管理、策略制定、故障注入等方面,适用于复杂的微服务架构。并且,Istio有着庞大的社区支持,可以获取到大量的文档、教程和问题解答,有利于开发人员学习和使用。此外,服务网格还提供了可观测性和监控的能力,使得开发团队可以更好地理解和调试整个应用程序的运行状况。在选择合适的服务网格解决方案时,开发团队应该综合考虑应用的规模、复杂性、性能需求和团队的技术水平,并根据实际情况做出明智的选择。

2024-02-20 16:33:08 625

原创 kettle spoon创建带参数定时任务并关闭它

ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。新版本的可以支持mysql8了,但是我这里是服务器上已经有7.0的版本了默认只支持mysql8以下的版本驱动,主要是驱动名称无法手动修改,因此需要mysql8只能通过其他方式;点击箭头执行,它会不停的5分钟一次执行,查看执行结果,绿色START开始-黑色START结束。这里以mysql为例,创建一个表log,复制该表为log_1。

2024-02-06 14:30:08 1046

原创 CentOS 8最小安装和网络配置

CentOS 8的IOS如果下载DVD版本至少有10G这里我们直接选择最小安装,因此选择最小系统boot版本。

2024-02-01 15:29:55 1372

原创 dataGrip连接数据库mysql和intersystems的iris

intersystems公司的产品iris是cache的升级版本,目前绝大多数数据库工具都没法连接这个数据库datagrip下载地址。

2024-01-24 16:47:49 477

原创 camunda-modeler画图入门

使用 Camunda Modeler 部署流程,点击窗口下方工具栏中的🚀部署按钮可以将当前流程部署到流程引擎,点击部署按钮,输入Deployment Name 为 “Payment” ,输入下方REST Endpoint 为http://localhost:8080/engine-rest(需要先启动本地的camunda-bpm-run服务,不然会红框提示未启动服务) ,然后点击右下角Deploy部署。选择左侧的圆圈,在右侧点击即可,双击可以编辑名称,也可也在右侧的属性面板编辑名称。勾选之后才可以删除。

2023-12-26 11:21:09 1081

原创 Nginx 配置反向代理 WebSocket

Nginx 反向代理 WebSocket 服务时需要设置 Upgrade 和 Connection 的 header。

2023-12-25 10:46:04 614 1

原创 mysql插入更新insert into

1.如果表中不存在主键记录,replace和insertupdate都与insert是一样的特点。2.如 果表中存在主键记录,replace相当于执行delete 和 insert两条操作,而insertupdate的相当于执行if exist do update else do insert操作。因此,如果replace填充的字段不全,则会导致未被更新的字段都会修改为默认值,并且如果有自增id的话,自增id会变化为最新的 值(这样如果是以自增id为标志的话可能导致记录丢失);

2023-07-06 09:46:05 931

原创 XXL-JOB任务分片

如果我们需要在本任务执行结束并且执行成功的时候触发另外一个任务,那么就可以把另外的任务作为本任务的子任务运行,就只需要在本任务里填入另外一个任务的jobId即可(可以在任务列表查看JobId)那么,可以把这几个任务当成一个大任务来串行处理,即在一个任务的末尾触发另一个任务。集群模式:启动多个任务实例,这里可以把每个实例的端口号都改为不同,可以看到同一个任务类有多个机器。对于多10条数据,我们可以创建多个任务每个任务完成不同的ID数据,只要ID不重合,那么就不会重复执行对应的事务。

2023-06-09 14:40:33 3890

原创 windows11安装docker desktop和K8S环境创建镜像和运行dashboard

windows11安装docker desktop实现docker和K8S环境创建镜像和运行;我们知道docker的安装一般我们是安装在linux系统上的,但是如果你的宿主机是windows,那么你还想装docker,那么就需要现在你的windows上装上虚拟机,虚拟机上装linux操作系统,然后在Linux操作系统上再去安装docker,这样比较麻烦。docker desktop的出现就可以解决上面那个问题,你只需要在windows上开启虚拟化功能,然后安装一下docker desktop就可以了。

2023-06-05 17:55:30 2821 3

转载 xxl-job分布式框架源码路由/负载均衡策略算法

xxl-job就是因为内涵丰富的调度策略,使得框架的多样性,灵活性更高。现在就开始讲解xxl-job的核心路由策略算法,总共有10种路由策略,对于以后想从事分布式微服务开发,任务调度的学习是很有必要的。个人认为这个路由算法可以作为标准样例应用在其他分布式路由策略中,后面有时间的话我会整理为工具类牧竹子注:2023/6/4获取注册地址集合的最后一个/**} }

2023-06-04 21:27:11 312

原创 xxjob代码执行过程

调度中心:负责管理调度信息,按照调度配置发出调度请求,自身不承担业务代码。调度系统与任务解耦,提高了系统可用性和稳定性,同时调度系统性能不再受限于任务模块;支持可视化、简单且动态的管理调度信息,包括任务新建,更新,删除,GLUE开发和任务报警等,所有上述操作都会实时生效,同时支持监控调度结果以及执行日志,支持执行器Failover,支持创建执行器等功能。执行模块(执行器):负责接收调度请求并执行任务逻辑。任务模块专注于任务的执行等操作,开发和维护更加简单和高效;

2023-06-04 06:10:15 1178

原创 Seata分布式事务AT、TCC、SAGA、XA模式

可以看出,除了TCC基本都是两阶段模式,成功提交,失败回滚。而根据实现难度,TCC和SAGA都需要手动实现业务回滚代码,复杂度要高一些。其他都可以有数据库或者第三方事务管理器实现回滚业务流程,而你只需要专注业务流程本身。AT,SAGA模式需要所有参与方都有数据库权限,这点如果项目参与方都是一起的不涉及第三方或许可以实现。但如果你调用的是第三方服务,显然不可能支持,第三方更不可能给你提供数据库访问权限,比如支付服务,任何第三方支付都不可能提供数据库权限给你。

2023-05-29 14:38:32 773

原创 nginx配置属性

若未结束,继续普通命中,普通命中和前缀普通命中相似,顺序无所谓,按照location表达式的长短来确定命中结果。如果有多个location匹配的话,则使用表达式最长的那个。http 包含一到多个server, server包含一到多个location。常规字符串匹配,如果有多个location匹配的话,则使用表达式最长的那个。正则匹配,按正则表达式顺序为准,由上至下一旦匹配成功,返回结果,结束解析。前缀匹配,有匹配项,选择最长,返回结果,结束解析。精准匹配,有匹配项,返回结果,结束解析。

2023-05-04 01:07:07 614 1

原创 IDEA 避免每次打开/新建工程都要重新配置 Maven 解决方案

IDEA 每次新建工程都要重新配置 Maven,是一件相当浪费时间的事情。IDEA 避免每次打开/新建工程都要重新配置 Maven 解决方案。

2023-04-19 17:01:17 945

原创 vscode设置idea快捷键

VScode ctrl+shift+p打开命令窗,输入 Import IntelliJ Keybindngs (XML)把Untitled-1.json的内容复制到keybindings.json中覆盖并保存即可。首先要导出IDEA中的快捷键设置。在IDEA中选择导出设置,勾选自定义键盘映射并导出。选下拉第一个 直到出现,根据自己的PC调整,这里windos to windos。点击vscode左下角的 设置–>扩展。选择导入刚才解压得到的XML。

2023-04-18 17:22:47 3448 1

原创 DevOps和主流devOps组件

DevOps是一种软件开发方法,涉及软件在整个开发生命周期中的持续开发,持续测试,持续集成,持续部署和持续监控,如此往复。在 DevOps 模式下,开发团队和运营团队都不再是“孤立”的团队。有时,这两个团队会合为一个团队,他们的工程师会在应用程序的整个生命周期(从开发测试到部署再到运营)内相互协作,开发出一系列不限于单一职能的技能。在一些 DevOps 模式下,质保和安全团队也会与开发和运营团队更紧密地结合在一起,贯穿应用程序的整个生命周期。日志管理:Looki,还有种常用的是ELK。

2023-04-04 09:34:20 528

原创 Gin+Gorm+MySql 搭建web脚手架

Gin是Go语言的一套WEB框架,在学习一种陌生语言的陌生框架,最好的方式,就是用我们熟悉的思维去学。作为一名后端Java开发,在最初入门时,最熟悉的莫过于MVC分层结构,可以简单归纳成controller层,model层,dao层,而在SpringBoot框架里,大概也经常看到以下的分层结构。

2023-03-29 13:49:12 702 3

原创 go环境搭建gin

windows 安装完成会自动设置path环境变量,需要手动添加代理变量GOPROXY=https://goproxy.cn。entos 在~/.profile 中设置环境变量。-u:已存在相关的代码包,强行更新代码包及其依赖包。安装vscode编辑器,安装插件go。-v:打印出被构建的代码包的名字。一个简单的gin服务web。

2023-03-28 11:44:13 593

原创 ArrayList ,AbstractList和iterator在remove时会抛出异常ConcurrentModificationException

/修改次数,替换,删除,排序都算修改 listIterator(final int index);} //ArrayList继承AbstractList ArrayList extends AbstractList {//list.remvove(e)实际调用方法 fastRemove(e) {//不执行checkForComodification } private class Itr implements Iterator < E > {

2023-03-23 13:01:39 446

原创 MySQL执行计划extra中常见类型using index 和 using where using index 的区别

MySQL执行计划extra中的using index 和 using where using index 的区别。mysql执行计划中的extra列中表明了执行计划的每一步中的实现细节,其中包含了与索引相关的一些细节信息。其中跟索引有关的using index 在不同的情况下会出现。

2023-03-20 16:39:20 499

转载 mysql驱动表与被驱动表及join优化

MySQL 表关联的算法是 Nest Loop Join,是通过驱动表的结果集作为循环基础数据,然后一条一条地通过该结果集中的数据作为过滤条件到下一个表中查询数据。忘了补充一句,也可以通过EXPLAIN分析来判断在sql中谁是驱动表,EXPLAIN语句分析出来的第一行的表即是驱动表。3.当使用join时,mysql会选择数据量比较小的表作为驱动表,大表作为被驱动表。如果A表,B表数据量差不多大的时候,那么选择谁作为驱动表也是无所谓了。1.当使用left join时,左表是驱动表,右表是被驱动表。

2023-03-20 14:13:54 1669

原创 使用Markdown写出一份漂亮的简历

风格简洁大方,言简意赅,这是我对它的定义,至于你怎么定义它管我什么事。

2023-01-30 17:17:28 4694

原创 GO-IM系统

https://github.com/alberliu/goim 是一个即时通讯服务器,代码全部使用golang完成,主要使用mysql (多设备,消息不丢不重) 官网https://goim.io/https://github.com/Terry-Ye/im纯go实现的分布式im即时通讯系统,各层可单独部署,之间通过rpc通讯,基于redis 做消息推送,比较适合做直播间消息。http://gglinux.com/2017/04/15/IM_design/IM系统设计。

2023-01-28 16:51:35 1214

原创 Caffeine和Disruptor 标记下-有空再写经过

SpringBoot Disruptor 简单封装。Spring Boot缓存实战 Caffeine。Disruptor 介绍。

2023-01-13 19:04:50 124

原创 Swagger2时启动控制台输出大量 Generating unique operation named

多个controller类中的方法名相同,我这里是自己生成的多个controller使用了相同的模板代码,而他们的CRUD方法名没有加上模块名的前缀,从而导致swaggerr扫描时相同的POST方法有相同的方法名从而提示POST重复,但是并不影响正常业务,只是不够规范。直接修改每个controller中的方法名不重复即可,这里我直接加上各个模块的前缀即可。启动服务时,控制台打印大量如下信息。

2023-01-12 11:04:58 782

原创 vue3安装环境

预设项配置信息,最后需要配置一个默认的模板项目名称,下次创建新项目就直接选择这个默认的模板项目名就可以该项目模板创建了,不再走上面的流程,自带相关配置项。空格选择如上选项,回车下一步。进入项目,启动项目如下命令。

2022-09-20 16:25:06 169

原创 Loki+Grafana查询语句

这样一个完整的查询过程就完成了,只不过Grafana在我们添加完Loki服务地址后,会自动帮我们完成前两步的事情,随着我们在Label输入框输入查询表达式时,就相当于完成了query参数的构建,而日期范围通过日期选择器完成。这里的日志集合是满足{}语句的标签筛选后,对集合结果中的所有文本字符进行匹配筛选,就像chrome浏览器ctrl+F的功能,满足条件的才会列出来,不满足的则看不到。日志是由日期,服务系统名称,模块名称等等日志的标签元素组成,就像是表结构中的列名,用以区分每条日志的基本元素。...

2022-08-05 16:11:15 6319

原创 TransmittableThreadLocal实现原理

InheritableThreadLocal只会在线程池中的线程初次创建的时候,从父线程拷贝属性,而父线程再次修改这个属性时,线程池中的这个线程是无法再次感知到的。我们在日常的开发中,很少主动new线程,都是使用线程池,而线程池中,不会频繁的创建线程,更多的场景是线程创建一次,重复使用。如果线程中的属性在上次使用后被修改,下次使用后,子线程中保存的属性值依然是首次使用时的值TransmittableThreadLocal实现父线程值传递变更值给线程池子线程可以看到,使用TransmittableThrea

2022-07-06 14:23:30 1338

原创 ThreadLocal和InheritableThreadLocal实现原理

可见threadLocals为Thread的内部变量,每个Thread类的实例,都有自己的threadLocals变量总结ThreadLocal属性保存在每个线程实例中,线程实例通过Map结构管理所有的ThreadLocal属性,Map的key为ThreadLocal属性。ThreadLocal属性是Thread的内部变量,父子线程是不同的线程实例,显然在子线程中无法获取父线程设置的属性:ThreadLocal属性是Thread的内部变量,父子线程是不同的线程实例,显然在子线程中无法获取父线程设置的属

2022-07-04 17:05:52 204

转载 ThreadLocal父子线程数据传递

ThreadLocal父子线程数据传递?(面试题:如何在子线程拿到父线程threadLocal的值)2、使用InheritableThreadLocal解决3、带来的问题:在线程池中只能获取初始化线程时父线程的值4、解决:使用阿里开源工具类transmittable-thread-local通过装饰类调用前重新将父线程的值进行赋值5、解决2:通过线程池包装类解决POM依赖...

2022-07-04 15:29:28 554

原创 java代理Proxy以及实际PRC场景中的使用

代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能.这里使用到编程中的一个思想:不要随意去修改别人已经写好的代码或者方法,如果需改修改,可以通过代理的方式来扩展该方法定义:给目标对象提供一个代理对象,并且由代理对象控制对目标对象的引用目的:java当中有三种方式来创建代理对象:创建一个 Image 接口和实现了 Image 接口的实现类。ProxyImage 是一个代理类,屏蔽具体

2022-06-24 13:11:55 509

原创 K8S容器实例POD中安装curl-vim-tennet工具

有时候微服务调试需要根据调用链路调试安装curl,tennet,vim等命令Docker容器POD中安装curl、telnet、vim工具直接使用apk 进行安装

2022-06-22 17:14:37 2499

转载 K8S暴露服务的三种方式

在k8s上可以给Service设置成NodePort类型,这样的话可以让Kubernetes在其所有主机节点上开放一个端口给外部访问(所有节点上都使用相同的端口号), 并将传入的连接转发给作为Service服务对象的pod。这样我们的pod就可以被外部请求访问到这里对外提供访问的是真实主机和端口号,下图和上图端口对应上你就会发现各自的关系NodePort 会在每个节点上开启端口,服务越多端口号对外暴露的就越多,不但会造成安全风险而且难以维护,所以生产环境不建议这么使用LoadBalane是上面通过No

2022-06-22 17:10:54 1545

原创 windows 10 系统安装git review工具 (gerrit)

选择相应windows版本.这里使用ptyhon3.7.0,下载后, 安装中,记得勾选添加到 path,如果没有忘记勾选,手动设置如下:系统属性 / 高级 / 环境变量(N) /双击 Path / 编辑 / 新建 添加两条路径, 类似于这样C:\Users\aaa\AppData\Local\Programs\Python\Python37\ (aaa是我的电脑名称,换成自己的)...

2022-06-21 15:06:11 1926

转载 Dockerfile RUN apk add 卡住问题解决

在后端服务生成验证码图片时用到了字体库,而docker默认的系统中是没有这些字体的由于仓库镜像资源问题引起的,换成阿里云资源即可。具体操作,在RUN apk add 命令之前加以下代码RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories重新build即可如果是ubuntu,使用以下命令:RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.

2022-05-16 14:32:44 2538

原创 发布springboot-demo到私有HARBOR并使用k8s部署

发布springboot-demo到私有HARBOR并使用k8s部署

2022-05-10 12:13:23 620

原创 chrome修改黑色背景dark模式为Disable禁用

chrome修改黑色背景dark模式为Disable禁用

2022-04-02 14:51:39 579

原创 自行走机器人系统常用的技术栈

由于就职于一家AI机器人及工业检测相关的公司,就对当前相关联的技术栈有一个大致的了解。本人是Java后端服务岗位,之前互联网公司经历,但对机器人这块比较好奇,所有只做了相关的了解。...

2022-03-21 18:45:14 1697

原创 Stream将List转为Map,Set汇总拼接key以及分组groupingBy用法

Stream将List转为Map,Set汇总拼接key以及分组groupingBy用法

2022-03-11 13:03:23 10558 1

转载 总结 AT、TCC、Saga、XA 模式分析

总结 AT、TCC、Saga、XA 模式分析分布式事务模式介绍技术栈AT 模式无侵入的分布式事务解决方案,适用于不希望对业务进行改造的场景,几乎0学习成本(sql都由框架托管统一执行,会存在脏写问题)seata、shardingsphereTCC 模式高性能分布式事务解决方案,适用于核心系统等对性能有很高要求的场景(第一阶段会产生行锁,事务执行太久会锁行很久)seata、service-combSaga 模式长事务解决方案,适用于业务流程长且需要保证事务最终一致

2022-02-11 17:31:09 685

spring注解事务实现demo

声明式事务管理也有两种常用的方式,一种是基于tx和aop名字空间的xml配置文件,另一种就是基于@Transactional注解。显然基于注解的方式更简单易用,更清爽。spring注解事务实现demo

2017-03-07

java调用DDL的简单demo

Test.java 是java源文件 Test.h 是java生成的头文件 Test.class 是java生成的编译文件 Test.dll 是c编译的动态链接库文件(32位系统) 以上仅在32位window系统上可以运行,64位则需在64位的vc下编译 详情参考 http://blog.csdn.net/zjcjava/article/details/47164881

2015-07-31

Pushle.zip

Pushlet 是一个开源的 Comet 框架,在设计上有很多值得借鉴的地方,对于开发轻量级的 Comet 应用很有参考价值

2014-04-20

PowerDesigner详细手册.pdf

PowerDesigner详细手册.pdf

2013-10-14

飞秋FeiQ局域网聊天软件

局域网聊天软件 飞秋(FeiQ)是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和 QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快

2013-03-18

空空如也

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

TA关注的人

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