WangBai_社区达人页

个人头像照片
WangBai
已加入开发者社区146

勋章 更多

个人头像照片
专家博主
专家博主
个人头像照片
星级博主
星级博主
个人头像照片
技术博主
技术博主
个人头像照片
江湖新秀
江湖新秀

成就

已发布81篇文章
14条评论
已回答0个问题
0条评论
已发布0个视频
github地址

我关注的人 更多

技术能力

兴趣领域
擅长领域
技术认证

暂时未有相关云产品技术能力~

暂无个人介绍

暂无精选文章
暂无更多信息

2024年12月

  • 12.04 20:47:39
    发表了文章 2024-12-04 20:47:39

    为什么MySQL索引结构是B+tree ?

    在MySQL中,为了提高检索效率和稳定性,采用了B+树作为索引的数据结构。相比二叉树或B树,B+树的非叶子节点仅存储key和指针,使得每页能容纳更多key,树的层级更浅,检索更快;所有数据集中在叶子节点,形成双向链表,利于区间查询。以16KB页为例,三层B+树可容纳约2190万条数据。
  • 12.04 20:46:28
    发表了文章 2024-12-04 20:46:28

    Cookie会话跟踪的原理

    会话跟踪技术包括Cookie和Session。Cookie是客户端技术,首次访问时服务器通过Set-Cookie响应头发送Cookie,浏览器保存并在后续请求中通过Cookie请求头回传,实现会话跟踪。但Cookie易被用户修改或禁用,安全性较低。Session则是服务器端技术,每次会话生成唯一的Session ID,通过Cookie传递给客户端,客户端在后续请求中携带此ID,服务器据此识别会话。Session更安全,但在集群环境中需解决会话共享问题。
  • 12.04 20:44:40
    发表了文章 2024-12-04 20:44:40

    字符串反转

    该段代码源自LeetCode 344题,涉及字符串反转问题,并可延伸至LeetCode 151题(反转单词)。采用双指针方法,通过初始化两个指针分别指向数组的首尾,然后不断交换两指针所指元素,直至两指针相遇,完成字符串或数组的反转操作。示例代码展示了如何使用此方法实现字符串的反转功能。
  • 12.04 20:43:24
    发表了文章 2024-12-04 20:43:24

    常见的排序算法

    简介:本文介绍了排序算法的基础知识,包括常见的几种排序方法及其时间复杂度,特别区分了基于比较和非比较的排序算法。对于初学者,建议掌握基本概念;而对于进阶学习者,则需深入了解各类算法的特点、适用场景及其实现细节,如快排、归并在不同数据条件下的表现,以及非比较排序算法在特定情况下的优势。
  • 12.04 20:42:20
    发表了文章 2024-12-04 20:42:20

    项目中密码如何存储?

    密码存储安全至关重要。直接存储明文或仅使用MD5、SHA-2等哈希算法存在彩虹表攻击风险。为增强安全性,可提示用户设置复杂密码,或在密码中加入“盐值”并多次迭代哈希,增加破解难度。BCrypt算法因其多重迭代、加盐及可调成本因子,成为更安全的选择。
  • 12.04 20:41:33
    发表了文章 2024-12-04 20:41:33

    对称加密、非对称加密、哈希摘要

    对称加密使用同一密钥进行加解密,速度快但需保密;非对称加密采用公钥加密、私钥解密,公钥可公开,安全性高但速度较慢,双向通信需双方各持一对密钥;哈希摘要是从数据中提取特征,用于数据完整性校验,不同数据的哈希值几乎不会相同。

