- 博客(105)
- 资源 (3)
- 收藏
- 关注
原创 快速排序算法介绍
其基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。由于要找的元素出现次数超过 ⌊ n/3 ⌋,那么最多只会有两个这样的元素。快速排序的核心是分区(partition)操作,通过选取一个“基准”元素,将数组分为两部分,左边部分的所有元素都不大于基准值,右边部分的所有元素都不小于基准值,然后递归地对这两部分进行快速排序。# 第一步:找出候选元素。
2024-07-07 23:22:29
430
原创 Java实现按高度或宽度等比压缩图片尺寸
的Java方法,你需要先计算图片的原始宽高比,然后根据目标尺寸(宽度或高度)计算出等比缩放后的另一个维度。要实现一个能够按高度或宽度等比压缩图片并返回。
2024-06-30 16:13:49
605
原创 如何在Vue3项目中使用Pinia进行状态管理
这个文件夹将包含我们所有的状态管理文件。在`store`文件夹中创建一个新的文件,例如`index.js`或`index.ts`。要在Vue3项目中使用Pinia进行状态管理,首先需要安装Pinia依赖。接下来,我们需要在项目的入口文件`main.js`中配置并注册Pinia。**第五步:在组件中导入并使用Pinia的状态或操作****第四步:在main.js中配置并注册Pinia****第二步:在项目中创建一个store文件夹****第三步:创建并定义一个store****第一步:安装Pinia依赖**
2024-06-30 12:14:33
611
原创 使用Vue3和Tailwind CSS快速搭建响应式布局
初始化会生成一个名为`tailwind.config.js`的文件。至此,Vue3项目和Tailwind CSS的基础部分已经安装完毕。打开浏览器,访问`http://localhost:8080`,然后在开发者工具中选择不同的设备尺寸,检查布局效果是否符合预期。在`src`目录下,找到`components`目录,并新建一个`ResponsiveLayout.vue`组件。首先,在你的开发环境中打开终端,然后通过Vue CLI来创建一个新的Vue3项目。接下来需要安装Tailwind CSS。
2024-06-30 12:08:28
793
原创 如何在Vue3项目中引入TypeScript
在这篇文章中,我们将一步步指导你如何在Vue3项目中引入TypeScript。TypeScript是一种强类型的JavaScript超集,可以帮助我们在编写代码时避免许多错误,提高代码的可维护性。在Vue组件中使用TypeScript非常简单,只需要在``标签中添加`lang="ts"`。为了让TypeScript更好地发挥作用,需要安装一些类型声明文件。至此,您已经成功地在Vue3项目中引入了TypeScript。按照提示进行初始化配置,选择手动配置,并确保选择Vue 3选项。
2024-06-30 12:03:26
2398
原创 在Vue3项目中引入Vite进行热更新
完成以上步骤后,你的Vue3项目便成功使用了Vite进行热更新,你可以享受更高效的开发体验。在项目的根目录下创建一个名为`vite.config.js`的文件,准备配置Vite。Vite会自动启动开发服务器,并在文件发生变化时进行热更新,确保开发过程更加流畅高效。第五步:修改package.json脚本,使用Vite进行开发启动。第三步:在项目根目录创建一个vite.config.js文件。第一步:初始化一个Vue3项目,可以使用Vue CLI。第二步:安装Vite,使用npm或yarn。
2024-06-30 11:52:55
1553
原创 Mysql的底层实现逻辑
也就是说,相对于 B-树索引来说,建立哈希索引会耗费更多的时间。索引不是基于树形的数据结构查找数据,而是根据索引列对应的哈希值的方法获取表的记录行。因此,在表中进行数据查询时,可以根据索引值一步一步定位到数据所在的行。下面截图,显示的列表是*所有字段,走的是全表扫描,没走bcd索引,extra有额外的排序耗时。HASH 索引不支持键的部分匹配,因为在计算 HASH 值的时候是通过整个索引值来计算的。根节点:一个 B-树索引只有一个根节点,实际上就是位于树的最顶端的分支节点。
2024-06-10 19:52:14
961
原创 SQL入门使用手册及性能总结
SQL(Structured Query Language)是用于管理关系数据库管理系统(RDBMS)的标准编程语言。本手册旨在提供SQL的基础知识,帮助初学者快速上手。:用于定义或修改数据库结构,如。:用于控制对数据库的访问,如。:用于查询或修改数据,如。子句对数据进行排序。子句对数据进行分组。
2024-06-10 19:44:25
386
原创 SQL入门使用手册及性能总结
SQL(Structured Query Language)是用于管理关系数据库管理系统(RDBMS)的标准编程语言。本手册旨在提供SQL的基础知识,帮助初学者快速上手。:用于定义或修改数据库结构,如。:用于控制对数据库的访问,如。:用于查询或修改数据,如。子句对数据进行排序。子句对数据进行分组。
2024-06-10 19:32:15
423
原创 element-plus ui的使用说明
一旦你安装了并引入了Element Plus,你就可以在你的Vue组件中使用它提供的各种组件了。首先,确保你的项目是基于Vue 3的。你可以使用npm或yarn来安装Element Plus。为了减小项目体积,你可以按需引入Element Plus的组件。为了获取更详细的信息和示例代码,建议查阅Element Plus的官方文档(以上是使用Element Plus UI的基本说明,希望对你有所帮助。来引入Element Plus的图标库。如果你需要使用图标,你可以通过安装。等,帮助你构建复杂的页面布局。
2024-06-10 19:19:44
676
原创 npm发布自己的插件包
要发布自己的插件包到npm(Node Package Manager),你需要遵循一系列步骤来确保你的包可以被正确地构建、测试和发布。
2024-06-10 19:14:06
683
原创 ant-desigin-vue动态表头并填充数据
同样,你需要一个数组来存储你的表格数据。这个数组的每个元素都应该是一个对象,其键名与列定义中的。是一个基于 Ant Design 设计规范和 Vue.js 的 UI 组件库。注意:上面的示例是静态的,但你可以根据需要从 API、用户输入或其他来源动态生成。如果你需要从后端 API 获取表头和数据,你可以在 Vue 组件的。:首先,你需要一个数组来存储你的列定义。中实现动态表头并填充数据,你可以使用。(数据源的键名)、以及其他可选属性,如。:将动态生成的列定义和数据源传递给。
2024-06-10 19:09:43
811
原创 vue3模板语法总结
Vue 3:引入了<script setup>标签,允许更简洁地声明组件的响应式状态和逻辑。Vue 3中的数据是响应式的,即当数据发生变化时,视图会自动更新。组合式API:Vue 3引入了组合式API,允许使用ref和reactive来定义响应式数据。不要解构使用:在使用响应式数据时,避免解构使用,因为这可能会导致响应性丢失。条件渲染:使用v-if、v-else-if和v-else进行条件判断。表单输入绑定:使用v-model实现双向数据绑定。绑定属性:使用冒号:来绑定属性到Vue的数据。
2024-06-09 12:03:50
563
原创 vue3如何定义一个组件
注意在子组件的 <template> 中,你使用 {{ propName }} 来显示传递进来的参数值。在父组件中,你使用 :propName="parentMessage" 来将 parentMessage 数据的值绑定到子组件的 propName prop 上。当使用 <script setup> 语法糖时,你不能直接在 <script> 标签内使用 props 选项。在 Vue 3 中,定义一个可以接收参数的组件通常是通过在组件的 props 选项中定义这些参数来完成的。// 其他组件逻辑...
2024-06-09 12:00:53
805
1
原创 利用Redis队列,如果需要处理大量的消息并且希望避免轮询的开销,使用BLPOP或BRPOP,Java代码实现
consumeMessage方法会阻塞地等待队列中的消息,直到有消息到来或者连接被关闭。当使用Redis来处理大量的消息并希望避免轮询的开销时,确实可以使用BLPOP或BRPOP命令。注意:在实际应用中,你可能需要考虑使用连接池来管理Redis连接,以避免频繁地创建和关闭连接。// result的第一个元素是被弹出消息的key(在这里是队列名),第二个元素是消息本身。// 关闭Jedis连接(通常在实际应用中会放在更合适的地方,如finally块或资源管理器中)// 如果没有消息,阻塞直到有消息到来。
2024-06-08 10:33:19
502
原创 利用Redis的队列模式实现消息的发送和订阅,适合分布式场景,Java实现代码
要使用Redis的队列模式实现消息的消费,我们可以使用Jedis库(Java的Redis客户端)来与Redis进行交互。以下是一个简单的Java实现,展示了如何使用Redis的List数据结构(通常使用LPUSH和BRPOP命令)来实现消息的发布和消费。但是,如果你的系统需要更复杂的路由和消息确认机制,那么使用分布式任务队列系统可能更合适。使用更高级的分布式任务队列系统(如Celery、RabbitMQ、Kafka等),这些系统通常提供了更复杂的路由和消息确认机制,可以确保消息只被一台机器消费。
2024-06-08 10:14:50
1006
原创 类加载到内存分析
即使在可达性分析法中不可达的对象,也并非是“非死不可”的,这时候它们暂时处于“缓刑阶段”,要真正宣告一个对象死亡,至少要经历两次标记过程;方法区主要回收的是无用的类,那么如何判断一个类是无用的类的呢?因此出于性能的考虑,读写频繁的场合可能会考虑使用直接内存。被判定为需要执行的对象将会被放在一个队列中进行第二次标记,除非这个对象与引用链上的任何一个对象建立关联,否则就会被真的回收。虚拟机可以对满足上述 3 个条件的无用类进行回收,这里说的仅仅是“可以”,而并不是和对象一样不使用了就会必然被回收。
2024-06-06 11:21:45
298
原创 JAVA技术设计模式
我在选择模板模式和策略模式时,发现两者都可以完全满足我的需求,然后我到网上查阅了很多资料,希望能找到两种模式在技术选择时,能确定告诉我哪些情况需要选择哪种模式,说来惭愧,到现在我都没有找到,因为网上只告诉我两种实现姿势的区别,但是没有说明如何具体选型,下面我就把我收集的资料,觉得比较核心的部分列出来,给大家一些参考。)中,一个类的行为或其算法可以在运行时更改。,他们都喜欢隔壁的企鹅妹妹,但是喜欢的方式不同,有暗恋的,有直接表白的,还有霸道总裁的,我可以用策略模式,去指定他们对企鹅妹妹的表达方式。
2024-06-06 11:18:39
935
原创 加密算法详解
在整个传输过程中,如果发送方的公钥泄露,加密内容也被窃取,也不会导致传输内容被破解(只要接收方的私钥没有泄露)。缺点:安全性低,如果密钥泄露,密文也被中间人拦截,那么信息很容易就会被破解。对于要发送的原文文本,发送方通过接收方的公钥对内容加密,加密后的内容。加密方和解密方都使用了相同的密钥,只要保证密钥不会泄露给第三方,因为对称加密算法整个过程共享同一个密钥,所以使用特点也比较明显。),给任何需要和接收方通信的客户端保存;算法(即一种支持变长密钥的公共密钥算法)),只给接收方自己保存。(对称加密算法流程)
2024-06-06 10:34:47
256
原创 数据结构和算法
n/2),满足前者的表达式的成为小顶堆,满足后者表达式的为大顶堆,这两者的结构图可以用完全二叉树排列出来,示例图如下。请注意,由于哈希函数是将输入映射到一个有限的哈希表中,而输入的数据量可能是无限的,所以在特定的哈希函数和哈希表大小的限制下,哈希冲突是难以避免的。其中,链地址法是一种常用的解决哈希冲突的方法,它将哈希值相同的键值对存储在同一个哈希桶中,并使用链表来解决哈希冲突。队列也可以数组和链表的结构实现,使用链表的结构实现更优一些,因为如果使用数组的结构,出队列在数组头上出数据,效率会比较低。
2024-06-05 17:03:09
627
原创 性能调优总结
配置、代码优化、数据库与缓存、外部服务调用、依赖库与第三方工具、硬件资源限制、系统监控与诊断、安全与加密以及序列化与反序列化等多个方面。需要注意的是,这些问题并非完全独立,它们之间可能存在关联和相互影响。在进行性能调优时,需要综合考虑各个方面,采取综合措施来提高系统性能。线程池配置不当(如核心线程数、最大线程数、队列容量)性能调优过程中遇到的问题种类繁多,涉及硬件、缓存策略不当(如缓存穿透、缓存雪崩)线程池使用不当导致的性能瓶颈。外部服务接口变更导致性能下降。性能调优中常见的问题,涵盖了。
2024-06-03 15:04:20
297
原创 Java面试题-Tomcat高级面试题
在Spring Boot应用程序中,可以通过调整Tomcat的线程池配置、缓存策略等方式,进一步优化容器的性能。使用Tomcat作为Spring Boot的默认嵌入式Servlet容器是一种方便且高效的方式,它允许开发者在不需要额外配置和部署Tomcat服务器的情况下,快速启动和运行Spring Boot应用程序。Tomcat 9引入的模块化设计是一种架构改进,它允许开发者更加灵活地选择和配置Tomcat的功能模块,从而优化资源使用,提高部署效率,并简化维护工作。这可以减少建立和关闭连接的开销,提高性能。
2024-06-03 14:54:10
1683
原创 Java面试题-Tomcat初级面试题
默认销毁时间:在Tomcat的web.xml配置文件中,可以通过设置<session-timeout>元素来指定Session的默认销毁时间(以分钟为单位)。总的来说,Tomcat是一个功能强大的Web应用服务器,为Java Web应用程序提供了完整的运行环境和服务支持,方便开发人员进行开发、测试和部署工作。总之,Tomcat中的Session管理涉及多个方面,需要根据实际的应用场景和需求选择合适的方案来实现Session的创建、存储、失效和共享。可以使用连接池来管理数据库连接,减少创建和销毁连接的开销。
2024-06-03 14:53:07
1378
原创 ES 面试手册
这些文档被存储在索引(index)中,索引是一个逻辑命名空间,可以包含一个或多个类型(type,但在较新版本中,类型已被弃用,每个索引只能有一个映射)。:索引的一个水平划分,每个分片都是一个独立的Lucene索引。是一个基于Lucene的搜索和分析引擎,它提供了一个分布式、多租户能力的全文搜索引擎,具有HTTP Web界面和无模式JSON文档。优化查询和聚合的性能,例如通过减少不必要的数据加载、使用合适的过滤条件等。:一个或多个文档的集合,每个文档都有一个唯一的ID。选择合适的数据类型来存储字段。
2024-06-03 14:50:30
461
1
原创 ES集群搭建
且一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。2、从容量上,单个Redis服务器内存容量有限,就算一台Redis服务器内存容量为256G,也不能将所有内存用作Redis存储内存,一般来说,单台Redis最大使用内存不应该超过20G。在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点),分担服务器负载;主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。
2024-06-03 14:49:41
204
原创 ES开发及面试手册
类型(Type):在早期的Elasticsearch版本中,每个索引里都可以有一个或多个type,type是index中的一个逻辑数据分类,一个type下的document,都有相同的field。如果需要删除索引中的所有数据,可以使用DELETE命令配合通配符或_all参数,例如:curl -XDELETE 'http://localhost:9200/my_index/_all'(注意,这个命令在不同的Elasticsearch版本中可能有所不同,而且通常不建议在生产环境中使用,因为它会删除整个索引)。
2024-06-03 14:47:49
1204
1
原创 【Java基础-注解】Java中注解的分类有哪些,如何自定义一个注解,并使用举例
自定义一个注解需要使用@interface关键字,而不是interface。// 自定义一个注解@Retention(RetentionPolicy.RUNTIME) // 注解的生命周期@Target(ElementType.METHOD) // 注解可以应用的Java元素类型// 定义注解的元素// 定义一个名为value的元素,类型为String,默认值为""// 定义一个名为order的元素,类型为int,默认值为0使用注解的举例。
2024-06-02 21:56:13
351
原创 Java后端代码框架包设计-什么是Domain,BO,VO?我们该如何区分和定义?
它可能包含与界面展示相关的数据,比如下拉列表的选项、需要显示在页面上的信息等。可能需要进行一些简单的数据校验,比如非空校验、格式校验等,以确保传递给业务逻辑层的数据是有效的。)不完全一致,它可能只包含实体类的一部分字段,或者包含一些与业务逻辑无关但界面需要展示的数据。可能只包含实体类的一部分字段,或者包含一些额外的、与业务逻辑无关但界面需要展示的数据。通常包含实体类的全部字段,并且可能会根据业务逻辑的需要添加一些额外的字段或属性。通常包含更复杂的业务逻辑校验,比如数据的唯一性校验、关联数据的校验等。
2024-06-01 23:05:07
1772
原创 SQL性能优化-该如何下手
SQL性能优化是数据库管理中非常重要的一环,它直接影响到数据库查询的响应时间和系统的整体性能。通过以上方法的综合应用,可以显著提高SQL查询的性能和数据库系统的整体性能。四、查询重写和替代优化。三、数据库表结构优化。
2024-06-01 00:07:22
499
原创 服务器硬件基础知识
以上是服务器硬件的基础知识,涵盖了处理器、内存、存储设备、网络接口、主板、电源供应单元、散热系统、冗余和可靠性、扩展性以及远程管理等方面的内容。六、电源供应单元(PSU)一、处理器(CPU)
2024-06-01 00:03:27
779
原创 Nginx的配置文件-详细使用说明
Nginx的配置文件是Nginx服务器运行的核心,它决定了Nginx如何响应和处理各种请求。以下是对Nginx配置文件(通常名为nginx.conf。
2024-06-01 00:00:36
1044
原创 系统开发-性能调优-主要包括哪些问题
配置、代码优化、数据库与缓存、外部服务调用、依赖库与第三方工具、硬件资源限制、系统监控与诊断、安全与加密以及序列化与反序列化等多个方面。需要注意的是,这些问题并非完全独立,它们之间可能存在关联和相互影响。在进行性能调优时,需要综合考虑各个方面,采取综合措施来提高系统性能。线程池配置不当(如核心线程数、最大线程数、队列容量)性能调优过程中遇到的问题种类繁多,涉及硬件、缓存策略不当(如缓存穿透、缓存雪崩)线程池使用不当导致的性能瓶颈。外部服务接口变更导致性能下降。性能调优中常见的问题,涵盖了。
2024-05-31 23:53:36
496
原创 Session+Redis,Token+Redis,JWT+Redis,用户身份认证,到底选择哪种更合适?
在选择用户身份认证方案时,需要根据具体的应用场景和需求进行评估和选择。如果应用需要长时间保持用户登录状态,且对性能要求不是特别高,可以选择Session+Redis方案。如果应用需要频繁验证用户身份,且对性能要求较高,可以选择Token+Redis方案。如果应用是分布式系统或微服务架构,需要实现无状态的身份验证和授权,可以选择JWT+Redis方案。需要注意的是,以上方案并不是孤立的,可以根据实际情况进行组合和优化,以满足特定的业务需求。同时,无论选择哪种方案,都需要确保系统的安全性和稳定性。
2024-05-31 21:13:06
1473
1
原创 针对软件性能问题,如何定位解决?解决思路总结
使用专业的性能测试工具(如LoadRunner、JMeter、Gatling等)来模拟真实用户场景进行负载测试、压力测试和并发测试,以评估系统的性能表现。通过对软件代码进行优化,减少冗余代码、使用更高效的算法和数据结构、避免频繁的内存分配和释放等,来提高软件的执行效率。使用监控工具(如系统监视器、性能监控软件等)来实时观察系统状态和资源使用情况,并及时发现和解决潜在的性能问题。综上所述,通过以上步骤和方法,我们可以有效地定位和解决软件性能问题,提高系统的稳定性和用户体验。
2024-05-31 09:00:31
487
原创 搭建一个基于主流技术Spring Boot 2 + Vue 3 + Ant Design Vue的技术框架的简要步骤
搭建一个基于主流技术Spring Boot 2 + Vue 3 + Ant Design Vue的技术框架涉及前后端分离的开发模式。使用Spring Initializr(https://start.spring.io/)初始化一个Spring Boot项目。使用代理配置(在Vue CLI中通过vue.config.js)将前端API请求代理到后端服务。使用Vue CLI(https://cli.vuejs.org/)初始化一个Vue 3项目。使用Vue Router进行路由管理,实现页面之间的导航。
2024-05-30 23:59:41
878
ES开发指南及面试手册
2024-05-26
Redis高频面试宝典
2024-05-26
Spring MVC的总结梳理
2024-05-26
Spring+MVC+mybatis环境搭建-实际操作说明
2024-05-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人