本文记录我在对接字节旗下产品火山云旗下云游戏产品OpenApi接口文档时遇到的坑,希望能帮助大家(火山云旗下云游戏产品的文档坑很多,我算是从零到一都踩了一遍,特此记录,希望大家引以为鉴)。 1.文档问题 很经典的开局一张图,对接全靠问, 这里给大家强调下,当要跟第三方产品对接时,一定要确认拿到的文档是不是最新版本。 比如我在这次对接中,第一次拿到的文档是产品给的,在业务中需要用到一个用户主动退出游戏的接口,于是我在第一份文档里面找到一个用户退出游戏的接口RomoveUser。 但是当我在控制台调用此接口报错后,去群里一问才发现,对方建议我使用官网公布的最新接口文档。 官网最新文档:htt...

  uzChSTcpqHVQ   2024年05月17日   35   0   0 Java

Elasticsearch是一个使用Java语言编写、遵守Apache协议、支持RESTful风格的分布式全文搜索和分析引擎,它基于Lucene库构建,并提供多种语言的API。Elasticsearch可以对任何类型的数据进行索引、查询和聚合分析,无论是文本、数字、地理空间、结构化还是非结构化的。Elasticsearch的核心功能是搜索,它可以对数据进行分词匹配、相关性评分、高亮显示等操作,返回相关度高的结果列表。Elasticsearch也可以用作数据分析,它可以对数据进行统计、分类、聚类等操作,返回聚合结果或图表。 本文将用我开源的waynboot-mall项目作于代码讲解,Elasti...

  uzChSTcpqHVQ   2024年02月29日   34   0   0 Java

在常用的后台管理系统中,通常都会有访问权限控制的需求,用于限制不同人员对于接口的访问能力,如果用户不具备指定的权限,则不能访问某些接口。 本文将用waynboot-mall项目举例,给大家介绍常见后管系统如何引入权限控制框架SpringSecurity。大纲如下, 一、什么是SpringSecurity SpringSecurity是一个基于Spring框架的开源项目,旨在为Java应用程序提供强大和灵活的安全性解决方案。SpringSecurity提供了以下特性: 认证:支持多种认证机制,如表单登录、HTTP基本认证、OAuth2、OpenID等。 授权:支持基于角色或权限的访问控制,以...

  uzChSTcpqHVQ   2024年02月27日   85   0   0 Java

本文给大家介绍一下在SpringBoot项目中如何集成消息队列RabbitMQ,包含对RibbitMQ的架构介绍、应用场景、坑点解析以及代码实战。 我将使用waynboot-mall项目作为代码讲解,项目地址:https://github.com/wayn111/waynboot-mall。本文大纲如下, RabbitMQ架构介绍 RibbitMQ是一个基于AMQP协议的开源消息队列系统,具有高性能、高可用、高扩展等特点。通常作为在系统间传递消息的中间件,它可以实现异步处理、应用解耦、流量削峰等功能。 RibbitMQ的主要组件介绍如下, producter:生产者,创建消息,然后将消...

  uzChSTcpqHVQ   2024年02月19日   82   0   0 Java

