宇宙纪元

hinder110 的思考、读书与代码札记。

0%

第二次食物中毒

先说说看经过吧,上午打完羽毛球,去吃了面皮,下午喝了佳得乐,也可能是因为我下午穿的太少了,据我分析来看应该是病毒性的食物中毒导致的病毒性的肠胃炎,应该也是急性的。

在这个过程中我真实的感觉自己的生命可能就到这里了,这种感觉很奇妙,但是出奇的是我并不害怕。

最主要的是第二天开始之后就开始了发烧,发烧持续了一天,我不知道我的温度是多少。

到现在我还是感觉脑袋模糊

这就是背景啦,

思考

人类的生命太脆弱了,对于普通人来说就是这样的。

个人遭遇的黑天鹅实践是无法预测的。

与其思考以后的每一天不如过好今天。

脆弱性是人的本质,而反脆弱性则是人格的魅力。

自己要学会照顾好自己,这比学习其他的知识重要的多。


工具的介绍

实现这一切的第一步是 node.js的实现这个是的下载的,可以在node.js官网去下载,最好的就是下载18 以后的版本,这个和后面的vite有关,vite可以去看vite的文档,是vue的作者写的。

这里需要命令的实现我把命令列在下面。

1
2
3
$ npm config set registry https://registry.npmmirror.com

$ npm install -g cnpm --registry=https://registry.npmmirror.com

这个是npm的换国内的mirror。

接下来是我们的Vite的工具,这个工具是为了高效的创建react框架,这完全不需要自己来弄,因为这些机械的动作现在越来越复杂了,其实完全不需要人来做这些事情。

