首页
碎碎念
东邻西舍
本站信息
前来吐槽
统计
Search
1
openwrt系统上安装第三方插件
27,288 阅读
2
ubuntu下zerotier的基本使用教程
14,542 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
13,423 阅读
4
openwrt使用第一步:设置上网拨号
11,297 阅读
5
openwrt无线中继功能:实现不插网线就能上网
10,071 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
Java
建站
踩坑实录
Ubuntu
折腾搞机
MySQL
MyBatis
CSS
HTML
Spring
SQL
Nginx
OpenWrt
树莓派
路由器
Maven
SSL
Git
Windows
知识分子没文化
累计撰写
85
篇文章
累计收到
155
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
统计
搜索到
85
篇与
的结果
2026-01-27
Thinkbook16+ 再进化:低成本通过 Oculink 转接板外接显卡
目录 为什么选择 Oculink 硬件 43代码问题 关于热插拔 为什么选择 Oculink 目前最成熟、门槛最低的外接显卡(eGPU)方案就是雷电(Thunderbolt)方案,只需要购买第三方厂商现成的雷电扩展坞,在具有雷电接口的设备上就可以使用,缺点是显卡扩展坞价格较贵、只支持具有雷电接口的设备。并且性能方面也不尽如人意,雷电 3/4 的接口理论最大带宽为 40Gbps,雷电 2 接口更少只有 20Gbps,但问题在于提供给显卡的实际带宽只有理论带宽的一半多一点,因此扩展出的显卡性能损失较为严重。 还有一种就是 Oculink 方案,Oculink 接口基于原生 PCIe 通道,可以看作一个在主板之外的 PCIe 接口,在提供 4 条通道的前提下,常见的 PCIe 3.0 ×4 规格在理论上可提供约 32 Gbps 的带宽,实际可用带宽约 28 Gbps,而 PCIe 4.0 x4 带宽则还要翻倍,都要明显高于雷电 3/4 提供的有效带宽,因此使用高端显卡的带宽和性能损失相对于雷电接口来说大大减小。 但是 Oculink 方案依然也有着不小的缺点,由于其硬件支持度不高(需要设备自带 Oculink 接口或者通过多余 M.2/U.2 接口扩展出 Oculink 接口),以及比较麻烦的折腾安装过程,所以依然也只有特定设备的部分玩家会使用。 目前可以使用 Oculink 接口的主流笔记本较少甚至可以说稀有,主要为联想的 ThinkBook 系列,Thinkbook 2024 款及以后的版本原生具有 Oculink 接口,并且只限于英特尔版本,据说锐龙版不支持是因为提供的 PCIe 通道数不够;而 2024 年之前发布的 Thinkbook 尽管没有 Oculink接口,但由于其隐藏的 USB2.0 接口边上就有一个 M.2 接口,可以通过加装一个定制转接板,从靠近 USB2.0 的 M.2 接口处转接出 Oculink 接口,当然缺点就是只剩了一个可用的 M.2 接口。 我这台 Thinkbook16+ 是 RTX4050 独显版本,曾经在几年前就折腾外接显卡,当时抱着玩一玩的心态买了一个 2023 款锐龙核显版本的转接板,结果买回来发现怎么装都装不到主板上,一问客服才知道核显版本与独显版本的主板布局不一样,转接板不能通用,后来一直苦于没有找到适配的转接板遂作罢。最近半年由于开始研究 ComfyUI,而 RTX4050 贫瘠的 6G 显存根本跑不了什么工作流,于是又萌发了折腾外接显卡的想法,好在这次我找到了可以用在这台电脑上的转接板。 硬件 我没有选择销量比较多的“开源宇宙”(因为以前就是在这家店买的 2023 款锐龙版转接卡不兼容),而是在另外一家店铺“DIY玩家世界”买了除支架以外的其他配件,本来也买了 Oculink 连接线,到货之后发现转接卡里包含了线,于是退掉了单买的线,最后加上运费与运费险只花了一百二十大洋多一点。 由于第一次折腾这东西,保险起见先在 BIOS 中把笔记本的 RTX4050 独显屏蔽掉了,再拆机把这个转接板装在笔记本上: 好的一点是,安装上转接板之后延伸出来的 Oculink 接口并不会遮挡住原来的 USB 接口,依然有空间能在 USB2.0 接口插上无线接收器: 笔记本上装完转接板之后,用 Oculink 线连上显卡转接卡简单测试一下好坏,显卡转接卡接上主板用的 24PIN 供电线,显卡再接上 PCIe 供电,首先给显卡扩展坞供电,把显卡转接卡上的开关拨到 POWER ON,等待显卡通上电之后再给笔记本开机,系统设备管理器的显示适配器下面多出来了一个带感叹号的设备: 能识别到设备说明扩展卡没问题,再装上驱动之后便可以成功显示为 RTX2080Ti,但是旁边依然带一个感叹号,这个就是网上很多人碰到的代码 43 问题,后面专门说这个问题的解决办法。 其次就是扩展坞了,我没有选择长方体盒子形状的扩展坞,感觉太大了的同时散热还受限,倒不如直接用开放式支架算了,最后选择“电脑机箱diy设计制作”这家店的开放式支架,这个支架发过来是零件和螺丝需要组装,组装确实费点时间,不过组装好的质感倒还意外地不错。 最后配上我那块魔改 22G 的矿卡 RTX2080Ti 和 650W SFX电源,尽管不用定制线的话线可能会有点乱,但鉴于整体不到两百块的成本,个人还是相当满意的,整个外接显卡成品如下: 43代码问题 英伟达显卡有可能会产生代码 43 报错问题,在 Windows 设备管理器中 NVIDIA 显卡显示“该设备已停止工作”(代码 43): 国外有大佬提供了解决办法,只要运行其提供的脚本 nvidia-error43-fixer.bat 即可解决。 原帖:SCRIPT - nvidia-error43-fixer | M.2, mPCIe, Expresscard eGPU 脚本下载:https://egpu.io/wp-content/uploads/wpforo/attachments/3/12074-nvidia-error43-fixer113.zip 关于热插拔 需要注意的是,Oculink 接口本质上是原生 PCIe 通道的外置延伸,其工作机制与主板上的 PCIe 插槽一致,并没有统一、完整的热插拔协议。因此,在消费级笔记本 eGPU 使用场景中,Oculink 不支持真正意义上的热插拔操作。所以正确的开关机顺序是:开机时得先给外接显卡通电,再启动笔记本,关机时则正好相反,先等待笔记本完全关机,最后关掉外接显卡的电源。
2026年01月27日
15 阅读
0 评论
0 点赞
2024-12-03
不使用 MySQL Installer 安装 MySQL 的方法
目录: 1、下载安装MySQL 2、在安装目录新建配置 3、添加环境变量 4、安装 5、启动服务 6、卸载 现在 Windows 下安装 MySQL 的时候需要首先下载 MySQL Installer,通过这个软件来联网安装管理不同版本的 MySQL,但是这个软件默认是将 MySQL 安装在 C 盘的,修改安装路径的地方也藏的很隐蔽,并且由于安装时 MySQL Installer 需要联网下载安装包,这对于内网里的机器无疑就是很不友好的。但是从 Oracle 官网下载到的 MSI Installer 程序只是解压出了 MySQL 程序,并没有进行任何的环境变量配置、服务配置,那么就需要通过手动配置程序信息。 1、下载安装MySQL 最新版本下载链接:MySQL :: Download MySQL Community Server 旧版本下载链接:MySQL :: Download MySQL Community Server (Archived Versions) 选择下载某一个版本的 MSI 安装程序或者 ZIP 压缩包,下载完成之后进行安装或解压。 2、在安装目录新建配置 下文中的 MySQL 安装目录以 D:\Program\Environment\MySQL\MySQL Server 5.7 为例: 安装目录下创建一个 “data” 文件夹 安装目录下创建一个 “my.ini” 文本文件,向其中写入以下内容(文件路径根据实际修改): [mysqld] # mysql 安装目录 basedir="D:\Program\Environment\MySQL\MySQL Server 5.7" # mysql 数据库的数据存放目录 datadir="D:\Program\Environment\MySQL\MySQL Server 5.7\data" sql_mode=NO_ENGINE_SUBSTITUTION,STRICT_TRANS_TABLES # MySQL服务器监听的端口 port=3306 # 服务端编码方式 character-set-server=utf8mb4 [clinet] # 客户端编码方式 loose-default-character-set=utf8mb4 # 端口号设置 port=3306 [WinMySQLadmin] Server="D:\Program\Environment\MySQL\MySQL Server 5.7\bin\mysqld.exe" 3、添加环境变量 右键 “开始菜单” -> “系统” -> “高级系统设置” -> “环境变量” 向 Path 中添加环境变量,值为 MySQL 安装目录下的 bin 文件夹: D:\Program\Environment\MySQL\MySQL Server 5.7\bin 4、安装 上面环境变量配置没有问题的话,就可以在 cmd 窗口中使用 mysqld 命令了。 此时以管理员身份运行 cmd 窗口,执行命令来初始化相关 data 文件: # 在前面配置好的 data 文件夹下会生成初始化的文件 mysqld --initialize-insecure --user=mysql 安装 MySQL 服务: mysqld -install 5、启动服务 可以通过以下命令启动 MySQL 服务: net start mysql 或者在 ”服务“ 窗口中找到 ”MySQL“ 这项服务,右键启动即可: 服务窗口可通过在“运行”窗口输入 “services.msc” 来启动,或者右键 开始菜单 -> 计算机管理 -> 服务和应用程序 -> 服务 找到。 在启动过程中有可能会出现报错: 在 MySQL 的服务属性中可以看到这项服务可执行文件的程序路径是不正确的: 这个窗口里面没有提供可以改这个路径的地方,查了一下,得需要到注册表中改,在注册表中(Win + R 运行窗口中输入“regedit”回车打开)找到 “HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\MySQL” 这个路径,修改其中 ImagePath 的值,将引号里的路径替换为本地 MySQL 安装文件的实际路径(就只替换前面的路径,其他的不用改): 保存退出之后,再到 “服务” 窗口中刷新一下,可执行文件的路径变成了新的路径之后再次启动即可成功启动 MySQL 服务。 目前本地运行的 MySQL 服务用 root 用户就可以登录,密码为空 MySQL 修改密码: 连接到数据库之后用 SQL 语句为 root 用户更改密码: alter user '用户名'@'localhost' identified by '新密码'; 修改完之后,刷新权限信息: flush privileges; 也可以在 MySQL 控制台中使用 mysqladmin 命令修改用户密码: # 新密码不需要加引号,否则会报错 mysqladmin -u [用户名] -p password [新密码]; 6、卸载 以管理员身份执行命令: mysqld -remove 删除服务: sc delete mysql 删除注册表文件: HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\Application\MySQL HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\MySQL HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\services\eventlog\Application\MySQL 参考资料: MySQL8.0绿色版本——最纯净的安装体验(免去卸载不掉只能重做系统的‘囧‘境)_mysql8.0 绿色安装-CSDN博客 mysql 启动提示:错误2系统找不到指定文件;(本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止)_无法编辑imagepath-CSDN博客
2024年12月03日
854 阅读
1 评论
0 点赞
2023-06-25
Thinkbook16+在ubuntu下编译无线网卡驱动、替换Grub的默认主题等等
目录: 一、编译无线网卡驱动 1.1、clone 项目 1.2、安装环境 1.3、编译并加载驱动 二、更换Grub主题 2.1、下载主题文件 2.2、安装主题 2.3、修改启动顺序 三、修复启动项 四、安装搜狗输入法 4.1、添加中文语言支持 4.2、安装搜狗输入法 环境:ubuntu 22.04 一、编译无线网卡驱动 由于 Thinkbook16+ 原装的无线网卡是瑞昱的 RTL8852,装上 ubuntu 22.04 之后会因为没有驱动而无法使用 wifi 功能,这个问题一度困扰了我好长时间,由于没有网线,在此期间只能用手机的 USB 热点共享功能把手机当成 ubuntu 的无线网卡来用。 后来在网上查到一篇关于自己编译 RTL8852 无线网卡驱动的博客:thinkbook14+16+ 安装ubuntu22.04 解决wifi6驱动问题 + 加装完善让笔记本化身完全体,一劳永逸思路_ubuntu wifi6驱动_久日与至的博客-CSDN博客,于是才得以解决此问题。 1.1、clone 项目 驱动项目链接:GitHub - HRex39/rtl8852be: Realtek Linux WLAN Driver for RTL8852BE 根据系统 kernel 的版本选择不同的分支: # kernel < 5.18 选择默认主分支 git clone https://github.com/HRex39/rtl8852be.git # kernel >= 5.18 选择 dev 分支 git clone https://github.com/HRex39/rtl8852be.git -b dev 查看当前 ubuntu 系统内核的方法: uname -srm # 或者 uname -a 1.2、安装环境 进行编译之前需要安装环境: sudo apt update sudo apt install make gcc linux-headers-$(uname -r) build-essential 1.3、编译并加载驱动 编译: cd rtl8852be make -j8 sudo make install 加载驱动: sudo modprobe rtw89pci # 加载驱动 sudo modprobe -r rtw89pci # 卸载驱动 二、更换Grub主题 2.1、下载主题文件 主题文件可以在这里下载: GRUB Themes - Gnome-look.org GRUB Themes - Gnome-look.org (opendesktop.org) 以我下载到的 ubuntu.tar 为例,将其解压到 /boot/grub/themes/ubuntu (或者选择其他目录也行): # 创建目录 mkdir /boot/grub/themes mkdir /boot/grub/themes/ubuntu # 将文件到解压到创建好的目录中 sudo tar -xf ubuntu.tar -C /boot/grub/themes/ubuntu 2.2、安装主题 修改配置文件,编辑 /etc/default/grub 文件 sudo nano /etc/default/grub 找到以 "#GRUB_THEME" 开头的一行,该行用来配置主题文件路径,将其改为 "主题文件路径/theme.txt” : # 没有这一行的话直接新增即可 GRUB_THEME="/boot/grub/themes/ubuntu/theme.txt" 然后更新一下 grub 配置: sudo update-grub 最后重启,开机的时候就能看到效果了。 2.3、修改启动顺序 在 Windows + Linux 双系统的启动项中,如果在 BIOS 中选择的是 ubuntu 的话,开机进入的 grub 启动项选择中 ubuntu 系统是排在第一位的。但在双系统中一般来说都是 windows 用的比较多,所以每次启动都来选择 Windows 启动项的话也是一件挺麻烦的事情,那么可以将 windows 的系统启动项放到第一位,只有需要用到 ubuntu 的时候再去手动选择启动。 需要用到的是 Grub Customizer 这个软件,安装命令: sudo add-apt-repository ppa:danielrichter2007/grub-customizer sudo apt update sudo apt install grub-customizer 安装完成后,在 ubuntu 的应用列表中找到这个软件并启动,软件中会显示出当前所有的启动项。 修改启动顺序的话也很简单,点击选中 windows 启动项,用菜单栏上的箭头给移动上去就可以了。 PS:其实这个软件也可以用来替换主题 Grub 主题 三、修复启动项 这一项希望你用不到 ::(狂汗) 如果在修改启动项的时候,不小心操作失误把启动项修改坏了,造成 ubuntu 系统无法启动的话(我之前就是....),可以安装 boot-repaire 来进行修复: sudo apt-get install boot-repair boot-repaire 使用方法:使用 boot-repair 对 Windows + Ubuntu 双系统引导修复 - schips - 博客园 (cnblogs.com) 四、安装搜狗输入法 4.1、添加中文语言支持 打开 系统设置 -> 区域和语言 -> 管理已安装的语言,在 “语言” tab下点击“添加或删除语言” 弹出“已安装语言”窗口,勾选中文(简体),点击应用 回到“语言支持”窗口,在键盘输入法系统中,选择“fcitx” 注:如果在键盘输入法系统中,没有“fcitx”选项时,需要打开终端手动安装fcitx: sudo apt install fcitx 等安装成功之后再执行上述步骤 最后点击“应用到整个系统”,关闭窗口,重启电脑 4.2、安装搜狗输入法 从 搜狗输入法linux-首页 (sogou.com) 下载适用于 ubuntu 的 deb 安装包,然后用命令行安装(双击也可以安装,但就是少点 Linux 的灵魂): sudo dpkg -i 路径/安装包名 然后安装依赖: sudo apt install libqt5qml5 libqt5quick5 libqt5quickwidgets5 qml-module-qtquick2 sudo apt install libgsettings-qt1 这些依赖非常重要,不安装的话就会出现只能输英文而输不了中文汉字的问题。 以上步骤进行完之后,重启电脑,就可以在 ubuntu 上使用搜狗输入法了。 参考资料: thinkbook14+16+ 安装ubuntu22.04 解决wifi6驱动问题 + 加装完善让笔记本化身完全体,一劳永逸思路_久日与至的博客-CSDN博客 搜狗输入法linux-安装指导 (sogou.com) Grub Customizer首页、文档和下载 - GRUB2 管理器 - OSCHINA - 中文开源技术交流社区
2023年06月25日
1,856 阅读
0 评论
1 点赞
2023-06-19
Docker学习笔记
目录: 一、Docker 1.1、什么是 Docker 1.2、安装 Docker 1.3、更改镜像源 二、基本概念 2.1、镜像(Image) 2.2、容器(Container) 2.3、标签(Tag) 2.4、仓库(Repository)与注册中心(Registry) 二、命令 2.1、镜像管理 从 Dockerfile 构建镜像: 从远程仓库拉取某个镜像: 将本地镜像推送到远程仓库 列出本地所有镜像 列出与关键词匹配的本地镜像 查看镜像的详细信息(以 JSON 格式输出) 查看镜像的分层历史(各层的创建指令和大小) 删除本地镜像文件 删除所有悬空镜像 删除所有未被任何容器使用的镜像 将镜像保存为 tar 文件(一般用于离线迁移) 从 tar 文件加载镜像到本地 给镜像打标签: 2.2、容器启停 创建并启动容器 只创建容器,不启动 启动已经创建的容器: 在运行的容器中执行命令 停止运行中的容器: 强制停止容器: 重启容器: 2.3、容器管理 查看运行中的容器 删除已停止的容器 删除所有已停止容器 查看容器的标准输出和错误日志: 查看容器内运行的进程 试试监控容器的 CPU、内存、网络等资源使用情况 在主机与容器之间复制文件 导出容器为 tar 文件: 从 tar 文件导入为镜像: 2.4、标签管理 环境:ubuntu 24.04 一、Docker 1.1、什么是 Docker Docker是一个开源平台,用于将应用程序及其所有依赖项打包成标准的容器,从而实现“一次构建,到处运行”。 Docker 与传统虚拟机(Virtual Machine,VM)都是实现环境隔离和应用封装的技术,但它们在架构、性能、资源利用和使用场景上有本质区别。 Docker 容器除了运行其中的应用外,基本不消耗额外的系统资源,保证应用性能的同时,尽量减少系统开销。 传统虚拟机方式运行 N 个不同的应用就要起 N 个不同的虚拟机(每个虚拟机都要单独分配独占的内存、磁盘等资源),而 Docker 只需要启动 N 个隔离的“很薄的”容器,并将应用放进容器内即可。应用获得的是接近原生的运行性能。 对比维度 Docker(容器) 虚拟机(VM) 操作系统 共享宿主机内核 每个 VM 一个完整 OS 启动速度 秒级(0.1~2s) 分钟级 镜像大小 MB ~ 几百 MB GB 级 资源开销 极低 高 性能 接近裸机 有一定损耗 隔离性 进程级隔离 硬件级隔离 安全性 较弱(共享内核) 更强 可移植性 非常强 一般 运维成本 低 高 密度 单机可跑数百容器 单机只能跑少量 VM 虚拟机 = 在硬件上虚拟出一整台“电脑”,解决的是“硬件虚拟化”问题 Docker = 在操作系统上隔离出一个“进程运行环境”,解决的是“应用交付与环境一致性”问题 可以粗略类比为: 虚拟机:每个租户 独立一套房子(含水电) Docker:每个租户 独立一个房间,共用整栋楼的水电 Docker 官网:Docker: Accelerated Container Application Development Docker 官方文档:Manuals | Docker Docs 国内中文翻译文档:Docker中文文档(Docker官方文档,Docker官方教程) 1.2、安装 Docker 使用官方安装脚本: # 下载并执行Docker官方安装脚本 curl -fsSL https://get.docker.com -o get-docker.sh sudo sh get-docker.sh 或者通过添加 Docker 软件源安装: sudo apt-get update sudo apt-get install ca-certificates curl -y sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://mirrors.cloud.tencent.com/docker-ce/linux/ubuntu/ \ $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 用上面任何一种方法安装完成 Docker 之后启动: # 启动Docker服务 sudo systemctl start docker # 设置开机自启 sudo systemctl enable docker 执行以下命令,检查安装结果: sudo docker info 输出版本信息则说明安装成功。 1.3、更改镜像源 需要说明的是,以往在国内使用很普遍的腾讯云、阿里云和各个大学的 Docker 镜像站点自从 2024 年之后都陆续不可用,现在可使用的镜像源已经很少,也不确定能用多久, 开发者镜像 - 免费手机工具 站长工具 源代码查看器 Docker镜像极速下载服务 - 毫秒镜像 Docker 镜像免费公共测试访问入口 | 轩辕镜像免费版 而在国内买了云服务商的服务器的话,可以使用其提供的内网 Docker 镜像,不过只能在其服务器上使用而无法在外网机器上使用。 腾讯云:腾讯云 - 安装 Docker 并配置镜像加速源,阿里云:阿里云 - 容器镜像服务,文档中明确写 https://mirror.ccs.tencentyun.com 只支持内网访问,不再支持外网域名访问加速。 找到配置镜像源的文件(如果文件不存在请新建) /etc/docker/daemon.json ,写入如下内容: { "registry-mirrors" : [ "https://docker.m.daocloud.io", "https://docker.xuanyuan.me", "https://docker.1ms.run" ] } 之后重新启动服务: sudo systemctl daemon-reload sudo systemctl restart docker 执行 docker info 命令检查配置是否成功,如果输出内容中 Registry Mirrors 一项变成了配置的镜像源,则说明更改镜像源成功。 二、基本概念 2.1、镜像(Image) 镜像是一个用于创建容器(Container)只读模板,可以粗略理解为面向对象编程中的“类”(Class),其包含了运行一个软件所需的代码、运行环境、库、环境变量和配置文件等。 镜像具有如下特点: 不可变:镜像一旦构建完成,内容便默认不可修改 分层结构:镜像采用联合文件系统(UnionFS),以分层方式组织文件,使得多个镜像可以共享相同的基础层,从而节省空间 可分发:镜像可以被推送到远程注册中心(如 Docker Hub)或从注册中心拉取,实现跨平台使用 2.2、容器(Container) 容器时镜像的运行实例,类似于“对象”,是镜像这个“类”的一个具体实例。当启动一个镜像时,Docker 会基于该镜像创建一个容器,并在其中运行应用程序(例如Nginx、MySQL等)。 容器的特点: 可读写:虽然镜像不可修改,但容器在镜像的基础上增加了一个可写层,所有对系统的修改都发生在这个层中。 具有生命周期:可以启动、停止、暂停、删除。 资源隔离:容器之间默认隔离无法交互的,通过 Linux 的 Namespace 和 Cgroups 技术实现进程、网络、文件系统的资源的隔离与限制。 2.3、标签(Tag) 标签用于标识镜像的特定版本或变体。一个镜像可以有多个标签,但它们可能指向同一个镜像 ID(即内容相同)。 如果不指定标签,默认使用 latest 注意:latest 并不一定代表“最新稳定版”,它只是一个约定俗成的标签,实际含义由镜像维护者决定。 2.4、仓库(Repository)与注册中心(Registry) 仓库(Repository):存储同一软件不同标签(版本)镜像的集合。例如 library/nginx 是 Docker Hub 上 nginx 的官方仓库。 注册中心(Registry):存放多个仓库的服务。最常见的是 Docker Hub,也可以搭建私有 Registry(如 Harbor、GitLab Container Registry)。 示例完整镜像名: docker.io/library/nginx:1.25 其中: docker.io:Registry 地址(默认可省略) library:命名空间(官方镜像通常省略为 nginx) nginx:仓库名 1.25:标签 二、命令 2.1、镜像管理 Dockerhub 地址:Docker Hub Container Image Library | App Containerization 国内镜像: 从 Dockerfile 构建镜像: 参数: -t 指定镜像标签 --file 指定 Dockerfile 路径,不存在此参数时默认从当前路径下构建 docker build -t <tag> ./ 从远程仓库拉取某个镜像: 镜像标签 <tag> 可省略,默认使用 latest docker pull <image><:tag> 如果没有配置镜像源只是想要临时通过某个(docker.xuanyuan.me)镜像源拉去镜像: docker pull docker.xuanyuan.me/<image><:tag> 将本地镜像推送到远程仓库 docker push <image> 列出本地所有镜像 参数: -a 查看所有镜像 -q 只显示镜像 ID docker image list # 等价于: docker image ls # 等价于: docker images 列出与关键词匹配的本地镜像 docker image list <关键词> # 等价于: docker image ls <关键词> # 等价于: docker images <关键词> 查看镜像的详细信息(以 JSON 格式输出) docker image inspect <image> 查看镜像的分层历史(各层的创建指令和大小) docker image history <image> 删除本地镜像文件 参数: -f 强制删除 -a 删除所有未使用镜像 <image> 可以是文件名,也可以是镜像 ID docker image rm <image> # 简写: docker rmi <image> 注意:当存在依赖于该镜像创建的容器时,镜像文件默认是无法被删除的。尽管可以使用 -f 参数来强制删除一个存在容器依赖的镜像,但并不推荐。正确的做法是,先删除依赖该镜像的所有容器之后再删除镜像。 删除所有悬空镜像 悬空镜像:Dangling Images,即没有标签且未被容器引用的镜像,通常出现在重新构建同名镜像后,旧镜像失去标签但仍存在) docker image prune 删除所有未被任何容器使用的镜像 docker image prune -a 将镜像保存为 tar 文件(一般用于离线迁移) docker save -o <file.tar> <image> 从 tar 文件加载镜像到本地 docker load -i <file.tar> 给镜像打标签: docker tag <image> <tag>qq 2.2、容器启停 Docker 运行容器前需要本地存在对应的镜像(Image), 如果本地不存在该镜像,Docker 会尝试从配置文件(/etc/docker/daemon.json)的注册中心中下载。 创建并启动容器 参数: -d 后台运行 -it 交互式终端 --name 指定容器名 -p host:container,端口映射 -v /host:/container,卷挂载 --restart 重启策略 docker run [OPTIONS] <image> 例如: docker run -d --name nginx-app-test -p 8080:80 nginx 只创建容器,不启动 参数: --name 容器名 -v 卷挂载 docker create -i <container> --name <name> 启动已经创建的容器: 参数:-i 交互式启动 docker start -i <container> 在运行的容器中执行命令 参数: -it 交互式终端 docker exec -it <container> <command> 停止运行中的容器: 优雅停止容器,会向容器发送 SIGTERM,等待退出 参数:-t 停止等待时间(单位为秒) docker stop -t <time> 强制停止容器: 会向容器发送 SIGKILL。同Linux的kill -9 docker kill <container> 重启容器: 参数:-t 停止等待时间(单位为秒) docker restart <container> 2.3、容器管理 查看运行中的容器 参数: -a 查看所有容器 -q 只显示容器ID docker ps # 等价于: docker container ls 删除已停止的容器 docker rm <container> 若要删除的容器仍在运行,需加上参数 -f: docker rm -f <container> 删除所有已停止容器 docker container prune 查看容器的标准输出和错误日志: 参数: -f 跟踪日志 --tail <n> 显示最后 n 行 docker logs <container> 查看容器内运行的进程 docker top <container> 试试监控容器的 CPU、内存、网络等资源使用情况 docker stats <container> 在主机与容器之间复制文件 docker cp ... 从主机复制文件到容器: docker cp <主机路径> <容器名或ID>:<容器内路径> # 例如: docker cp ./app.conf myapp:/etc/app.conf 从容器复制文件到主机: docker cp <容器名或ID>:<容器内路径> <主机路径> # 例如: docker cp myapp:/var/log/app.log ./ 导出容器为 tar 文件: 参数:-o 指定输出文件名 docker export <container> -o <file.tar> 从 tar 文件导入为镜像: docker import <file.tar> 2.4、标签管理 给镜像打标签: docker tag <image> <tag> 删除特定标签: docker rmi <image>:<tag> 参考文档: Docker - 马燕龙个人博客 云服务器 搭建 Docker_腾讯云 Docker 教程 | 菜鸟教程
2023年06月19日
3,582 阅读
0 评论
2 点赞
2023-05-30
Thinkbook16+安装指纹模块
目录: 废话 指纹模块本体 拆机 安装前试验、装驱动 安装 请注意!!!此文中的提到的改装有可能会导致产品失去保修,改装有风险,下手请谨慎!!! 废话 手上这台 Thinkbook 16+ 是年后换的,刚开始还出现核显时不时抽风掉驱动的问题(后来排查下来是由于 BIOS 不稳定导致的,在更新了官网上 J6CN43WW 版本的 BIOS 之后就没这个问题了),这几个月用下来,简直堪称我的“梦中情本”。 R7-6800H 的单核多核性能不算顶尖但也十分够用,6400 Mhz 的 高频 DDR5 内存可以让核显 Radeon 680M 满血发挥,散热也很够用(毕竟 RTX2050 版本也是用的同一套模具,用来压核显还是不成问题),机身外围的接口配置堪称豪华:TypeC 接口、SD 卡槽、HDMI 接口、RJ-45 网线接口、2 个 USB3.0 接口都不缺,主板上还有两个 M.2 插槽,16寸的 2K 屏幕素质也不错。 这个本子最巧妙的设计是机身右侧隐藏式的 USB2.0 接口(堪称是 “2022 年笔记本最佳设计”),专门用来插无线鼠标、无线键盘等设备的接收器,从而避免了接收器插在外面上显得很突兀的问题。并且这个接口的位置附近就有一个直连 CPU 的 M.2 插槽,所以这个接口的还可以开发出一个新用途就是从主板上的一个 M.2 接口接根 Oculink 线缆,通过这个孔位延伸出来外接显卡,从而来提高游戏性能。有一说一外接显卡能用这样一种低成本的方式来实现可谓是相当诱人,要知道现在大部分扩展显卡的方案光是成品的显卡扩展坞价格就相当于大半张甜品卡了,并且机器还必须要有雷电接口才能实现。 不过,这个本子的缺点倒也不是没有。首先,个人觉得 A 面 和 C 面右下角的两个竖向排列的 “Lenovo” Logo 是真的丑,充满了突兀感,如果没有这两个 Logo 的话说不定还能让本子的颜值再提升一个层次;并且机身颜色只有一个黑灰色配色而没有银色配色可选就有点可惜了(感觉银色 + 圆润金属外壳就是我的 XP 了 :@(脸红) );1.8KG 的机身重量显然已经摆脱了轻薄本的范畴,鉴于它还是比大部分游戏本要轻一点,而且也没有游戏本的傻大黑粗,倒是可以接受。 除此之外,解锁时只有前置摄像头的人脸识别,这个本子也不支持指纹识别,算是最大的遗憾了。 欸~不过就在不久前,我在淘宝上无意中发现了有 Thinkbook 14/16+ 的指纹模块在卖,产品简介里卖家也大概介绍了安装方法。在 B 站上搜了搜,看到有不少安装成功的视频,小小研究一下之后感觉安装好像不是很难,果断下单买来一个打算试试。 指纹模块本体 到手之后是一个袋子,里面有几根排线加指纹识别模块本体: 拿出来看指纹模块的成色还是挺新的,指纹模块正面的蓝色贴纸下面是一块胶,把蓝色的贴纸撕掉之后就可以粘在主板上达到固定的效果,在排线上还印着联想的 logo,不太好判断这是拆机的还是其他联想电脑的配件存货: 指纹模块上连接排线的底座位于指纹模块的背面,连接排线时14+ 和 16+ 使用的排线也是不一样的,14+ 使用异面排线,16+ 使用同面排线: 连接时应该确保排线的每根引脚能正确地对应接触到指纹模块底座上的排线,因为卖家发过来的排线尺寸并不是与排线底座完全相同的,实际要更窄一点,需要看准了安装,否则没有正确连接上排线的话指纹模块是识别不出来的。安装了一个小时后还没有在设备管理器中找到指纹模块设备的大冤种如是说到。 :@(喷水) 组装好指纹模块和排线之后开始拆机安装。 拆机 这台笔记本的卡扣很多,而且扣的很牢固。这不是我第一次拆这台笔记本了,但是拧掉笔记本 D 面外壳的全部螺丝之后还是无法直接取下来后盖,我的办法是用撬片从转轴处一点一点地撬,就别想着大力出奇迹了,太大力的话可是真会出来一个“奇迹” ::(滑稽) 。 最后一点一点把后盖周围的卡扣撬开之后,缓缓的移动外壳多试探几下就可以慢慢取下来外壳了。主板上已经预留了指纹模块的排线接口,位于隐藏式 USB 接口那边的一个小主板上: 安装前试验、装驱动 先将指纹模块的另一端排线接到预留的指纹排线接口上,开机打开设备管理器看一下能不能识别到: 在“其他设备”一栏中出现了一个“Goodix FingerPrint Device”的新设备,这就说明识别到了这个设备(不同卖家的指纹模块的设备型号不一样那么识别出来的名字应该也是不一样的,上面出现的设备名仅供参考),设备图标旁边有一个感叹号是因为没有安装驱动,Window 系统无法正确识别这个设备,那么安装一个驱动来试试。 卖家是给了一个驱动的,我当时并没有下载,因为想着驱动问题应该可以通过 Window 更新来解决,但是尝试之后才发现以前安装驱动很方便的 Windows 更新这次竟然也不管用了,不管怎么更新都安装不上驱动。于是我找到卖家通过百度云分享过来的驱动,结果驱动文件超过了网页版的下载大小上限,必须要用客户端下载,鉴于百度云感人的下载速度,我老早就从百度云脱坑了,所以根本不想再下载百度云客户端,就放弃了。 反正指纹模块的排线上不是还有 “Lenovo” 的 logo 嘛,那我就想着在 thinkpad 官网看能不能搞个驱动,于是就在一众 thinkbook 笔记本的驱动列表中一个一个查指纹驱动名字和版本号有没有包含 “Goodix FingerPrint Device” 类似字样的。哎嘿,还真让我给找到了联想_ThinkPad|ThinkCentre|ThinkStation服务与驱动下载_联想指纹驱动程序(Windows 10 64-bit) (lenovo.com.cn): 结果歪打正着地安装之后正好能用,设备管理器中设备旁边的感叹号消失了: 然后进入 设置 -> 账户 -> 登录选项 看到指纹模块出现了 “添加手指” 的选项: 至此,说明指纹模块没有问题,现在可以正式往主板上安装了。 安装 需要说明的是,为了保险起见,一般拆机时建议先给主板断电。可以在 BIOS 中开启“维修模式”,这个功能会直接关闭电池的供电,在下次插电时才会恢复电池供电。如果对这个模式断电不放心的话,也可以直接拔掉在主板上的电池排线(撕掉电池那块的黑色绝缘胶布之后,看主板上从电池那个位置延伸出来的一条五颜六色的排线就是了),如果徒手比较难从排线插座上取下来排线的话建议也不要大力出奇迹,找个细一点的物体从露出的排线下面往出来推。 接下来先把固定转轴黑色铁片的 3 颗螺丝拧下来,抬起转轴,角度不能太大,否则会把后面的外壳顶变形。 取掉指纹模块排线接口旁边的的黑色排线,拧掉小板上的所有螺丝之后,从接触外壳那一侧的接口轻轻把小板子取下来,同时还得小心另外一侧的一根排线。 把小的那块板子完全取下来之后电源键的位置上面还有铁片固定,拧掉螺丝取下来贴片就看到电源键了: 现在电源键上是用胶粘上去的一个没有任何功能的透明塑料片: 取下来这个塑料片之后按照原来的位置把之前组装好排线的指纹模块粘上去,撕掉背面的蓝色贴纸将模块粘到下面的板子上,顺带给露出来的一面贴上一层塑料胶带以达到绝缘的效果: 把小板安装上,最后再想办法把指纹模块排线的另一头给绕上去,插到小板上预留的接口里面: 连接好其他排线之后,装上外壳,就算大功告成了。放上一张最后的成品图: 老实说,我在买之前就没太搞明白,既然连人脸识别都给标配上了(要知道 Windows 的 人脸识别可是另外需要特殊的摄像头硬件支持,并不是随便一个摄像头就可以用人脸识别的)但是却连指纹识别都不给。但是当我在买来重装系统之后,在官网下载驱动时竟然看到驱动列表上提供了指纹识别模块的驱动!!这就很耐人寻味了。 :@(无所谓) 以目前的情况来看是在主板上是有预留的指纹识别模块的接口,所以个人猜测是大概率是这款 Thinkbook 在设计阶段的方案就包含了人脸和指纹两种解锁方式,到了最后量产阶段为了省成本给阉割掉了这个本子的指纹识别功能。 不过既然保留了指纹接口,那么对于有能力的用户来说,只要能买到对应的硬件就可以自己动手安装指纹模块,也算是一种不错的选择了。
2023年05月30日
4,655 阅读
6 评论
1 点赞
2022-11-23
折腾随身WiFi过程中的亿点点小记(下):Debian部分优化/其他
本篇博客篇幅较长,建议结合目录查看! 目录: 一、Debian 1.1、添加 RNDIS 驱动 1.2、解决Debian 下无法使用 SIM 卡上网的问题 1.3、Debian 连接 WiFi 1.4、解决 “无法安全地用改源进行更新,所以默认禁用该源” 报错 1.5、修改默认网关地址 1.6、安装 xfce 桌面并通过 VNC 访问 1.7、安装蓝牙 二、改装材料尺寸(仅供参考) 一、Debian 1.1、添加 RNDIS 驱动 装好 Debian 之后,插在电脑上用 SSH 是连接不上的,需要配置一下 RNDIS 驱动,在设备管理器中找到这个设备: 右键“更新驱动” -> 选择“浏览我的电脑以查找驱动程序” -> “让我从计算机上的可用驱动程序列表中选取” 选择加载全部,然后左侧选择“Microsoft”,右侧选择“基于远程 NDIS 的 Internet 共享设备” 无视警告,选是: 1.2、解决Debian 下无法使用 SIM 卡上网的问题 给随身 WiFi刷入 Debian 之后,原来的基带也被新系统自带的基带覆盖,所以可能会出现无法使用 SIM 卡上网的问题,要解决的话问题可以这么搞: 从 QPT 备份出来的分区镜像中找到 NON-HLOS.bin 文件,修改后缀格式为 “.img”; 用 DiskGenius 挂载打开这个文件,并复制出来 image 文件夹中的文件,主要是文件名为 “modem” 与 “wcnss” 的十几个文件 用导出的文件替换掉 Debian 系统 /usr/lib/firmware 目录下面的同名文件; 最后重启一遍系统即可 Diskgeniue专业版下载:『DiskGenius v5.4.2.1239汉化版-破解全功能专业版 | 花园博客 (wcstu.cn)』 1.3、Debian 连接 WiFi 随身 WiFi刷好 Debian 之后,默认是开了热点的,所以连接 WiFi 前需要关掉热点: sudo nmcli d disconnect wlan0 然后使用如下命令进入图形化界面配置网络: sudo nmtui 选择要连接的 WiFi 即可。 1.4、解决 “无法安全地用改源进行更新,所以默认禁用该源” 报错 修改源: sudo apt edit-sources # 或者: sudo nano /etc/ 国内软件镜像源: deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main non-free contrib deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye main non-free contrib deb https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security/ bullseye-security main deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main non-free contrib deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-updates main non-free contrib deb https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main non-free contrib deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ bullseye-backports main non-free contrib 修改完成之后,在执行 “apt update” 命令更新软件源时,可能会报错: 这个问题多数时候可忽略,但是少数情况下就会影响软件的安装,比如安装 xfce 桌面环境时总是会报错导致安装失败,暂时不清楚对其他软件安装有多少影响。 可以看到,报错信息中提示其中一个软件源 “http://repo.mobian-project.org” 有错误,这个是 mobian (就是适配移动端的 debian 系统)的软件源,其位于 /etc/apt/sources.list.d/mobian.list 文件中,但一般修改软件源是修改的 /etc/apt/sources.list 这个文件,所以修改软件源并不能解决这个问题,而且我在国内各个镜像站点也没有查到 miban 的镜像,所以干脆将其注释掉。后来发现还有个有更省事的办法,直接用执行如下命令,注释掉这个源: sudo sed -i '1c # deb http://repo.mobian-project.org/ bullseye main non-free' /etc/apt/sources.list.d/mobian.list 1.5、修改默认网关地址 编辑 “/etc/dnsmasq.conf” 文件,在文件末尾找到如下两行,第一行是地址,修改IP地址的三个部分: 1.6、安装 xfce 桌面并通过 VNC 访问 参考教程:『如何在Debian 9安装VNC | myfreax』 debian安装桌面环境(讲解debian安装kde图形界面) - 长城号 (changchenghao.cn) # 安装 xfce 桌面环境: sudo apt update && sudo apt install xfce4 # 安装字体,否则进去系统之后字体全是方块: sudo apt install ttf-wqy-microhei ttf-wqy-zenhei xfonts-intl-chinese # 安装 VNC: sudo apt install tigervnc-standalone-server 在用户目录 “~/.vnc/” (没有就新建一个)下新建一个配置文件 “config”, sudo mkdir ~/.vnc && sudo nano ~/.vnc/config 用自己熟悉的方式编辑这个文本文件,添加如下内容: geometry=1440x900 localhost=no 保存退出即可,接下来启动 VNC 服务: # 启动 sudo vncserver 控制台会提示:" You will require a password to access your desktops.Would you like to enter a view-only password (y/n)? ",输入 “y” 回车即可按照提示设置密码即可。 启动完成之后使用 VNC Viewer 就用 IP 地址可以连接到随身 WiFi 的 VNC 服务了。 1.7、安装蓝牙 apt install bluetooth 根据这篇博客 『debian下蓝牙适配器的配置和使用 - qiaoqiao2003 - 博客园 (cnblogs.com),研究着玩了一下,随身 WiFi的蓝牙功能是正常的,但是暂时没想到在 Debian 下有什么用...... ::(挖鼻) 二、改装材料尺寸(仅供参考) 改装材料这块我只罗列出我用到的一些,仅供参考,不一定要跟我一样,具体根据自己的情况来选择 散热需要的风扇尺寸 : 2510/3007/3010 风扇金属防护铁网:2.5cm/3cm 固定风扇螺丝尺寸:M2.5 x 18 温控开关:TB02微型温控开关45度常开,KSD9000 到手之后感觉尺寸太大就放弃用了 参考资料: UFI 系列 4G WiFi 棒研究记录 | 泠泫凝的异次元空间 410刷debian避坑指南 来自 Mcitem - 酷安 Debian基础使用 · OpenStick项目 · 看云
2022年11月23日
2,272 阅读
0 评论
2 点赞
2022-11-16
折腾随身WiFi过程中的亿点点小记(上):备份刷机
本篇博客篇幅较长,建议结合目录查看! 目录: 一、驱动与备份工具 二、备份原厂固件 2.1、进入9008 2.2、开始备份固件 2.2.1、Miko 3.2.2、QPT 三、开启 ADB 以及 ROOT 3.1、开启 ADB 功能 3.2、Root 设备 3.3、修改切卡密码 四、备份/恢复基带 4.1、备份 4.2、恢复基带 五、刷机 貌似这东西在去年就有大佬拿来刷机玩了,我是七月初的时候在 B 站上看到关于随身 wifi 的搞机视频,鉴于当时因为疫情快递进不来小区,所以观望了一会,后来疫情好点了买了几个来玩。然后....鸽了几个月才写出来这篇小记::(小乖) 在研究这个东西的过程中,阅读了很多热心大佬写的教程,在此感谢酷安诸多大佬的教程与固件包,RESPECT!!!具体引用到的教程地址都会贴在对应的部分,这些教程集中在酷安的随身 wifi 版块与一些博客中,写的都很不错,但是由于太分散,对于新手来说入门时一脸懵逼完全无处下手(我不信就我一个人这样::(挖鼻)),所以用此篇博客来总结串联一下相关的教程,并结合我瞎捣腾的一点经验对教程中未提到的作出一些补充。 闲言少叙,下面进入正题。 首先,随身 wifi拿到手之后请务必备份!刷机不备份,变砖两行泪!!! 备份全固件!备份分区镜像!备份基带文件! 备份的好处就是可以放心给随身 wifi刷机,完全不用担心随身 wifi变砖的问题,变砖之后恢复备份即可救砖。 一、驱动与备份工具 备份之前需要安装相关的软件环境、驱动等,在这篇博客 『设备刷机需要的软件 | 宁宁's Blog (momoe.ml) 』中介绍得很全面。当然也不需要全部用到,只需要了解这么几个软件即可: MiFlash:用来安装 ADB 驱动 9008 驱动:顾名思义 Miko Service Tool(以下称为 Miko):全备份工具,将所有分区备份为一个 “bin” 格式的文件 “Qualcomm Premium Tool”(以下称为 QPT):备份工具,与上面 Miko 的区别是将分区分别备份为 “img” 、“mbn” 文件 星海SVIP(以下称为星海):备份基带,备份成一个 “qcn” 文件 ARDC: 在电脑上投屏显示安卓系统的屏幕画面。 DiskGeniue Pro:用来编辑修改 “img” 镜像文件 文件下载链接:随身wifi文件 - 123云盘 (123pan.com) 需要注意的是,Miko 与 QPT 安装之后需要再破解激活,具体方法可查看对应安装文件目录下的文本文件。 二、备份原厂固件 2.1、进入9008 备份固件需要随身 wifi在 9008 模式下进行。 9008 模式是高通设备的最底层的联机模式,它相对于 Recovery、Fastboot 和 Android 系统是独立的,在这个模式下可进行救砖、备份等操作,联机后表现为序列端口(COMxx),在设备管理器下的 “端口” 选项中查看: 对于大部分的随身 wifi来说,都有这么一个恢复按钮: 在断电情况下,按住这个按钮将随身 wifi连接到电脑即可进入 9008 模式,这种方法适用于目前市面上能买到的大部分随身 wifi。除此之外还有一种短接引脚的方式也可以进入 9008,但是我查到的方法没有一个统一的答案,所以这种方法也就不再细说。 当然也有办法用 adb 命令进入 9008 模式: adb reboot edl 2.2、开始备份固件 教程:『UFI 系列 4G WiFi 棒研究记录 | 泠泫凝的异次元空间 (lxnchan.cn)』 由于备份软件有两个,所以以下分开来说吧。 2.2.1、Miko 备份: 备份出来的文件是 “.bin” 格式,如果觉得备份文件太大占空间的话可以打包成压缩文件保存,此时文件所占的空间会小很多。 恢复: 3.2.2、QPT 可以将整个固件按分区备份成多个镜像文件,后续进行开ADB(如果随身 wifi默认没有开ADB的话)、修改配置、给 openwrt/Debian 替换基带等操作需要用到其中的镜像文件。 备份: 完成之后窗口左下角会有提示: 恢复: 这个功能一般只用来恢复某个分区而不是整个固件,以 “boot” 分区为例: 同样的,完成之后左下角会提示。 这里说一个大概率会碰到的问题,就是 QPT 或 Miko 会出现如下报错: 这个问题我碰到了好多遍,明明随身 wifi已经在 9008 模式下了,却还是莫名其妙地报错,后来我发现了规律,即在 9008 模式下的随身 wifi不能被软件重复读取,随身 wifi进入 9008 模式之后,被 Miko 读取过一次分区,下次不管是 Miko 还是 QPT 读取分区,必会出现报错。 那么此时只需要拔掉随身 wifi重新进一遍 9008 模式即可,如果这样依然有报错的话,假如之前打开操作过与 ADB 相关的软件,在任务管理器 —> 详细信息中结束掉 “edl” 这个进程,再重进 9008 即可。 PS:貌似报错提示中失败的单词 fail 还是拼错的,拼成了 fial....:@(无奈) 三、开启 ADB 以及 ROOT 3.1、开启 ADB 功能 如果买到手的时候就是开了 ADB 的,那么这个步骤即可跳过。 检查随身 wifi是否开启 ADB 的方法:开机状态下,执行 adb 命令: # 此命令意为查看当前连接 adb 的设备 adb devices 如果设备列表中出现有这样的设备就说明已经开启了 ADB: 否则就是需要手动开启 ADB 功能,手动开启的过程也不难。简单来说,只需要修改 system.img 镜像中的几个文本文件,然后再刷回去即可。当然,在酷安社区中也有人直接刷其它人提供的 system.img 镜像文件,要使用哪种方式请自行甄别。 参考教程:『高通芯片的随身Wi-Fi开启adb 来自 厚德载物HoldZywOo - 酷安 (coolapk.com)』 DiskGenius 专业版下载地址:『DiskGenius v5.4.2.1239汉化版-破解全功能专业版 | 花园博客 (wcstu.cn)』 system.img 来自于之前 QPT 备份的镜像文件,用 DiskGeniue 打开这个 img 文件(把镜像文件拖进窗口打开,或者通过 “磁盘” —> “打开虚拟磁盘文件” 打开),将这三个文本文件右键复制出来: 根目录(点击主分区即可看到):build.prop 根目录:build.prop.bakforspec 子目录 /vendor/Default/system/:build.prop 用文本文件打开,在大概179行的位置添加 “,adb”(逗号是英文逗号,不要打成中文逗号): 然后将改好的文件拖进 DiskGenius 打开的 system.img 镜像文件里面复制替换掉原文件,需要注意的是 DiskGenius 普通版没有该功能,需要专业版。 最后将修改完成的 system.img 镜像文件用 QPT 重新刷入即可完成,刷入方法参考前面 QPT 恢复部分。 3.2、Root 设备 参考教程:『高通骁龙芯片的随身wifi入门刷机教程 来自 伏莱兮浜 - 酷安 (coolapk.com)』 Root 设备是为了备份基带,也可安装 Magisk 相关模块玩免流。这一步需要用到前面备份的 “boot.img” 镜像文件,以及一些 apk 文件,下载地址:随身wifi文件 - 123云盘 (123pan.com)。 修补 boot.img 镜像需要用到 ARDC 操作随身 wifi,打开 ARDC 之前需要关掉后台的 adb 软件,并且在任务管理器中结束掉 adb 进程,否则有可能会连接设备失败。弄好之后接下来按照以下步骤: 连接到随身 wifi之后,首先将 “桌面”、“ES 文件浏览器”、“Magisk” 这几个 apk 文件拖到窗口中安装,等几秒钟安装好之后,点击鼠标右键返回就会弹出主页的选择窗口,“Launcher” 就是刚才安装的桌面,选择始终用这个软件打开主页。 回到桌面之后打开 ES 文件浏览器,进入一个目录进行接下来的操作,以 “下载” 为例(当然也可以是其他目录)。同样的,像安装 apk 一样将之前 QPT 备份的 “boot.img” 拖进来,等几秒之后刷新,文件就被复制到这个目录了; 然后退出 ES 文件管理器,打开 Magisk,点击首页 安装 -> 下一步 -> 选择并修补一个文件 选好刚才上传的 boot.img 文件,并选择 “标准安卓方式”,然后点击 “开始”,等待出现 “All done” 提示出现 此时打开 ES 文件浏览器,可以看到在原来的目录下生成了新的修补好的 boot 镜像文件(为了之后操作方便,可将长按文件将其文件名修改得简单一点)。接下来需要用到 adb 工具,点击 ARDC 标题栏末尾的 “<<” 标记打开自带的 adb工具,在 CMD 字样右侧的输入栏中执行 adb 命令(当然可以用其他的 adb 环境,用这个只是方便而已)。 最后将修补好的文件导出到电脑上,在输入栏中输入如下命令,回车执行,等下方日志提示完成: # “Magisk.ing”与“E:/Download” 按照实际路径来 adb pull /sdcard/Download/magisk.img "E:/Download" 将修补好的 boot.img 镜像文件导出来以后,接下来就简单了,在 9008 模式下用 QPT 把镜像文件重新刷到 boot 分区即可完成。 或者用教程中提到的另外一种方式也行,即在 fastboot 下通过命令行的方式刷入,还是在这个输入栏中执行: # 将随身 wifi重启到 fastboot 下 adb reboot bootloader # 执行刷写 boot 分区的命令, # "E:download/magisk.img"是镜像文件实际的路径,可以通过把文件直接拖入输入框的方式自动生成路径 fastboot flash boot "E:download/magisk.img" 执行之后等待几秒,下方日志提示 Finished 的时候,执行重启命令即可(也可以手动插拔随身 wifi): fastboot reboot 随身 wifi重启进入系统之后打开 Magisk,这一次进入可能得多等待一会,如果首页下方有如下图标说明 root 成功: 3.3、修改切卡密码 其实在自带的安卓系统中,很多设置项都写进了 system.img 镜像中的几个配置文件中,包括切卡密码,主要是镜像中的这几个文本文件: 根目录(点击主分区即可看到):build.prop 根目录:build.prop.bakforspec 子目录 /vendor/Default/system/:build.prop 所以要查看切卡密码的话也很简单,首先用 DiskGeniue 挂载 system.img 镜像文件,找到这三个文件中的任意一个,复制出来后用文本文件打开,搜索 “persist.ufi.ft.simswitchpword” 属性即可,等号后面的值就是当前切卡密码: 要修改的话将这三个文件的该属性值都修改掉,然后替换掉 system.img 镜像中原来的文件,再用 QPT 刷回去即可。 或将随身 wifi重启到 fastboot 模式下用命令行刷入: # 将随身 wifi重启到 fastboot 下 adb reboot bootloader # 执行刷写 boot 分区的命令, # system.img 换成实际路径,可以通过把文件直接过来方式自动生成 fastboot flash system system.img 这就是修改切卡密码的办法,如果是其他设置项的话也是同理。设置项命名虽然都是英文,但基本能明白个大概的意思....吧::(狗头)::(狗头) 四、备份/恢复基带 备份基带使用星海这个软件。 参考教程:『随身wifi先机W001和先机003mb备份与刷机恢复基带流程 来自 UTF16 - 酷安 (coolapk.com)』 备份操作进行之前,先用 ARDC 连接随身 wifi打开 Magisk。 4.1、备份 需要注意的是,在最后一步执行备份 QCN 的操作时,弹出窗口选好基带文件保存位置后,当左边提示 “连接手机...” 的时候,随身 wifi端将会弹出 “Shell 申请获取超级用户” 的提示,选择 “允许”。如果没来得及点允许的话,在 Magisk 里面重新给 Shell 赋予 root 权限,然后再操作一遍即可。 4.2、恢复基带 首先用命令将随身 wifi重启到 fastboot 模式(或者用 “搞机助手/随身wifi助手”): adb reboot bootloader 恢复之前,需要先将原有的基带擦除: 然后将随身 wifi重启进入系统,接着如下步骤恢复即可: 五、刷机 随身 wifi自带安卓系统,如果不使用自带的 esim 套餐,也不用 Magisk 玩免流的话,那可以刷 Debian/openwrt 系统玩一玩。 Debian/openwrt 源于 HandsomeHacker 大佬的 『OpenStick Project · GitHub』、『HandsomeMod · GitHub』 项目,在此向大佬致敬!!其官方 wiki 地址为:『OpenStick项目 · 看云 (kancloud.cn)』。后续也有酷安的其他的热心大佬根据此项目编译了不同版本的系统固件,在酷安的随身 wifi 话题下能找到很多。 这里以酷安 苏苏小亮亮 编译的固件为例,来说说如何刷机。 固件发布地址:『来自 苏苏小亮亮 - 酷安 (coolapk.com)』,下载地址:ufi_rom - 123云盘 (123pan.com) 相对于之前的备份操作,刷机反而是最容易的。刷机只需要使随身 wifi进入 “fastboot” 模式(在 adb 窗口运行 “adb reboot bootloader” 命令或者使用 “搞机助手/随身 wifi 助手” 这样的工具),然后运行刷机包目录下的刷机脚本 “flash.bat” (Linux 系统执行 “flash.sh” ),最后按照窗口中的提示操作即可刷机。 刷完机之后一般会自动重启,如果没有重启的话手动插拔一下。并且,安装完之后最好用 passwd + 用户名 改一下密码。 这个 Debian 系统连接 ssh 的地址是 192.168.68.1,用户名是 “root/user“,密码是“1”;openwrt 系统首页地址为 192.168.1.1,用户名为 “root”,无密码。需要说明的是, 这两组账户名与密码不一定适合于其他人编译的固件,不同的大佬编译的固件的账号密码是不同的,具体请参考其固件说明。 除此之外,还有一种情况,就是刷机包中只提供了 boot.img 与 roofs.img 这两个镜像,那么这个时候可以用上之前的刷机包,在其目录下用这两个文件替换同名文件,然后执行 flash.bat 刷机脚本就行了。当然前提是使用的 boot.img 文件与随身 wifi是匹配的,否则就会变砖,这一点需要注意。 文件下载:随身wifi文件 - 123云盘 (123pan.com) 参考资料: OpenStick Project · GitHub OpenStick项目 · 看云 (kancloud.cn) UFI 系列 4G WiFi 棒研究记录 | 泠泫凝的异次元空间 (lxnchan.cn) 高通骁龙芯片的随身wifi入门刷机教程 来自 伏莱兮浜 - 酷安 (coolapk.com) 随身wifi先机W001和先机003mb备份与刷机恢复基带流程 来自 UTF16 - 酷安 (coolapk.com) 设备刷机需要的软件 | 宁宁's Blog (momoe.ml)
2022年11月16日
9,717 阅读
6 评论
3 点赞
2022-06-03
记录一下写论文过程中新学会的一些Word使用技巧
目录: 一、设置子标题 二、在不同的页设置不同的页眉/页码/页脚 三、添加的图片只占一行位置,无法完全显示出来 四、将文章中的英文、数字的字体格式一键设置为Times New Roman 五、在文档任意一个位置上开始之前的编号 六、快捷键: 七、绘制三线表 一、设置子标题 选中要设置为标题的行 开始 -> 段落上面找到多级标题的图标: 选择一个设置的多级标题样式: 就出现了标题,然后更改标题级别使其成为子标题: 此时标题编号可能不是我们想要的,所以还需要调整一下标题编号: 标题更改成功: 二、在不同的页设置不同的页眉/页码/页脚 在需要页眉/页码/页脚页码的页上第一行文字前(或是上一页的最后一行)添加分页符(布局-> 分隔符 -> 下一页): 插入页眉/页码/页脚,此时插入的页眉/页码/页脚将以这个分页符为分界被分成了两部分,选中前面不用的页眉/页码/页脚,取消这个选项(引用 -> 链接到前一条页眉/页脚): 接下来删除不用的页眉/页码/页脚即可,还有多出来的分页符 三、添加的图片只占一行位置,无法完全显示出来 就像这样: 方框为图片实际占的位置,但显示效果上只占了一行,图片不能全部显示出来 原因:图片的段落格式中设置了行距为“固定值” 解决办法:选中图片,在段落格式设置中把行距设置为单倍行距就可以解决问题 四、将文章中的英文、数字的字体格式一键设置为Times New Roman ctrl + A 选中全文,在字体设置中分别设置中文字体与英文字体的格式即可 还有个简单粗暴的方法,选中全文将全部字体设置为Times New Roman即可,中文不会受到影响。 五、在文档任意一个位置上开始之前的编号 先将这个编号的样式设置成与上一个编号相同的样式与级别 右键 -> 设置编号值(光标要放在标题一行或者选中标题),选择“继续上一列表”,填写需要开始的编号 六、快捷键: 格式刷: ctrl + Shift + C 复制格式 ctrl + Shift + V 粘贴格式 重复上一次操作:F4 七、绘制三线表 选中整个表格,右键 -> 表格属性 -> 边框和底纹 只保留表格的上下框线,并设置其宽度为 0.75 磅 再选中表格的第一行,右键设置其下框线即可:
2022年06月03日
1,873 阅读
1 评论
0 点赞
2022-02-14
【新手向】如何下载安装激活 Office
目录: 前言 一、Office Tool Plus 安装之前需要做的事 二、下载安装 Office 三、激活 Office 3.1、使用 Office Tool PLus 激活 3.1.1、自动激活(推荐) 3.1.2、手动激活 3.2、命令行激活 3.3、判断 Office 是否激活 四、疑难解答 前言 这是第二篇,第一篇是 Windows 篇,链接在这:【新手向】如何激活 Windows 系统 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 这一篇来讲讲 Office 的下载、安装与激活。 提前说明:使用本博客提供的方法激活的产品并不是正版,正版请前往微软商城购买 Windows 系统微软官方购买链接:https://www.microsoft.com/zh-cn/windows/get-windows-10 Office 套件微软官方购买链接:https://products.office.com/zh-cn/compare-all-microsoft-office-products 一、Office Tool Plus 下载 Office 需要用到一个工具 —— Office Tool Plus,这是一个强大且实用的 Office 工具,其基于 Office 官方部署工具 和 OSPP 制作,可以很方便地部署安装部署 Office,内置的迅雷引擎也可以更快地下载官方原版 Office。 官方网站:Office Tool Plus 官方网站 - 一键部署 Office (landian.vip) 工具下载链接:下载 | Office Tool Plus 官方网站 (landian.vip) (推荐下载包含框架的版本) 下载之后,解压压缩包,在根目录找到 “Office Tool Plus.exe” 打开: 在这里我多 BB 一句,碰到这种压缩包解压完的软件时应该如何运行。因为周围我已经碰到过好几个人了,他们从网上下载到一个打包成压缩包的程序以后,解压完之后就不知道该怎么办了。 一般来说,这种程序多是所谓 “绿色版” 软件,即不用安装、就能打开使用。在打开时,大部分情况下在根目录下即可找到 与软件同名的(英文全称或者简写都有可能) 启动程序文件,启动程序多是 “exe” 格式,在少数情况下,如果根目录找不到时,启动程序文件可能在根目录下的 “bin” 文件夹下(比如 QQ 这个臭弟弟)。 (嘘 ~~ 偷偷地告诉你:这个经验也适用于当程序启动快捷方丢失时到软件安装目录下寻找启动程序时使用哦) 安装之前需要做的事 卸载旧版本 Office,否则可能无法安装 清除旧版本的激活信息,Win 10 必须做(Office Tool Plus 激活页面 —> 许可证管理 —> 清除激活状态)。 清除 Office 设置,可选(Office Tool Plus 工具箱页面 —> 恢复 Office 为默认设置) 二、下载安装 Office 接下来就可以下载 Office 程序了。首页选择 “部署” 功能,简单说一下要设置的选项(用 Office LTSC 专业增强版 2021 - 批量许可证举例): 基础设置里面: 产品:选择要安装哪个版本的 Office 软件。正版用户选择与自己的正版许可证对应的产品,否则无法使用正版许可证激活;如果非正版用户,就看心情选了,新版本最好,老版本也不错,但是请注意,一定要选择带有批量许可证、Volume 字样的版本,原因在激活时会说到。 应用程序:选择你需要用到的软件,不建议全部选择,装上以后多占空间不说,不想要了卸载的时候还没办法单独卸载,只能卸载是整个 Office 套件。 语言:没什么好说的,我想对于阅读这篇博客的大部分人来说选择都是一致乃至唯一的。 部署设置: 体系结构:选择 32 位兼容性好;64 位兼容性稍差且体积大,但处理大数据能力稍强。 通道:根据已经选择的产品来选择能用的通道,通道不适用于当前产品的时候会有提示。一般选 “当前通道” 就行,Office 2019/2021 批量许可证请选择 Office 2019/2021 企业长期版。 部署模式:选 “安装”,除非你是想制作 ISO 文件或者仅仅是下载 Office 软件。 安装模块:一般选 “Office 部署工具”,Office 2019/2021 批量许可证请选择 Office Tool Plus。 下载后部署:如果网不行,最好把这个选上,免得安装卡进度卡半天。 下载设置:看网络情况,个人建议切换下载引擎为 “迅雷”,当然不排除其他方式下载更快。 至于下方的高级设置里的选项,除非你明白选项是什么意思,否则建议不要瞎填瞎选。 以上设置好之后,点击右上角 “开始部署”,部署时耐心等待。这个过程会自动下载并安装选定的 Office 程序。 三、激活 Office 如果是安装好的 Office 软件,就等激活的那种。请务必保证你安装的是 VL 批量授权版本(即带有批量许可证、Volume 字样的),因为 Retail 零售版的 Office 无法使用 KMS 方式激活。 正版用户一般情况下是不需要借助 Office Tool Plus 激活 Office 的,在 Office 应用程序中登录自己的微软账号,或者输入你的正版密钥即可激活 Office。不知道自己有没有正版 Office?个人用户 >> 点击这里检查 <<,企业用户 >> 点击这里检查 <<。 没有许可证或者密钥的用户,得用点特别手段,下面展示了好几种激活方式,选择其中一种即可。 3.1、使用 Office Tool PLus 激活 3.1.1、自动激活(推荐) 注意:此功能要求 Office Tool Plus 版本不低于 8.2.4.0,旧版本无法使用。 请根据产品来选择相应的激活命令: Office 系列: Office LTSC 2021: ospp /ilbyid ProPlus2021Volume /sethst:kms.loli.best /setprt:1688 /act Office 2019: ospp /ilbyid ProPlus2019Volume /sethst:kms.loli.best /setprt:1688 /act Office 2016: ospp /ilbyid ProPlusVolume /sethst:kms.loli.best /setprt:1688 /act Visio 系列: Visio 2021: ospp /ilbyid VisioPro2021Volume /sethst:kms.loli.best /setprt:1688 /act Visio 2019: ospp /ilbyid VisioPro2019Volume /sethst:kms.loli.best /setprt:1688 /act Visio 2016: ospp /ilbyid VisioProVolume /sethst:kms.loli.best /setprt:1688 /act Project 系列: Project 2021: ospp /ilbyid ProjectPro2021Volume /sethst:kms.loli.best /setprt:1688 /act Project 2019: ospp /ilbyid ProjectPro2019Volume /sethst:kms.loli.best /setprt:1688 /act Project 2016: ospp /ilbyid ProjectProVolume /sethst:kms.loli.best /setprt:1688 /act Microsoft 365: ospp /ilbyid MondoVolume /sethst:kms.loli.best /setprt:1688 /act 当然,命令中 KMS 地址的也可以换成其他 KMS 服务器。 3.1.2、手动激活 选择首页 “激活” 功能。 安装 Office 批量许可证,每个版本的对应许可证在官方文档上就能找到:GVLKs for KMS and Active Directory-based activation of Office, Project, and Visio - Deploy Office | Microsoft Docs。 设置 KMS 地址(可以设置端口为 1688)并保存设置。这里有一份由 Yerong 大佬总结的 KMS 地址列表:KMS 列表 | Yerong の小窝 (coolhub.top),KMS 服务器从这里面找。 点击右上角 “激活” 按钮,等待激活完成。 附上 Office Tool PLus 官方视频教程: {bilibili bvid="BV1eU4y1V7NU" page=""/} 3.2、命令行激活 其实 Office Tool PLus 就可以适用于大部分情况下的激活了,为什么还要加一种命令行的方式呢? 当然是为了在妹子面前显得技术高超了啊~~ (好吧其实是我以前一直在使用命令行激活,结果写这篇博客深入研究时才发现原来 Office Tool Plus 的激活功能这么好用) 鉴于用了这么长时间的命令行,想了一下还是记录一下命令行的激活方式吧。 首先找到 Office 的安装目录,一般都是:C:\Program Files (x86)\Microsoft Office\Office16 或者 C:\Program Files (x86)\Microsoft Office\Office16。这个目录下面会有一个文件叫 “OSPP.VBS”,等下需要用到这个文件。 office16 是 office2016/2019/2021,office15 就是 2013,office14 就是 2010。 接下来打开开始菜单,键盘输入“cmd”,找到 命令提示符,点击 以管理员身份运行,使用 cd 命令切换到这个目录下面(以 C:\Program Files (x86)\Microsoft Office\Office16 为例,根据实际情况来): cd C:\Program Files (x86)\Microsoft Office\Office16 接下来使用两句命令即可激活: # 设置激活时的 KMS 服务器地址为 kms.03k.org,可更换为其他 KMS 服务器 cscript OSPP.VBS /sethst:kms.03k.org # 连接 KMS 服务器激活 cscript ospp.vbs /act 命令中出现的 KMS 服务器地址在写这篇博客的时候还能正常使用,日后如果不能使用的话换成其他可用的 KMS 服务器即可。运行完成之后如果有 “Product activation successful” 字样提示,那么说明激活成功。 KMS 服务器还是在这里找:KMS 列表 | Yerong の小窝 (coolhub.top) 3.3、判断 Office 是否激活 随便打开 Office 软件中的其中一个,新建空白文档,选择左上角“文件” —> "账户",就能看到激活信息了: 四、疑难解答 请参考这篇文章:[疑难解答] Office Tool Plus 入门教程 - Yerong の小窝 (coolhub.top) 参考资料: 视频链接:【Office Tool Plus 官方】还不会安装 Office?几个步骤即可搞定全部!_哔哩哔哩_bilibili 欢迎使用 Office Tool Plus | Office Tool Plus Docs (coolhub.top) 本站上线KMS服务~一句命令激活windows/office | 零散坑知识分享 (03k.org) Office Tool Plus 教程 - Yerong の小窝 (coolhub.top) 使用 KMS 激活 Microsoft 产品 - 犬's Blog (moedog.org)
2022年02月14日
3,271 阅读
2 评论
0 点赞
2022-02-13
【新手向】如何激活 Windows 系统
目录: 前言 一、简要介绍一些激活方式 1.1、数字许可证 1.2、激活码(密钥) 1.3、KMS 方式激活 1.4、盗版 Win 7 洗白成正版 Win 10 二、怎样激活 2.1、HWIDGEN 2.2、使用命令连接 KMS 服务器激活 2.3、非组装机的激活 2.4、判断 Windows 是否激活 三、附一些链接 3.1、KMS 激活服务器 3.2、Windows 镜像下载站 3.3、一些通用 KMS 激活秘钥 前言 本来没打算过要写这个教程的,但是前两天碰到同学求助我帮忙安装激活 Office 这件事,属实是快让我抓狂了。 起初,抱着“授人以鱼不如授人以渔”的想法,我远程通过 QQ 教她下载安装激活。我自以为很简单的过程,想不到竟然充满了坎坷,最后还是用远程桌面的方式自己动手才搞定激活,总共持续了将近两个小时。搞得我头都快要大了,早知道我就一开始直接自己动手了 ::(犀利) 。所以,为了以后能省事一点,我想通过这篇博客来总结一下如何激活 Windows 与下载安装激活 Office。(下次谁需要我帮忙我就把这篇博客丢给谁) 但是.....你能看到的应该是两篇,因为写着写着就写多了啊......所以干脆分成两篇讲了(突然觉得我以后也会是个特别能唠叨的爹:@(无奈) )。 首先开始 Windows 篇,Office 篇在此附上链接:【新手向】如何下载安装激活 Office - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) Windows 的激活也是很长的一篇(全文接近四千字,好吧写完这句话它又多了十几字 ::(吐舌) )。整篇大部分为我这几年折腾 Windows 电脑的一些认识,当然也参考了一些网上的意见,如果你认为内容有纰漏,欢迎在下方留言督促博主完善内容。如果你是新手且愿意看完整篇唠叨,那么相信你一定会浪费十分钟(啊呸)有那么一丢丢的收获,如果你时间宝贵,可以参照目录或者下方的跳转链接快速阅读: 激活 Window 系统 新电脑上手的一些个人建议 Windows 安装我就省略了,直接从激活 Windows 讲起,因为 Windows 安装太耗费时间了(好吧我就是懒)。丢一个 Windows 安装的视频教程在这,讲的挺详细的,有需要的参考这个就行: {bilibili bvid="BV1DJ411D79y" page=""/} 提前说明:使用本博客提供的方法激活的产品并不是正版,正版请前往微软商城购买 Win 10 系统微软官方购买链接:https://www.microsoft.com/zh-cn/windows/get-windows-10 Office 套件微软官方购买链接:https://products.office.com/zh-cn/compare-all-microsoft-office-products 一、简要介绍一些激活方式 一般来说,关于 Windows 的激活方式可以有这么几种(正规与不正规的): 1.1、数字许可证 Win10 系统中新加入的一种激活方式。数字许可证会记录计算机的硬件信息,在计算机硬件没有更换的情况下许可一直有效,重新安装系统时也无需再次输入产品秘钥,Win10 会自动连接微软的服务器永久激活系统。但是如果计算机硬件发生变动,比如换主板以后,数字许可证就会失效。 优点是在硬件平台上一次激活,以后安装相同版本的 Windows 系统,联网之后就会自动激活。 缺点是不适用于 Win 10 之前的系统。 1.2、激活码(密钥) 一种是零售版本(Retail)的激活码,即你从微软官网或者其他正规零售渠道(别想了,淘宝只卖十几二十块钱那种的必不算)购买了 Windows 系统之后,你就会得到一个激活码,这个激活码可以永久激活某一个版本的 Windows 系统,并且只能激活一台计算机。这个类型的激活码会转换成数字许可证,不换主板就可以一直激活,换了主板以后再次激活可能要找客服。 还有一种就是批量授权的激活码(MAK,即 Multiple Activation Keys),这种在企业中比较常见,一般是企业购买的 Windows 系统正版授权的激活码,与零售版只能激活一次不同的是,批量授权的激活码可以激活多次,具体能激活多少次要看企业买了多少的正版授权,激活次数够了之后这个激活码也就没用了。在有些时候,企业购买的批量授权的激活次数还没有用完,那么就有可能流入到市场上,没错,淘宝上不到二十块钱买到的激活码大部分就是这么来的。 1.3、KMS 方式激活 KMS,全称 Key Management Service,这种方式主要用于企业中的计算机的批量激活,比如一个企业的 2000 台计算机,装好系统激活时总不能让管理员一个一个开机去输入激活码(密钥)吧,那样做效率显然太低了。因此解决办法就是搭设一个 KMS 激活服务器(Activation Server),待激活的计算机连接到 KMS 激活服务器以后就会激活。 这种方式的优点是可以方便快捷地管理授权,而且是批量管理。 缺点是不能永久激活,若要保持激活状态,系统必须至少每 180 天连接一次 KMS 服务器来续订激活。默认情况下,系统每 7 天自动进行一次激活续订尝试。 1.4、盗版 Win 7 洗白成正版 Win 10 在 Win 10 发布后,为了提高新系统的市场占用率,当时的 Win 7/8.1 系统不管是正版还是盗版,只要是已经激活的,都可以通过在线更新的方式免费升级到正版 Win 10 系统,这种方式使得不少盗版 Windows 系统都成功洗白成了有正版授权的 Win 10 系统,尽管官方宣称升级通道保持一年就会关闭,但是实际上后续依然可以通过这种方式洗白盗版 Windows 系统,这一波微软简直套路满满。 二、怎样激活 2.1、HWIDGEN 对于个人用户自己安装激活系统的这种情况,在激活时我个人推荐的是 HWIDGEN 这个软件,激活以后就拥有了数字许可证,下次重装相同版本的系统后不再需要任何激活工具,系统将会自动激活。而且足以应付大部分版本的 Win 10 系统。 HWIDGEN 是一款开源的激活工具,但是作者已经删库跑路了。不过好在还能在 Github 上搜到其他用户的仓库存档。 下载链接:https://image.wlplove.com/download/HWIDGen_v9.18_Chs.zip 与此类似同样可以进行数字许可证激活的工具还有: DigitalLicense:muruoxi2018/W10-DigitalLicense: 用于Win10的数字权利激活工具,由C#开发 (github.com) 下载链接:https://image.wlplove.com/download/DigitalLicense.zip CMWTAT_Digital_Edition:云萌Windows 10激活工具 - 首页 (cloudmoe.com) 下载链接:https://image.wlplove.com/download/CMWTAT_Digital_Release_2_5_0_0.exe 由于数字许可证是 Win10 系统中新加入的激活方式,因此,HWIDGEN 对于 Win 10 以前的系统无可奈何,所以 Win 7 系统推荐使用 KMS 方式激活。 2.2、使用命令连接 KMS 服务器激活 不推荐使用网上能随处下载到的那种 KMS 激活软件。 别被命令行吓住了,这个过程其实很简单的,只需要两步即可完成: 以管理员身份运行 CMD 控制台 复制粘贴激活命令,Enter回车键执行命令即可 下面详细展开说一说,跟着照做就行,没有难度的: 首先打开开始菜单,直接键盘输入“cmd”,找到 命令提示符,点击 以管理员身份运行: (其实这是一个 Windows 系统的使用技巧,直接在开始菜单界面就可以搜索应用、设置、网页等) 随后在弹出的窗口中选择 “是”,这样就以管理员身份运行了 cmd 控制台程序。接下来在控制台中输入以下命令: slmgr.vbs /skms kms.v0v.bid && slmgr /ato 按回车执行命令即可,这样,就已经激活了 Windows 系统。 事实上这是两句命令,使用 “&&” 连接。简单分析一下这句命令的结构: “slmgr.vbs” 是 Windows 系统中的软件授权管理工具,后面的 “/skms” 是用来设置激活服务器的参数,“kms.v0v.bid” 是激活服务器的地址,可以是域名或者 IP,默认端口是 1688。 第二句命令(“&&” 后面的)的参数是 “/ato”,表示激活 Windows 系统(在设置了激活服务器地址的前提下才能成功激活)。 然后我们可以验证一下,同样在控制台,输入以下命令查看当前许可证的截至日期: slmgr.vbs /xpr 事实上,Windows 系统中的这个工具还有很多更复杂的参数用法,比如显示许可证信息、清除/卸载产品密钥、重置授权状态、清除 KMS 激活服务器等等等,更详细的用法可以通过在控制台或运行窗口中输入 slmgr.vbs 查看。 2.3、非组装机的激活 此处的非组装机是指能够从电商平台、线下门店等渠道买到的不限于笔记本/品牌机/一体机等的这类整机设备。不同于自己买配件组装的电脑,这类电脑到手开机即可使用。之所以把这种电脑放到这来特别说明,是因为大部分人其实还不知道,这种整机设备基本都是出厂自带了正版的 Windows 10/11系统与 office 办公软件,其售价中已经包含了正版操作系统的成本。(所以以后就别说大部分中国人都在使用盗版 Windows 了,其实大部分人都在不知不觉中用上了正版系统) 需要注意的是,这类新电脑联了网之后,系统就会自动激活,系统一旦激活之后如果没有质量问题,就不再支持 7 天无理由退货,这点在电商平台大部分都明确说明了的。 因此,我的建议是,新电脑拿到手之后,先不要急着联网。开机前检查外观是否完整,表面有无严重划痕;开机之后,检查屏幕边缘是否有严重漏光现象(轻微漏光不用担心,目前工艺问题无法避免)、键盘/音响/接口/摄像头等是否都功能正常、系统是否已激活。 当这些都检查完没问题以后就可以联网激活系统了,然后,最好注册一个微软账号,并在新电脑上登录,这个微软账号除了可以用来绑定激活 office 软件,也可以将正版系统的激活权限自动绑定到这个账号上。 当然,如果在检查的过程中不幸中招了,那么申请 7 天无理由退换货即可。 2.4、判断 Windows 是否激活 Win + i 打开设置 —> 更新与安全 —> 激活: 三、附一些链接 3.1、KMS 激活服务器 [微零微]-Windows/Office全系列激活教程-KMS在线激活-KMS激活服务器-Windows11一句命令永久激活-Windows10一句命令永久激活 (v0v.bid) 本站上线KMS服务~一句命令激活windows/office | 零散坑知识分享 (03k.org) kms.cary.tech 沧水的KMS服务 – Kms|Windows激活|Office激活|Windows下载|Office下载|搭建KMS服务器 (cangshui.net) 一键安装KMS服务脚本 | 秋水逸冰 (teddysun.com) 3.2、Windows 镜像下载站 Win 10 镜像官方下载链接:下载 Windows 10 (microsoft.com) Win 11 镜像官方下载链接:Download Windows 11 (microsoft.com) MSDN, 我告诉你 - 做一个安静的工具站 (itellyou.cn)(旧) NEXT, ITELLYOU(新) TechBench by WZT (v4.1.1) (rg-adguard.net) Windows镜像下载 – 沧水的KMS服务 (cangshui.net) 3.3、一些通用 KMS 激活秘钥 适用于 Windows Server 和 Windows 的密钥管理服务 (KMS) 客户端激活和产品密钥 | Microsoft Docs KMS (netnr.eu.org) 或:windowsserverdocs/kms-client-activation-keys.md at main · MicrosoftDocs/windowsserverdocs (github.com) 使用方法请参考:https://kms.netnr.eu.org/ 参考资料: 视频:【装机教程】超详细WIN10系统安装教程,官方ISO直装与PE两种方法教程,UEFI+GUID分区与Legacy+MBR分区_哔哩哔哩_bilibili 本站上线KMS服务~一句命令激活windows/office | 零散坑知识分享 (03k.org) [微零微]-Windows/Office全系列激活教程-KMS在线激活-KMS激活服务器-Windows11一句命令永久激活-Windows10一句命令永久激活 (v0v.bid) KMS激活服务器的两种教程及使用方法 | 可乐博客 (cokemine.com)
2022年02月13日
2,594 阅读
0 评论
1 点赞
2022-02-12
CS1.6 服务器安装插件及优化教程
目录: 一、安装插件破解服务器正版限制 1.1、安装 Metamod 1.2、安装 Rehlds 1.3、安装 reunion 二、通过安装插件增加游戏功能 ——待完成 安装 AMX Mod X 三、服务器管理 ——待完成 3.1、OP管理 3.2、正版添加人机 环境说明: 系统:Ubuntu20.04 此篇承接上篇:Ubuntu搭设CS1.6游戏服务器 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 一、安装插件破解服务器正版限制 破解服务器的盗版限制会用到第三方插件,因此需要安装一系列框架。注意,以下的操作都是基于服务器程序文件。 1.1、安装 Metamod Metamod 是一个位于半条命引擎和半条命游戏模组之间的 plugin/DLL 管理器,允许动态加载/卸载类似模组的DLL插件,以向HL服务器或游戏模组添加功能。原 Metamod 项目在 2013 年更新了 V1.20 版本之后就断更了,目前已经过于陈旧,所以不再使用官方版本的 Metamod 框架。而是使用其他开源的非官方版本,比如 Metamod-P 与 Metamod-r。其中,Metamod-r 又算是基于 Metamod-P 改进而来,因此我们选择 Metamod-r。 安装文档:安装 · theAsmodai/metamod-r Wiki (github.com) Metamod-r V1.3.0 版本下载链接:https://github.com/theAsmodai/metamod-r/releases/download/1.3.0.86/metamod_1.3.0.86.zip 安装步骤很简单: 第一步:解压压缩包,将其中的 “addons” 文件夹上传到服务器端文件根目录的 “cstrike” 文件夹下面。 第二步:编辑 “cstrike” 文件夹下的 liblist.gam 文件,找到文件中的这一行: # Linux gamedll_linux "dlls/cs.so" # Windows gamedll "dlls\mp.dll" 修改为: # Linux gamedll_linux "addons/metamod/metamod_i386.so" # Windows gamedll "addons\metamod\metamod.dll" 这样就安装完了 Metamod-r,但是由于 Metamod-r 与原始 HLDS 不兼容。所以还得安装 ReHLDS。 1.2、安装 Rehlds ReHLDS 是原始 HLDS(Half-Life Dedicated Server,即半条命专用服务器) 逆向工程的结果,在开发中发现并修复了 HLDS 的许多缺陷和潜在错误。ReHLDS 项目提供了更比官方稳定的半条命专用服务器,并扩展了模组和插件的 API,并且也进行了一定程度的性能优化。 下载链接: 需要科学:https://github.com/dreamstalker/rehlds/releases/download/3.11.0.767/rehlds-bin-3.11.0.767.zip 免翻墙:https://gh.ddlc.top/https://github.com/dreamstalker/rehlds/releases/download/3.13.0.788/rehlds-bin-3.13.0.788.zip 安装文档:dreamstalker/rehlds: Reverse-engineered HLDS (github.com) 安装步骤也很简单,解压压缩包,用 bin/linux32 中的 “engine_i486.so” 文件替换掉根目录下的同名文件。此时尝试启动服务器程序,如果有这样的提示那就说明安装成功: [][] 1.3、安装 reunion Reunion 是 ReHLDS 的 dproto 项目的延续。它是一个用于 Metamod 框架的插件,其作用是允许不同协议(47 和 48 no-steam)的 CS1.6 游戏客户端加入服务器。 下载链接: 需要科学:https://raw.githubusercontent.com/x7s/reunion/master/reunion_0.1.92.zip 免翻墙:https://gh.h233.eu.org/https://github.com/dreamstalker/rehlds/releases/download/3.13.0.788/rehlds-bin-3.13.0.788.zip 解压压缩包,要用到的是 “reunion.cfg” 与 “bin” 文件夹下的文件。 第一步:在 “cstrike/addons” 文件夹下创建一个文件夹 “reunion”, Linux 端上传 bin/Linux 文件夹下的文件(是文件而不是 Linux 文件夹)到新建的这个文件夹, Windows 端同理,上传 bin/Windows 文件夹下的文件。 第二步:编辑位于 “addons/metamod” 下的 metamod 插件配置文件 plugins.ini(没有就创建一个),向其中添加如下配置: # Linux linux addons/reunion/reunion_mm_i386.so # Windows: win32 addons\reunion\reunion_mm.dll 第三步:复制 “reunion.cfg” 文件到服务器文件根目录。 安装完成后,重启服务器程序,在控制台输入 meta list 命令回车,可以查看当前运行的插件列表: >> meta list Currently loaded plugins: description stat pend file vers src load unlod [ 1] Reunion RUN - reunion_mm_i386. v0.1.0.9 ini Start Never 1 plugins, 1 running 结果显示 reunion 插件当前为运行状态,即说明安装成功。现在盗版 CS1.6 客户端就能加入服务器了。 二、通过安装插件增加游戏功能 ——待完成 Meatmod 插件列表:Metamod Plugins 安装 AMX Mod X AMX Mod X 是一个Metamod插件。AMX Mod X是半条命1的Metamod插件。它为游戏引擎及其模组提供了全面的脚本。脚本可以截获网络消息、日志事件、命令、客户端命令、设置 cvar、修改实体等。 下载链接:AMX Mod X - Half-Life Scripting for Pros! 安装文档:手动安装 AMX Mod X - AlliedModders Wiki (alliedmods.net) 第一步:解压压缩包,将 “amxmodx” 文件夹上传到 addons 文件夹下。 第二步:编辑位于 “addons/metamod” 下的插件配置文件 plugins.ini(前面应该已经创建了),向其中添加如下配置: linux addons/amxmodx/dlls/amxmodx_mm_i386.so 同样的,安装完成后,重启服务,在控制台输入 meta list 命令可查看 AMX Mod X 是否在运行。 alliedmodders/amxmodx: AMX Mod X - Half-Life 1 Scripting and Administration (github.com) AMX Mod X之系列说明(简介和安装) - 百度文库 (baidu.com) AMX Mod X之系列说明 - 百度文库 (baidu.com) AMXX命令大全 - 百度文库 (baidu.com) [课程]AMX Mod X之系列说明(简介和安装) - 豆丁网 (docin.com) AMX Mod X之系列说明_word文档在线阅读与下载_文档网 (wendangwang.com) 三、服务器管理 ——待完成 服务器相关配置文件:位于 cs1.6/cstrike 目录下,文件名为 server.cfg, 3.1、OP管理 3.2、正版添加人机 CS1.6服务器架设及终极优化教程 牛头人脚本网 (plooy.cn) linux系统架设cs1.6服务器图文教程(兼容47/48协议的non-steam) - HLDS 技术讨论区 - 点通论坛 - Powered by Discuz! (dt-club.net) CS1.6比较完美的server.cfg_uvex888_51CTO博客 设置你的显卡提高CS里的FPS 牛头人脚本网 (plooy.cn) 游戏常用参数 | 反恐精英CS1.6最全最多最广教程 (fps99.com) 参考资料: Debian10搭建CS1.6服务器-荒岛 (lala.im)(这篇博客可能需要科学上网才能看到) cs1.6服务器搭建 2021-11-30 - 王冰冰 - 博客园 (cnblogs.com)
2022年02月12日
5,324 阅读
1 评论
1 点赞
2022-01-25
Joe主题添加文章侧边栏目录
目录: 一、安装插件 二、插件使用 2.1、启用插件 2.2、CSS文件 2.3、JS文件 2.4、修改 post.php 文件 环境说明: Typecho:正式版 V1.1-17.10.30-release Joe:V7.3.6 一、安装插件 Github 仓库链接:plugins/MenuTree at master · typecho-fans/plugins · GitHub 下载链接:https://github.com/typecho-fans/plugins/releases/download/plugins-M_to_R/MenuTree.zip 二、插件使用 2.1、启用插件 将下载好的插件放在 usr/plugins/ 目录中,确保文件夹名为 MenuTree; 激活插件,设置内可勾选“嵌入模式”与“独立模式”: “嵌入模式”勾选时,编辑文章用按钮插入或手写 < !-- index-menu -->(插入按钮功能貌似是无效的,还有注意,别照抄这个标签,我在标签的 ! 前面加了一个空格,不然它就会被解析成目录了) 标签发布即可显示目录树; “独立模式”勾选时,修改模板文件如 post.php 中写入 <?php $this->treeMenu(); ?> 也可显示。 需要注意的是,在文章中渲染出来的目录默认是没有任何样式的,所以需要我们自定义样式。 为了使目录显示为侧边栏,并且样式与 Joe 本来的侧边栏风格保持一致,这里使用“独立模式”,并用相应的 CSS 与 JS 文件来定义其样式。 2.2、CSS文件 将以下 CSS 代码保存至文件中,文件名为 menutree.css,文件放到主题目录的 assets/css 文件夹下。 .menutree { position:sticky; top:60px; width:15%; margin:15px 15px 15px 0px; /* 溢出内容添加滚动条 */ overflow-y:auto; overflow-x:auto; background: var(--background); } /** 父元素<ul>与其中的子元素<li> **/ .index-menu-item { margin: 10px 0px; } .index-menu-list { margin: 5px 0px 5px 10px; } /** 所有<a>标签 **/ .index-menu-link{ color: var(--main); transition:all 0.2s ease-in-out 0s; padding:5px 0px; } .index-menu-link:hover { color: var(--theme); text-shadow: var(--text-shadow); font-weight:500; background-color:#efefef; } /* 锚点跳转定位 */ .menu-target-fix { display: block; position: relative; /* 偏移量 */ top:-100px; } /* 在宽度小于1000px的设备上隐藏短划线,以使目录的标题正常显示 */ @media screen and (max-width:1000px) { .joe_aside__item-title > .line { display:none; } } /* 在宽度小于800px的设备上隐藏目录侧边栏 */ @media screen and (max-width:800px) { .menutree{ display:none; } } 2.3、JS文件 将以下 JS 代码保存至文件中,文件名为 menutree.js,文件放到主题目录的 assets/js 文件夹下。 /* 获取渲染好的目录的高度 */ menuHeight = document.getElementsByClassName("index-menu")[0].offsetHeight; /* 获取容器高度 */ containHeight = document.getElementsByClassName("joe_aside__item-contain")[0].offsetHeight; /* 获取容器 title 的高度 */ titleHeight = document.getElementsByClassName("joe_aside__item-title")[0].offsetHeight; /* 获取整个目录侧边栏对象 */ aside = document.getElementsByClassName("menutree")[0]; // 定义一个函数来修改目录的显示长度,从而使侧边栏能自适应目录的高度,避免出现大片空白部分 function changeMenuHeight(){ /* 调整容器高度 */ aside.style.height = titleHeight + containHeight + "px"; } // 如果目录的高度小于500px,调用函数将目录修改为实际高度,反之则将侧边栏的高度固定为500px if(menuHeight < 500){ changeMenuHeight(); } else { aside.style.height = "500px"; } 2.4、修改 post.php 文件 建议修改之前先备份 post.php 文件,如果修改失败可以随时还原回来。 总共需要修改两个地方: 导入 CSS 文件 在文件前面的导入 CSS 文件: <!-- 导入目录的css文件 --> <link rel="stylesheet" href="<?php $this->options->themeUrl('assets/css/menutree.css'); ?>"> 添加目录代码 然后在 <div class="joe_container"> 与 div class="joe_main joe_post"> 之间添加如下代码: <!-- 文章目录代码 --> <section class="joe_aside__item menutree"> <div class="joe_aside__item-title"> <svg t="1642997936013" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="2169" width="128" height="128"><path d="M838.3 895.9H197.9c-53.9 0-97.7-43.8-97.7-97.7V236.7c0-53.9 43.8-97.7 97.7-97.7h640.3c53.9 0 97.7 43.8 97.7 97.7v561.4c0.1 53.9-43.7 97.8-97.6 97.8zM197.9 203.8c-18.1 0-32.9 14.8-32.9 32.9v561.4c0 18.1 14.8 32.9 32.9 32.9h640.3c18.1 0 32.9-14.8 32.9-32.9V236.7c0-18.1-14.8-32.9-32.9-32.9H197.9z" fill="#666666" p-id="2170"></path><path d="M695.1 455.2H341.2c-17.9 0-32.4-14.5-32.4-32.4s14.5-32.4 32.4-32.4h353.9c17.9 0 32.4 14.5 32.4 32.4s-14.5 32.4-32.4 32.4zM695.1 578.2H341.2c-17.9 0-32.4-14.5-32.4-32.4s14.5-32.4 32.4-32.4h353.9c17.9 0 32.4 14.5 32.4 32.4s-14.5 32.4-32.4 32.4zM695.1 701.2H341.2c-17.9 0-32.4-14.5-32.4-32.4s14.5-32.4 32.4-32.4h353.9c17.9 0 32.4 14.5 32.4 32.4s-14.5 32.4-32.4 32.4zM379.1 281.1c-17.9 0-32.4-14.5-32.4-32.4V115.4c0-17.9 14.5-32.4 32.4-32.4s32.4 14.5 32.4 32.4v133.2c0 17.9-14.5 32.5-32.4 32.5zM657.1 281.1c-17.9 0-32.4-14.5-32.4-32.4V115.4c0-17.9 14.5-32.4 32.4-32.4s32.4 14.5 32.4 32.4v133.2c0 17.9-14.5 32.5-32.4 32.5z" fill="#666666" p-id="2171"></path></svg> <span class="text">目录</span> <span class="line"></span> </div> <div class="joe_aside__item-contain"> <?php $this->treeMenu(); ?> </div> </section> <!-- 导入的js文件,必须在这里导入,否则不生效 --> <script src="<?php $this->options->themeUrl('assets/js/menutree.js'); ?>"></script> 保存,刷新文章页面即可看到左边的侧边栏目录。 以上的样式代码经过一定时间的使用,可以完美契合 Joe 主题,并且加入了部分响应式布局的代码,在移动设备上目录会自动隐藏,不会影响内容阅读。当然,如果是非 Joe 主题,样式可能需要重新设计。
2022年01月25日
2,668 阅读
23 评论
14 点赞
2022-01-16
Ubuntu搭设CS1.6游戏服务器
目录: 前言 一、创建系统新用户 二、SteamCMD 2.1、安装 2.2、进入 SteamCMD 控制台 三、下载游戏服务器文件 3.1、设置下载位置 3.2、下载文件 四、启动服务器程序 4.1、启动 4.2、报错信息 4.2.1、报错信息之一 4.2.2、报错信息之二 4.2.3、报错信息之三 4.3、开放端口 五、连接服务器 环境说明: 服务器:阿里云轻量应用服务器 系统:Ubuntu 20.04 前言 CS,全称 Counter-Strike,起初是1999 年由民间团队为游戏《半条命(Half-Life)》的开发的游戏模组,由于后来深受玩家的喜爱,2000年由 Valve 购得版权发行成为独立游戏。后续出过《反恐精英:零点行动》《反恐精英:起源》和《反恐精英:全球攻势》等续作。CS 1.6 作为这个系列的一代经典以及童年回忆,其在整个游戏史上的地位怎样美言都不过分。 最近心血来潮,想搭建一个 CS1.6 服务器来玩一玩,查了不少资料,大概有了点头绪。 CS1.6 有一个专门的服务器程序,叫 HLDS(Half-Life Dedicated Server),即半条命专用服务器,是 Valve 官方(也就是俗称的“V 社”)提供的 CS1.6 服务器端程序。 在下载 CS1.6 的服务器程序时,需要用到 SteamCMD,即 Steam 控制台客户端,这是 Valve 官方开发的一个命令行版本的 Steam 客户端,它的主要用途就是安装和更新 Valve 开发的游戏的专用服务器程序文件。 一、创建系统新用户 安装 SteamCMD 之前需要先创建一个用户。 因为按照官方文档的建议,最好创建一个新用户来专门运行 SteamCMD,使用 root 用户运行 SteamCMD 时会有安全风险。当然理论上来说,如果当前用户是非 root 用户,那么可以不创建新用户,使用当前用户直接操作也是一样的。 相关参考资料:Linux 用户和用户组管理 | 菜鸟教程 (runoob.com) 注意:这一步的操作需要 root 权限。 创建一个名为 steam 的新用户: #-m:自动创建用户目录 #-s:指定用户的shell解释器,这里设为bash useradd -m -s /bin/bash steam 然后设置用户密码: passwd steam 到这一步之后,执行后面的 apt 命令时,可能会出现报错: steam is not in the sudoers file. This incident will be reported 或者: steam 不在 sudoers 文件中,此事将被报告 解决方法有两种(需要有 root 权限): 按照报错提示,将 steam 用户添加到 sudoers 文件中,编辑 sudoers 文件: sudo nano /etc/sudoers 仿照root用户的格式,在如下位置添加 steam 这一行内容(请忽略 steam 前的“+”,这只是为了方便说明这一行内容是新添加的): # User privilege specification root ALL=(ALL:ALL) ALL + steam ALL=(ALL:ALL) ALL ctrl + o 保存,ctrl + x 退出。 将 steam 用户添加到 sudo 用户组(在 root 用户下操作): adduser steam sudo 最后切换到新建的 steam 用户: su steam 二、SteamCMD SteamCMD 的官方文档:Main Page:zh-cn - Valve Developer Community (valvesoftware.com) 下面的这部分参考自官方文档,如果这个过程中有疑问的话也可以读一读官方文档。另外,值得一提的是,官方文档中的大部分资料都提供了中文版本,这点给个大大的好评。 2.1、安装 安装方法:Steam 控制台客户端 - Valve Developer Community (valvesoftware.com) 在官方文档中提供了两种方式来安装 SteamCMD,一种是安装来自软件仓库的软件包,另一种是手动下载压缩包再解压安装。 为了方便,直接采用第一种,用 apt 命令安装 SteamCMD: sudo apt update && sudo apt install software-properties-common sudo add-apt-repository multiverse sudo dpkg --add-architecture i386 # 安装相关依赖 sudo apt install lib32gcc1 libsdl2-2.0-0:i386 # 安装 SteanCMD sudo apt install steamcmd 安装过程中会出现如下界面,按 Tab 键选择到 OK 再按回车确认 选择“I AGREE”,回车确认,等候等待安装完成。 2.2、进入 SteamCMD 控制台 输入以下命令进入 SteamCMD 控制台: steamcmd 如果是手动安装的 SteamCMD,那么还需要在当前目录下生成一个软链接: ln -s /usr/games/steamcmd steamcmd 否则使用 steamcmd 命令时会提示找不到命令。如果直接使用 apt 命令安装的话则不用生成软连接。 第一次进入时,会更新文件,等待更新完成即可进入 SteamCMD 控制台: 更新完成后会在当前目录下生成一个隐藏的 .steam 文件夹,使用 ls -al 命令查看。 进入到 SteamCMD 控制台之后,如果出现警告信息: Warning: failed to init SDL thread priority manager: SDL not found 这是由于缺少依赖,输入 quit 退出 SteamCMD 控制台,再执行以下命令安装依赖: sudo apt install libsdl2-2.0-0:i386 当正常进入 SteamCMD 控制台后,没有报错信息,就可以开始下载游戏文件了。 三、下载游戏服务器文件 3.1、设置下载位置 下载之前,先设置文件的下载位置: # 用绝对路径: force_install_dir /home/steam/cs1.6 3.2、下载文件 下载游戏服务器文件需要登录,我们可以选择匿名登录: login anonymous 这里就有一个问题,我先匿名登录了之后再设置下载目录,然后就出现了报错,提示要在登录之前设置下载位置: 而在官方文档的这个位置:Steam 控制台客户端 - 下载一个应用,这段描述意思是可以先登录再设置下载目录的,所以我也不清楚这是什么情况,按实际情况来就好吧。 以上准备完成之后就可以下载 CS1.6 游戏服务器文件了: app_set_config 90 mod cstrike app_update 90 validate 需要注意的是,由于 BUG,中途可能下载中断,再次运行 app_update 90 validate 命令会继续下载。多试几次等待出现 “Success” 字样: 服务端文件下载完成之后,输入 quit 退出 SteamCMD 控制台。 我在下载完之后,找下载好的文件时踩了不少坑。下了好几遍之后,最后我发现规律如下: 如果不设置下载目录,则默认会下载到当前目录的 .steam 隐藏文件夹下,具体路径为:.steam/steamapps/common/Half-Life 。 如果将下载目录设置为了绝对路径,那么按照绝对路径就能找到; 如果用了相对路径,则是在隐藏的 .steam 路径下 ,具体路径为 ./steam/steamcmd/; 所以,为了比较容易找到之后下载下来的游戏服务器文件,我的建议是在下载之前将路径设置成绝对路径。 四、启动服务器程序 4.1、启动 启动之前,将目录定位到服务器程序文件的根目录下,先给启动程序赋予执行权限: sudo chmod a+x hlds_run hlds_linux hltv 启动命令为: # 启动 cs1.6 服务器,服务器端口为 27015,地图为“de_dust2”,最大容纳人数为 16 ./hlds_run -game cstrike +port 27015 +map de_dust2 +maxplayers 16 启动命令的格式为: ./hlds_run -game <game> +maxplayers X +map <map> +port <port> 这段启动命令看似复杂,其实并不,简单分析一下你就明白了: ./hlds_run 是根目录下的服务器启动程序,后面一大段是启动参数,几个基本的启动参数含义如下: 参数 含义 -game 游戏名称 +port 游戏服务器启动端口 +map 设置地图 +maxplayers 地图最大容纳人数(2~32) 更多的启动参数可以参考这份官方文档:Command Line Options - Valve Developer Community (valvesoftware.com) 4.2、报错信息 这里我碰到了问题,服务虽然启动起来了,但是有报错信息。不过经过后来的尝试,游戏客户端能连接到服务器,应该是不影响服务基本运行。 但是为了保险起见,我觉得还是有必要消除这些报错信息,尝试着用我的渣渣英语水平分析了一下控制台输出中的报错信息,提取出来一部分可能有用的信息,再加上一些网上其他大佬的资料,差不多就能部分解决这些报错了。 4.2.1、报错信息之一 [S_API FAIL] SteamAPI_Init() failed; SteamAPI_IsSteamRunning() failed. 这个看提示像是 SteamAPI_Init() 与 SteamAPI_IsSteamRunning() 这两个方法执行失败,找了些资料之后还是无法下手解决,就念在它不影响运行的份上放过它吧。 4.2.2、报错信息之二 dlopen failed trying to load: /home/steam/.steam/sdk32/steamclient.so with error: /home/steam/.steam/sdk32/steamclient.so: cannot open shared object file: No such file or directory 结合这篇博客 Debian10搭建CS1.6服务器-Rain's Blog (im.ci) 的内容,基本可以确定是这个博主所说的游戏服务器文件缺失的问题,缺失的文件是 .steam/sdk32/steamclient.so,我们可以手动把 .steam/steamcmd/linux32 目录下的 .steamclient.so 文件复制过来一份: # 整个操作还是在 .steam 目录下: mkdir /home/steam/.steam/sdk32 cp /home/steam/.steam/steamcmd/linux32/steamclient.so /home/steam/.steam/sdk32 4.2.3、报错信息之三 couldn't exec listip.cfg couldn't exec banned.cfg 原因在点通论坛的这篇帖子linux系统架设cs1.6服务器图文教程(兼容47/48协议的non-steam)第二部分中提到了,是因为服务器文件根目录的 cstrike 文件夹下缺少了 listip.cfg 和 banned.cfg 这两个文件,listip.cfg 是存放踢出的玩家 IP,banned.cfg 存放的是被管理员封禁的玩家 IP。 所以消除警告信息的办法就是创建这两个文件(空文件即可): # 进入 cstrike 文件夹下 cd ~/cs1.6/cstrike/ # 创建文件并且给775权限 touch listip.cfg banned.cfg && chmod 775 listip.cfg banned.cfg 以上步骤做完之后,ctrl + c 取消刚才的运行,再重新启动一次服务,这样就没有报错信息了。 4.3、开放端口 这是很重要的一步,但也很容易被忽略,不管搭建出怎样牛逼的服务,端口不开放那都是白搭。 开放端口具体步骤就不再赘述了,各个服务器厂商的操作都是大同小异的,无非就是在服务器控制台找“防火墙”之类的字眼,进去之后添加端口即可。 按照官方文档:Half-Life Dedicated Server - Valve Developer Community (valvesoftware.com),完整的游戏服务总共需要四个端口: 端口号 网络类型 用途说明 27015 UDP 游戏传输、pings 27015 TCP RCON协议(RCON - 百度百科) 27020 UDP HLTV 传输(HLTV - 百度百科) 26900 UDP VAC 服务 如果仅仅维持基本的游戏服务及远程管理,只需要添加如下两个端口即可: 到这里,没什么问题的话,服务器就已经运行起来,可以被我们的游戏连接了。 五、连接服务器 现在正版 CS1.6 客户端就可以连接这个服务器了。在首页用~调出控制台,输入命令 connect ip地址/域名,回车即可连接。 或者也可以在游戏中搜索 IP 地址或域名: 可以看到,已经搜索出来了刚建的服务器: 双击可以直接加入。 这是已连接到的样子: 至此,我们用官方工具成功搭建出了一个 CS1.6 的游戏服务器。目前这个服务器还只能允许正版 CS1.6 玩家游玩,下一篇,我们将会通过安装插件来破解这个限制,并且对这个游戏服务器做一些优化。 下一篇链接:CS1.6 服务器安装插件及优化教程 - Roookie博客 | 记录 · 收纳 · 分享 (wlplove.com) 参考资料: Debian10搭建CS1.6服务器-荒岛 (lala.im)(这篇博客可能需要科学上网才能看到) cs1.6服务器搭建 2021-11-30 - 王冰冰 - 博客园 (cnblogs.com) linux系统架设cs1.6服务器图文教程(兼容47/48协议的non-steam) - HLDS 技术讨论区 - 点通论坛(dt-club.net)
2022年01月16日
5,390 阅读
13 评论
0 点赞
2021-12-26
网站统计后台的垃圾广告及屏蔽措施
目录: 一、后台垃圾广告是什么 二、预防措施 1. 排除访客 IP 2. 加密统计代码 一、后台垃圾广告是什么 我的博客接入了百度统计与 CNZZ 平台来进行访客统计,大部分时候在网站统计平台上查看访客数据时,会碰到这样的记录: 其实百度统计上还比较少,主要集中在 CNZZ 上,这些记录通常是用各种各样的灰色词来作为关键词在搜索引擎上进行搜索而产生。后来才知道,这是使用垃圾广告群发软件故意发广告的。 关于其原理,我用部分转载的内容来进行说明(原文链接附在文末): 我们知道现有大多的统计,都是让我们在自己网站上放一段统计代码,然后对网站流量进行统计,例如百度统计,在安装百度统计工具到网站的时候,我们会要求网站必须嵌入一段类似下面的JS代码: var _hmt = _hmt || []; (function() { var hm = document.(“script”); hm.src = “https://hm.baidu.com/hm.js?89764654ds8w2082cffb3b7e1f2d1238f”; var s = document.getElementsByTagName(“script”)[0]; s.parentNode.insertBefore(hm, s); })(); 这段统计代码中,每一个网站都会有一个32位字符串就是每个站点特有的统计ID。 89764654ds8w2082cffb3b7e1f2d1238f 群发软件会先拿到你网站的ID,这个很简单,通过原代码就可以查到这个统计ID,群发软件会使用采集软件大量采集这些统计ID; 拿到ID后,将你的域名与ID对应放到群发软件里,设置好关键词和推广网址就可以群发垃圾广告了。 二、预防措施 1. 排除访客 IP 我刚开始一直都是使用这种方式。 CNZZ 直接在左侧菜单找到“排除访客 IP”: 百度统计找到“管理” -> “统计规则设置” -> “过滤规则设置” -> “排除 IP 地址”: 这是最简单粗暴的办法,直接将刷垃圾广告的 IP 地址加入排除访客 IP 的名单中,从访客列表中直接隐藏,从而眼不见心不烦。但是,刷广告的一般都是使用多个 IP 地址,屏蔽了一个 IP 地址之后他们还能使用其它的 IP 地址继续作案,所以这种方式治标不治本。 因此更推荐使用的是下面这种方式。 2. 加密统计代码 这是从源头来预防后台垃圾广告的方法,就是将站点统计代码进行一次 JS 混淆,从而达到隐藏站点统计 ID 的目的。 比如,从 CNZZ 或者百度统计上获取到统计代码之后,使用 JS 加密工具: 以后使用混淆过的统计代码,可有效预防统计后台的垃圾广告。 需要注意的是,在刚开始使用了加密了的统计代码之后,可能依然会有部分刷广告的记录(至少我的情况是这样),将这些 IP 加入排除访客 IP 名单里,之后就会是一个干干净净的统计后台了。 部分内容参考自: 如何屏蔽网站统计后台的垃圾广告 - 学做网站论坛
2021年12月26日
2,072 阅读
0 评论
0 点赞
2021-12-20
Spring Boot学习笔记
目录 一、Spring Boot简介 二、Spring Boot的主要特性 2.1、自动配置 2.2、起步依赖(Starters) 2.3、简化配置 2.4、内置服务器 2.5、无代码生成与 XML 配置 三、Spring Boot的配置 3.1、配置文件类型 3.1.1、application.properties 3.1.2、application.yaml(或.yml) 3.2、配置优先级 3.2.1、配置文件位置的优先级 3.2.2、配置文件格式的优先级 3.3、读取配置文件的方式 3.3.1、使用@Value注解 3.3.2、使用Environment对象 3.3.3、将部分配置封装成实体类 3.4、多环境开发时配置文件的切换 3.5、yml配置文件示例 四、整合MyBatis 4.1、添加起步依赖 4.2、添加配置 4.3、扫描Mapper接口 五、使用Maven打包Spring Boot项目 一、Spring Boot简介 Spring Boot 是 Spring 框架的一个扩展,旨在简化 Spring 应用的初始搭建和开发过程。它通过自动配置和约定优于配置的原则,提供一个开箱即用的应用程序架构,能够快速构建独立运行的 Spring 应用,开发者基于 Spring Boot 的预置结构继续开发,省时省力。 Spring Boot 官方文档:https://docs.spring.io/spring-boot/index.html Spring 中文网翻译的 Spring Boot 中文文档:https://springdoc.cn/spring-boot 通过 IDEA 创建 Spring Boot 项目: 添加核心依赖 Spring Web: 除了用 IDEA 创建 Spring Boot 项目,也可以直接访问 Spring Boot 项目生成网站,设定项目的元数据(如项目类型、语言、Spring Boot 版本等)之后,创建好的项目就会以压缩包的格式下载到本地,解压导入到开发工具即可。 Spring Boot 项目生成网站: https://start.spring.io/:Spring Boot 官方的项目生成工具,Java 版本和 Spring Boot 版本都比较新,国内有可能访问不了或访问速度比较慢 https://start.springboot.io/:官方项目生成工具的国内镜像,Java 版本和 Spring Boot 版本与官网一致,国内都能访问 https://start.aliyun.com/:从域名能看出来是阿里云镜像,国内都能访问,而且能用旧的 Java 版本和 Spring Boot 版本生成项目 一个典型的 Spring Boot 项目结构如下: SpringBoot-project/ ├── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── example/ │ │ │ └── MyApplication.java │ │ └── resources/ │ │ ├── application.properties │ │ └── static/ │ │ └── templates/ │ └── test/ │ └── java/ │ └── com/ │ └── example/ │ └── MyApplicationTests.java ├── pom.xml └── README.md MyApplication.java:Spring Boot 应用的主类,使用 @SpringBootApplication 注解标记。 application.properties:Spring Boot 应用的配置文件,可以配置各种属性。 static/:存放静态资源文件,例如 HTML、CSS、JavaScript 文件等。 templates/:存放模板文件,例如 Thymeleaf、Freemarker 等。 二、Spring Boot的主要特性 2.1、自动配置 开发者无需手动配置大量 XML 或注解,Spring Boot 能够根据项目中添加的依赖,自动为应用程序生成合理的默认配置,减少手动配置。例如,在项目中添加了 spring-boot-starter-web 依赖,Spring Boot 会自动配置嵌入式的 Tomcat 服务器,并为 Spring MVC 设置好必要的组件,如 DispatcherServlet 等,无需开发者手动编写大量的配置代码。 2.2、起步依赖(Starters) 起步依赖是指对常用库和框架的依赖声明的集合,使用起步依赖可以一次性地添加相关的依赖和配置到项目中,大大简化了项目的依赖管理,减少因依赖冲突而导致的问题。 比如,spring-boot-starter-data-jpa 包含了使用 Spring Data JPA 进行数据库操作所需的所有依赖,包括 Hibernate、Spring Data JPA 和数据库连接池等。 2.3、简化配置 Spring Boot 使用 application.properties 或 application.yml 作为统一的配置文件,将应用程序的各种配置集中管理,并且提供默认配置,尽量减少开发者的手动配置。这些配置文件放置在项目的类路径下,Spring Boot 会自动加载并应用其中的配置。 并且 Spring Boot 支持多环境配置,允许开发者根据不同的运行环境(如开发、测试、生产)使用不同的配置文件。通过在配置文件名中使用 {profile} 占位符,如 application-dev.yml、application-prod.yml,并在 application.yml 中指定 spring.profiles.active 属性来激活相应的环境配置。 2.4、内置服务器 Spring Boot 支持嵌入式的服务器,如 Tomcat、Jetty 和 Undertow 等,开发者可以将应用程序打包成一个可执行的 JAR 文件,使用 java -jar 命令可启动服务,无需单独部署到外部的应用服务器上。 例如,在开发 Web 应用时,只需在 pom.xml 文件中添加 spring-boot-starter-web 依赖,Spring Boot 会自动配置并启动一个嵌入式的 Tomcat 服务器,让开发者可以快速进行开发和测试。 2.5、无代码生成与 XML 配置 Spring Boot 无需代码生成和 XML 配置,完全基于注解和 Java 配置。 三、Spring Boot的配置 3.1、配置文件类型 Spring Boot 支持两种主要的配置文件类型:application.properties 和 application.yaml(.yml)。 3.1.1、application.properties 这是传统的 Java 配置文件格式,每行定义一个属性,采用 key=value 的形式。例如: server.port=8080 spring.datasource.url=jdbc:mysql://localhost:3306/spring_db spring.datasource.username=root spring.datasource.password=password 3.1.2、application.yaml(或.yml) YAML(YAML Ain't Markup Language)是一种人类可读的数据序列化格式,它的特点包括: 使用缩进(空格数不限)表示层级关系(必须用空格缩进,不能使用 Tab) 使用 key: value 的形式表示键值对 支持列表、嵌套结构等复杂数据类型 例如: server: port: 8080 spring: datasource: url: jdbc:mysql://localhost:3306/mydb username: root password: password 关于 .yaml 和 .yml 的区别: 在 Spring Boot 项目中,YAML 文件通常以 .yaml 或 .yml 作为文件扩展名。 这两种扩展名本质上是相同的,它们都表示 YAML 格式的文件。.yaml 是 YAML 文件的官方推荐扩展名,而 .yml 是 .yaml 的简写形式。在功能上两者完全等价,Spring Boot 对它们的解析方式没有任何区别,无论使用 .yaml 还是 .yml,Spring Boot 都能正确加载和解析配置文件。 如果同时存在 application.yaml 和 application.yml,Spring Boot 会优先加载 application.yml。 3.2、配置优先级 3.2.1、配置文件位置的优先级 优先级最高的配置是命令行参数,通过命令行传递的这个参数将会覆盖原配置: java -jar app.jar --server.port=9999 不同位置配置文件的优先级分别为: 项目根目录下的 /config 子目录中的配置文件 项目根目录中的配置文件 类路径下的 /config 包中的配置文件 类路径根目录中的配置文件 3.2.2、配置文件格式的优先级 如果在同一个目录下同时存在 application.properties、application.yml、application.yaml 这几个文件,那么 Spring Boot 对配置文件的加载优先级为: application.properties > application.yml > application.yaml 3.3、读取配置文件的方式 假设在 YAML 配置文件中存在如下配置: server: port: 8081 spring: datasource: url: jdbc:mysql://localhost:3306/spring_db?useSSL=false&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver userInfo: name: 张三 age: 30 likes: - 游戏 - 健身 - 读书 3.3.1、使用@Value注解 @Value 注解可以直接将配置文件中的单个属性值注入到类的字段中。 @Component public class ConfiurationBean { // 简单属性 @Value("${spring.datasource.url}") private String url; // 数组 @Value("${userInfo.likes}") private String[] likes; // 数组里的其中一个属性 @Value("${userInfo.likes[1]}") private String like; // ... } 3.3.2、使用Environment对象 在 Spring Boot 中,Environment(org.springframework.core.env.Environment)是一个用于管理应用程序运行时环境配置信息的接口,它可以使开发者方便地获取和使用项目的配置参数,无论是来自 application.properties、application.yml 文件,还是系统环境变量、命令行参数等。 在需要使用 Environment 对象的类中,可以使用 @Autowired 注解将 Environment 对象自动注入进来,然后在类的方法中使用 getProperty() 方法获取配置信息。 @Component public class ConfiurationBean { @Autowired private Environment env; public void printProperty() { // 获取并使用属性 String port = env.getProperty("server.port"); System.out.println(port); } } 3.3.3、将部分配置封装成实体类 创建一个 Java 实体类,属性与配置项一一对应,使用 @ConfigurationProperties 注解将配置文件中的属性绑定到该 Java 对象上: @Component @ConfigurationProperties(prefix = "userInfo") public class UserInfo() { private String name; private int age; private String[] likes; // get方法、set方法、构造方法 } 3.4、多环境开发时配置文件的切换 在项目的开发中,常常需要在多个环境(开发环境 dev、生产环境 prod 等)部署项目,并且每个环境的配置可能都不太一样(如日志等级、数据库属性等),因此每个环境都有单独的一个配置文件。 Spring Boot 支持根据不同的环境加载不同的配置文件,常用的做法是建一个公共配置文件 application.properties 或 application.yml 来存放每个环境中相同的配置,再给每一个环境建一个单独的配置文件存放个性化配置,该配置文件的命名规则为 application-{profile}.properties 或 application-{profile}.yml。 例如开发环境的配置文件为 application-dev.yml,生产环境的配置文件为 application-prod.yml,则在公共配置文件 application.yml 中激活指定配置文件的方式为: spring: profiles: active: dev 也可以在启动项目 JAR 文件时通过命令行参数 spring.profiles.active 指定: java -jar app.jar --spring.profiles.active=dev 如果既在公共配置文件 application.yml/application.properties 中指定了激活哪个配置文件,又通过命令行参数指定,则最后生效的是命令行参数,因为命令行参数的优先级最高。 在 IDEA 中也可以直接指定命令行参数: 新版本 IDEA: 3.5、yml配置文件示例 server: port: 8081 spring: datasource: url: jdbc:mysql://127.0.0.1:3306/spring_db?useSSL=false&setUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver # 数据源用druid type: com.alibaba.druid.pool.DruidDataSource # MyBatis配置 mybatis: # 指定Mapper XML文件的位置 mapper-locations: classpath:mapper/*.xml # 实体类的包路径 type-aliases-package: com.example.demos.web configuration: # 开启驼峰命名映射 map-underscore-to-camel-case: true # 项目日志等级 logging: level: # 全局日志等级 root: info # 设置MyBatis的日志级别为DEBUG com.example.mapper: debug org.mybatis: debug org.apache.ibatis: debug # 自定义配置 四、整合MyBatis 4.1、添加起步依赖 新版 IDEA 中可以直接在 pom.xml 文件的 <dependencies> 标签旁边点击 “Add Starters” 添加 MyBatis 与 MySql 的起步依赖: 或者手动在 pom.xml 文件中添加 MyBatis 的起步依赖与 MySQL、Druid 的依赖坐标: <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.2.22</version> </dependency> <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.1.4</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <scope>runtime</scope> </dependency> 4.2、添加配置 然后在配置文件中添加数据源与 MyBatis 配置: spring: datasource: url: jdbc:mysql://127.0.0.1:3306/spring_db?useSSL=false&setUnicode=true&characterEncoding=utf8&serverTimezone=UTC username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver # 使用druid数据源 type: com.alibaba.druid.pool.DruidDataSource # MyBatis配置 mybatis: # 指定Mapper XML文件的位置 mapper-locations: classpath:mapper/*.xml # 实体类的包路径 type-aliases-package: com.example.demos.web # 指定MyBatis的全局配置文件位置,可以进行更细颗粒度的MyBatis配置,不需要就不写 # config-location: classpath:mybatis-config.xml configuration: # 开启驼峰命名映射 map-underscore-to-camel-case: true # 项目日志等级 logging: level: # 全局日志等级 root: info # 设置MyBatis的日志级别为DEBUG com.example.mapper: debug org.mybatis: debug org.apache.ibatis: debug 4.3、扫描Mapper接口 最后在写接口的时候在上面用 @Mapper 注解标记一下这是 MyBatis 的 Mapper 接口: @Mapper public interface UserMapper { User select(); // ... } 或者直接在 Spring Boot 启动类上面用注解 @MapperScan() 进行全局配置扫描,指定 Mapper 接口类的包路径,Spring 会自动扫描该包下的所有接口,并将其注册为 MyBatis 的 Mapper 接口,无需在每个接口上都添加 @Mapper 注解。 @SpringBootApplication @MapperScan("com.example.mapper") public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 至此,Spring Boot 框架整合 MyBatis 框架完成。 五、使用Maven打包Spring Boot项目 在 pom.xml 文件中,确保配置了 Spring Boot Maven 插件: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>2.6.3</version> <configuration> <!-- 指定启动程序主类 --> <mainClass>com.example.demo.DemoApplication</mainClass> <skip>false</skip> </configuration> </plugin> </plugins> </build> 在项目根目录下运行打包的命令: # 其实是两条命令,mvn clean是清除项目target目录下的文件,mvn package打包命令,两个命令一起执行。 # -Dmaven.test.skip=true表示排除测试代码之后打包 mvn clean package -Dmaven.test.skip=true 或者在 IDEA 中依次操作 clean 与 package: 打包时,一般都要先进行 clean 操作清理项目之前构建过程中生成的临时文件和输出文件,使项目恢复到初始状态,目的是确保项目不会受到之前构建结果的影响,避免旧的文件干扰新的构建过程。 打包完成后,会生成两个 JAR 文件,其中一个后缀为 .original,只包含工程中的 Class,不包含依赖;另一个后缀为 .jar 的文件是 SpringBoot 打包插件创建的,包含了应用依赖和 Spring Boot 相关的 Class,可以直接运行。生成的 JAR 文件保存在 target 目录下,文件名为 {项目名称}-{版本号}.jar。例如:demo-0.0.1-SNAPSHOT.jar 使用以下命令运行打包好的 JAR 文件: java -jar demo-0.0.1-SNAPSHOT.jar 并且可以通过命令来指定部分参数: java -jar demo-0.0.1-SNAPSHOT.jar --server.port=9999 --spring.profiles.active=prod
2021年12月20日
2,090 阅读
0 评论
2 点赞
1
2
...
6