线程池是Java多线程编程中的一个重要概念,它可以有效地管理和复用线程资源,提高系统的性能和稳定性。但是线程池的使用也有一些注意事项和常见的错误,如果不小心,就可能会导致一些严重的问题,比如内存泄漏、死锁、性能下降等。 本文将介绍线程池使用不当的五个坑,以及如何避免和解决它们,大纲如下, 坑一:线程池中异常消失 线程池执行方法时要添加异常处理,这是一个老生常谈的问题,可是直到最近我都有同事还在犯这个错误,所以我还是要讲一下,不过我还提到了一种优雅的线程池全局异常处理的方法,大家可以往下看。 问题原因 @Test publicvoidtest()throwsException{ ThreadP...

  uzChSTcpqHVQ   2024年02月19日   104   0   0 Java

这篇文章给大家带来我自己写的开源项目【wayn商城】的本地开发指南,帮助各位朋友在本地快速运行【wayn商城】,避免踩坑,减少不必要的精力在软件下载安装上。 🔥waynboot-mall是一套全部开源的H5商城项目,实现了一套完整的商城前后台业务,有首页展示、商品分类、商品详情、sku详情、商品搜索、加入购物车、结算下单、支付宝/微信支付、订单列表、商品评论等一系列功能🔥。 技术上基于最新得SpringBoot3.1、MybatisPlus、SpringSecurity,整合了Mysql、Redis、RabbitMQ、ElasticSearch等常用中间件,根据我多年线上项目实战经验总结开...

  uzChSTcpqHVQ   2024年01月24日   159   0   0 Java

什么是大数据 大数据(BigData)是指在传统数据处理方法难以处理的情况下,需要新的处理模式来具有更强的决策力、洞察发现力和过程优化能力的海量、高增长率和多样化的信息资产。大数据的特征通常被概括为“4V”,即: Volume(容量):大数据的规模非常庞大,通常以TB(太字节)、PB(拍字节)或EB(艾字节)为单位,甚至更高。例如,2020年全球互联网用户产生的数据量达到了59ZB(泽字节),相当于每天产生160亿GB的数据。 Velocity(速度):大数据的产生和处理速度非常快,需要实时或近实时的响应。例如,社交媒体、电子商务、物联网等领域的数据流动非常快,需要快速分析和处理。 Var...

  uzChSTcpqHVQ   2024年01月19日   33   0   0 大数据

虚拟线程是在Java21版本中实现的一种轻量级线程。它由JVM进行创建以及管理。虚拟线程和传统线程(我们称之为平台线程)之间的主要区别在于,我们可以轻松地在一个Java程序中运行大量、甚至数百万个虚拟线程。 由于虚拟线程的数量众多,也就赋予了Java程序强大的力量。虚拟线程适合用来处理大量请求,它们可以更有效地运行“一个请求一个线程”模型编写的web应用程序,可以提高吞吐量以及减少硬件浪费。 由于虚拟线程是java.lang.Thread的实现,并且遵守自JavaSE1.0以来指定java.lang.Thread的相同规则,因此开发人员无需学习新概念即可使用它们。 但是虚拟线程才刚出来,对我们...

  uzChSTcpqHVQ   2024年01月09日   24   0   0 Java

虚拟线程是由Java21版本中实现的一种轻量级线程。它由JVM进行创建以及管理。虚拟线程和传统线程(我们称之为平台线程)之间的主要区别在于,我们可以轻松地在一个Java程序中运行大量、甚至数百万个虚拟线程。 由于虚拟线程的数量众多,也就赋予了Java程序强大的力量。虚拟线程适合用来处理大量请求,它们可以更有效地运行“一个请求一个线程”模型编写的web应用程序,可以提高吞吐量以及减少硬件浪费。 由于虚拟线程是java.lang.Thread的实现,并且遵守自JavaSE1.0以来指定java.lang.Thread的相同规则,因此开发人员无需学习新概念即可使用它们。 但是虚拟线程才刚出来,对我们...

  uzChSTcpqHVQ   2023年12月30日   34   0   0 Java

微服务架构是一种软件开发模式,它将一个复杂的应用程序拆分为多个个独立的、小型的、可复用的服务,每个服务负责一个特定的业务功能。 微服务架构有许多优点,例如提高系统的可扩展性、可维护性、可测试性和故障容忍性。 但是,微服务架构也有很多问题需要注意,例如如何设计合理的划分服务接口、如何在服务间实现高效通信、如何保证数据一致性等。因此要想成功地使用微服务架构,我们需要遵循一些最佳实践。 以下是一些微服务架构的最佳实践,我将尽我所了解的知识给大家进行讲解。本文大纲如下, 1.不使用微服务架构 没错,我们应该尽量避免使用微服务架构。 认真地说,使用微服务架构只能被视为最后的选择。从项目实际应用场景开发...

  uzChSTcpqHVQ   2023年12月28日   30   0   0 架构设计

Redis全文搜索是依赖于Redis官方提供的RediSearch来实现的。RediSearch提供了一种简单快速的方法对hash或者json类型数据的任何字段建立二级索引,然后就可以对被索引的hash或者json类型数据字段进行搜索和聚合操作。 这里我们把被索引的hash或者json类型数据叫做源数据。 本文大纲如下, 使用体验 简单场景下,用RediSearch来平替Elasticsearch的使用场景已经足够。像是Elasticsearch中常用的查询语法AND、OR、IN、NOTIN、>、<、=、like等,在RediSearch中都是支持的。 此外RediSearch还...

  uzChSTcpqHVQ   2023年12月22日   31   0   0 Java

本文是我从业多年开发生涯中针对线上业务的处理经验总结而来,这些业务或多或少相信大家都遇到过,因此在这里分享给大家,大家也可以看看是不是遇到过类似场景。本文大纲如下, 后台上传文件 线上后台项目有一个消息推送的功能,运营新建一条通知消息时,需要一起上传一列包含用户id的文件,来给文件中包含的指定用户推送系统消息。 如上功能描述看着很简单,但是实际上处理上传文件这一步是由讲究的,假如说后台上传文件太大,导致内存溢出,又或者读取文件太慢等其实都是一些隐性的问题。 对于技术侧想要做好这个功能,保证大用户量(比如达到百万级别)下,上传文件、发送消息功能都正常,其实是需要仔细思考的,我这里给出我的优化思...

  uzChSTcpqHVQ   2023年12月11日   17   0   0 Java

Java21在今年早些时候的9月19日就正式发布,并开始正式引入虚拟线程,但是作为Java开发生态中老大哥Spring并没有立即跟进,而是在等待了两个月后的11月29日,伴随着SpringBoot3.2版本的发布,在这个版本中也终于是引入了对虚拟线程的支持。 虚拟线程的引入标志着Java在现代编程世界中对编写高吞吐量、高并发应用程序提供了更加完美的支持。 本文我就带着大家一起深入了解一波Tomcat配合虚拟线程会带来怎样的效果以及虚拟线程对以后使用Java开发高吞吐量、高并发应用程序时所带来的改变。 本文大纲如下, Tomcat使用虚拟线程 启用虚拟线程 在SpringBoot3.2中,使用...

  uzChSTcpqHVQ   2023年12月04日   26   0   0 Java

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

  uzChSTcpqHVQ   2023年12月03日   15   0   0 MySQL

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

  uzChSTcpqHVQ   2023年11月19日   22   0   0 Java

在Java中,有四种方法可以获取当前正在执行方法体的方法名称,分别是: 使用Thread.currentThread().getStackTrace()方法 使用异常对象的getStackTrace()方法 使用匿名内部类的getClass().getEnclosingMethod()方法 Java9的Stack-WalkingAPI 本文将根据以上四种方法来给大家进行具体讲解,不过不知道大家有没有想过,获取当前执行方法体的方法名称有什么用嘞? 它可以用于日志记录、异常处理、测试框架等方面。例如我们可以在方法的开始和结束时打印出当前方法名和参数,以便追踪程序的执行流程和性能。在介绍完以上四...

  uzChSTcpqHVQ   2023年11月17日   24   0   0 Java

作者最近在开发公司项目时使用到Redis缓存,并在翻看前人代码时,看到了一种关于@Cacheable注解的自定义缓存有效期的解决方案,感觉比较实用,因此作者自己拓展完善了一番后分享给各位。 Spring缓存常规配置 SpringCache框架给我们提供了@Cacheable注解用于缓存方法返回内容。但是@Cacheable注解不能定义缓存有效期。这样的话在一些需要自定义缓存有效期的场景就不太实用。 按照SpringCache框架给我们提供的RedisCacheManager实现,只能在全局设置缓存有效期。这里给大家看一个常规的CacheConfig缓存配置类,代码如下, @EnableCach...

  uzChSTcpqHVQ   2023年11月12日   31   0   0 Java

作者今天在开发一个后台发送消息的功能时,由于需要给多个用户发送消息,于是使用了 mybatisplus 提供的 saveBatch() 方法,在测试环境测试通过上预发布后,测试反应发送消息接口很慢得等5、6秒,于是我就登录预发布环境查看执行日志,发现是 mybatisplus 提供的 saveBatch() 方法执行很慢导致,于是也就有了本篇文章。 mybatisplus是一个流行的ORM框架,它基于mybatis,提供了很多便利的功能,比如代码生成器、通用CRUD、分页插件、乐观锁插件等。它可以让我们更方便地操...

  uzChSTcpqHVQ   2023年11月02日   113   0   0 Java

Kafka介绍 Kafka是一个开源的分布式流式平台,它可以处理大量的实时数据,并提供高吞吐量,低延迟,高可靠性和高可扩展性。Kafka的核心组件包括生产者(Producer),消费者(Consumer),主题(Topic),分区(Partition),副本(Replica),日志(Log),偏移量(Offset)和代理(Broker)。Kafka的主要特点有: 数据磁盘持久化:Kafka将消息直接写入到磁盘,而不依赖于内存缓存,从而提高了数据的持久性和容错性。 零拷贝:Kafka利用操作系统的零拷贝特性,减少了数据在内核空间和用户空间之间的复制,降低了CPU和内存的开销。 数据批量发送:K...

  uzChSTcpqHVQ   2023年11月02日   44   0   0 架构设计

在上篇文章每个后端都应该了解的OpenResty入门以及网关安全实战中,我向大家介绍了OpenResty的入门使用是WAF防御实战,这篇文章将给大家继续介绍OpenResty入门之性能测试篇。 性能测试是软件开发中不可或缺的一环,它可以帮助我们评估系统的性能、稳定性、可扩展性等指标,为优化和改进提供依据。但是,性能测试也是最容易失准的一种测试,因为它受到很多因素的影响,例如网络环境、服务器配置、压测工具、压测场景等。如果我们选择了不合适的压测工具或者没有设计好压测场景,那么我们得到的结果可能会与实际情况相差甚远,甚至导致错误的判断和决策。 俗话说工欲善其事必先利其器,那么如何选择一款合适的压测...

  uzChSTcpqHVQ   2023年11月02日   28   0   0 Java
关注 更多

空空如也 ~ ~

粉丝 更多

空空如也 ~ ~