自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (1)
  • 收藏
  • 关注

原创 我开源的H5商城2.0版本发布,强烈推荐

🏬waynboot-mall 是一套全部开源的 H5 商城项目,包含运营后台、H5 商城前台和后端接口三个项目。实现了一套完整的商城业务,有首页展示、商品分类、商品详情、sku 详情、商品搜索、加入购物车、结算下单、支付宝/微信支付/易支付对接、我的订单列表、商品评论等一系列功能 🔥。商城所有项目源码全部开源,绝无套路。

2024-05-20 14:02:48 638

原创 我发现了字节OpenApi接口的bug!

在与火山云旗下云游戏产品的 OpenApi 接口对接过程中,我总共踩了三个坑。一是文档版本不是最新,二是官方提供的 OpenApi 示例 demo 过于简单,三是官方提供的验签代码没有考虑到 POST JSON 请求场景下的 contentType 设置问题。在这里也想给大家传个话,没有必要神话大厂,大厂也有 bug,大厂的产品也会服务中断。比如火山云旗下云游戏产品的 OpenApi 接口文档示例 demo 简陋,手动生成签名代码场景单一,覆盖不全等问题,最后就是竟然还返回了一个 null 给我!

2024-05-16 17:06:01 241

原创 2024年记住我功能该如何实现

本文给大家讲解了在使用 spring-session-redis 的项目中,如何通过延长用户 session 的有效期来达到记住我功能的一致效果。大家在学习本文后,也可以把记住我功能应用到自己的项目中,本文实例代码都在 newbeepro 项目中可以找到。想要获取newbeepro项目源码的同学可以关注我的公众号【程序员wayn】,回复 newbeeepro 即可获得。

2024-02-27 10:26:01 1009

原创 请立刻停止编写 Dockerfiles 并使用 docker init

几天前,Docker 推出了 docker init 的通用版本。我已经尝试过,发现它非常有用,迫不及待地想在日常生活中使用它。docker init 是一个命令行应用程序,可帮助初始化项目中的 Docker 资源。它根据项目的要求创建 Dockerfiles、docker-compose 文件和 .dockerignore 文件。这简化了为项目配置 Docker 的过程,节省时间并降低复杂性。

2024-02-27 10:24:32 1052

原创 我开源的 waynboot-mall 项目之框架选型详解

waynboot-mall 项目使用的框架和中间件都是目前的主流选择,它们已经很成熟、易用、市面上资料文档齐全,面对不同业务需求使用这些技术就已经足以。想要获取 waynboot-mall 项目地址以及配套资料的朋友可以在我的公众号【程序员wayn】回复 "wayn商城教学",即可获取。

2024-02-03 16:48:41 1013

原创 30秒自建幻兽帕鲁服务器,保姆级教程(持续更新)

本文将为各位帕鲁玩家介绍使用腾讯云轻量应用服务器 Lighthouse 部署幻兽帕鲁联机服务器的教程,无需登录服务器,仅需点击鼠标即可完成,最快只需 30 秒。

2024-01-31 16:23:18 1034

原创 7000字详解Spring Boot项目集成RabbitMQ实战以及坑点分析

RibbitMQ 是一个基于 AMQP 协议的开源消息队列系统,具有高性能、高可用、高扩展等特点。通常作为在系统间传递消息的中间件,它可以实现异步处理、应用解耦、流量削峰等功能。RibbitMQ 的主要组件介绍如下,producter:生产者,创建消息,然后将消息发布(发送)到 RabbitMQ。channel: 信道,多路复用连接中的一条独立的双向数据流通道。

2024-01-30 15:03:27 874

原创 2024Java开发必读书籍推荐

作为一名 Java 工程师,持续学习和提升是非常重要的。阅读优秀的技术书籍可以帮助我们深入理解 Java 编程语言的核心概念和最佳实践。在本文中,我将向大家推荐一共 10 本 Java 工程师必读的经典书籍,旨在帮助大家扩展知识领域,提高编程技能和解决问题的能力。

2024-01-30 15:02:18 930

原创 大数据技术发展史

