
java
文章平均质量分 90
程序员wayn
专注技术干货输出、分享开源项目等。作者是阿里云专家博主、掘金优秀创作者以及2023年度人气作者。+w:waynaqua
展开
-
Java Map的演进历史:从JDK 1.7到JDK 21
本文给大家介绍了关于 Java 中 Map 接口在 JDK1.7 到 JDk21 中演进以及新增方法,还介绍了一些 Guava、Commons Collections、Eclipse Collections 对 Map 的增强,希望大家喜欢。原创 2024-11-19 14:16:14 · 1100 阅读 · 0 评论 -
7000字详解Spring Boot项目集成RabbitMQ实战以及坑点分析
RibbitMQ 是一个基于 AMQP 协议的开源消息队列系统,具有高性能、高可用、高扩展等特点。通常作为在系统间传递消息的中间件,它可以实现异步处理、应用解耦、流量削峰等功能。RibbitMQ 的主要组件介绍如下,producter:生产者,创建消息,然后将消息发布(发送)到 RabbitMQ。channel: 信道,多路复用连接中的一条独立的双向数据流通道。原创 2024-01-30 15:03:27 · 994 阅读 · 0 评论 -
2024Java开发必读书籍推荐
作为一名 Java 工程师,持续学习和提升是非常重要的。阅读优秀的技术书籍可以帮助我们深入理解 Java 编程语言的核心概念和最佳实践。在本文中,我将向大家推荐一共 10 本 Java 工程师必读的经典书籍,旨在帮助大家扩展知识领域,提高编程技能和解决问题的能力。原创 2024-01-30 15:02:18 · 1094 阅读 · 0 评论 -
如何将开发环境的 Spring Boot 应用程序内存降低 40% 以上
总而言之,通过适当配置 JVM 和 Spring Boot,并理解内存消耗的原理,我们可以降低本地开发环境的内存消耗,提高工作效率。希望这些提示能对您有所帮助!关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!原创 2024-01-18 14:49:31 · 1073 阅读 · 0 评论 -
【技术推荐】我愿称之为开源界最好用的行为验证码
tianai-captcha 简称 tac,是一款集成滑动类、点选类的一款行为验证码,以使用简单、安全性强、界面美观、接入方便,集好看、功能多、安全性强的一款开源行为验证码工具。tianai-captcha 目前支持的行为验证码类型滑块验证码旋转验证码滑动还原验证码文字点选验证码图标验证码语序验证码刮刮乐验证码后面会陆续支持市面上更多好玩的验证码玩法... 敬请期待在线文档:http://doc.captcha.tianai.cloud。原创 2024-01-11 10:53:51 · 2052 阅读 · 0 评论 -
Java 新技术:虚拟线程使用指南(二)
针对虚拟线程的使用,相信大家心里已经有了答案。在对虚拟线程需要限制并发数的场景,使用信号量即可。在虚拟线程中使用线程局部变量时要注意避免缓存昂贵的可重用对象。对于使用到 synchronized 同步块或者方法的虚拟线程,建议替换为 ReentrantLock,避免影响吞吐量。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!原创 2024-01-11 10:52:58 · 659 阅读 · 1 评论 -
Java 21 神仙特性:虚拟线程使用指南(一)
针对虚拟线程的使用,相信大家心里已经有了答案。虚拟线程不同于平台线程,它非常廉价,Java 的设计者鼓励我们直接使用虚拟线程,而无需池化,也不必担心过多的虚拟现场会影响性能。事实上,虚拟现场就是为了解决同步阻塞 IO 对硬件的资源利用率不够高这一问题。原创 2023-12-28 00:31:33 · 1536 阅读 · 0 评论 -
2 分钟理解虚拟线程是什么
平台线程被实现为操作系统线程的简单包装器。平台线程上运行的 Java 代码,在其底层逻辑上,其实就是运行在操作系统的线程上,并且平台线程在其整个生命周期内都与操作系统线程一一对应。因此在 Java 项目中,可用平台线程的数量依赖于操作系统线程的数量。根据操作系统和 JVM 启动参数配置的不同,创建一个平台线程默认会消耗 1 MB 的空间。因此平台线程的资源相当宝贵,我们无法大量的创建平台线程。在 Java 21 虚拟线程出来以前,可能大家都没听说过平台线程,那么到底什么是平台线程嘞?原创 2023-12-28 00:30:57 · 932 阅读 · 0 评论 -
一文搞懂 java8 reduce操作
Java8 中有两大最为重要的改变,其一是 Lambda 表达式,另一个就是 Stream API 了。Stream 是 Java8 中处理集合的关键抽象概念,它将数据源流化后,可以执行非常复杂的查找、过滤和映射数据、排序、切片、聚合统计等操作。操作之后会产生一个新的流,而数据源则不会发生改变。在使用 Stream 操作的过程中,往往有三个步骤,原创 2023-12-23 12:28:20 · 1346 阅读 · 0 评论 -
分布式系统中的数据复制
数据复制是指将数据复制到一个或多个数据容器以确保可用性的过程。复制的数据通常存储在不同的数据库实例中,即使一个实例发生故障,我们也可以从其他实例获取数据。一种流行数据复制的实现架构是主从架构。推荐博主开源的 H5 商城项目,这是一套全部开源的微商城项目,包含三个项目:运营后台、H5 商城前台和服务端接口。实现了商城所需的首页展示、商品分类、商品详情、商品 sku、分词搜索、购物车、结算下单、支付宝/微信支付、收单评论以及完善的后台管理等一系列功能。原创 2023-07-19 00:05:23 · 135 阅读 · 0 评论 -
MyBatis实现动态SQL更新
MyBatis 是一个流行的 Java 持久层框架,它提供了灵活的 SQL 映射和执行功能。有时候我们可能需要在运行时动态地修改 SQL 语句,例如添加一些条件、排序、分页等。MyBatis 提供了一个强大的机制来实现这个需求,那就是拦截器(Interceptor)。推荐博主开源的 H5 商城项目,这是一套全部开源的微商城项目,包含三个项目:运营后台、H5 商城前台和服务端接口。原创 2023-07-12 09:45:17 · 1285 阅读 · 0 评论 -
响应式编程:Vert.x官网学习
先了解 Vert.x 是什么,官网首页介绍文字可以看出 Vert.x 是由 Eclipse 开发的一个在 JVM 上 Reactive(响应式) 应用程序。Reactive(响应式)编程是什么?响应式编程是一种面向数据流和变化传播的编程范式。这意味着可以在编程语言中很方便地表达静态或动态的数据流,而相关的计算模型会自动将变化的值通过数据流进行传播。例如在命令式编程设置中,a = b + c 意味着在计算表达式时 a 被分配为 b + c 的结果,之后 b 和 c 的值进行修改也不会影响 a 值。原创 2023-07-11 14:30:33 · 342 阅读 · 0 评论 -
多线程知识:三个线程如何交替打印ABC循环100次
到此,本文内容已经讲解完毕,以上的这五种方法都可以利用不同的工具和机制来实现多线程之间的同步和通信,从而保证按照顺序交替打印ABC。这些方法各有优缺点,具体的选择需要根据实际的场景和需求来决定。最后本文讲解代码是在单个JVM内的实现方法,如果大家对涉及到多个JVM来实现按照顺序交替打印ABC的话,可以私信博主,博主再给大家出一期文章进行讲解。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、高效开发工具等,您的关注将是我的更新动力!原创 2023-07-07 15:58:20 · 1035 阅读 · 1 评论 -
项目讲解之常见安全漏洞
不要盲目相信用户传入的参数。无论是修改密码还是文件下载,都不应该直接使用用户传入的参数构造 SQL 语句或拼接路径,这会导致 SQL 注入及路径遍历等安全漏洞。我们应该根据实际业务获取真实的用户 ID 或其他参数,然后再进行操作。SQL 参数要进行转义。在拼接 SQL 语句时,对用户传入的不可控参数一定要进行转义,防止 SQL 注入。路径要进行校验。在处理文件上传下载等操作时,对路径参数要进行校验,防止目录遍历漏洞。例如判断路径中是否包含字符。接口要设置权限。原创 2023-04-18 23:03:55 · 436 阅读 · 0 评论 -
分享一个修改了xml文件再也不用重启的项目mybatis-xmlreload
欢迎大家使用,这个项目我开源的的,使用中遇到问题可以提交 issue。提交的问题我都会一一查看并回复。原创 2023-03-26 22:02:52 · 2021 阅读 · 5 评论 -
mybatis xml文件热加载实现
欢迎大家使用,使用中遇到问题可以提交 issue 或者加博主私人微信waynaqua给你解决。原创 2023-03-25 21:22:09 · 1292 阅读 · 0 评论 -
线上sql执行慢,分享3个优化案例
😘。原创 2023-03-19 21:53:04 · 1210 阅读 · 0 评论 -
Redis分布式锁常见坑点分析
其实本文得核心逻辑有许多都是参考 Redission 客户端而写,对于这些常见得坑点,博主结合自身思考,业界知识总结并自己实现一个分布式锁得工具类。希望大家看了有所收获,对日常业务中 Redis 分布式锁的使用能有更深的理解。原创 2023-03-03 13:56:39 · 409 阅读 · 0 评论 -
2018至2023我的开源项目分享
本文主要针对博主2018毕业至2023参与软件开发4年多以来自建的三个开源项目进行介绍与分享,希望对看到本文的新入行的初中级开发者或者未毕业想入行的学生们能够起到帮助。下面是项目介绍。原创 2023-02-12 13:08:57 · 196 阅读 · 0 评论 -
Mybatis占位符#和$的区别?源码解读
由上经过源码分析,我们知道Mybatis对#{}占位符是直接转换成问号,拼接预处理 sql。${}占位符是原样拼接处理,有sql注入风险,最好避免由客户端传入此参数。原创 2023-02-09 17:21:54 · 385 阅读 · 0 评论 -
Mybatis返回集合类型到底是空集合还是null?源码解读
由上经过源码分析,我们知道Mybatis返回集合类型默认是空集合,我们在日常开发中,对于Mybatis返回集合类型不需要判断是否为null,直接调用或者其他第三方工具包提供的集合判空方法即可。原创 2023-01-15 22:08:38 · 657 阅读 · 2 评论 -
Java Netty框架自建DNS代理服务器教程
DNS协议作为着互联网客户端-服务器通信模式得第一关,在当下每天都有成千上亿上网记录产生得当今社会,其重要性自然不可言喻。在国内比较有名得DNS服务器有电信得114.114.114.114、阿里云得223.5.5.5,DNSPod得119.29.29.29,配置一个好的DNS服务器可以缩短请求响应时间、降低DNS劫持概率,提升上网体验。上面这些都是互联网公用DNS服务器,本文博主教大家使用Java Netty。原创 2023-01-08 13:53:18 · 873 阅读 · 0 评论 -
多数据源事务处理-涉及分布式事务
关于多数据源事务的问题,不管跨不跨库其实都属于分布式事务的问题。推荐使用seata解决。实践代码放在newbeemall项目:https://github.com/wayn111/newbee-mall/tree/springboot2.7 分支下。原创 2022-12-16 13:21:42 · 2039 阅读 · 0 评论