自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 rust-anlyzer支持对feature模块代码提示

rust-analyzer 是目前rust语言广泛在用的Language Server Protocol, 通过后台进程与VSCode等进行通信,实现代码补全和跳转等功能。

2023-01-08 01:03:28 572

原创 rust-analyzer 识别feature模块

为了让这些模块也能够使用rust-analyzer代码提示功能,则可以在Vscode的setting.json配置文件中将`rust-analyzer.cargo.features` 配置为。rust-analyzer.cargo.features 这个配置项默认为空,rust-analyzer默认不识别Cargo.toml设置为features模块。这样子所有的feature模块就能使用代码补全了。这时候Vscode这些代码是灰色的,并且提示。这个文件中通过宏有条件的导入。

2023-01-08 01:02:51 711

原创 rust-analyzer VScode配置

rust-analyzer 是目前rust语言广泛在用的Language Server Protocol, 通过后台进程与VSCode等进行通信,实现代码补全和跳转等功能。下面介绍其在VsCode setting.json中的配置项:rust-analyzer.cargo.featuresrust-analyzer.cargo.features 这个配置项默认为空,rust-analyze...

2023-01-08 00:59:00 411

原创 rust struct 初始化的语法糖 - struct update syntax

rust 语法糖 struct update syntax

2022-11-20 23:16:38 670

原创 grant之后要跟着flush privileges吗?

grant之后要跟着flush privileges吗?grant 语句会同时修改数据表和内存,判断权限使用的是内存数据。规范地使用grant和revoke语句,不需要随后加上flush privileges语句的。flush privileges 其实就是清空了内存中的权限,然后重新从权限表加载数据。因此如果用DML语句改了系统权限表,就需要用flush privileges重建内存的权限...

2022-11-13 00:28:00 23

原创 怎么最快地复制一张表?

怎么最快地复制一张表?mysqldumpmysqldump -h$host -P$port -u$user --add-locks=0 --no-create-info --single-transaction --set-gtid-purged=OFF db1 t --where="a>900" --result-file=/client_tmp/t.sql--single-t...

2022-11-12 23:38:00 21

原创 自增主键为什么不是连续的?

39 | 自增主键为什么不是连续的?自增主键保存在哪里?自增主键并不保存在表结构定义的frm文件中。MyISAM 引擎自增值保存在数据文件中MySQL 8.0之前,自增值保存在内存中,重启后设置为max(id) + 1; MySQL 8.0之后,自增长值保存在了redo log中,重启的时候依靠redo log 恢复重启之前的值。哪些情况会造成自增主键不连续事务回滚插入语句执...

2022-11-12 22:56:00 18

原创 rust 工具链备忘录

国内访问crate.io镜像满解决办法?参考:https://rsproxy.cn

2022-09-22 00:04:00 17

原创 MySQL 表连接 算法优化 MRR BKA

35 | join语句怎么优化?MRRMulti-Range Read 优化,指的是尽量使用顺序读盘。因为大多数的数据都是按照主键递增顺序插入得到的,所以我们可以认为,如果按照主键的递增顺序查询的话,对磁盘的读比较接近顺序读,能够提升读性能。怎么是顺序读根据索引将数据放入read_rnd_bufer;将read_rnd_buffer中的id进行递增排序将排序后的id数组,依次到主...

2022-07-29 00:58:00 24

原创 MySQL 表连接策略 NLJ vs BNL

select * from t1 join t2 on t1.c = t1.c 这样的语句,mysql优化器会选择t_a或t_b作为驱动表, 使用straight_join来指定 左边的表为驱动表。如果字段c上有建立索引,MySQL会使用 Index Nested-Loop Join 策略处理join,否则会使用Block Nested-Loop Join 来处理。什么是Index Neste...

2022-07-29 00:21:00 29

原创 MySQL是怎么发数据给客户端的以及MySQL的缓存策略改进

我查这么多数据,会不会把数据库内存打爆?肯定的说,不会。因为MySQL是边读边发的。InnoDB 的数据是保存在主键索引上的,所以全表扫描实际上是直接扫描表 t 的主键索引。这条查询语句由于没有其他的判断条件,所以查到的每一行都可以直接放到结果集里面,然后返回给客户端。那么,这个“结果集”存在哪里呢?实际上,服务端并不需要保存一个完整的结果集。取数据和发数据的流程是这样的:获取一行,写到...

2022-07-28 23:33:00 30

原创 记一次SparkUI的使用记录