大数据(Big Data)是指在传统数据处理方法难以处理的情况下,需要新的处理模式来具有更强的决策力、洞察发现力和过程优化能力的海量、高增长率和多样化的信息资产。Volume(容量):大数据的规模非常庞大,通常以 TB(太字节)、PB(拍字节)或 EB(艾字节)为单位,甚至更高。例如,2020 年全球互联网用户产生的数据量达到了 59ZB(泽字节),相当于每天产生 160 亿 GB 的数据。Velocity(速度):大数据的产生和处理速度非常快,需要实时或近实时的响应。

2024-01-24 11:23:39 1004

原创 我开源的 waynboot-mall 项目之本地开发指南

【wayn商城】项目我打算出一个实战教学专栏,包括系统设计、本地开发指南、技术选型、基础设施、模块划分、服务器部署、日志以及监控系统集成等内容。本项目的目标人群有大学生、初中级开发者、转全栈开发、缺少项目实战经验者,如果你也喜欢可以关注我,我会在后续持续更新。

2024-01-24 11:22:31 1008

原创 如何将开发环境的 Spring Boot 应用程序内存降低 40% 以上

总而言之,通过适当配置 JVM 和 Spring Boot,并理解内存消耗的原理,我们可以降低本地开发环境的内存消耗,提高工作效率。希望这些提示能对您有所帮助!关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2024-01-18 14:49:31 588

原创 Docker与Docker Compose入门:释放你的应用部署的威力

Dockerfile 是一个文本文件,用来描述如何从一个基础镜像(例如 ubuntu 或 alpine)构建出一个新的镜像,包括安装依赖、复制文件、设置环境变量、暴露端口等操作。使用 Dockerfile 可以让开发者清晰地记录应用程序的配置和依赖,以及保证应用程序在不同的环境中运行的一致性。# 基于 Java 镜像构建# 配置参数# 设置时区# 设置工作目录# 复制 jar 包到镜像里# 暴露端口# 配置启动命令FROM: 指定基础镜像,这里是基于开源的 Java 8 JRE 镜像。

2024-01-18 14:48:13 568

原创 【技术推荐】我愿称之为开源界最好用的行为验证码

tianai-captcha 简称 tac,是一款集成滑动类、点选类的一款行为验证码,以使用简单、安全性强、界面美观、接入方便,集好看、功能多、安全性强的一款开源行为验证码工具。tianai-captcha 目前支持的行为验证码类型滑块验证码旋转验证码滑动还原验证码文字点选验证码图标验证码语序验证码刮刮乐验证码后面会陆续支持市面上更多好玩的验证码玩法... 敬请期待在线文档:http://doc.captcha.tianai.cloud。

2024-01-11 10:53:51 661

原创 Java 新技术:虚拟线程使用指南(二)

针对虚拟线程的使用,相信大家心里已经有了答案。在对虚拟线程需要限制并发数的场景,使用信号量即可。在虚拟线程中使用线程局部变量时要注意避免缓存昂贵的可重用对象。对于使用到 synchronized 同步块或者方法的虚拟线程,建议替换为 ReentrantLock,避免影响吞吐量。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2024-01-11 10:52:58 453 1

原创 Java 21 神仙特性:虚拟线程使用指南(一)

针对虚拟线程的使用,相信大家心里已经有了答案。虚拟线程不同于平台线程,它非常廉价,Java 的设计者鼓励我们直接使用虚拟线程,而无需池化,也不必担心过多的虚拟现场会影响性能。事实上,虚拟现场就是为了解决同步阻塞 IO 对硬件的资源利用率不够高这一问题。

2023-12-28 00:31:33 1244

原创 2 分钟理解虚拟线程是什么

平台线程被实现为操作系统线程的简单包装器。平台线程上运行的 Java 代码,在其底层逻辑上,其实就是运行在操作系统的线程上,并且平台线程在其整个生命周期内都与操作系统线程一一对应。因此在 Java 项目中,可用平台线程的数量依赖于操作系统线程的数量。根据操作系统和 JVM 启动参数配置的不同,创建一个平台线程默认会消耗 1 MB 的空间。因此平台线程的资源相当宝贵,我们无法大量的创建平台线程。在 Java 21 虚拟线程出来以前,可能大家都没听说过平台线程,那么到底什么是平台线程嘞?