1
$ npm create vite@latest my-vue-app -- --template vue
查看 [create-vite](https://github.com/vitejs/vite/tree/main/packages/create-vite) 以获取每个模板的更多细节:`vanilla`,`vanilla-ts`,`vue`,`vue-ts`,`react`,`react-ts`,`react-swc`,`react-swc-ts`,`preact`,`preact-ts`,`lit`,`lit-ts`,`svelte`,`svelte-ts`,`solid`,`solid-ts`,`qwik`,`qwik-ts`。

接下来的就按照命令行提示的做就OK了。

这里有个YouTuber讲这个框架。虽然我不觉的视频学习很高效但是,对于复杂的环境的配置,尤其是Windows这一方面的配置,是很复杂的,也是很不高效的。所以在这里按照视频里来做也没什么不好的。

当然最重要的还是react的学习这里附加啦react的网址。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
function Square({ value }) {
return <button className="square">{value}</button>;
}

export default function Board() {
return (
<>
<div className="board-row">
<Square value="1" />
<Square value="2" />
<Square value="3" />
</div>
<div className="board-row">
<Square value="4" />
<Square value="5" />
<Square value="6" />
</div>
<div className="board-row">
<Square value="7" />
<Square value="8" />
<Square value="9" />
</div>
</>
);
}

props 中大概有的思想,一定是泛型编程了。是函数对函数的调用。

当你单击它的时候,Square 组件需要显示“X”。在 Square 内部声明一个名为 handleClick 的函数。然后,将 onClick 添加到由 Square 返回的 JSX 元素的 button 的 props 中:

1
function Square({ value }) {  function handleClick() {    console.log('clicked!');  }  return (    <button      className="square"      onClick={handleClick}    >      {value}    </button>  );}

function handleClick() { console.log(‘clicked!’); and onClick={handleClick}

下一步,我们希望 Square 组件能够“记住”它被单击过,并用“X”填充它。为了“记住”一些东西,组件使用 state。

state – 使用狀態

让我们将 Square 的当前值存储在 state 中,并在单击 Square 时更改它。

1
2
3
4
import { useState } from 'react';
function Square() {
const [value, setValue] = useState(null);
function handleClick() { //...

value 存储值,而 setValue 是可用于更改值的函数。

传递给 useState 的 null 用作这个 state 变量的初始值,因此此处 value 的值开始时等于 null。

1
function Square() {  const [value, setValue] = useState(null);  function handleClick() {    setValue('X');  }  return (    <button      className="square"      onClick={handleClick}    >      {value}    </button>  );}

每个 Square 都有自己的 state:存储在每个 Square 中的 value 完全独立于其他的 Square。当你在组件中调用 set 函数时,React 也会自动更新内部的子组件。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
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
import { useState } from 'react';

function Square() {
const [value, setValue] = useState(null);

function handleClick() {
setValue('X');
}

return (
<button
className="square"
onClick={handleClick}
>
{value}
</button>
);
}

export default function Board() {
return (
<>
<div className="board-row">
<Square />
<Square />
<Square />
</div>
<div className="board-row">
<Square />
<Square />
<Square />
</div>
<div className="board-row">
<Square />
<Square />
<Square />
</div>
</>
);
}

相识

第一次见面

嗯….其实我对她的记忆其实实在我高中的时候,我机缘巧合去到了,那个学校(就是我的高中)。

第一次的印象是在一次周末的晚自习上,那次周末大家大部分人回家了,记得是另一个女生在问我一个数学题,(这里不得不说我在过去的大部分的学习时间中我的数学都是比较优秀的。)

我的特点

我其实当时是比较害羞和害怕和女生交流的。所以其实我很艰难的回答她的问题。完成这所以的一切以后,有个女生,记得她当时还是长头发,和现在很像呢。不得不说她真的很显年轻,我对她的第一印象是害羞,是的是我在害羞,我对于好看的女生始终有种莫名的害羞存在,但是现在已经好了很多了。

大小姐的特点

哈哈哈哈😄,其实呢我就是在夸她很好看的。之后呢她坐在了我的座位旁片,(不许说我是恋爱脑,我想问问哪个高中生可以不想歪的。)是吧这很正常嘛,她真的皮肤很白,皮肤的状态也很好,搭配我们学校的校服(这里的校服是红色的🟥)这也就更加凸显出她的皮肤更加的白了。哦对,应该是白里透红反正在我的印象中是很完美的。反正我很喜欢就是了。当然呢,大家看到这里会好奇我和这个女生有发生什么故事吗?

未来的故事

这就不得不展开说说看了,这个故事的到来要很久很久,直到我度过我的糟糕的高中生活之后,在大学中摆渡,自我救赎一年之后才出现了故事的主体。这真的很奇妙。

其实在高中的时候还有另外一个女生对我产生过好感,但是很糟糕的是我很难在那样的环境中回应她,其实我现在想起她(主要是她的笑容),这个世界真是很奇妙呢。说不定未来还会再见呢。

那么继续说关于大小姐的故事吧。


我在高中阶段其实和大小姐的交集不是很多,大概率是这样的,为什么说是大概率呢,这是因为我其实经常注意到大小姐的,但是她和我并没有什么关系。

接下来就说说看认识吧


开始交流

一次奇妙的旅行✈️

我们上大学了,我们在不同的省份。

其实按理来说我们大概率是不可能再见面的,事实呢就是见面了。

是另一个高中同学邀请我和她还有另一个女生出去玩,具体是去哪玩,咱就不展开说了。

我其实一开始是不愿意出去的,因为呢,高中对我带来很大的心里阴影。我在过去的很长的时间中都拒绝和高中任何有关的事情有关。其实现在看来还是很极端了,而且也是因为这一点我其实很难和我的高中同学做很好的最后的告别。好吧基本就是没有绝大多数的同学在那一刻以后就没有再见过面了。

抱歉啊,有点跑题了,我总是喜欢补充故事的背景,这一点其实在这个快节奏的时代是不适合的。但是我喜欢这种慢节奏的说明方法。具体的原因请参考《深度工作》and《打开心智》and《反脆弱》。

很幸运的是我去了,我参加了这次旅行,我很幸运,我真的很久没这么确定自己是幸运的了。

再次见面

我们在陌生的城市相见了。我们第一次见面她都不认识我了,我当时其实是无感的,因为刚开始的我其实对这次旅行没抱有太大的期待。其实也许正是这种低的期待,才让这次旅行更加难以忘记。对我来说确实是这样的。

我的兄弟出来解围了,说我长帅了,哈哈哈哈哈,他总是这么乐观和豁达,我同是也很喜欢我这位兄弟(正常的珍惜的感情)。他在在高中陪伴了我很久,也是为数不多我可以放松的不加任何伪装的交流的人。

我们的第一站是建业小镇,我其实还是很害羞,哈哈哈哈哈,我是不是很无聊,一直在说我很害羞。

我又一次见到了她们,我们的第一件最重要的事情呢就是拍一个合照。这一点很重要,我在未来的很长一段时间都是这么认为的。拍照对我来说有更加特殊的意义了。

这次先说到这里怎么样哈哈哈


2025/4/15/20:27

一句话评价这个游戏

优美的画质,漂亮的美术风格,还有就是热血的剧情。

不过我最喜欢的其实是这个游戏是个偏重文本的游戏。

目前游玩时间: 3h ;

所谓的编程就是一个创造的过程

程序员是将自己的构思用计算机表达的一种人

程序员大多是乐观主义者

程序实现其实是有物理上的难题的

但是乐观主义不应该理所当然的怪罪物理上的难题

Brooks法则:
    向进度落后的项目派人手,只会让进度更加慢。

最近的学习生活

1. 开始学习打字,进行打字练习

在之前的练习中我没有达到盲打的地步,这里关键的一点是,我得去盲打一些字,其实就是要,不断的修正,形成肌肉记忆还有大脑的肌肉记忆,这一点很重要对于学习这些,重复性的内容的时候。


那么在我学习其他的东西的时候可以借鉴一些什么呢?

尤其是我在学习英语和编写代码还有画画的时候,现在我最喜欢的无非就这几点。

1编程 2画画 3语言学习 4音乐

我觉的最重要的是有一个反馈机制,还有就是小步的走,反馈机制是最重要的。

那么我怎么创建一个这样的机制呢?

我先在是怎么学习我的英语的,无非就是,每天看youtube这个英语,还有就是背课文。

这里面有没有反馈机制呢?->要给读课文的时候建立反馈机制,可以怎样呢?无非就是矫正我的读音问题,这就得我提前多去听这些原来的音频了。

编程

我在这里的获得是最多的对于我来说

书籍是很好的学习的方法和道具,这一点其实就是我,所有可以说的东西了,

是什么让我开始改变的呢?

其实是那本《算法图解》读完以后,我开始沉迷在算法的世界中了。

包括后来的学习,其实我知道,学习这些其实很难的实际写代码的,但是学习这些很有乐趣,如果每天都写一些,不够优美的代码,那多么的恐怖。

我对我的一句话:在未来的一段时间我要做到《黑客与画家》中的,其实就是工匠精神,其实写代码就是我最喜欢的工匠精神啊!!!这是我未来的追求。

慢慢来,每天都走一点,千万不要走的太快,要克制自己这种思想的诞生。

体育和健康

其实这个学期的到来,我就很少跑步了,不知道为什么我的右腿膝关节的地方会在三公里以后开始疼,很离谱,我猜测有可能是打羽毛球的原因。

关于运动会

我其实是不太想去运动会的。为什么呢?主要还是我觉的我跑步是为了我自己跑的,没必要去追求名次。

还有就是,我一直在想这我到底是为什么在学习的,这也许和跑步也是一样的,究竟是什么呢?

如果快去世了,我会想什么呢?我是否还会继续学习呢?

我这里说的学习是说我想做的事情,经此而以,其实我从开始的时候就开始在学习了,也许在过去的很长一段时间我这种行为是被迫的。被老师,被家长。

那么现在呢?我以后会以怎样的态度对待我的学习呢?

我开始享受我的学习过程了,很奇怪,我之前为此疯狂。

一切都是有意义的。

乐观是这个世界送给我最好的礼物。

我最近在看《四月是你的谎言》

我开始继续看动漫了,我开始变的更像之前那个我了。

前天3/8没有拔掉智齿,其实主要是太贵了,其实医生说的很对的,这里只要有钱这些多不是事情。这很简单,确实是我很狭隘了。

不得不说的是他们生活了很久在这个社会上,很多的人还是很有智慧的。他们都是我值得学习的对象

乐观

我在很多事情的处理中还是很幼稚,对于现在来说,思考和学习才是我的天职,我根本就不够乐观。

不管是拔牙还是做牙其实都一样,根本性的变化就是,对于牙口健康和美观的改变而以。其实和实际付出的钱财是不相关的,在毕业以后其实也是可以做这些的了,但是我其实是更加喜欢计算机的,给我1w我可能更加倾向于买台计算机,但是又狭隘了,如果真的有钱,那么其实两个都可以做的,但是对应的价值回应其实就是性价比,我觉得性价比这个词很有意思,他其实是资本带来的价值观念。但我觉的没什么不好的,但是性价比其实就是一种欺骗,因为一个物件的价值是难以真正定价的。

对于宗教

信不信

对我而言,我难以相信,在我的知识获得足够的时候我难以相信宗教了,这很明显违背我的价值理念的。也是我对我所知的背叛,但是我不排斥别人信。

对于中医

不信为基础,可以适当使用,但是别保有太大的信心,现代医学还是在2.0时代。在《百岁老人》中提出的医学2.0和3.0,是认识和预防的医学,但是绝对不是中医。

关于活在当下

其实这是一种技能,是可以锻炼的,这不是心态,我也不喜欢称之为心态,因为心态是难以改变的,但是一个技能的话是比较好弄的,大多数人在一生中会学习很多的技能。

这个技能怎么锻炼呢?

其实是很简单的,就是冥想🧘‍♂️,为什么呢?

现在来聊聊为什么是这样,其实也很简单,这其实和人的大脑是有关系的,人的大脑的前额叶是人有关于情绪控制和理性专注的控制中心。我们其实只要锻炼这个🧠区就OK了。

说一下为什么冥想可以加强人的前额叶

活在当下这个概念其实就是,时时刻刻的保持自己专注在现在的现实生活中,而不是自己创造的精神世界,这一点无可厚非。

而这里的冥想其实就是想让我们的注意力或者专注力保持在一个物体之上。

这其实和佛教和道教的打坐很相关的,其实他们就是在锻炼他们的前额叶,保持理性,其实应该是没有这么简单的,但是我在这里就简单的聊这个问题。

关于冥想的方法有很多,但是请不要拘泥于形式,冥想的意义在于锻炼我们对生活的感受力,不管你以什么样子的形式来冥想,其实最终目的只有一个而以。

这其实和道教的思想是很有关的,我其实觉的易经的思想和方法是很有趣也很有意义的,我们接受科学,但科学不是真理。这一点很明确,任何的科学家不会和你说科学是真理,科学一定存在真理但是,绝对不是现在这个科学。人类的科学也不可能成为真理,这一点从数学的不完备性被证明的时候就确认了。

今天就这样,祝大家生活愉快!!!

我来自世界各地的朋友们。

明天准备去拔牙😢,三颗阻生智齿,好麻烦,但是我得勇敢一点,我猜测三颗牙齿应该一次解决不了。

拔牙

在之前在家乡的时候就有可能拔牙来着,但是我真的害怕,主要是我看太多的视频,原本没有那么困难的,但是幻想是种恶魔。

今天就这样,实时记录我的拔牙经历。

今天是2025/3/7

先就这样今天明天见。

js的学习

分析js

js的变量类型只有var这一个,也叫体面量,这个可以代表很多的变量类型

我觉得最特殊的是,他的简单,和方便,

还有一点就是,这个代码是运行在node.js上的,感觉这个语言有Java和c和Python的影子。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鸟教程(runoob.com)</title>
</head>
<body>

<h1>我的第一段 JavaScript</h1>
<p>请输入数字。如果输入值不是数字,浏览器会弹出提示框。</p>
<input id="demo" type="text">
<script>
function myFunction()
{
var x=document.getElementById("demo").value;
if(isNaN(x)||x.replace(/(^\s*)|(\s*$)/g,"")==""){
alert("不是数字");
}
}
</script>
<button type="button" onclick="myFunction()">点击这里</button>

</body>
</html>

上次学习的地方

还有就是,这个语言是要在HTML这个模板中运行的,单独也可以运行。

我很喜欢这个语言说的一句话 var就是容器,所有的变量都是容器。

其实我们的思考也就像是容器一样,任何信息对于我们来说就只是信息而以。

js中对象的实现

1
2
3
4
5
6
var person = {
firstName:"John",
lastName:"Doe",
age:50,
eyeColor:"blue"
};
学习这么多语言,js中的对象创建是真的简单,首先的话,c语言是面向程序的语言,c++和Java还有Python是面向对象的语言,但是在c++和Java中是比较麻烦的,首先得创建类,然后创建实例对象,由此来使用对象,但是这样的过程很有严谨性,在复杂大的程序中是很有必要的,但是js是一种脚本语言我觉得和Python是很相似的。

对象属性

可以说 "JavaScript 对象是变量的容器"。

但是,我们通常认为 "JavaScript 对象是键值对的容器"。

键值对通常写法为 name : value (键与值以冒号分割)。

键值对在 JavaScript 对象通常称为 对象属性。
1
2
3
4
5
6
person.lastName;
name = person.fullName();
name = person.fullName;
methodName : function() {
// 代码
}

这玩意和c++很像,简直一模一样。

上次学习的地方

问题 回答
`if(x==””
`if(isNaN(x)
代码执行必须通过哪几个步骤? 1. 编写代码 → 2. 解析代码 → 3. 编译(可选)→ 4. 链接(可选)→ 5. 加载 → 6. 执行 → 7. 运行时环境 → 8. 输出结果 → 9. 错误处理 → 10. 优化(可选)。不同语言和环境的步骤可能略有差异,但总体流程相似。

二分查找算法

代码解释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
def binary_search(arr, target, left, right):
# 基线条件:搜索区间无效
if left > right:
return -1

mid = (left + right) // 2

# 基线条件:找到目标值
if arr[mid] == target:
return mid
# 递归条件:目标值在左半部分
elif arr[mid] > target:
return binary_search(arr, target, left, mid - 1)
# 递归条件:目标值在右半部分
else:
return binary_search(arr, target, mid + 1, right)

我的解释

其实这里的算法解释和上次学习的递归关系很大

而且我感觉,大部分的数学问题都可以使用递归解决,这本来就是一种数学思想

分而治之 !!!这就是数学思想

这里的markdown的语法来自菜鸟教学

还有就是分享周杰伦的歌真的很好听

快速排序

D&C

这里是对D&C的解释:

归并排序(Merge Sort)
将数组分成两半,递归排序,再将两个有序数组合并。

快速排序(Quick Sort)
选择一个基准元素,将数组分为小于基准和大于基准的两部分,递归排序。

二分查找(Binary Search)
将有序数组分为两半,递归查找目标值。

大整数乘法
将大整数分解为更小的部分,递归计算后再合并结果。

矩阵乘法(Strassen算法)
将矩阵分解为子矩阵,递归计算后再合并。

最近点对问题
将平面上的点集分为两半,递归求解最近点对,再合并结果。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
def merge_sort(arr):
# 基线条件:数组长度为1或0时直接返回
if len(arr) <= 1:
return arr

# 分解:将数组分为两半
mid = len(arr) // 2
left_half = merge_sort(arr[:mid]) # 递归解决左半部分
right_half = merge_sort(arr[mid:]) # 递归解决右半部分

# 合并:将两个有序数组合并
return merge(left_half, right_half)

def merge(left, right):
result = []
i = j = 0
# 合并两个有序数组
while i < len(left) and j < len(right):
if left[i] < right[j]:
result.append(left[i])
i += 1
else:
result.append(right[j])
j += 1
# 将剩余部分加入结果
result.extend(left[i:])
result.extend(right[j:])
return result
1
2
3
4
5
6
7
8
9
def quicksort(array): 
if len(array) < 2:
return array
else:
pivot = array[0]
less = [i for i in array[1:] if i <= pivot]
greater = [i for i in array[1:] if i > pivot]
return quicksort(less) + [pivot] + quicksort(greater)
print quicksort([10, 5, 2, 3])

先设置一个基准值[pivot]然后以此为基准分为大于和小于的两个子集合,对子集合再进行递归运算。

刚才你大致见识了归纳证明!归纳证明是一种证明算法行之有效的方式,它分两步:基线
条件和归纳条件。是不是有点似曾相识的感觉?例如,假设我要证明我能爬到梯子的最上面。
递归条件是这样的:如果我站在一个横档上,就能将脚放到下一个横档上。换言之,如果我站
在第二个横档上,就能爬到第三个横档。这就是归纳条件。而基线条件是这样的,即我已经站
在第一个横档上。因此,通过每次爬一个横档,我就能爬到梯子最顶端。
对于快速排序,可使用类似的推理。在基线条件中,我证明这种算法对空数组或包含一个
元素的数组管用。在归纳条件中,我证明如果快速排序对包含一个元素的数组管用,对包含两
个元素的数组也将管用;如果它对包含两个元素的数组管用,对包含三个元素的数组也将管用,
以此类推。因此,我可以说,快速排序对任何长度的数组都管用。这里不再深入讨论归纳证明,
但它很有趣,并与D&C协同发挥作用

序号 问题 简要说明
1 二分查找算法的基线条件和递归条件是什么? 解释了二分查找的基线条件(终止递归)和递归条件(继续递归)。
2 D&C(分治法)是什么? 介绍了分治法的定义、步骤、特点、经典应用以及与动态规划的区别。
3 用 Markdown 文法输出分治法的说明。 使用 Markdown 语法整理了分治法的详细说明。
4 Markdown 如何表示 Python 代码? 解释了如何在 Markdown 中使用代码块和行内代码表示 Python 代码。
5 快速排序代码的修正与优化。 修正了快速排序代码的缩进和 print 语法问题,并提供了优化建议。
6 将以上问题制作成表格,内容尽量精简。 将你问过的问题整理成表格,内容精简明了。
7 要用 Markdown 语法给我输出。 使用 Markdown 语法生成表格,内容为你问过的问题。

以上是我在学习过程中向ai提问的问题!!!