内存不足问题spark 默认分配的内存是4G,通过这个命令分配更大的内存空间给我们的任务spark-shell --driver-memory 12gimport org.apache.spark.sql.DataFrameval hdfs_path_apply: String = s"/mnt/g/BaiduNetdiskDownload/2011-2019小汽车摇号数据/apply"...

2022-05-22 22:13:00 16

原创 你的第一个大数据 helloword

环境准备目标环境是ubuntu 20,其实是windows下的子系统wsl里安装的。需要安装pyspark 3.2.1openjdk 15注意pyspark 3.2.1 对应的最高版本jdk为openjdk15。安装也比较简单。pyspark通过pip安装 pip3 install pysparkopenjdk:sudo add-apt-repository ppa:openj...

2022-05-20 20:44:00 100

原创 js 判断上传文件是否为utf8编码格式

首先利用fileReader.readAsText(filePart) 默认通过utf8格式读取文件,如果文件中有非utf8字符会替换成�, 如果有�说明有非utf8字符。windows下还有utf8 BOM格式的编码,这里通过判断文件头几个字符来判断文件是否是utf8 BOM编码。最后如果文件太大,达到GB级别,如果一次性加载如内存中,可能直接让浏览器卡死,下面的代码通过分成1kb读取来逐...

2022-05-06 22:55:00 175

原创 原始人手动分配 redis slot

因为开发需要,在本地虚拟机搭建了9个节点的redis集群,使用的版本是redis 3.2。最近由于几次强制关闭虚拟机,导致虚拟机里的redis 集群出现问题,查看节点日志,提示Unrecoverable error: corrupted cluster config file., 搜索网上资料,原来是强制关机把redis 集群节点的配置文件给搞坏了。下面尝试了两个方法:方法1是通过ps命令查...

2022-04-29 17:40:00 40

原创 MySQL 执行Kill命令后,执行命令为啥没马上停止?

这些“kill 不掉”的情况,其实是因为发送 kill 命令的客户端,并没有强行停止目标线程的执行,而只是设置了个状态,并唤醒对应的线程。而被 kill 的线程,需要执行到判断状态的“埋点”,才会开始进入终止逻辑阶段。并且,终止逻辑本身也是需要耗费时间的。kill 命令MySQL 提供了 kill query + 线程 id 和 kill [connection] + 线程id 两种停止执行...

2022-04-17 16:57:00 96

原创 MySQL 误删数据应该怎么处理?

如此处理各种情况下的误删数据delete 语句删除用 delete 语句误删了数据行,可以用 Flashback 工具通过闪回把数据恢复回来。Flashback 恢复数据的原理,是修改 binlog 的内容,拿回原库重放。而能够使用这个方案的前提是,需要确保binlog_format=row 和 binlog_row_image=FULL。具体恢复数据时,对单个事务做如下处理:对于 i...

2022-04-17 14:48:00 38

原创 MySQL 如何解决主从分离带来的过期读问题

读写分离有哪些坑?读写分离存在的问题,主要是从库不可避免存在同步延迟,导致客户端在从库读取到旧数据。读写分离架构读写分离主要目的时分摊主库的压力。上面的结构是client主动选择后端数据库。还有一种结构是带Proxy的读写分离架构客户端直连和带proxy读写分离架构的优缺点客户端直连结构简单,相比proxy少了一层转发,性能好一点。缺点是clent和后端架构耦合严重,比如主...

2022-04-08 23:06:00 30

原创 MySQL 主备同步技术演化

主库出问题了,从库怎么办?备库:同步主库的binlog,当主库出问题时,备库切换为主库。一般不提供读服务。从库:同步主库的binlog,只对外提供读服务。一主多从主备切换 方法基于位点的主备切换首先我们知道,设置从库时的命令CHANGE MASTER TO MASTER_HOST=$host_name MASTER_PORT=$port MASTER_USER=$user_n...

2022-04-08 00:49:00 19

原创 MySQL怎么实现主备一致

主备切换主备流程图主库的后台线程通过长连接将binlog日志同步到从库,从库的io_thread接受binlog写入从库的redo log ,从库的sql_thread线程重放redo log 到数据库。在备库 B 上通过 change master 命令,设置主库 A 的 IP、端口、用户名、密码,以及要从哪个位置开始请求 binlog,这个位置包含文件名和日志偏移量。在备库 B 上...

2022-04-06 19:46:00 15

原创 慢SQL治理最佳实践

慢SQL治理主要从三个方面进行优化从数据表的定义开始优化从索引设计开始优化从查询开始优化优化表设计表字段长度尽量紧凑,字段尽量不冗余字段类型尽量考虑用简单的类型字段尽量有默认值,且默认值尽量不要用null优化索引设计索引的时候,尽量让查询用到索引,并且减少回表次数。业务查询频率高的字段尽量设计成覆盖索引,比如select age, name from user wh...

