JAVA系列课程
Hollis,阿里巴巴技术专家《Java工程师成神之路》系列文章作者,热衷于分享计算机编程相关技术,博文全网阅读量上千万。
2023年12月15日
1.现状
每个设备都有唯一的虚拟设备号,同一设备号对多个手机号登录注册没有限制,导致系统存在恶意注册账号的情况。
2.需求
(1)所有请求在网关异步验证设备号是否可用
(2)同一设备可登录注册最大手机号个数及频率可配置,能根据项目维度调整,需满足现实使用场景
3.实现方案
3.1网关校验设备号
通过网关的请求都需要异步验证公共参数的设备号是否存在、是否注册,网关校验设备号流程增加黑名单、白名单
流程图如下:
说明:网关增加设备校验公共子模块,网关请求通过kafka消息异步校验设备号是否存在、是否注册,异步结果同步给网关设备校验公共子模块。
3.2设备可注册手机号个数及频率控制
同一设备可登录注册的最大手机号个数根据数据表配置数据控制
同一设备一天内最多能切换的账号个数为可注册的最大手机号个数
同一设备手机号切换频率进行动态限速控制,根据起始位置、时间间隔、指数数值三个参数来进行控制。
如:起始位置为3、时间间隔为3分钟,指数数值为2
注册账号控制频率为:第一个手机号注册无时间限制、第二个手机号无时间限制、第三个手机号注册时间为3分钟,第四个手机号注册时间为9分钟,依次类推。
2023年12月9日
Java IO(输入输出)流是Java编程中处理数据输入和输出的一种强大机制。在日常开发中,无论是文件操作、网络通信还是系统资源管理,IO流都扮演着至关重要的角色。本文旨在为读者提供Java...
2023年11月25日
Java技术面试是许多软件开发岗位的关键环节。作为一名经历过多次面试的Java开发者,我想分享一些宝贵的经验和建议,帮助你在面试中脱颖而出。
一、面试前的准备
基础知识的复习:确保你对Java的基本概念(如OOP原则、集合框架、多线程等)有深入理解。例如,我曾在面试中被问到如何在Java中实现单例模式,以及它的各种变体和线程安全问题。
算法和数据结构:复习常见的算法(如排序、搜索)和数据结构(如数组、链表、树)。我记得有一次面试,我被要求在白板上写出二叉树遍历的代码,这测试了我的编程能力和对数据结构的理解。
实际项目经验:准备好讨论你过去的项目。我通常准备一两个项目的详细案例,包括我在项目中的角色、遇到的挑战以及我如何解决这些问题。
二、面试中的流程
技术问题:面试通常从一些基础的技术问题开始,逐渐深入。我曾被问到从Java...
2023年11月25日
Java作为一种强大的编程语言,不仅因其跨平台能力受到欢迎,还因其丰富的库和简洁的语法而备受开发者青睐。本文将深入探讨Java中一些常用的算法,并通过具体案例及代码示例来展示它们的实际应用。
1....
2023年11月22日
一、布隆过滤器简介
布隆过滤器是由伯顿·霍华德·布隆在1970年发明的一种数据结构,它提供了一种高效的方式来测试某个元素是否属于一个集合。布隆过滤器是概率性的,这意味着它们可以确定某个元素不在集合中,但只能提示该元素可能在集合中的可能性。这种特性使得布隆过滤器在空间效率和速度至关重要的情况下非常有用,即使有时会产生偶尔的误报。
二、Java中的布隆过滤器
在Java中,布隆过滤器通常使用Guava库实现,该库提供了一个简单有效的布隆过滤器实现。Guava的BloomFilter类允许轻松创建和管理布隆过滤器。
Maven依赖
要在Java项目中使用Guava的布隆过滤器,需要以下Maven依赖:
<dependency>...
2023年11月20日
在Java世界中,字符串是最常用的数据类型之一。本文旨在全面介绍Java字符串的特性、操作方法及其在实际编程中的应用,以帮助读者深入理解并有效地使用字符串。
一、字符串基础
在Java中,字符串由java.lang.String类表示,它是不可变的。这意味着一旦创建了字符串对象,就不能更改它。每次修改字符串都会产生一个新的字符串对象。
创建字符串
字符串可以通过多种方式创建:
String...