2024年11月

  • 11.24 16:29:20
    发表了文章 2024-11-24 16:29:20

    使用Kafka? 有什么好处 ?

    选择Kafka作为中间件,因其高吞吐量适合处理大量用户行为数据,支持实时推荐和运营看板展示。Kafka优点包括提升吞吐量、故障隔离、低耦合度和流量削峰,但也增加了架构复杂性和对Broker的依赖。
  • 11.24 16:28:36
    发表了文章 2024-11-24 16:28:36

    RabbitMQ的高可用机制 ?

    RabbitMQ基于Erlang语言,支持集群模式。普通集群通过分布式队列提高并发,但队列不在访问节点时需跨节点传递,且队列节点宕机会导致消息丢失。镜像集群在普通集群基础上增加主从备份,确保数据高可用,主节点故障时镜像节点可接替工作。
  • 11.24 16:27:41
    发表了文章 2024-11-24 16:27:41

    使用RabbitMQ如何保证消息不丢失 ?

    RabbitMQ通过发布者确认、回执机制、消息持久化及消费者确认等方案,确保消息从发送到接收的每个环节都能有效防止丢失。即便如此,特殊情况下仍可能丢失,如系统故障等。为此,可设计消息状态表,记录消息ID、内容、交换机、路由键、发送时间和签收状态等,结合定时任务检查并重发未签收消息,以进一步提升消息传输的可靠性。
  • 11.24 16:23:36
    发表了文章 2024-11-24 16:23:36

    什么情况下不应该创建索引?

    索引优化策略:避免为不常查询、低基数、或特定数据类型(如text, image, bit)的列创建索引,以免增加系统负担而无明显查询性能提升。当数据修改频率远高于查询时,也应避免创建索引。
  • 11.24 16:22:55
    发表了文章 2024-11-24 16:22:55

    如何解决数据库高并发问题?

    在Web服务框架中加入缓存层,存储高频访问数据,减轻数据库读取负担;增加数据库索引提升查询速度,但需注意索引数量;实施主从读写分离,优化数据处理;对数据库进行拆分,缩小表规模以加快查询;采用分布式架构,有效分散计算压力。
  • 11.24 16:21:47
    发表了文章 2024-11-24 16:21:47

    三大范式的特点

    第一范式确保数据库表中每列都是不可分割的基本数据项,无重复列;第二范式在满足第一范式基础上,要求每个实例被唯一标识,属性完全依赖于主键;第三范式在满足第二范式基础上,排除非主键信息的冗余,避免数据重复。
  • 11.24 15:39:34
    发表了文章 2024-11-24 15:39:34

    InnoDB与MyISAM实现索引方式的区别

    InnoDB和MyISAM均采用B+树索引,但在实现上有所不同。InnoDB的主键索引在叶子节点存储完整数据记录,辅助索引则存储主键值;而MyISAM的主键索引与数据文件分离,仅存数据地址,且主辅索引无区别,支持非唯一主索引。
  • 11.24 15:38:08
    发表了文章 2024-11-24 15:38:08

    数据库索引采用B+树不采用B树的原因

    B+树相较于B树,在数据存储、磁盘读写、查询效率及范围查询方面更具优势。数据仅存于叶子节点,便于高效遍历和区间查询;内部节点不含数据,提高缓存命中率;查询路径固定,效率稳定;特别适合数据库索引使用。
  • 11.24 15:21:30
    发表了文章 2024-11-24 15:21:30

    微信通知

    本文档介绍了通过企业微信API发送消息所需的前置条件及步骤,包括获取access_token和发送消息的具体Java代码示例。前置条件涉及企业微信与小程序的相关配置信息,如appId、secret等。示例代码展示了如何异步处理请求,并解析响应数据以获取用户列表,同时提供了处理医生编号的辅助方法。
  • 11.24 15:20:04
    发表了文章 2024-11-24 15:20:04

    发布模式

    蓝绿部署是一种应用发布技术,旨在减少发布时的中断时间和快速回滚。它通过维护两个几乎相同的生产环境(蓝绿系统)来实现,其中一个处于活动状态(绿色),另一个待命(蓝色)。新版本先在蓝色环境中测试,确认无误后切换用户至该环境,若发现问题可迅速回滚至绿色环境。此策略适用于内聚性较强的系统,对于复杂系统则需额外考量数据同步等问题。
  • 11.24 15:19:07
    发表了文章 2024-11-24 15:19:07

    类加载顺序

    本题考察Java类加载顺序及多态特性。类加载时,先加载父类静态块,再加载子类静态块,随后按顺序加载父类非静态块、父类构造函数、子类非静态块及子类构造函数。多态情况下,`Base b = new Sub();` 表现为编译时父类特性,运行时子类特性。若子类覆盖父类方法,在父类构造函数中调用该方法时,实际调用的是子类的方法,但此时子类未完全初始化,导致子类变量未赋值,故输出 `null`。示例代码中,因子类构造器未显式调用父类构造器,导致编译错误,需添加 `super("s");` 解决。
  • 11.24 15:18:06
    发表了文章 2024-11-24 15:18:06

    有效的括号

    本题要求判断一个仅包含 '(', ')', '{', '}', '[', ']' 的字符串是否为有效字符串。有效条件是:每个左括号必须被相同类型的右括号正确闭合。空字符串视为有效。示例代码通过栈结构实现,遍历字符串中的每个字符,遇到左括号则将对应的右括号压入栈中,遇到右括号时检查栈顶元素是否匹配,最终栈为空则字符串有效。
  • 11.24 15:17:15
    发表了文章 2024-11-24 15:17:15

    盛最多水的容器

    给定 n 个非负整数,每个数代表坐标中的一个点 (i, ai),画 n 条垂直线,寻找两条线与 x 轴构成的容器能容纳最多的水。此问题通过双指针法解决,初始指针分别位于数组两端,逐步向内移动较短的线,同时更新最大面积,直至两指针相遇。示例代码展示了 Java 实现,有效解决了该问题。
  • 11.24 15:16:31
    发表了文章 2024-11-24 15:16:31

    整数转罗马数字

    罗马数字由 I、V、X、L、C、D、M 七种字符组成,分别代表 1、5、10、50、100、500、1000。通常小数值位于大值右侧,如 12 表示为 XII;特殊情况下,小值位于大值左侧表示减法,如 4 表示为 IV。转换规则适用于 1 至 3999 的整数。
  • 11.24 15:15:40
    发表了文章 2024-11-24 15:15:40

    回文数

    本题要求判断一个整数是否为回文数,即正序和倒序读都相同。示例包括:121 (true), -121 (false), 10 (false)。进阶挑战是在不将整数转换为字符串的情况下解决问题。给出的 Java 代码通过将整数转换成字符串并反转比较实现功能。
  • 11.24 15:14:53
    发表了文章 2024-11-24 15:14:53

    字符串转换整数 (atoi)

    实现一个 `atoi` 函数,用于将字符串转换成整数。函数首先去除字符串前导空格,然后根据首个非空字符(正/负号或数字)决定转换规则,最终生成一个有符号整数。若字符串无效或超出 32 位有符号整数范围,则返回 0 或边界值(`INT_MAX` 或 `INT_MIN`)。示例包括处理前导空格、正负号、多余字符及超范围值等情形。
  • 11.24 15:14:06
    发表了文章 2024-11-24 15:14:06

    整数反转

    题目要求将32位有符号整数的每一位数字反转,并考虑溢出情况。提供了两种Java实现:一种通过字符串操作实现,另一种使用数学运算,后者更为高效且简洁。两种方法均在检测到溢出时返回0。
  • 11.24 15:12:56
    发表了文章 2024-11-24 15:12:56

    Z字形变换

    本题要求实现一个函数 `convert`,将给定字符串按指定行数以Z字形排列,再按行读取生成新字符串。示例中,字符串 "LEETCODEISHIRING" 在3行和4行下的变换结果分别为 "LCIRETOESIIGEDHN" 和 "LDREOEIIECIHNTSG"。Java代码通过列表存储每行字符,控制方向变化完成Z字形排列,最后合并各行得到结果。
  • 11.24 15:11:57
    发表了文章 2024-11-24 15:11:57

    最长回文子串

    给定字符串s,寻找其中最长的回文子串。通过动态规划解决,使用二维数组dp记录子串是否为回文,状态转移方程基于子串两端字符相同及内部子串是否回文。初始条件为单字符和双字符子串的判断。时间复杂度和空间复杂度均为O(n^2)。
  • 11.24 15:10:37
    发表了文章 2024-11-24 15:10:37

    正序数组中位数

    给定两个有序数组nums1和nums2,要求找到它们合并后的中位数,时间复杂度需达到O(log(m+n))。通过双指针法遍历两个数组,使用left和right变量记录遍历过程中的值,最终根据合并后数组长度的奇偶性返回中位数。此方法有效避免了直接合并数组带来的高时间复杂度问题。
  • 11.14 21:34:03
    发表了文章 2024-11-14 21:34:03

    SpringBoot自动装配的原理

    在Spring Boot项目中,启动引导类通常使用`@SpringBootApplication`注解。该注解集成了`@SpringBootConfiguration`、`@ComponentScan`和`@EnableAutoConfiguration`三个注解,分别用于标记配置类、开启组件扫描和启用自动配置。
  • 11.14 21:32:15
    发表了文章 2024-11-14 21:32:15

    Redis分布式锁如何实现 ?

    Redis分布式锁通过SETNX指令实现,确保仅在键不存在时设置值。此机制用于控制多个线程对共享资源的访问,避免并发冲突。然而,实际应用中需解决死锁、锁超时、归一化、可重入及阻塞等问题,以确保系统的稳定性和可靠性。解决方案包括设置锁超时、引入Watch Dog机制、使用ThreadLocal绑定加解锁操作、实现计数器支持可重入锁以及采用自旋锁思想处理阻塞请求。
  • 11.14 21:30:31
    发表了文章 2024-11-14 21:30:31

    Redis和Mysql如何保证数据⼀致?

    在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
  • 11.14 21:29:14
    发表了文章 2024-11-14 21:29:14

    Redis分片集群中数据是怎么存储和读取的 ?

    Redis集群采用哈希槽分区算法,共有16384个哈希槽,每个槽分配到不同的Redis节点上。数据操作时,通过CRC16算法对key计算并取模,确定其所属的槽和对应的节点,从而实现高效的数据存取。
  • 11.14 21:28:36
    发表了文章 2024-11-14 21:28:36

    Redis的数据淘汰策略有哪些 ?

    Redis 提供了 8 种数据淘汰策略,分为淘汰易失数据和淘汰全库数据两大类。易失数据淘汰策略包括:volatile-lru、volatile-lfu、volatile-ttl 和 volatile-random;全库数据淘汰策略包括:allkeys-lru、allkeys-lfu 和 allkeys-random。此外,还有 no-eviction 策略,禁止驱逐数据,当内存不足时新写入操作会报错。
  • 11.14 21:27:33
    发表了文章 2024-11-14 21:27:33

    Redis的数据过期策略有哪些 ?

    Redis 采用两种过期键删除策略:惰性删除和定期删除。惰性删除在读取键时检查是否过期并删除,对 CPU 友好但可能积压大量过期键。定期删除则定时抽样检查并删除过期键,对内存更友好。默认每秒扫描 10 次,每次检查 20 个键,若超过 25% 过期则继续检查,单次最大执行时间 25ms。两者结合使用以平衡性能和资源占用。
  • 11.14 21:26:23
    发表了文章 2024-11-14 21:26:23

    mysql的性能优化

    在数据库设计中,应选择合适的存储引擎(如MyISAM或InnoDB)、字段类型(如char、varchar、tinyint),并遵循范式(1NF、2NF、3NF)。功能上,可以通过索引优化、缓存和分库分表来提升性能。架构上,采用主从复制、读写分离和负载均衡可进一步提高系统稳定性和扩展性。
  • 11.09 18:40:36
    发表了文章 2024-11-09 18:40:36

    Java泛型类型擦除以及类型擦除带来的问题

    泛型擦除是指Java编译器在编译期间会移除所有泛型信息,使所有泛型类型在运行时都变为原始类型。例如,`List<String>` 和 `List<Integer>` 在JVM中都视为 `List`。因此,通过 `getClass()` 比较两个不同泛型类型的 `ArrayList` 实例会返回 `true`。此外,通过反射调用 `add` 方法可以向 `ArrayList<Integer>` 中添加字符串,进一步证明了泛型信息在运行时被擦除。
  • 发表了文章 2025-03-06

    成长和变化

  • 发表了文章 2025-03-06

    类加载

  • 发表了文章 2025-03-06

    技术人对抗焦虑的加减法(四)

  • 发表了文章 2025-03-06

    技术人对抗焦虑的加减法(二)

  • 发表了文章 2025-03-06

    技术人对抗焦虑的加减法(三)

  • 发表了文章 2025-03-06

    技术人对抗焦虑的加减法

  • 发表了文章 2024-12-04

    Mybatis映射关系

  • 发表了文章 2024-12-04

    什么情况下不应该创建索引?

  • 发表了文章 2024-12-04

    MySQL引擎InnoDB和MyISAM的区别?

  • 发表了文章 2024-12-04

    数据库分库分表的原因?

  • 发表了文章 2024-12-04

    数据库执行查询请求的过程?

  • 发表了文章 2024-12-04

    数据库的行级锁与表锁?

  • 发表了文章 2024-12-04

    InnoDB为什么使用自增id作为主键?

  • 发表了文章 2024-12-04

    脏读、幻读、不可重复读的定义?

  • 发表了文章 2024-12-04

    maven 用来做什么

  • 发表了文章 2024-12-04

    redis常见数据类型

  • 发表了文章 2024-12-04

    什么是聚簇索引及其优缺点?

  • 发表了文章 2024-12-04

    如果使用git产生了冲突,你是怎么解决的?

  • 发表了文章 2024-12-04

    数据库索引采用B+树不采用B树的原因?

  • 发表了文章 2024-12-04

    什么场景下要使用分布式锁

正在加载, 请稍后...
滑动查看更多
正在加载, 请稍后...
暂无更多信息
正在加载, 请稍后...
暂无更多信息