自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 【Java并发编程 | JUC】线程

程序:一组静态的指令集进程:程序运行的一个实例线程:进程中的一个执行单元。

2024-09-07 09:01:54 688

原创 Golang 并发编程

channel 用来解决go程的同步问题以及go程之间数据共享(数据传递)的问题。⽤类型 channel可用于多个 goroutine 通讯。其内部实现了同步,确保并发安全。

2024-08-09 23:17:01 581

原创 Golang 语法入门

Slice 的切片相当于动态数组// 先定义再初始化// 定义同时初始化// 获取长度len(arr)// 获取容量cap(arr)

2024-08-09 23:16:16 676

原创 【面经总结】Java集合 - Map

链表查询复杂度取决于链表长度,为 O(n)。为了降低开销,Java8 中当容量达到 64,且元素达到 8 个时会转为红黑树,降低复杂度为 O(logN)Java7 使用 Entry 表示数据节点,Java8 使用 Node 和 TreeNode。优点:能使用32位计算哈希,避免因为高位没有参与下标的计算而碰撞。计算 hash 方式:高16位不变,低16位和高16位做异或。在 HashMap 的基础上,维护一个双向链表,实现插入顺序。实现机制:**数组 + 链表,**通过链表解决哈希冲突。

2024-06-15 20:45:26 600 1

原创 【面经总结】Java集合 - List

/ 类定义// 类定义 public class ArrayList < E > extends AbstractList < E > implements List < E > , RandomAccess , Cloneable , java . io . Serializable。

2024-06-15 20:43:16 981

原创 【面经总结】Java基础 - SPI

提供给服务提供者去使用的一个接口。

2024-06-14 10:39:51 351

原创 【面经总结】Java基础 - 反射

在运⾏时获得类的信息,创建类的对象,调⽤其中的⽅法和属性。

2024-06-14 10:38:28 311

原创 【面经总结】Java基础 - Java8 新特性

用于函数式编程,替代匿名内部类来实现函数式接口。

2024-06-13 10:24:13 847

原创 【面经总结】Java基础 - IO

序列化:将对象转换为二进制数据反序列化:将二进制数据转换为对象。

2024-06-13 10:22:36 313

原创 【面经总结】Java基础 - 注解

创建注解创建注解处理器Class<?// 确保可以访问私有字段测试并使用@NotNulltry {try {

2024-06-12 08:04:47 196

原创 【面经总结】Java基础 - 常见类

equals() 方法比较对象的内容,但默认情况下与 == 的行为相同(比较引用)。可以覆盖 equals() 方法以便在内容上进行比较,例如 String、Integer、Double 等。equals 方法和 hashCode 方法应该具有一致性吗,从而保证哈希表等数据结构的正确性和一致性。为对象生成一个整数哈希值,该值可以用于哈希表等数据结构中快速查找和比较对象。浅拷贝实现方式:clone 方法默认实现就是浅拷贝。深拷贝:复制并创建了一个新对象。浅拷贝:复制了对象引用。

2024-06-12 08:03:13 782

原创 【面经总结】 Java基础 - 异常

继承 Exception 类。super(msg);

2024-06-11 10:09:13 521

原创 【面经总结】Java基础 - 数据类型

深入理解 Java 基本数据类型

2024-06-11 10:07:07 439

原创 【面经总结】Java基础 - 语言特性

形参:方法定义的参数实参:调用方法实际传入的参数。

2024-06-10 10:44:19 456

原创 【面经总结】Java基础 - 面向对象

以对象为核心。类是对象创建的模板,对象是类的实例。内部类的主要作用是可以访问外部类的私有成员。匿名内部类是只有类体没有类名的类,通常用于创建只需要使用一次的类的实例。可以简化代码书写,不需要单独定义一个实体类。

2024-06-10 10:40:26 858

原创 【MySQL】锁

全局锁:对整个数据库实例加锁,加锁后整个实例就处于只读状态,其他语句都将被阻塞。使用场景是:全库的逻辑备份语法:1、加全局锁2、数据备份3、释放锁。

