自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

牧竹子

个人微信订阅号:牧竹子

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

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

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

2022-03-21 18:45:14 1884

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

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

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

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

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

2022-02-11 17:31:09 724

转载 Ingress

文章目录Ingress介绍环境准备 搭建ingress环境获取ingress-nginx,本次案例使用的是0.30版本创建ingress-controller pod和service查看ingress-nginxPOD查看service准备service和pod创建查看Http代理创建ingress-http查看查看详情Https代理查看Ingress介绍在前面课程中已经提到,Service对集群之外暴露服务的主要方式有两种:NotePort和LoadBalancer,但是这两种方式,都有一定的缺点:

2021-12-27 19:43:24 629 1

原创 K8S资源和操作

K8S资源和操作

2021-12-14 12:23:21 259

原创 K8S资源管理

资源管理方式资源管理方式命令式对象管理:直接使用命令去操作kubernetes资源kubectl run nginx-pod --image=nginx:1.17.1 --port=80命令式对象配置:通过命令配置和配置文件去操作kubernetes资源kubectl create/patch -f nginx-pod.yaml声明式对象配置:通过apply命令和配置文件去操作kubernetes资源kubectl apply -f nginx-pod.yaml类型操作对象

2021-12-13 16:14:11 889

原创 RbbitMq不推荐使用匿名队列

405, reply-text=RESOURCE_LOCKED排它队列导致的异常

2021-12-10 11:30:50 1041

原创 K8S装机

k8s入门安装集群和初始化节点

2021-12-10 10:37:59 323

原创 Nacos 安装部署

下载和基本配置sql信息从nacos官网 https://nacos.io/zh-cn/index.html 下载安装包1.创建数据库nacos,并设置字符集utf82.执行/nacos/conf/nacos-mysql.sql中的语句,创建表,并插入数据3.修改/nacos/conf/application.properties文件,如下spring.datasource.platform=mysqldb.num=1db.url.0=jdbc:mysql://localhost:3306/n

2021-08-11 16:08:03 15241 1

原创 Feign动态设置header

背景需求springmvc 可以直接通过拦截器Interceptor和过滤器filter拦截请求头header,从而获取必要的验证信息作为我们业务逻辑服务。比如权限验证,多租户的权限范围等等。但是在springcloud中微服务的调用其实最终也是远程调用了http,那么能不能在客户端调用的时候发给服务端的header中添加自定义的信息呢,比如业务线ID或者auhtor信息等等进而和springmvc的业务逻辑部分统一避免额外的代码实现。Feign设置header目前有两种方式1.实现拦截器Reque

2021-06-16 17:41:30 4996

原创 rabbitMq延迟队列实现

前言我们要实现延迟消息队列效果,在rabbtimq中可以通过TTL+死信的方式,把过期消息转移到死信exchange中,然后再死信exchange绑定的队列中去消费完成后期的业务逻辑。但是这里有一个前提就是,我们TTL队列中的过期时间都是一样的,如果不一样就会如下图因为消息是排队出队的,如果前面的消息TTL时长大于后面的就会一直阻塞出队口,造成队列阻塞,而后面的消息即便是过期了也依然无法出队释放空间。所以私信只适合统一过期时长的消息依次入队,如果是不同过期时长的消息并且不是过期时间短的排前面就会

2021-05-18 11:34:29 744

原创 多环境配置redission

背景了解参考阅读版本redisson-spring-boot-starter-3.13.6RedissonAutoConfiguration初始化源码解析https://blog.csdn.net/lizz861109/article/details/109289430redisson-spring-boot-starter-3.13.6版本之前的老版本是只有config方式,此版本开始增加了file配置方式@ConfigurationProperties( prefix = "spri

2021-05-12 11:26:08 2168

原创 springBoot中使用elasticjob

elasticjob执行体中最重要的两个参数是;分片总数,分片项。分片总数:集群的节点总数(类似于银行办理业务窗口的总柜台数)分片项:把每个排序的话,默认从0开始,最大值不会超过分片总数,业务受理时会拿到的业务编号(类似于你去银行柜台办理业务,你拿到的排队编号)假设我们规定排队总长度只有10个,但是启动的服务节点只有三个,那么elasticjob会给每个节点根据zookeeper实际节点数取余N%3;那么三个节点可能受理的编号情况是,节点1包含0,1,2节点2包含3,4,5节点3包含6,7,

2021-04-30 15:35:11 1842 2

原创 zookeeper安装和idea插件使用

