自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

小大虽差,各任其性,苟当其分,逍遥一也。

  • 博客(917)
  • 收藏
  • 关注

原创 如何从零手写实现数据库连接池 dbcp?

*** 池化的连接池/*** 是否繁忙* @return 状态/*** 设置状态* @param busy 状态/*** 获取真正的连接* @return 连接/*** 设置连接信息* @param connection 连接信息/*** 设置对应的数据源* @param dataSource 数据源/*** 获取对应的数据源信息* @return 数据源这里我们直接继承了 Connection 接口,实现时全部对 Connection 做一个代理。

2024-03-13 11:09:14 2431

原创 sensitive-word 敏感词开源工具使用入门

有时候我们希望将敏感词的加载设计成动态的,比如控台修改,然后可以实时生效。v0.0.13 支持了这种特性。简化伪代码如下,数据的源头为数据库。MyDdWordAllow 和 MyDdWordDeny 是基于数据库为源头的自定义实现类。@Autowired@Autowired/*** 初始化引导类* @return 初始化引导类*/@Bean// 各种其他配置.init();敏感词库的初始化较为耗时,建议程序启动时做一次 init 初始化。

2023-12-18 15:37:03 3344

原创 面试官:你们项目中是怎么做防重复提交的?

面试经历记得刚毕业的时候,有一次去参加面试。上来面试官问我:“你们项目中是怎么做防重复提交的?”一开始听到这个问题是蒙圈的,支支吾吾半天没回答出来。然后面试官直接来一道算法题,喜闻乐见地面试失败。多年过去,虽然很少接触到控台应用,但是近期对于防止重复提交却有了一点自己的心得。在这里分享给大家,希望你工作或者面试中遇到类似的问题时,对你有所帮助。本文将从以下几个方面展开:(1)重复提交产生的原因(2)什么是幂等性(3)针对重复提交,前后端的解决方案(4)如果实现一个防重复提交工具产生原

2020-08-05 22:09:23 5121

原创 java 导出 excel 最佳实践,java 大文件 excel 避免OOM(内存溢出) excel 工具框架

产品需求产品经理需要导出一个页面的所有的信息到 EXCEL 文件。需求分析对于 excel 导出,是一个很常见的需求。最常见的解决方案就是使用 poi 直接同步导出一个 excel 文件。客户体验 & 服务性能客户体验如果导出的文件比较大,比如几十万条数据,同步导出页面就会卡主,用户无法进行其他操作。服务性能导出的时候,任务比较耗时就会阻塞主线程。如果导出的服务...

2018-11-26 21:52:07 30175

原创 java retry(重试) spring retry, guava retrying 详解