2024-05-11 21:52:47 1181

原创 【MySQL】索引

索引在引擎层实现索引结构描述B+Tree索引最常见的索引类型,大部分引擎都支持B+树索引Hash索引底层数据结构是用哈希表实现的,只有精确匹配索引列的查询才有效,不支持范围查询R-tree(空间索引)空间索引是MyISAM引擎的一个特殊索引类型,主要用于地理空间数据类型,通常使用较少Full-text(全文索引)通过建立倒排索引,快速匹配文档的方式。类似于Lucene, Solr, ES索引InnoDBMyISAMMemoryB+tree索引支持支持支持Hash索引不支持。

2024-05-11 16:05:06 763

原创 MySQL存储引擎详解

不同的引擎有不同的应用场景存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。默认:InnoDB查询建表语句查看数据库支持的存储引擎memoryMyISAMInnoDB创建表并指定 MyISAM 存储引擎id int,InnoDB是一种兼顾高可靠性和高性能的通用存储引擎。DML(数据增删改查)操作遵循ACID模型,支持事务行级锁,提高并发访问性能支持外键。

2024-05-10 16:55:48 482

原创 缓存同步策略:Canal

Canal就是把自己伪装成MySQL的一个slave节点,从而监听master的binary log变化。再把得到的变化信息通知给Canal的客户端,进而完成对其它数据库的同步。Canal是基于mysql的主从同步来实现的。Canal提供了各种语言的客户端,当Canal监听到binlog变化时,会通知Canal的客户端。接下来添加一个仅用于数据同步的账户,出于安全考虑,这里仅提供对heima这个库的操作权限。Canal是基于MySQL的主从同步功能,因此必须先开启MySQL的主从功能才可以。

2024-05-09 21:33:17 421

原创 Redis + OpenResty 多级缓存

在实际开发中,我们可以利用大数据统计用户访问的热点数据,在项目启动时将这些热点数据提前查询并保存到Redis中。nginx的默认配置文件注释太多,影响后续我们的编辑,这里将nginx.conf中的注释部分删除,保留有效部分。1、在nginx.conf的http下面,添加对OpenResty的Lua模块的加载。2、在nginx.conf的server下面,添加对/api/item这个路径的监听。NGINX_HOME:后面是OpenResty安装目录下的nginx的目录。

2024-05-09 21:32:45 1594

原创 Lua语法入门

Lua声明变量的时候,并不需要指定数据类型。数组、table都可以利用for循环来遍历。函数测试给定变量或者值的类型。

2024-05-08 09:07:20 603

原创 JVM进程缓存 Caffeine

Caffeine是一个基于Java8开发的,提供了近乎最佳命中率的高性能的本地缓存库。

2024-05-08 09:06:46 269

原创 【Redis分布式缓存】分片集群

分片集群需要的节点数量较多,这里我们搭建一个最小的分片集群,包含3个master节点,每个master包含一个slave节点,结构如下:这里我们会在同一台虚拟机中开启6个redis实例,模拟分片集群,信息如下:删除之前的7001、7002、7003这几个目录,重新创建出7001、7002、7003、8001、8002、8003目录:在/tmp下准备一个新的redis.conf文件,内容如下:将这个文件拷贝到每个目录下:修改每个目录下的redis.conf,将其中的6379修改为与所在目录一致:启动

2024-05-07 08:55:03 758 1

原创 【Redis分布式缓存】 哨兵机制

Redis提供了哨兵(Sentinel)机制来实现主从集群的自动故障恢复。

2024-05-07 08:17:00 1197

原创 【Redis分布式缓存】主从集群

主从集群:提高并发能力,实现读写分离。

2024-05-06 17:42:05 740

原创 【Redis】RDB持久化和AOF 持久化

RDB (Redis Database Backup file):数据快照默认保存在运行目录# 主进程保存快照(阻塞) save # 子进程保存快照 bgsaveRedis 停机时会执行一次RDB。AOF (Append Only File):命令日志。

2024-05-06 17:15:42 696

