自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(72)
  • 收藏
  • 关注

原创 LocalGPT本地化大模型一键部署与远程访问方法指南

本文主要介绍如何本地部署LocalGPT并实现远程访问,由于localGPT只能通过本地局域网IP地址+端口号的形式访问,实现远程访问还需搭配cpolar内网穿透。LocalGPT这个项目最大的亮点在于:1.使用LLM的力量,无需互联网连接,就可以向你的文档提问。100%私密,任何数据都不会离开你的执行环境。你可以摄取文档并提问,无需互联网连接!2.使用LangChain和Vicuna-7B以及InstructorEmbeddings构建。可以借助LangChain构建更高级能力的pipeline。

2024-07-01 15:41:23 1422 22

原创 SQL执行流程、Innodb与MyISAM存储引擎的区别

SQL执行流程、Innodb与MyISAM存储引擎的区别,空闲连接的最大连接时长是8个小时MySQL中的长连接累计很多,将会导致MySQL服务占用内存太大,可能会发送MySQL服务重启现象,如何解决呢?

2024-05-16 18:20:31 322 1

原创 学习ReentrantLock 原理

可重入是指同一个线程如果首次获得了这把锁,那么它是这把锁的拥有者,因此有权利再次获取这把锁,如果不可重入锁,那么第二次获得锁时,自己也会被锁挡住,直接造成死锁。从后向前的唤醒的原因:enq 方法中,节点是尾插法,首先赋值的是尾节点的前驱节点,此时前驱节点的 next 并没有指向尾节点,从前遍历会丢失尾节点。当前队列不为 null,并且 head 的 waitStatus = -1,进入 unparkSuccessor。如果锁被另一个线程保持,则当前线程被禁用线程调度,并且在锁定已被获取之前处于休眠状态。

2024-03-24 17:22:49 981 3

原创 Zset有序集合

有序集合相对于字符串、列表、哈希、集合来说会有⼀些陌⽣。它保留了集合不能有重复成员的特点,但与集合不同的是,有序集合中的每个元素都有⼀个唯⼀的浮点类型的分数(score)与之关联,使用分数作为排序依据。有序集合中的元素是不能重复的,但分数允许重复。

2024-03-24 14:08:18 1568 9

原创 Set集合命令

集合类型也是保存多个字符串类型的元素的,元素之间是无序的且不能重复。Redis 除了⽀持集合内的增删查改操作,同时还⽀持多个集合取交集、并集、差集,合理地使⽤好集合类型,能在实际开发中解决很多问题。

2024-03-20 11:44:08 2004 14

原创 string类型的使用以及编码方式

Redis 中所有的键的类型都是字符串类型,⼀个字符串的最⼤值不能超过 512 MB。由于 Redis 内部存储字符串完全是按照⼆进制流的形式保存的,所以 Redis 是不处理字符集编码问题的,客⼾端传⼊的命令中使⽤的是什么字符集编码,就存储什么字符集编码。例如输入你好,查询出来的却是\xe4\xbd\xa0\xe5\xa5\xbd。

2024-03-18 17:51:43 1279

原创 JUC-线程池

ThreadPoolExecutor 使用 int 的高 3 位来表示线程池状态,低 29 位表示线程数量。这些信息存储在原子变量ctl中,将线程状态与线程数合二为一,这样就可以用一次cas操作进行赋值。

2024-03-14 19:18:55 1440 2

原创 redis中通用命令以及key过期策略

redis通用命令,key过期策略

2024-03-12 21:21:25 857

原创 解密N数之和问题的秘密

解决n数之和问题

2023-11-14 21:31:00 393 5

原创 快速掌握队列的基础知识

队列的几种实现方式,用链表实现队列以及用栈实现队列。

2023-11-13 23:31:29 514 2

原创 精解括号匹配问题与极致栈设计:揭开最大栈和最小栈的奥秘

括号匹配问题,以及最大栈和最小栈问题总结

2023-11-08 22:22:55 860 6

原创 如何基于链表与数组实现栈

栈(Stack)是一种常用的数据结构,它的特点是先进后出(FILO)的顺序。在计算机科学中,栈经常被用来处理函数调用、表达式求值等问题。在本文中,我们将介绍如何使用链表和数组来实现栈。

2023-11-04 16:16:34 285 5

原创 在Ubuntu上安装Redis并学习使用get、set和keys命令

