自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(204)
  • 资源 (1)
  • 收藏
  • 关注

原创 mysql索引最左匹配原则的理解?(绝对牛逼)

测试的时候就发现不对劲随便建了一个student表做测试。建了两个索引,故意这样建的。EXPLAIN SELECT * FROM student WHERE name='小红';依据mysql索引最左匹配原则,两个索引都匹配上了,这个没有问题。。EXPLAIN SELECT * FROM student WHERE cid=1 AND name='小红';为什么还能匹配索引。这是知乎上的一个问题,今天我们就带着这个问题来深入理解一下mysql索引最左匹配原则。

2024-04-24 17:59:37 397

原创 go的编译以及运行时环境

很多语言都有自己的运行时环境,go自然也不例外,那么今天我们就来讲讲go语言的运行时环境!注意💡:编译过程都干了些啥事可以去看看编译原理,中间码是平台无关的,机器码是平台相关的!我们都知道Java的运行时环境是jvm ,javascript的运行时环境是浏览器内核。,Runtime与用户程序没有明显界限,直接通过函数调用!那么go的运行时环境是什么样呢?说明编译的时候自带运行环境。这样就屏蔽了系统调用!

2024-04-22 18:40:27 421

原创 事务并发控制之说透mvcc

不知道有没有人有过这样的想法💡,为什么在MySQL中已经有了各种各样的锁了,还需要mvcc呢?如果你没有想过这个问题,那只能证明你真的没有想过。但是我的建议是可以去想一下,如果你从来没有想过这个问题的话,因为这个问题还挺重要的!思考清楚这个问题,将更有利于我们深入了解MySQL!接下来我将通过这篇文章向你讲述MVCC中各个方面的知识,保证让你一次看的爽,看的明白!从而更好的理解我开头提出来的问题!当前读它读取的数据库记录,都是当前最新的版本,会对当前读取的数据进行加锁,防止其他事务修改数据。是悲观锁。

2024-04-22 15:20:13 1040

原创 【面试题】MySQL 事务的四大特性说一下?

原子性子性意味着事务中的所有操作要么全部完成,要么全部不完成,它是不可分割的单位。如果事务中的任何一个操作失败了,整个事务都会回滚到事务开始之前的状态,如同这些操作从未被执行过一样。一致性确保事务从一个一致的状态转换到另一个一致的状态。比如在银行转账事务中,无论发生什么,转账前后两个账户的总金额应保持不变。假如 A 账户(100 块)给 B 账户(10 块)转了 10 块钱,不管成功与否,A 和 B 的总金额都是 110 块。隔离性意味着并发执行的事务是彼此隔离的,一个事务的执行不会被其他事务干扰。

2024-04-17 16:22:45 350

原创 如何在并发环境下生成一个只读的map?

在日常开发过程中,我们经常会遇到一些资源初始化的情况,往往有些资源就是那种我初始化以后我们就不希望被改动,但是我们又担心别人使用的时候不小心改动了,这时候我就在想,要是我们的JDK能提供一种不能被修改的容器改有多好,好死不死,jdk中还真有这样的容器,map和list都有,这里以map为例子给大家讲解一下!

2024-04-17 14:03:06 352

原创 java程序员开发过程中使用频率最高的50个Linux命令行(面试无忧)

以下是程序员开发过程中使用频率最高的50个Linux命令行:

2024-04-15 16:54:57 376

原创 【面试题】细说mysql中的各种锁

作为一名IT从业人员,无论你是开发,测试还是运维,在面试的过程中,我们经常会被数据库,数据库中最经常被问到就是MySql。当面试官问MySql的时候经常会问道一个问题,”MySQL中有哪些锁?“当我们去网上找相应的资料的时候却是五花八门,张三说的一个样,李四说的另一个样。like this…案例一:案例二:案例三:案例四:搞得我们都不知道他们说到底对不对,全不全,…于是我们非常之困惑,面试的时候不知如何作答,正是为了解决这个问题,我查阅了很多书籍,国内外资料,写下这篇文章,希望对你有所帮助。

