自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_39559879的博客

Hello world

  • 博客(88)
  • 收藏
  • 关注

原创 C 中的“泛型”复制/交换两个变量

写 C 的时候有时候需要用到交换两个变量,但是针对不同类型的变量要写不同的函数,很不方便。那么如何做到“泛型”交换两个变量呢?我们都知道C中的变量有地址这个概念,使用&变量操作就可以参看地址值,不用多说,要交换两个变量首先得找到这两个变量的地址,先来看最简单的通过指针交换两个整型变量:void swap_int(int *a, int *b){ int temp = *a; *a = *b; *b = temp;}代码很简单,相信学过指针的都能看懂。泛型版交换两个变量现在的任务是

2020-06-16 19:24:06 569

原创 《算法4》中并查集的实现

并查集,听大佬说是最小生成树的基础。不过现在还是按部就班,顺着学。个人理解,仅供参考:// 算法4 第一章第五节并查集的实现// 路径压缩:将最顶部的根下所有子节点的值更新为最顶部的根的值,优化找根时间复杂度// 加权:仅将小树连到大树,同样也是优化找根时间复杂度#include <stdio.h>const int N = 1e5;int id[N], sz[N]; // sz数组用来保存数的大小// 初始化void init(){ for(int i=0; i<

2020-05-27 19:52:52 126

原创 【css】image 使用 transform:scale 放大后显示不全的问题

为用户点击的坐标值优化体验。问题在于 origin 位于图片下方时,图片放大后出现滚动条,而滚动条的高度会忽略放大显示的图片的上半部分,导致用户滚动到图片上方时会发现图片显示不全。实现图片放大 1.2 倍显示的功能,在此基础上可以修改。值,这样多余的部分会被顶下来,然后在渲染完成后设置。解决:可以设置图片的。,让图片滚动到原先的。

2024-07-14 17:29:09 368

原创 【JS】Promise 的并发数控制

写爬虫的时候,可能需要控制网络请求的并发数以避免被反爬。我们知道 Promise 的结果是异步获取的,因此控制 Promise 的并发数的基本思路是。先从最基本的情况开始——限制并发数为 1,也就是只有前一个 Promise 执行完成后下一个 Promise 才能执行。对于并发数 > 1 的情况,特殊的点在于初始化时需要先启动数量

2024-03-08 16:53:50 528

原创 iptables 基本使用

iptables 主要用到两个表:filter 和 nat,其中 filter 表可以用来过滤数据包;nat 可以用来修改数据包的源地址和目的地址。chain 是 table 中对数据包进行匹配的规则,对于 filter 来说 chain 有。通过 -j DROP 可以 block 特定地址的数据包。对于 nat table,chain 为。添加规则可以修改数据包的进入行为。发生在路由前,可以修改目的地址。列出指定 table 的规则。

2024-03-03 19:08:49 271

原创 【计网】交换机、集线器、网关、路由器

而交换机聪明的点在于交换机会记住设备 - 设备之间通过那个端口,例如 设备 A - 设备 B 会通过端口 1 转发,而不会用到其它端口,避免了冲突。对于家庭组网来说,家庭的内网(局域网)必须通过网关连接到外部的公网(广域网),因此网关是必须的。交换机和集线器可以减少不同设备之间连接的线材,比如一个网络有 5 台设备,用交换机的话 5 台设备只需要都连到交换机上,而无需互相连接。MAC 地址用来标识设备,而 IP 地址标识该设备位于那个网络,更进一步还有一个端口号的概念依附于 IP 地址,用来标识应用程序。

2024-02-25 22:01:20 355

原创 跨域问题的三种解决方法

跨域本质想解决还是需要后端配合,如果无法取得配合,那么 nginx 做反代是最方便的解决方法。jsonp 需要前后端都修改代码,但是兼容性最好。开头的响应头可以进一步控制跨域请求。,这种方法比较方便,且限制较小。

2024-01-09 22:16:11 394

