后台
文章平均质量分 74
技术闲聊DD
代码改变生活,程序改变世界!
展开
-
线上非业务性问题排查经验总结
我们在开发中,可能会遇到千千万万的异常分析和排查,这是开发人员的必备技能,除了业务性的异常,还有一些比较棘手非业务性的问题,不常用到,但是用到的时候我们可能就比较慌,不知道怎么解决,所以今天我就把我平时遇到的一些比较棘手的,同时也是大家都可能会遇到的异常做一下分享,希望能够帮助到大家,对我自己来说也是一个经验总结和手册积累。原创 2024-08-19 08:47:10 · 917 阅读 · 0 评论 -
聊一下订单超时自动关闭的几种方式以及使用场景
如果项目中使用的消息中间件是RabbitMQ或RocketMQ,对延迟精度要求较高,业务量较大,不想对Redis有太大压力的,推荐使用方式1。如果项目中使用的消息中间件是Kafka,对延迟精度要求较高,业务量较大,不想对Redis有太大压力的,推荐使用方式2。如果项目中没有使用消息中间件,后续也不打算引入,业务量不大,对消息丢失有一定的容忍,可以采用Redisson策略。如果项目中不想用中间件或者Redis来处理,同时业务量不大,对延迟有一定的容忍,简单起见可以采用定时轮询策略。原创 2024-08-19 08:46:16 · 1000 阅读 · 0 评论 -
基于Zanzibar实现的ReBAC权限体系(1)- OpenFGA简介
OpenFGA 是一个面向开发人员的可扩展开源授权系统,允许为任何类型的应用程序实施授权,并随着复杂性的增加而平稳发展。受 Google 内部授权系统 Google 的 Zanzibar 的启发,OpenFGA 依赖于 Relationship-Based Access Control,它允许开发人员轻松实现 Role-Based Access Control,并提供额外的能力来实现 Attribute-Based Access Control。类型定义定义用户或其他对象可以与此类型相关的所有可能关系。原创 2024-08-05 16:02:05 · 879 阅读 · 0 评论 -
springboot 缓存预热的几种方案
使用启动监听事件实现缓存预热优点:可以在应用完全启动之前执行,可以确保缓存预热在所有依赖初始化完成之后进行。缺点:处理复杂,需要对Spring的事件机制有一定了解。使用@PostConstruct注解实现缓存预热优点:简单易用,不需要额外的接口实现,适用于简单的预热逻辑。缺点:对于复杂的预热逻辑,可能会导致方法变得臃肿,不易于维护。使用CommandLineRunner或ApplicationRunner实现缓存预热。原创 2024-07-24 09:23:02 · 813 阅读 · 0 评论 -
CAD二次开发(14)-如何实现多条多段线的自动绘制+指定点位置自动绘制图形
里面有一些图层操作的工具方法(LayerTool),多段线的工具方法(PolylineTool)后续会给大家分享出来,块删除的方法其实上篇文章已经分享了。这两个功能怎么实现呢?原创 2024-07-15 09:40:28 · 363 阅读 · 0 评论 -
CAD二次开发(13)- 块参照的颜色修改+块参照的删除操作
对所有的块表记录进行判断,如果是BlockReference且名称符合且在你需要修改的块参照集合中,则再进行修改颜色操作。为什么不在上一步直接循环修改每个块颜色呢,不好意思,这种方式不行,你们可以试试。但是按照步骤1,你就会发现,自己CAD画布上的块并没有发生颜色的变化,所以我们还需要在CAD上做一些设置即可。,把每个块炸成实体集合,对每个实体进行颜色设置,最后重新添加到模型空间中,你们不需要关注我删除指定块的逻辑,需要关注的是。选中其中的某个块参照,选择块编辑器并打开。块删除分为块引用删除和块定义删除。原创 2024-07-12 11:01:07 · 324 阅读 · 0 评论 -
CAD二次开发(12)- 块的定义和使用
块由多个在逻辑上相关的图形对象所定义的整体。优点就是可以统一作业标准、提高作业效率,因为生活中的物体不是简单的一个单元,可能有多个单元统一构成,块就可以很好地表示这种结构。块的本质是存储于块表记录中的实体对象集合。属性块是有构成的实体和附加信息(属性)组成的,属性块中块的定义与简单块中块的定义一样,而属性的定义主要是通过属性的AttributeDefinition类的有关属性和函数来实现的。AttributeDefinition类的实例并设置对象的属性值;原创 2024-07-12 10:19:06 · 847 阅读 · 0 评论 -
CAD二次开发(11)-在用C#进行CAD开发SQLite和SqlSugar的使用
保证System.Data.SQLite依赖的正常运行。利用 Nuget引入其相关包。原创 2024-06-19 09:58:33 · 468 阅读 · 0 评论 -
CAD二次开发(10)-单行文字的添加+图形修改
第一步: 首先在CAD中新增中文样式。原创 2024-06-18 21:35:35 · 312 阅读 · 0 评论 -
CAD二次开发(9)- CAD中对象的实时选择
有时候我们需要在CAD画布上实时选取起始点和结束点,然后绘制出来一条直线。AddEnityToModelSpace方法见我前面文章封装的工具类。利用过滤器进行选择。原创 2024-06-17 22:39:46 · 230 阅读 · 0 评论 -
CAD二次开发(7)- 实现Ribbon选项卡,面板,功能按钮的添加
启动并自动加载CAD,输入netload,加载自定义执行文件,并输入RibbonCmd命令。图片路径地址设置,一般设置为空,我们到时候会获取执行文件的加载路径来赋值。实现添加Ribbon选项卡,添加面板,以及给面板添加下拉组合按钮。实现自定义的仿CAD的直线按钮功能,多段线按钮功能。按钮的属性设置,鼠标事件设置。如图,去掉依赖复制到本地。原创 2024-06-02 21:11:32 · 624 阅读 · 0 评论 -
CAD二次开发(6)-用户交互之选择集
测试让选中的图形描红。原创 2024-05-27 05:30:38 · 189 阅读 · 0 评论 -
CAD二次开发(5)-用户交互仿系统命令
【代码】CAD二次开发(5)-用户交互仿系统命令。原创 2024-05-26 16:27:11 · 362 阅读 · 0 评论 -
CAD二次开发(4)-编辑图形
【代码】CAD二次开发(4)-编辑图形。原创 2024-05-26 08:18:13 · 401 阅读 · 0 评论 -
CAD二次开发(3)-图形绘制
工具类:AddEntityTool。工具类:BaseTool。原创 2024-05-25 18:29:02 · 187 阅读 · 0 评论 -
CAD二次开发(2)-将直线对象添加到CAD图形文件
首先我们要明白一个事情,就是我们在代码中创建的线条目前是写到内存当中,而CAD的图纸数据是以自己的某种方式,比如文件数据库等等,存储在磁盘中,所以我们就得需要把内存中的数据想办法按照CAD的API调用写到CAD的文件数据库中。Line 继承Curve 继承Entity 继承DBObject 继承Drawable 继承RXObject。我们创建一个line对象,然后打上断点,生成.dll文件,加载到CAD中,然后执行命令。透过参数,我们就会发现默认Line创建了一个起点为(0,0),终点为(0,0)的直线。原创 2024-05-23 05:42:43 · 639 阅读 · 3 评论 -
记录一次Redisson使用synchronized和分布式锁不生效的原因
最近在开发的过程中,遇到了一个并发场景,用户进行方案复制的时候,当快速点击两次操作的时候,出现了复制方案重名的情况,实际上是复制方案的方案名称,是由后端根据数据库已有的方案名称和当前要复制的方案名称进行逻辑处理,保证方案名称不能重复,比如:要复制的方案名称为“我的方案”,那么复制得到的方案名称为“我的方案-副本”,在高并发场景下,就会出现重名情况。原创 2024-05-22 13:19:21 · 1611 阅读 · 0 评论 -
CAD二次开发(1)- 初步和CAD进行通讯交互
选中添加的依赖,鼠标右击,选择在对象浏览器中查看。原创 2024-05-21 22:45:29 · 414 阅读 · 0 评论 -
支付体系(2)-微信支付的后端代码实现
在后端服务实现中,整体的框架,我会采用springboot+MyBatis-Plus的架构去做一个简单地实现,具体是去实现我上一篇文章中说到的其中一种支付方式,Native支付,根据官网,我们需要实现整个完整的支付流程的接口API分别如下:Native支付适用于PC网站、实体店单品或订单、媒体广告支付等场景,用户扫描商户展示在各种场景的二维码进行支付。1.4 相关配置配置yml配置类1.5 定义统一返回1.6 数据库实现SQL脚本在下面链接,大家可以自行下载。下载链接因为需要公司的营业执原创 2024-05-17 22:52:01 · 1048 阅读 · 0 评论 -
支付体系(1)-微信支付的介绍和指南
在支付实现之前,我们需要了解这几个概念,因为后面的代码实现。很多都需要基于此来去做实现。摘要算法就是我们常说的散列函数、哈希函数,它能够把任意长度的数据“压缩”成固定长度、而且独一无二的“摘要”字符串。作用:保证信息的完整性不可逆:只有算法,没有秘钥,只能加密,不能解密难题友好性:想要破解,只能暴力枚举发散性:只要对原文进行一点点改动,摘要就会发生剧烈变化抗碰撞性:原文不同,计算后的摘要也要不同常见摘要算法:MD5、SHA1、原创 2024-05-17 00:35:35 · 690 阅读 · 0 评论 -
Anaconda的安装和配置
在介绍之前,我们得要区别Anaconda和Python是什么关系,怎么描述这个关系呢,就拿汽车和发动机来做比喻吧,Anaconda就相当于汽车,而Python相当于是汽车的发动机。你安装Anaconda后,就像买了一台车,无需你自己安装发动机和其他零配件,而Python作为发动机提供Anaconda工作所需的内核。原创 2023-07-12 10:34:26 · 1069 阅读 · 0 评论 -
二维码在物资管理中的应用以及实现
在物资管理中,我们经常需要对物资通过二维码,一码一物的方式进行管理,这样的管理方式非常方便。每个二维码都记录了整个物资设备的生命周期。原创 2023-07-11 17:09:30 · 640 阅读 · 0 评论 -
Sa-Token,一款更加轻量的权限认证框架
Sa-Token 是一个轻量级 Java 权限认证框架,主要解决:登录认证、权限认证、单点登录、OAuth2.0、分布式Session会话、微服务网关鉴权 等一系列权限相关问题。// 会话登录,参数填登录人的账号id StpUtil . login(10001);就仅仅这一行代码即可搞定,无需实现任何接口,无需创建任何配置文件,只需要这一句静态代码的调用,便可以完成会话登录认证。原创 2023-07-06 15:24:36 · 2273 阅读 · 0 评论 -
持续集成工具Jenkins安装和部署
目前新版本的Jenkins对JDK的要求基本上都在JDK11以上,所以我这边将我服务器的JDK版本升级成为JDK11。将 git 加入环境变量中,修改 /etc/profile 文件,在 profile 文件末尾追加配置内容。如果修改以后,不行的话,就不能用自己安装的JDK,采用如下方式安装JDK。如果之前有安装,想升级版本或者重新安装,就得先卸载。官网可能需要注册账号,这里我为大家提供了下载链接。如果报如下错误,就是jdk安装不对或者配置不对。如果报错如下,可以执行如下命令。再重新启动,执行如下命令。原创 2023-07-02 15:03:03 · 759 阅读 · 0 评论 -
接口文档这几点我们一定要注意
我们在做开发的时候,经常需要输出接口文档,我们的接口文档,如果输出的有问题,首先给别人的感觉就是觉得你不专业,另外好的接口文档,给了他人以后,就完全可以按照你接口文档去做对接,而不是反复地再去问你,这样浪费了你的时间,也浪费人家时间。所以好的接口文档输出至关重要,但是怎么才算好的接口文档,我们在设计接口文档的时候都应该注意哪些点?!原创 2023-06-25 17:27:27 · 545 阅读 · 0 评论 -
网络编程的无冕之王-Netty入门和核心组件介绍
Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty框架是基于Java原生NIO技术的进一步封装,对Java-NIO技术做了进一步增强,充分结合了Reactor线程模型,将Netty变为了一个基于异步事件驱动的网络框架。Netty至今共发布了五个大版本,目前最常用的并非是最新的5.x系列,而是4.x系列的版本,原因是Netty本身就是基于Java-NIO封装的,而JDK本身又很稳定,再加上5.x版本并未有太大的性能差异,因此4.x系列才是主流。原创 2023-06-25 06:09:04 · 444 阅读 · 0 评论 -
提高生产力,Java的这10个Lambda表达式必须掌握
今天为大家介绍的非常具有实操意义,Java的Lambda表达式自从引进以来,给Java的书写的效率上得到了极大的提升,可以简化代码、提高生产力。这篇文章将介绍10个我们必须掌握的Lambda表达式,这些表达式都是我根据实际使用情况,涵盖了在实际编程中的常见场景,比如列表操作、函数组合、条件筛选等。通过对这些的学习,你将更加深入地理解函数式编程的思想,能够更加高效地编写代码。原创 2023-06-21 19:36:11 · 314 阅读 · 0 评论 -
我们如何实现业务操作日志功能?
我们经常会有这样的需求,需要对关键的业务功能做操作日志记录,也就是用户在指定的时间操作了哪个功能,操作前后的数据记录,必要的时候可以一键回退,今天我就为大家实现这个的功能,让大家可以直接拿来用。首先我们得要分析具体要实现这个功能,都需要记录哪些信息,然后怎么要去实现这个功能?具体功能点:我们首先要想到,要实现这个功能,最好的办法就是需要和业务逻辑进行解耦,因为它是一种业务辅助功能,同时是对所有业务的一种横向操作,那我们使用什么技术,是不是就呼之欲出了?最容易想到的就是AOP切面+自定义注解。1、首先定义操原创 2023-06-20 21:46:53 · 2493 阅读 · 0 评论 -
Spring事件机制让你的代码更优雅
*** @Description: 创建事件} }这里就定义我们监听器需要的业务参数,我们需要监听器监听哪些参数的变化,我们就在这里定义哪些参数。原创 2023-06-24 22:27:03 · 420 阅读 · 0 评论 -
nacos集成springcloud实现配置中心功能
开发中,有时候会出现多个模块可能会有很多共用的配置,比如数据库连接信息,Redis 连接信息,RabbitMQ 连接信息,监控配置等等。那么此时,我们就希望可以加载多个配置,多个项目共享同一个配置之类等功能,Nacos Config 也确实支持。注意:这里的Data ID后面是加.yaml后缀的,且不需要指定file-extension。有两种配置方式,一种是官方自动构建dataId ,另一种是指定dataId。我添加了两个配置列表,一个项目的私有配置,一个是公共配置(多项目共享)。Nacos在配置路径。原创 2023-06-20 19:30:14 · 508 阅读 · 0 评论 -
链路追踪SkyWalking整合项目以及数据持久化
因为Skywalking收集到的信息一般存储到ES中,然后在ES中用来查看,所以我这边采用ES方式为大家说一下部署方式。需要添加mysql数据驱动包,因为在lib目录下是没有mysql数据驱动包的,所以修改完配置启动是会报错,启动失败的。:skywalking的服务端,收集分析应用调用的链路信息,并提供接口给 安装skywalking-UI。如果要在本地集成到IDEA,就下载到本地,如果需要在Linux完成项目集成,就下载到Linux环境下。11800:收集应用调用的端口,12800:提供服务的端口,原创 2023-06-20 19:29:30 · 1605 阅读 · 0 评论 -
Nacos的安装和部署
接下来的时间,我会将Nacos的安装部署,以及在微服务中将其作为配置中心,注册中心,以及它的高级应用会一一为大家分享,今天为大家分享的是Nacos的安装和部署,以windows为例。原创 2023-06-20 19:26:00 · 3831 阅读 · 0 评论 -
让我们彻底了解Maven(二)--- Maven私服的搭建
Name:仓库的名字;Type:仓库的类型;Format:仓库的格式;Status:仓库的状态;URL:仓库的网络地址。仓库总共分为四种类型,如下:注意的是,本地的Maven需要配置私服地址,当项目需要的依赖,在本地仓库没有,就会去到相应的宿主/远程仓库拉取;如果宿主仓库也没有,就会根据配置的代理仓库地址,去到中央仓库拉取。原创 2023-06-08 05:54:00 · 2868 阅读 · 0 评论 -
让我们彻底了解Maven(一)--- 基础和进阶
Maven大家都很熟悉,但是我们很多人,对它其实都是似乎很熟,但是又好像不熟悉的感觉,包括我,今天咱们就一起来彻底了解Maven的所有功能,我们从入门,到原理剖析,再到实践操作,最后是私服的搭建以及配置,整体并彻底了解一下Maven。原创 2023-06-07 05:34:13 · 438 阅读 · 0 评论 -
利用POI对Word的一些操作(替换段落内容,替换表格里面的变量,页脚插入图片,页眉的关键字替换,多个Word合并)
替换段落内容,替换表格里面的变量,页脚插入图片,页眉的关键字替换,多个Word合并。原创 2022-09-21 15:17:54 · 1578 阅读 · 0 评论 -
elasticsearch学习(2)- elasticsearch的高级操作
1. 批量(Bulk)操作Bulk批量操作是将文档的增删改查一系列操作,通过一次请求全部做完,减少网络传输次数。语法:POST /_bulk{ "action":{"metadata"} {"data"}}举例:GET person/_search# 批量操作# 1 删除4号记录# 2 修改xMqiWnwBLL2snwrIBtEv号记录,name改成张三二号# 3 添加3号记录POST person/_bulk{"delete":{ "_index":"person","_原创 2021-10-08 15:51:02 · 215 阅读 · 0 评论 -
elasticsearch学习(1)- elasticsearch的基本使用
1. elasticsearch 命令的基本格式RESTful接口URL的格式:http://localhost:9200/<index>/<type>/[<id>]其中index、type是必须提供的。id是可选的,不提供es会自动生成。index、type将信息进行分层,利于管理。index可以理解为数据库;type理解为数据表;id相当于数据库表中记录的主键,是唯一的。注:在url网址后面加"?pretty",会让返回结果以工整的方式展示出来,适用所有操作原创 2021-09-14 10:52:06 · 266 阅读 · 0 评论 -
YApi的在IDEA中的使用
1 IDEA中插件下载2 misc.xml的配置 <component name="yapi"> <option name="projectToken">XXXXXXXXXX</option> <option name="projectId">47</option> <option name="yapiUrl">http://XXXX:3000</option> <option原创 2021-05-06 14:26:34 · 1724 阅读 · 0 评论 -
SpringCloud之Config配置中心搭建和客户端配置文件实时刷新
一、配置中心作用spring cloud config就是一个配置中心。其采用集中式管理每个微服务的配置信息,并使用GIT等版本仓库统一存储配置内容,实现版本化管理控制。微服务与配置中心使用rest方式交互来实现可扩展的配置服务。spring cloud config配置中心解决了微服务系统的配置中心化、配置版本控制、平台独立、语言独立等问题,其特性如下:提供服务端和客户端支持(spring cloud config server和spring cloud config client);集中式管理原创 2021-04-27 17:30:16 · 338 阅读 · 0 评论 -
分布式认证方案
1 选型分析1.1 基于session的认证方式在分布式的环境下,基于session的认证会出现一个问题,每个应用服务都需要在session中存储用户身份信息,通过负载均衡将本地的请求分配到另一个应用服务需要将session信息带过去,否则会重新认证。这个时候,通常的做法有下面几种:Session复制:多台应用服务器之间同步session,使session保持一致,对外透明。Session黏贴:当用户访问集群中某台服务器后,强制指定后续所有请求均落到此机器上。Session集中存储:将Sessi原创 2020-08-24 17:55:57 · 811 阅读 · 0 评论