自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

了解➔熟悉➔掌握➔精通

为之,则难者亦易矣;不为,则易者亦难矣。

  • 博客(1184)
  • 收藏
  • 关注

原创 MySQL的索引是如何实现的

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击http://www.captainbed.netMySQL中索引分三类:B+树索引、Hash索引、全文索引。InnoDB存储引擎中用的是B+树索引。要介绍B+树索引,不得不提二叉查找树、平衡二叉树和B树这三种数据结构。B+树是从它们三个演化来的。二叉查找树:图中为user表建立了一个二叉查找树的索引。节点中存储了键(key)和数据(data)。数据对应user表中的行数据。如果查找id=12

2022-01-04 21:39:17 37782 20

原创 Java-ThreadLocal(看这一篇就够了)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net1、什么是ThreadLocalThreadLocal class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its get or set

2020-12-17 15:13:09 22752 1

原创 Java-通俗易懂地理解HashMap的原理

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net一、HashMap的节点HashMap是一个集合,键值对的集合,源码中每个节点用Node<K,V>表示。 static class Node<K,V> implements Map.Entry<K,V> { final int hash; final K key;

2020-11-25 18:27:44 21650

原创 Java-理解volatile关键字(看这一篇就够了)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net一、内存模型如果一个变量在多个CPU中都存在缓存(一般在多线程编程时才会出现),那么就可能出现缓存不一致的问题。缓存不一致性问题通常有以下2种解决方法:1、通过在总线加LOCK锁的方式CPU和其他部件进行通信都是通过总线来进行的,当总线上发出了LCOK锁的信号,那么只有等待代码完全执行完毕之后,其他CPU才能从变量所在的内存读取变量,然后进行相

2020-08-10 16:22:32 21807

原创 阿里云RPA干货系列之二:认识RPA(下)

目前的国内外RPA技术的应用已经日趋成熟,该技术的应用可让企业员工通过开发RPA机器人应用来捕获现有应用程序处理交易,操纵数据,与其他信息系统进行通信等,任何采用大规模人力执行的大量重复性工作,现在都可以由RPA机器人代劳,节省人力、金钱和时间。眼睛,利用OCR、图像识别、语义识别等技术,RPA机器人可以“阅读”打印和手写的文字,实现例如发票识别,身份证识别,银行卡识别等功能,在过去两年我的团队已经开发了利用Google OCR和微软认知服务实现图像识别和文字识别功能。

2025-07-16 15:21:52 821

原创 阿里云RPA干货系列之一:认识RPA(上)

随着企业经营业务的多元化和复杂化,业务流程变得越来越复杂,在企业内部信息孤岛随处可见,RPA的出现可以整合各个相关业务流,通过自动化的手段将业务流程的上下游串接起来,形成小规模的业务闭环。综上所述,RPA在企业数字化转型和提升业务效能方面发挥着重要的作用,通过RPA项目的快速实施和交付上线,能够迅速推动企业业务流程的自动化进程,为企业持续创造价值,使企业员工能够从大量重复、繁琐的工作中得以解放出来,更专注于具有更高附加值的数据分析、决策和创新工作,提高企业在市场上的竞争力,实现共赢。

2025-07-16 14:30:33 949

原创 测试用例好难写怎么办?

测试用例写清楚了测试什么,怎么测,测试人员按照测试用例的编写去执行,会非常明确,执行的过程和结果都是可控的,杜绝不同的人对测试场景认识的偏差。要把预期结果写清楚。比如商城app里的,用户登录->搜索商品->加购物车->下单->支付->查看订单,这条核心业务线上的功能,就属于P0级。比如商城app里的,用户登录->搜索商品->加购物车->下单->支付->查看订单,这条核心业务线上的功能,就属于P0级。实际工作中,我们无需思考,因为产品需求文档(产品经理提供,简称PRD)都会规划清楚,只需要按照要求填写即可。

2025-07-08 20:01:53 576

原创 假如拿到锁之后,超时了,还没释放,这个时间该怎么设置?

但是有时候业务会因为 gc 等异常,导致延迟,这样会让锁提前过期了,所以最好可以考虑用 redssion 来实现分布锁,它自带 watchdog 机制,会对。分布锁的过期时间过短可能导致业务未执行完锁就被释放(引发并发问题),时间过长则可能因实例崩溃导致锁无法及时释放(阻塞其他请求),所以最好。分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!,避免锁过期了,而业务还在执行的事情发生。:确保业务逻辑能在锁自动释放前完成。人工智能教程​​​​。

2025-06-27 10:11:00 217

原创 Redis怎么实现分布式锁的?

Redis 本身可以被多个客户端共享访问,正好就是一个共享存储系统,可以用来保存分布式锁,而且 Redis 的读写性能高,可以应对高并发的锁操作场景。锁变量的值需要能区分来自不同客户端的加锁操作,以免在释放锁时,出现误释放操作,所以,我们使用 SET 命令设置锁变量值时,每个客户端设置的值是一个唯一值,用于标识客户端;可以看到,解锁是有两个操作,这时就需要 Lua 脚本来保证解锁的原子性,因为 Redis 在执行 Lua 脚本时,可以以原子性的方式执行,保证了锁释放操作的原子性。人工智能教程​​​​。

2025-06-27 10:07:28 600

原创 ZooKeeper听说过吗?

当一个客户端需要获取锁时,它会在 ZooKeeper 中创建一个临时顺序节点,然后检查自己创建的节点是否是序号最小的节点,如果是,则表示获取到了锁;如果不是,则等待前一个节点释放锁。例如,一个由多个微服务组成的系统,各个服务实例可以从 ZooKeeper 中获取统一的配置,当配置更新时,ZooKeeper 会通知所有相关服务重新加载配置。在这个阶段,集群会选举出新的领导者,并确保在新领导者产生之前,不会处理新的写请求。:在创建时,ZooKeeper 会为其名称添加一个单调递增的序号,保证节点创建的顺序性。

2025-06-27 10:00:45 498

原创 MySQL的锁你知道哪些?

Next-Key Lock 称为临键锁,是 Record Lock + Gap Lock 的组合,锁定一个范围,并且锁定记录本身。表锁:通过lock tables 语句可以对表加表锁,表锁除了会限制别的线程的读写外,也会限制本线程接下来的读写操作。元数据锁:当我们对数据库表进行操作时,会自动给这个表加上 MDL,对一张表进行 CRUD 操作时,加的是。而且记录锁是有 S 锁和 X 锁之分的,满足读写互斥,写写互斥。,这样在备份数据库期间,不会因为数据或表结构的更新,而出现备份文件的数据与预期的不一样。

2025-06-27 09:52:21 604

原创 那主从复制出现网络问题怎么办,比如数据延迟这些问题?

分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!:对于大事务或资源密集型操作,直接在主库上执行,避免从库的额外延迟。人工智能教程​​​​。

2025-06-27 09:48:44 432

原创 比如你有订单详情页,下单页这种,怎么区分读写?

分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!订单详情页可接受短暂延迟(如1秒内),如果需强一致性可强制走主库。,通过AOP或中间件自动路由。人工智能教程​​​​。:订单详情、列表查询。

2025-06-27 09:47:12 183

原创 你提到了读写分离,怎么做?

从库会创建一个专门的 I/O 线程,连接主库的 log dump 线程,来接收主库的 binlog 日志,再把 binlog 信息写入 relay log 的中继日志里,再返回给主库“复制成功”的响应。MySQL 主库在收到客户端提交事务的请求之后,会先写入 binlog,再提交事务,更新存储引擎中的数据,事务提交完成后,返回给客户端“操作成功”的响应。从库会创建一个用于回放 binlog 的线程,去读 relay log 中继日志,然后回放 binlog 更新存储引擎中的数据,最终实现主从的数据一致性。

2025-06-27 09:42:17 373

原创 数据库怎么优化,比如一个DB可能在20000TPS?

搭建主从架构, 利用数据库的读写分离,Web服务器在写数据的时候,访问主数据库(master),主数据库通过主从复制将数据更新同步到从数据库(slave),这样当Web服务器读数据的时候,就可以通过从数据库获得数据。也可以将字段多的表分解成多个表,有些字段使用频率高,有些低,数据量大时,会由于使用频率低的存在而变慢,可以考虑分开。:引入缓存层,如Redis,存储热点数据和频繁查询的结果,但是要考虑缓存一致性的问题,对于读请求会选择旁路缓存策略,对于写请求会选择先更新DB,再删除缓存的策略。

2025-06-26 20:53:50 234

原创 如果有一条走索引的SQL有千万数据,比如userID、phoneNumber这种,你觉得时间多长是合理的?

分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!(SSD 顺序读性能约 500MB/s,千万数据索引体积通常较小)。(假设索引体积 500MB,顺序读速度 500MB/s),(SSD 环境下随机 I/O 开销可控)。(机械磁盘顺序读速度约 100MB/s)。(如主键索引命中缓冲池)。(顺序扫描索引叶子链表)。

2025-06-26 20:47:49 230

原创 MySQL慢查询优化,怎么找慢SQL的?

可以通过 MySQL 的慢查询日志,定位到慢查询的 SQL,然后针对慢查询的 SQL,使用EXPLAIN命令分析SQL执行计划,找出慢查询的原因,比如是否使用了全表扫描,是否存在索引未被利用的情况等,并根据相应情况对索引进行适当修改。分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!

2025-06-26 20:39:08 249

原创 什么场景可能会用到B树?还是说B树的设计就是为了衬托B+树的?

B 树的节点可以存储数据和键值,在进行随机查找时,有可能在非叶子节点就找到目标数据,平均查找次数相对较少,能够充分利用内存的高速读写特性,快速定位和访问数据,因此适用于对随机访问性能要求极高的内存数据库场景。B 树的结构相对简单,插入和删除操作相对容易实现,能够有效地组织和管理文件系统中的文件和目录信息,快速实现文件的查找、创建、删除等操作。B树不是陪衬,而是互补,B树牺牲部分范围查询性能,换取更均衡的读写效率和内存紧凑性。写操作优化:在频繁更新场景下,B树的局部性更好,减少分裂和合并的开销。

2025-06-26 20:35:52 326

原创 你提到的双向链表,它有什么好处?

分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!B+ 树的叶子节点之间是用「双向链表」进行连接,这样的好处是既能向右遍历,也能向左遍历。

2025-06-26 20:32:45 179

原创 B+树是什么?和B树区别在哪里?它俩的好处有什么?

因为数据都集中在叶子节点,且树的高度相对较低,所以在进行数据查询时,需要读取的磁盘块数较少,能够有效减少磁盘 I/O 操作,提高查询性能。:B 树可以在非叶子节点找到数据,而 B + 树必须遍历到叶子节点才能找到数据。:B + 树的结构更加稳定,因为内部节点不存储数据,只存储键值和指针,所以在插入和删除数据时,节点的分裂和合并操作相对较少,从而减少了树结构的调整,提高了系统的稳定性和可靠性。:B 树的每个节点都可以存储数据和键值,而 B + 树的数据只存储在叶子节点,非叶子节点仅存储键值和指针。

2025-06-26 19:56:05 621

原创 MySQL索引分类有哪些?

如果用到了索引,那么查询的时候,可以基于二分查找算法,通过索引快速定位到目标数据。MySQL索引的数据结构一般是B+树,其搜索复杂度为O(logdN),其中 d 表示节点允许的最大子节点个数为 d 个。分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!如果查询的时候,没有用到索引就会全表扫描,这时候查询的时间复杂度是O(n)。索引类似于书籍的目录,可以减少扫描的数据量,提高查询效率。MySQL可以按照四个角度来分类索引。

2025-06-26 19:08:13 221

原创 TCP粘包和拆包是什么?怎么解决?

当接收方接收到包头的大小(比如 4 个字节)后,就解析包头的内容,于是就可以知道数据的长度,然后接下来就继续读取数据,直到读满数据的长度,就可以组装成一个完整到用户消息来处理了。这种是最简单方法,即每个用户消息都是固定长度的,比如规定一个消息的长度是 64 个字节,当接收方接满 64 个字节,就认为这个内容是一个完整且有效的消息。有一点要注意,这个作为边界点的特殊字符,如果刚好消息内容里有这个特殊字符,我们要对这个字符转义,避免被接收方当作消息的边界点而解析到无效的数据。希望你也加入到人工智能的队伍中来!

2025-06-26 19:03:08 860

原创 String是不可变的对吧,有什么好处?

分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!不可变,所以它的哈希码不会改变,这就避免了重复计算哈希码,提高了在哈希集合(如。当多个字符串字面量具有相同的值时,它们会引用常量池中的同一个。在多线程环境下使用时无需额外的同步机制,保证了线程安全。对象被创建,它的内容就不能被改变。对象不可变,所以多个线程能够同时访问同一个。方法,并且会在创建对象时缓存其哈希码。对象,不用担心数据被修改。类是不可变的,也就是一旦一个。Java 的字符串常量池利用了。对象,从而节省了内存空间。

2025-06-26 18:55:03 301

原创 String a = new String(“123“)有哪些对象?

分享一个大牛的人工智能教程。希望你也加入到人工智能的队伍中来!对象,一个在字符串常量池中,另一个在堆内存中。时,Java 会先去字符串常量池查看是否已有值为。要是没有,就会在字符串常量池中创建一个。字符串常量池中的对象:当代码里出现字符串字面量。对象,那就只会在堆内存中创建一个新的。对象,此对象会复制字符串常量池中。运算符用于比较对象的引用,所以。语句会在堆内存里创建一个新的。方法用于比较对象的内容,所以。会在字符串常量池中创建一个。若已有,就直接使用该对象。会在堆内存中创建一个新的。

2025-06-26 18:52:10 774

原创 MyBatis入门

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​。

2025-05-29 14:24:37 860

原创 Java中的堆和栈的区别是什么?分别放的是什么数据?

在方法调用时,会为该方法分配栈帧,方法执行结束后,栈帧会被自动弹出,释放内存。内存的分配和回收由垃圾回收器(GC)负责,当对象不再被引用时,GC 会在合适的时候回收该对象占用的内存。访问速度相对较慢,因为堆内存的分配是动态的,需要进行内存查找和管理。访问速度快,因为栈内存是连续分配的,并且栈指针的移动操作简单高效。每个线程都有自己独立的栈空间,栈空间一般较小,通常只有几 MB。内存是所有线程共享的,空间较大,可通过 JVM 参数进行调整。关键字创建的对象,还是数组,都会在堆上分配内存。

2025-04-07 17:23:35 356

原创 JGit基本使用

分享一个大牛的教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​​​​​‌JGit是一个用于在Java中操作Git仓库的库,它提供了一组Java库和API,使开发人员可以在他们的Java应用程序中使用Git功能‌。JGit由Eclipse基金会开发和维护,是完全用Java实现的,没有外部依赖,因此可以轻松地与Java项目集成。JGit支持各种操作系统,包括Windows、Linux和Mac等‌。

2025-03-17 10:26:56 847

原创 War包和Jar包有什么区别

JAR包和WAR包在Java开发中各有用途。JAR包适用于普通Java应用程序或库的打包,具有独立运行的特点,适合快速迭代和部署。而WAR包专门用于Web应用程序的打包,需要部署到Web服务器中,能够充分利用服务器的管理和优化能力。开发者应根据项目的具体需求选择合适的打包方式。t=P1C7人工智能教程​​​​https://www.captainai.net/

2025-03-16 14:15:56 767

原创 Maven-如何开发一个Maven插件(Mojo)

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​​​Maven是当下最流行的项目管理工具,其丰富的插件为我们的工作带来了很大的便利。但是在一些情况下,开源的插件并不能完全满足我们的需求,我们需要自己创建插件,本文就从0开始带大家一起创建自己的插件。

2025-03-12 10:58:21 1288

原创 jGit-比较代码差异

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​​​​在Java中使用jGit库比较代码差异是一项常见的任务,特别是在进行版本控制时。jGit是Git的纯Java实现,允许你通过Java代码操作Git仓库。

2025-03-10 20:18:24 600

原创 BCEL与Java字节码操作

大家好,我是小黑,咱们今天来聊聊Apache Commons BCEL(Byte Code Engineering Library)。你可能会问,BCEL是什么鬼?别急,小黑这就给你娓娓道来。BCEL,它是一款专门用来操作Java字节码的库。想象一下,Java代码编译后变成了字节码,这些字节码是Java虚拟机执行的真正“源代码”。有了BCEL,咱们就能像变魔术一样,对这些字节码进行读取、修改,甚至创造出全新的字节码!那为啥要搞字节码呢?这事儿得从Java的运行原理说起。

2025-03-10 19:12:56 1248

原创 一文讲清BO、PO、VO、DTO

为什么我们通篇没有讲关于VO的事情呢?我个人的理解是DTO能解决的事情就没有必要再加一个VO,我们可以弄一个全局配置,将DTO里面为null值的字段全都过滤掉。这样就没有必要将数据传给前端的时候再多加一个VO。给出代码示例,这样配置就可以把DTO中为null的值过滤掉,不会序列化发给前端。@Override/*** 自定义mappingJackson2HttpMessageConverter* 目前实现:空值忽略,空字段可返回*/t=P1C7。

2025-03-10 16:40:35 668

原创 精准测试实践

分享一个大牛的教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​。

2025-02-19 14:17:13 883

原创 如何使用WireMock搭建一个HTTP模拟器

WireMock 是一个HTTP模拟服务,其核心也是一个WEB服务,WireMock主要是为特定请求提供固定的返回值。WireMock可以作为单独进程启动,模拟一个WEB服务器,提供一些API访问,并返回特定的返回值。也可以作为第三方库在项目中使用。下面我们先介绍以下WireMock模拟WEB服务器的使用吧。WireMock可以快速搭建Web服务,可以模拟开发测试需要的各种请求,使用十分方便。对于维护测试环境稳定以及提高开发效率方面都有不错的效果。t=P1C7。

2025-02-18 17:14:41 1620

原创 网易严选的精准测试实践

借助一定的技术手段、通过辅助算法对传统软件测试过程进行可视化、分析及优化的过程,使得测试过程更加可视化、智能、可信和精准。

2025-02-17 17:22:54 1175

原创 优酷服务端精准测试体系

通过聚合分析应用过去一周的线上流量,可以获取应用的全部代码调用链路,然后通过匹配主干代码知识库,获取链路上每个方法的知识库ID,最后以图形结构(点、边)对调用链路做结构化存储,从而可以实时计算每条链路的长度、深度、热度,以及从应用、入口、链路等维度,计算方法热度、调用热度。以应用Java方法为观测对象,通过静态分析识别变更的Java方法,通过动态采集获取线上Java方法调用链路,然后基于代码知识库的方法匹配,精准分析变更影响的Java方法调用链路,并基于影响的链路推荐测试流量,评估测试覆盖率的测试体系。

2025-02-17 16:52:51 1147

原创 走出回归测试困境,爱奇艺精准测试体系建设

分析测试的用例是否完全覆盖了变更代码,如果没有覆盖,可以通过一些方法帮助用例的手工补充,甚至自动生成用例进行补充。

2025-02-17 15:01:34 789

原创 搜狗精准测试实践-输入法开关下发

由于和不同手机渠道商合作,输入法对于不同的渠道,会下发不同开关,比如vivo手机会下发vivo开关,小米手机会下发小米开关。本次改动主要对服务器的下发逻辑进行了重构。需要进行回归测试。‍。

2025-02-14 16:39:03 982

原创 字节跳动精准测试实践,SmartEye背后的设计逻辑

在移动互联网高度发展下,移动APP趋近于大型化,功能也趋近于复杂化,诸如各种国民级应用,功能/玩法等迭代不停,其背后对应的研发协作团队也非常庞大。在此种场景下,依靠人力堆叠去保障产品质量,并非最优解,在软件规模达到某个临界点之后,问题逃逸将无法避免。字节跳动在代码覆盖率监测平台基础上,建立了SmartEye-智能化精准中台,帮助研发团队快速定位代码变更影响域,精准推荐测试用例/自动化巡检任务,为业务减负,为研发团队提效。目前,SmartEye精准引擎每日推荐用例数1K+,效率提升约40%。

2025-02-14 16:20:30 1012

原创 混沌测试基础知识

分享一个大牛的人工智能教程。零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请轻击人工智能教程​。

2025-02-13 15:58:14 981

空空如也

空空如也

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

TA关注的人

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