-
MySQL 篇-深入了解视图、SQL 优化(主键优化、order by 优化、group by 优化、update 优化等)
1.0 SQL 优化 SQL 优化包括多种技术和策略,旨在提高数据库插入、查询的性能。接着来介绍常用的 SQL 优化策略,比如主键优化、order by 优化、group by 优化等等,一般来说是通过索引的角度来思考如何提升查询性能。 1.1 SQL 优化 - 插入数据 当插入的数据量小于 1000 条时,可以使用 insert 优化: 1)批量操作: insert into table_name(column) values (),(),(),()... 这种批量操作比一条一条插入数据的操作效率高很多,减少频繁的连接。 2)手动提交事务: /*开启事务*/ start transaction; /*插入数据*/ insert into table_name(column) values (),()...; insert into table_name(column) values (),()...; insert into table_name(column) values (),()...; insert into table_name(column) values (),()...; insert into table_name(column) values (),()...; /*提交数据*/ commit ; 减少频繁的开启事务和提交事务、关闭事务,从而提高插入效率。 3)主键顺序插入: 主键按照顺序插入,简单来说:可以有效的防止页分裂,从而提高插入效率,因为一旦出现页分裂,就会即浪费空间,也会浪费时间。 减少页分裂的概率: 当主键按照顺序插入时,新的数据通常会被添加到现有页的末尾。这种情况下,页面的填充程度不会迅速达到上限,从而减少了页分裂的发生。反之,如果随机插入数据,可能会导致某些页面迅速填满,进而触发页分裂。 提高插入效率: 顺序插入减少了页面的随机 I/O 操作,因为数据是按顺序写入的,数据库可以更高效地管理数据页。页分裂不仅会消耗时间(因为需要创建新页并移动数据),还会导致额外的 I/O 操作,从而影响整体性能。 节省空间: 页分裂会导致页中出现空隙和碎片,影响存储的效率。顺序插入有助于保持数据的紧凑性,最大限度地利用页面空间。 当需要一次性插入大批量数据,使用 inse……
SE_Wang 2024-11-01
111 0 0 -
linux的文件IO操作---read函数如何退出
关于 read 函数和 EOF(End Of File)的概念。 1. EOF 的定义: EOF 是一个信号,表示文件的末尾已经被到达,没有更多的数据可以读取。在 Unix 和 Linux 系统中,EOF 通常与文件的结束关联,但也可以与管道或网络连接的关闭关联。 2. read 函数的行为: 当 read 函数被调用,并且文件描述符指向的文件还有数据可读时, read 会读取数据并返回实际读取的字节数。 如果文件描述符指向的文件没有数据可读,且文件描述符设置为阻塞模式, read 函数会阻塞调用进程,直到有数据可读或者文件被关闭。 当文件被关闭或者到达文件末尾时, read 函数会返回0,这表示 EOF。这意味着没有更多的数据可以读取。 3. EOF 的触发条件: 文件末尾:对于普通文件,当 read 到达文件的末尾时,会返回0,表示 EOF。 文件关闭:对于管道或套接字,当对方关闭连接时, read 也会返回0,表示 EOF。 特殊文件:对于特殊文件(如终端),EOF 可能由用户输入特定的字符组合(如 Ctrl+D)来触发。 4. 阻塞与非阻塞: 阻塞模式:在阻塞模式下,如果 read 没有数据可读,它会等待直到有数据可读或者 EOF 条件满足。 非阻塞模式:在非阻塞模式下,如果 read 没有数据可读,它会立即返回 -1 ,并设置 errno 为 EAGAIN 或 EWOULDBLOCK 。 “没有数据就会发送EOF”,这并不完全准确。EOF 是在文件末尾或者文件被关闭时发送的,而不是仅仅因为没有数据可读。在阻塞模式下, read 会等待直到有数据可读或者 EOF 条件满足,而不是仅仅因为没有数据就返回 EOF。 read 函数触发 EOF 的情况可以总结如下: 1. 普通文件: 当 read 函数从普通文件中读取数据,到达文件末尾时,没有更多的数据可以读取, read 函数会返回0,表示 EOF。 2. 管道和套接字: 对于管道(pipe)和套接字(socket), read 函数的行为与普通文件有所不同。在这些情况下, read 函数……
SE_Wang 2024-10-31
212 0 0 -
在MySQL中存储IP地址的最佳实践
在现代网络应用中,IP地址是常见的数据类型之一,无论是用于日志记录、访问控制还是数据分析。正确地存储和处理IP地址对于数据库性能和数据准确性至关重要。本文将探讨在MySQL中存储IP地址的不同方法,并提供最佳实践建议。 一、IP地址的格式 IP地址主要分为两种格式:IPv4 和 IPv6。 IPv4:由四个8位字节组成,通常表示为点分十进制形式(如 192.168.1.1) IPv6:由八个16位字节组成,通常表示为冒号分隔的十六进制数(如 2001:0db8:85a3:0000:0000:8a2e:0370:7334)。另外,为了提高IPv6的阅读性和书写效率,一般还可以进行简化,简化规则请参考我的另一篇文章 IPv6地址的简化规则及Java中的处理方法。 二、存储IP地址的数据类型选择 1. VARCHAR 使用 VARCHAR 数据类型可以直接存储IP地址的字符串形式。 优点 易于理解和使用。 可以直接存储IP地址的字符串形式,如 192.168.1.1。 查询时可以直接使用字符串进行比较。 缺点 存储空间相对较大(每个字符占用1字节),每个IP占用空间为7-15个字节(1.1.1.1占用7字节,100.100.100.100占用15字节)。 字符串比较可能不如数值比较高效。 示例 CREATE TABLE ip_addresses ( id INT AUTO_INCREMENT PRIMARY KEY, ip VARCHAR(15) ); 2. INT 或 BIGINT IPv4地址由4字节(32位)组成,每个字节的取值范围是0到255。而一个int数字也是4字节(32位),正好可以存储一个IPv4地址。 IPv6地址由16字节(128位)组成。而一个long数字是8字节,两个long数字正好可以存储一个IPv6地址。而MySQL中的BIGINT数据类型是8字节(64位)的整数数据类型,所以用两个BIGINT字段也能够存储一个IPv6地址。 综上,使用 INT 或 BIGINT 数据类型可以将IP地址转换为整数形式存储。 优点 存储空间较小(4字节对于IPv4,16字节对于IPv6)。 数值比较非常高效。 缺点 需要将IP地址转换为整数形式存……
SE_Wang 2024-10-30
154 0 0 -
HTTP——POST请求详情
POST请求 【传输实体文本】向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在POST请求体中。POST 请求可能会导致新的资源的建立或已有资源的修改。 场景: 1. 提交用户注册信息。 2. 提交修改的用户信息。 常见的post提交数据类型: 第一种:application/json这是json格式,也是非常友好的深受喜欢的一种,如下 {“input1”:“xxx”,“input2”:“ooo”,“remember”:false} 第二种:application/x-www-form-urlencoded 浏览器的原生 form 表单,如果不设置 enctype 属性,那么最终就会以 application/x-www-form-urlencoded 方式提交数 input1=xxx&input2=ooo&remember=false 第三种:multipart/form-data:这一种是表单格式的,数据类型如下 ------WebKitFormBoundaryrGKCBY7qhFd3TrwA Content-Disposition: form-data; name="text"title------WebKitFormBoundaryrGKCBY7qhFd3TrwA Content-Disposition: form-data; name=“file”; filename=“chrome.png” Content-Type: image/png PNG … content of chrome.png … ------WebKitFormBoundaryrGKCBY7qhFd3TrwA– 第四种:text/xml:这种直接传的xml格式 第五种:application/octet-stream:这种类型通常用于发送二进制数据。 第六种:Multipart/formdata:上传文件时所用格式 发送POST请求 // 1 创建请求对象 WebRequest request = WebRequest.Create("http://192.168.113.74:3000/register"); // 2 设置post请求 request.Method = "POST"; // 3 设置超时时间 request.Timeout = 30000; // 4 设置请求内容类型 (请求内容类型主要是针对传递时普通数据和传递图片而设置的) request.ContentType = "application/x-www-form-urlencoded"; // 主要针对传递数据是字符串格式 // 5 设置请求数据 string data = "name=" + this.textBox1.Text + "&……
SE_Wang 2024-10-29
291 0 0 -
AI 图像处理 --CodeFormer 简介
CodeFormer是一款基于深度学习技术,特别是利用自动编码器和VQGAN(Vector Quantised Generative Adversarial Network)进行人脸修复和视频增强的强大人工智能工具。它通过高分辨率重建和细节修复,显著提升了图像和视频的质量和视觉效果。CodeFormer不仅适用于单人、多人图像的处理,还具备彩色化和破损修复的功能,其Transformer模型增强了鲁棒性,能够处理各种复杂的人脸图像和视频问题。 主要功能 高分辨率重建:CodeFormer可以去除图像和视频中的噪声、马赛克等损坏区域,恢复并增强原始图像的细节和色彩。 细节修复:通过自动编码器实现人脸的变换,包括色彩化、清晰化、去马赛克等功能,使得修复后的人脸更加真实。 彩色化和破损修复:对黑白图片或单色背景图片进行彩色化处理,对破碎或毁坏的图片进行修复。 视频增强:处理视频中的模糊、抖动、颜色失真等问题,提升视频的清晰度和稳定性,并支持视频的超分辨率重建。 安装与部署 CodeFormer的安装和部署相对复杂,需要一定的技术基础。以下是一个详细的安装和部署指南: 准备工作 安装Python: 推荐下载Python 3.8版本,以避免依赖问题。可以从Python官网或下载Anaconda,Anaconda集成了conda、numpy等工具包,方便使用。 安装Anaconda后,创建一个Python 3.8版本的虚拟环境,命名为codeformer。 安装Git: Git用于clone项目源码,可以从Git官网下载并安装。 安装PyTorch: 访问PyTorch官网(https://pytorch.org/),根据电脑配置选择合适的版本安装。 如果电脑显卡支持CUDA,则选择对应版本的CUDA,否则选择CPU版本。 安装CodeFormer 下载源码: 使用Git clone命令从GitHub(https://github.com/sczhou/CodeFormer.git)下载源码,或下载ZIP压缩包。 安装依赖库: 在源码文件夹下,使用Anaconda的codeformer环境,执行pip install -r requirements.t……
SE_Wang 2024-10-28
155 0 0 -
银河麒麟操作系统v10怎么激活
一、产品密钥激活 获取产品密钥:产品密钥通常在配套DVD包装盒中,由20位数字和大写字母组成。 连接网络:确保计算机已连接到互联网。 输入产品密钥:在系统激活界面输入产品密钥。 点击激活:输入密钥后,点击激活按钮。 重启系统:提示激活成功后,重启系统即可完成激活。 二、二维码激活 系统联网状态 扫描二维码:使用移动设备的微信扫描系统激活界面中的二维码。 输入服务序列号:在移动端授权激活界面,输入服务序列号。 检查激活情况:点击“检查激活情况”按钮。 获取激活码:在确认激活界面,输入验证码,点击“获取激活码”按钮。 完成激活:在系统激活界面上点击“激活”,系统即自动刷新为激活成功状态。 系统离线状态 扫描二维码:使用移动设备的微信扫描系统激活界面中的二维码(此步骤与联网状态相同)。 参考联网步骤:离线二维码的移动端授权激活与联网相同,参考联网二维码移动端授权激活的步骤即可。 三、通过授权文件激活 获取授权文件:确保已经获得了麒麟系统的授权文件,并将其保存在系统桌面上。 解压缩授权文件:将授权文件中的所有内容解压缩到一个文件夹中。 绑定管理员权限:使用微信扫描授权文件中提供的“管理员二维码”,通过手机微信完成管理员权限的绑定。 打开系统属性:在计算机上右键单击“属性”,进入系统属性窗口。 选择激活选项:在系统属性窗口中,找到“激活”选项,并点击它。 导入授权文件:将保存在桌面上的授权文件拖拽到激活窗口中,或者通过点击“浏览”按钮,找到授权文件的文件夹并导入。 完成激活:按照提示完成后续激活步骤。 请注意,不同的激活方式可能适用于不同的场景和需求,用户可以根据自己的实际情况选择合适的激活方式。如果在激活过程中遇到问题,建议查阅官方文档或联系技术支持以获取帮助。
SE_Wang 2024-10-25
431 0 0 -
如何在麒麟操作系统上进行打印机和扫描仪的配置和使用
在麒麟操作系统上,可以按照以下步骤配置和使用打印机和扫描仪: 打开设置菜单:点击桌面左上角的“开始”按钮,然后选择“系统设置”。 找到“设备”菜单:在系统设置窗口中,找到并点击“设备”选项。 添加打印机:在设备菜单中,找到“打印机”选项,点击打开打印机设置。如果已经连接了打印机,系统会自动检测到,你可以直接点击“添加打印机”按钮进行配置。如果没有自动检测到,你可以手动添加打印机,点击“添加”按钮,然后按照提示完成打印机的配置。 添加扫描仪:如果你需要使用扫描仪,在设备菜单中找到“扫描仪”选项,点击打开扫描仪设置。系统会自动检测到已连接的扫描仪,你可以直接点击“添加扫描仪”按钮进行配置。如果没有自动检测到,你可以手动添加扫描仪,点击“添加”按钮,然后按照提示完成扫描仪的配置。 使用打印机和扫描仪:配置完成后,你可以在应用程序中选择打印或者扫描功能,然后选择已配置好的打印机或扫描仪进行使用。
SE_Wang 2024-10-24
3.4K+ 0 0 -
银河麒麟桌面操作系统V10 SP1 商店没有软件
银河麒麟桌面操作系统V10 SP1商店没有软件的问题可能是由于缓存文件丢失或损坏导致的。 这种情况通常会导致软件商店无法正常显示软件。 具体原因可能包括: 缓存文件丢失:在安装或更新软件时,如果安装过程被强行终止,可能会导致部分缓存文件丢失1。 应用缺失:有时候软件商店会出现应用不全的情况,这可能是由于软件源更新不及时或者缓存文件损坏所致2。 解决方法如下: 删除缓存文件:可以通过删除缓存文件来解决。打开终端,输入命令 rm -rf \~/.cache \~/.config \~/.local,然后重启电脑2。 更新软件源:编辑 /etc/apt/sources.list 文件,添加或更新软件源地址,然后执行 sudo apt update 或在软件商店中更新软件源3。 重启机器:有时候简单的重启操作可以刷新软件商店的内容13。 通过以上方法,通常可以解决银河麒麟桌面操作系统V10 SP1商店没有软件的问题。
SE_Wang 2024-10-23
288 0 0 -
麒麟操作系统(Kylin)入门—安装系统
安装麒麟系统 麒麟操作系统的安装主要分为三步:安装准备、启动引导、安装系统,在安装系统时可以选择高级安装功能进行更为详细的配置 操作系统的最低配置,在V10版本中如表所示: 版本形态 最小内存 推荐内存 最小硬盘空间 推荐硬盘空间 桌面系统 2GB 8GB及以上 50G 128GB以上 安装准备 准备所需组件 8GB 及以上 50GB 128GB 及以上 安装光盘或U盘启动器 检查硬件兼容性 银河麒麟桌面操作系统具有良好的硬件兼容性,与近年来生产的大多 数硬件兼容。由于硬件的技术规范改变频繁,因此可能难以保证系统会百 分之百地兼容硬件。 备份数据 安装系统之前,请将硬盘上的重要数据备份到其他存储设备中。因为这会格式化你的硬盘。 系统安装 将安装光盘放入光驱中,重启机器。根据固件启动时的提醒,按下相 应快捷键进入固件管理界面。若使用的是内置光驱,“第一启动选项”选 择“光驱”;若使用的是USB或者USB外置光驱,“第一启动选项”选 择“USB”。 双击图标“安装 Kylin”,开始安装引导,根据提示选择,点击下一步继续后续操作。 创建用户,并预设密码。 注意:这里默认系需要 8 位以上有数字和字母的密码。 全盘安装 安装方式分为两种,全盘安装和自定义安装。如果不知道如何处理,这里推荐使用默认的全盘安装。后面再慢慢理解。 点击下一步,勾选格式化整个磁盘。 自定义安装 选中“空闲”所在行,选择“+”即可创建硬盘分区: 在创建分区时,“新分区的类型”选择“主分区”,“新分区的位置” 默认为“剩余空间头部”。 首先创建boot分区,/boot 必须是主分区中的第一个分区,用于选 择“etx4”,挂载点选择“/boot”,boot分区大小推荐 1GiB到 2GiB 之间,不可小于500MiB。 创建根分区,用于选择“etx4”,挂载点为“/”,“/”分区大小不 可小于15GiB,华为机器要求不小于25GiB。 创建backup 分区,用于选择“etx4”,挂载点为“/backup”,大 ……
SE_Wang 2024-10-21
986 0 0 -
银河麒麟高级服务器操作系统V10-系统管理员手册:01 基本系统配置
第一章 基本系统配置 这部分涵盖了基本的系统管理任务,如键盘配置、日期和时间配置、用户和组群配置以及授权配置。 1.1. 系统地区和键盘配置 系统地区配置是指系统服务和用户界面的语言环境配置。键盘布局配置是指文本控制台和图形用户界面的键盘布局规则。这些设置可以通过修改/etc/locale.conf 配置文件或使用 localectl 命令。此外,您可以在用户图形界面来执行任务,详情请参考安装手册。 1.1.1. 配置系统地区 系统地区配置文件为/etc/locale.conf,在系统启动时引导 systemd 守护进程。这个配置文件可以被每一个服务或者用户继承,单个服务或者用户也可修改配置 文件。例如语言为英语,地区为德国的/etc/locale 文件的配置内容如下: LANG=de_DE.UTF-8 LC_MESSAGES=C LC_MESSAGES 选项决定了诊断消息的标准输出文本格式。其他选项说明 总结在表 1-1 在所示。 1.1.1.1. 显示当前配置 Localectl 命令可用于配置语言环境和键盘布局。显示当前配置,可使用如下命令: #localectl status 1.1.1.2. 显示可用地区列表 显示可用地区列表可使用如下命令: #localectl list-locales | grep en_ 1.1.1.3. 配置地区 配置系统默认地区,需要以 root 用户身份运行: #localectl set-locale LANG=locale 用户可以配置适合的地区标示符以代替 locale,可通过 localectl list-locales 检索适合的地区。 1.1.2. 配置键盘布局 键盘布局配置是指文本控制台和图形用户界面的键盘布局规则。 1.1.2.1. 显示当前配置 Localectl 命令可用于配置语言环境和键盘布局。显示当前配置,可使用如下 命令: #localectl status 1.1.2.2. 显示可用键盘布局列表 显示可用键盘布局列表可使用如下命令: #localectl list-keymaps 1.1.2.3. 配置键盘 配置系统默认键盘布局,需要以 root 用户身份运行: #localectl set-keymap {map} 用户可以配置……
SE_Wang 2024-10-18
1.8K+ 0 0