文章目录下载Intelij IDEA中添加zookeeper插件重启IDEA开发工具后,配置zookeeper服务信息下载进入Apache ZooKeeper官方网站进行下载,https://zookeeper.apache.org/releases.html我这里下载的是apache-zookeeper-3.7.0-bin.tar.gz##修改配置将conf目录下的zoo_sample.cfg文件,复制一份,重命名为zoo.cfg修改配置如下# example sakes.dataDir

2021-04-29 10:29:07 1843 1

原创 接口文档Swagger、knife4j和YApi、APIDOC

Swagger、knife4j和YApiSwagger简介特点跨语言在线编辑导入文档导出离线文档权限管理Swaggerspring-boot支持的基本API生成文档模块可以导出api的json格式,强依赖Java项目运行,不支持离线文档功能java––––knife4jknife4j是为Java MVC框架集成Swagger生成Api文档的增强解决方案 UI和服务分离-增强UI根据标准规范,生成的在线markdown离线文档,开发者可以进行拷贝生成m

2021-03-26 09:52:46 2934

原创 k8s部署服务流程

流程上图是交给了jekins由流水线创建完成,但是基本的文件还是需要手工完成的:代码,dockerFile,k8s-yaml整个流程如下:代码完成----->打包------>制作docker镜像------->k8s创建并部署yaml服务------>k8s控制器管理pod------->暴露应用------->对外发布应用------->日志监控手动部署运行环境镜像:安装java,maven,mysql环境检测是否安装成功并能够使用:在k8s

2021-03-16 10:12:56 1571

原创 常用的缓存机制

文章目录1. LRU (Least Recently Used)最近最少使用2. LFU (Least Frequently Used)最近最不常用使用页面置换3.比较LRU 和 LFU 的缺点TinyLFU统计频率Count–Min Sketch 算法保新机制Window特性淘汰策略(eviction policy)异步的高性能读写总结1. LRU (Least Recently Used)最近最少使用核心思想:如果数据最近被访问过,那么将来被访问的可能性也更高。实现:1) 新数据插入链表头

2021-02-16 09:31:51 1237

原创 手工创建三节点Redis集群

文章目录手工创建三节点集群配置三几个几点启动节点加入集群指派slots查看集群状态okredis cluster info显示cluster_state:fail解决方案手工创建三节点集群这里我们手工创建三节点集群,至少我们是可以自己设置多少个节点的。脚本创建需要至少6个节点,具体参考如下https://www.cnblogs.com/zhaoyongjie-z/p/12577972.htmlhttps://blog.csdn.net/zjcjava/article/details/8525615

2021-01-26 13:18:32 1198

原创 Redisson分布式锁实现原理和使用

常见的锁内存锁lock,synchronize分布式锁redis,zookeeper实现Redisson实现了Lock接口的分布式集群锁,是可重入锁,功能强大,源码复杂,比redis单机模式分布式锁可靠,稳定性更高,支持集群模式,支持锁根据业务时长自动延迟释放redis普通分布式锁存在一定的缺陷——它加锁只作用在一个Redis节点上,如果通过sentinel和cluster保证高可用,如果master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况:高可用问题客户端1在Redis的ma

2021-01-19 14:17:13 4233 3

原创 Java后台phantomjs导出复杂图表PDF

当前导出PDF工具java后端如何导出像前端用echarts那么漂亮而且还有带有图表的PDF呢,或者图片。目前后端导出word或者excel都是有县城的jar,导出简单的图表也有的简单的jfreechart总结一下用java生成PDF的方法:A、itext-PdfStamper pdfStamper(俗称抠模板):代码简单 模板要先提供,且字段长度固定、不灵活B、itext-Document document(正常代码撰写):模板可根据代码调整、但样式不如C灵活 要维护的后台代码较多,整个过程全手工

2021-01-08 12:05:35 2231

原创 java对mysql查询特殊字符转义