原创 使用AIGC生成软件类图表

Mermaid 是一个基于 JavaScript 的图表工具,可渲染 Markdown 启发的文本定义以动态创建和修改图表。

2024-05-05 21:52:00 1335

原创 【题解】牛客挑战赛 71 - A 和的期望

【代码】【题解】牛客挑战赛 71 - A 和的期望。

2024-04-25 21:46:57 575

原创 石家庄学院2023年大学生程序设计大赛题解

素数筛、回文数字、预处理。floyd求最短路径。

2024-04-25 21:38:15 181

原创 石家庄学院2024年大学生程序设计大赛题解

石家庄学院2024年大学生程序设计大赛题解

2024-04-25 21:30:16 570

原创 鸿蒙HarmonyOS应用 - ArkUI组件

封装并导出组件@Componentbuild() {Row() {使用组件Header({ title: "分数列表" })自定义公共样式:封装通用样式(属性必须是公共属性// 定义// 调用。

2024-04-24 16:41:19 798

原创 鸿蒙HarmonyOS应用 - 开发开发准备

TypeScript.具备面向对象编程的基本语法,例如interface、class、enum等。应用复杂时,我们可以把通用功能抽取到单独的ts文件中,每个文件都是一个模块(module)。模块可以相互加载,提高代码复用性。ArkTS基于TS,支持声明式UI、状态管理等。传统前端开发,需要多个语言(HTML、CSS、JS)相互配合。对于环境安装出问题的情况,可以查看环境并重新安装。TS具有静态类型检查功能,每个变量都具有数据类型。等待一段时间的下载之后,选择Finish。下载最新版本,导入插件。

2024-04-24 16:40:06 749

原创 openapi-typescript-codegen:一键生成前端请求代码

openapi-typescript-codegen 是一个用于生成 TypeScript 代码的工具,它可以根据 OpenAPI 规范(以前称为 Swagger)自动生成客户端和服务器端代码。这个工具可以帮助开发人员快速地创建符合 API 规范的 TypeScript 代码,减少手动编写重复代码的工作量。通过使用 openapi-typescript-codegen,开发人员可以更容易地与 API 进行交互,并确保代码的一致性和准确性。

2024-04-20 11:20:34 865

原创 【NEUQ1007】C基础-计负均正

从键盘输入任意20个整型数,统计其中的负数个数并求所有正数的平均值。

2024-04-18 21:02:14 231

原创 Git代码提交规范

尽量保持提交频率较小,每个提交应该只包含一个逻辑上的更改或修复。

2024-04-18 20:49:57 531

原创 蓝桥杯备赛:考前注意事项

求 m^k mod p,时间复杂度 O(logk)。,再去想算法去优化时间/空间。📢 注意:加速命令后。

2024-04-12 10:17:10 621

原创 Redis实现好友关注 共同关注 关注推送

创建数据库表,保存关注信息。

2024-02-15 23:34:42 343

原创 【Redis】签到点赞和UV统计

UV统计在服务端做会比较麻烦,因为要判断该用户是否已经统计过了,需要将统计过的用户信息保存。Hyperloglog(HLL)是从Loglog算法派生的概率算法,用于确定非常大的集合的基数,而不需要存储其所有值。把每一个bit位对应当月的每一天,形成了映射关系。作为代价,其测量结果是概率性的,有小于0.81%的误差。Redis中的HLL是基于string结构实现的,单个HLL的内存。我们按月来统计用户签到信息,签到记录为1,未签到则记录为0。

2024-02-01 22:04:02 1066

原创 【Redis】实现缓存及相关问题

缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库。缓存击穿问题也叫热点Key问题:一个被高并发访问并且缓存重建业务较复杂的key突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。

2024-02-01 22:02:48 868

原创 【Redis】实现购物秒杀及分布式锁

分布式锁:满足分布式系统或集群模式下多进程可见并且互斥的锁。使用一个独立于JVM的锁监视器(分布式锁),让所有集群的JVM共享一个锁监视器,使得只有一个线程运行。Redisson是一个分布式操作 Redis 的 Java 客户端(分布式 Redis 数据网格),可以像在使用本地的集合一样操作 Redis。Redisson还提供了许多分布式服务,其中就包含了各种分布式锁的实现。Redisson 官网消息队列(Message Queue):存放消息的队列。

2024-01-31 13:03:31 932

JavaGUI期末作业-管家婆记账管理软件

JavaGUI期末作业-管家婆记账管理软件是一个基于Java图形用户界面(GUI)的记账管理软件。它提供了方便、直观的界面,帮助用户记录和管理个人或家庭的财务信息。该软件支持账目记录、分类统计、报表生成等功能,旨在帮助用户更好地管理和控制个人财务。 适用人群包括个人用户、家庭用户以及需要进行财务管理的小型组织。无论是个人理财、家庭预算规划还是小型组织的财务管理,该软件都能满足各种需求。 使用场景及目标包括但不限于: 1. 账目管理:用户可以记录各种收入和支出的账目,包括工资、房租、日常开销等,并进行分类和标记。 2. 统计分析:软件提供了分类统计功能,用户可以查看各类收入和支出的总额、占比等信息,帮助用户了解财务状况。 3. 报表生成:用户可以生成财务报表,如月度收支报表、年度预算报表等,以便更好地分析和规划财务。 该软件的目标是提供一个简单易用、功能完善的记账管理工具,帮助用户实现财务管理的自动化和便捷化。它具有用户友好的界面设计和操作流程,旨在提高用户的财务管理效率和准确性。

2023-09-30

C语言数据结构期末项目-学生管理系统

学生管理系统是一个基于C语言数据结构的期末项目,旨在帮助学生管理和组织学生信息。该系统可以记录学生的基本信息,如姓名、学号、年龄和成绩等,并提供相应的功能,如添加、删除、查询和修改学生信息。 学生管理系统适用于学习C语言数据结构的学生和对学生信息管理感兴趣的开发者。通过实现这个项目,学生可以加深对C语言数据结构的理解,并学习如何设计和实现一个简单的信息管理系统。 学生管理系统的使用场景包括但不限于: 1. 学生信息管理:学校、教育机构或班级可以使用该系统来管理学生的基本信息和成绩记录。 2. 学生项目作业:学生可以将学生管理系统作为一个实践项目,来应用所学的C语言数据结构知识,并完成期末作业。 3. 学习和练习:对于对数据结构和算法感兴趣的开发者,学生管理系统可以作为一个练习项目,帮助他们巩固和应用所学的知识。 学生管理系统的目标是提供一个简单而实用的学生信息管理工具,帮助用户轻松管理学生信息,实现基本的增删改查操作,并具备一定的数据结构设计和算法实现能力。

2023-09-30

DevCpp-C/C++语言编译开发工具

Dev-C++是一个集成开发环境(IDE),用于C和C++编程。它是一个免费开源的软件,提供了一套工具和功能,方便开发者编写、调试和编译C和C++程序。Dev-C++具有简单易用的界面和直观的功能,适合初学者和有经验的开发者使用。 Dev-C++适用于学生、教育机构、自学者和专业开发者等。无论是学习编程、进行算法实现还是开发小型项目,Dev-C++都可以满足各种需求。 Dev-C++的使用场景包括但不限于: 1. 学习编程:对于初学者而言,Dev-C++提供了一个友好的开发环境,帮助他们学习和理解C和C++编程的基础知识。 2. 算法实现:Dev-C++支持C和C++编程语言,适用于实现各种算法和数据结构,并进行调试和测试。 3. 小型项目开发:对于小型项目或原型开发,Dev-C++提供了一套完整的开发工具,包括代码编辑器、编译器和调试器等。 Dev-C++的目标是提供一个简单易用、功能完善的C和C++开发环境,帮助开发者提高编程效率和代码质量。它支持多个编译器,包括GNU GCC编译器和其他第三方编译器,以满足不同开发需求。

2023-09-30

空空如也

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

TA关注的人

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