- 博客(23)
- 问答 (1)
- 收藏
- 关注
原创 go-文件缓存与锁
但出现一个问题:文件更新后,该变量的值依然是文件更新之前的内容,需要重新运行go包,而cookie随时可能失效而去更新,频繁重启这显然不现实。频繁读取文件,性能不佳,故在go包中创建了一个map全局变量存储文件内容,只有键不存在时才去读取文件。若不一致,则加写锁,再次检查修改时间,防止获取到写锁之前,文件已经修改。每次读取加读锁,并检查实际文件的修改时间,若与map中的值一致,则直接返回map中文件内容。依旧采用map存储文件内容,但map的值为:1、文件的内容,2、文件的修改时间。
2025-03-10 17:15:03
275
原创 nginx-访问异常
有A、B两台服务器,使用相同的主域名,SSL证书相同,子域名不同。当访问B时,获取到的A的内容。虽然解决,但还是没有完全搞清楚为什么会访问到A。了解的小伙伴请赐教。(其他小伙伴可以查看一下DNS解析是否正常,我这边没有办法查看)
2024-11-26 16:44:21
355
原创 Gorm--Scan
在 Gorm 中,Scan 是一个用于将查询结果映射到自定义结构体或变量的函数。与 Find 或 First 不同,Scan 允许你将查询结果存储到与数据库模型不完全匹配的结构体中。下划线与驼峰命名法的转换:Gorm 会尝试将查询结果中的下划线格式(如 max_age)与结构体的驼峰命名格式(如 MaxAge)进行对应。这种转换是自动完成的。即使查询结果的字段名是 max_age,它仍然会匹配到结构体中的 MaxAge 字段。问题:查询结果返回的字段是max_age,为什么能匹配到结构体的MaxAge?
2024-09-02 16:55:03
508
原创 PHP面试题(二)
/ 此处使用的是 static::,表示调用该方法的实际类// 调用 ChildClass 的 test 方法// 返回 ChildClass静态延迟绑定,即在类内部用来代表类本身的关键字部分不是在类编译时固定好,而是当方法被访问时动态的选择来访者所属的类。可以理解为,定义父类时,提前设置子类访问该静态方法。可以使用cURL库,并设置Range头部。));
2024-06-18 16:38:34
706
原创 面向对象(OOP)
抽象类是不能被实例化的类,它包含一个或多个抽象方法。这些方法在抽象类中没有具体实现,需要在其子类中实现。抽象类的主要目的是为子类提供一个通用的接口。定义抽象类时,需要注意以下几个方面:(1). 明确抽象类的目的通用模板:抽象类应该作为一组相关类的通用模板,定义它们的共同行为和特征。不能实例化:抽象类是不能被实例化的,只能被继承。(2). 抽象方法与具体方法抽象方法:必须至少包含一个抽象方法(没有方法体的声明),子类必须实现这些抽象方法。
2024-06-06 18:30:13
1239
原创 MySQL InnoDB存储引擎-逻辑存储结构与架构
Buffer Pool:缓冲池是主内存中的一个区域,里面可以缓存磁盘上经常操作的真实数据,在执行增删改查操作时,不会直接操作磁盘写入,而是先操作缓冲池中的数据(若缓冲池没有数据,则从磁盘加载并缓存),然后再以一定频率刷新到磁盘,从而减少磁盘IO,加快处理速度。General Tablespaces:通用表空间,需要通过 CREATE TABLESPACE 语法创建通用表空间,在创建表时,可以指定该表空间。log),默认大小为16MB,日志缓冲区的日志会定期刷新到磁盘中。存储用户创建的临时表等数据。
2024-06-05 12:00:04
663
原创 MySQL触发器
触发器是与表有关的数据库对象,指在insert/update/delete之前或之后,执行触发器中定义的SQL语句集合。使用别名OLD和NEW来引用触发器中发生变化的记录内容。现在触发器还只支持行级触发,不吃吃语句级出发。
2024-06-05 10:37:19
231
原创 MySQL存储过程
存储过程是事先经过编译并存储在数据库中的一段SQL语句的集合,调用存储过程可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程思想,就是对数据库SQL语言层面的代码进行封装与重用。
2024-06-04 11:33:32
162
原创 MySQL存储引擎
InnoDB是兼顾高可靠性和高性能的通用存储引擎特点:1.支持事务,DML操作遵循ACID模型2.支持行级锁,提高并发访问性能3.支持外键约束,保证数据的完整性和正确性文件xxx.ibd:xxx代表的是表名,InnoDB引擎瞎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引要查看文件,可在操作系统命令行输入: ibd2sdi xxx.ibd。
2024-06-04 11:03:14
332
原创 MySQL事务并发问题及隔离级别
脏读:一个事务读到另外一个事务还没有提交的数据不可重复读:一个事务先后读取同一条记录,但两次读取的数据不同,称之为不可重复读幻读:一个事务按照条件查询数据时,没有对应的数据行,但是在插入数据时,又发现这行数据已经存在,好像出现了“幻影”
2024-06-04 10:18:05
195
原创 hyperf学习笔记
全称input/output操作,即输入与输出操作,指的是计算机与外部设备之间进行的数据交换过程。这些操作可以是硬件层面的,如硬盘读写、网络通信;软件层面的,如文件读写、数据库操作。因此,相对于Cpu的计算操作要慢得多,往往是性能瓶颈之一。
2024-05-20 15:57:32
308
1
原创 MySQL 锁
在做全库备份时,为了保证数据一致性,会给数据库加上全局锁在InnoDB引擎中,可以在备份时加上参数 --single-transaction, 参数来完成不加锁的一致性数据备份(底层是快照读的方式实现的)。
2024-05-13 20:19:14
793
原创 Sql优化
因为,当在进行分页查询时,如果执行 limit 2000000,10 ,此时需要排序前 2000010 记录,仅仅返回 2000000 - 2000010 的记录,其他记录丢弃,查询排序的代价非常大。优化思路:自己计数(可以借助于redis,但如果是带条件的count又比较麻烦了,新增数据时count值加1,删除数据时count加1)。在执行update的sql语句时,需注意使用的where条件,对其建立相应的索引,此时只会对当前行进行锁定。根据排序字段建立合适的索引,多字段排序时,也遵循最左前缀法则。
2024-05-10 10:02:34
792
1
原创 索引使用规则
MySQL将根据数据分布情况,评估使用索引相比全表扫描的速度,如何更慢,则不使用索引。当字段类型为字符串(varchar,text,longtext等)时,可以只将字符串的一部分前缀,建立索引,这样可以大大节约索引空间,从而提高索引效率。如果索引了多列(联合索引),查询的条件要从最左列开始,并且不跳过中间的列,如果跳过,索引将部分失效。在业务场景中,如果存在多个查询条件,考虑针对于查询字段建立索引时,建议建立联合索引,而非单列索引。联合索引中,出现范围查询(>,
2024-05-09 11:26:20
422
1
原创 索引数据结构
红黑树(Red-Black Tree)是一种自平衡的二叉树,它在每个节点上增加了一个颜色的属性,可以是红色或黑色,通过颜色和一些调整规则来确保树的平衡性,从而在动态插入和删除操作中保持相对平衡的状态。B树(B-tree)是一种自平衡的树,相比于二叉树可以拥有更多的子节点。二叉树(Binary Tree)是每个节点最多有两个子节点的树结构,通常子节点被称为“左子节点”和“右子节点”。哈希索引就是采用一定的hash算法,将键值换算成新的hash值,映射到对应的槽位上,然后存储到hash表中。
2024-05-07 10:00:38
625
原创 Linux命令
ls -l可查看文件权限,示例1.txt文件权限为:-rwxr-x---。从左往右分三段解读:1,rwx,该权限表示nathan用户可读可写可执行此文件;2,r-x,表示nathan用户组可读可执行此文件;3、---表示其他人不可读写执行此文件。不仅可以复制文件,还可以保持文件的权限、时间戳等属性,并且只复制文件之间的差异部分,提高传输效率。此时经可以在不输入密码的情况下登录到你的服务器了,若依然要求输入密码,请检查ssh配置文件。一周中的星期几(0 - 7,其中 0 和 7 都代表星期天)
2024-04-16 15:54:39
391
1
空空如也
Postgresql中numeric(m,n)和numeric占用空间相同吗
2021-11-09
TA创建的收藏夹 TA关注的收藏夹
TA关注的人