2023-12-28 00:30:57 859

原创 微服务开发,这10个点你要知道

本文为大家介绍了微服务架构中的 10 个最佳实践。包含1. 不使用微服务架构、2. 针对失败场景进行处理、3. 构建小型服务、4. 使用轻量级通信协议、5. 服务发现、6. 数据库隔离、7. 实施弹性模式、8. 服务监控以及链路追踪、9. 服务安全性、10.统一日志采集。说了这么多,其实还是希望大家结合自身项目背景,多多思考,不要为了使用微服务而去使用微服务,在已经使用了微服务架构中项目,能够结合上述最佳实践,加上自己对各个服务以及业务上的思考,去解决哪些已存在的问题。这样才算是真正学会了微服务。

2023-12-23 12:29:34 1025

原创 一文搞懂 java8 reduce操作

Java8 中有两大最为重要的改变,其一是 Lambda 表达式,另一个就是 Stream API 了。Stream 是 Java8 中处理集合的关键抽象概念,它将数据源流化后,可以执行非常复杂的查找、过滤和映射数据、排序、切片、聚合统计等操作。操作之后会产生一个新的流,而数据源则不会发生改变。在使用 Stream 操作的过程中,往往有三个步骤,

2023-12-23 12:28:20 965

原创 java8 reduce操作

reduce 操作是一种通用的归约操作,它可以从一个元素序列中生成一个单一的结果,通过反复将一个组合操作应用到序列中的元素上。例如,我们可以使用 reduce 操作来计算一个整数序列的和,或者将一个字符串序列拼接成一个单一的字符串。

2023-12-20 16:30:55 1079

原创 Redis全文搜索教程之创建索引并关联源数据

在 RediSearch 中要查询已经存在的索引详情也是很简单的,官方提供了ft.info 索引名称的语法,用来打印索引详情。本文给大家用我的开源项目 newbee-mall-pro 作为样本,给大家细致的介绍了一番 RediSearch 在项目实战中关于索引创建与关联源数据的用法,希望大家喜欢。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-12-20 16:28:31 1006

原创 Redis 也支持全文搜索 了?这也太强了

RediSearch 是一个 Redis 模块,为 Redis 提供查询、二级索引和全文搜索功能。要使用 RediSearch 的功能,我们需要要先声明一个 index(类似于 Elasticsearch 的索引)。然后就可以使用 RediSearch 的查询语言来查询该索引下的数据。RediSearch 内部使用压缩的倒排索引,所以可以已较低的内存占用来实现索引的快速构建。

2023-12-11 11:01:01 278

原创 微服务开发:断路器详解

您可能已经听说过我们在电子产品中发现的断路器。它的主要目的是什么?简单地说,在意想不到的情况下切断电流。与此相同,这种微服务模式也因其具有相同的性质而得名。这种模式在服务之间进行通信时出现。让我们来看一个简单的场景。假设我们有两个服务:服务 A 和 B。服务 A 正在调用服务 B(API 调用)以获取所需的一些信息。当服务 A 调用服务 B 时,如果服务 B 由于某些基础设施中断而关闭,会发生什么?服务 A 没有得到结果,它将因抛出异常而挂起。然后另一个请求来了,它也面临同样的情况。

2023-12-06 20:07:56 399

原创 耗时三年开源的H5商城,强烈推荐

🏬waynboot-mall 是一套全部开源的微商城项目,包含三个项目:运营后台、H5 商城和后端接口。实现了一套完整的商城业务,有首页展示、商品分类、商品详情、sku 详情、商品搜索、加入购物车、结算下单、支付宝/微信支付、订单列表、商品评论等一系列功能🔥。商城前后台项目源码全部开源,绝无套路。

2023-12-06 20:05:45 266

原创 提升 tomcat 性能的三个方式