原创 Ubuntu22 安装 mysql5.7 过程记录

买了台 1G 的小鸡,只能用内存要求较小的 mysql5.7,记录下整个流程。

2023-12-05 19:33:32 402

原创 【Python】用 dict 实现一个简单的 json 数据库

最近写了一个小项目,基本逻辑是通过定时任务轮询 API,检测 API 状态变化并执行对应的操作。该 API 一共有 3 种状态,假设每种状态的值分别为 1、2、3,在状态 2 的时候需要调用一次处理方法。这里的问题是状态 2 可能持续很长时间,而通过定时任务调用的 Python 脚本默认是没有记录状态的,因此需要本地保存状态。可以用SQLite或者MangoDB,但是用到这种小项目上有点多余的感觉,最轻量级的解决方法大概还是用json保存。

2023-11-22 18:35:58 251

原创 magisk 手机卡重启界面记录

中午发现手机自动关机了,开机后无限卡重启界面,但是可以进 rec 和 fastboot。怀疑是之前安装的 magisk 模块导致卡重启。不过值得一提的是,虽然自动关机的问题此前也出现过几次,但是都没有出现过卡重启的情况。进 rec 打开文件管理器,进入 /data/adb/magisk 文件夹,删除/重命名该文件夹(禁用所有 magisk 模块),之后重启 1 ~ 2 次,问题得以解决。实在不行再双清、四清重刷 ROM,毕竟相对于删除数据重命名一个文件夹的成本是最小的。

2023-11-21 15:39:33 1064 1

原创 [CSS] 文本折行

文本折行一般分为两种情况:CJK(Chinese/Japanese/Korean) 字符和非 CJK 字符。一般非 CJK 字符折行发生在两个单词的空格中间,见下图:图中文本 “hello world” 包裹容器的宽度为 2rem,但是 hello 并没有被截取成两段,反而是在空格处发生了折行。这种行为也很容易理解——把一个单词拆成两部分,很可能会使单词失去意义,所以只能在空格折行。CJK 字符,图中为 “你好世界”,则是在 “世”和“界”中间发生了折行,符合设置的 3rem 字符宽度。

2023-11-16 10:58:03 704

原创 用 Promise 异步化 ElDialog

一般 ElDialog 的写法:v-model 一个 boolean,通过事件回调监听对话框关闭

2023-11-01 14:59:35 308

原创 [Vue3] 对象的双向绑定

Vue2 和 Vue3 实现对象的双向绑定的思路不同,需要注意二者之间的区别。如果监听的不是对象,则可以直接用 computed 的方式实现双向绑定。

2023-08-18 17:10:35 397

原创 【微信小程序】记一次自定义微信小程序组件的思路

用 WXML + CSS + JS 模拟原生组件的样式和行为。

2023-08-17 16:46:32 1054

原创 【前端】husky 的使用

git hooksLinux 命令行好在目前 LLM 非常发达,碰到类似的问题可以直接问 AI。

2023-08-14 11:34:29 1711

原创 ElementPlus 自定义主题(Vite4 + Vue3)

配置 ElementPlus 主题的时候遇到 SCSS 循环导入的报错,排查后发现是以为在。中引入创建的样式文件(未测试);如果是按需导入,则需要删除。中引入了两次自定义主题的样式文件,解决方法很简单,去掉。如果不是按需导入,则将 2. 最后一行代码放开,并在。以上代码来自 ElementPlus 官网。下面是配置 ElementPlus 自定义主题的流程。选项下的内容,根据项目采用的插件。中导入自定义样式的代码,并配置。中导入自定义主题的文件即可。,全量导入暂时没有测试。

2023-08-08 15:23:46 2138

原创 [Python] Pylance 插件打开 Python 的类型检查

安装 Python 插件2.打开一个 Python 文件可以看到右下角有一个花括号和 Python 字样,点击花括号(不是 Python 字样)打开类型检查即可:

2023-08-03 10:32:13 1362