2022-03-31 23:37:00 18

原创 MySQL binlog和redolog的写入机制

binlog的写入机制每个线程都会先将日志写入到binglog cache, 事务提交的时候,再把binlog cache写到binlog文件中。所有线程都写一个binlog日志。binlog_cache_size 用于控制单个线程内binlog cache 所占内存的大小,如果超过了这个参数规定的大小,就要暂存到磁盘。write 和 fsync 的时机,是由参数 sync_binlog ...

2022-03-16 23:24:00 18

原创 MySQL有哪些“饮鸩止渴”提高性能的方法?

短连接风暴正常的短连接模式就是连接到数据库后,执行很少的 SQL 语句就断开,下次需要的时候再重连。怎么解决短连接引起数据库连接数暴涨的问题?先处理掉那些占着连接但是不工作的线程。怎么做呢?show processlist, 踢掉显示为sleep的线程,但是这样也会误杀执行事务的线程,使用命令select * from information_schema.innodb_trx; 进...

2022-03-12 22:39:00 13

原创 什么是幻读,怎么解决幻读

幻读指的是事务中读取到的记录数量不一致,只有RR可重复读事务隔离级别才存在幻读。 并且幻读需要当前读才会出现。幻读有什么问题?造成数据不一致的问题。尤其时binlog 格式为statement。先开始但后提交的事务会将数据覆盖更新了如何解决幻读?MVCC版本控制 + 间隙锁。间隙锁和间隙锁不冲突,只和插入间隙记录这一动作相冲突。间隙锁和行锁合称 next-key lock, 每...

2022-03-10 23:20:00 11

原创 MySQL 哪些情况下索引会失效

众所周知,MySQL索引是以B+树存储的,而且是否使用索引是由引擎决定的,当MySQL觉得走索引花费开销大时,反而会放弃走索引。总结一下,哪些情况下会使索引失效:对where条件中的字段进行了函数操作,比如month(t_modified)=7;隐式类型转换,比如where id_card=111, id_card是varchar, 而输入是111,需要做类型转换。MySQL默认将字符串...

2022-03-09 22:40:00 13

原创 rust 如何用单调时钟获取更精确的时间间隔

Wall Clock vs Monotonic Clock (墙上时钟 vs 单调时钟)墙上时钟指的是我们日常意义上的时间,正如墙上的时钟代表的时间一样。单调时钟指的是某个时间点后开始计算的时间,单纯意义上的代表的时间是没有意义的。操作系统上相对应的提供了两套时间,分别对应墙上时钟和单调时钟,操作系统用UTC来代表墙上时钟,UTC不支持闰秒, 并且可以认为更改,而且操作系统的时间是通过石英钟等来实现的,会由于温度等不可控因素导致时间发生偏移,往往会通过网络时间协议NTP来进行同步,因此UTC天然存在着

2022-02-20 20:52:34 942

原创 rust Cell 与 RefCell的区别

Cell与RefCell 的相同点:绕开所有权的限制,实现内部可变性性rust 的所有权规则:只能由一个可变引用允许存在多个不可变引用fn modify(a: &mut i32) { *x = *x + 1;}fn main() { let a = 111; modify(&mut a); }变量a定义成一个不可变的变量,不...

2022-02-20 00:43:00 59

原创 rust 实战 - 实现一个线程工作池 ThreadPool

如何实现一个线程池线程池:一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。可用线程数量应该取决于可用的并发处理器、处理器内核、内存、网络sockets等的数量。 例如,对于计算密集型任务,线程数一般取cpu数量+2比较合适,线程数过多会导致额外的线程切换开销。如何定义线程池Pool呢,首先最大线程数量肯定要作为线程池的一

2022-02-12 11:01:20 1221

原创 rust实战 - newtype模式