2024-04-12 19:04:10 1357 1

原创 我为什么选择成为程序员?

我选择成为程序员不是兴趣所在,也不是为了职业发展,全是生活所迫!

2024-04-11 22:42:24 1261

原创 SpringBoot中定时任务踩坑,@Scheduled重复执行问题排查(看完直接破防)

今天再开发业务需求的过程中,需要用到定时任务,原本定的是每10分钟推送一次,可是当每次十分钟到的时候,定时任务就会推送多条!但是非常奇怪的是,本地调试的时候不会有问题,只有当你部署到到服务器上的时候才会暴露这个问题!!!!如图:这些消息都是一次性推送出来的,本来他们应该只有一条被推送出来的,可是现在他们却全都出来了,难道真是“一家人就要整整齐齐”吗?为什么本地调试我这样写和都只执行一次,而到线上的时候就会执行多次,有谁能知道这是为什么?

2024-04-10 18:49:02 813

原创 【面试题】微博、百度等大厂的排行榜如何实现?

至此我们已经知道了微博、百度得排行版是如何实现的,举一反三,大多大数据量下的排序我们都可以参考此实现方案!

2024-04-10 14:04:50 582

原创 在mysql中如何更新数据呢?

为了避免这些错误,在执行更新操作之前,仔细检查代码、验证数据、测试更新语句,并确保对数据库结构和权限有清晰的了解。语句结合适当的条件来实现。例如,如果你想将年龄大于 20 的用户的状态设置为。请谨慎使用这种方式,因为它会更新所有行的数据。在 MySQL 中,更新一条数据可以使用。子句,你可以根据具体的需求更新多条数据。子句中指定条件来确定要更新的多行数据。条件,只有满足条件的行才会被更新。如果你想更新多条数据,可以使用。子句:这将更新表中的所有数据。使用特定的条件:通过在。

2024-04-09 16:17:12 546

原创 【面试题】如何在级别用户中检查用户名是否存在?

普遍认同的规范是:value > 10kb,即认定为大 key,同时像list,set,hash 等容器类型的 redis key,元素数量 > 5000,即认定为大 key。

2024-04-08 17:46:03 801

原创 【面试题】如何在亿级别用户中检查用户名是否存在?

这种方案虽然实现了功能,但是这样做会带来一个比较致命的问题,那就是查询速度比较慢,亿级别数据是很大的,这时候还考虑mysql的话,他的查询速度将会非常慢,这样用户的体验将会非常不好,有人可能会说了呀,那你可以分库分表呀,是的,可以这么做,但是就算分库分表你还是得扫描整个库表,这种做法解决不了根本问题。普遍认同的规范是:value > 10kb,即认定为大 key,同时像list,set,hash 等容器类型的 redis key,元素数量 > 5000,即认定为大 key。需要更换一个,这是如何实现的呢?

2024-04-08 17:31:09 840

原创 【面试题】redis在工作中的使用场景有哪些?

前言:在实际工作中,Redis作为一种高性能的内存数据库和缓存系统,可以应用于多种场景,同时在面试过程中也经常被问到类似的问题,我们经常会被问的一脸懵逼,那今天我们就来总结一下redis的一些使用场景。:结合Redis的数据结构,如集合、有序集合和位图,实现快速的搜索索引、关键词匹配和过滤功能。:利用Redis的地理位置功能,存储和查询地理位置数据,实现附近的人、地点搜索等功能。:通过Redis的计数器和统计功能,实时记录和展示系统的性能指标、用户活动等数据。

2024-04-07 15:36:31 838

原创 【面试题】RocketMQ的工作流程?

此外,RocketMQ还提供了严格的消息顺序保证,确保同一分区内的消息按照发送顺序进行消费。Name Server维护了关于集群中的Broker(消息代理)的信息,包括主题和分区的路由信息。:消费者在处理完消息后,向Broker发送确认消息,告知Broker消息已经被成功消费。Broker根据确认消息的反馈,更新消费进度,以便在需要时重新传递未被确认的消息。Name Server提供了相应主题的路由信息,消费者根据路由信息连接到相应的Broker节点,并拉取消息。复制机制确保了消息的高可用性和容错性。

2024-04-07 15:14:00 166

原创 Spring与SpringBoot的区别

Spring Boot还提供了大量的开箱即用的特性和功能,如内嵌的服务器、自动配置、健康检查、度量指标、配置管理等,以简化开发者的工作。:Spring框架提供了丰富的模块和功能,但需要开发者手动集成和配置。:Spring框架需要开发者显式地进行大量的配置,而Spring Boot通过约定大于配置的原则,提供了默认配置和自动配置,减少了开发者的配置工作。需要注意的是,Spring Boot是建立在Spring框架之上的,它并不取代Spring框架,而是提供了更简化和快速开发的方式。

2024-04-03 14:51:47 247

原创 0基础如何进入IT行业?

在当今数字化的时代,IT 行业正迅速发展,吸引着众多人的关注。这也吸引很多人想通过进入IT行业淘金,很多学土木、新闻传播等很多行业都想转行。也有很多人通过自学成功转行,就拿我自己来说,虽然学的是通信工程专业,但是基本上也没好学学,我是一枚妥妥的学渣,大学四年我就没有哪年没挂科,毕业人家都已经去上班了我还在补考,等着拿毕业证去企业报道,所以我的编程课也基本上是划水,但是最后结局却是好的,我通过我的自学,在没毕业就拿到了当时还不错的offer,成为了一名软件工程师。

2024-04-03 14:37:57 1142

原创 程序员35岁会失业吗?

在当今数字化的时代,程序员扮演着至关重要的角色。他们是那些将抽象的概念转化为实际运行的代码,创造出改变我们生活、工作和娱乐方式的创新产品的幕后英雄。随着信息技术的飞速发展,程序员这一职业也经历了巨大的变革与成长。从最初的少数技术先驱者,到如今成为各个行业中不可或缺的力量,程序员的影响力愈发显著。然而,伴随着职业发展,一个备受关注的问题也逐渐浮现:程序员在 35 岁时是否会面临失业的风险?这不仅是程序员自身关心的话题,也引起了整个社会的广泛关注。35 岁,对于许多人来说,是一个人生的重要阶段。

2024-04-02 17:43:15 1502

原创 【面试题】spring 事务在哪些情况下会失效?

如果在当前类中进行内部调用方法,比如在A类中有a方法和b方法,a方法没有加@Transaction,b方法加了@Transaction,在方法a中调用方法b,方法b中的事务也不会生效。这是因为spring在扫描bean的时候会自动为标注了@Transaction注解类生成一个代理类,在有注解方法被调用时,实际上是代理类调用的,代理类在调用之前会开启事务,执行事务操作。但是同类中的方法相互调用,相当于this.b(),此时的b方法并非代理类调用,而是直接通过原有的bean直接调用,所以注解不起作用。

2024-04-02 16:08:30 188

原创 程序员常用的几种算法

程序员常用的算法有很多,以下是一些常见的算法:

2024-04-02 14:51:43 169

原创 sql中如何添加数据?

在 SQL 中添加数据通常使用INSERT语句。INSERT语句用于将新的数据行插入到数据库表中。基本的INSERTtable_name以下是一个示例,假设有一个名为students的表,包含idname和age这将向students表中插入一条新的记录,其中name的值为Aliceage的值为20。

2024-04-02 14:42:24 949

原创 AI 技术创业的机会与前景

随着 AI 技术的不断发展,未来还将涌现出更多的创业机会和商业模式,为社会带来更多的创新和变革。在当今数字化时代,AI 技术正以惊人的速度发展,并为创业者们带来了广泛的机会。AI 作为一项具有巨大潜力的技术,正在改变着各个行业的格局,为创新和创业提供了新的途径。智能教学辅助工具可以根据学生的学习情况和特点,提供个性化的学习计划和资源推荐,提升教学效果。自动驾驶技术的发展就是一个典型的例子,它有可能改变人们的出行方式,提高交通安全性和效率。例如,通过对农作物生长数据的分析,实现精准农业管理,提高产量和质量。

2024-04-02 14:33:26 245

原创 【开发问题】为什么Java写文件时文件名中带有“*”会写入失败呢?

不同的文件系统对文件名的限制可能有所不同,但通常遵循一些常见的规则和限制。、:、"、\、/、|、等,可能会导致文件写入失败。这是因为这些字符在文件系统中被视为保留字符或具有特殊含义的字符,不能直接用于文件名。1.避免使用保留字符:确保文件名中不包含特殊字符,特别是文件系统中被视为保留字符的字符。3.使用合法的文件名:了解目标文件系统的文件命名规则,并确保使用合法的文件名。这时候就会出现无法写文件的错误,我们可以把“*”号换成别的没有特殊含义的符号,比如:“x”就能成功生成文件。

2024-04-02 14:24:59 443

原创 【面试题】RocketMQ怎么处理消息积压?

通过增加Broker节点的数量,可以提高整个消息系统的处理能力,从而减少消息积压的情况。调整消费者的消费速度:可以通过调整消费者的消费速度来控制消息的消费进度。可以通过设置消费者的最大消费线程数、拉取间隔等参数来控制消费者的消费速度,从而避免消息积压。设置消息延迟策略:可以通过设置消息的延迟策略,将消息延迟一段时间再进行消费。这样可以在消息积压的情况下,给消费者一定的缓冲时间,以便消费者能够更好地处理消息。通过增加消费者实例或者消费者组的数量,可以将消息负载分摊到多个消费者上,从而提高整体的消费能力。

2024-04-01 22:32:37 319

原创 【面试题】RocketMQ如何处理消息重复的问题呢?

消息去重:第二种是业务端,对重复的消息就不再消费了。这种方法,需要保证每条消息都有一个惟一的编号,通常是业务相关的,比如订单号,消费的记录需要落库,而且需要保证和消息确认这一步的原子性。如果消费端由于异常崩溃等原因未能发送消费确认,RocketMQ 会重新将消息投递给消费端,确保消息被正确消费。给这个消息做一个唯一主键(primary key)或者唯一约束,那么就算出现重复消费的情况,就会导致主键冲突,那么就不再处理这条消息。处理消息重复问题,主要有业务端自己保证,主要的方式有两种:业务幂等和消息去重。

2024-04-01 11:28:18 211

原创 【面试题】RocketMQ如何保证消息不丢失?

在面试的时候如果你会用消息中间件,那么面试一般都会问到MQ是如何保证消息不丢失的这个问题,所以这个问题对于面试和日常工作都非常之重要,本文主要讲述RocketMQ是如何保证消息不丢失的,但是我们可以举一反三,任何消息中间件都可以从以下几个方面着手去考虑,加油!从图中我们可以看出,同步刷盘策略是一定要写入磁盘成功以后才会返回ACK确认,而异步刷盘则是写入内存以后直接返回ACK确认,同步与异步相比虽然效率低一些,但是避免了因宕机导致消息丢失的风险。OK,这是官方给的同步刷盘和异步刷盘的区别。

2024-03-31 15:40:00 343

原创 【面试题】http与https相关面试题(持续收录)

中间人攻击(Man-in-the-Middle Attack)是指攻击者在通信的两端之间插入自己,并劫持通信双方之间的数据传输。攻击者可以窃听、篡改或伪装通信内容,而通信双方并不知情。下面是中间人攻击的一般工作流程:建立连接:通信的两端(通常是客户端和服务器)试图建立连接,以便进行数据传输。中间人介入:攻击者在通信路径上插入自己,使其成为通信的中间环节。这可以通过多种方式实现,例如在网络层面进行路由欺骗、在物理层面进行线路截获,或者通过恶意软件在用户设备上进行操作。

2024-03-29 17:54:43 1045

原创 国外的Java面试题和国内的相比谁更卷

(JVM是Java Virtual Machine的缩写,是Java的解释器。它负责加载、验证和执行Java中创建的字节码。(虽然它是平台相关的,这意味着JVM的软件在不同的操作系统上是不同的,但它在使Java平台独立方面起着至关重要的作用。点评:国内面的一般比这个难,会直接让你说jvm的结构,然后刨根问底,直接把你整蒙圈才放过你!(JIT(Just-in-Time)编译器是JRE(Java编译环境)的一部分,它用于提高Java应用程序在运行时的性能。

2024-03-28 23:26:22 673

原创 go和Java该如何选择?

Golang,或Go,是谷歌最近开发的一种开源过程编译编程语言。简单易懂的语言,易于理解、理解和使用。最近,它因其灵活性、速度和可靠性而在软件开发中受到欢迎。是的,它非常快,这意味着您的程序可以运行得更快、更高效。无论您是构建Web 服务器、移动应用程序,甚至是一些奇特的数据处理工具,Go 都可以快速而优雅地处理它。它具有大量内置工具和库,使开发人员可以更轻松地编写代码,这意味看您可以加快项目速度,而无需重新发明轮子。该语言对于初学者和经验丰富的程序员来说都易于阅读和编写。这就像与您的计算机进行友好对话!

2024-03-28 15:16:27 1469

原创 【面试】Elasticsearch 在部署时,对 Linux 的设置有哪些优化方法?

Elasticsearch是一个分布式搜索和分析引擎,它在Linux环境下的性能和稳定性可以通过一些优化方法进行提升。以上是在部署Elasticsearch时针对Linux环境的一些优化方法。根据实际情况和需求,可以选择适合的优化策略来提升性能和稳定性。

2024-03-27 16:42:54 553

原创 【面试题】数据底层原理:Elasticsearch写入流程解析

本篇博客将介绍Elasticsearch的数据底层原理,涉及数据写入的过程以及相关概念。我们将深入探讨buffer、translog、refresh、commit、flush和merge等核心概念,帮助您更好地理解Elasticsearch的数据存储机制。

2024-03-27 15:10:32 1365

原创 【面试题】ES文档写入和读取流程详解

在Elasticsearch中,文档(Document)是最基本的信息单元,用于表示和存储数据。文档是以JSON格式表示的结构化数据对象,类似于关系型数据库中的行。索引(Index):文档必须属于一个索引,索引是用于组织和存储文档的逻辑容器。索引是Elasticsearch中数据的顶层概念,它类似于关系型数据库中的数据库。类型(Type):在较早的版本中,文档可以在索引中定义不同的类型。但是从Elasticsearch 7.0版本开始,类型的概念已经被弃用,一个索引只能包含一个文档类型。

2024-03-26 18:43:24 1445

原创 面试题-Elasticsearch集群架构和调优手段(超全面)

本文介绍了Elasticsearch集群的架构和调优手段。作者分享了在之前公司使用的大型ES集群的实际经验,并提供了以下关键信息:集群架构:介绍了集群的规模、索引数量、分片数和数据大小等基本信息。设计阶段调优:包括索引命名规则、别名管理、force_merge操作、冷热数据分离和Curator工具的使用等。写入调优:涉及副本设置、refresh_interval调整、批量写入和自动生成ID等。查询调优:建议禁用通配符查询、避免批量terms查询、合理使用keyword类型和基于时间范围进行索引选择

2024-03-26 10:40:59 902 3

原创 如何求二叉树的最大深度?

要求二叉树的最大深度,可以使用深度优先搜索(DFS)或广度优先搜索(BFS)的方法。使用广度优先搜索的方式遍历二叉树,通过层级遍历的方式逐层遍历节点,并记录当前层级的节点个数,直到遍历完所有节点。使用深度优先搜索的方式遍历二叉树,通过递归遍历左子树和右子树,并返回左右子树中的最大深度加1。在上述示例中,使用递归实现了深度优先搜索。在上述示例中,使用队列实现了广度优先搜索。

2024-03-25 18:54:54 195

原创 Java中文乱码浅析及解决方案

这些是一些常见的字符编码方式,其中UTF-8和UTF-16是比较常用的,因为它们能够表示广泛的字符范围。在了解了常见编码方式以后如果我们遇到乱码,我们可以写一个通用代码解决乱码问题,当然也不一定要是文件,也是直接将乱码内容复制成字符串,解析方案依然如此。有朋友可能会问,那IDEA 导入项目中文注释乱码怎么解决呢?原理也是一样的,也是由于idea的编解码不一致导致的,要解决乱码我们先要知道常见的编码方式有哪些?修改编码方式看效果即可!其他转码也可以套用呢!二:搜索encode。

2024-03-25 16:28:25 430

原创 面试:Elasticsearch是如何实现Master选举的?

然后,它将选择排序后的第一个节点(索引为0)作为主节点。如果某个节点收到的投票数达到一定的阈值(大于等于候选节点数的一半加一),并且该节点也投票给了自己,那么该节点将成为主节点。对于具有`node.master: true`配置的所有节点,它们都可以成为主节点的候选。首先,每个候选节点将已知的候选节点按照节点ID进行排序。- 当只有两个主节点候选者时,必须将其中一个节点设为唯一的主节点候选者,而其他节点则作为数据节点,以避免脑裂问题。- 主节点的职责主要涉及集群、节点和索引的管理,而不涉及文档级别的管理。

2024-03-25 14:42:08 408

原创 elasticsearch索引数据多了怎么办?如何调优和部署?

自身的支持动态扩展的特点,动态新增机器的方式可以缓解集群压力,注意:如果之前主节点 等规划合理,不需要重启集群也能完成动态新增的。时间戳的形式,每天递增数据。这样做的好处:不至于数据量激增导致单个索引数据量非 常大,接近于上线 2。其来的数据激增导致集群处理能力不足引发的线上客户检索或者其他业务受到影响。一旦单个索引很大,存储等各种风险也随之而来,所以要提前考虑。所以在设计阶段就需要结合自身的业务特点来提前做好规划。索引数据的规划,应在前期做好规划,正所谓。天或者一周的数据),其余为冷数据。

2024-03-25 11:40:57 239

原创 二叉树的遍历方式有哪些呢?

使用一个队列来辅助遍历,首先将根节点入队列,然后循环进行以下操作:获取当前层级的节点数量,创建一个列表存储当前层级的节点值,并依次将节点的左子节点和右子节点(如果存在)入队列。除了以上三种经典的遍历顺序以外还有一些其他的遍历方式,比如逆序遍历和层序遍历,逆序遍历:与先序、中序和后序遍历的遍历顺序相同,只是访问节点的顺序相反。- 遍历顺序:根节点 -> 左子树 -> 右子树。- 遍历顺序:左子树 -> 根节点 -> 右子树。- 遍历顺序:左子树 -> 右子树 -> 根节点。- 特点:根节点在最后面被访问。

2024-03-22 18:10:49 278

原创 一种通用的ES索引创建设计方案

缺点:首先人力成本不说,其次多个实体你得执行多次,容易出错!在我们的项目中会有多个实体(POJO)需要创建索引,与此同时这些索引不是一成不变的,方案2:定义多个模板(因为项目中有多个实体),然后写一个定时器每个月定时去创建一次!好,那假如按照日期去生成索引,比如每个月生成一个索引,我们会有哪些方案呢?缺点:设计难度大,如果不是两年以上的个人练习生很难设计出来。当我们的某个实体需要创建索引时,只需要继承这个基础类就可以了!方案3:基于注解实现,扫描不同类的字段自动根据日期创建索引。缺点:需要定义多个模板。

2024-03-22 11:41:54 319

原创 springMvc如何动态替换请求路径?

但是你改了之前的接口的话,那你已经对接了的第三方该怎么办?所以改老接口的方式肯定是行不通的了。当然我们也可以把之前的接口再写一遍,但是这样的我们会有大量的重复代码。,其他信息如:token改在请求头中传,这时你该怎么做?有人会说:这还怎么做啊?不就是手动改一下之前的接口么?

2024-03-20 15:20:04 417

springmvc—demo

springmvc入门程序,基于idea,下载既可以使用.

2019-03-28

空空如也

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

TA关注的人

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