原创 【Python】aio Queue 的超时封装

queue 的 put 和 get 操作都是阻塞的(当然可以通过 _nowait 方法改为非阻塞),取数据的时候如果没数据则会一直阻塞。下面通过计数的方法给。一般封装生产者消费者模型的时候会用到。

2023-07-30 21:49:50 232 1

原创 .m3u8、HLS 协议

其中 #[TEXT] 被称为标签,用来给分片和文件提供描述。#EXTINF:10.0 后面的 10.0 标识分片为 10s,下一行的链接则代表分片的地址,可以直接下载这个分片到本地。如果请求 .ts 分片的时候需要认证,则在请求头或者 URL 中添加对应的参数。可以使用这个 https://github.com/globocom/m3u8 Python 包解析 m3u8 文件。上面的例子一共有 3 个 .ts 分片,每个分片 10s,因此该视频长度为 30s。

2023-07-14 17:40:44 485

原创 Git 复习:缓存区、版本库和 git reset

除了缓存区(Staging Area),Git 还有两个重要的区域:工作区(Working Directory)和版本库(Repository)。工作区:指你在电脑上能看到的目录,也就是你正在进行编辑修改的文件所在的目录。缓存区:一般存放在 Git 目录中的一个文件,称为暂存区(Stage 或 Index)。它像一个缓存区域,临时保存你的改动,等到提交的时候再一次性提交到版本库中。版本库:工作区有一个隐藏目录 .git,这个不算工作区,而是 Git 的版本库。

2023-06-13 12:01:04 864

原创 《你不知道的 JavaScript》闭包的概念

这段代码是闭包,因为这里 doit 函数(实际是 inc)在全局作用域下,但是却访问到了 hello 函数中的变量。这段代码技术上来讲,也许是闭包,但根据前面的定义,确切地说并不是。闭包:当函数可以记住并访问所在的词法作用域时,就产生了闭包,

2023-06-08 11:22:06 67

原创 [前端] 虚拟列表的实现

假设后端返回 1000 条数据,前端一次性展示出来,可能用户只想看到前 100 条,那么剩下 90% 的数据就没必要展示了。因为我们实际上只展示一个视口能看到的元素,所以实际上页面是不会有很大的滚动条(或者没有滚动条)的,所以这里需要一个撑起页面高度的元素,这个元素的高度为。另外在无限滚动的页面中,也可能会有大量的数据存在前端展示,随着滚动深度加深,展示的数据也越来越多,就可能造成上面提到的性能问题。只考虑了最基本的情况:元素高度是固定的,一般用来展示图片之类的。,我们要展示的元素则是通过。

2023-03-21 14:52:36 998 1

原创 [Linux] 下载工具 aria2 的使用

官方文档:https://aria2.github.io/manual/en/html/aria2c.html官方示例:https://aria2.github.io/

2022-11-03 17:09:23 1076

原创 ElementUI Table 布局的调试

ElTable 提供了很多自定义表格属性的回调函数,但是官方文档中并没有什么例子。实际开发中,需要结合实际的 DOM 来调试,同时也要清楚 ElTable 的每个元素的作用,这样才能少走弯路。

2022-10-21 10:29:44 631

原创 [js] 实现侧边菜单可用鼠标拖动调整大小的功能

element-ui 提供了一个 nav-menu 组件,默认情况下该组件没有拖动调整大小的功能。下面通过代码为 nav-menu 添加这个功能。

2022-10-20 14:34:35 1007

原创 ElementUI 组件设置全局默认值

最近碰到个需求,要求把管理系统的所有 `el-select` 元素都添加 `clearable` 属性。整个管理系统估计有几百个页面,`el-select` 的数量更是不计其数,如果用传统方法一个一个的找然后添加属性,绝对是不现实的。下面介绍另一种更加方便的方法。

2022-10-19 18:02:51 2084

原创 【Vue】Vue 判断插槽内容是否加载完成

