星期一, 五月 31, 2021

ASCII、Unicode和UTF-8编码方式的区别与应用

星期一, 五月 31, 2021 0 Comments

计算机使用数据来理解世界,即将世界视为数字。它无法直接理解所谓的字符。

为了处理字符,计算机必须对其进行表示。通常,字符和数字之间存在一套对应规则,即编码。

  • ASCII 规定了字母和特殊字符的编码规则,仅需256位。在英语语境下,这256个字符构成了全部的文字系统。

  • 汉字不同于英语,汉字是象形文字,无法通过组合构成。因此,汉字需要单独编码。GB2312 是一种编码规则,需要更多的位来标识汉字,例如两个字节、16位。该编码定义了不超过$2^{15}-1$的汉字字符量。

  • Unicode 是一个将全球所有国家的文字进行编码的系统。它将世界上所有文字字符与数字对应起来,不会出现混乱,即使涉及不同语言的混合使用。

然而,在实际使用中,并不需要每次都使用Unicode。这种编码将所有语言的所有字符都以数字形式唯一标识,这可能会在计算中带来不必要的复杂性。

编码的应用

存在一个问题:若你向朋友发送一个文件,默认情况下使用Unicode编码,将所有文字转换为数字并存储。然而,每个数字都需要两个字节来表示。

例如,发送数字1,使用ASCII 编码只需保存为 0000001(8位)即可。

但使用Unicode保存,需要保存为0000000000000001再发送给朋友。文件变大了,同时也浪费了空间。因为当发送ASCII时,只需朋友知道文件采用ASCII编码,就可以正确解读内容。

基于此,在存储和使用过程中出现了UTF-8编码。它简化了部分字符的存储,同时确保不会混淆内容。

UTF-8编码根据Unicode字符的数字大小将其编码为1-6个字节。常用的英文字母被编码成1个字节,汉字通常是3个字节。只有极少数的字符才会被编码成4-6个字节。若文本包含大量英文字符,使用UTF-8编码可节省空间。

值得注意的是,UTF-8编码的另一个好处是,ASCII编码实际上是UTF-8编码的一部分。因此,许多只支持ASCII编码的历史遗留软件可以在UTF-8编码下继续工作。

使用过程

用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存的时候再把Unicode转换为UTF-8保存到文件,节约存储成本

rw-file-utf-8

浏览网页的时候,服务器会把动态生成的Unicode内容转换为UTF-8再传输到浏览器;节约了网络成本

web-utf-8



星期五, 五月 28, 2021

如何将域名与BlogSpot绑定并启用HTTPS

星期五, 五月 28, 2021 0 Comments

如何在Blogger 上自定义域名

选择自定义域名的好处

一般如果表示自己建站,我们都要有自己的域名。我们可以借助Blogger网站来,套壳建立自己的网站。这是一种轻松加愉快的方式建立自己网站,并不需要用户做过多技术方面的操作。

这一操作与谷歌相关的服务无关,仅仅与域名服务商提供的服务有关。因此我们并不需要与谷歌相关的服务进行接入!2023年12月6日 目前来说,谷歌已经关闭了自己的域名服务。

域名服务商选择

一般不建议使用国内域名服务商,使用国外域名服务提供商更好,更加稳定。

购买后,需要进行备案(国内域名都要备案)。好像现在都需要备案,不管是服务器还是域名!否则一般无法使用(具体情况不太清楚,不确定 Blogger 是否需要,可以试试,一般国内的肯定要备案)。

理由如下

1.使用国外的更加稳定

2.不用担心太多的资质认证问题

3.不用担心相关的政策变动问题:使用国外服务器,使用国内购买的域名是否有风险问题,这是未知的。

使用国内域名可能存在的风险问题?

向国外服务器的 IP 地址解析与向国内服务器的 IP 地址解析在技术上是相同的,都需要进行 DNS 解析来将域名映射到 IP 地址。因此,阿里云域名解析到国外 IP 没有问题

不过需要注意的是,由于网络的因素,访问国外服务器的速度可能会慢于访问国内服务器,尤其是在网络环境较为复杂的情况下。如果您需要向国外服务器解析域名,请优先选择距离较近、网络速度较快、较为稳定的 DNS 服务器,并进行必要的网络优化与调整,以提高访问的速度和稳定性。