安装redis,以及主要命令

2023-11-02 21:19:10 1624 12

原创 链表加法与节点交换:数据结构的基础技能

给你一个链表,两两交换其中相邻的节点,并返回交换后链表的头节点。我们的实现思路就是先把链表压入栈中,给最低位加一,用carry来记录是否有进位,然后用头插的方式把加一的链表连接起来。首先创建一个空的栈(Stack)用于保存链表中的数字,并将链表中的每个节点的值依次入栈。创建一个新的节点cur,将其值设为ans,并将cur插入到虚拟节点dummy之后。创建两个新的节点a和b,并将它们的值设为stack1和stack2弹出的节点值。创建一个虚拟节点dummy,并将其值设为-1,用于存储相加后的链表。

2023-10-29 14:58:33 803 3

原创 转变命运!揭秘反转链表的神奇算法!

链表是计算机科学中常用的数据结构之一,它由一系列节点构成,每个节点包含一个值和指向下一个节点的指针。链表的灵活性使其在许多场景下被广泛应用,但其中的一个常见问题是如何反转链表。

2023-10-28 18:33:43 342 7

原创 经典链表问题:解析链表中的关键挑战

链表是常见的数据结构之一,它由一系列节点组成,每个节点包含一个数据元素和一个指向下一个节点的指针。链表的灵活性使得它在很多问题中都能发挥重要作用。然而,链表问题也有其特殊性和挑战性。相较于数组,链表的访问和操作更为复杂,因为链表中的每个元素并不是按照顺序存储的。这一特性导致了在解决链表问题时需要采取特定的方法和技巧。本文将从经典链表问题的角度出发,解析在解决链表问题时所面临的关键挑战。我们将深入探讨链表的基本特性及其对问题求解的影响,介绍一些常见的链表问题,并提供相应的解决策略和优化方法。

2023-10-22 22:59:12 787 14

原创 链表增删操作问题及解决方法

链表是一种常用的数据结构,用于存储和组织数据。在链表中,增加和删除元素是常见的操作。然而,在进行链表的增删操作时,对于首部、中间和尾部位置的元素,都存在一些问题需要解决。

2023-10-18 17:40:35 961 13

原创 掌握优先级队列:提升效率的关键技巧

队列是一种先进先出的数据结构,但在一些情况下我们要优先处理一些情况,比如:正在手机上打游戏的时候,如果有来电,那么系统就应该处理打进来的电话。在这种情况下,数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue)。

2023-10-15 13:13:20 337 6

原创 深入解析哈希表、哈希映射和并发哈希映射的区别,以及死锁的成因和解决方案

可以举例“哲学家就餐问题”,有一群哲学家围着一张桌子吃饭,每两个哲学家之间放一个筷子,哲学家只做两件事:思考人生 或者 吃面条。思考人生的时候就会放下筷子。吃面条就会拿起左右两边的筷子(先拿起左边, 再拿起右边),哲学家发现筷子拿不起来就会阻塞等待思考人生。五个哲学家同一时刻同时拿起左的筷子,再去拿右边的筷子就会发现筷子已被占有,就会阻塞等待,进行思考人生,哲学家们互相挂起等待就会形成“死锁”。死锁是多线程编程中常见的问题,当两个或多个线程互相等待对方持有的资源而无法继续执行时,就会发生死锁。

2023-09-24 15:36:50 387 11

原创 Java中synchronized:特性、使用、锁机制与策略简析

当一个线程进入synchronized代码块时,它会尝试获取指定对象的内置锁,只有当线程释放锁之后,其他线程才能获得锁并执行同步代码。按照之前对锁的理解就是,锁没有释放,进行再次加锁就会进行阻塞,直到第一次的锁被释放,才能获取到第二个锁,但释放第一个锁也由该线程来进行,结果现在这个线程啥都干不了,也就只能形成死锁了。按照之前对锁的理解就是,锁没有释放,进行再次加锁就会进行阻塞,直到第一次的锁被释放,才能获取到第二个锁,但释放第一个锁也由该线程来进行,结果现在这个线程啥都干不了,也就只能形成死锁了。

2023-09-20 22:33:38 429 5

原创 解密Java多线程中的锁机制:CAS与Synchronized的工作原理及优化策略

