- 博客(88)
- 资源 (18)
- 收藏
- 关注
原创 这款 Python 开源工具让你一键管理微信万人群
微信私域引流神器wxHm开源工具上线,彻底解决群二维码过期难题。这款基于Python+Flask的轻量级系统支持多群组管理、自动轮换最新二维码,并针对微信环境优化防缓存机制。无需数据库,3分钟即可部署,支持手机端操作,适合公众号引流、线下扫码等多种场景。通过固定入口+动态后台的设计,让运营者无需频繁更换海报,实现高效私域流量管理。项目已开源,欢迎开发者试用反馈。
2025-12-31 10:14:49
910
原创 JWT详解和使用(jjwt)
这篇博客没有提到加密方面的细节,是因为我对安全方面不太了解,这方面还有待学习。如果有安全方面需求,可以查阅以下的ref。更多内容。
2025-09-18 09:38:37
665
原创 优雅地在 crontab 中运行脚本
一般来说,像 Node.js、Python 这类解释型的语言,系统上都会存在比较多个版本,利用一些诸如 nvm、venv、poetry、uv 等环境管理器来管理。一般来说部署这些脚本都算是一个比较噩梦的体验(相比可以打包可执行文件的语言来说),因为还要涉及到配环境的问题,另外配定时任务更是另一番折磨。本篇介绍一个技巧,避免在 crontab 中反复使用绝对路径,更优雅地进行部署。解决方案就是写一点 shell 脚本,比在 crontab 里面反复&&要好。
2025-09-18 09:35:56
484
原创 在Kubernetes中部署一个单节点Elasticsearch
这种情况是没有权限写入,用 pvc 没有这个问题,直接挂载 hostpath 就会有权限问题,因为 es 这个容器不是使用 root 运行的进程,而是用的 uid:1000 这个用户来运行的。为了测试使用,我也没有用 pvc 来管理数据,而是选择了 hostpath,那么为了重启也可以正常访问数据,需要将 es 固定在一个节点上。解决方法是:使用 init container 来修复目录权限 ,init container 太适合来做这个事情了。
2025-08-22 14:27:50
991
原创 系统设计目标 3:如何让系统易于扩展?
从架构设计上来说,高可扩展性是一个设计的指标,。你可能会问:在架构设计之初,为什么不预先考虑好使用多少台机器,支持现有的并发呢?这个问题我在一课中提到过,答案。一般来说,基于成本考虑,在业务平稳期,我们会预留 30%~50% 的冗余以应对运营活动或者推广可能带来的峰值流量,但是当有一个突发事件发生时,流量可能瞬间提升到 2~3 倍甚至更高,我们还是以微博为例。鹿晗和关晓彤互圈公布恋情,大家会到两个人的微博下面,或围观,或互动,微博的流量短时间内增长迅速,微博信息流也短暂出现无法刷出新的消息的情况。
2025-08-22 07:34:30
994
原创 系统设计目标 2:系统怎样做到高可用?
本节课,我会继续带你了解高并发系统设计的第二个目标——高可用性。你需要在本节课对提升系统可用性的思路和方法有一个直观的了解,这样,当后续对点讲解这些内容时,你能马上反应过来,你的系统在遇到可用性的问题时,也能参考这些方法进行优化。**高可用性(High Availability,HA)**是你在系统设计时经常会听到的一个名词,。我们在很多开源组件的文档中看到的 HA 方案就是提升组件可用性,让系统免于宕机无法服务的方案。
2025-08-22 07:31:53
1029
原创 系统设计目标 1:如何提升系统性能?
高并发的系统通常是业务逻辑相对复杂的系统,那么在这类系统中出现的性能问题通常也会有多方面的原因。因此,我们在做性能优化的时候要明确目标,比方说,支撑每秒 1 万次请求的吞吐量下响应时间在 10ms,那么我们就需要持续不断地寻找性能瓶颈,制定优化方案,直到达到目标为止。在以上四个原则的指引下,掌握常见性能问题的排查方式和优化手段,就一定能让你在设计高并发系统时更加游刃有余。
2025-08-22 07:31:01
1104
原创 架构分层:我们为什么一定要这么做?
软件架构分层在软件工程中是一种常见的设计方式,它是将整体系统拆分成 N 个层次,每个层次有独立的职责,多个层次协同提供完整的功能。我们在刚刚成为程序员的时候,会被「教育」说系统的设计要是「MVC」(Model-View-Controller)架构。它将整体的系统分成了 Model(模型),View(视图)和 Controller(控制器)三个层次,也就是将用户视图和业务处理隔离开,并且通过控制器连接起来,很好地实现了表现和逻辑的解耦,是一种标准的软件分层架构。
2025-08-22 07:28:56
1106
原创 高并发系统:它的通用设计方法是什么?
以方法调用为例,同步调用代表调用方要阻塞等待被调用方法中的逻辑执行完成。这种方式下,当被调用方法响应时间较长时,会造成调用方长久的阻塞,在高并发下会造成整体系统性能下降甚至发生雪崩。异步调用恰恰相反,调用方不需要等待方法逻辑执行完成就可以返回执行其他的逻辑,在被调用方法执行完毕后再通过回调、事件通知等方式将结果反馈给调用方。异步调用在大规模高并发系统中被大量使用,
2025-08-22 07:27:04
941
原创 静态 HashMap 的静态初始化器
静态 HashMap 的静态初始化器这种初始化的优势在于,该映射是可变的,但仅适用于静态。因此,可以根据需要添加和删除条目。
2025-08-21 14:54:06
438
原创 MyBatis SQL日志格式化工具
MyBatis SQL日志格式化工具 - 在线SQL美化|格式化|参数替换|日志解析工具 | 免费开源 | MyBatis Log Formatter Online
2025-08-07 16:26:42
534
原创 如何在 Java 中反转字符串
如上所示,我们使用了 StringBuilder.reverse()作为映射来反转指定的字符串。此外,我们使用了 mapToObj()来获取从末尾开始的每个字符。然后,我们使用 StringBuilder 构建了反转后的字符串。如我们所见,我们使用了 range()方法来返回一个从 0 到字符串长度的顺序有序的 IntStream。通常,我们可以使用 IntStream.range()方法以更函数式的方式反转某个字符串。如我们所见,我们的方法对于非空字符串、空字符串和 null 字符串都按预期工作。
2025-07-29 14:36:54
582
原创 Java入门 – 创建文件
在本快速教程中,我们将学习如何在 Java 中创建一个新的 File——首先使用 NIO 中的 Files 和 Path 类,然后是 Java 的 File 和 FileOutputStream 类、Google Guava,最后是 Apache Commons IO 库。然而,如果现有文件是一个目录,或者由于任何原因无法创建新文件,我们将收到 FileNotFoundException。请注意,此操作要求文件不存在。请注意,这与之前的示例略有不同:如果文件已经存在,操作不会失败,而是什么也不做。
2025-07-21 09:25:34
775
原创 如何使用 Jackson 处理 YAML
默认情况下,我们的文件将以三个破折号开始。我们还将使用 ObjectMapper 将 Order 写入文件。有了依赖问题解决之后,我们现在来看一下输入文件以及我们将要用到的 Java 类。我们会发现 Order 对象已经从文件中被填充,包括 OrderLine 列表。添加这一行可以让 Jackson 将日期写成字符串形式,而不是单独的数字部分。我们总可以在 Maven 中央仓库找到此依赖的最新版本。我们可以在 Maven 中央仓库查找它的最新版本。2. 数据和对象结构。3. 读取 YAML。
2025-07-18 15:36:44
955
原创 Chrome更新后,扩展不能用问题
在 Windows 10/11 搜索框中输入 regedit 打开 注册表编辑器。右键单击 ExtensionManifestV2Availability。命名为 ExtensionManifestV2Availability。在 Chrome 中打开 chrome://policy/Chrome更新后,扩展不能用问题。在注册表编辑器中打开:HKEY。右键单击 Policies。新建 DWORD32 位值。右键单击 Google。右键单击 Chrome。命名为 Google。命名为 Chrome。
2025-07-18 09:59:09
668
原创 开发必备技能 Jackson ObjectMapper
本教程专注于理解 Jackson ObjectMapper 类,以及如何将 Java 对象序列化为 JSON,并将 JSON 字符串反序列化为 Java 对象。自定义序列化器和反序列化器在输入或输出的 JSON 响应与必须进行序列化或反序列化的 Java 类结构不同的情况下非常有用。此外,在写入方面,我们可以使用 writeValue API 将任何 Java 对象序列化为 JSON 输出。在本节中,我们将探讨一些高级功能,在这些功能中,输入或输出的 JSON 响应可能与生成或消费该响应的对象不同。
2025-07-17 09:58:36
1086
原创 transient 在 Java 中的特殊用法
当一个类型为 String 的变量被声明为 final 和 transient 时,其值在编译时确定,并存储在类的常量池中。由于 transient 字段不在对象的序列化形式中出现,在从序列化形式还原对象的过程中,这些字段将使用默认值(通常是 null 或 0)来创建对象。在本文中,我们看到了 transient 关键字的用法及其在序列化和反序列化中的行为,并提供了一些有用的示例,其中包括一些不那么显而易见的例子,例如带有 transient 的字符串。因此,其值将从类中获取而不是 null。
2025-07-14 09:03:31
556
原创 Java中如何实现数据加密
在这个示例中,我们直接使用了字符串作为密钥,但在实际项目中,建议使用更安全的密钥管理方法,例如使用密钥派生函数(KDF)从密码生成密钥,或者使用Java KeyStore存储密钥。此外,AES/ECB模式不推荐用于实际应用,因为它不提供足够的安全性。在实际应用中,可以考虑使用AES/CBC模式或其他更安全的模式。以下是一个简单的示例,展示了如何使用Java中的AES算法进行数据加密和解密。AI代码助手复制代码。
2025-07-09 16:50:15
408
原创 TreeMap简介
是红黑树(Red‑Black Tree)实现的有序 Map。与HashMap的无序、O(1) 平均查找不同,TreeMap保证键按“大小”单调有序,并提供丰富的区间/导航操作。
2025-07-08 17:18:34
763
原创 Jackson 注解示例
在本教程中,我们将深入探讨 Jackson 注解。我们将看到如何使用现有的注解、如何创建自定义注解,最后如何禁用它们。首先,我们来看一下序列化注解。@JsonAnyGetter 注解允许将 Map 字段用作标准属性,从而提供更大的灵活性。我们也可以将 optional 参数设置为 false 来禁用 @JsonAnyGetter()。在这种情况下,Map 将会被转换成 JSON,并在序列化后出现在 properties 变量下。
2025-07-08 11:22:19
846
原创 Java Lombok 入门
将 Project Lombok 包含在我们的构建中,无论我们使用的是哪种系统,都非常简单。这是一个相当简单的类,但如果我们添加了 Getter 和 Setter 的额外代码,最终定义中将包含比相关业务信息更多的样板零值代码:“一个 User 具有名字和姓氏以及年龄。依赖 Lombok 不会让我们的.jar 文件的用户也依赖它,因为 Lombok 只是一个纯构建依赖,不是运行时依赖。Java 是一种很好的语言,但在我们的代码中完成一些常见任务或遵守某些框架规范时,有时会显得过于冗长。
2025-07-07 09:58:50
532
原创 互联网架构设计模式
EP163EP160EP160EP164JWT or JSON Web Tokens is an open standard for securely transmitting information between two parties.EP158REST API Design Best PracticesEP164EP164EP165
2025-07-04 16:44:07
174
原创 从攻击者视角看接口加密:基于 Spring Boot 的接口安全防护实践
未加密的数据在传输过程中极易被拦截,尤其是在分布式架构中,接口调用频繁且复杂,难以全面监控。因此,如何确保数据在传输过程中的完整性,以及在意外修改中迅速恢复是我们需要深入探讨的问题。利用 Spring Boot 强大的整合能力,实现从公钥分发到请求验证的整个闭环流程,确保了安全的同时未显著影响系统性能。同时,与应用层面的全面安全策略结合,形成一套综合性防御体系,以应对不断变化与升级的安全挑战。通过这篇文章,希望能够为有类似需求的开发者提供一些思路和实践建议,使得大家在接口安全设计上有更多的参考和创新。
2025-07-04 16:34:56
1010
原创 Java 多行字符串
这无疑是声明多行字符串最方便的方式。确实,我们无需处理换行符或缩进空格,如我们在专门的文章中所指出的。此功能在 Java 15 中可用,如果启用预览功能,Java 13 和 14 也可以使用。在接下来的部分中,我们将回顾其他适合使用较早版本的 Java 或当文本块不适用时的方法。每个操作系统都可以有自己的方式来定义和识别新行。使用 + 运算符也可以实现相同的功能。
2025-07-04 10:39:46
396
原创 移除 Java 列表中的所有空值
这个快速教程将展示如何使用纯 Java、Guava、Apache Commons Collections 以及较新的 Java 8 Lambda 支持来移除 List 中的所有空元素。最后——让我们来看一个使用 Lambda 表达式过滤 List 的 Java 8 解决方案;在本文中,我们探索了使用 Java、Guava 或 Lambda 表达式从 List 中移除空值的不同方法。就是这样——一些快速且非常实用的解决方案,用于清除 List 中的所有空值元素。请注意,这两种解决方案都会修改源列表。
2025-07-03 15:29:13
420
原创 Redis单实例安装
Redis(Remote Dictionary Server)是一个开源的内存数据库,遵守 BSD 协议,它提供了一个高性能的键值(key-value)存储系统,常用于缓存、消息队列、会话存储等应用场景。
2025-07-02 11:07:15
398
原创 2025 最新 JetBrains 工具兑换码
(3个月免费)此优惠码适用于 IntelliJ IDEA 、PyCharm 、WebStorm 及其他 JetBrains IDE 或插件。兑换地址: https://www.jetbrains.com/store/redeem/兑换码:BoualiAli。
2025-07-02 09:23:53
1520
markdown 转 word
2018-03-08
常用后门.tgz
2019-10-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅
2