系列说明java retry 的一步步实现机制。 java-retry 源码地址情景导入简单的需求产品经理:实现一个按条件,查询用户信息的服务。小明:好的。没问题。代码UserService.javapublic interface UserService { /** * 根据条件查询用户信息 * @par...

2018-08-08 18:01:54 17253 2

原创 linux 基础知识 什么是僵尸进程?有什么影响?如何解决?

在Linux系统中,要查找并结束僵尸进程,你需要找到僵尸进程的父进程,并结束它。僵尸进程本身并不占用CPU和其他资源,但它的进程描述符(PCB)仍然保留在系统中,这会占用系统资源并可能导致系统性能问题,尤其是在系统资源有限的情况下。在Linux系统中,僵尸进程(Zombie Process)是一种特殊的进程状态,它指的是一个已经完成执行的进程,其父进程尚未通过。如果系统中出现大量僵尸进程,可能需要检查系统上的程序是否存在问题,或者是否存在某些服务或进程管理不当的情况。必须通过上述方法间接地清理它们。

2024-09-20 11:52:18 1308

原创 敏感词 v0.21.0 白名单支持单个编辑,修正白名单包含黑名单时的问题

使用场景:在初始化之后,我们希望针对单个词的新增/删除,而不是完全重新初始化。这个特性就是为此准备的。和黑名单的单个编辑类似,可以避免重复初始化的问题。新增白名单,支持单个词/集合。删除白名单,支持单个词/集合。支持版本:v0.21.0。

2024-09-20 11:49:26 375

原创 sensitive-word 敏感词 v0.20.0 数字全部匹配,而不是部分匹配

有时候我们可能希望对匹配的敏感词进一步限制,比如虽然我们定义了【av】作为敏感词,但是不希望【have】被匹配。传统的敏感词都是直接部分匹配的,但是这在很多场景不符合。所以可以将这部分条件判断放开,让用户自己定义。就可以自定义实现 wordResultCondition 接口,实现自己的策略。当然也可以根据自己的需要,自定义实现更加复杂的策略。会导致匹配 69,但这并不是我们预期的场景。我们可以指定为英文数字必须全词匹配,主要是。则要求英文必须全词匹配。支持版本:v0.13.0。

2024-09-19 09:58:13 744

原创 敏感词 v0.19.0 新特性之敏感词单个编辑,不必重复初始化

使用场景:在初始化之后,我们希望针对单个词的新增/删除,而不是完全重新初始化。这个特性就是为此准备的。[功能]建议增加敏感词的单个增删改,避免重复初始化,提升效率。单个敏感词的调整可以大幅度提升性能,降低使用成本。新增敏感词,支持单个词/集合。删除敏感词,支持单个词/集合。支持版本:v0.19.0。

2024-09-19 09:36:10 463

原创 cross-plateform 跨平台应用程序-10-naitvescript 介绍

NativeScript 是一个开源的跨平台移动应用开发框架,它允许开发者使用 JavaScript 或 TypeScript 以及 XML 和 CSS 来构建原生移动应用。与基于 WebView 的框架(如 Apache Cordova 或 Ionic)不同,NativeScript 直接渲染 UI 组件到原生平台,提供了更好的性能和更接近原生应用的用户体验。原生 UI 组件。

2024-09-12 13:30:59 1158

原创 cross-plateform 跨平台应用程序-09-phonegap/Apache Cordova 介绍

PhoneGap(现在称为 Apache Cordova)是一个开源的移动开发框架,它允许开发者使用 HTML5、CSS3 和 JavaScript 等 Web 技术来构建移动应用。这些应用可以被打包为可以在各种移动操作系统上运行的原生应用,如 iOS、Android、Windows Phone 等。跨平台开发:开发者可以编写一次代码,然后将其部署到多个平台上,无需为每个平台单独编写代码。访问原生设备功能。

2024-09-12 11:23:09 625

原创 cross-plateform 跨平台应用程序-08-Ionic 介绍

Ionic 是一个强大的开源前端框架,用于开发高性能、高质量的跨平台应用程序。它是基于 Apache Cordova(现称为 PhoneGap)和 Angular(之前是 AngularJS)构建的,但随着时间的推移,Ionic 已经扩展了对 Vue.js 和 React 的支持。

2024-09-11 06:49:05 1056

原创 cross-plateform 跨平台应用程序-07-Taro 介绍

Taro 是一个由京东凹凸实验室开发的多端统一开发框架,它允许开发者使用 React 的开发方式来编写一次代码,然后将其编译成可以运行在不同端上的应用。这些端包括微信/支付宝/百度/字节跳动小程序、H5、React Native 等。Taro 的设计目标是提高开发效率,降低维护成本,同时保持一致的用户体验。使用 React 开发:Taro 基于 React,允许开发者使用 React 的编程模型来构建用户界面。多端运行:开发者编写的 Taro 应用可以编译为多个平台的目标代码,实现跨平台运行。

2024-09-11 06:47:33 1406

原创 cross-plateform 跨平台应用程序-06-uni-app 介绍

uni-app 是一个使用 Vue.js 开发所有前端应用的框架,开发者编写一次代码,可发布到 iOS、Android、Web(响应式)、以及各种小程序(微信/支付宝/百度/头条/飞书/QQ/快手/京东/美团/钉钉/淘宝)、快应用等多个平台。使用 Vue.js 开发:uni-app 基于 Vue.js,这意味着如果你已经熟悉 Vue.js,那么你将能够轻松上手 uni-app 开发。多端适配:支持编译到多个平台,包括但不限于 iOS、Android、Web、各种小程序和快应用。性能优异。

2024-09-10 08:39:44 816

原创 cross-plateform 跨平台应用程序-05-Flutter 介绍

Flutter 是由 Google 开发的一个开源移动应用开发框架,它允许开发者使用一套代码库来构建跨平台的移动、Web、桌面和嵌入式设备应用程序。跨平台支持:Flutter 允许开发者用 Dart 语言编写代码,然后编译为原生 ARM 代码,支持 iOS、Android、Windows、macOS 和 Linux 平台。高性能:Flutter 使用自己的高性能渲染引擎,不依赖于平台的原生控件,这意味着它可以提供流畅的 60fps 的动画和过渡效果。丰富的组件库。

2024-09-10 08:38:31 729

原创 cross-plateform 跨平台应用程序-04-React Native 介绍

React Native 是一个流行的开源框架,由 Facebook 开发,用于构建原生移动应用程序。它允许开发者使用 JavaScript 和 React 来开发 iOS 和 Android 应用。跨平台开发:React Native 允许开发者编写一次代码,然后将其部署到多个平台(iOS 和 Android),这大大减少了开发时间和成本。原生组件:React Native 使用原生平台的组件,这意味着应用程序能够提供与原生应用相同的性能和用户体验。热重载。

2024-09-09 09:16:14 1860

原创 cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?

尤为突出,它们都有强大的企业支持、活跃的社区和不断增长的生态系统。它们都支持最新的开发实践和技术,如热重载、丰富的组件库和现代的编程语言。当然,最终的选择还应考虑你的具体需求、团队的技术栈、项目类型和目标用户群体。总的来说,React Native 和 Flutter 都能构建高性能的移动应用,但它们的性能也受到开发者编码实践和优化工作的影响。:Flutter 使用自己的渲染引擎,提供了高性能的图形和动画,这对于现代应用至关重要。整体而言设计理念+生态才是最重要的,其他的体积之类的可以优化改造。

2024-09-09 08:58:44 1034

原创 cross-plateform 跨平台应用程序-02-有哪些主流技术栈?

跨平台开发的技术栈多种多样,选择适合的技术栈主要取决于应用的类型、开发团队的技术背景和项目的需求。移动应用:React Native 和 Flutter 是两大主流选择,适合开发跨平台移动应用。桌面应用:Electron 和 Qt 是常用的桌面跨平台开发框架。Web应用:PWA 和 Ionic 可以帮助快速构建跨平台 Web 和移动应用。游戏开发:Unity 和 Unreal Engine 是跨平台游戏开发的首选。每个技术栈都有各自的优缺点,在实际项目中需要根据具体需求做出平衡选择。

2024-09-08 10:21:53 1971

原创 cross-plateform 跨平台应用程序-01-概览

跨平台应用程序(Cross-Platform Applications)是指能够在多个操作系统或设备上运行的软件应用程序,而无需针对每个操作系统或设备单独开发。通过这种方式,开发者能够减少工作量并加快发布速度,同时覆盖更多的用户群体。跨平台应用程序通常通过某些框架或技术工具来实现,它们能够将一个代码库编译或转换成不同平台上的可执行程序。跨平台应用程序通过共享代码和利用工具框架,解决了多平台开发的重复劳动和时间成本问题。

2024-09-08 10:19:20 1409

原创 java 如何判断一天是否为工作日?节假日?

首先查询百度万年历节接口(其中包含全年节假日数据),得到json数据 (全年节假日信息在json的holiday中,query=2020,其实默认就是202001,其他月份的万年历请求如query=202004):不同的公司可能有不同的工作日安排,例如某些公司可能有弹性工作制度,允许员工在某些日子远程工作或选择休息日。例如,在某些地区,可能存在半天工作日或特定的宗教节日。:对于跨国公司,不同国家的节假日和工作日安排可能不同,需要综合考虑。:不同宗教有不同的节日,这些节日可能会影响某些员工的工作日。

2024-08-26 17:44:48 406

原创 前端如何设置定时触发查询?setInterval

方法来设置定时触发一个查询方法。你可以将这个定时器放在 Vue 组件的生命周期钩子。在 Vue.js 中,你可以使用 JavaScript 的。中,这样当组件被挂载到 DOM 上后,定时器就会开始运行。通过这种方式,你可以定期触发一个查询方法,执行相应的操作。

2024-08-22 08:48:36 211

原创 字符串值提取工具-10-java 执行表达式引擎

我们希望通过 java 执行 json-path 解析 json。

2024-08-22 08:46:57 514

原创 字符串值提取工具-09-java 执行 json 解析, json-path

我们希望通过 java 执行 json-path 解析 json。

2024-08-18 20:13:17 309

原创 字符串值提取工具-08-java 执行 xml 解析, xpath

我们希望通过 java 执行 xml-path 解析 xml。

2024-08-18 20:12:08 331

原创 http 请求-04-promise 对象 + async/await 入门介绍

这是一个静态方法,接受一组 Promise 对象作为输入,并返回一个新的 Promise 对象。这个新的 Promise 在所有输入的 Promise 都成功完成时才会成功,如果任何一个输入的 Promise 失败,则立即失败。它返回一个新的 Promise,这个 Promise 将在输入的 Promise 中任何一个首先解决或拒绝时解决或拒绝。总的来说,Promise 提供了一种更加强大、灵活和可读性更强的方式来处理 JavaScript 中的异步操作,极大地改善了开发体验。

2024-08-18 00:11:06 846

原创 http request-03-Ajax 的替代方案 axios.js 入门介绍

提供了更为直观和简洁的 API,使得发起 HTTP 请求(如 GET、POST、PUT、DELETE)变得更容易理解和使用。提供了请求和响应的拦截器功能,允许在请求发送前或收到响应后进行处理。不仅在浏览器中工作良好,在 Node.js 环境中同样表现出色,因此可以在同一个代码库中统一使用。Axios 是一个基于 promise 的 HTTP 库,可以用在浏览器和 node.js 中。可以更好地兼容一些旧版本的浏览器,尤其是在处理跨域请求和响应数据时。也提供了现代浏览器的原生支持,但。

2024-08-18 00:09:16 1147

原创 http request-02-Ajax XHR 的替代方案-fetch 标准

从高层次来看,获取资源是一个相当简单的操作。请求发出,响应返回。然而,这一操作的细节相当复杂,过去通常没有被仔细记录,并且在不同的 API 之间有所不同。许多 API 提供了获取资源的能力,例如 HTML 的<img>和<script>元素,CSS 的cursor和,JavaScript 的和API。Fetch 标准提供了一个统一的架构,使这些功能在各种获取方面(如重定向和 CORS 协议)保持一致。Fetch 标准还定义了fetch()

2024-08-18 00:07:51 877

原创 http 请求-02-Ajax XHR 的替代方案 fetch api 入门介绍

fetch通过更简洁的 API、原生的Promise支持、内置的 JSON 处理、更好的流媒体支持,以及更直观的默认行为,解决了在使用上的诸多不便,适合现代 JavaScript 开发需求。fetch是一个功能强大且现代化的 API,适用于大多数网络请求场景。它的简洁性和与现代异步编程模式的兼容性使其在新项目中非常受欢迎。然而,对于某些高级需求,如进度监听或老旧浏览器支持,可能仍需考虑使用或第三方库。

2024-08-18 00:06:37 1060

原创 http 请求-01-AJAX(Asynchronous JavaScript and XML)入门介绍, ajax 的优缺点

Ajax 是一种在无需重新加载整个网页的情况下,能够更新部分网页的技术。Ajax的全称是Asynchronous JavaScript and XML,即异步JavaScript+XML。它并不是新的编程语言,而是几种原有技术的结合体。它由以下几种技术组合而成,包括:HTML/XHTML——主要的内容表示语言。CSS——为XHTML提供文本格式定义。DOM——对已载入的页面进行动态更新。XML——数据交换格式。XSLT——将XML转换为XHTML(用CSS修饰样式)。

2024-08-18 00:03:54 779

原创 http request-01-XMLHttpRequest XHR 标准

这部分是非规范性的,列出了在或事件名接口触发条件EventreadyState属性值发生变化,但不包括变化到UNSENT。loadstart请求初始化。progress传输数据时。abort请求被中止,例如通过调用abort()方法。error请求失败。load请求成功。timeout请求在指定时间内未完成。loadend请求完成(成功或失败)。构造函数参数form(可选): 表单元素。submitter(可选): 提交表单的元素,通常是一个<button>或<input>。方法。

2024-08-17 15:53:52 1203

原创 http request-01-XMLHttpRequest XHR 简单介绍

遵循这些最佳实践可以帮助你在使用时编写更高效、可靠和易于维护的代码。虽然fetchAPI 提供了更现代的接口,但了解和掌握仍然在许多情况下很重要,尤其是在处理兼容性问题时。

2024-08-17 15:52:38 1285

原创 Janino:轻量级且高效的Java编译器-01-入门介绍

这是关于什么的?查看这个PDF演示文稿以快速开始。(请注意,一些信息已经过时,例如对CODEHAUS的引用,它在2015年的某个时候已经不存在了。

2024-08-16 01:38:59 958

原创 字符串值提取工具-04-java 调用 java? Janino 编译工具

我们希望通过 java 执行 java,如何实现呢?但是感觉这个很麻烦,而且有问题。

2024-08-16 01:37:36 307

原创 字符串值提取工具-03-java 调用 groovy

我们希望通过 java 执行 groovy,如何实现呢?

2024-08-14 11:01:51 535

原创 groovy 编程语言简单介绍

Groovy 代码可以与 Java 代码无缝集成,你可以在 Groovy 中调用 Java 类,反之亦然。: Groovy 提供了强大的模板引擎,如 GSP (Groovy Server Pages) 和 Groovy 的模板引擎,可以用于生成动态内容。Groovy 是一种基于 Java 平台的动态语言,它与 Java 兼容,并提供了一些简化 Java 开发的特性。总的来说,Groovy 是一种功能丰富且易于上手的语言,适合于各种场景,从快速原型开发到企业级应用都有广泛的应用。等,简化了对集合的操作。

2024-08-14 11:01:16 422

原创 字符串值提取工具-02-value-extraction java 调用 js

如果要设计一个平台,常见提取策略都要支持。从零实现起来会比较麻烦。希望实现一个整合常见提取策略的工具,便于在各个场景复用。我们希望参数是变化的,让 js 执行对应的脚本方法。我们希望通过 java 执行 js,如何实现呢?我们经常需要从字符串中提取指定的值。jdk11 开始不再支持。jdk8 开始支持。

2024-08-12 06:00:44 257

原创 字符串值提取工具-01-value-extraction 概览

如果要设计一个平台,常见提取策略都要支持。从零实现起来会比较麻烦。希望实现一个整合常见提取策略的工具,便于在各个场景复用。我们经常需要从字符串中提取指定的值。csv/指定符号分隔==>split。csv/逗号分隔==>split。

2024-08-12 05:59:29 1122

原创 java 表单避免重复提交-02-resubmit 开源项目介绍

可以获取 UserService 对应的代理。其中 ResubmitBs 作为引导类,对应的策略都支持自定义。属性说明默认值cache()缓存实现策略默认为基于 ConcurrentHashMap 实现的基于内存的缓存实现key 实现策略,用于唯一标识一个方法+参数,判断是否为相同的提交md5 策略token 实现策略,用于唯一标识一个用户。从 HttpServletRequest 中的 header 属性中获取上面提到中的策略支持自定义。

2024-08-05 08:52:35 247

原创 java 表单避免重复提交?

只有一个针对锁的获取:acquiretryAcquire传入信息。至于锁的释放,则交给实现者自己实现。首先,我们定义一个注解。/***//*** 缓存实现策略* @return 实现*/Class<?/*** key 生成策略* @return 生成策略*/Class<?/*** 密匙生成策略* @return 生成策略*/Class<?/*** 存活时间* 单位:秒* @return 时间*//*** 启用注解*/

2024-08-05 08:51:26 1376

原创 文件存储服务系统(File Storage Service System)-02-SFTP 协议介绍

SFTP 是基于 SSH 协议的文件传输协议,通过加密的 SSH 连接提供文件传输服务。它不同于传统的 FTP 和 FTPS 协议,不使用独立的传输通道,而是完全依赖于 SSH 通道。

2024-08-03 16:30:35 711

空空如也

空空如也

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

TA关注的人

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