算法

水塘采样算法解决随机抽样需求

水塘采样算法解决随机抽样需求 需求场景: 如果我们现在有200万用户数据,需要从200万用户数据中以较好的随机性,随机抽取200个用户做案例分析或灰度发布; 尝试了多种算法,发现水塘采样算法是性能较好、随机性较好、算法空间复杂度平衡、比较适合泛用性需求场景; class ReservoirSampler { private $pdo; private $batchSize = 10000; public function __construct(PDO $pdo) { $this->pdo = $pdo; } public function sample($tableName, $k) { $reservoir = []; // 水塘,存储 k 个随机样本 $offset = 0; // 分页偏移量 $count = 0; // 已处理的元素总数 while (true) { // 分批读取数据,避免一次性加载所有数据 $sql = “SELECT * FROM {$tableName} […]

Uncategorized

Web UI 组件库 Layui 快速网站构建工具

Web UI 组件库 Layui 快速网站构建工具 Layui 是一套遵循原生态开发模式的 Web UI 组件库,采用自身轻量级模块化规范,易上手,可以更简单快速地构建网页界面。 这个工具特别适合非专业的前端开发人员,可以使用该 UI 工具快速构建基于模板渲染的前后端管理后台。 核心特点 该工具具有多种亮点和特色,以下是最值得关注的几个方面: 适用场景 github:

架构设计

服务器性能优化

服务器性能优化 在日常开发中如果需要进行服务器性能优化大概有哪些切入点,例客户端请求服务器一个业务接口,可以优化的对象有Linux,nginx,phpfpm,php,mysql,redis; linux 可以优化配置服务器可以连接的套接字文件进程数 /etc/sysctl.conf # 系统最大文件句柄数(所有进程可打开的文件总数上限) fs.file-max = 1000000 # 系统范围内已分配、未使用的文件句柄数(监控用,一般不直接设置) # fs.file-nr # 端口范围 net.ipv4.ip_local_port_range = 1024 65535 # TCP连接相关 net.core.somaxconn = 65535 net.ipv4.tcp_max_syn_backlog = 65536 net.core.netdev_max_backlog = 50000 # TIME-WAIT优化(高并发场景) net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_max_tw_buckets = 2000000 net.ipv4.tcp_fin_timeout = 30 nginx # ============ 全局配置部分 ============ user nginx; # 确保与系统用户一致 worker_processes auto; # 自动设置为CPU核心数

Uncategorized

RaspberryPi 在家庭的使用

RaspberryPi 在家庭的使用 树莓派在家庭使用有很多场景和功能,我在本地使用树莓派有几个有趣的应用方式 – 本地配置 ssh 跳板机 “本地可以配置 ssh 登录跳板机,远程连接服务器,则不需要在多太服务器中配置公钥,家里的所有电脑只需要连接到 pi 中则可以直接请求连接服务器,如果你家中有超过 3 台工作电脑,则是非常有效的的应用场景 “ – 本地配置流量代理 “本地配置clash做流量转发,pi中配置openvpn代理,将转发的流量发送到服务器,则本地局域网中可以实现所有电子设备都可以使用 pi 进行软路由代理 “ – 本地配置 smbd 服务 “本地配置 smbd 服务,本地mount两块闲置的硬盘,则可以在局域网中实现本地网盘,如果您有多台工作电脑和设备之间需要数据传输和共享,则可以通过 smbd 服务进行数据同步,实际本地使用非常方便,可以节省很多不必要的数据亢余 “ – 本地配置aria2c 做本地下载机 “如果你需要本地下载一些大文件,和影音文件,aria2c+本地挂载磁盘 是一个不错的选择,直接使用命令行实现 24 小时不间断下载文件数据,下载后存储在本地挂载磁盘中 “

Mysql

Mysql性能优化-道

Mysql性能优化-道 Mysql是目前市面上最成熟,相对稳定,应用最广,基础数据结构映射最完善的免费数据库, mysql 性能优化是一个老生常谈的问题,从程序员入门,到进阶,面试,工作都会与之打交道,这个命题有些大,从头开始讲起有些无从下手,可以从道法术器的不同维度分化解决这个问题; 数据库三要素 (引自数据库系统概论第6版(王珊)) 数据结构; 数据操作; 数据完整性约束; 第一性原理 Mysql 是数据库数据存储的具体软件和存储工具,所有操作和目的就是为了将数据存储到磁盘,保存数据,方便程序读取和使用,数据库是软件生命周期的一个重要组成部分,所以数据库也具有软件工程的一些属性和状态, 演化原则,持续升级,并且在软件工程的不同阶段根据不同阶段的特性设计表结构和数据存储方案和方法,软件工程要遵循演化原则,不可能一步到位; 设计基础和规范 表明,数据库字段名,表注释,字段注释,数据唯一性约束,数据基础查询索引,命名规范,字段命名规范,注意命名时要见名知意,不要在不必要的语法和标准上纠结,推荐的命名规则,为单数明明category(推荐) categories(不推荐),并且好的表字段命名,可以帮助理解业务逻辑,并且精确定义业务关系,理解使用场景,好的命名规则则程序已经成功了一半; 所有表推荐使用Innodb存储引擎; 字符集,推荐 utf8-mb4; 根据业务场景使用合适的字段类型做数据存储,禁止使用string存储字符串时间; 数据库上线时建议给基础表字段添加索引后再上线; 禁止给decimal、float,double类型添加索引; 索引添加时需要注意索引选择性(Selectivity); 选择度 = COUNT(DISTINCT column) / COUNT(*) >0.3 建议 0.1-0.3 推荐 <=0.1 不推荐 谨慎使用 text 数据类型; 禁止在数据库存储 base64 格式的图片; 严格控制表条目的磁盘空间和表字段宽度,原则上禁止 30 个字段以上的大型表; 同一个数据库database 必须使用统一的字符集编码; 禁止使用 mysql 全文索引; 禁止在线上正式环境使用 like 查询; 禁止在线上正式环境,使用没有 limit 的查询即使表数据较少;

Uncategorized

linux命令快速查询工具tldr

在我们实际工作中,linux命令或者工作命令实际生产过程中需要,快速使用并且完成工作任务,实际使用的命令非常多,如何快速定位命令参数和使用语法呢?我尝试过很多种方式和工具,实际效果最佳的是这款tldr (too lang don’t read) 可以设置一些更简洁的帮助页面,重点介绍实际案例。比如: 这个资源库就是这样:是一个不断扩充的示例集合,涵盖了最常见的 UNIX、Linux、macOS、FreeBSD、NetBSD、OpenBSD、SunOS、Android、Windows、Cisco IOS 和 DOS 命令行工具。 Linux 和 Mac 用户还可以通过 Homebrew 安装官方 Rust 客户端: 你也可以安装官方 Node.js 客户端,但该客户端目前更新较慢: 安装后,即可通过 tldr tar 获取简明易懂的命令帮助,无需再查阅冗长的 man tar。 类似项目推荐

Uncategorized

优化清理加速你的windows系统

描述 在您长时间使用电脑娱乐工作后,windows电脑经常会出现磁盘飘红的现象,怎样才能长时间保持电脑高效快速使用可以根据以下步骤排查和清理你的电脑 操作步骤 如效果不佳,则进行更深层清理

Uncategorized

linux 命令行导航效率神器autojump

  1. 工具简介 2. 安装与配置 3. 使用案例 4. 跳转权重配置 5. 支持平台与 Shell 6. 已知问题和注意事项 如果遇到autojump j 快捷键无效 您可以通过以下命令检查安装: 如果使用autojump遇到指定的目录在当前系统中有多相似的文件名路径,但是autojump跳转到的不是你想要的路径, 则需要将手动配置你需要跳转的正确路径的权重,
Uncategorized

命令行sql查询辅助工具mycli

mycli 中文简介 mycli 是一个支持自动补全和语法高亮的 MySQL 命令行客户端。 快速安装 推荐方式(需 Python 环境): macOS: Debian/Ubuntu: Arch/Manjaro(AUR): Fedora: Windows 安装请参考:安装方法 基本用法示例 连接到数据库: 执行 SQL 并自动补全: 自动补全表名 多行输入: 收藏查询并执行: 查看帮助: 主要特性 兼容性 Windows 理论可用,如遇问题请提交 issue。 更多文档

Uncategorized

Rsync轻量级远程数据备份同步工具

Rsync 简介 什么是 Rsync? Rsync 是一个快速且极其灵活的文件复制工具,支持本地与远程文件的同步。 Rsync 采用了“增量传输算法”,能够非常高效地同步远程文件。它只会在两端同步时,发送文件之间的差异部分(delta),无需事先在本地准备好完整的目标文件副本。这种算法极大地节省了带宽和时间。关于 rsync 算法的技术报告包含在本软件包中。 示例 本地文件夹同步到另一个文件夹 说明:将源目录同步到目标目录,-a 表示归档模式(保留权限、软硬链接等),-v 显示详细过程,-h 以人类可读方式显示大小。 同步本地文件夹到远程服务器 说明:使用 SSH 将本地目录同步到远程服务器目录。 从远程服务器同步文件到本地 说明:将远程服务器上的目录同步回本地。 仅同步文件的变化部分(增量同步) 说明:显示同步进度,并在传输中断时保留已传输部分,适合大文件。 同步时排除某些文件或文件夹 说明:同步时排除“tmp”目录和所有“.log”文件。 使用 rsync 守护进程方式同步 说明:通过守护进程模式同步远程公开目录到本地。 更多参数和用法请参考手册页: 或访问 [官方 manpage][0]。 构建与安装 如果你需要自行编译 rsync,请参考 [INSTALL][1] 页面,了解相关依赖库和可选功能,以获得最佳功能支持。 设置方法 Rsync 通常使用 ssh 或 rsh 与远程系统通信。它不需要设置为 setuid,也无需特殊权限即可安装。但前提是你的系统上已安装并配置好 ssh 或 rsh,建议优先选择 ssh 以获得更好的安全性。 此外,rsync 还可以以“守护进程(daemon)”模式运行,在指定端口监听连接,适用于公共文件分发场景,并支持身份认证与访问控制。 安装步骤:

Scroll to Top