Java实现汉字转拼音,多音字处理

2023-04-25
阅读 2 分钟
492
背景:之前一直是前端直接调用公司公共城市组件获取城市列表,现在由于公共组件不再支持,需要由后端接口提供城市查询,并且按照城市首字母分组展示。后端实现:最开始选择pinyin4j来实现,但发现对多音字的处理不太友好,比如需要转重庆的拼音(可以看到结果并不是我们想要的):

如何在业务开发中使用适配器模式?

2023-04-18
阅读 6 分钟
602
适配器模式(Adapter Pattern):将一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。说人话:这个模式就是用来做适配的,它将不兼容的接口转换为可兼容的接口,让原本由于接口不兼容而不能一起工作的类可以一起工作。比如现实生活中的例子, 就像我们提到...

Netty服务开发及性能优化

2023-04-12
阅读 15 分钟
415
Netty是一个异步基于事件驱动的高性能网络通信框架,可以看做是对NIO和BIO的封装,并提供了简单易用的API、Handler和工具类等,用以快速开发高性能、高可靠性的网络服务端和客户端程序。

浅谈 Spring 如何解决 Bean 的循环依赖问题

2023-04-07
阅读 11 分钟
557
什么是循环依赖?通俗来讲,循环依赖指的是一个实例或多个实例存在相互依赖的关系(类之间循环嵌套引用)。举个例子public class AService { private BService bService;}

玩转JUC工具,Java并发编程不再危机四伏

2023-04-04
阅读 12 分钟
496
前言  当今互联网应用普遍需要支持高并发访问,而Java作为一种广泛使用的编程语言,其并发编程能力对于实现高性能的应用非常重要。而Java的JUC(java.util.concurrent)并发工具就提供了许多实用的工具类和接口,可以让Java应用轻松实现高效的并发编程。ReetrantLock  ReentrantLock是Java提供的一个可重入锁,也是Java...

Java项目是不是分布式,真有那么重要吗?

2023-03-28
阅读 2 分钟
483
大概不知道从什么时候,「微服务」「分布式」这两个词又再次频繁出现在我的视线里。「微服务」「分布式」在我刚毕业的时候还是比较关注的,那时候还入门了一把SpringCloud,写了一篇很长的文章,还是很顶的,有不少的大号都给我转载了,在知乎又获得了很多的赞。那时候觉得懂「分布式」「微服务」是关键,什么SSM/SSH这...

在Vue3这样子写页面更快更高效

2023-03-22
阅读 9 分钟
1.1k
前言在开发管理后台过程中,一定会遇到不少了增删改查页面,而这些页面的逻辑大多都是相同的,如获取列表数据,分页,筛选功能这些基本功能。而不同的是呈现出来的数据项。还有一些操作按钮。

软件测试和开发哪个好?软件测试就业前景怎样

2023-03-21
阅读 1 分钟
264
软件测试和开发两个职业都是IT行业中非常重要的角色,但是两者的工作内容和职责存在着明显的区别,所以关于软件测试和开发哪一个更好,需要根据你们自己的兴趣和能力来决定。 软件测试和开发都是IT行业的热门职业,两者的就业前景都很好。而在薪酬方面,根据具体的工作经验和职位,两者的薪资也有很大差别。但是一般来说...

SpringBoot项目jar、war包启动解析

2023-03-20
阅读 11 分钟
548
war包是Java Web应用程序的一种打包方式符合Servlet标准,它是Web Archive的缩写,主要用于存储Web应用程序相关的文件,包括Java类文件、JSP、HTML、CSS、JavaScript、图片等资源文件。war包需要部署到web服务器中(Tomcat、Apache、IIS)

SpringBoot 如何保证接口安全?老鸟们都是这么玩的!

2023-03-13
阅读 10 分钟
381
为什么要保证接口安全对于互联网来说,只要你系统的接口暴露在外网,就避免不了接口安全问题。 如果你的接口在外网裸奔,只要让黑客知道接口的地址和参数就可以调用,那简直就是灾难。举个例子:你的网站用户注册的时候,需要填写手机号,发送手机验证码,如果这个发送验证码的接口没有经过特殊安全处理,那这个短信接口...

Java为什么不支持多继承

