feat: v1.0.0 祀梦笔记:从 0 到 1 的数字化花园建设
This commit is contained in:
255
docs/blog/collect/free_model_pai.md
Normal file
255
docs/blog/collect/free_model_pai.md
Normal file
@@ -0,0 +1,255 @@
|
||||
---
|
||||
title: 便宜免费的大模型 API 整合 ( 2025年11月11日 )
|
||||
createTime: 2025/11/11 13:54:02
|
||||
cover: /images/elysia/1.jpg
|
||||
coverStyle:
|
||||
layout: right
|
||||
permalink: /article/free_model_api/
|
||||
---
|
||||
|
||||
百度千帆、讯飞星火、腾讯混元均有免费在线额度,SCNet 提供 0.1 元/百万 tokens 的超低价大模型,轻量任务先薅免费,量大了再掏 0.1 元,稳!
|
||||
|
||||
<!-- more -->
|
||||
## 免费的大模型 API 整合
|
||||
|
||||
嗨~如果你在找既温柔又省荷包的小模型,就把它们悄悄收进这里吧!它们也许不是夜空最亮的那颗星,却能在摘要、划重点、轻声问答的小角落里,给你软软又稳稳的陪伴哦~
|
||||
|
||||
|
||||
### 百度千帆大模型平台
|
||||
|
||||
先从千帆开始吧~下面是常用模型的参考价格:
|
||||
|
||||
| 模型名称 | 版本名称 | 服务内容 | 子项 | 在线推理 | 批量推理 | 单位 |
|
||||
|---|---|---|---|---|---|---|
|
||||
| ERNIE Speed | ernie-speed-128k | 推理服务 | 输入 | 0 | 0.00012 | 元/千tokens |
|
||||
| ERNIE Speed | ernie-speed-128k | 推理服务 | 输出 | 0 | 0.00024 | 元/千tokens |
|
||||
| ERNIE Lite | ernie-lite-8k | 推理服务 | 输入 | 0 | 0.0012 | 元/千tokens |
|
||||
| ERNIE Lite | ernie-lite-8k | 推理服务 | 输出 | 0 | 0.0024 | 元/千tokens |
|
||||
| ERNIE Tiny | ernie-tiny-8k | 推理服务 | 输入 | 0 | 0.00008 | 元/千tokens |
|
||||
| ERNIE Tiny | ernie-tiny-8k | 推理服务 | 输出 | 0 | 0.00016 | 元/千tokens |
|
||||
|
||||
> 提示:单纯调用 API 接口属于在线推理,当前显示为 0 元;批量推理按量计费。
|
||||
|
||||
#### 快速上手
|
||||
|
||||
1. 访问控制台并获取 API Key。
|
||||
2. 使用下方示例进行快速测试。
|
||||
3. 若遇错误,请检查模型名称与凭证有效期。
|
||||
|
||||
控制台:[https://console.bce.baidu.com/qianfan/ais/console/apiKey](https://console.bce.baidu.com/qianfan/ais/console/apiKey)
|
||||
|
||||
```python
|
||||
import requests
|
||||
import json
|
||||
|
||||
def main():
|
||||
url = "https://qianfan.baidubce.com/v2/chat/completions"
|
||||
API_KEY = 'YOUR_API_KEY'
|
||||
payload = json.dumps({
|
||||
"model": "ernie-speed-128k",
|
||||
"messages": [
|
||||
{
|
||||
"role": "system",
|
||||
"content": "You are a helpful assistant."
|
||||
},
|
||||
{
|
||||
"role": "user",
|
||||
"content": "你好"
|
||||
}
|
||||
]
|
||||
})
|
||||
headers = {
|
||||
'Content-Type': 'application/json',
|
||||
'Authorization': F'Bearer {API_KEY}'
|
||||
}
|
||||
response = requests.request("POST", url, headers=headers, data=payload)
|
||||
print(response.text)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
main()
|
||||
```
|
||||
|
||||
> 小贴士:将 `YOUR_API_KEY` 替换为你的密钥,建议使用环境变量管理凭证;请勿在公共仓库提交 Key。
|
||||
|
||||
更多文档:[https://cloud.baidu.com/doc/qianfan-api/s/3m9b5lqft](https://cloud.baidu.com/doc/qianfan-api/s/3m9b5lqft)
|
||||
|
||||
### 讯飞星火大模型
|
||||
|
||||
接着,我们轻盈地来到星火~
|
||||
|
||||
- 官网:[https://xinghuo.xfyun.cn/sparkapi](https://xinghuo.xfyun.cn/sparkapi)
|
||||
- 控制台:[https://console.xfyun.cn/services/cbm?from=desk](https://console.xfyun.cn/services/cbm?from=desk)
|
||||
- 模型说明:可见 Spark Lite,Token 余量为无限。
|
||||
|
||||
#### 快速上手
|
||||
|
||||
> 小贴士:如需联网检索,启用 `web_search`;流式输出可以提升交互体验。
|
||||
|
||||
1. 在控制台获取授权凭证并替换到示例中。
|
||||
2. 选择 `Lite` 模型,按需开启 `web_search` 与 `stream`。
|
||||
3. 若需要长内容输出,注意 8K tokens 限制,合理裁剪上下文。
|
||||
|
||||
```python
|
||||
# encoding:UTF-8
|
||||
import json
|
||||
import requests
|
||||
|
||||
|
||||
# 请替换XXXXXXXXXX为您的 APIpassword, 获取地址:https://console.xfyun.cn/services/bmx1
|
||||
api_key = "Bearer XXXXXXXXXX"
|
||||
url = "https://spark-api-open.xf-yun.com/v1/chat/completions"
|
||||
|
||||
# 请求模型,并将结果输出
|
||||
def get_answer(message):
|
||||
#初始化请求体
|
||||
headers = {
|
||||
'Authorization':api_key,
|
||||
'content-type': "application/json"
|
||||
}
|
||||
body = {
|
||||
"model": "Lite",
|
||||
"user": "user_id",
|
||||
"messages": message,
|
||||
# 下面是可选参数
|
||||
"stream": True,
|
||||
"tools": [
|
||||
{
|
||||
"type": "web_search",
|
||||
"web_search": {
|
||||
"enable": True,
|
||||
"search_mode":"deep"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
full_response = "" # 存储返回结果
|
||||
isFirstContent = True # 首帧标识
|
||||
|
||||
response = requests.post(url=url,json= body,headers= headers,stream= True)
|
||||
# print(response)
|
||||
for chunks in response.iter_lines():
|
||||
# 打印返回的每帧内容
|
||||
# print(chunks)
|
||||
if (chunks and '[DONE]' not in str(chunks)):
|
||||
data_org = chunks[6:]
|
||||
|
||||
# print(f"DEBUG: raw data_org: {data_org}")
|
||||
chunk = json.loads(data_org)
|
||||
text = chunk['choices'][0]['delta']
|
||||
|
||||
# 判断最终结果状态并输出
|
||||
if ('content' in text and '' != text['content']):
|
||||
content = text["content"]
|
||||
if (True == isFirstContent):
|
||||
isFirstContent = False
|
||||
print(content, end="")
|
||||
full_response += content
|
||||
return full_response
|
||||
|
||||
|
||||
# 管理对话历史,按序编为列表
|
||||
def getText(text,role, content):
|
||||
jsoncon = {}
|
||||
jsoncon["role"] = role
|
||||
jsoncon["content"] = content
|
||||
text.append(jsoncon)
|
||||
return text
|
||||
|
||||
# 获取对话中的所有角色的content长度
|
||||
def getlength(text):
|
||||
length = 0
|
||||
for content in text:
|
||||
temp = content["content"]
|
||||
leng = len(temp)
|
||||
length += leng
|
||||
return length
|
||||
|
||||
# 判断长度是否超长,当前限制8K tokens
|
||||
def checklen(text):
|
||||
while (getlength(text) > 11000):
|
||||
del text[0]
|
||||
return text
|
||||
|
||||
|
||||
#主程序入口
|
||||
if __name__ =='__main__':
|
||||
|
||||
#对话历史存储列表
|
||||
chatHistory = []
|
||||
#循环对话轮次
|
||||
while (1):
|
||||
# 等待控制台输入
|
||||
Input = input("\n" + "我:")
|
||||
question = checklen(getText(chatHistory,"user", Input))
|
||||
# 开始输出模型内容
|
||||
print("星火:", end="")
|
||||
getText(chatHistory,"assistant", get_answer(question))
|
||||
```
|
||||
|
||||
### 腾讯混元大模型
|
||||
|
||||
- 计费与价格:[https://cloud.tencent.com/document/product/1729/97731](https://cloud.tencent.com/document/product/1729/97731)
|
||||
- 文档与控制台:[https://cloud.tencent.com/document/product/1729/111008](https://cloud.tencent.com/document/product/1729/111008)
|
||||
- 模型说明:`hunyuan-lite` 免费可用,适合轻量任务。
|
||||
|
||||
```python
|
||||
import os
|
||||
from openai import OpenAI
|
||||
|
||||
# 构造 client(建议使用环境变量管理密钥)
|
||||
api_key = os.getenv("HUNYUAN_API_KEY", "YOUR_API_KEY")
|
||||
client = OpenAI(
|
||||
api_key=api_key, # 混元 APIKey
|
||||
base_url="https://api.hunyuan.cloud.tencent.com/v1", # 混元 endpoint
|
||||
)
|
||||
|
||||
completion = client.chat.completions.create(
|
||||
model="hunyuan-lite",
|
||||
messages=[
|
||||
{
|
||||
"role": "user",
|
||||
"content": "泥嚎"
|
||||
}
|
||||
],
|
||||
extra_body={
|
||||
"enable_enhancement": True,
|
||||
},
|
||||
)
|
||||
print(completion.choices[0].message.content)
|
||||
```
|
||||
|
||||
> 小贴士:请勿在公共仓库提交任何真实密钥;使用环境变量或密钥管理服务更安全。
|
||||
|
||||
## 低价大模型
|
||||
|
||||
### SCNet 平台
|
||||
|
||||
#### 简介
|
||||
SCNet 是一个面向人工智能和科学计算的一站式算力与 AI 平台,提供从数据管理、模型训练到部署的完整链路服务,同时结合国产超算硬件和多模态模型生态,让企业和开发者能更高效地使用 AI。
|
||||
|
||||
#### 链接与文档
|
||||
- 官网:[https://www.scnet.cn/](https://www.scnet.cn/)
|
||||
#### 价格一览
|
||||
| 模型 | 上下文长度 | 百万 tokens 输入价格 | 百万 tokens 输出价格 |
|
||||
|---|---|---|---|
|
||||
| Qwen3-235B-A22B | 32K | 0.1 元 | 0.1 元 |
|
||||
| DeepSeek-R1-Distill-Qwen-7B | 32K | 0.1 元 | 0.1 元 |
|
||||
| DeepSeek-R1-Distill-Qwen-32B | 32K | 1 元 | 4 元 |
|
||||
| DeepSeek-R1-Distill-Llama-70B | 32K | 0.1 元 | 6 元 |
|
||||
| QwQ-32B | 32K | 1 元 | 4 元 |
|
||||
| Qwen3-30B-A3B | 128K | 1 元 | 6 元 |
|
||||
| Qwen3-Embedding-8B | - | 0.1 元 | - |
|
||||
|
||||
- 文档(计费与说明):[https://www.scnet.cn/ac/openapi/doc/2.0/moduleapi/tutorial/modulefee.html](https://www.scnet.cn/ac/openapi/doc/2.0/moduleapi/tutorial/modulefee.html)
|
||||
|
||||
目前看到的价格最低的 Qwen3-235B-A22B 模型的 API,相比前面的免费模型,性能更强。
|
||||
- API 接口使用样例:[https://www.scnet.cn/ac/openapi/doc/2.0/moduleapi/tutorial/apicall.html](https://www.scnet.cn/ac/openapi/doc/2.0/moduleapi/tutorial/apicall.html)
|
||||
|
||||
## 小结
|
||||
|
||||
把上面这些“零钱包”级别的模型都翻完啦~
|
||||
- 百度千帆、讯飞星火、腾讯混元都给出「免费在线额度」,日常轻量问答、摘要、润色完全够用;记得把 Key 藏进环境变量,别手滑推到 GitHub。
|
||||
- 如果任务量突然暴涨,SCNet 的 Qwen3-235B-A22B 只要 0.1 元/百万 tokens,性价比直接拉满,当“备胎”也安心。
|
||||
|
||||
一句话:先薅免费的,薅不动再掏 0.1 元,让荷包和模型一起“稳稳幸福”吧!
|
||||
298
docs/blog/elysia/elysia_quotation.md
Normal file
298
docs/blog/elysia/elysia_quotation.md
Normal file
@@ -0,0 +1,298 @@
|
||||
---
|
||||
title: 爱莉希雅语录
|
||||
createTime: 2026/01/08 15:39:17
|
||||
cover: /images/elysia/2.png
|
||||
coverStyle:
|
||||
layout: left
|
||||
permalink: /archives/a5b3ea8e-7c3c-40a1-a737-26e911623da8/
|
||||
---
|
||||
嗨,亲爱的来访者♪ 欢迎来到这片收集了“真我”与“美丽”碎片的园圃。在这里,你会读到执拗花朵在暴雨中的坚持,也会听见逐火英桀们为文明奏响的最后颂歌。请怀着期待慢慢翻阅吧,愿这些如星光般的文字能陪你开启属于自己的闪耀旅程,毕竟……你本身就是这世间最瑰丽的馈赠呢♪
|
||||
<!-- more -->
|
||||

|
||||
1. 执拗的花朵永远不会因暴雨而褪去颜色,你的决心也一定能在绝境中绽放真我。
|
||||
|
||||
2. 愿你前行的道路有群星闪耀。愿你留下的足迹有百花绽放。你即是上帝的馈赠,世界因你而瑰丽。
|
||||
|
||||
3. 悲剧并非终结,而是希望的起始。
|
||||
|
||||
4. 此后,将有群星闪耀,因为我如今来过。此后,将有百花绽放,因为我从未离去。
|
||||
|
||||
5. 告别过去,是为了走向未来
|
||||
|
||||
6. 我名为爱莉希雅……最初的律者,人之律者。
|
||||
|
||||
7. 某一日,祂从天坠落。人们抬头仰望,于是看见了星空。星月送来神的女儿,她愿成为人的伴侣。长风化作她的轺车,四海落成她的园圃。鸟雀衔来善的种子,百花编织爱的颂歌。她便是这样降生于世,行于大地,与人类一同长大,与世界一起发芽。
|
||||
|
||||
8. 亲爱的山雀,请将我的箭,我的花,与我的爱,带给那子然独行的旅人。然后,便让它开出永恒而无瑕的…人性之华吧。
|
||||
|
||||
9. 压力之下的选择才能揭示一个人的真我,也将决定他最终会成为怎样的人。
|
||||
|
||||
10. 即使未来不能改变,我也要自己决定到达那个结果的过程。
|
||||
|
||||
11. 这是段漫长的路途,你或许会停滞不前,甚至在很长一段时间里一无所获。但这未必是件坏事,并不是一定要做到了什么,达成了什么才算前进。空虚、迷茫、犹豫、自否,对于一个人的一生,这些过程同样拥有它们的意义——就像这里的十三个人曾经历的那样。
|
||||
|
||||
12. 天色暗了,接下来就是调皮捣蛋的时间了呢。
|
||||
|
||||
13. 白天的我也很可爱,晚上的我也很可爱,你更喜欢哪个我呢?
|
||||
|
||||
14. 说起粉色头发的可爱女孩,你第一个会想到谁?321回答!
|
||||
|
||||
15. 你好像有不少问题想问我呢,别心急,我们还有很多很多时间。
|
||||
|
||||
16. 你喜欢脚踩在落叶或是新雪上的感觉吗?我很喜欢哦。
|
||||
|
||||
17. 你比我想象中还可爱许多呢。是不是很在意我想象了什么?
|
||||
|
||||
18. 今天的任务都完成啦?真棒,夸夸你哦。
|
||||
|
||||
19. 嗨!今天天气真好,和我一样闪闪发光呢。
|
||||
|
||||
20. 嗨,早上好!一天的好心情,从见到你开始。
|
||||
|
||||
21. 嗨,早上好呀!看见我,有没有很开心呢?
|
||||
|
||||
22. 你该休息啦,约好了,我们明天再见哦。
|
||||
|
||||
23. 天冷了,小心别着凉哦。我?美少女怎么会冷呢。
|
||||
|
||||
24. 今天是我的生日哦。要一起庆祝吗?就我们两个人。
|
||||
|
||||
25. 哎呀,你也睡不着吗?那我们来聊聊天,好不好?
|
||||
|
||||
26. 有些事不用太在意,美丽的少女总有些小秘密,不是吗?
|
||||
|
||||
27. 这么晚了还不睡吗?是在想我,对不对?
|
||||
|
||||
28. 知道吗,今天是个很特别的日子。对啦,就是你的生日♪
|
||||
|
||||
29. 好啦,冷静一下♪
|
||||
|
||||
30. 以律者的标准,你的样子还真有些......别致呢♪
|
||||
|
||||
31. 哎呀,别生气嘛♪
|
||||
|
||||
32. 真是的......我会哭的哦......
|
||||
|
||||
33. 抱歉......得让你失望啦♪
|
||||
|
||||
34. 英桀们的谢幕,必须盛大而壮丽
|
||||
|
||||
35. 只是你我二人独处,显然有些寂寞了♪
|
||||
|
||||
36. 你说对不对?我的好·伊·甸♪
|
||||
|
||||
37. 你明明也很开心嘛♪
|
||||
|
||||
38. 英桀们也不过是心绪复杂,带有缺陷的普通人,就和当时的每个普通人一样。有自己的私心,也多半谈不上有什么大爱,但也会因为一时感动,或是心血来潮,去做一些冲动,又了不起的事。他们从来不是完美的英雄,只是因为在那个时间,出现在那里的是他们而已。
|
||||
|
||||
39. 我相信换做其他人,也一定会做出小异大同的选择,甚至做得更好也说不定?这就是[美丽]的永恒,我所相信的[真我]。十三个人生命的全部就是如此纷繁而又美妙的事物,意义在于在这个过程中我想要相信什么。那会决定在抵达终点时你能得到什么。
|
||||
|
||||
40. 你看,他们曾如此骄傲地活过,贯彻始终,以生命奏响了文明的颂歌,这是被称作英桀的人们的故事,是十三位逐火者未尽的旅途,但来访者,你们的道路仍将延续,不是吗,那就听凭心意前进吧,嘻,都说了要前进啦,沿着脚下的足迹,去见证这段逐火的征程,最后跨越逝者们的终幕,去创造我们所未能迎接的未来吧。
|
||||
|
||||
41. 要流传给后世的,绝不应该只有憎恨和使命。只有领略过这个时代的光辉和灿烂,未来的人们才能理解我们为之而战的意义。
|
||||
|
||||
42. 由英桀们来传承的,应当是身为英桀的荣耀,战斗的理由。是在这段逐火的旅途中,我们最终的灵魂所托。
|
||||
|
||||
43. 而后来的你们,将见证我们生命的足迹,灵魂的刻印,并在其中找到自己寻求的答案。
|
||||
|
||||
44. 但无论如何 我们的时代已经结束了,而我们也努力完成了各自的使命。
|
||||
|
||||
45. 不是被推搡,被裹挟着向前,也不是沿着被别人选定的道路行进。而是怀着这样的想法——我想要怎么做,我应该怎么做——去决定自己的命路,自己的刻印。
|
||||
|
||||
46. 以自我的意志,朝着自身所设下的目标,用自在的方式,竭尽全力活过“我”作为主角的一生。
|
||||
|
||||
47. 你看,我是这样的,大家也是这样的。我所知晓的那个时代,以及它所孕育出的这十三个人,都是如此。万千的轨迹交织、萦绕,由此诞下百花齐放的奇迹。这就是“美丽”的永恒,我所相信的“真我”。
|
||||
|
||||
48. 至此,我们的故事结束了。而从今以后,就是“你”的故事了。
|
||||
|
||||
49. 让无人传颂的歌谣,再度启唱。
|
||||
|
||||
50. 为历史尘封的故事,续写新章。
|
||||
|
||||
51. 高洁而纯真的灵魂,踏上旅途。
|
||||
|
||||
52. 愿掠集之兽爱佑其身,赐予「空梦」的自由。
|
||||
|
||||
53. 愿渡尘之羽爱佑其身,赐予「浮生」的坚忍。
|
||||
|
||||
54. 愿绘世之卷爱佑其身,赐予「繁星」的纯真。
|
||||
|
||||
55. 愿噬界之蛇爱佑其身,赐予「无限」的渴求。
|
||||
|
||||
56. 愿黎明之哨爱佑其身,赐予「旭光」的意志。
|
||||
|
||||
57. 愿寸断之刃爱佑其身,赐予「刹那」的决绝。
|
||||
|
||||
58. 愿善法之瞳爱佑其身,赐予「天慧」的智识。
|
||||
|
||||
59. 愿坏劫之焱爱佑其身,赐予「鏖灭」的赤诚。
|
||||
|
||||
60. 愿愚戏之匣爱佑其身,赐予「螺旋」的奇迹。
|
||||
|
||||
61. 愿璀耀之歌爱佑其身,赐予「黄金」的光辉。
|
||||
|
||||
62. 愿深罪之槛爱佑其身,赐予「戒律」的慈爱。
|
||||
|
||||
63. 愿无烬之剑爱佑其身,赐予「救世」的理想。
|
||||
|
||||
64. 愿无瑕之人爱佑其身,赐予「真我」的回归。
|
||||
|
||||
65. 我们于此赞颂,始源之律者的诞生
|
||||
|
||||
66. 我这支歌将抚摸你的前额,犹如那祝福的亲吻
|
||||
|
||||
67. 当你独自一人时,它会坐在身旁与你耳语
|
||||
|
||||
68. 当你陷入人群时,它又会保护你远离喧嚣。
|
||||
|
||||
69. 我的歌将成为你梦想的羽翼,它将载着你的心到那未知的边缘
|
||||
|
||||
70. 当黑夜遮蔽了你的路时,它又成为了照耀在你头顶的忠实星光
|
||||
|
||||
71. 于是,「始源」的故事迎来落幕
|
||||
|
||||
72. 于是,「始源」的故事迎来伊始
|
||||
|
||||
73. 以我为终……
|
||||
|
||||
74. 以我……为始。
|
||||
|
||||
75. 而今,终焉之时将至。而今,归去之时已至。就此告别吧,美丽的世界。
|
||||
|
||||
76. 不想前进的时候,就暂且停下脚步吧,我们永远都在这里,和当初一模一样,毕竟,美丽的女孩子什么都能做到嘛!
|
||||
|
||||
77. 游云拂风,花染湛空,与你并肩漫步在午后街头,携手美好此刻,共赏岁月温柔。
|
||||
|
||||
78. 经常会和别的女孩子谈论你哦。内容……是不是很想知道呀~
|
||||
|
||||
79. 有些事不用太在意,美丽的少女总有些小秘密,不是吗?
|
||||
|
||||
80. 这里有好多和我一样漂亮的女孩子呀,是天堂吗?
|
||||
|
||||
81. 你会不会嫌我话多呢?可我就是有好多话想对你说呀。
|
||||
|
||||
82. 不许叫错我的名字噢,不然……我会有小情绪的。
|
||||
|
||||
83. 如此绚丽的花朵,不该在绽放之前就枯萎。我会赠予你璀聚的祝福,而你的灵魂,也将会绽放更耀眼的光辉。
|
||||
|
||||
84. 嗨,想我了吗?
|
||||
|
||||
85. 不论何时何地,爱莉希雅都会回应你的期待
|
||||
|
||||
86. 嗨,我又来啦。多夸夸我好吗?我会很开心的~♪
|
||||
|
||||
87. 你好!新的一天,从一场美妙的邂逅开始。
|
||||
|
||||
88. 终于轮到我啦,这段时间我可是一直都在构思与你见面的开场白呢。
|
||||
|
||||
89. 你可以更光明正大的看向我噢,毕竟我也直在看着你嘛。来,让我们更深入地了解彼此吧?
|
||||
|
||||
90. 唉,要做的事好多~但焦虑可是女孩子的大敌,保持优雅得体,从容愉快地前进吧。
|
||||
|
||||
91. 别看我这样,其实我也是很忙的。不过,我的日程上永远有为你预留的时间。
|
||||
|
||||
92. 唉,时间真是个讨厌的东西,你不觉得吗?如果不是时间紧迫,我还想留下更多值得纪念的话语。
|
||||
|
||||
93. 有没有觉得我的话要比别人多一点?多就对啦,我可是有在很认真地准备这件事的。
|
||||
|
||||
94. 哇,你看那朵白白软软的云,是不是有点像我呢?
|
||||
|
||||
95. 可爱的少女心可是无所不能的噢~♪
|
||||
|
||||
96. 好啦可以啦,再说下去我就要哭了噢~♪
|
||||
|
||||
97. 这束鲜花,要心怀感激的收下哦~♪
|
||||
|
||||
98. 要好好看着我哦~♪
|
||||
|
||||
99. 这身衣服是伊甸做的噢,喜欢吗,还是说,喜欢的是我呢~♪
|
||||
|
||||
100. 别动噢,借你的眼睛照照镜子……好啦,我看起来怎么样?
|
||||
|
||||
101. 嗯~和女孩子独处时,可要好好看向对方的眼晴噢~♪
|
||||
|
||||
102. 有空多来陪陪我好吗,你一定不忍心让可爱的我孤独寂寞吧。
|
||||
|
||||
103. 这可是你选的衣服,要好好看着,不许移开视线噢。
|
||||
|
||||
104. 加点浪漫的气氛,如何?
|
||||
|
||||
105. 哇谢谢!我就知道你对我最好啦!
|
||||
|
||||
106. 爱莉希雅的贴心提示!你可以尽情的依赖爱莉希雅,而她,也会以全部的身心回应你!
|
||||
|
||||
107. 爱莉希雅的贴心提示!如果见到凯文在大厅里,多穿点衣服,他很冷的,各种意义上呢。
|
||||
|
||||
108. 在热情似火这件事上,我可不会输给千劫哦。
|
||||
|
||||
109. 这一次有你想要的东西吗?没有的话,我就可以再见你一面了。
|
||||
|
||||
110. 你应该不会嫌我话多吧?还是说,你更喜欢伊甸那种优雅文静的类型?
|
||||
|
||||
111. 如你所见,与那个凯文齐名的第二领袖,竟是一位如花朵般娇羞的少女也就是我啦。
|
||||
|
||||
112. 爱莉希雅的贴心提示!和樱说话时,别盯着耳朵看太久,她和我不一样,会害羞。
|
||||
|
||||
113. 想了想我毕竟算半个文职,说“武”也不太合适。那就去掉一个字,叫“女神”吧!你觉得呢?
|
||||
|
||||
114. 你说,我要是把头发留的和樱那么长,会不会更好看呀?嗯?
|
||||
|
||||
115. 你战斗的样子如此绚丽,就如同漫天的飞花一般。让我再为其添点色彩吧。
|
||||
|
||||
116. 这里埋藏着太多的历史、太多的秘密。但别担心,无论路有多长,我始终都会在你身边。
|
||||
|
||||
117. 如果我也成为律者,会是什么样子呢?头发会再变多些吗?还是说……裙摆会突然变长?
|
||||
|
||||
118. 说起来,为什么只有我的刻印是金色的伊甸不会生气吧?算啦,她那么好,一定不会生气的。
|
||||
|
||||
119. 咦,到我了吗?哎呀真可惜,这次的开场白我还没想好呢,原谅我吧,下次一定给你个惊喜。
|
||||
|
||||
120. 仔细想想,我是女孩子,战力比肩凯文,又有如神明般的聪慧与美貌。这么说来,我不也是“女武神”吗?
|
||||
|
||||
121. 爱莉希雅的贴心提示!如果遇到千劫,千万别问他有关面具的事哦。
|
||||
|
||||
122. 唉,不知道你见没见到这里的男孩们,他们都内向得很,还是我比较放得开吧?
|
||||
|
||||
123. 爱莉希雅的贴心提示!伊甸就像是天使一样——温柔,美丽,又总会予人以天使般的馈赠。
|
||||
|
||||
124. 这真是个神奇的地方,不是吗?它让我们的灵魂跨越时空于此相遇,多么浪漫呀。
|
||||
|
||||
125. 悄悄告诉你哦,我一共准备了40种不同的开场白。
|
||||
|
||||
126. 咦,你在看哪?哦......很在意这对耳朵?它们很漂亮对吗,我也这么觉得。
|
||||
|
||||
127. 你一定也在期待和我相遇吧?我知道,因为我的刻印总是很实用嘛。
|
||||
|
||||
128. 我的抉择与你的抉择,二者相遇会诞下怎样的奇迹,我想见证这一刻的到来。
|
||||
|
||||
129. 爱莉希雅的贴心提示!如果你不想听苏说话了,悄悄走开也行,他看不见。
|
||||
|
||||
130. 有我的刻印,你绝对不会输。输了也没关系,我会先一步去大厅等你回来。
|
||||
|
||||
131. 不要被三次元的女人骗了呀。
|
||||
|
||||
132. 英桀第二位,爱莉希雅,如你所见是一位像花朵般可爱的美丽少女。
|
||||
|
||||
133. 我们会留在过去,而你将走向未来。
|
||||
|
||||
134. 毕竟我向来不习惯太严肃的场合,也不喜欢过于拘谨的人际关系。
|
||||
|
||||
135. 再打下去我会哭的哦
|
||||
|
||||
136. 怎么样?喜欢我的记忆吗?有没有一种在和美丽的少女并肩作战的感觉?
|
||||
|
||||
137. 猜猜我为你带来了什么,金色的、闪闪发光的刻印,没有人能拒绝它,不是吗?
|
||||
|
||||
138. 见好就收哦!
|
||||
|
||||
139. 但我永远都会在这里,为你点亮前行的灯火。
|
||||
|
||||
140. 纵使知道文明已经覆灭,却依旧选择穷尽一切抗争到最后,只是为了将自己骄傲活过的样子永远铭刻在历史之中。
|
||||
|
||||
141. 悲伤不会凭空消失,但温暖的感情也会永远在心底珍藏。
|
||||
|
||||
142. 无论过去还是现在,可爱的少女心是无所不能的——只有这一点,无论如何都不会改变。
|
||||
|
||||
143. 那个白头发的漂亮女孩就是芽衣的...嗯哼哼,被我发现喽。
|
||||
|
||||
143.那是...华?唉,她交到了新的朋友,太好了。
|
||||
149
docs/blog/technology/Deploying_WSL2_on_Windows_10.md
Normal file
149
docs/blog/technology/Deploying_WSL2_on_Windows_10.md
Normal file
@@ -0,0 +1,149 @@
|
||||
---
|
||||
title: 在 Windows10 上部署 WSL2 并启动 ubuntu 虚拟机
|
||||
createTime: 2025/09/29 07:13:17
|
||||
cover: /images/elysia/3.jpg
|
||||
coverStyle:
|
||||
layout: right
|
||||
permalink: /article/deploying-wsl2-on-windows-10/
|
||||
---
|
||||
|
||||
嗨呀~让我们在 Windows10 专业版上部署 WSL2 并启动 ubuntu 20.04 虚拟机吧~
|
||||
|
||||
最好使用 Windows10 专业版,并且在物理机上部署呢,在虚拟机上部署的话可能会有小麻烦,所以不太推荐啦~
|
||||
<!-- more -->
|
||||
|
||||
## Windows10 镜像
|
||||
大家好呀~今天要教大家如何在Windows10上部署WSL2并启动ubuntu虚拟机哦~
|
||||
|
||||
首先呢,我们需要准备一个Windows10的镜像文件~虽然Microsoft官方有提供,不过很容易下载失败呢,所以建议大家去[MSDN](https://msdn.itellyou.cn/)下载会更稳定哦~
|
||||
|
||||
在MSDN官网找到「操作系统」→「Window10」→「Windows 10 (Multiple Editions) (x64)」这个版本,它包含了专业版呢~要注意哦,WSL2只支持专业版、企业版或教育版,不支持家庭版呢,所以建议大家直接安装专业版会更方便~
|
||||
|
||||
## 启用WSL2和虚拟机平台
|
||||
接下来,我们需要启用WSL2和虚拟机平台的功能哦~首先以管理员身份打开PowerShell,然后依次运行下面的命令:
|
||||
```powershell
|
||||
# 启用 WSL 功能
|
||||
dism.exe /online /enable-feature /featurename:Microsoft-Windows-Subsystem-Linux /all /norestart
|
||||
|
||||
# 启用虚拟机平台(WSL2 必需)
|
||||
dism.exe /online /enable-feature /featurename:VirtualMachinePlatform /all /norestart
|
||||
```
|
||||
运行完成后,记得要重启电脑哦~重启之后,我们还要把WSL2设置为默认版本呢:
|
||||
```powershell
|
||||
# 设置 WSL2 为默认版本
|
||||
wsl --set-default-version 2
|
||||
```
|
||||
|
||||
## 在 WSL2 中安装 ubuntu 20.04 LTS 虚拟机
|
||||
现在到了安装Ubuntu虚拟机的环节啦~还是以管理员身份打开PowerShell,然后依次运行这些命令:
|
||||
```powershell
|
||||
# 查看可用的 Ubuntu 版本
|
||||
wsl --list --online
|
||||
|
||||
# 安装 Ubuntu 20.04 虚拟机
|
||||
wsl --install -d Ubuntu-20.04
|
||||
```
|
||||
安装过程大概是这样的哦~让我们一起来看看:
|
||||
```powershell :collapsed-lines
|
||||
wsl: 使用旧分发注册。请考虑改用基于 tar 的分发。
|
||||
正在下载: Ubuntu 20.04 LTS
|
||||
Ubuntu 20.04 LTS 已下载。
|
||||
已成功安装分发。可以通过 “wsl.exe -d Ubuntu 20.04 LTS” 启动它
|
||||
正在启动 Ubuntu 20.04 LTS...
|
||||
Installing, this may take a few minutes...
|
||||
Please create a default UNIX user account. The username does not need to match your Windows username.
|
||||
For more information visit: https://aka.ms/wslusers
|
||||
Enter new UNIX username: simeng
|
||||
New password:
|
||||
Retype new password:
|
||||
passwd: password updated successfully
|
||||
操作成功完成。
|
||||
wsl: Failed to start the systemd user session for 'root'. See journalctl for more details.
|
||||
Installation successful!
|
||||
wsl: Failed to start the systemd user session for 'simeng'. See journalctl for more details.
|
||||
To run a command as administrator (user "root"), use "sudo <command>".
|
||||
See "man sudo_root" for details.
|
||||
|
||||
Welcome to Ubuntu 20.04.6 LTS (GNU/Linux 6.6.87.2-microsoft-standard-WSL2 x86_64)
|
||||
|
||||
* Documentation: https://help.ubuntu.com
|
||||
* Management: https://landscape.canonical.com
|
||||
* Support: https://ubuntu.com/advantage
|
||||
|
||||
System information as of Tue Sep 30 14:27:51 CST 2025
|
||||
|
||||
System load: 0.48 Processes: 74
|
||||
Usage of /: 0.1% of 1006.85GB Users logged in: 1
|
||||
Memory usage: 7% IPv4 address for eth0: 172.31.237.99
|
||||
Swap usage: 0%
|
||||
|
||||
|
||||
Expanded Security Maintenance for Applications is not enabled.
|
||||
|
||||
0 updates can be applied immediately.
|
||||
|
||||
Enable ESM Apps to receive additional future security updates.
|
||||
See https://ubuntu.com/esm or run: sudo pro status
|
||||
|
||||
|
||||
The list of available updates is more than a week old.
|
||||
To check for new updates run: sudo apt update
|
||||
|
||||
|
||||
This message is shown once a day. To disable it please create the
|
||||
/home/simeng/.hushlogin file.
|
||||
simeng@localhost:~$
|
||||
```
|
||||
这样我们就成功安装好Ubuntu虚拟机啦,可以开始使用了哦~
|
||||
### 安装过程中可能会出现的错误
|
||||
|
||||
在安装过程中,可能会遇到一些小问题呢~不过不用担心,已经帮大家准备好了解决方案哦~
|
||||
|
||||
#### 错误码 0x800701bc 缺少更新包
|
||||
如果看到这样的错误信息:
|
||||
```txt
|
||||
Installing, this may take a few minutes...
|
||||
WslRegisterDistribution failed with error: 0x800701bc
|
||||
Error: 0x800701bc WSL 2 ?????????????????? https://aka.ms/wsl2kernel
|
||||
|
||||
Press any key to continue...
|
||||
```
|
||||
这说明系统缺少WSL2所需的Linux内核更新包哦~这时候我们可以打开微软官网的[下载 Linux 内核更新包](https://learn.microsoft.com/zh-cn/windows/wsl/install-manual#step-4---download-the-linux-kernel-update-package)页面,下载最新的包安装就可以解决啦~
|
||||
|
||||
#### 错误码 0x80370102 虚拟化技术没有开启
|
||||
如果遇到这个错误,可能是因为虚拟化技术没有开启哦~如果是在真实机上操作的话,需要进入BIOS开启虚拟化技术呢~开启之后,可以在任务管理器 -> 性能 -> CPU 的详情页面中,看到下方的虚拟化状态显示为「已启用」哦~
|
||||
|
||||

|
||||
|
||||
如果是在虚拟机中操作的话,就需要启用嵌套虚拟化技术啦~以VMware为例:
|
||||
|
||||
先关闭虚拟机,然后找到虚拟机的.vmx配置文件(通常在虚拟机目录下),在文件末尾添加一行:`vhv.enable = "TRUE"`
|
||||
|
||||
保存之后再启动虚拟机就可以啦~如果还是失败的话,建议尝试换用WSL1,或者使用Hyper-V来部署Windows10虚拟机哦~
|
||||
|
||||
## 通过 WSL2 操作 ubuntu 20.04 LTS 虚拟机
|
||||
安装完成后,我们该如何操作Ubuntu虚拟机呢?很简单哦~以管理员身份打开PowerShell,然后运行这个命令查看已安装的虚拟机:
|
||||
```powershell
|
||||
# 查看已安装的虚拟机
|
||||
wsl -l -v
|
||||
```
|
||||
如果前面的步骤都正确的话,这里应该可以看到一个Ubuntu-20.04的虚拟机啦~
|
||||
|
||||
另外,在文件资源管理器中,会多出一个Linux文件夹,里面有一个Ubuntu-20.04文件夹,这就是虚拟机的根目录哦~
|
||||
|
||||
想要启动并进入Ubuntu虚拟机的话,可以运行这个命令:
|
||||
```powershell
|
||||
wsl -d Ubuntu-20.04
|
||||
```
|
||||
|
||||
如果直接退出终端或者关闭窗口,虚拟机实例就会进入挂起状态,下次需要重新启动才能继续使用哦~当然,也可以通过指令强制终止虚拟机:
|
||||
```powershell
|
||||
wsl --terminate Ubuntu-20.04
|
||||
```
|
||||
|
||||
## 通过 VS Code 开发
|
||||
接下来,我们还可以通过VS Code来进行开发哦~不过需要先安装一些扩展呢:'Remote - SSH'和'WSL'
|
||||
|
||||
安装好扩展后,在VS Code左侧打开远程资源管理器,就可以看到Ubuntu20.04虚拟机啦~直接点击连接就可以了哦~不过第一次连接可能需要启动一下虚拟机,会有点慢呢,耐心等待一下吧~
|
||||

|
||||
连接成功之后,就可以愉快地进行开发啦~是不是很简单呢~
|
||||
120
docs/blog/technology/Operate_WSL2.md
Normal file
120
docs/blog/technology/Operate_WSL2.md
Normal file
@@ -0,0 +1,120 @@
|
||||
---
|
||||
title: WSL2 核心操作指南
|
||||
createTime: 2025/09/30 16:08:32
|
||||
cover: /images/elysia/4.jpg
|
||||
permalink: /article/operate-wsl2/
|
||||
---
|
||||
这篇文章主要讲WSL2虚拟机核心操作哦~它基于轻量级Hyper-V运行,像贴心小精灵默默工作~还能用命令行精细控制!接下来讲启动/关闭、实例管理、资源配置、网络操作、备份迁移这五大操作,是不是很期待呢~♪
|
||||
|
||||
<!-- more -->
|
||||
|
||||
## 启动/关闭 WSL2 虚拟机
|
||||
WSL2的虚拟机平时是由Windows自动管理的呢,不过我们也可以通过命令手动控制它的生命周期哦~
|
||||
```
|
||||
# 启动指定的发行版
|
||||
wsl -d Ubuntu-20.04
|
||||
|
||||
# 关闭指定的发行版
|
||||
wsl --terminate Ubuntu-20.04
|
||||
```
|
||||
如果想要完全关闭WSL2的所有虚拟机,也是可以的哦~
|
||||
|
||||
使用这个命令后,所有的发行版都会被强制终止,内存、网络、文件句柄都会被全部释放呢~
|
||||
```
|
||||
wsl --shutdown
|
||||
```
|
||||
|
||||
## 管理正在运行的 WSL 实例
|
||||
想知道当前有哪些WSL实例在运行吗?很简单哦~使用下面这个命令就可以查看啦:
|
||||
```
|
||||
wsl -l -v
|
||||
```
|
||||
输出结果大概是这个样子的哦~
|
||||
```text
|
||||
NAME STATE VERSION
|
||||
* Ubuntu Running 2
|
||||
docker-desktop Running 2
|
||||
Ubuntu-20.04 Stopped 2
|
||||
```
|
||||
看到那个带星号(*)的了吗?那就是当前的默认系统哦~如果想要设置新的默认发行版,可以使用这个命令:
|
||||
```
|
||||
wsl --set-default Ubuntu-20.04
|
||||
```
|
||||
|
||||
嘿嘿~接下来讲讲怎么删除一个 WSL 实例哦~如果想和某个WSL实例说拜拜,就可以用下面这个命令哒~
|
||||
```
|
||||
wsl --unregister Ubuntu-20.04
|
||||
```
|
||||
注意,删除后无法恢复哦~请谨慎操作~
|
||||
|
||||
## 配置 WSL2 资源
|
||||
WSL2的资源也是可以自定义配置的哦~我们可以通过编辑`%USERPROFILE%\.wslconfig`文件来设置内存、CPU核心数等参数呢~
|
||||
```
|
||||
[wsl2]
|
||||
# 内存限制(默认:80% 物理内存)
|
||||
memory=4GB
|
||||
|
||||
# CPU 核心数限制(默认:全部核心)
|
||||
processors=2
|
||||
|
||||
# 交换空间大小(默认:25% 内存)
|
||||
swap=2GB
|
||||
|
||||
# 是否启用 localhost 端口转发(默认 true)
|
||||
localhostForwarding=true
|
||||
```
|
||||
要注意哦~修改完配置后,必须重启WSL2虚拟机才能让这些设置生效呢~
|
||||
## 网络相关配置
|
||||
WSL2使用的是虚拟NAT网络哦,它和Windows主机是相互隔离的,但又可以互相通信呢~是不是很神奇~
|
||||
|
||||
| 方向 | 访问方式 | 说明 |
|
||||
| --- | --- | --- |
|
||||
| Windows -> WSL2 | localhost:port | 自动端口转发(需要`localhostForwarding=true`) |
|
||||
| WSL2 -> Windows | `host.docker.internal` 或 `$(cat /etc/resolv.conf \| grep nameserver \| awk '{print $2}')` | 获取主机的IP地址 |
|
||||
| 外部机器 -> WSL2 | 默认不可达 | 需要手动端口转发或使用 Windows 防火墙规则 |
|
||||
|
||||
想知道WSL2的IP地址吗?可以用这个命令查看哦~(不过要注意,每次启动WSL2后,IP地址可能会变呢~)
|
||||
|
||||
注意哦~这个命令需要进入到WSL2虚拟机内部执行才行呢~
|
||||
```
|
||||
hostname -I
|
||||
```
|
||||
|
||||
如果需要访问WSL2中的服务,多亏了`localhostForwarding`的配置,我们直接访问[localhost:port](http://localhost:port)就可以啦~超方便的~
|
||||
|
||||
如果需要手动设置端口转发,可以在Powershell中添加防火墙规则和端口转发哦~不过要记得以管理员方式打开Powershell呢~
|
||||
```
|
||||
# 获取 WSL2 当前IP地址
|
||||
$wslIp = (wsl hostname -I).Trim()
|
||||
|
||||
$wslIp
|
||||
|
||||
# 添加端口转发(以 8000 端口为样例)
|
||||
netsh interface portproxy add v4tov4 listenport=8000 listenaddress=0.0.0.0 connectport=8000 connectaddress=$wslIp
|
||||
|
||||
# 开放 Windows 防火墙
|
||||
New-NetFirewallRule -DisplayName "WSL2 Port 8000" -Direction Inbound -LocalPort 8000 -Protocol TCP -Action Allow
|
||||
|
||||
# 撤销端口转发
|
||||
netsh interface portproxy delete v4tov4 listenport=8000 listenaddress=0.0.0.0
|
||||
|
||||
# 撤销开放的防火墙规则
|
||||
Remove-NetFirewallRule -DisplayName "WSL2 Port 8000"
|
||||
```
|
||||
|
||||
## 备份和迁移
|
||||
WSL2发行版也是可以备份和迁移的哦~我们可以把整个发行版导出成tar文件,这样就可以用于备份、迁移或者分享给其他小伙伴啦~
|
||||
```
|
||||
# 导出指定发行版到 tar 文件
|
||||
wsl --export <发行版名称> <输出文件路径.tar>
|
||||
wsl --export Ubuntu-20.04 D:\backups\ubuntu-2004.tar
|
||||
|
||||
# 导入 tar 文件为新的发行版
|
||||
wsl --import <新发行版名称> <安装目录> <tar 文件路径> [选项]
|
||||
wsl --import Ubuntu-Backup C:\wsl\Ubuntu-Backup D:\backups\ubuntu-2004.tar --version 2
|
||||
```
|
||||
要注意哦~导入完成后,默认用户会变成root呢~如果想要设置回原来的用户,可以使用这个命令:
|
||||
```
|
||||
ubuntu2004.exe config --default-user username
|
||||
```
|
||||
悄悄告诉大家一个小秘密~WSL2是可以同时存在多个同源发行版的哦~这样我们就可以在不同的环境中进行不同的实验啦~是不是很方便呢~
|
||||
118
docs/blog/technology/signed-binary-representations.md
Normal file
118
docs/blog/technology/signed-binary-representations.md
Normal file
@@ -0,0 +1,118 @@
|
||||
---
|
||||
title: 原码、反码、补码
|
||||
createTime: 2026/01/08 16:34:05
|
||||
cover: /images/elysia/6.jpg
|
||||
coverStyle:
|
||||
layout: right
|
||||
permalink: /archives/6f41cabe-41e6-4a09-9f1c-af7dd709a35d/
|
||||
---
|
||||
|
||||
欢迎来到 0 与 1 的魔法派对!这篇文章将带你揭开原码、反码与补码的奥秘,看计算机如何巧妙地用补码化减为加。让我们一起翻开这页,去捕捉二进制底层那份迷人的理性之美吧♪
|
||||
|
||||
<!-- more -->
|
||||
|
||||
## 一、 前置概念
|
||||
|
||||
计算机底层存储数据的时候使用的是二进制数字,但是计算机在存储一个数字的时候并不是直接存储该数字对应的二进制数,而是存储该数字对应的**二进制数的补码**。
|
||||
|
||||
在了解原码、反码和补码之前,我们要了解**机器数**和**真值**的概念。
|
||||
|
||||
### 1) 机器数
|
||||
一个数在计算机的存储形式是二进制数,我们称这些二进制数为**机器数**。机器数是有符号的,在计算机中用机器数的最高位存放符号位,`0` 表示正数,`1` 表示负数。
|
||||
|
||||
### 2) 真值
|
||||
因为机器数带有符号位,所以机器数的形式值不等于其真实表示的值(真值)。
|
||||
- 以机器数 `1000 0001` 为例,其真正表示的值(首位为符号位)为 `-1`,而形式值(首位就是代表 1)为 `129`。
|
||||
- 因此将带符号的机器数的真正表示的值称为机器数的**真值**。
|
||||
|
||||
## 二、 原码、反码与补码
|
||||
|
||||
### 1) 原码
|
||||
原码的表示与机器数真值表示的一样,即用第一位表示符号,其余位表示数值。
|
||||
- **正数**:就是它对应的二进制数。
|
||||
- **负数**:将绝对值对应的二进制最左边位变为 `1`。
|
||||
|
||||
例如十进制的正负 1,用 8 位二进制的原码表示如下:
|
||||
- `[+1]` = 原: `[ 0000 0001 ]`
|
||||
- `[-1]` = 原: `[ 1000 0001 ]`
|
||||
|
||||
### 2) 反码
|
||||
- **正数**:和原码相同。
|
||||
- **负数**:在其原码的基础上,**符号位不变,其余各位取反**。
|
||||
|
||||
示例:
|
||||
- `[+1]` = 原: `[ 0000 0001 ]` = 反: `[ 0000 0001 ]`
|
||||
- `[-1]` = 原: `[ 1000 0001 ]` = 反: `[ 1111 1110 ]`
|
||||
|
||||
### 3) 补码
|
||||
- **正数**:补码是其原码本身。
|
||||
- **负数**:补码是在其原码的基础上,**符号位不变,其余各位取反后加 1**(即在反码的基础上加 1)。
|
||||
|
||||
示例:
|
||||
- `[+1]` = 原: `[ 0000 0001 ]` = 反: `[ 0000 0001 ]` = 补: `[ 0000 0001 ]`
|
||||
- `[-1]` = 原: `[ 1000 0001 ]` = 反: `[ 1111 1110 ]` = 补: `[ 1111 1111 ]`
|
||||
|
||||
## 三、 数据在计算机中的存储形式
|
||||
|
||||
计算机实际上只存储**补码**,所以说原码转换为补码的过程,也可以理解为数据存储到计算机内存中的过程。
|
||||
|
||||
在原、反、补码中,正数的表示是一模一样的,而负数的表示是不相同的。因此对于负数的补码来说,我们不能直接用进制转换将其转换为十进制数值,因为这样是得不到计算机真正存储的十进制数的。**应该将其转换为原码后,再将转换得到的原码进行进制转换为十进制数**(机器数包含符号位)。
|
||||
|
||||
## 四、 为什么会使用原码、反码、补码
|
||||
|
||||
对于人脑来说,知道机器数的第一位是符号位是一件很轻松的事情,但对于计算机基础电路设计来说判别第一位是符号位是非常难和复杂的事情。
|
||||
|
||||
为了让计算机底层设计更加简单,于是设计将符号位参与运算,并且**只保留加法**的方法,通过**加上一个负数的方式来实现减法**。这样让计算机运算更加简单,并且也让符号位参与到运算中去。
|
||||
|
||||
## 五、 使用原码、反码与补码进行运算
|
||||
|
||||
### 1) 使用原码运算
|
||||
计算十进制表达式:`1 - 1 = 0`
|
||||
```text
|
||||
1 - 1 = 1 + (-1)
|
||||
= 原:[ 0000 0001 ] + 原:[ 1000 0001 ]
|
||||
= 原:[ 1000 0010 ] = -2
|
||||
```
|
||||
**结论**:如果用原码表示,让符号位也参与计算,对于减法来说,结果是不正确的。这也是计算机内部在存储数据时不使用原码的原因。为了解决这一问题,出现了反码。
|
||||
|
||||
### 2) 使用反码运算
|
||||
计算十进制表达式:`1 - 1 = 0`
|
||||
```text
|
||||
1 - 1 = 1 + (-1)
|
||||
= 原:[ 0000 0001 ] + 原:[ 1000 0001 ]
|
||||
= 反:[ 0000 0001 ] + 反:[ 1111 1110 ]
|
||||
= 反:[ 1111 1111 ] = 原:[ 1000 0000 ] = -0
|
||||
```
|
||||
**结论**:通过计算我们发现用反码计算减法,结果的真值部分是正确的。唯一的问题出现在 "0" 这个特殊的数值上。虽然人们理解上 `+0` 和 `-0` 是一样的,但是 0 带符号是没有任何意义的,而且会有 `[0000 0000]原` 和 `[1000 0000]原` 两个编码表示 0。为了解决这一问题,出现了补码。
|
||||
|
||||
### 3) 使用补码运算
|
||||
计算十进制表达式:`1 - 1 = 0`
|
||||
```text
|
||||
1 - 1 = 1 + (-1)
|
||||
= 原:[ 0000 0001 ] + 原:[ 1000 0001 ]
|
||||
= 补:[ 0000 0001 ] + 补:[ 1111 1111 ]
|
||||
= 补:[ 0000 0000 ] = 原:[ 0000 0000 ] = 0
|
||||
```
|
||||
**结论**:这样 0 用 `[0000 0000]` 表示,而以前出现问题的 `-0` 则不存在了。而且人们还发现可以用 `[1000 0000]` 表示 `-128`。
|
||||
|
||||
**-128 的推算过程如下**:
|
||||
```text
|
||||
(-1) + (-127) = -128
|
||||
= 原:[ 1000 0001 ] + 原:[ 1111 1111 ]
|
||||
= 补:[ 1111 1111 ] + 补:[ 1000 0001 ]
|
||||
= 补:[ 1000 0000 ]
|
||||
```
|
||||
> **注意**:因为实际上是使用以前的 `-0` 的补码来表示 `-128`,所以 `-128` 并没有原码和反码表示。只要补码是 `[1000 0000]`,其十进制数值就为 `-128`。
|
||||
|
||||
### 4) 小结
|
||||
因为补码能多存储一个 `-128`,而且在计算机底层中存储的是补码,所以在计算机中一个 8 位的二进制数的存储范围是用补码表示的 `[-128, 127]`,而不是用原码或反码表示的 `[-127, 127]`。这也可以解释为什么计算机中一个字节的取值范围是 `[-128, 127]`。
|
||||
|
||||
## 六、 总结(牢记)
|
||||
|
||||
- **二进制的最高位是符号位**:`0` 表示正数,`1` 表示负数。
|
||||
- **正数三码合一**:正数的原码、反码、补码都一样。
|
||||
- **负数反码**:它的原码符号位不变,其它位取反。
|
||||
- **负数补码**:它的反码 + 1;反之,负数反码 = 负数补码 - 1。
|
||||
- **0 的表示**:`0` 的反码、补码都是 `0`。
|
||||
- **运算方式**:在计算机运算的时候都是以 **“补码”** 的方式来运算的。
|
||||
- **查看结果**:当我们看运算结果的时候,要看它的**原码**(重点)。
|
||||
27
docs/blog/website/EdgeOne_Pages_Images.md
Normal file
27
docs/blog/website/EdgeOne_Pages_Images.md
Normal file
@@ -0,0 +1,27 @@
|
||||
---
|
||||
title: 通过 EdgeOne Pages 搭建图床
|
||||
createTime: 2025/09/29 02:28:17
|
||||
cover: /images/elysia/5.jpg
|
||||
permalink: /article/8gihio2v/
|
||||
---
|
||||
|
||||
各位~今天要给大家介绍一个超棒的图床搭建方法哦!EdgeOne Pages 是腾讯云提供的静态网站托管服务,而且还有免费额度可以使用呢,对于日常需求来说完全足够啦~
|
||||
|
||||
<!-- more -->
|
||||
|
||||
## 创建一个 Git 项目
|
||||
|
||||
第一步呢,我们需要先在 Gitee 上创建一个项目,专门用来存放网站里要用的各种图片。当然啦,如果你习惯用 Github 或者 CNB 也没问题,这些平台都是支持的哦~而且要记住,项目的目录结构就是以后图片的访问路径呢~
|
||||
|
||||
## EdgeOne Page 中导入项目
|
||||
接下来打开 EdgeOne Page 的[控制台](https://console.cloud.tencent.com/edgeone/pages),这里可以导入 Github、Gitee 和 CNB 的项目哦~
|
||||
|
||||
点击「导入项目」,选择 Gitee 项目,找到刚才创建的那个项目,然后就可以直接开始部署啦~
|
||||
|
||||
等待大概一分钟左右,部署完成后,在项目概览页面点击预览按钮,就可以先看看资源能不能正常访问啦~
|
||||
|
||||
## 配置域名
|
||||
|
||||
如果临时链接可以正常访问的话,我们就可以配置自己的域名啦~在项目概览页面点击「自定义域名」就可以进入配置界面哦~
|
||||
|
||||
在那里输入你想要使用的域名,腾讯云可是提供了50个免费证书的额度呢!而且证书到期后还会自动释放额度,所以完全不用担心证书不够用的问题,可以放心大胆地点击「使用免费证书」按钮哦~
|
||||
Reference in New Issue
Block a user