自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (2)
  • 收藏
  • 关注

原创 Mysql的Redo log和Bin log

由操作系统(当然,MySQL也可以主动flush)将OS cache里的数据,最终fsync到磁盘上;

2023-05-15 21:19:44 465

原创 Mysql慢查询性能优化实战

MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行, 那当 offset 特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页 数进行 SQL 改写。在 MyISAM 引擎 中,每个表的总行数都会在内存和磁盘文件中进行保存,当执行 count(*) 语句的时候,会直接将内存中保存的数值返回,所以执行非常快。count(字段):只包含列名的列,统计表中出现该字段的次数,并且不统计字段为null的情况;

2023-05-15 21:17:06 191

原创 Linux操作系统总结

如果子进程退出,而父进程并没有调用 wait4(),那么子进程的进程描述符仍然保存在系统中,此时这个进程就是僵尸状态。而clone()则带有参数,clone()可以将父进程资源有选择地复制给子进程,而没有复制的数据结构则通过指针的复制让子进程共享,具体要复制哪些资源给子进程,由参数列表中的clone_flags来决定。0号进程是Linux启动的第一个进程,当系统中所有进程启动之后,0号进程退化为idle进程,当一个core上没有任务运行时就会调度运行idle进程,core进入低功耗模式。

2023-05-15 21:15:01 268

原创 华为笔试题Java总结

【代码】华为笔试题Java总结。

2023-05-15 21:06:41 173

原创 acwing-Java模板