2023-03-10
阅读 1 分钟
432
首先,思考这么一种场景,假如现在A类继承了B类和C类,并且B类和C类中,都存在test()方法,那么当A类对象调用test()方法时,该调用B类的test()呢?还是C类的test()呢?是没有答案的,所以Java中不允许多继承。但是,Java中接口是可以多继承的,比如:public interface A {

在MySQL中使用!=还能走索引吗?

2023-03-07
阅读 2 分钟
496
一般情况下,我们会在一个索引上较多的使用等值查询或者范围查询,此时索引大多可以帮助我们极快的查询出我们需要的数据。那当我们在where条件中对索引列使用!=查询,索引还能发挥他的作用吗?以此SQL为例:select * from t where k != 6; 复制代码MySQL会如何执行这个SQL呢?是直接全表扫描吗?其实,走不走索引,只取...

三行代码让你的git记录保持整洁

2023-02-27
阅读 4 分钟
504
前言笔者最近在主导一个项目的架构迁移工作,由于迁移项目的历史包袱较重,人员合作较多,在迁移过程中免不了进行多分支、多次commit的情况,时间一长,git的提交记录便混乱不堪,随便截一个图形化的git提交历史给大家感受一下。

Spring事务回滚的两种方法

2023-02-22
阅读 2 分钟
589
当然,Spring事务回滚的前提是你当前使用的数据库必须支持事务,比如MySQL的Innodb是支持的,但Mysaim则是不支持事务的。方法一

【JAVA】接口和抽象类有什么区别?

2023-02-14
阅读 4 分钟
767
前言Java 是非常典型的面向对象语言,曾经有一段时间,程序员整天把面向对象、设计模式挂在嘴边。虽然如今大家对这方面已经不再那么狂热,但是不可否认,掌握面向对象设计原则和技巧,是保证高质量代码的基础之一。本篇博文的重点是,接口和抽象类有什么区别? 概述接口和抽象类是 Java 面向对象设计的两个基础机制。接...

订单30分钟未支付自动取消怎么实现?

2023-02-08
阅读 10 分钟
456
目录了解需求方案 1:数据库轮询方案 2:JDK 的延迟队列方案 3:时间轮算法方案 4:redis 缓存方案 5:使用消息队列了解需求在开发中,往往会遇到一些关于延时任务的需求。例如生成订单 30 分钟未支付,则自动取消生成订单 60 秒后,给用户发短信对上述的任务,我们给一个专业的名字来形容,那就是延时任务。那么这里就会...

这份2023软件测试面试技巧,助你拿下满意offer

2023-02-02
阅读 2 分钟
345
求职,就像打仗,不仅是一场挑战自己的战斗,也是一场与用人单位的较量。而求职者只有准备足够充分,才能在这场毫无硝烟的“战场”上取得胜利。那么软件测试面试需要做哪些准备以及软件测试面试需要哪些技巧呢?1、熟悉岗位技术性问题可以通过专业题库APP/小程序(安利一个专业性很强的柠檬班软件测试题库,是培训机构旗下...

CompletableFuture实现异步编排

2023-02-01
阅读 10 分钟
630
场景:电商系统中获取一个完整的商品信息可能分为以下几步:①获取商品基本信息 ②获取商品图片信息 ③获取商品促销活动信息 ④获取商品各种类的基本信息 等操作,如果使用串行方式去执行这些操作,假设每个操作执行1s,那么用户看到完整的商品详情就需要4s的时间,如果使用并行方式执行这些操作,可能只需要1s就可以完成。...

必知!这些软件测试的面试技巧,你必定用得上

2023-01-19
阅读 1 分钟
405
对于面者来说如何顺利的通过面试,拿到心仪的offer,是大家最关心的,而面试,除了自身能力外,事先充分的准备也是十分有必要,所以以下这些软件测试的面试技巧,你要提前知道! 熟悉简历在面试之前一定要认真过一遍自己的简历。技术层面基本上问的都是你简历上写的内容,例如你简历上有个模块是[专业技能]列举了我会什...

Java:构建简单的速率限制器

2023-01-16
阅读 6 分钟
530
速率限制现实世界中的用户是残暴的,并且没耐心,充满着各种不确定性。在高并发系统中,可能会出现服务器被虚假请求轰炸的情况,因此您可能希望控制这种情况。一些实际使用情形可能如下所示:

不规范使用ThreadLocal导致的bug,说多了都是泪

2023-01-11
阅读 2 分钟
428
ThreadLocal一般用于线程间的数据隔离,通过将数据缓存在ThreadLocal中,可以极大的提升性能。但是,如果错误的使用Threadlocal,可能会引起不可预期的bug,以及造成内存泄露。因为线程重用导致的信息错乱的bug有时我们会在一个接口中缓存某些数据到ThreadLocal中,但是我们要意识到,处理请求的这些线程是由tomcat提供...

有了这些软件测试面试话术,offer想不拿到都难

2023-01-10
阅读 2 分钟
364
软件测试是一个复杂且重要的技术岗位,因此,大多数互联网企业在面试时,都会严谨对待每一个面试者。而,作为即将去进行面试测试人来说,想要在面试中,沉着稳定地回答好面试官们提出的问题,前期的软件测试面试话术准备就少不了。那么有哪些有用的软件测试面试话术可以用上呢?接下来跟着我的脚步一起来看看吧! 一、自...

更简洁的参数校验,使用 SpringBoot Validation 对参数进行校验

2023-01-09
阅读 8 分钟
414
在开发接口时,如果要对参数进行校验,你会怎么写?编写 if-else 吗?虽然也能达到效果,但是不够优雅。今天,推荐一种更简洁的写法,使用 SpringBoot Validation 对方法参数进行校验,特别是在编写 Controller 层的方法时,直接使用一个注解即可完成参数校验。示例代码:spring-validation-demo: SpringBootValidation ...

如何保证接口幂等性?

2023-01-05
阅读 3 分钟
549
什么是接口幂等性?首先看看幂等性的概念:幂等性原本是数学上的概念,用在接口上就可以理解为:同一个接口,多次发出同一个请求,必须保证操作只执行一次。调用接口发生异常并且重复尝试时,总是会造成系统所无法承受的损失,所以必须阻止这种现象的发生。比如下面这些情况,如果没有实现接口幂等性会有很严重的后果:...

建议收藏!初级软件测试面试题及题库答案,你肯定用得上

2023-01-04
阅读 2 分钟
409
软件测试的面试过程中,面试官往往都会根据你面试的职位,提问一些相关的软件测试知识,而很多人为了能够提高的自己在面试当中的通过率,都会在面试前做好充足的准备。  比如刷面试题,背答案、准备面试话术这些。今天,我就根据大家的需求为你们整理了一些高频初级软件测试面试必备的基础问题答案以及一个免费的刷题小...

MyBatisPlus代码生成器

2023-01-03
阅读 7 分钟
1.3k
代码生成器AutoGenerator 是 MyBatis-Plus 的代码生成器,通过 AutoGenerator 可以快速生成 Entity、Mapper、Mapper XML、Service、Controller 等各个模块的代码,极大的提升了开发效率。环境准备创建一个employee表SET FOREIGN_KEY_CHECKS=0;DROP TABLE IF EXISTS employee;CREATE TABLE employee ( id bigint(20) NOT ...

高性能网关基石——OpenResty

2022-12-30
阅读 4 分钟
1.1k
什么是 OpenRestyOpenResty 一个基于 Nginx 的高性能 Web 平台,能够方便地搭建处理超高并发的动态 Web 应用、 Web 服务和动态网关。例如有名的 Kong 网关和国产新秀 ApiSIX 网关都是基于 OpenResty 来进行打造的。

新手收藏!这个软件测试面试题库小程序不仅功能多,还免费

2022-12-29
阅读 2 分钟
538
有没有软件测试面试题库小程序?相信这是很多准备找工作的新手测试人都想要知道的吧!今天,我就根据大家的需求,为大家整理了一些有关初级软件测试的面试题目以及一个可以免费刷题的题库,希望能帮助你们早日拿下心仪的offer。 首先是免费的刷题题库这也是我近期在整理相关资料时,无意间看到的,进去测试下,发现功能...

5种高大上的yml文件读取方式,你知道吗?

2022-12-28
阅读 9 分钟
951
1、Environment在Spring中有一个类Environment,它可以被认为是当前应用程序正在运行的环境,它继承了PropertyResolver接口,因此可以作为一个属性解析器使用。先创建一个yml文件,属性如下:person: name: hydra gender: male age: 18复制代码使用起来也非常简单,直接使用@Autowired就可以注入到要使用的类中,然后调...
封面图

如何快速实现 BitSail Connector?

2022-12-26
阅读 4 分钟
543
目录结构首先开发者需要通过 git 下载最新代码到本地,并导入到 IDE 中。同时创建自己的工作分支,使用该分支开发自己的 Connector。项目地址:github.com/bytedance/b…项目结构如下: