自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

字节叔叔

记录编程、创业过程中踩过的坑

  • 博客(274)
  • 问答 (1)
  • 收藏
  • 关注

原创 介绍一下js中Promise、async、await的使用

是基于Promise的语法糖,使用它们可以让代码更加整洁且易于维护。

2024-09-20 15:20:28 800

原创 ruoyi-vue若依前端是如何防止接口重复请求

防止接口重复请求是为了避免用户在短时间内多次点击同一个按钮,导致后端接口被多次调用,引发数据异常或性能问题。之前的文章介绍过后端如何防止接口重复请求,这篇文章介绍一下前端如何防止接口重复提交。

2024-09-20 11:41:04 539

原创 mysql update语句的执行流程

update tb_student A set A.age=‘19’ where A.name=’ 张三 ';

2024-09-19 17:52:16 421

原创 简单说说MySQL中 SELECT 语句执行流程

MySQL 中SELECT用户向 MySQL 服务器发送SELECT查询语句。MySQL 收到 SQL 语句后,会将查询语句进行词法和语法分析。词法分析器,然后语法分析器根据 MySQL 语法规则。。这是 MySQL。优化器决定如何执行查询,。MySQL 的优化器会生成多个执行计划,选择成本最低的计划。执行器根据优化器生成的执行计划去执行查询语句。,按优化器的指示选择适当的访问方式,如是否使用索引,是否需要回表等。MySQL 是多存储引擎的系统。

2024-09-19 17:37:23 901

原创 小项目建议用redis替换mq

简单任务分发:如后台任务处理、日志收集等。实时数据处理:如实时流数据处理、监控报警、实时推送等。广播消息:如系统通知、状态更新等。轻量级系统:对运维要求较高,系统对消息丢失不敏感,且对路由和持久化无严格要求。

2024-09-11 10:49:53 604

原创 因IBM裁员聊一聊外企程序员如何应对

对于现今的程序员而言,这无疑是一种启示:技术潮流和行业变迁的初期,往往蕴含着巨大的机遇,抓住它,就能获得更加广阔的成长空间与丰厚的回报。程序员不仅需要不断磨砺自身技术,还应具备审时度势的眼光,善于发掘新兴领域的潜力,紧跟时代步伐,为自己的职业未来开辟一片新的天地。面对迅速变化的市场环境,程序员不能将希望寄托在某一家公司或某一项技术上,而应保持灵活的职业生涯规划,及时学习新兴技术,跳出舒适圈,走向更广阔的未来。他们在新的环境中,虽然承受着更高的工作强度,却换来了更为丰厚的回报。

2024-09-11 08:22:54 485

原创 MyBatis常见面试题

MyBatis: 灵活、可控性强,适合对 SQL 有较高要求和复杂查询的项目。Hibernate: 自动化程度高、面向对象映射良好,适合 CRUD 操作较多且开发者希望避免直接与 SQL 打交道的场景。两者各有优缺点,选择使用哪一个框架需要根据项目需求、团队技能和对 SQL 控制的需求来权衡。SQL 注入(SQL Injection)是一种网络攻击技术,攻击者通过在输入字段中插入恶意的 SQL 代码,使应用程序生成恶意的 SQL 查询,从而操纵数据库的执行行为。

2024-09-06 14:40:54 1495

原创 netty和websocket的区别

Netty是一个底层网络框架,提供了灵活、异步的网络通信能力,可以支持多种协议,包括 WebSocket。WebSocket是一个应用层协议,专注于在浏览器与服务器之间提供低延迟、全双工的通信。

2024-09-06 08:21:26 1197

原创 小伙跟我做了一年开源项目,薪资翻了三倍

小伙最近面试了两家公司,都收到了offer,他选择了其中一家。薪资是他之前实习薪资的三倍。

2024-09-05 15:54:49 918

原创 若依库存管理 ruoyi-wms V2.0发布:升级到jdk17和vue3,支持一物一码

项目代码、文档 均开源免费可商用 遵循开源协议在项目中保留开源协议文件即可活到老写到老 为兴趣而开源 为学习而开源 为让大家真正可以学到技术而开源若依wms是一套基于若依的wms仓库管理系统,支持lodop和网页打印入库单、出库单。毫无保留给个人及企业免费使用。前端采用Vue、Element UI。后端采用Spring Boot、Spring Security、Redis & Jwt。权限认证使用Jwt,支持多终端认证系统。支持加载动态权限菜单,多方式轻松权限控制。

2024-09-05 15:49:58 655

原创 面试时常会被问到的mysql问题:二

自动处理:依赖InnoDB的死锁检测和自动回滚机制。应用处理:捕获错误并重试事务。优化操作:减少锁持有时间、简化事务、遵循一致的锁顺序。使用工具:监控和分析死锁情况,优化数据库设计。通过应用这些策略,可以有效减少和解决MySQL中的死锁问题,提高数据库系统的稳定性和性能。:提供详细的死锁信息。错误日志:记录了死锁事件及其详细信息。:可以查询锁和锁等待信息。:帮助识别可能的锁竞争和长时间运行的事务。:开启死锁日志打印。通过这些方法,可以获取有关死锁的详细信息,从而帮助分析和解决死锁问题。

2024-08-31 08:05:14 1126

原创 面试时常会被问到的mysql问题:一

第一范式 (1NF)强调每一列都是原子性的,不可再分。第二范式 (2NF)强调所有非主属性必须完全依赖于主键,不能有部分依赖。第三范式 (3NF)强调所有非主属性不能依赖于其他非主属性,消除传递依赖。通过遵循这三个范式,可以使数据库设计更简洁、减少冗余、降低数据异常的风险,并提高数据的完整性和一致性。InnoDB是 MySQL 的默认存储引擎,适合大多数需要事务和数据完整性的应用。MyISAM适合只读或轻量级的应用,对事务和一致性要求不高。Memory引擎用于需要快速访问的临时数据存储。

2024-08-31 07:54:07 1576

原创 阿里开发规范禁止超过三张表 join,我们如何规避?

超过三张表的 JOIN 是否合适取决于具体的场景和需求。

2024-07-31 15:48:18 818

原创 时常在面试中被问到的JVM问题

类加载请求首先由当前类加载器接收。当前类加载器将请求委派给它的父类加载器。父类加载器再次将请求向上委派,直到达启动类加载器。启动类加载器尝试加载类,如果成功则返回类对象;如果失败则将控制权交还给子类加载器。子类加载器按此规则递归,直到找到可以加载该类的类加载器。这种机制确保了Java核心库的类不会被用户自定义的类加载器替代,保证了JVM的安全性和稳定性。

2024-07-31 13:47:40 1065

原创 时常在面试中被问到的多线程问题:下篇

你也可以实现自己的拒绝策略,通过实现接口并覆盖方法。// 自定义处理逻辑 System . out . println("Task " + r . toString() + " rejected from " + executor . toString());// 可以记录日志,或者执行其他处理措施 } }

2024-06-28 18:29:32 868

原创 时常在面试中被问到的多线程问题:上篇

进程:进程是一个程序在其自身的地址空间中运行的实例。每个进程都有自己的内存空间、数据段、代码段和系统资源(如文件描述符、设备等)。线程:线程是进程中的一个执行路径。一个进程可以包含多个线程,所有线程共享进程的资源(如内存、文件描述符等)。所属类Object类。用途:使当前线程等待,直到其他线程调用该对象的notify()或方法。锁机制:必须在同步块或同步方法中使用,即调用wait()方法的线程必须持有该对象的监视器锁。当调用wait()方法时,线程会释放锁并进入等待状态,直到被唤醒。所属类。

2024-06-28 18:29:11 1228

原创 时间复杂度与空间复杂度的计算

(O(1)) 表示算法只需要常量级别的额外空间,不会随着输入数据的大小 (n) 增加而增加。也就是说,无论处理的数据有多大,算法所需的额外内存空间始终是固定的。它们仅仅需要少量的临时变量(例如用于交换元素的变量),所以它们的空间复杂度是 (O(1))。时间复杂度是衡量算法执行所需的时间随输入数据规模 (n) 增加而增加的速率。(O(n^2)) 表示算法的运行时间与输入数据规模的平方成正比。冒泡排序在每一轮中都要通过相邻元素的比较和交换,将最大(或最小)的元素“冒泡”到数组的一端。

2024-06-03 09:42:53 415 1

原创 面试官:平衡二叉树、红黑树、HashMap、链表之间绕来绕去的面试题都在这里了

当哈希冲突频繁发生时,一个桶中的元素可能非常多,导致链表长度过长,从而使得查找、插入和删除操作的时间复杂度从平均的 O(1) 退化为 O(n)。能够在一个桶中的元素数量超过一定阈值时(默认是 8),将链表转换为红黑树,从而将查找、插入和删除操作的时间复杂度从 O(n) 改善为 O(log n)。如果存在相同的键,更新对应的值;扩容操作会将所有的桶重新分配到一个新的、更大的数组中,并重新计算每个键的哈希值,将其放置到新的桶中。通过计算键的哈希值确定对应的桶,然后遍历该桶中的链表或红黑树来查找匹配的键。

2024-06-03 09:21:01 620

原创 如何理解:选择排序中交换可能改变相同元素的相对顺序?

算法复杂度:两者在最坏和平均情况下的时间复杂度相同,都是 (O(n^2))。但是选择排序在交换次数上通常比冒泡排序少。实现方式:选择排序每次找到最小(或最大)元素放到已排序部分,冒泡排序则是通过多次相邻元素的比较和交换来排序。稳定性:冒泡排序是稳定排序,选择排序是不稳定排序(因为选择排序中交换可能改变相同元素的相对顺序)。适用场景:在实际应用中,两者的使用较少,通常使用更高效的排序算法如快速排序或归并排序。但在数据量小且对交换次数要求高的情况下,可以考虑选择排序。

2024-06-03 09:19:47 1150 2

原创 Comparable 和 Comparator 有什么区别?

接口用于提供一种特定的比较规则,可以对不同类的对象进行排序。接口用于给定类的实例提供自然排序的方法,而。

2024-05-22 17:29:14 247

原创 java中Collection 和 Collections的区别

方法创建一个不可修改的集合,尝试修改这个不可修改的集合会抛出异常。是一个工具类,提供了对集合进行各种操作的静态方法。表示集合的抽象概念,定义了集合的基本行为,而。以下是一个简单的示例代码,演示了如何使用。集合,并向其中添加了几个整数。方法获取集合中的最大值。在这个示例中,首先创建了一个。方法对集合进行排序,并使用。

2024-05-22 17:26:55 509

原创 java中关于HashSet、HashMap 和 Hashtable的面试题总结