Tomcat是一个流行的Java Web服务器,它可以运行Java Servlet和JavaServer Pages技术,为Web应用程序提供动态内容。Tomcat的性能优化是一个重要的话题,因为它直接影响了Web应用程序的响应速度和并发能力。本文将介绍提高Tomcat性能的三种方式,分别是调整Tomcat的线程池配置,使用连接池,和使用APR插件。

2023-12-04 09:36:16 257

原创 Tomcat 配合虚拟线程,一种新的编程体验

虚拟线程带给了现代程序员新的编程体验,使用阻塞编程也能开发出高性能应用程序,而避免了异步模型的编程复杂度,随着更多的框架接入虚拟线程,相信虚拟线程会在未来大放异彩。

2023-12-04 09:34:26 296

原创 糟了,数据库崩了,又好像没崩

2023 年某一天周末,新手程序员小明因为领导安排的一个活来到公司加班,小明三下五除二,按照领导要求写了一个跑批的数据落库任务在测试环境执行 ,突然间公司停电了,小明大惊,“糟了,MySQL 还在跑任务,会不会因为突然断电,导致数据库崩了”。这时候,傍边的同事云淡风清的说了一句,“没事,小明,MySQL 有一套预写日志机制就是应对这种情况的。你的落库任务启用了事务没,启用了的话,就等来电重新跑一下任务就行了。听了同事的话,小明悬着的心放了下来。“哦哦,我启用了事务,那我还是等周一来重新跑一遍”。

2023-12-03 16:31:10 67

原创 用户注册这样玩,保你平安

用户注册说简单是很简单,但是校验逻辑一定要做好!这是我的踩坑经验,现在我传授给你,希望能帮你平安🤝。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-11-30 22:57:09 118

原创 HTTP 和 HTTPS 之间除了安全性区别外,还有哪些区别

关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-11-27 17:31:52 63

原创 null 不好,我真的推荐你使用 Optional

"Null 很糟糕." - Doug Lea。Doug Lea 是一位美国的计算机科学家,他是 Java 平台的并发和集合框架的主要设计者之一。他在 2014 年的一篇文章中说过:“Null sucks.”1,意思是 null 很糟糕。他认为 null 是一种不明确的表示,它既可以表示一个值不存在,也可以表示一个值未知,也可以表示一个值无效。这样就会导致很多逻辑错误和空指针异常,给程序员带来很多麻烦。他建议使用 Optional 类来封装可能为空的值,从而提高代码的可读性和健壮性。

2023-11-18 09:58:51 87

原创 Java 面试题之 Logback 打印日志是如何获取当前方法名称的?

本文有介绍四种方法获取当前执行方法名称,一般情况下大家使用异常对象的方法以及匿名内部类的方法都是可以的,它们的性能都 OK,代码书写复杂程度都大差不差。在 Java 9 以后推荐使用 Stack-Walking API,它的功能更为强大,与程序里的堆栈语意也跟为契合,性能 OK,并且还是线程安全的。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-11-12 11:55:18 280

原创 Spring 缓存注解这样用,太香了!

其实我们可以通过自定义类继承提供的类后,重写方法来完成自定义缓存有效期的功能,代码如下,@Override// 解析 @Cacheable 注解的 value 属性用以单独设置有效期类逻辑如下,继承提供的类。重写方法。解析 name 参数,根据字符串进行分割,获取缓存 key 名称以及缓存有效期。重新设置缓存 key 名称以及缓存有效期。调用父类的方法来完成缓存写入。接着我们修改下类的方法用以使用类。代码如下,@Bean最后在使用@Cacheable注解时,在原有。

2023-11-09 16:23:29 307

原创 花了三年时间开发的开源项目,终于500 个 Star 了!快收藏

waynboot-mall 是一套全部开源的微商城项目,包含三个项目:基于 vue2 的运营后台、基于 vue2 的 H5 商城以及基于 Java 开发的后端 api 项目。这三个项目实现了一套完整的商城业务,有首页展示、商品分类、商品详情、sku 详情、商品搜索、购物车、结算下单、支付宝/微信支付、商品评论等一系列功能。商城前后台项目源码全部开源,绝无套路。

2023-11-04 22:09:01 443

原创 mybatis plus很好,但是我被它坑了!