日在使用mysql的like查询用户时,当用户姓名中含有" ’ “,”%","_",,""等特殊符号时,按以往的查询方式,并不能得出想要的结果。查阅资料得知:在遇到这些特殊字符时,需要对字符进行转义。‘:用于包裹搜索条件,需转为’;%:用于代替任意数目的任意字符,需转换为%;_:用于代替一个任意字符,需转换为_;\:转义符号,需转换为\\。 public class RequstUtils { /** * special char handle * ':用于

2020-12-28 14:22:57 3560

原创 keycloak-11.0.2修改数据源为mysql

下载mysql驱动https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.13/mysql-connector-java-8.0.13.jar创建数据源module在keycloak根目录下创建目录keycloak/modules/system/layers/base/com/创建mysql/main/两层目录进入后将驱动文件copy到此目录下新建文件:module.xml,内容如下:<?xml version="1.0"

2020-10-26 11:43:45 781 1

原创 eureka源码

功能快捷键eureka服务端EurekaServerAutoConfiguration自动配置类,注册各种bean,包括PeerAwareInstanceRegistry用于服务注册(实际就是父类AbstractInstanceRegistry提供的ConcurrentHashMap(ConcurrentHashMap<String, Map<String, Lease>> )存放存放eureka服务端:服务注册列表:registry)、以及jersey。这里扫描获取所有@Pa

2020-10-20 13:10:19 254

转载 聚合支付二维码生成原理

聚合支付二维码生成原理聚合支付平台提供平台支付URL,生成统一的支付二维码。当消费者根据二维码扫描时,聚合支付平台根据扫描者浏览器类型判断支付类型,并提交参数给聚合支付平台支付处理接口处理。平台支付处理接口根据支付类型和商户ID,调用相应的支付渠道支付接口进行支付处理1.商户分别开通微信、支付宝、京东金融等支付渠道,各个平台审核通过后会生成微信商户编码,支付宝商户编码和京东金融商户编码2.商户将这些渠道的支付账号配置到聚合平台中,并分配给用户一个聚合唯一用户标识ID3.聚合平台通过微信、支付宝和京

2020-06-08 22:38:03 7444

原创 Scala 安装

Scala 安装Scala 语言可以运行在Window、Linux、Unix、 Mac OS X等系统上。Scala是基于java之上,大量使用java的类库和变量,使用 Scala 之前必须先安装 Java(>1.5版本)。https://www.scala-sbt.org/download.html最下面,other resources下载符合自己的二进制安装包,windows...

2020-04-28 09:02:17 712

原创 redis 分布式锁遇到的坑

用锁遇到过哪些问题?又是如何解决的?未关闭资源由于当前线程 获取到redis 锁,处理完业务后未及时释放锁,导致其它线程会一直尝试获取锁阻塞,例如:用Jedis客户端会报如下的错误信息1redis.clients.jedis.exceptions.JedisConnectionException: Could not get a resource from the poolredis线程池...

2020-04-25 11:30:43 2758 1

原创 使用 Spring Cache + Redis 作为缓存并支持自定义单个key设置过期时长

Spring CacheSpring针对不同的缓存技术,需要实现不同的cacheManager,Spring定义了如下的cacheManger实现。pomspringboot 项目加入如下依赖 <dependency> <groupId>org.springframework.boot</groupId> <ar...

2020-01-10 16:33:51 4249 4

原创 将项目发布到 maven 中央仓库sonatype

1注册sonatype账号官方网站:http://www.sonatype.org/注册地址是 https://issues.sonatype.org/secure/Signup!default.jspa 注册工单创建1> 访问sonatype并注册账号 https://issues.sonatype.org ,注意要记住账号密码,会用于我们后续的发布及相关操作2> 如图新建...

2020-01-08 18:30:30 5529 6

转载 开源监控系统对比(Ganglia、Open-falcon、Prometheus、Zabbix) 不指定

最近调研了一下开源的监控系统,最终选择了open-falcon。从以下列表可以了解到各监控系统都有他在特定场景下的优势,如果以时间进行分类可以了解到新起之秀譬如open-falcon和prometheus设计思路都很像。 但最终选择open-falcon的原因主要还是在当前笔者所在的场景下解决了一些痛点、譬如大量数据上报页面展示渲染速度很快、模块化开发、有丰富的插件和中文文档等。关于open-...

2019-12-27 09:38:28 4318 1

原创 安装python3.7初始化

这里写自定义目录标题安装python3.7安装pip安装python3.7windows官方下载https://www.python.org/ftp/python/3.8.0/python-3.8.0.exe安装完成后安装pip(1)打开cmd界面,cd到C:\Users\Administrator\AppData\Local\Programs\Python\Python37\Scri...

2019-12-17 21:49:43 362

转载 flink入门实例-Windows下本地模式跑SocketWordCount

文章目录一、nc工具二、idea中配置,代码以及设置参数三、运行结果一、nc工具配置windows的nc端口,在网上下载nc.exe(https://eternallybored.org/misc/netcat/)进入解压目录运行如下命令nc -L -p 9000 -v使用命令开始nc制定端口为9000(nc -L -p 9000 -v) 启动插件二、idea中配置,代码以及设置参数...

2019-12-06 15:09:33 1214

原创 INSERT ... ON DUPLICATE KEY UPDATE

网上关于INSERT … ON DUPLICATE KEY UPDATE大多数文章都是同一篇文章转来转去,首先这个语法的目的是为了解决重复性,当数据库中存在某个记录时,执行这条语句会更新它,而不存在这条记录时,会插入它。相当于 先判断一条记录是否存在,存在则update,否则insert。其语法是:INSERT INTO tablename(field1,field2, field3, ......

2019-12-04 15:00:23 319

原创 logback-spring.xml配置文件

集成到springboot的yml格式配置文件的示例:logging: config: classpath:logback-spring.xml level: dao: debug org: mybatis: debuglogback-spring.xml<?xml version="1.0" encoding="utf-8"?><c...

2019-11-30 18:40:45 1209

原创 SKU,UPC,ASIN,EAN,GCID到底是什么鬼

1、UPC 全称Universal Product Code 由12位数字代码组成,每一条UPC码都不一样,UPC码里面的数字信息代表了产品的类别,制造商,属性,特性等。其特性是一种长度固定、连续性的条码,主要在美国和加拿大使用,我们在美国进口的商品上可以看到。UPC条码是由美国统一代码委员会制定的一种条码。我国有些出口到北美地区为了适应北美地区的需要,也需要申请UPC条码,UPC条码也有标准版...

2019-11-27 20:18:40 3433

原创 安装PowerDesigner16使用mysql8.0的ODBC导入数据库模型

安装PowerDesigner16PowerDesigner161.找到下载的破解文件并复制 16.5PJ 文件 pdflm16.dll2.找到软件的安装路径,例如我的是D盘下的powerdesign文件夹3.将复制的破解文件粘贴到改目录,会提示是否替换,替换就行ODBC数据源PW只使用32位的mysql 8.0 选择32位的Windows (x86, 32-bit), MSI Ins...

2019-11-25 09:52:12 8335

原创 idea2019版不显示maven project视图

主要是源于idea2019版与maven3.6.2版本不兼容下载3.6.0版本更新环境变量后重启ideahttps://archive.apache.org/dist/maven/maven-3/3.6.0/binaries/看图如下:新版本点视图为maven...

2019-11-22 17:16:00 4841

转载 Java锁升级

基础知识之一:锁的类型锁从宏观上分类,分为悲观锁与乐观锁。乐观锁乐观锁是一种乐观思想,即认为读多写少,遇到并发写的可能性低,每次去拿数据的时候都认为别人不会修改,所以不会上锁,但是在更新的时候会判断一下在此期间别人有没有去更新这个数据,采取在写时先读出当前版本号,然后加锁操作(比较跟上一次的版本号,如果一样则更新),如果失败则要重复读-比较-写的操作。java中的乐观锁基本都是通过CAS操...

2019-11-18 23:15:10 291

转载 tcp/ip 只有四次挥手?还有三次挥手

我们经常说tcp/ip 三次握手与四次挥手,实时上tcp/ip并不总是这样,它会存在一些特殊情况,并对这些特殊情况作了优化,下面给大家演示一遍:抓取我的服务器地址8080端口的一次http请求 ,在服务器端执行命令,抓取8080端口的请求:tcpdump -S -i eth0 tcp port 8080在客户端请求url地址wget http://118.24.47.200:80...

2019-11-18 22:51:20 787 1

原创 Windows 安装 MongoDB的 zip 版本

1、首先到官网(http://www.mongodb.org/downloads)或者(https://www.mongodb.org/dl/win32/x86_64-2008plus-ssl)下载合适的安装包,推荐下载zip压缩版。mongodb-win32-x86_64-2008plus-ssl-4.0.5.zip下载地址:https://fastdl.mongodb.org/win32...

2019-11-15 22:32:43 698

原创 Redlock:Redis集群分布式锁

前言分布式锁是一种非常有用的技术手段。实现高效的分布式锁有三个属性需要考虑:● 安全属性:互斥,不管什么时候,只有一个客户端持有锁● 效率属性A:不会死锁● 效率属性B:容错,只要大多数redis节点能够正常工作,客户端端都能获取和释放锁。普通版:单机redis分布式锁说道Redis分布式锁大部分人都会想到: setnx+lua或者set+lua,加上过期时间大多都是使用的下面的ke...

2019-11-12 12:35:07 3284 4

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

飞秋FeiQ局域网聊天软件

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

2013-03-18

空空如也

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

TA关注的人

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