单链表826. 单链表import java.util.Scanner;public class Main { static int N = 100010; static int[] e = new int[N]; static int[] ne = new int[N]; static int head = -1; static int idx = 0; public static void main(String[] args) {

2023-05-08 14:41:03 250 1

原创 TCP协议一文全解

TCP是位于传输层的,面向连接的、可靠的、基于字节流的传输层通信协议。

2023-05-08 14:29:00 263

原创 HTTP协议一文全解

http超文本传输协议,位于应用层的、无状态的网络协议。

2023-05-08 14:27:15 828

原创 Redis 持久化策略

AOF 重写是 AOF 持久化的一个机制,用来压缩 AOF 文件,通过 fork 一个子进程,重新写一个新的 AOF 文件,该次重写不是读取旧的 AOF 文件进行复制,而是读取内存中的Redis数据库,重写一份 AOF 文件,有点类似于 RDB 的快照方式。AOF的文件会越来越大,当AOF达到一定程度大小之后再通过AOF文件恢复数据是异常缓慢的,那么对于这种情况Redis在开启AOF持久化机制的时候会存在AOF文件的重写。AOF 日志文件即使过大的时候,出现后台重写操作,也不会影响客户端的读写。

2023-05-08 14:25:12 228

原创 Redis 的数据结构解析

使用对象的另一个好处是, 我们可以针对不同的使用场景, 为对象设置多种不同的数 据结构实现, 从而优化对象在不同场景下的使用效率。底层:用来做基数统计的算法,在输入元素的数量或体积非常大时,计算基数所需的空间总是固定的,并且是很小的(12k)。整数集合的底层实现为数组,这个数组以有序、不重复的方式保存集合元素,在有需要的时候,程序会根据新添加元素的类型,改变整个数组的类型。Set:无序集合(内部使用值为空的哈希表),它通过计算hash的方式来快速去重,它能以 O(1) 的复杂度快速查询数据。

2023-05-08 14:22:31 107

原创 设计模式-单例模式

但是,如果单例占用的内存比较大,或 单例只是在某个特定场景下才会用到,使用饿汉模式就不合适了,这时候就需要用到懒汉模式进行 延迟加载。如果线程 1 先执行了赋值,线程 2 执行到第一个 INSTANCE == null 时发现 INSTANCE 已经不为 null,此时就会返回一个未完全构造的对象(未初始化完毕的单例)。适用于:如果某个单例使用的次数少,并且创建单例消耗的资源较多,那么就需要实现单例的按需 创建,这个时候使用懒汉模式就是一个不错的选择。为何必须加 volatile:禁用指令重排。

2023-05-08 14:21:15 54

原创 秒杀项目实战总结

优惠券秒杀核心数据库表:优惠券voucher表:库存stock和开始时间和结束时间优惠券订单order表:主键id是自定义全局唯一ID,userID,goodID【秒杀表详情】秒杀用户表、商品信息表、秒杀商品表(记录该商品的秒杀始末时间,秒杀价和剩余量)、秒杀订单表(记录了秒杀用户名和秒杀的商品还有订单号)、订单详情表(通过秒杀订单号来查找对应的订单详情,里面记载更详实的业务信息)、【全局唯一ID实现】因为增加ID的安全性和单表数据量有限,所以mysql不使用自增ID,使用全局唯一ID。

2023-05-08 14:03:20 224

原创 Mysql语句执行流程

然后拿到记录,把 level 改为 5,然后调用引擎 API 接口,写入这一行数据,InnoDB 引擎把数据保存在内存中,同时记录 redo log,此时 redo log 进入 prepare 状态,然后告诉执行器,执行完成了,随时可以提交。分析器 —> 优化器 —> 权限校验 —> 执行器 —> 引擎 —> redo log(prepare) —> binlog —> redo log(commit)执行器会以行为粒度,调用存储引擎执行SQL,在没有索引的情况下,执行器会循环查询所有行。

2023-05-07 19:19:28 53

原创 Redis过期策略和内存淘汰策略

过期字典的键指向 Redis 数据库中的某个 key(键),过期字典的值是一个 long long 类型的整数,这个整数保存了 key 所指向的 数据库键的过期时间(毫秒精度的 UNIX 时间戳)。不会花费额外的CPU资源来检测Key是否过期,但如果存在较多未使用且过期的Key时,所占用的内存就不会得到释放。在设置 Key 的过期时间的同时,会创建一个定时器 timer,定时器在 Key 过期时间来临时,会立即执行对 Key 的删除操作。从库不会进行过期扫描,从库对过期的处理是被动的。

2023-05-07 19:18:25 46

原创 Bitmap实现签到功能

Bitmap 的底层数据结构用的是 String 类型的 SDS 数据结构来保存位数组,Redis 把每个字节数组的 8 个 bit 位利用起来,每个 bit 位 表示一个元素的二值状态(不是 0 就是 1)。同样的 UserID offset 都是一样的,当一个 userID 在 7 个 Bitmap 对应对应的 offset 位置的 bit = 1 就说明该用户 7 天连续打卡。在记录了一个亿的用户连续 7 天的打卡数据,如何统计出这连续 7 天连续打卡用户总数呢?常见场景:二值状态统计。

2023-05-07 19:16:35 664

原创 Redis实现分布式锁总结

分布式锁,顾名思义,就是分布式项目开发中用到的锁,可以用来控制分布式系统之间同步访问共享资 源。优点:Redis 锁实现简单,理解逻辑简单,性能好,可以支撑高并发的获取、释放锁操作。优点:zookeeper 天生设计定位就是分布式协调,强一致性,锁很健壮。如果获取不到锁,只需要添加一 个监听器就可以了,不用一直轮询,性能消耗较小。缺点:在高请求高并发下,系统疯狂的加锁释放锁,最后 zk 承受不住这么大的压力可能会存在宕机的风 险。

2023-05-07 19:13:56 198

原创 Redis与MySQL双写一致性

并发读写时会出现脏数据问题,ABBAA更新数据库为1B更新数据库为2B更新缓存为2A更新缓存为1。

2023-05-07 19:12:14 300

原创 Mysql锁机制总结

按锁的粒度可以分为。按锁的属性可以分为。

2023-05-07 19:10:06 45

原创 Mysql查询性能优化

MySQL 并不是跳过 offset 行,而是取 offset+N 行,然后返回放弃前 offset 行,返回 N 行, 那当 offset 特别大的时候,效率就非常的低下,要么控制返回的总页数,要么对超过特定阈值的页 数进行 SQL 改写。在 MyISAM 引擎 中,每个表的总行数都会在内存和磁盘文件中进行保存,当执行 count(*) 语句的时候,会直接将内存中保存的数值返回,所以执行非常快。count(字段):只包含列名的列,统计表中出现该字段的次数,并且不统计字段为null的情况;

2023-05-07 19:09:37 73

原创 Java String解析

JVM首先在字符串常量池中查找有没有"aaa"这个字符串对象,如果有,则不在池中再去创建"aaa"这个对象了,直接在堆中创建一个"aaa"字符串对象,然后将堆中的这个"aaa"对象的地址返回赋给引用str1,这样,str1就指向了堆中创建的这个"aaa"字符串对象;如果没有,则首先在字符串常量池池中创建一个"aaa"字符串对象,然后再在堆中创建一个"aaa"字符串对象,然后将堆中这个"aaa"字符串对象的地址返回赋给str1引用,这样,str1指向了堆中创建的这个"aaa"字符串对象。

2023-05-07 19:07:25 131

原创 操作系统IO原理和五种IO模式

原因:每连接每线程的模型,之所以使用多线程,主要原因在于socket.accept()、socket.read()、socket.write()三个主要函数都是同步阻塞的,当一个连接在处理I/O的时候,系统是阻塞的,如果是单线程的话必然就挂死在那里;select/poll 每次操作时都传入全量的文件描述符集合,而 epoll 因为在内核维护了红黑树,可以保存所有待检测的 socket ,所以只需要传入一个待检测的 socket,减少了内核和用户空间大量的数据拷贝和内存分配。

2023-05-07 19:06:04 659

原创 深度学习文本分类项目实战

数据来源于真实电网数据,最近在找实习,预计9月份更新。后续考虑更新深度学习心电分类算法的学习进展。

2022-07-24 23:18:37 569 1

原创 电动汽车负荷预测——蒙特卡洛法python实现过程

运用蒙特卡洛随机抽样,模拟一千台电动汽车的一天内的充电负荷。用到的数据来自于论文《Charging Load Forecasting of Electric Vehicle Based on Monte Carlo and Deep Learning》MonteCarlo电动汽车负荷预测基本思想:1.抽取随机变量:包括有日行驶里程s(满足对数正态分布),充电开始时间ts(满足正态分布)2.计算其余变量:初始soc:不理解论文中所描述,改成soc0 =(1-s/smax)充电时间tc:tc=((1

2021-11-17 10:04:03 5441 2

原创 基于 Matlab/simulink实现锂电池建模与仿真

运用simulink实现2RC模型的锂电池模型导师要求学习锂电池建模,接触一个星期,感概资料、视频不好找,还是看论文来得实在,找了几十篇论文,粗略了解等效模型原理,根据一篇硕士论文,完成模型搭建,论文为《基于二阶EKF的锂离子电池SOC估计的建模与仿真》作者西安科技大学赵佳美,希望大家能去读一读,从中大部分借鉴,也还改了两三处别扭的地方。总之先应付导师,后续如有必要继续学习。如有错误,恳请指出,轻喷。左边给出模拟电流signal builder通过模型几个模块,计算出最终电压。Uocv开路电压减去,

2021-08-03 21:22:02 23823 38

原创 CMD打开后一闪而过,如何解决?

CMD打开后一闪而过,如何解决?打开注册表,Ctrl+F搜索autorun,将里面的值删掉即可。

2021-08-03 20:33:40 1757

电动汽车负荷预测蒙特卡洛python实现

有问题私信,具体细节见文章,电动汽车负荷预测蒙特卡洛python实现,

2021-11-17

基于 Matlab/simulink实现锂电池建模与仿真—2RC模型

论文《基于二阶EKF的锂离子电池SOC估计的建模与仿真》电池部分模拟

2021-10-14

空空如也

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

TA关注的人

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