判断插槽内容是否加载完成,实现显示占位内容等功能

2022-10-04 11:27:11 2541

原创 [node.js] PrismaORM 入门

Prisma 的官方网站:https://www.prisma.io/目前应该是 4.x 版本其中 sqlite 还可以指定为其他想初始化的数据库,如 MySQL执行这条指令会在当前项目根文件夹创建一个.env文件用来保存数据库的地址,还会创建一个prisma文件夹,该文件夹中有一个的文件,这个文件用来定义数据库表的字段。.prisma 文件在 VSCode 上有插件,安装后能提供语法高亮和自动格式化等功能其中用model关键字定义表,字段的的数据类型可以参考官方文档,这里主要讲讲和的作用。.env。

2022-09-28 09:42:51 993

原创 [JS] node.js 入门

API 文档:https://nodejs.dev/en/api/v18/documentation/

2022-09-24 20:32:31 482

原创 [JS] 网络请求相关

本文介绍如下内容:1. XMLHttpRequest2. Fetch3. WebSocket三个浏览器原生支持的发送网络请求的方法。

2022-09-20 11:08:35 251

原创 [JS] 表单相关

表单相关,内容包括常用表单控件解释、表单事件等

2022-09-19 18:42:24 328

原创 [JS] canvas 详解

canvas 详解,内容包括绘制路径、图形等

2022-09-19 10:38:25 1108

原创 [JS] DOM 的事件监听、混杂模式和标准模式适配

本文主要内容:事件监听鼠标事件键盘事件页面加载事件。

2022-09-19 08:24:37 299

原创 [JS]迭代器、可迭代对象、生成器详解

"迭代器(iterator)是按需创建的一次性对象。每个迭代器都会关联一个可迭代对象,而迭代器会暴露迭代其关联可迭代对象的 API。迭代器无须了解与其关联的可迭代对象的结构,只需要知道如何取得连续的值。这种概念上的分离正是 Iterable 和 Iterator 的强大之处"——引用自《JavaScript 高级程序设计第四版》。

2022-09-15 17:50:02 591

原创 [JS高级程序设计] ES6 新增的集合对象总结

ES6 新增了如下集合对象其中Map和WeakMap是一组,Set和WeakSet是一组,从代码层面来讲,Weakxxx无法被迭代且只能以 Object 或继承自 Object 的对象作为值,因为它们保存的是对象的弱引用。

2022-09-14 09:53:16 193

原创 【JS】前端面试常见手写题总结

本文主要总结从网上看到的各种 JS 手写题,其中应用题居多。实际应用中,需要结合自己的理解而不是背代码。

2022-09-08 16:46:57 216

原创 【nginx】多个子域名配置自动 HTTPS 自动重定向

nginx 配置自动跳转 HTTPS

2022-09-04 23:25:14 1420

原创 【前端】HTTP相关知识总结

主要总结自:https://juejin.cn/post/68449041000358215752022-9-1 持续更新。

2022-09-01 21:35:40 358

原创 【JS】模块化的几种解决方案(AMD、CMD、ES6、CommonJS)

摘抄自作者:浪里行舟链接:https://juejin.cn/post/6844903744518389768来源:稀土掘金CommonJS规范主要用于服务端编程,加载模块是同步的,这并不适合在浏览器环境,因为同步意味着阻塞加载,浏览器资源是异步加载的,因此有了AMD CMD解决方案。AMD规范在浏览器环境中异步加载模块,而且可以并行加载多个模块。不过,AMD规范开发成本高,代码的阅读和书写比较困难,模块定义方式的语义不顺畅。...

2022-09-01 15:16:03 593

原创 【Vue】v-html 功能加强

v-html的功能是替换元素的innerHTML,在大部分场景下都够用,但是因为是直接替换innerHTML所以无法用 Vue 的事件监听方法。下面引入一个需求,来实现这个功能。

2022-08-08 22:39:29 899

空空如也

空空如也

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

TA关注的人

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