此外,也可以考虑使用全球 CDN 网络,将静态资源部署到较为靠近用户的节点上,以提供更快速、更稳定的用户访问体验。阿里云提供了多种全球 CDN 方案,可以根据您的实际需求进行选择和配置。

重点是:如果网站被墙了,国内的用户无法访问的同时,甚至有可能造成国外的用户也无法访问。这一点尤其重要,但是这一点我也只是猜测,将其作为风险表示。知乎上也开始禁止此类话题的讨论。

此时容易造成域名完全废掉的情况发生,这一点尤其需要注意!

如果服务商停止提供该域名的解析,这一定会发生,随着服务ICP备案,越来越多用户将服务器迁出外地,导致域名将来一定会被处理!!

Blogger 设置域名

1.登录 Blogger

2.在左上角选择博客。

3.点击左侧菜单中的设置

4.在“正在发布”下方,点击自定义域名。输入您想要的博客网址。

5.点击保存

你会得到两条两条 CNAME 记录

1.博客 CNAME:名称部分输入子域名名称,如“blog.”或“www.”目的地部分输入“ghs.google.com”。

2.安全 CNAME:“名称:XXX,目的地:XXX”。每个人输入的内容不同,这与您的博客和 Google 帐号有关。

image-20231206205420405

添加到域名解析服务器

转到域名提供商处,在控制台中找到域名系统(DNS)

image-20210528134027262

找到域名解析的地方,将上面聊天记录网址,粘贴复制解析记录

QQ截图20210528133549

等待:至少需要等待一小时,才能激活 DNS 设置

为何这么做

CNAME 子域名别名将网址转至 blogger所在的网址!谷歌自己做了一些后台处理,只需转到谷歌通用网址,谷歌负责解析和处理。

Blogger上启用 HTTPS

很简单

进入Blogger后台后,点设置下滑到HTTPS部分,开启可用性以及重定向功能

image-20231206215438127

向Google Search Control 提交域名

登录Google Search Control

验证完成后会进入到search console欢迎页面,Google会要求你添加资源,选择右边这一种然后在域名框里面输入完成域名,带https的,然后点击继续。

image-20231206211550160

选择一个与你的验证方法,我们使用Blogger,无论我们选择何种方法只要验证即可。

image-20210608101140170.png

这里我们使用第五种方法:将DNS 记录与Google 关联

image-20210608101403996

比如:使用HTML验证,点击HTML 后复制文档代码。

google站长工具添加资源 4

选择对应的博客,主题背景,修改,点击自定义右侧下标

image-20231206213031061

将其粘贴到代码的Head部分

image-20231206213307359

开启裸域名跳转(选择性操作)

效果表现

将不带子域的 URL 重定向到您博客的 URL

要将读者从“mydomain.com”重定向到“www.mydomain.com”,请设置裸重定向:

1.访问您的域名提供商的网站。

2.打开您的 DNS 设置。

3.添加这 4 个指向 Google IP 的 A 记录。如果“mydomain.com”的 A 记录已存在,您应删除现有的 A 记录。

216.239.32.21

216.239.34.21

216.239.36.21

216.239.38.21

image-20231206212026808

4.登录 Blogger

5.在左上角,选择一个博客。

6.从左侧菜单中,单击“设置”

7.在“发布”下,启用重定向域(mydomain.com 到 www.mydomain.com)。

image-20231206212831705

点击我已完成以上步骤

您最长可能需要等待 48 小时,A 记录更改才会生效

之后用户只要输入您的裸网域地址,即可转到您在管理控制台中指定的网址

参考网址

[1] Blogger官方网址简明扼要强烈推荐

[2] 开启重定向官方文档

星期四, 五月 13, 2021

修改typora主题的字体设置和CSS样式

星期四, 五月 13, 2021 0 Comments

一个ai生成的具有科技感包含工具的图片

Typora - 修改字体设置

修改 CSS 样式

打开 Typora,点击 偏好设置 -> 外观 -> 打开主题文件夹,进入目录文件。


找到原文件 github.css,做一份备份,将其重命名为 github.css.backup,以便日后恢复。

 
修改 github.css 文件,使用文本编辑器打开,在文件中查找 font-family,找到类似下面的内容:
css
body {
   font-family: "Open Sans","Clear Sans","Helvetica Neue",Helvetica,Arial,sans-serif;
   color: rgb(51, 51, 51);
   line-height: 1.6;
}