实现了高效的键值对存储和查找,平均情况下插入、删除和查找操作的时间复杂度为O(1)。方法),然后将元素存储在哈希表的对应位置上。如果该位置已经有元素存储,新增流程主要涉及计算哈希值、定位桶位置、插入节点等步骤。可以实现在常数时间复杂度内向哈希表中插入新的键值对。认为新元素重复,不会将新元素添加进去。方法来比较新元素和已存在元素是否相等。如果不需要考虑线程安全性,并且需要支持。会首先计算元素的哈希码(通过调用元素的。的使用已经不推荐,通常建议使用。需要注意的是,为了正确保证。无法正确判断元素是否重复。

2024-05-20 14:36:25 949

原创 CentOS7 安装 Mysql 5.7:密码查看与修改、更改端口、开机启动

在之前的版本中,密码字段的字段名是 password,5.7版本改为了 authentication_string。退出 mysql,编辑 /etc/my.cnf 文件,删除 skip-grant-tables=1的内容。使用临时密码登录后,不能进行其他的操作,否则会报错,这时候我们进行修改密码操作。原因是Mysql的GPG升级了,需要重新获取,使用以下命令即可。这一行配置让 mysqld 启动时不对密码进行验证。

2024-05-20 14:35:25 1012

原创 面试官:BIO、NIO 和 AIO 有什么区别?

BIO适用于连接数较少的情况,NIO适用于连接数较多但连接活跃度不高的情况,而AIO适用于连接数较多且连接活跃度较高的情况。选择合适的I/O模型取决于具体的应用场景和性能要求。BIO(Blocking I/O)、NIO(Non-blocking I/O)和AIO(Asynchronous I/O)是Java中用于处理I/O操作的三种不同的编程模型.BIO使用阻塞I/O模型,NIO使用非阻塞I/O模型,AIO使用异步I/O模型。以下是他们的各自介绍以及代码示例。

2024-05-11 16:42:54 206

原创 面试官:请把ArrayList与LinkedList、Vector、Array做个比较

如果在单线程环境下对性能要求不高,但是需要线程安全性,也可以使用。如果在单线程环境下,并且需要较好的性能,可以使用。如果在多线程环境下需要安全地操作集合,可以使用。是一种动态大小且可以存储不同类型元素的集合类。是一种固定大小且类型固定的数据结构,而。适用于插入和删除操作较多的场景。适用于随机访问较多的场景,而。都是Java中常用的集合类。接口的可变大小的数组。

2024-05-11 16:42:12 814

原创 java反射常被面试官问到的四个问题

反射机制是指在运行时,动态地获取类的信息(如类名、属性、方法等),并可以在运行时操作类或对象的属性、方法等。在Java中,反射主要通过包中的类来实现。

2024-05-07 16:19:07 1057

原创 若依ruoyi-vue前端异常处理

文件是基于 axios 的封装,用于统一处理请求参数、请求头、错误提示信息等。这些功能的封装使得在 Ruoyi Vue 中进行 HTTP 请求时可以更加方便和统一,同时也提高了代码的可维护性和可扩展性。

2024-05-07 15:49:17 958

原创 若依ruoyi-vue部署在域名的子目录下应该如何配置

本文相关视频教程:https://www.bilibili.com/video/BV1Fi4y1q74p?修改utils/request.js中的location.href。添加一行base属性。

2024-04-25 14:29:50 1044

原创 在若依ruoyi-vue中集成watermark实现页面添加水印

本文将介绍如何在若依Ruoyi-Vue中集成Watermark实现页面添加水印,以保护页面内容版权并增强页面视觉效果。

2024-04-25 14:28:57 1323

原创 在若依Ruoyi-Vue中集成mybatisplus实现mybatis增强

MyBatisPlus是基于MyBatis的一款优秀持久层框架增强工具,它在MyBatis的基础上提供了丰富而强大的CRUD操作、条件构造器、全局通用操作、代码生成器等特性,极大地简化了开发过程,提升了开发效率。MyBatisPlus通过无侵入式的设计理念,使得在享受其带来的便利同时,无需对现有MyBatis项目进行大规模改造。

2024-04-25 14:28:08 3166 3

原创 在若依Ruoyi-Vue中集成Knife4j实现Swagger文档增强

Knife4j,原名Springfox-Swagger-UI,是为Swagger接口文档提供增强UI展示效果的工具,它在原生Swagger-UI基础上进行了大量功能扩展与优化。Knife4j凭借其友好的界面、丰富的交互功能、强大的个性化定制能力,成为众多开发者首选的API文档管理工具。集成Knife4j后,即可在若依-Ruoyi-Vue项目中体验到Swagger文档的诸多增强特性,提升API文档的实用性和易用性。和swagger一样,使用或注解启用Swagger,并通过Docket。

2024-04-25 14:26:37 2679 1

原创 当你在大厂遭遇不负责任的领导时

复杂的架构、纷繁的人际关系、个人力量的微弱,以及无法改变的困境,使得许多人心中早已消失了曾经对大厂的憧憬和期待,只剩下无情地交换时间和金钱,如同冷冰般执行任务。我曾关注一位朋友,在大厂里面遭遇了不负责任的领导,她选择了坚守原则,勇敢地挑战不合理的决策,却意外地发现自己不得不面对更多不负责任的高层。她展开了对其他大型企业员工的深度访谈,仔细研究了各种绩效管理工具,逐渐形成了自己的洞察:在职场上,我们并非只需勤勉工作便可事事顺遂,因为其中蕴含了许多人性的复杂问题,而工作的完成需要依靠人来实现。

2024-04-24 11:32:57 334

原创 程序员25岁做什么能够改变35岁被淘汰的命运?

那40岁以上怎么办?如果40岁以上真的不幸被裁员了,并且接下来也实在是找不到工作,之前20年的挣得也不少了,就一边继续找工作,一边躺平吧。躺平的前提是有一定的积蓄,没负债。所以25岁开始请多攒钱,不要乱花钱,不要瞎投资。现在行情不好,毕业后去做程序员的人也少了,也就是等你到了40岁以后能顶替你的晚辈也少了,说不定到了40还真能找到一个工作强度还可以,能让你干到退休的公司呢。以我身边的朋友为例,其实35到40找工作勉强还是能找到的,最近行情不好,我朋友在35~40的年纪,平均三个月能拿到一份offer。

2024-04-24 11:31:11 348 2

原创 若依ruoyi-vue前端页签缓存设置

在路由配置中,为需要缓存的路由设置。

2024-04-24 10:00:00 2673

原创 若依ruoyi-vue中图标使用介绍

该组件是在src\assets\icons\index.js文件中被注册为全局组件的,可以在项目任意地方使用。所有的图标都在src\assets\icons\svg目录下。可自行添加或者删除图标,所有图标都会被自动导入,无需手动操作。如果你是从 iconfont 下载的图标,记得使用如 Sketch 等工具规范一下图标的大小问题,不然可能会造成项目中的图标大小尺寸不统一的问题。本项目中使用的图标都是 128*128 大小规格的。你可以改变父级的color或者直接改变fill的颜色即可。

2024-04-24 08:43:53 1188

原创 若依如何去掉“正在加载系统资源,请耐心等待”

最近有网友反馈这个加载动画很丑,问我如何去掉:

2024-04-23 18:18:29 1080

原创 若依ruoyi-vue前端组件的使用指南

自定义组件允许开发人员根据项目需求创建新的组件,以实现特定的功能或样式。在Ruoyi Vue中,可以通过Vue的component方法来创建自定义组件。// 定义一个自定义组件

2024-04-23 15:51:39 1093

原创 若依vue中的静态路由和动态路由

在使用若依Vue(Ruoyi Vue)时,了解静态路由和动态路由的概念和用法是至关重要的。本文将介绍这两种路由的基本概念、特点以及它们在若依Vue中的应用。静态路由适用于路由规则不经常变化的场景,如主要菜单导航等。动态路由适用于需要根据用户权限或其他条件动态生成路由规则的场景,如权限管理系统。

2024-04-23 14:28:51 4800

原创 ruoyi-vue前端的一些自定义插件介绍

可以查看src/plugins 文件夹index.js文件// 页签操作// 认证对象// 缓存对象// 模态框对象// 下载文件。

2024-04-18 17:25:32 1308

原创 若依顶部导航栏Navbar一些个性化设置

代码所在位置

2024-04-18 15:13:21 974

空空如也

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

TA关注的人

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