- 博客(37)
- 收藏
- 关注
原创 Redis学习之单线程
Redis采用单线程架构却能实现高性能(单机QPS达100万+),主要基于以下设计: 全内存操作规避磁盘IO瓶颈,CPU资源集中于内存处理; 单线程避免线程切换和锁竞争开销; IO多路复用技术支持高并发网络连接处理; 定制化高效数据结构(如跳表、SDS)优化内存操作; 非核心操作(持久化、大key删除)采用异步/多进程执行。 这种设计最大化利用了单线程优势,同时规避其潜在瓶颈,实现了远超Memcached的性能表现。
2025-12-20 14:55:29
618
原创 Redis学习之go-redis
本文介绍了Go语言中使用Redis的常见操作指南,主要包括: 连接管理:单机和集群连接方式,连接池配置参数 数据类型操作: String:基本读写、批量操作、自增 Hash:字段操作、批量处理 List:推入/弹出元素、范围查询 Set:成员操作、集合运算 Sorted Set:分数相关操作、排名查询 Stream:消息队列操作、消费者组管理 高级功能:事务处理、发布订阅、管道技术 实用技巧:错误处理、大数据集扫描 提供了各操作的代码示例,涵盖Redis主要功能的使用方法。
2025-12-15 14:48:33
413
原创 Redis学习之Stream
Redis Stream 是一种高性能、持久化的消息队列数据结构,具有仅追加日志特性。它通过消费者组机制实现负载均衡和可靠性,每个消息由唯一ID标识并被分配给组内消费者处理。关键机制包括待处理消息列表(PEL)用于跟踪未确认消息,以及XACK确认和XCLAIM故障恢复功能。核心命令如XADD添加消息、XREADGROUP消费消息、XPENDING监控未处理消息等。文章以快递分拣中心为比喻,形象解释了消费者组如何协同工作并确保消息不丢失,适用于构建聊天服务器等实时系统。
2025-12-06 21:35:23
770
原创 MySQL学习之go-mysql
本文介绍了使用Go语言操作MySQL数据库的基本方法。主要内容包括:1)安装驱动和导入包;2)建立数据库连接;3)实现CRUD操作(创建表、增删改查);4)使用预处理语句提高性能;5)事务处理保证数据一致性;6)连接池配置优化。文章提供了详细的代码示例,涵盖了数据库操作的常见场景,并总结了9个关键注意事项,如使用Ping验证连接、正确处理查询结果关闭、合理配置连接池参数等,为Go开发者提供了完整的MySQL操作指南。
2025-11-29 14:43:09
325
原创 redis学习之基础数据结构
Redis提供5种核心数据类型:1)String-二进制安全字符串,用于缓存、计数器和键值存储;2)List-有序字符串列表,适用于消息队列和操作记录;3)Hash-键值对集合,适合存储对象和购物车;4)Set-无序唯一集合,支持交并集运算,用于标签系统和去重;5)Sorted Set-带分数的有序集合,用于排行榜和优先级队列。每种类型都有特定命令和应用场景,能高效处理不同数据结构需求。
2025-11-22 13:59:17
257
原创 数据库的范式讲解
数据库范式是设计关系型数据库的规范体系,核心目标是减少数据冗余和更新异常。基本范式包括1NF(保证数据原子性)、2NF(消除部分依赖)和3NF(消除传递依赖),工业场景中最常用。更高阶的BCNF、4NF和5NF主要解决主属性依赖、多值依赖和连接依赖问题,但实际应用较少。范式等级越高,数据冗余越少但查询性能可能下降,实践中通常在3NF基础上进行适当反范式化,以在数据一致性和查询效率间取得平衡。
2025-11-15 13:41:04
334
原创 sql学习之事务和视图
摘要 本文主要介绍了数据库事务和视图的相关概念。事务是具有ACID特性(原子性、一致性、隔离性、持久性)的一组SQL语句执行单元,可通过显式或隐式方式创建。文章详细说明了事务隔离级别(READ UNCOMMITTED、READ COMMITTED、REPEATABLE READ、SERIALIZABLE)及其解决的并发问题(脏读、不可重复读、幻读)。视图部分阐述了其作为虚拟表的特性,可以简化复杂查询、保护数据安全,并介绍了视图的创建、修改、删除、查看和更新操作。通过转账等案例说明了事务的实际应用,同时指出某
2025-11-08 13:15:01
995
原创 SQL学习之常见函数和连接查询
摘要 本文系统介绍了SQL中常见的函数及其分类。单行函数包括字符函数(length、concat等)、数学函数(round、ceil等)、日期函数(now、year等)以及其他实用函数。分组函数则用于统计分析,如sum、avg等。文章详细讲解了各种函数的语法和使用场景,包括字符串处理、数值计算、日期操作等。特别强调了分组查询的语法规则和特点,包括where和having的区别,以及group by的多字段分组能力。通过多个实际案例演示了如何编写复杂的分组查询语句,帮助读者掌握SQL函数的综合应用技巧。
2025-11-01 13:33:14
889
原创 SQL学习之常用的数据库命令和基础查询
MySQL基础操作与查询摘要 本文介绍了MySQL数据库的基本操作命令、语法规范和查询语句。主要内容包括: 基础命令:数据库查看、表操作、版本查询等常用命令 语法规范:大小写规则、注释方式、标点符号使用等注意事项 数据导入导出:使用source指令导入和mysqldump导出数据 SELECT查询:基本查询结构、字段选择、别名设置、去重操作 条件查询:比较运算符、逻辑运算符和模糊查询(LIKE、BETWEEN、IN等) 排序查询:ORDER BY子句的使用及升序降序设置 特别强调了NULL值处理、大小写敏感
2025-10-26 16:21:16
964
原创 MySQL学习之基础了解
SQL基础概念与数据库设计摘要 SQL(结构化查询语言)是用于与关系型数据库通信的标准语言,具有简单易学、跨平台兼容的特点。数据库管理系统(DBMS)通过表结构存储数据,表由行(记录)和列(字段)组成,类似面向对象中的类与对象关系。关系型数据库基于E-R模型,支持表间四种关联:一对一(可合并为单表)、一对多(从表添加外键)、多对多(通过中间表拆分)以及自我引用。非关系型数据库则采用键值对、文档等灵活存储方式,各有特定适用场景。数据库操作包括启动/停止服务以及通过命令行登录退出等基础管理功能。
2025-10-18 14:55:37
537
原创 linux学习——总结
Linux常用命令指南摘要:本文详细介绍了Linux系统中各类基础与进阶命令,包括目录操作(ls/cd/pwd/mkdir)、文件操作(touch/cat/cp/mv/rm)、查找过滤(find/grep)、文本编辑(vim)、用户权限(su/sudo/chmod)、系统管理(ps/kill/top)、网络工具(ping/wget)以及软件管理(yum/systemctl)等。重点讲解了命令的功能、常见参数和使用场景,如ls -al显示详细目录、rm -rf强制删除、grep过滤内容等,并补充了文件打包压缩
2025-10-12 15:39:16
672
原创 Docker学习——镜像
摘要:Docker镜像是包含软件运行环境和代码的轻量级可执行包,可通过远程下载、复制或Dockerfile制作。其核心是UnionFS分层文件系统,由bootfs(引导内核)和rootfs(发行版基础文件)组成。镜像分层结构允许多容器共享基础层,提升效率。镜像本身只读,容器启动时在其顶部添加可写层。用户可通过docker commit将修改后的容器保存为新镜像,例如自定义Tomcat镜像。这种分层设计实现了资源复用与快速部署。
2025-10-04 12:12:51
849
原创 Linux学习之软件安装,配置主机固定IP,和网络传输
本文介绍了Linux系统中常用的软件管理和网络配置操作。主要内容包括:1)通过yum/apt命令在命令行中安装、卸载和搜索软件;2)使用systemctl管理服务(启动/停止/自启动);3)ln命令创建软链接;4)date命令查看和修改时间,ntp服务自动校准时间;5)IP地址、主机名配置及域名解析原理;6)网络诊断工具ping、wget、curl的使用;7)端口概念及nmap端口扫描。文章还详细说明了如何为虚拟机配置固定IP地址,解决DHCP动态IP导致的问题。这些操作涵盖了Linux系统日常管理和网络配
2025-09-27 11:14:09
633
原创 Linux学习之用户管理
Linux系统采用多用户权限管理模式,root用户拥有最高权限,普通用户权限受限。通过su命令切换用户,建议使用sudo临时获取root权限。用户和用户组管理包括创建/删除用户组(groupadd/groupdel)、创建/删除用户(useradd/userdel)等操作。权限管理通过chmod和chown命令实现,chmod修改文件/文件夹权限(rwx对应数字421组合),chown修改所属用户/组。普通用户需root授权才能使用sudo,root用户可直接切换或修改系统配置。权限管控分为用户和用户组两级
2025-09-21 16:47:15
1048
原创 Linux学习之命令_续
参数2,Linux路径,表示要移动去的地方,如果目标不存在,则进行改名,确保目标存在。tail命令可以用于查看文件尾部内容,跟踪文件的最新更改。选项,-num,表示,查看尾部多少行,不填默认10行。语法:wc [-c -m -l -w] 文件路径。参数1,Linux路径,表示被复制的文件或文件夹。参数1,Linux路径,表示被移动的文件或文件夹。选项 -r,可选,用于复制文件夹使用,表示递归。参数2,Linux路径,表示要复制去的地方。参数,Linux路径,表示被跟踪的文件路径。
2025-09-13 16:00:00
674
原创 Linux学习之vi/vim编辑器
本文介绍了Linux中的经典文本编辑器vi/vim。vim是vi的增强版本,支持语法高亮等功能。vi/vim有三种工作模式:命令模式(执行命令)、输入模式(编辑文本)和底线命令模式(保存退出等操作)。文章详细说明了各模式之间的切换方式,并提供了常用快捷键列表,包括光标移动、复制粘贴、删除搜索等操作命令。最后介绍了底线命令模式下的常用指令,如保存(:wq)、退出(:q)、显示行号(:set nu)等。这些内容为初学者提供了vi/vim编辑器的基本使用指南。
2025-09-13 11:12:14
370
原创 Linux学习之虚拟机的基础了解
摘要:本文介绍了操作系统的两种使用形式(图形化与命令行)及目录结构差异(Linux单根目录 vs Windows多盘符)。重点讲解了虚拟机快照功能,包括创建步骤(通过VMware菜单拍摄)、管理方法(恢复/克隆快照)及其在系统测试中的重要作用,可快速回退到保存状态。配图展示了快照管理界面。(98字)
2025-09-06 14:30:00
399
原创 Liunx学习之文件管理
本文介绍了Linux命令行基础知识和常用操作命令。主要内容包括:1)命令行概念,即通过字符指令操作系统的终端界面;2)命令格式规范,通常为"命令 [选项] [参数]"结构;3)常用命令详解,如ls(列出目录内容)、pwd(显示当前路径)、cd(切换目录)、mkdir(创建目录)、rmdir(删除空目录)、touch(创建文件)、cat/more(查看文件内容)等,并说明各命令的选项参数和特殊路径符用法。这些基础命令是Linux系统管理和文件操作的核心工具。
2025-09-06 10:19:11
745
原创 Go进阶学习之协程和管理
本文介绍了Go语言中goroutine和channel的基本概念与应用。首先阐述了进程、线程、并发与并行的区别,指出Go协程是轻量级线程,具有独立空间、共享堆空间等特点。然后通过示例代码展示如何使用goroutine实现并发,并对比了主线程与协程的资源消耗差异。接着讲解了MPG模式(主线程、上下文、协程)和设置CPU核数的方法。最后重点介绍了channel管道的使用,包括定义、初始化、读写操作及注意事项,强调channel是线程安全的队列结构,必须初始化后才能使用,且具有类型限制。文章还提供了全局变量加锁和
2025-08-17 20:25:13
822
原创 Go进阶学习之文件处理
Go语言文件操作指南 摘要:本文介绍了Go语言中处理文件的标准库方法,主要包括os、io、bufio等核心包的使用。内容涵盖文件基本操作(打开/关闭)、读取方式(带缓冲/一次性读取)、写入模式(覆盖/追加)以及文件拷贝等实用功能。重点讲解了os.OpenFile()的多模式组合使用、bufio的缓冲读写优化,以及通过os.Stat()判断文件存在性的技巧。文章提供了多个代码示例,如通过缓冲逐行读取、一次性读取小文件、文件覆盖与追加写入等场景的实现方案,并特别提醒注意文件句柄关闭和缓冲区flush的重要性。
2025-08-17 20:17:12
636
原创 Go基础学习之基本数据类型
本文介绍了Go语言中变量和基本数据类型的使用。变量是程序的基本组成单位,通过var声明并赋值,支持四种定义方式,包括类型推断和简写语法。基本数据类型包括数值型(整型、浮点型)、字符型(byte)、布尔型(bool)和字符串型(string),每种类型都有默认值。文中还详细说明了数据类型转换的方法,包括基本类型转string(使用fmt.Sprintf或strconv包函数)和string转其他类型(通过strconv.Parse系列函数)。特别强调了类型转换时可能出现的精度损失和数据溢出问题。
2025-07-19 20:57:15
357
原创 12.6日学习总结
数组容器再存储数据的时候,需要结合隐式转换, 例如int []arr里可以存储byte, short, int。3.数组的遍历:(1).定义:将数组中所有的内容取出来,取出来之后可以(打印,求和..)范例:int[] arr= new int[]{11,22,33,44};(2).格式:数据类型[] 数组名 = new 数据类型[]{数据值};(1).定义:初始化就是在内存中,为数组容器开辟空间,并将数据存入容器中。(2).格式:数据类型[]数组名 = new 数据类型[数组长度];
2023-12-06 21:00:00
87
1
原创 12.3日学习总结1
(1).默认方法不是抽象方法,所以不强制重写,但如果是被重写,重写的时候去掉default关键字。(3).如果实现了多个接口,多个接口中存在相同名字的默认方阿飞,子类就必须对该方法进行重写。当一个方法的参数是接口时,可以穿递接口所有实现类的对象,这种方法称之为接口多态。实现关系,可以单实现,也可以多实现,还可以再看i成一个类的同时实现多个接口。细节:如果实现类实现了最下面的子接口,那么需要重写所有的抽象方法。(4).接口的子类(实现类):要么重写接口中所有抽象方法。
2023-12-03 12:00:00
74
1
原创 11.29日学习总结
(2).final修饰的变量时引用数据类型:那么变量存储的地址值不能发生改变,对象内部的可以改变。1.包的定义:包就是文件夹. 用来管理各种不同功能的Java类,方便后期代码维修.(1).final修饰的变量是基本类型:那么变量存储的数据值不能发生改变。2.包名的规则:公司域名反写+包的作用,需要全部英文大小写,见名知意.(2).使用Java.lang包中的类时,不需要导包;(4).如果同时使用两个包中的同名类,需要全类名。(1).使用同一个包中的类时, 不需要导包;(3).其他情况都需要导包;
2023-11-29 21:30:00
79
1
原创 11.26日的学习总结
3.多态情况下,子父类存在同名的静态成员变量成员方法时,访问的是父类的成员函数。2.多态情况下,子父类存在同名的非静态成员方法时,访问的是子类中重写的方法。1.多态情况下,子类和父类存在同名的成员变量时,访问的时父类的成员变量。2.同一方法可以根据发送对象的不同而采用不同的行为方式。1.多态是同一个行为具有不同的表现形式或形态的能力。1.父类类型 变量名 = new 子类类型();4.多态情况下,不能访问子类独由的方法。调用在子类中重写的方法。
2023-11-24 16:44:38
82
1
原创 11.22日的学习总结
注意:当出现崇明的成员变量时用this.关键字和super.关键字,其中super关键字是直接调用父类中的。在继承体系中,子类出香炉和父类中一模一样的方法生命,我们就成子类这个方法是重写的方法。(1).@Override是放在重写后的方法上,校验子类重写的语法是否正确。2.子类构造方法的第一行,有一个默认的super(),不写也存在;1.构造方法 : 非私有的不能继承,私有的也不能继承;(1).重写方法的名称,形参列表必须与父类中的一致;(5).子类不能重写父类的静态方法,如果重写会报错的。
2023-11-22 15:47:53
95
1
原创 11.19日的学习总结
2.继承的好处: 可以把多个子类中重复的代码抽取到父类中, 子类可以直接使用,减少代码冗余, 提高代码的复用性.1. 继承:即是面向对想的三大特征之一, 可以让类与类之间产生子父的关系.其中的Ragdoll被称为子类(派生类), cat称为父类(基类或超类)多层继承: 子类A继承父类B,父类B可以继承父类C。(2).子类可以在父类的基础上新增其他功能, 子类更强大.(3).java只支持单继承,不支持多继承,但支持多层继承。(1). 子类可以得到父类的属性和行为, 子类可以使用.
2023-11-19 11:45:00
75
原创 11.15日学习总结
5.Java中四种权限修饰符是public(公共类), private(私有类), protect(受保护类), default(默认类)方法重载是指在同一个类中,方法允许存在一个以上的同名方法,只要他们的方法的参数列表不同即可。方法重载设计的的原则]是在同类中同方法的参数列表不同,方法重载与返回值类型与参数名称无关。static修饰的成员在类的加载到内存中是就已经存在了。1.方法重载与重写的相同之处是方法名。4.所有类都是object类的子类。5.方法重载即设计的原则。11.11日考试总结。
2023-11-15 15:04:24
76
原创 11.12日学习总结
JavaBean类 用来描述一类事物的类. 比如,Student,Teacher,Dog,Cat等。测试类 用来检查其他类是否书写正确, 带有main方法的类, 是程序的入口。1.static表示静态,是Java中的一个修饰符,可以修饰成员方法,成员变量。随着类的加载而加载,优先于对象存在。工具类 不是用来描述这一类事物的,而是帮我们做一些事情的类。调用方法: 类名调用;2. 被static修饰的成员变量,叫做静态变量。3.被static修饰的成员方法,叫做静态方法。
2023-11-13 08:41:18
64
原创 11.8Java学习总结
1.字符串的定义:字符串常量是用双引号括起的一串若干个字符(可以是0个)。Boolean equals ,用'=='是比较字符串的地址值,不比较字符串的内容。字符串的长度: 字符串对象.length() 如;3.字符串的比较:字符的比较不能用'==',要用boolean equalslgnoreCase 忽略大小写(验证码)例如:String name = "lizonghao";注意:字符串的内容是不会发生改变的,他的对象在常见后不能被更改.2.字符串的作用:我们上网时用的用户名和密码是字符串。
2023-11-08 15:48:04
337
1
原创 灯塔:字符串
boolean equalslgnoreCase 忽略大小写(验证码)2.引用数据类型:是数据的地址值;//1.使用直接赋值的方法获取一个字符串对象。//使用new的方法来获取一个字符串对象。/*(==)比较的是:1.基本数据类型:是具体的数据值;
2023-11-07 21:12:31
101
1
原创 灯塔:private关键字
System.out.println("非法数据");gf1.setGender("普通的女孩子");//针对每一个私有化的成员变量,都要提供get和set方法。gf1.setName("任羿慧");//get方法:对外提供成员变量的值;//set方法:给成员变量赋值;
2023-11-04 21:44:11
79
1
原创 灯塔:机票
按照如下规则计算机票价格:忘记(5-10月)头等舱为9折,经济舱8.5折,淡季(11月到来年4月)头等舱7折,经济舱6.5折*/System.out.println("请输入当前购买的舱位 0 头等舱 1 将机舱");System.out.print("没有这个舱位");System.out.print("没有这个舱位");System.out.println("请输入机票的原价");System.out.println("请输入当前的月份");System.out.println("没有这个舱位");
2023-11-03 22:08:12
59
原创 灯塔:方法的重载与内存
②每个方法具有不同的参数类型或参数个数,这些同名的方法,就构成了重载关系。①在一个类中,定义了多个同名的方法,这种同名的方法具有同种的功能;(既,同一个类中,方法名相同,参数不同的方法。参数不同:个数不同、类型不同、顺序不同)内存分配包括:栈,堆,方法区,本地方法栈,寄存区。3.在使用重载时,应点名数据类型。
2023-10-30 22:26:04
91
1
原创 灯塔:Java种方法的学习与反思
图中圈红的地方,就是我们常用的main()方法 ,方法可以简化程序的结构,也可以节省编写相同的代码的时间 (即将重复代码放在一个箱子里面,随用随取),达到程序模块化的目的.public static void 方法名(参数){... ...}方法体(就是打包起来的代码);public static void 方法值(){调用方法是:直接调用 方法值名();(2)带参数的方法定义:即。调用方法是:方法名(参数)
2023-10-25 20:41:57
90
1
原创 灯塔:考核反思
1. java的数据类型包括"基本数据类型"和"引用数据类型",基本数据来型包括:(1)整型:byte,short,int,long;在此次考试中,我发现我有很多的不足的地方暴露出来,过去我总是只听网课,没有将知识与实际联合起来,在接下来的时间里,我应将学习重心放在实践当中.4.二维数组的格式是:int [][] arr={{第一行初值},{第二行初值},.........{}};continued的作用是:跳出当前循环,从头开始';7.&和&&的不同点:&必须在两边计算完后,采取结果值;
2023-10-23 20:57:56
98
原创 用for语句实现循环
for语句也可以改写为while循环的形式,for语句中的语句1,表达式2,表达式3都可以省略,但不能只剩表达式2。除了用while和do…语句实现循环外,我们也可以用for语句实现循环而且for语句更为灵活。fory语句的一般形式为:for(表达式1;for(循环变量赋初值;
2023-10-19 22:18:01
116
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