将其替换为:

css
body {
   font-family: "Monaco","PingFangSC-Regular","Helvetica Neue",Helvetica,Arial,sans-serif;
   color: rgb(51, 51, 51);
   line-height: 1.6;
}

注意,其他的 font-family 不需要替换。修改完成后,请务必重启 Typora,以使更改生效

请注意

如果你使用的是其他主题,例如 newsprint 主题,请修改对应的 xxx.css 文件


更多相关内容点击typora教程标签!

星期二, 五月 11, 2021

【Git 】Git 子模块管理:实现工程库独立更新与管理

星期二, 五月 11, 2021 0 Comments

一张包含的多个文件的文件夹图片

包含子模块项目

场景

想要在一个工程中使用另一个工程的库(工程库在不断更新,包含独立的提交记录)。

通过 submodule 可以实现在一个工程中引入另一个工程,同时保留二者的提交记录并区分开来。

目前 submodule 能够实现单独开发子工程,不会影响父工程。父工程可以在需要的时候更新子模块的版本,从而实现完全的分离,两者提交独立。将一个工程拆分成多个仓库并进行集中管理,实现更细粒度的访问。

这解决了仓库过于庞大时所出现的传输量大、提交记录冗杂、权限分配等问题。

git help submodule #查看本模块的帮助

git submodule [--quiet] [--cached]
git submodule [--quiet] add [<options>] [--] <repository> [<path>]
git submodule [--quiet] status [--cached] [--recursive] [--] [<path>…]
git submodule [--quiet] init [--] [<path>…]
git submodule [--quiet] deinit [-f|--force] (--all|[--] <path>…)
git submodule [--quiet] update [<options>] [--] [<path>…]
git submodule [--quiet] set-branch [<options>] [--] <path>
git submodule [--quiet] set-url [--] <path> <newurl>
git submodule [--quiet] summary [<options>] [--] [<path>…]
git submodule [--quiet] foreach [--recursive] <command>
git submodule [--quiet] sync [--recursive] [--] [<path>…]
git submodule [--quiet] absorbgitdirs [--] [<path>…]

一、添加子模块

# git submodule add <url> <path>
git submodule add https://github.com/yyy/xxx.git

推送添加的子模块

git push origin master

二、克隆含有子模块项目

git clone https://github.com/chaconinc/MainProject

# 用来初始化本地配置文件
git submodule init
# 该项目中抓取所有数据并检出父项目中列出的合适的提交
git submodule update

# 直接clone 包含全部
git clone --recurse-submodules https://github.com/chaconinc/MainProject

三、查看子模块

git submodule

Github 显示形式

如果将父项目推送到远程仓库(如 Github),在网页浏览该项目时子模块所在的目录会多一个类似 @70c316e 的后缀,即上面查看子模块命令输出内容的 hash 值的前面部分,点击这个目录会跳转到这个子模块对应的仓库地址(另一个 url)。

image-20210604214007823

四 、移动子模块

要移动 Git 子模块,你需要执行以下步骤:

1.修改 .gitmodules 文件

打开 .gitmodules 文件,它位于你的 Git 项目根目录下,其中包含了子模块的配置信息。在这个文件中,你会看到类似以下的条目:

[submodule "submodule_name"]
  path = path_to_submodule
  url = URL_of_submodule_repository

2.移动子模块文件夹

现在,你可以手动移动子模块的文件夹到新的位置。

3.更新 .git/config

在你移动子模块文件夹后,需要更新 .git/config 文件中子模块的路径。找到对应的子模块条目,修改 url 后面的路径为新的子模块路径。

4.更新 Git 索引

使用以下命令更新 Git 索引以反映子模块的移动:

git submodule sync

5.更新父项目

进入到父项目根目录下,并执行以下命令来更新父项目,让其记录子模块路径的变化:

git add .
git commit -m "Updated submodule path"

这样就完成了子模块的移动操作。确保在进行这些步骤之前备份重要的文件以防万一。

参考文章

[1] https://git-scm.com/book/zh/v2/Git-%E5%B7%A5%E5%85%B7-%E5%AD%90%E6%A8%A1%E5%9D%97

[2] https://knightyun.github.io/2021/03/21/git-submodule

[3] https://www.codenong.com/1777854/