CAS: 全称Compare and swap,字面意思:”比较并交换“,CAS涉及如下操作:假设内存中的原数据为A,旧的预期值为B ,需要修改的值为C。首先把A与B进行比较,看A与B是否相同。如果A与B相同,则把数据C的值赋予A。返回操作成功。我们来写一个CAS的伪代码以帮忙我们更好理解CAS。//进行比较看a是否发生变化if(a==b){a=c;CAS是乐观锁的一种实现方式,当多个线程对一个数据进行操作时,只有一个线程操作成功,其他线程并不会阻塞,会返回操作失败的信号。

2023-09-20 17:52:16 359 1

原创 深入理解Java单例模式和优化多线程任务处理

单例模式能保证某个类在程序中只存在唯一一份实例, 而不会创建出多个实例,并提供一个全局访问点。单例模式确保类的唯一实例,并提供了全局访问点,以便全局共享该实例。阻塞队列提供了一种线程安全的协作机制,用于在线程间传递和同步数据,实现高效的任务处理。通过理解和正确应用单例模式和阻塞队列,可以提高多线程编程的效率、可靠性和安全性。

2023-09-18 21:13:01 641 3

原创 解析Spring Boot中的Profile:配置文件与代码的双重掌控

在Spring Boot中,Profile是一种非常有用的功能,它可以让我们根据不同的环境需求来加载不同的配置文件。本文将详细介绍Spring Boot中的Profile功能,以及如何通过代码来控制Profile的使用。

2023-09-10 19:37:07 3438 122

原创 探索多线程编程:线程的本质、状态和属性

线程是现代计算机编程中至关重要的概念之一。它使得我们能够更高效地利用多核处理器,提高程序性能并实现多任务并发操作。本文将深入探讨线程的本质、不同状态以及可配置的属性,帮助读者更清晰地理解并应用线程。

2023-09-06 23:50:46 574 37

原创 Go语言中的数组、切片和映射解析

map 中所有的 Key 必须具有相同的类型,Value 也同样,但 Key 和 Value 的类型可以不同。在类型名前加 [] 中括号,并设置好长度,大括号中的元素用于初始化数组,需要注意的是数组的长度不同,即属于不同的类型。容量就是申请的内存空间,而长度是已经使用的内存空间,我们可以通过 append 函数往切片中追加元素,来使用空闲内存。通过两张结果图可以看出map 的遍历是无序的,也就是说你每次遍历,键值对的顺序可能会不一样。数组存放的是固定长度、相同类型的数据,而且这些存放的元素是连续的。

2023-09-05 20:55:38 2107 71

原创 解锁Spring AOP的神秘面纱

Spring AOP作为Spring框架的核心模块,为我们提供了一种优雅的方式来处理横切关注点。本篇博客将从组成、实现和实现原理三个方面深入剖析Spring AOP,并结合具体的例子进行说明,帮助读者深入理解和使用该技术。

2023-08-20 20:35:52 1840 102

原创 MyBatis动态SQL:打造灵活可变的数据库操作

动态SQL就是根据不同的条件或需求动态地生成查询语句,比如动态搜索条件、动态表或列名、动态排序等。

2023-08-17 23:23:00 1563 102

原创 深入浅出:MyBatis的使用方法及最佳实践

创建⼀个全新的 MyBatis 和 Spring Boot 的项⽬时添加引⽤。其他代码修改跟增加操作相似。使用浏览器进行查询访问。查看数据库发现修改成功。查看数据库,删除成功。

2023-08-13 03:29:38 1260 116

原创 内网穿透:实现公网访问内网群晖NAS的方法

群晖NAS作为应用较为广泛的小型数据存储中心,近年来颇受使用者的青睐,越来越多的小型企业和家庭使用该系统存储数据。通常,群晖系统几乎都是在内网系统内运行,我们很难从公共互联网上,访问位于内网的群晖NAS。不过现在,我们可以使用cpolar内网穿透,建立一条专属的数据隧道,轻松地从公共互联网上访问到内网的群晖NAS。现在,就让我们来看看如何操作吧。

2023-08-10 14:00:46 1197 48

原创 解密SpringMVC:探秘常用注解,让你的Java应用飞速起航!

Spring MVC是Spring框架中的一个模块,是基于Java的Web应用程序开发框架。它提供了一种用于构建灵活、高效、可扩展的Web应用程序的方式。Spring MVC允许开发者将业务逻辑与视图逻辑分离,以及支持MVC(Model-View-Controller)设计模式,使开发过程更加模块化和易于管理。在Spring MVC中,控制器(Controller)负责处理用户请求,模型(Model)表示应用程序的数据和业务逻辑,视图(View)用于展示数据给用户。