什么是newtype简单的说,就是用元组结构体将已有类型包裹起来:struct Meters(u32)newtype的优点:自定义类型可以让我们给出更有意义和可读性的类型名,比如struct Year(u32)某些场景,只有newtype可以很好的解决隐藏内部类型的细节自定义类型给出更有意义的命名struct Years(i64);struct Days(i64);impl Years { pub fn to_days(&self) -> Days {

2022-02-10 00:14:42 914

原创 使用pre标签显示原始文本并自动换行

最近的一个问题最近做的后台系统有反馈说标题中间的多个空格变成了一个,导致复制标题去搜索文本搜不到。比如无糖 依然透心凉 中间有两个空格,显示在网页上变成了无糖 依然透心凉。发现是受css属性white-space影响:normal: 默认属性。将连续的多个空格合并pre:保留原始文本的空格和换行符,效果同pre标签nowrap:强制在同一行显示所有内容解决只需要增加一个这样...

2022-02-09 11:02:00 47

原创 Rust Trait熟识:一日一trait之Seek trait

Seek 顾名思义就是用来方便查找的trait,其内部提供了一个在字节流(stream of bytes)移动的游标(cursor),移动游标可以改变操作字节流的位置。Seek trait 定义pub trait Seek {    fn seek(&mut self, pos: SeekFrom) -> Result<u64>;    fn rewind(&mut self) -> Result<()&gt.

2022-02-07 16:15:25 214

原创 rust match 模式匹配摘录

Rust中的模式匹配模式匹配大概有以下几种:let语句if let语句match表达式函数签名for循环while let语句 // 1 let语句 let x = 1; let option_x = Some(x); // 2 if let if let Some(num) = option_x { println!("num is : {}", num) } // 3 match表达式 match x

2022-02-07 16:11:19 835

原创 rust实战系列 - 使用Iterator 迭代器实现斐波那契数列(Fibonacci )

为什么是斐波那契数列斐波那契数列十分适合用来实战rust的迭代器,算法也很简单,一目了然。这个例子可以用来学习Iterator的使用,十分适合刚学习了rust的迭代器章节后用来练练手。代码实战don’t bb, show me the codestruct Fib(usize, usize);impl Fib { fn new() -> Fib { Fib(0, 1) }}impl Iterator for Fib { type Item =

2022-02-05 00:34:25 509

原创 rust实战系列 - 使用闭包和泛型实现简单的Cache

目的本文主要围绕怎么用rust语言来设计一个cache,期间会用到闭包,泛型。实现use std::{cmp::Eq, hash::Hash, collections::HashMap};struct Cacher<T, U, V> where T: Fn(U) -> V { calculation: T, value: HashMap<U, V>,}上面的代码定义了一个Cacher的结构,同时使用了泛型参数T,U,V; T是一

2022-02-01 14:18:41 1010

原创 Vue框架怎么使用mediainfo.js来检测视频文件是否有音轨?

啥是MediaInfo?简而言之,MediaInfo是一个能读取音频和视频文件并分析和输出音视频信息的工具,能输出的内容包括视频信息,音轨,字幕等。MediaInfo也可以在web端使用,需要使用到mediainfo.js。mediainfo.js 是MediaInfoLib通过WebAssembly技术封装来的,也是可以支持查看音视频的信息,本文重点介绍下vue框架要怎么使用mediai...

2022-01-21 16:10:00 230

原创 mysql 定位问题集锦(持续更新...)

事务// 查询当前数据库执行时间在10秒以上的事务SELECT t.trx_mysql_thread_id ,t.trx_state ,t.trx_tables_in_use ,t.trx_tables_locked ,t.trx_query ,t.trx_row...

2022-01-19 11:29:00 13

原创 Rust Trait熟识:一日一trait之Seek trait

> Seek 顾名思义就是用来方便查找的trait,其内部提供了一个在字节流(stream of bytes)移动的游标(cursor),移动游标可以改变操作字节流的位置。## Seek trait 定义```pub trait Seek { fn seek(&mut self, pos: SeekFrom) -> Result<u64>; fn rewind(&mut self) -> Result<()> { .....

2022-01-02 22:12:04 384

原创 rust trait 熟识系列:一日一trait之Seek trait

Seek 顾名思义就是用来方便查找的trait,其内部提供了一个在字节流(stream of bytes)移动的游标(cursor),移动游标可以改变操作字节流的位置。Seek trait 定义pub trait Seek { fn seek(&mut self, pos: SeekFrom) -> Result<u64>; fn rewind...

2022-01-02 21:47:00 22

原创 Rust备忘录 - 容器数据结构

2021-12-27 00:07:00 18

原创 利用对方的人设,让对方说服自己

题外话:在冲突中,往往只有处于劣势的一方才会大谈咱们来沟通海德平衡原理自我一致:矛盾,是件难受的事,每个人都希望保持自我一致。(且越聪明的人,越痛苦)我 / \刘德华 / 讨厌 \ 吸烟我喜欢刘德华刘德华喜欢吸烟 ---- 自我不一致,要么讨厌刘德华,要么喜欢吸烟。 要么否认刘德华喜欢吸烟我讨厌吸烟我不喜欢刘德华刘德华...

2021-12-26 21:57:00 13

空空如也

空空如也

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

TA关注的人

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