给开发人员带来了很多便利,但是其中也有一些坑点,比如上文所提到得批量操作耗时问题,如果不注意的话,就有可能调入坑里,各位开发同学可以检查自己或者公司项目中jdbcurl是否缺失参数,加以改正,避免重复掉入这个坑里。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-10-31 11:31:32 125

原创 Kafka 在分布式系统中的 7 大应用场景

Kafka 是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性。Kafka 的核心组件包括生产者(Producer),消费者(Consumer),主题(Topic),分区(Partition),副本(Replica),日志(Log),偏移量(Offset)和代理(Broker)。Kafka 的主要特点有:数据磁盘持久化:Kafka 将消息直接写入到磁盘,而不依赖于内存缓存,从而提高了数据的持久性和容错性。

2023-10-26 18:30:39 184

原创 OpenResty入门之压测篇:压测工具界的 “悍马” wrk 审核中

wrk 在对OpenResty程序的压测过程中,不失所望表现出了强大压测性能。希望通过本篇文章能让大家对 wrk 性能测试工具有一个较为全面的认识。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-10-20 16:44:16 110

原创 List.of() Vs Arrays.asList()

Java 提供了几种用于创建列表的方便方法,包括List.of和。尽管这两种方法都可以很简单的创建集合对象,但它们实际上是有一些显著差异的。本文将介绍 Java 中的List.of()和之间的差异,并讲解它们的应用场景。最后,我们将清楚地了解何时使用哪方法以及它们之间有何不同。List.of()List.of()是 Java 9 中引入的工厂方法,用于创建包含指定元素的不可变列表。以下是一些需要注意的要点:List.of()创建的集合是不可变的,这意味着它的大小和元素在创建后不能修改。

2023-10-18 09:31:14 461

原创 每个后端都应该了解的OpenResty入门以及网关安全实战

Web 应用防火墙(Web Application Firewall,简称 WAF)对网站或者 App 的业务流量进行恶意特征识别及防护,在对流量清洗和过滤后,将正常、安全的流量返回给服务器,避免网站服务器被恶意入侵导致性能异常等问题,从而保障网站的业务安全和数据安全。自此本文介绍了OpenResty入门以及使用 Lua 脚本实现一些常见的网关安全功能等。

2023-10-15 15:23:25 274

原创 Java 21新特性-虚拟线程

尽管作用域值 (JEP 446) 和结构化并发 (JEP 453) 仍然是 Java 21 中的预览功能,但虚拟线程已经成为可投入生产的成熟功能。虚拟线程是一种通用且强大的 Java 并发新方式,将对我们的未来程序产生重大影响。虚拟线程使用熟悉且可靠的“每个请求一个线程”方法,同时以最佳方式利用所有可用硬件,无需学习新范例或复杂的 API。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-10-10 09:41:20 137

原创 一文教你理解Kafka offset

日常开发中,相信大家都对 Kafka 有所耳闻,Kafka 作为一个分布式的流处理平台,一般用来存储和传输大量的消息数据。在 Kafka 中有三个重要概念,分别是 topic、partition 和 offset。topic 是 kafka 中的消息以主题为单位进行归类的逻辑概念,生产者负责将消息发送到特定的主题,消费者负责订阅主题并进行消费。

2023-09-27 17:04:51 173

原创 五个很实用的IDEA使用技巧

其实本文所讲解的五个实用技巧不光在 IDEA 里可以使用,在 PhpStorm、PyCharm 中都是通用的,欢迎大家在浏览完本文后实践体验下。关注公众号【waynblog】每周分享技术干货、开源项目、实战经验、国外优质文章翻译等,您的关注将是我的更新动力!

2023-09-20 16:11:56 205

easyui1.5.3

easyui是一种基于jQuery的用户界面插件集合。 easyui为创建现代化,互动,JavaScript应用程序,提供必要的功能。 使用easyui你不需要写很多代码,你只需要通过编写一些简单HTML标记,就可以定义用户界面。 easyui是个完美支持HTML5网页的完整框架。 easyui节省您网页开发的时间和规模。 easyui很简单但功能强大的。

2017-10-15

空空如也

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

TA关注的人

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