2023-08-05 06:33:27 636 77

原创 深入理解 Java Bean 的生命周期及各个阶段解析

Java Bean是一个符合特定规范的Java类,通常具有私有的成员变量、公共的getter和setter方法,以及一个无参构造函数。这些特性使得Bean对象易于序列化和反序列化,并且被广泛应用于Java开发中,尤其在框架和应用程序中经常被用作数据封装和组件复用。创建阶段:当使用构造函数或者工厂方法创建Bean对象时,就进入了创建阶段。属性设置阶段:在Bean对象创建后,通过setter方法设置Bean的各个属性。

2023-08-01 22:28:24 13642 117

原创 探究Spring Bean的六种作用域:了解适用场景和使用方式

在⼀个HTTP WebSocket的⽣命周期中,定义⼀个Bean实例,WebSocket的每次会话中,保存了⼀个Map结构的头信息,将⽤来包裹客户端消息头。每次对该作⽤域下的Bean的请求都会创建新的实例:获取Bean(即通过applicationContext.getBean等⽅法获取)及装配Bean(即通过@Autowired注⼊)都是新的对象实例。我们现在创建一个公共的Bean供用户一与用户二使用,用户一再使用完后对其内容进行修改,后被用户二使用,查看Bean是否改变,即可查看Bean的作用域。

2023-07-27 01:14:52 1946 101

原创 探秘Spring中Bean的注解宝典:解读存取Bean的相关注解及用法

在这篇文章中,我们将深入探讨Spring框架中与Bean存取相关的注解。Spring作为一个强大的IoC(控制反转)容器,提供了多种注解用于标记和管理Bean组件。本文将详细介绍每个注解的用途和使用方法,帮助读者全面了解如何优雅地存取Bean对象。无论是@Component、@Repository、@Service和@Controller等通用注解,还是@Autowired、@Qualifier、@Resource和@Value等依赖注入和属性注入相关注解,都将一一呈现在读者面前。精彩内容,不容错过!

2023-07-23 08:31:59 2532 98

原创 Spring的创建和使用

操作容器之前,需要先得到容器。存对象创建 Bean将 Bean 注册(配置)到 spring-confing.xml 中取对象得到 Spring 上下⽂,并读取到 Spring 的配置⽂件获取某⼀个 Bean 对象使用Bean对象。

2023-07-19 09:23:48 1575 107

原创 快速入门Linux 中的常用命令

在插入模式下不能保存文件, 需要先回到 普通模式 . 按下 Esc 回到普通模式。vim 是一个知名的文本编辑器,使用vim 可以进行文本编辑,功能比Windows上的记事本强大一些。功能:对于目录,该命令列出该目录下的所有子目录与文件。vim 打开文件后默认是普通模式. 普通模式下键盘的按键表示一些特殊功能的快捷键。~ 表示当前所在的目录,在Linux中表示home目录(用户数据存放的目录)使用ls -l ./ 可列出当前目录下,文件的详细信息,当然./可以省略。将当前工作目录改变到指定的目录下。

2023-07-17 23:42:24 2260 69

原创 垃圾回收的核心知识点解析

Java运行时内存中的程序计数器、虚拟机栈、本地方法栈这三部分区域其生命周期与相关线程有关,随线程而生,随线程而灭。而程序计数器就是一个单纯存地址的整数也不需要关心,因此我们GC(垃圾回收)的主要目标就是堆(堆中存放着几乎所有实例对象)!

2023-07-15 10:07:04 593 60

原创 解析Java类加载的运行机制和双亲委派模型

类加载形如把.class文件,加载到内存中,得到类对象这样的过程。类加载机制是Java虚拟机(JVM)加载类的过程,而双亲委派模型是指在类加载过程中,JVM通过委派的方式来从不同的类加载器去加载类。这个机制主要用于确保类的一致性、安全性和避免重复加载。

2023-07-13 18:20:08 740 73

原创 计算机网络-网络体系结构

