- 博客(89)
- 资源 (10)
- 收藏
- 关注

原创 如何设计一个高效、灵活的规则引擎
例如,RuleRegistry可以通过单例模式来保证唯一性,ActionRegistry可以采用工厂模式来生成动作对象,Rule Executor可以通过责任链模式实现不同优先级规则执行,ConditionRegistry可以使策略模式来动态加载条件实现等等。由此,这个规则引擎能够帮助用户通过简单规则的组合来完成更复杂的业务逻辑,将规则集中管理,可配置化,更加的灵活和高效,并且容易扩展、易于维护和管理。此部分是规则引擎的规则逻辑库,包含条件和动作的定义,以及规则的版本管理。
2023-06-12 16:49:22
1556

原创 如何记录Java对象的修改历史和实现数据修改日志
在大多数业务场景中,修改历史是非常重要的信息。例如,当我们对某个对象进行数据修改时,可能需要记录修改之前和修改之后的值,以便于我们对修改进行审核和追溯,以及诊断和解决潜在的问题。在 Java 开发中,我们可以使用观察者模式来实现记录Java对象的修改历史和实现数据修改日志。本文将介绍如何实现这一功能。
2023-05-31 14:07:35
10339
7

原创 自定义持久层框架设计思路和源代码
使用端(项目):引入自定义持久层框架的jar包提供两部分配置信息:数据库配置信息、SQL配置信息、SQL语句、参数类型、返回值类型。使用配置文件来提供这两个部分配置信息: 1、sqlMapConfig.xml:存放数据库配置信息,存放mapper.xml的全路径; 2、mapper.xml:存放SQL配置信息;自定义持久框架本身(工程):本质就是对JDBC代码进行封装1、加载配置文件:根据配置文件的路径加载配置文件成字节输入流,存储在内存中; 创...
2021-02-05 17:47:20
230
2
原创 Spring 中常用的手动装载 bean 方法
在 Spring 的 bean 转载条件中,虽然 Spring 给我们提供了非常好用便捷的 Condition 相关注解,但是很多时候 Condition 相关注解并不满足我们的需求,我需要更复杂的条件手动控制是否装置 bean。这个时候我们就可以实现 Spring 为我们提供的几个接口来实现手动 bean 的注入。
2024-05-21 14:02:22
768
原创 生产 Dockerfile 构建 nodejs 前端镜像打包内存溢出
错误:FATAL ERROR: Ineffective mark-compacts near heap limit Allocation failed - JavaScript heap out of memory。v8.0 开始,就可以使用NODE_OPTIONS 环境变量对 node 内存做全局设置。该错误是在进行生产环境通过 Dockerfile 构建前端项目镜像时抛出的。
2024-05-15 14:48:57
403
1
原创 通过Docker Compose的方式在Docker中安装Maven环境
目前可以说 Docker 已经是在开发部署中成为主流,所以我们很多环境和工具都会安装在 Docker 容器中,Maven 环境是 SpringBoot 项目中最常用的依赖管理工具。如果您希望在宿主机中使用容器中的 Maven 环境,您可以在宿主机上执行 Maven 命令时使用 Docker 执行命令。命令,就相当于在 Maven 容器中执行 Maven 命令,从而可以在宿主机中使用容器中的 Maven 环境了。文件,它只需启动一个 Maven 容器,并暴露 Maven 的一些基本配置。
2024-02-20 09:34:40
1733
转载 深入了解 docker-compose.yml 各项配置用途
Compose 是用于定义和运行多容器 Docker 应用程序的工具。通过 Compose,您可以使用 YML 文件来配置应用程序需要的所有服务。然后,使用一个命令,就可以从 YML 文件配置中创建并启动所有服务。docker compose文件是一个yaml格式的文件,所以注意行首的缩进很严格,docker compose文件的格式很不同版本,版本不同,语法和格式有所不同。
2024-02-07 11:05:02
523
1
原创 Spring SpEL 表达式语言
Spring也有自己的EL,叫Spring Expression Language,简称SpEl。其可以在程序中单独使用,也可以在Spring应用中进行bean定义时使用。其核心是org.springframework.expression.Expression接口,Spring使用该接口来表示EL中的表达式。通过Expression接口的系列getValue()方法我们可以获取对应Expression在特定EvaluationContext下的值,也可以通过其系列setValue()方法来设值。
2023-09-21 09:16:11
1435
原创 Ngrok 的绝佳替代品,内网穿透神器 Serveo
生成的二级域名进行连接的。如果你想使用自己的域名也是可以的,方法非常简单。只需要在你的域名所在 DNS 中添加一条 A 记录和一条 TXT 记录就可实现。上面的方法虽然可以解决超时的问题,但进程始终是在前台运行的。服务其实方法也很简单,同样只需设置公网的转发端口和本地端口就可以了。如果你不想使用随机域名,想指定一个固定的二级域名也是可以的。DNS 解析记录增加好后,你就可以使用自定义域名进行连接了。要实现这样的需求也很简单,只需要使用下面的命令。间接访问到本地计算机 8080 端口上的服务了。
2023-07-26 11:07:10
3894
1
原创 后端程序员学习前端开发之第一步环境搭建
后端程序员学习前端开发之第一步环境搭建Node.js 是一个开源的、跨平台的 JavaScript 运行时环境。
2023-03-01 15:53:05
456
原创 Java Stream 流常用方法 lambda 表达式实现交集、并集、差集、去重复并集等
一般的javaList 交、并集采用简单的 removeAll retainAll 等操作,不过这也破坏了原始的javaList对象,采用java8 lambda表达式流操作则可以不影响原始list对象而得到两个javaList对象的 交、并、差集。
2022-09-26 16:32:11
4567
原创 IDEA 远程部署项目 BUG 调试
启动完成后,在 IDEA 中选择刚刚你取的远程调试项目名 Debug 启动就可以了(这里需要注意,IDEA 打开的项目必须和你调试的是同一个项目,还要你所配置的调试端口必须是开放的)。OK 启动 docker 镜像, 本地运行 Remote Jvm Debug 配置就可以了。1、修改 DockerFile 文件。2、配置Docker 镜像启动参数。2、重启需要调试的远程项目。1、配置远程调试项目参数。............
2022-08-04 10:14:26
920
原创 MySQL8.x后默认root用户无法远程访问
MySQL8.x后版本的允许远程访问不同,其需要创建一个用户并授权,允许外部访问,root用户不能直接远程访问。
2022-07-15 16:50:37
1549
原创 CentOS 7 、8下安装 Docker 以及安装可视化工具
在 Centos7 下通过 yum 方式安装 Docker3、安装需要的软件包4,设置yum源(中央仓库、阿里仓库中选择一个)5、安装 Docker(查看版本信息:yum list docker-ce --showduplicates | sort -r)6、启动 Docker7、设置开机自启8、如果觉得默认镜像下载慢,可以配置镜像加速编辑这个文件新增配置重启 Docker 服务番外篇通过 yum 的方式安装 Docke..
2022-07-14 17:07:33
1678
原创 Spring Boot + Flowable 工作流引擎
想必大家再看这篇文章的时候已经对目前主流的工作流引擎有所了解了。目前主流的工作流开源框架也就 Activiti/Camunda/Flowable 这几个了,在我对这三大工作流引擎简单使用了解后,最后选择了 Flowable 来写这篇文章。(有可能是我个人比较喜欢吧!在之前也有考虑过 Camunda,毕竟它更加的轻巧灵活,他的初衷就是为开发人员设计的“小工具”,但我个人的感觉而言,Camunda 从代码上看并没有 Activiti 和 Flowable 好,而且他的社区是最不活跃的一个,所以不太建议使用。当然
2022-06-23 14:46:15
9170
1
原创 Windows 环境下安装MySQL出现的vcruntime140.dll缺失问题解决
Windows 环境下安装MySQL出现的vcruntime140.dll缺失问题解决
2022-06-10 13:09:32
521
原创 Java 使用 iText5 API 根据需求导出 PDF
iText 目前有两套版本,分别是 iText5 和 iText7。iText5 应该是网上用的比较多的一个版本。iText5 因为是很多开发者参与贡献代码,因此在一些规范和设计上存在不合理的地方。iText7 是后来官方针对 iText5 的重构,两个版本差别还是挺大的。不过在实际使用中,一般用到的都比较简单的 API,所以不用特别拘泥于使用哪个版本。相关依赖<dependency> <groupId>com.itextpdf</groupId> <
2022-05-26 10:14:36
1109
原创 ArcGIS API for JavaScript 图层服务查询where条件构造器
/** * SQL where 条件构建器 */export default class CreateSqlWhere { /** * where 条件 sql */ whereSql: string; getSql() { return this.whereSql; } eq(field?: string, value?: string) { this.defConnect(); thi.
2022-03-03 16:18:40
1067
原创 GIS中的数据(空间数据)
数据涵义与数据类型空间数据可分为三种类型:空间特征数据(定位数据)、时间属性数据(尺度数据)和专题属性数据(非定位数据)。对于绝大部分地理信息系统的应用来说,时间和专题属性数据结合在一起共同作为属性特征数据,而空间特征数据和属性特征数据统称为空间数据(或地理数据)。空间特征数据空间特征数据记录的是空间实体的位置、拓扑关系和几何特征,这是地理信息系统区别于其他数据库管理系统的标志。空间特征指空间物体的位置、形状和大小等几何特征,以及与相邻物体的拓扑关系。位置和拓扑特征是地理或空间信息系统.
2022-02-11 13:54:54
8665
原创 解决Windows10/11家庭版无Hyper-v虚拟机问题
创建文件Hyper.cmd并且添加以下脚本用管理员方式运行pushd "%~dp0"dir /b %SystemRoot%\servicing\Packages\*Hyper-V*.mum >hyper-v.txtfor /f %%i in ('findstr /i . hyper-v.txt 2^>nul') do dism /online /norestart /add-package:"%SystemRoot%\servicing\Packages\%%i"del hyper-
2021-12-17 09:05:33
1282
原创 基于HuTool工具实现Excel复杂表头生成、单元格合并绘制对角线(计算N叉树的最大深度和最大宽度)
基于HuTool工具实现Excel复杂表头生成、单元格合并绘制对角线(计算N叉树的最大深度和最大宽度)
2021-12-14 09:06:23
7197
3
原创 GeoTools:WKT、GeoJson、Feature、FeatureCollection相互转换
import cn.hutool.core.util.ArrayUtil;import cn.hutool.json.JSONArray;import cn.hutool.json.JSONObject;import cn.hutool.json.JSONUtil;import org.geotools.data.DataUtilities;import org.geotools.data.collection.ListFeatureCollection;import org.geotool..
2021-11-03 15:48:08
4591
4
原创 ESLint 中 .eslintrc.js 配置介绍
rules: { // 配置定义在插件中的一个规则的时候,你必须使用 插件名/规则ID 的形式 vue/attribute-hyphenation eqeqeq: 0, // 不要求使用 === 和 !== camelcase: 0, // 不强制使用骆驼拼写法命名约定 indent: 0, // 不强制使用一致的缩进 'no-console': 0, // 允许 console 'no-control-regex': 0, // 禁止在正则表达式中使用控制.
2021-09-08 10:56:39
1864
原创 TypeScript 中的 package.json 和 tsconfig.json 配置介绍
3、main:项目发布时,默认会包括 package.json,license,README 和main 字段里指定的文件,因为 main 字段里指定的是项目的入口文件,在 browser 和 Node 环境中都可以使用。只要遇到 .mjs 文件,就认为它是 ES 模块。1、files:项目在进行npm发布时,可以通过files指定需要跟随一起发布的内容来控制npm包的大小,避免安装时间太长,般情况下,files 里会指定构建出来的产物以及类型文件,而 src,test 等目录下的文件不需要跟随发布。
2021-09-03 10:20:07
7018
1
原创 Vue 中常用函数变量介绍
对于很少写前端的朋友来说,偶尔需要写一些前端代码的时候,查资料又费时间,开别人写的代码又没注释,这时就不知所措很难下手。以下图片内容就是在前端开发过程中经常使用到的变量属性:1、name:非必选项,我们可以理解为给该文件或页面签个名,在其它文件或页面需要用到的时候直接可以通过该 name 引入,看起来好像没啥用处,但是实际上这里用处还挺多的(具体作用自行百度一下)。2、props:(或 properties )是我们将数据从父组件向下传递到其子组件的方式,也就是说有继承关系的页面是可以直接.
2021-08-25 16:24:38
1312
原创 oracle 账号共享
账号来源于网络分享:一、账号:908344069@qq.com密码:Java2019二、账号:2028056560@qq.com密码:Oracle1234更多共享账号BugMeNot
2021-08-24 15:56:39
8812
17
原创 解决 vue 项目 npm 运行时报错“因为在此系统上禁止运行脚本”
错误信息:解决办法:以管理员身份打开 Windows PowerSherll使用命令“set-ExecutionPolicy RemoteSigned”,将计算机上的执行策略更改为 RemoteSigned 就搞定了
2021-08-23 16:29:43
545
原创 VS Code 高效开发插件
一、文件图标 vscode-icons二、暗色主题 One Dark Pro三、代码美化 Beautify四、代码检查工具 ESLint五、调试工具 Debugger for Chrome六、万能语言运行环境 Code Runner七、快速注释 Document This八、CSS 类名只能提升 IntelliSense for CSS class names in HTML九、代码拼写检查 Code Speell Checker十、备忘插件 TODO Highlight
2021-08-23 10:00:12
165
原创 commons-math之常用科学计算(百分位、总体方差、中位数、变异系数、偏度系数、峰度系数)
import cn.hutool.core.util.NumberUtil;import org.apache.commons.math3.stat.StatUtils;import org.apache.commons.math3.stat.descriptive.moment.Kurtosis;import org.apache.commons.math3.stat.descriptive.moment.Skewness;import org.apache.commons.math3.sta..
2021-08-11 13:55:45
6038
原创 数据库自定义聚合函数(求和、标准差、平均值、几何平均值、几何标准差、偏度系数、峰度系数)
/* * stats_agg 是 PostgreSQL 的聚合函数工作方式类似于先前存在的聚集体(min(x),max(),avg()等),但计算一 * 次,并返回他们都多的统计数据。返回的统计数据是count,min,max,mean,variance,skewness,和 kurtosis,但其他人可以加入。 * * 我需要一个返回偏度和峰度的聚合,而不是为每个需要多次传递来计算平均值等的单独函数,我认为最好有一个聚合在一次传递中返回所有内容。 * * 感谢 John D. Cook .
2021-08-11 13:47:13
2222
原创 Java IP 地址工具(获取客户端IP)
import org.apache.commons.lang3.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import javax.servlet.http.HttpServletRequest;/** * <p> * IP 地址工具 * </p> * * @Author REID * @Blog https://blog.youkuaiyun.com/qq_39035773..
2021-07-28 15:48:40
221
原创 Solr搜索引擎详细教程及Java API使用(SolrJ-8.11)
一、Solr安装在 Unix 兼容或 Windows 服务器上安装 Solr 通常需要简单地提取(或解压)下载包。请务必在 Solr 安装前准备好一下必备环境(如:jdk )。番外篇:很多人在安装 Solr 会纠结 Tomcat 和 Jetty 怎么选,都说 Solr 内置的 Jetty 不稳定有问题;1、下载 Solr 安装包。Solr 可从 Solr 网站获得:最新版 Solr 下载。有三个独立的包: solr-8.11.0.tgz适用于 Linux/Unix/O...
2021-07-20 15:37:42
6386
1
原创 springboot使用proguard代码混淆配置
pom.xml文件完整配置<build> <plugins> <!--混淆代码插件--> <plugin> <groupId>com.github.wvengen</groupId> <artifactId>proguard-maven-plugin</artifactId> <executions> <execution> <ph
2021-07-20 10:29:35
2162
原创 Collection工具(MapList指定字段排序排名、Map通过K或V排序、获取Map中第一个非空数据值)
MapTools是针对Map的一一列工具方法的封装,包括getXXX的快捷值转换方法。MapList指定字段排序排名、Map通过K或V排序、获取Map中第一个非空数据值。
2021-05-11 13:36:45
1357
原创 Java通过正则表达式拆分复杂字符串
将字符串通过“、”拆分成数组;在要拆分的字符串中“二苯并[a、h]蒽”是个整体;public static void main(String[] args) { String content = "砷、苯、苯并[a]芘、二苯并[a、h]蒽、五氯苯酚"; List<String> resultFindAll = ReUtil.findAll("([^、\\[]+(\\[[^\\d]+?\\]){0,1}([^、])?)", content, 0, new ArrayLis
2021-04-25 09:52:51
873
自定义持久层框架之MyBatis.zip
2021-02-05
sqoop-1.4.7.jar
2020-06-29
swftools.zip
2019-08-03
Axure 9 部件库-产品经理必备.zip
2019-08-03
ACR122U操作IC卡源代码
2019-02-26
Java实现斗地主源码
2019-02-16
机器学习,人工智能
2018-07-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人