首页
Python
Java
前端
数据库
Linux
Chatgpt专题
开发者工具箱
重学专题
【重学MySQL】四、关系型数据库设计规则
【重学MySQL】四、关系型数据库设计规则 表、记录、字段设计规则表设计规则记录设计规则字段设计规则 表的关联关系一对一关系(One-to-One Relationship)一对多关系(One-to-Many Relationship)多对多关系(Many-to-Many Relationship)自我引用(Self-Referencing)实现关联关系的要点 表、记录、
阅读更多...
重学SQL 基础
SQL 基础 SQL 执行流程: sql语句->缓存查询(有)->输出结果 sql语句->缓存查询(无)->解释器->优化器->执行器->加入缓存查询中->输出结果 mysql8之后取消了缓存 SQL 查看执行时间: -- 查看profiling是否打开,0是没打开,1是打开SELECT @@profiling;-- 设置profiling打开SET profiling=1;-- 查看
阅读更多...
重学Android之Framework层应用程序进程创建流程
Android系统启动完成后,会启动第一Android应用Launcher。之后在用户操作下启动其他的应用程序。这两个流程大体一致,本文主要分析启动Launcher的启动流程。 Android系统源码版本:9.0.0_r3 整体流程图如下: Zygote启动流程 Android Kernel启动后启动第一个进程init,init将解析init.*.rc文件启动进程zygote。 /s
阅读更多...
实况:老菜鸟自力更生从零开始重学spring目标是画出一张唬人大图(二、源码下载编译)
前情提要:调试前的基础知识梳理 速览 “Spring”包含哪些东西源码下载源码编译1、编译工具选择:gradle2、使用gradle编译spring并导入idea预编译spring-oxm导入IDEA确认合适的jdk版本排除spring-aspects模块 开始调试 “Spring”包含哪些东西 可以明确的是,“spring”不是一个东西,而是一系列东西。最原始的“sp
阅读更多...
2024050802-重学 Java 设计模式《实战模板模式》
重学 Java 设计模式:实战模版模式「模拟爬虫各类电商商品,生成营销推广海报场景」 一、前言 黎明前的坚守,的住吗? 有人举过这样一个例子,先给你张北大的录取通知书,但要求你每天5点起床,12点睡觉😪,刻苦学习,勤奋上进。只要你坚持三年,这张通知书就有效。如果是你,你能坚持吗?其实对于这个例子很难在我们的人生中出现,因为它目标明确,有准确的行军路线。就像你是土豪家庭,家里给你安排的明明白
阅读更多...
重学Spring总结
1、Spring框架的诞生 文章目录 1、Spring框架的诞生1、BeanFactory 快速入门1.1、BeanFactory完成了loC思想的实现:1)导入Spring相关的依赖:2)定义Uservice接口及其UserviceImpl实现类;3)创建Bean的配置资源文件,文件名最好为:applicationContext.xml(规范),将UserServicelmpl的信息
阅读更多...
2024050702-重学 Java 设计模式《实战状态模式》
重学 Java 设计模式:实战状态模式「模拟系统营销活动,状态流程审核发布上线场景」 一、前言 写好代码三个关键点 如果把写代码想象成家里的软装,你肯定会想到家里需要有一个非常不错格局最好是南北通透的,买回来的家具最好是品牌保证质量的,之后呢是大小合适,不能摆放完了看着别扭。那么把这一过程抽象成写代码就是需要三个核心的关键点;架构(房间的格局)、命名(品牌和质量)、注释(尺寸大小说明书),只
阅读更多...
【重学C语言】十九、SDL2 图形化编程的使用
【重学C语言】十九、SDL2 图形化编程的使用 SDL2 的第一个程序渲染器纹理渲染1. 纹理的概念2. 加载纹理3. 渲染纹理4. 纹理设置和查询5. 纹理渲染流程6. 注意事项 SDL2_image SDL2 的第一个程序 #define SDL_MAIN_HANDLED#include <SDL.h>int main(int argc, char* argv[]) {
阅读更多...
【重学C语言】十八、SDL2 图形编程介绍和环境配置
【重学C语言】十八、SDL2 图形编程介绍和环境配置 **SDL2介绍**SDL 2用途SDL 在哪些平台上运行?下载和安装 SDL2安装 SDL2 clion 配置 SDL2 SDL2介绍 SDL2(Simple DirectMedia Layer 2)是一个开源的跨平台多媒体开发库,主要用于游戏开发中的多媒体处理,如视频渲染、音频播放、鼠标/键盘控制等。它用C语言编写,支
阅读更多...
【退役之重学 SQL】什么是笛卡尔积
一、初识笛卡尔积 概念: 笛卡尔积是指在关系型数据库中,两个表进行 join 操作时,没有指定任何条件,导致生成的结果集,是两个表中所有行的组合。 简单来说: 笛卡尔积是两个表的乘积,结果集中的每一行都是第一个表的每一行与第二个表的每一行的组合。 注意事项: 在实际数据库的查询中,应尽量避免笛卡尔积的产生,因为它会导致结果集过大、性能下降,而且通常不是我们所期望的查询结果。因此在进行 join
阅读更多...
【重学C语言】十七、预处理指令
【重学C语言】十七、预处理指令 预处理指令预定义宏`#define` 宏定义示例注意事项特殊符号 条件编译头文件包含`#pragma` 预处理指令 C语言中的预处理指令(Preprocessor Directives)是一种特殊的指令,它们在编译过程的早期阶段(即实际编译之前)被预处理器(Preprocessor)处理。预处理指令以#字符开头,并后面跟着特定的指令和可能的参
阅读更多...
【退役之重学】为什么要加入多级缓存
一、为什么 加入多级缓存是为了提高数据访问的效率和性能 二、怎么做 在多级访问系统中,数据首先会被存储在速度最快的 L1 缓存中,如果数据在 L1 缓存中未命中,则会继续在 L2 缓存 和 L3 缓存中查找,如果在所有缓存中都未命中,则需要从主存中加载数据。通过多级缓存系统,可以利用局部性原理,提高数据的命中率,减少对主存的访问,从而提高系统整体性能。
阅读更多...
【退役之重学Java】总结
带着一把伤心的吉他,我背井离乡 你居然想要成为别人的老婆 只有代码 不伤人心 一、深入理解 JVM 底层原理 运行时数据区域 JVM 运行时数据区域,分为栈区、堆区、方法区、程序计数器、本地方法栈 栈区存放的是变量的最浅层的值,如果是基本数据类型,存放的就是变量值,如果是引用数据类型,存放的就是其引用 堆区存放的是对象,如果对象有嵌套,那么采用链式存储 方法区里存放的是静态变量,方法
阅读更多...
【重学C语言】十五、文件操作
【重学C语言】十五、文件操作 文件的概念什么是流文件类型文本文件和二进制文件的区别 文件指针文件指针常量预定义的文件指针stdin (标准输入)stdout (标准输出)stderr (标准错误输出)示例 文件指针的声明使用文件指针悬挂指针示例 文件缓冲区为什么需要缓冲区?缓冲区的类型缓冲区的管理示例:使用`setvbuf()`设置缓冲区 文件的位置指针访问和修改文件位置指针示例 文件
阅读更多...
【退役之重学Java】关于B+树索引
一、为什么使用索引 一条数据可能有很多字段,数据量比较大,挨个查询效率极差故使用索引,提高查询性能和加快数据检索速度。同时还可以帮助优化排序、分组和连接操作,提高数据库系统的整体性能和响应速度。 二、为什么要用 B+ 树 B+树在处理大量数据和范围查询时具有优势 三、B+ 树有什么优点 在B+树中,所有数据都存储在叶子节点上,而非叶子节点仅用于索引目的。B+树的叶子节点形成
阅读更多...
【重学C语言】十四、结构体
【重学C语言】十四、结构体 结构体初始化和使用声明注意点结构体嵌套结构体数组字节对齐对齐数(Alignment)对齐要求对齐规则结构体成员的对齐示例编译器指令和属性为什么要对齐跨平台兼容性 位段(位域) 结构体 在C语言中,结构体(struct&#x
阅读更多...
【退役之重学Java】ThreadLocal
一、ThreadLocal 与 Synchronized 区别 ThreadLocal: 采用“以空间换时间”的方式,为每一个线程都提供了一份变量的副本,从而实现同时访问而互不干扰多线程中让每个线程之间的数据相互隔离 Synchronized 同步机制采用“以时间换空间”的方式,值提供一份变量,荣不同的线程排队访问对个线程之间访问资源的同步 二、ThreadLocal 方案的好处 传递
阅读更多...
【退役之重学Java】Redis 高并发与高可用
Redis 单机承载的并发量,一般来说不超过10 万 一、Redis 如何支撑超过 10万的并发 读写分离,主从复制,分布式 Redis master 负责写操作,并同步数据到其他 Redis Redis slave 负责读操作,增加 Redis slaver 的数量,就可以增加读的并发承受能力 二、Redis replication 核心机制 Redis 采用异步方式复制数据到 s
阅读更多...
【退役之重学Java】Redis 持久化机制及其选择
一、RDB RDB 持久化机制,对 Redis 中的数据执行周期性的持久化 二、AOF AOF 机制对每条写入命令最为日志,以 append-only 的模式写入一个日志文件中,在 Redis 重启的时候,可以通过回放 AOF 日志中的写入指令,来重新构建整个数据集 分析 如果我们想要 Redis 仅仅作为纯内存的缓存使用,那么可以禁止 RDB 和 AOF 所有的持久化机制通过 RDB
阅读更多...
【退役之重学Java】Redis 的过期策略
Redis 的过期策略 一、假设设置一个key 只能存活1h,那么1h之后,Redis 是怎么对这批 key 进行删除的? 回答: 定期删除 + 惰性删除 所谓定期删除,指的是 Redis 默认每隔100ms 就随机抽取一些设置了过期时间的 key,检查其是否过期,如果过期就删除。注意,这里可不是每隔 100ms 就遍历所有设置过期时间的key ,那样就是已超过性能的灾难。实际上,Redis
阅读更多...
【退役之重学Java】如何保证消息的幂等性
除了要保证高可用之外,从消息队列里消费到重复的消息该怎么办?即如何保证消息的幂等性 一、场景 消费者刚消费完,还没有提交,突然重启,导致重启后又收到了相同的消息,这就是重复消费 二、保证幂等性是什么意思 在消息队列中保证幂等性意味着无论消息被消费者处理多少次,最终的结果都是一致的,不会因为重复消费消息而导致数据的错误变化或产生副作用。 三、保证幂等性要怎么做 为了保证在消息队列中
阅读更多...
【退役之重学Java】如何保证从消息队列里拿到的消息顺序执行
一、场景 MySQL binlog 同步数据,比如大数据team。在MySQL中进行增删改查,将其 binlog 发送到 MQ 里面,到消费出来执行,这里就必须要保证其顺序执行,不然数据库就会错乱。 二、如何保证消息的顺序性呢? RabbitMQ 拆分多个 queue,每个queue 分配一个 consumer,就是多一些 queue 而已,确实是麻烦点;或者就一个 queue 对应一个co
阅读更多...
【退役之重学Java】如何解决消息持续积压等问题
一、将读写数据库等耗时的操作,从消费者逻辑中抽取出来,专门部署机器去完成这部分操作。
阅读更多...
【退役之重学Java】如何处理消息丢失问题
即如何保证消息的可靠性传输 一、场景 网络丢包,导致丢失消息RabbitMQ 没来得及保存消息,就挂掉了消费者接受到消息,但没处理完,消费者挂掉了 二、怎么办 生产者 将 channel 设置为 confirm 模式,是异步模式,不会阻塞RabbitMQ queue 设置为持久化的(保证 RabbitMQ 持久化 queue 的元数据);发送消息的时候将消息的 deliveryMod
阅读更多...
【重学C语言】十、指针入门
【重学C语言】十、指针入门 地址和存储单元内存四区地址存储单元存储区首地址地址和存储单元的关系怎么获得地址 指针定义指针初始化指针使用指针修改指针指向的值`类型 *` 的含义取地址符和解引用符取地址符(&)解引用符(*)
阅读更多...
【重学C语言】八、二维数组
【重学C语言】八、二维数组 声明二维数组内存长相初始化二维数组1. 在声明时完全初始化2. 在声明时部分初始化(剩余部分自动设置为0)3. 逐个元素初始化4. 使用循环初始化5. 初始化特定元素注意事项 访问二维数组的元素遍历二维数组计算二维数组的大小数组下标转换为序号字符型二维数组保存多个字符串应用场景高维数组 二
阅读更多...