计算机网络:就是利用通信设备和线路将地理位置不同的、功能独立的多个计算机系统互连起来,以功能完善的网络软件(即网络通信协议、信息交换方式、网络操作系统等)实现网络中资源共享和信息传递的系统计算机网络所连接的硬件,并不限于一般的计算机,而是包括了智能手机计算机网络并非专门用来传送数据,而是能够支持很多种的应用(例如用于实现远程控制和远程访问,如远程桌面和远程服务器等。此外,计算机网络还可以用于安全性、可靠性和性能方面的提高,例如防火墙、数据备份和负载均衡等。计算机网络逻辑功能上分为资源子网和通信子网。

2023-06-13 23:51:18 5967 80

原创 如何在Spring Boot服务端实现公网远程调试并进行HTTP服务监听

前后端分离项目中,在调用接口调试时候,我们可以通过cpolar内网穿透将本地服务端接口模拟公共网络环境远程调用调试,本次教程我们以Java服务端接口为例。

2023-05-25 11:30:04 3250 68

原创 JavaEE-HTTPS的加密流程

https对称加密,非对称加密,证书的引入加密详细流程

2023-05-22 13:54:44 806 12

算法设计-格雷码的分治构造算法

算法课程设计-格雷码的分治构造算法 设计内容: 1. 任务说明 题目描述:Gray码是一个长度为2n的序列,序列中无相同元素,且每个元素都是长度为n位的二进制位串,相邻元素恰好只有1位不同。例如长度为23的格雷码为(000,001,011,010,110,111,101,100),设计分治算法对任意的n值构造相应的格雷码。 2. 要求 (1)根据设计题目的要求和说明,理解和分析问题,梳理问题中的输入数据和输出数据,并确定用何种数据结构存储数据; (2)使用某种算法设计方法,按照“自顶向下、逐步求精”的方式,用伪代码编写问题求解主要步骤,然后细化每个主要步骤; (3)将编写的完整算法伪代码转换成某种编程语言程序,转换时注意按照程序模块化要求,定义主模块和多个子模块; (4)运行和调试程序并分析运行结果是否正确; (5)编写课程设计报告。

2024-01-24

微机原理课程设计-模拟电子琴设计

用于进行微型计算机原理的课程设计书-模拟实现电子琴 一、目的任务: 依据实验器材提供的功能,利用定时器产生的不同音阶频率的基本方法,使数字键1、2、3、4、5、6、7作为电子琴键驱动喇叭发声。 二、设计内容: 1. 复习相关课程内容:微机原理及应用课程相关内容;汇编语言程序设计的相关内容;熟悉模拟电路、数字电路的相关知识; 2. 熟悉实验相关器材的主要功能。 3. 在上述基础上,根据课程设计的基本要求,完成以下各项任务(反映在设计说明书中): (1)题目要求涉及的硬件电路图及摘要说明。 (2)题目的工作原理及相应描述。 (3)程序流程框图。 (4)程序文本输入及实验完成。 三、时间安排: 周一~周二完成相关知识点的复习与软硬件设计; 周三~周四完成实验调试和编写设计说明书; 周五进行课程设计验收、答辩。 四、设计要求: 1.软件程序文档;2.硬件电路图(用专业软件);3.完成实验;4.完成设计说明书。

2024-01-24

mysql数据库做的数据库课程设计报告-书店租赁系统

书店租赁系统数据库课程设计描述: 项目名称:书店租赁系统 项目背景:随着数字化时代的来临,人们对传统书店的需求逐渐减少,但仍然存在一定的读者群体倾向于租赁图书而非购买。因此,为了满足这一市场需求,本书店租赁系统的设计旨在建立一个高效、便捷的图书租赁平台,为用户提供广泛的图书租赁选择。 项目目标:书店租赁系统的目标是创建一个完整的数据库系统,以支持书店的租赁业务。该系统旨在实现以下目标: 1. 用户管理:允许用户注册、登录和管理他们的个人信息,包括姓名、联系信息等。 2. 图书管理: 实现图书的添加、编辑、删除和检索功能,包括图书的基本信息(标题、作者、出版日期、ISBN等)和库存信息(可供租赁的数量、租赁价格等)。 3. 租赁流程:提供用户租赁图书的功能,包括查看可租赁图书、选择租赁期限、支付租金等。 4. 订单管理:跟踪用户的租赁订单,包括订单状态、租赁期限等信息。 5. 评价和反馈: 允许用户对租赁的图书进行评价和反馈,以提供改进和参考其他用户的建议。

2023-09-18

空空如也

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

TA关注的人

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