首页
碎碎念
东邻西舍
本站信息
前来吐槽
Search
1
openwrt系统上安装第三方插件
11,243 阅读
2
ubuntu下zerotier的基本使用教程
6,125 阅读
3
给小米R3G更换系统:从padavan刷成openwrt
2,513 阅读
4
为padavan安装SSL证书
1,389 阅读
5
openwrt无线中继功能:实现不插网线就能上网
1,378 阅读
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
登录
Search
标签搜索
Linux
建站
踩坑实录
Ubuntu
Java
MySQL
CSS
折腾搞机
HTML
SQL
MyBatis
Nginx
只言片语
树莓派
OpenWrt
路由器
SSL
Maven
Git
随笔
知识分子没文化
累计撰写
78
篇文章
累计收到
63
条评论
首页
栏目
学习点滴
Java
Web前端
Linux
踩坑实录
折腾搞机
关于建站
只言片语
页面
碎碎念
东邻西舍
本站信息
前来吐槽
搜索到
78
篇与
知识分子没文化
的结果
2022-05-01
求求了,疫情快结束吧,我要开学啊!!!
[Meting] [Music server="netease" id="108632" type="song"/] [/Meting] 转眼已经到了五月份,我已经在家里待了两个月了,寒假里一块玩的哥们都去上学了,就剩我一个开学了还在家里待着,不知道的还以为我辍学了呢。 这两个月用发霉来形容一点也不夸张,我本身自制力不强,又在长草期般的大四碰上疫情开不了学,结果就是整天什么也不想干,浑浑噩噩,整个人状态极差。三月里玩归玩,好歹还完成了毕业设计的前端部分,后端开了个头。但在四月就离谱了,整个月的时间都用来打游戏了,毕业设计更是一点都没动。 如果要是还在大二大三时候,我一定会没心没肺地玩到过年,问题是今年就要毕业了啊。大四的开题答辩、中间检查、论文答辩这些网上能干的暂且不说,主要是在学校旁边学的驾照还没过科目二呢,毕业之前学不完的话,总不能在毕业之后专门跑到学校旁边去考驾照吧,到时候连住的地方也没有了。 现在时常能感觉到,游戏对我来说好像真的没有当初高中时那么吸引我了,但是现在还是依然玩得停不下来,游戏貌似已经成为了我逃避现实的一个工具,只要在游戏中,现实中的烦恼就会远离我。可是游戏结束之后,现实中的烦恼还是需要面对。游戏以外的生活,除了空虚还是空虚。 快开学吧,累了,真的不想这么在家里待着了。
2022年05月01日
33 阅读
4 评论
0 点赞
2022-03-30
再不更新博客快要长草了
[Meting] [Music server="netease" id="511998142" type="song"/] [/Meting] 我回来了,更新博客刷一下存在感... :@(害羞) 好久没更新了,今天是 2022 年 3 月 30 日,上一次更新还是过年的时候,算算时间可能是我断更最长的一次了,所以,在这 3 月的最后一天(事后纠正:脑子傻了,忘了 3 月还有 31 号),趁着这会 IDEA 在进行 git 提交的时候,特地来水一篇博客耍一波存在感(理直气壮叉腰) :@(吐舌) 。 这段时间挺废的,窝在家打了不少的游戏。原定于上个月开学的,结果开学前两天正好碰上学校周围出现了病例,开学时间就这么被无限期推迟了,至今学校还没有通知,能不能在 4 月份开学未知。 大四最后半学期了,窝在家的这段时间里连网课也没得上,就只剩下毕设与论文了,这段时间才磨磨唧唧的开始写毕设,去他丫四月份的中期检查,随缘吧 ::(挖鼻) 。 看一眼 IDEA,提交 git 卡住了,看来是指望不上了,我得手动提交了,流水账就记到这吧。我是狗子,祝你幸福。下次再见! ::(勉强)
2022年03月30日
29 阅读
4 评论
1 点赞
2022-02-14
【新手向】如何下载安装激活 Office
[Meting] [Music server="netease" id="191086" type="song"/] [/Meting] 目录: 前言 一、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日
97 阅读
0 评论
0 点赞
2022-02-13
【新手向】如何激活 Windows 系统
[Meting] [Music server="netease" id="1429197696" type="song"/] [/Meting] 目录: 前言 一、简要介绍一些激活方式 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日
274 阅读
0 评论
0 点赞
2022-02-12
CS1.6 服务器安装插件及优化教程
[Meting] [Music server="netease" id="167732" type="song"/] [/Meting] 目录: 一、安装插件破解服务器正版限制 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 安装文档: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 解压压缩包,要用到的是 “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日
334 阅读
0 评论
0 点赞
2022-01-25
Joe主题添加文章侧边栏目录
[Meting] [Music server="netease" id="186855" type="song"/] [/Meting] 目录: 一、安装插件 二、插件使用 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日
401 阅读
13 评论
5 点赞
2022-01-16
Ubuntu搭设CS1.6游戏服务器
[Meting] [Music server="netease" id="167937" type="song"/] [/Meting] 目录: 前言 一、创建系统新用户 二、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)](http://www.dt-club.net/thread-46567-1-1.html
2022年01月16日
466 阅读
2 评论
0 点赞
2021-12-26
网站统计后台的垃圾广告及屏蔽措施
[Meting] [Music server="netease" id="185726" type="song"/] [/Meting] 目录: 一、后台垃圾广告是什么 二、预防措施 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日
222 阅读
0 评论
0 点赞
2021-12-11
常用的一些Nginx配置
[Meting] [Music server="netease" id="27483168" type="song"/] [/Meting] 目录: 1、监听端口 2、日志功能 2.1、访问日志 2.2、错误日志 3、配置域名 4、静态资源 5、重定向 5.1、网站根目录重定向 5.2、特定目录重定向 6、反向代理 7、负载均衡 8、SSL配置 1、监听端口 server { # 用于HTTP协议 listen 80; # 用于HTTPS协议 listen 443 ssl; # 用于HTTP2 listen 443 ssl http2; # 使用IPv6监听80端口 listen [::]:80; # 仅使用IPv6 listen [::]:80 ipv6only=on; } 2、日志功能 Nginx的日志分为两种:access_log (访问日志)和 error_log(错误日志)。 对于日志的格式,Nginx提供了一种名为 combine 的格式,如果没有明确指定日志格式则默认使用该格式。 如果不使用 combine 格式的话,可以使用 log_format 指令来自定义,其具体用法参考Nginx日志配置详解或者官方文档:HttpLog模块-Nginx中文文档。 2.1、访问日志 访问日志主要记录客户端的请求,客户端向Nginx服务器发起的每一次请求都记录在这里。客户端IP,浏览器信息,referer,请求处理时间,请求URL等都可以在访问日志中得到。 server { # 访问日志文件的写入位置,相对或绝对路径 access_log /path/to/file.log; # 选择访问日志功能的开启(on)或关闭(off) access_log on; } 2.2、错误日志 错误日志记录服务器和请求处理过程中的错误信息。 server{ # 错误日志的写入位置 error_log logs/error.log error; # 错误日志的级别,分为 debug, info, notice, warn, error, crit, alert,emerg,其取值范围是按紧急程度从低到高排列 # 只有日志的错误级别等于或高于level指定的值才会写入错误日志中。默认值是error error_log file [level]; } 3、配置域名 server { # 监听domain.com server_name domain.com; # 监听多个域名 server_name domain.com www.domain.com; # 监听所有域名 server_name *.domain.com; # 监听所有顶级域名 server_name domain.*; # 监听未指定的主机名(比如侦听IP地址本身) server_name ""; } 4、静态资源 server { listen 80; server_name domain.com; location / { # 设置网站的根目录 root /path/to/website; } } 5、重定向 5.1、网站根目录重定向 server { listen 80; server_name www.domain.com; # 将 www.domain.com 进行301重定向,跳转至 http://domain.com$request_uri return 301 http://domain.com$request_uri; } 5.2、特定目录重定向 server { listen 80; server_name www.domain.com; # 将链接 http://www.domain.com/redirect-url 进行301重定向,跳转到http://otherdomain.com location /redirect-url { return 301 http://otherdomain.com; } } 如将 domain.com 永久重定向到 www.domain.com: server { listen 80; server_name domain.com; return 301 http://www.$host$request_uri; } 6、反向代理 反向代理 - 维基百科,自由的百科全书 (wikipedia.org) Reverse proxy - Wikipedia server { listen 80; server_name domain.com; # 对特定主机的3000端口进行反向代理 location / { proxy_pass http://0.0.0.0:3000; } } 7、负载均衡 负载均衡 - 维基百科,自由的百科全书 (wikipedia.org) Load balancing (computing) - Wikipedia upstream node_js { server 0.0.0.0:3000; server 0.0.0.0:4000; server 123.131.121.122; } server { listen 80; server_name domain.com; location / { proxy_pass http://node_js; } } 8、SSL配置 server { listen 443 ssl; server_name domain.com; ssl on; # 证书文件,格式不一定都是pem,还可能是其他格式 ssl_certificate /path/to/cert.pem; # 秘钥文件,格式不一定都是pem,还可能是其他格式 ssl_certificate_key /path/to/privatekey.pem; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; ssl_session_timeout 1h; ssl_session_cache shared:SSL:50m; add_header Strict-Transport-Security max-age=15768000; } # 将HTTP永久重定向到HTTPS server { listen 80; server_name domain.com; return 301 https://$host$request_uri; } 部分内容转载修改自: Nginx Cheatsheet (hashnode.dev) Nginx日志配置详解_biubiuli的博客-CSDN博客_nginx 日志配置
2021年12月11日
172 阅读
0 评论
0 点赞
2021-12-08
【踩坑实录】Github提交时出现错误:remote:Permission to xxx/test.git denied to xxx
[Meting] [Music server="netease" id="346085" type="song"/] [/Meting] 目录: 问题再现 错误原因 解决方法 问题再现 Github 提交时出现错误,报错信息如下: remote: Permission to xxx/test.git denied to xxx. fatal: unable to access 'https://github.com/xxx/test.git/': The requested URL returned error: 403 如果再试一次,可能还会有如下报错: fatal: unable to access 'https://github.com/xxx/xxx.git/': OpenSSL SSL_read: Connection was reset, errno 10054 或者: fatal: unable to access 'https://github.com/xxx/xxx.git/': Failed to connect to github.com port 443: Timed out 错误原因 这个是由于在同一台计算机上先后使用了两个Github账号。 第一个账号进行了提交之后,这个账号的凭据信息就被保存了下来,然后切换到第二个账号进行提交时,系统依然会使用第一个账号的凭据信息进行提交,因此便会报错。 解决方法 进入控制面板,找到凭据管理器选项,选择其中的 Windows 凭据,删除已经保存的 Github 凭据: 然后再重新进行提交操作,此时会弹出Github登录窗口,重新登录之后就能成功提交了。
2021年12月08日
174 阅读
0 评论
0 点赞
2021-11-19
【代码摘录】HTML+CSS实现下拉菜单
[Meting] [Music server="netease" id="118644" type="song"/] [/Meting] 目录: 一、演示效果 二、源代码 1.HTML代码 2.CSS 在B站上看到一个up主写的一段下拉菜单代码,实现效果还挺好看的,遂进行小改之后拿来收藏,以供日后使用。 源代码出自:B站up主 山羊の前端小窝 视频链接:https://www.bilibili.com/video/BV1S44y147oV 一、演示效果 演示如下,鼠标悬浮即可查看效果: 二、源代码 1.HTML代码 <body> <ul class="shell"> <li class="button"> <span>消息</span> <ul> <li><a href="" target="_blank">回复我的</a></li> <li><a href="" target="_blank">收到的赞</a></li> <li><a href="" target="_blank">我的消息</a></li> </ul> </li> <li class="button"> <span><a href="" target="_blank">动态</a></span> </li> <li class="portrait"> <ul class="information"> <li>知识分子没文化</li> <li><a href="https://www.wlplove.com" target="_blank">博客</a></li> </ul> </li> <li class="button"> <span>收藏夹</span> <ul> <li><a href="" target="_blank">默认收藏夹</a></li> <li><a href="" target="_blank">计算机编程</a></li> <li><a href="" target="_blank">有点意思</a></li> <li><a href="" target="_blank">说的不错</a></li> </ul> </li> <li class="button"> <span>投稿</span> <ul> <li><a href="" target="_blank">专栏投稿</a></li> <li><a href="" target="_blank">音频投稿</a></li> <li><a href="" target="_blank">贴纸投稿</a></li> <li><a href="" target="_blank">视频投稿</a></li> <li><a href="" target="_blank">投稿管理</a></li> </ul> </li> </ul> </body> 2.CSS * { margin: 0; padding: 0; list-style: none; font-size: 20px; color: #f4f1de; } .shell { display: flex; justify-content: center; margin-top:50px; } .button, .portrait { background-color: #50536e; width: 170px; height: 65px; text-align: center; line-height: 65px; transition: 0.3s; /* 指定浏览网页时鼠标指针的形状 */ cursor: pointer; } .portrait::before { content: ''; display: block; width: 100px; height: 100px; border-radius: 50%; transform: translate(30px, -30px); background-image: url("https://image.wlplove.com/static/img/icon/headpic.png"); background-size: cover; border: 10px solid #fff; } .information { width: 220px; background-color: #e07a5f; transform: translate(-20px, -200px); border-radius: 10px; padding: 20px 0; line-height: 0; height: 0; transition: 0.3s; /* opacity属性指定了一个元素的不透明度,其取值从0-1。*/ /* 在0时会完全看不见,1表示完全可见 */ opacity: 0; } .button:hover { background-color: #d15a39; } .button li:hover { background-color: #ffb29d; } .button ul li { height: 0; transition: 0.2s; opacity: 0; transform: translateY(-65px); background-color: #e07a5f; } .button:hover li { height: 65px; opacity: 1; transform: translateY(0); } .portrait:hover .information { opacity: 1; line-height: 65px; transform: translate(-20px, -10px); height: auto; } a{ text-decoration: none; }
2021年11月19日
270 阅读
0 评论
0 点赞
2021-10-31
MySQL数据表中的auto_increment自增值属性及修改
[Meting] [Music server="netease" id="187672" type="song"/] [/Meting] 目录: 0x01. 查看自增值 1、查看全局自增值 2、查看特定数据表的自增值 0x02. 自增值的取值问题 1、默认取值 2、建表时指定 3、直接指定 4、修改自增字段属性 环境说明: MySQL 5.7 、MySQL 8.0 长期以来,我的博客数据库中连续文章的主键编号一直都不是连续的,让我这个强迫症晚期患看着很不舒服。在忍受了这么长时间以后,趁着给博客换域名的时机,我把所有的文章编号全部改成了连续的,可算是舒服多了。 把改完主键编号的文章数据导入新数据库之后,就产生了一个新问题:现在新数据表的主键自增值还是旧数据表的主键自增值。比如说博客数据库的文章表中有80条数据,下次新创建文章的编号是以旧数据库的自增值202开始递增,生成的新文章编号是203,而不是81。如果要保持文章编号能连续的话,就只能每次发布完新博客之后再去改数据库中的编号,可谓是相当麻烦。 所以我便想着是否可以通过修改数据表里主键的 AUTO_INCREMENT 自动递增值来一步到位,查了一些资料之后,就有了这篇博客。 0x01. 查看自增值 一般来说,数据表中具有自增属性 AUTO_INCREMENT 的字段主要是数据表的主键或者具有唯一性的字段。 如果要查阅其递增值,有这么两种方式: 1、查看全局自增值 SHOW VARIABLES LIKE 'AUTO_INC%'; 这条命令的执行结果会返回两条数据: AUTO_INCREMENT_INCREMENT 表示自增的初始值,AUTO_INCREMENT_OFFSET 表示自增的步长,即每次的自增量。 修改自增初始值与自增量的命令: SET @@AUTO_INCREMENT_INCREMENT=新初始值; SET @@AUTO_INCREMENT_OFFSET=新步长; 注意:这个表示的是数据库全局的自增设置,因此修改以后只会影响到下次新增的带有 AUTO_INCREMENT 属性的列,其自增初始值与自增步长就是新设置的值,对当前已经带有 AUTO_INCREMENT 属性的列的自增初始值与自增步长不起作用。 2、查看特定数据表的自增值 要想查看某个数据表中自增字段的当前自增值,可用以下命令: SHOW TABLE STATUS FROM [数据库名] LIKE [表名]; FROM [数据库名] 与 LIKE [表名] 这两个子句是可选的。 FROM [数据库名] 表示指定查询所在的数据库;LIKE [表名] 指定该数据库下要查询的某个表,如果省略了 LIKE [表名] 子句,则表示查看该数据库下的所有表的信息。 另外,需要注意的是,表名要加引号。 比如查询 TEST 数据库下 test 表的信息: SHOW TABLE STATUS FROM TEST LIKE 'test'; 查询结果中有一个字段名为 “AUTO_INCREMENT”,表示的就是自增值,该表下一条记录的编号就是这个值。 0x02. 自增值的取值问题 1、默认取值 默认情况下,自增值从1开始,每增加一条新记录,自增值便会自增 1。 所以,对于具有 AUTO_INCREMENT 属性的列,不用特意设置列值,而是直接将 NULL 值插入到自增列中去,数据库会自动根据当前的自增值生成列值。 注意: 将 0 插入到自增列中的效果等同于插入 NULL 值; 当插入记录时,如果没有为自增列明指定值,那么也等同于插入 NULL; 使用 INSERT 语句插入记录时,如果为自增列设置了一个值,那么会出现这样三种情况: 情况一,插入的值与已有的编号重复,则会出现报错 情况二,插入的值大于列的自增值,成功插入这条记录,并且会更新自增值为新值 情况三,插入的值小于列的自增值且与已有的编号不重复,则成功插入这条记录,但自增值不会更新,如果插入的值与已有的值重复,参考情况一 如果用 UPDATE 语句更新自增列,情况与 INSERT 语句相同。 2、建表时指定 我们也可在建表时使用 “AUTO_INCREMENT=自增值” 来指定一个自增的初始值,比如: CREATE TABLE TEST{ -- 建表语句 }AUTO_INCTEMENT=自增值; 3、直接指定 ALTER TABLE [表名] AUTO_INCREMENT=自增值; 如果执行完以后没有效果,那么可以再执行一次 commit 指令以提交更改,使其生效。 4、修改自增字段属性 ALTER TABLE [表名] MODIFY [字段名] [字段类型和约束条件], AUTO_INCREMENT=自增值; 同样的,如果执行完以后没有效果,再执行一次 commit 提交更改。 这个语句相当于直接修改自增字段的属性,包括其数据类型和约束条件。 另外,我在尝试中发现,使用 SQL 语句更改了自增值以后再执行 SHOW TABLE STATUS 语句来验证是否修改成功,本地的数据库显示自增值已经修改过来了。但是,服务器上的数据库自增值依然还是原来的值,可是,当我在重新插入一条记录时,新记录的自增值却是修改过后的值。这属实让我有点摸不着头脑,我也不太确定是不是 MySQL 版本不同的原因,也懒得再尝试了,所以把这种情况记录上来以供参考吧。
2021年10月31日
502 阅读
0 评论
0 点赞
2021-10-24
恭喜博主喜提烧掉的树莓派4B一枚
[Meting] [Music server="netease" id="452601484" type="song"/] [/Meting] 开头一首《凉凉》先送给我自己。 正如标题所言,我的树莓派 4B,它挂了 :@(不高兴) 事情经过 我的树莓派 4B 之前刷了 openwrt 系统之后,用了一段时间,但是在学校宿舍里插座不够,找不出长时间空闲的插座给树莓派了。然后很顺其自然地,它就吃灰了(吃灰派果然名不虚传)。 这几天打算把百度云的文件迁到阿里云盘去,奈何没有会员的百度云下载实在太慢,所以就想着把下载任务挂到刷了 openwrt 的树莓派上慢慢下载。昨天晚上给树莓派接上一块500G的移动硬盘,供电插到充电宝,连上校园网 wifi,设置好任务就开始下载了。 下载了一个多小时以后,我发现充电宝上表示电量的四个指示灯全部开始闪烁,正常状态下应该是常亮的,而且树莓派的风扇也不转了。当时我还没太在意,以为只是偶发性故障,就先拔掉了充电宝上插着的树莓派的供电线,想着重新通一次电就会好了。供电线拔掉之后充电宝指示灯灭了,第二次再把供电线插到充电宝上的时候,像刚才那样,充电宝的四颗指示灯闪烁几下就灭了,树莓派的风扇不仅不转,红灯也是只闪了一下很暗的光就灭了,绿灯根本不亮,就像这样: 我此时已经隐约感觉到了不对劲,但还是抱了一丝希望,直到我用手机充电线、平板充电线都尝试过后树莓派还是无法正常启动,风扇纹丝不动,这时我意识到了问题的严重性。 我手里这块树莓派果然还是烧掉了..... :@(哭泣) 损失 净损失当然是这块树莓派 4B 了,其实要是放在之前,我可能还没这么痛心。 奈何疫情这两年的市场千变万化,今年来树莓派整个产品系列都涨价了不少。我手里这块是 2GB 版本的,2020 年双十一时候两百二十多块买的,各种券凑起来优惠了几十块钱: 当时一块 2GB 版本的裸板价格也就是两百四到两百八之间(图中贵点那是因为双十一之前还小涨了二十块)。可是今年(2021)的价格就涨得很离谱了: 同样的一家店,同样的 2GB 内存版本的树莓派 4B,今年直接涨到583,涨价幅度达到了三百元,价格足足翻了一倍!!树莓派产品活脱脱变成了理财产品 :@(鼓掌) 就在价高的时候,我手里这块板给烧掉了,这四舍五入相当于损失了一个亿啊...... 不过玩笑归玩笑,现在连卖二手回血的机会都没了倒是真的 :@(吐血倒地) 教训 现在完整回顾这件事,思来想去,原因我认为可能还是我个人不注意树莓派的供电,直接拉了一个充电宝就当电源了,以为没事,然后就被打脸了。 给树莓派供电的充电宝是19年年底买的,已经用了两年,内部电路模块不可避免有老化的情况,无法给树莓派提供稳定的供电。因此目前初步猜测是电源芯片可能烧了,就是这个东西: 电源芯片型号是MXL7704-P4: 我在淘宝没有查到这个型号的芯片,有一个类似的型号是“MXL7704-R3”,貌似是用在树莓派 3B 上的电源芯片。 不知道能不能用在树莓派 4B 上,懒得去问店家了,就先放着让它吃灰吧,以后手头有热风枪这类设备或者能找到能修理树莓派的大佬再说吧。
2021年10月24日
487 阅读
0 评论
0 点赞
2021-10-19
总结一下CSS3中的Flex布局语法
[Meting] [Music server="netease" id="85255" type="song"/] [/Meting] 前排提示: 本篇博客篇幅较长,建议结合目录查看! 目录: 0x01. Flex 布局简介 如何应用 Flex 布局 0x02. 基本概念 0x03. 用于父元素的属性 3.1、flex-direction 属性取值 图示说明 CSS代码 3.2、flex-wrap 属性取值 图示说明 CSS代码 3.3、flex-flow 3.4、justify-content 属性取值 图示说明 CSS代码 3.5、align-items 属性取值 图示说明 CSS代码 3.6、align-content 属性取值 图示说明 CSS代码 0x04. 用于子元素的属性 4.1、flex-grow 属性取值 图示说明 CSS代码 4.2、flex-shrink 属性取值 图示说明 CSS代码 4.3、flex-basis 属性取值 CSS代码 4.4、flex 4.5、align-self 属性取值 图示说明 CSS代码 4.6、order 属性取值 0x05. 简单应用 Flex 布局有时候会用到,但是始终分不清楚其中的部分属性及其含义,所以用这篇博客专门总结一下 Flex 布局。 特别说明:博主初入门 Flex 布局看的是Flex 布局教程:语法篇 - 阮一峰的网络日志 (ruanyifeng.com)这篇教程,教程整体上条理清晰,讲得通俗易懂,但是不太方便快速查阅相关属性。因此本篇博客将以这篇教程为基础(所以不可避免地在文章结构与部分内容上可能会与教程有很大部分相似),以我自己的理解重新总结一遍 Flex 布局,以方便我自己查阅。如果您认为本篇博客讲的不够清楚,建议您参考教程原文。 另外,关于 Flex 布局中的属性效果演示,推荐看这个视频: {bilibili bvid="BV1oK4y1j7pa" page=""/} 0x01. Flex 布局简介 网页布局的传统解决方案,基于盒状模型,依赖 display 属性 + position 属性 + float 属性。它对于那些特殊布局非常不方便,比如,垂直水平居中就不容易实现。 2009年,W3C 提出了一种新的方案—— Flex 布局,可以简便、完整、响应式地实现各种页面布局。目前,它已经得到了所有浏览器的支持。 Flex 是 Flexible Box 的缩写,意为"弹性布局",用来为盒状模型提供最大的灵活性。 简单来说,Flex 布局可以极大地改善对于父元素和多个子元素进行布局的难度。 如何应用 Flex 布局 刚开始接触到 Flex 布局的时候,那么多的属性及其含义倒不是首要问题,最大的问题是不知道如何去应用 Flex 布局。 其实给一个元素添加 Flex 布局很简单,只需要在 CSS 代码中设置其 display 属性为 flex 或者 inline-flex 即可。其中,对于Webkit 内核的浏览器,还必须加上-webkit前缀。 对于div、p、form、ul、ol等这些块状元素,使用 Flex 布局的方式为(以 div 为例): div{ display:flex; display:-webkit-flex } 对于诸如 span 等行内元素来说需要将属性值更换为 inline-flex: span{ display:inline-flex; display:-webkit-inline-flex; } 注意:设置 Flex 布局以后,子元素的 float、clear 和 vertical-align 属性将失效。 0x02. 基本概念 将采用了 Flex 布局的元素称为 Flex 容器(flex container)。它的所有子元素将自动成为容器成员,成为 Flex 项目(flex item)。 在 Flex 容器中,默认存在两根轴:水平的主轴(main axis)和垂直的交叉轴(cross axis)(不知道为什么会起这么奇怪的名字)。 其中,主轴的开始位置叫做 main start,结束位置叫做 main end;而交叉轴的开始位置叫做 cross start,结束位置叫做 cross end。 子元素默认沿主轴排列,单个子元素所占的主轴空间叫做 main size,占据的交叉轴空间为 cross size。 以上就是在 Flex 布局中涉及到的一些基本概念。 除了基本概念之外,还有许多 Flex 布局会用到的属性,根据这些属性的使用位置可以简单将其分为两类,分别是应用在父元素(容器)上的属性和应用在子元素(项目)上的属性。下面分别对其进行简单的介绍与解释。 0x03. 用于父元素的属性 3.1、flex-direction flex-direction属性决定主轴的方向,表现就是 Flex 容器中子元素的排列方向(比如说横向或纵向)。 属性取值 默认值为 row。 属性名 含义 row(默认值) 主轴为水平方向,起点在左端 row-severse 主轴为水平方向,起点在右端 column 主轴为垂直方向,起点在上边 column-reverse 主轴为垂直方向,起点在下边 图示说明 CSS代码 .box { flex-direction: row | row-reverse | column | column-reverse; } 3.2、flex-wrap 默认情况下,子元素都排在一条轴线上。 当子元素多到一条轴线排列不下的时候,用 flex-wrap 就可以定义这些子元素换行的形式,比如顺序、倒序之类的。 属性取值 默认取值为 nowrap,即不换行。 属性名 作用 nowrap(默认) 不换行 wrap 换行,第一行在上方 wrap-reverse 换行,第一行在下方 图示说明 CSS代码 .box { flex-wrap: nowrap | wrap | wrap-reverse; } 3.3、flex-flow flex-flow 属性是 flex-direction 和 flex-wrap 的缩写形式。 默认值为 row nowrap。 3.4、justify-content justify-content 属性定义了子元素在主轴上的对齐方式(比如靠左/右/上/下、居中等等)。 注意:这个属性与 flex-direction 有区别,不能混淆。 属性取值 默认值为 flex-start。 属性名 作用 flex-start(默认) 左对齐 flex-end 右对齐 center 居中 space-between 两端对齐,子元素之间的间隔相等 space-around 每个子元素两侧的间距相等 space-evenly 子元素之间的间隔和子元素与边框的间隔相等(兼容性较差) 图示说明 CSS代码 .box { justify-content: flex-start | flex-end | center | space-between | space-around; } 3.5、align-items align-items 属性定义子元素在交叉轴上的对齐方式(与 justify-content 属性类似)。 属性取值 默认值为 stretch。 属性名 作用 stretch(默认) 表示如果子元素未设置高度或设为auto,将占满整个容器的高度 flex-start 从交叉轴的起点对齐 flex-end 从交叉轴的终点对齐 center 从交叉轴的中点对齐 baseline 按照子元素的第一行文字的基线对齐 图示说明 CSS代码 .box { align-items: flex-start | flex-end | center | baseline | stretch; } 3.6、align-content align-content 属性定义了多根轴线的对齐方式。如果子元素只有一根轴线,则属性不起作用。 属性取值 默认值为 stretch。 属性名 作用 flex-start 沿交叉轴的起点对齐 flex-end 沿交叉轴的终点对齐 center 沿交叉轴的中点对齐 space-between 与交叉轴两端对齐,轴线之间的间隔平均分布 space-around 每根轴线两侧的间隔都相等。所以,轴线之间的间隔比轴线与边框的间隔大一倍 stretch(默认值) 轴线占满整个交叉轴 图示说明 CSS代码 .box { align-content: flex-start | flex-end | center | space-between | space-around | stretch; } 0x04. 用于子元素的属性 4.1、flex-grow 元素布局时经常会出现这样的情况,当所有子元素水平排列时的宽度之和(或者纵向排列时的高度之和)小于父元素的宽度(高度)时,则当前父元素在这个方向上就会出现剩余空间。那么此时就可以用 flex-grow 属性来分配这些剩余空间,以使子元素完全填充父元素。 属性取值 flex-grow 属性的值是一个数字,没有单位。 默认值为0,表示如果存在剩余空间,也不会放大子元素的宽度(或高度)。 当给子元素的 flex-grow 属性值设置为一样时,表示平均分配这个方向上的宽度(高度),可以利用这点来给元素做等宽布局。 如果一个子元素的 flex-grow 属性为2,其他子元素都为1,则前者占据的剩余空间将比其他项多一倍。 注意:当子元素的宽度/高度(width/height)属性与 flex-grow 同时存在时,元素最终的宽度/高度将由 flex-grow 属性来决定。 图示说明 CSS代码 .item { flex-grow: <number>; /* default 0 */ } 4.2、flex-shrink 这个属性的含义与 flex-grow 相反,当剩余空间较小不足以容纳所有子元素时,就可用这个属性指定某个子元素的缩小比例。 属性取值 类似 flex-grow,flex-shrink 属性的值也是一个数字。该属性默认值为1,即如果空间不足,该子元素将缩小。 如果所有子元素的 flex-shrink 属性都为1,当空间不足时,这些子元素都将等比例缩小。 如果一个子元素的 flex-shrink 属性为0,其他子元素属性为1,则空间不足时,前者不缩小。 负值对该属性无效。 图示说明 CSS代码 .item { flex-shrink: <number>; /* default 1 */ } 4.3、flex-basis flex-basis属性定义了在分配多余空间之前,子元素占据的主轴空间(main size)。浏览器根据这个属性,计算主轴是否有多余空间。 属性取值 默认值为 auto,即子元素本来的大小。 flex-basis 属性值可以设置成与 width 或者 height 属性一样的值,则子元素将占据固定空间。 CSS代码 .item { flex-basis: <length> | auto; /* default auto */ } 4.4、flex 类似于前面的 flex-flow 属性,flex 属性是 flex-grow、flex-shrink 和 flex-basis 这几个属性的缩写形式。后两个属性(flex-shrink 和 flex-basis)可选。 默认值为“0 1 auto”。 4.5、align-self align-self 属性允许某个子元素有与其他子元素有不一样的对齐方式,设置了这个属性之后,将会覆盖父元素的 align-items 属性。 默认值为 auto,表示继承父元素的 align-items 属性,如果没有父元素,则等同于 strech。 属性取值 该属性的取值除了 auto ,其余的与 align-self 属性的取值相同。 属性名 作用 auto(默认) 继承父元素的 align-items 属性 flex-start 沿交叉轴的起点对齐 flex-end 沿交叉轴的终点对齐 center 沿交叉轴的中点对齐 baseline 按照子元素的第一行文字的基线对齐 stretch 如果子元素未设置高度或设为auto,将占满整个容器的高度 图示说明 CSS代码 .item { align-self: auto | flex-start | flex-end | center | baseline | stretch; } 4.6、order order 属性可以很方便地定义子元素的排列顺序,而不用去调整 HTML 代码中元素的代码顺序。 属性取值 默认值为0。 属性取值为数字,数字数值越小,则子元素排列越靠前。 0x05. 简单应用 其中最直观的应用就是将一个元素进行垂直水平方向的居中,且不管页面变化,依然能够生效。以 div 为例进行说明: <html> <head> <style> body{ background-color:#ccc; display:flex; justify-content:center; align-items:center; } div{ border:3px solid #000; background-image: linear-gradient(to right, #a18cd1, #fbc2eb); border-radius: 10px; width: 20%; height: 40%; } </style> </head> <body> <div></div> </body> </html> 预览效果: 在使用 Flex 布局方式进行垂直水平方向的居中布局时,只需要给父元素添加 Flex 布局方式,然后将 justifu-content 与 align-items属性值都设为 center 即可,不仅设置起来简单,还能保持良好的兼容性。 参考资料: Flex 布局教程:语法篇 - 阮一峰的网络日志 (ruanyifeng.com) Flex 布局教程:实例篇 - 阮一峰的网络日志 (ruanyifeng.com) Bilibili视频链接:20分钟掌握CSS Flex布局 - bilibili 文中图片出自:Flex 布局教程:语法篇 - 阮一峰的网络日志 (ruanyifeng.com)
2021年10月19日
415 阅读
0 评论
2 点赞
本站已启用新域名www.wlplove.com
亲爱的访客您好! 本站自2021年10月中旬起将使用新域名 www.wlplove.com 。旧域名 www.langp.wang 的所有链接都将会跳转至新域名首页。 为什么把旧域名所有链接全部跳转至新域名首页而不是把旧链接直接重定向到新链接? 我以前连续的文章,编号其实是不连续的,这就让我看着很别扭。在忍受了这么长时间以后,趁着给博客换域名的机会,我把所有的文章编号全部整理成了连续的,这下可算是舒服多了。 当然,代价就是之前的大部分文章页面链接都将会失效,而且文章旧地址无法直接重定向至新地址。并且,搜索引擎中旧域名的收录无法转移到新域名,这相当于是又从一个新域名起步了。 所以我要怎么访问原网页? 其实我也没什么好的办法,只能推荐您使用关键字在 博客新地址首页 进行搜索了。 最后,对于访问过程中给您造成的不便致以最诚恳的歉意!! 博主:知识分子没文化
2021年10月14日
139 阅读
0 评论
0 点赞
1
2
...
6