Skip to content

Commit

Permalink
doc
Browse files Browse the repository at this point in the history
  • Loading branch information
sindorei committed Jan 16, 2024
1 parent 2099015 commit 395a443
Show file tree
Hide file tree
Showing 29 changed files with 9,793 additions and 1 deletion.
14 changes: 14 additions & 0 deletions docs/.vuepress/sidebar.ts
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,20 @@ export const sidebar: SidebarConfig = {
{
text: 'eggjs',
link: '/nodejs/eggjs.html'
},
],
'/nodejs/deep_into_nodejs/': [
{
text: '深入剖析 Node.js 底层原理',
children: [
{
text: 'libuv',
children: [
'/nodejs/deep_into_nodejs/libuv/data_struct.md',
'/nodejs/deep_into_nodejs/libuv/eventloop.md',
]
}
],
}
],
'/pl/': [
Expand Down
1 change: 1 addition & 0 deletions docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ home: true

# nodejs
- [eggjs](./nodejs/eggjs.md)
- [深入剖析 Node.js 底层原理](./nodejs/deep_into_nodejs/index.md)


# 操作系统
Expand Down
18 changes: 18 additions & 0 deletions docs/common/algorithm/index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# 常见算法复杂度
- 常数阶
- 对数阶
- 多项式阶
- 指数阶


# 斐波拉契
- 指数阶
* 递归
- 多项式阶
* 迭代
- 对数阶


# 素数
- 试除法
* 2,3,4... $\sqrt{n}$ 去除n,如果都不能整除,则n为素数
11 changes: 11 additions & 0 deletions docs/common/game.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
# 游戏中常见算法
- 追踪算法
- 碰撞检测
* 地图格子算法
* 包围盒检测算法
* 像素检测算法
- 路径搜索
* 随机迷宫算法
* A*算法
- 有限状态机
- 粒子系统
135 changes: 135 additions & 0 deletions docs/frontend/css/flex.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,135 @@
# flex-grow 计算

flex容器的剩余可用空间 = flex总可用空间 - 已计算出的flex项目计算后的值之和

flex容器的剩余空间=flex容器的剩余可用空间 - 所有剩余flex项目的flex-basis之和

flex项目的灵活性=(flex容器的剩余空间/剩余flex项目flex-grow值总和) * 当前flex项目的flex-grow

flex项目计算后的值 = flex项目的灵活性 + flex-basis 如果此值小于显示设置的 width 或 min-content 将以 Flex 项目的内容的最小尺寸(min-content )为准

当 Flex 项目显式设置了 flex:1 和具体的 width 值时,如果浏览器计
算出来的 flex-basis 大于 Flex 项目的最小内容尺寸(min-content) 时,将以 flex-basis
计算出来的值作为 Flex 项目的宽度;反之,如果计算出来的 flex-basis 小于 Flex 项目的最
小内容尺寸(min-content)时,浏览器会把 Flex 项目的最小内容尺寸(min-content)作为
flex-basis 的最终值,也将其作为该 Flex 项目的宽度。

默认情况之下,Flex 项目(即设置了 flex:1 )在收缩的时候,其宽度也
不会小于其最小内容尺寸(min-content)或固定尺寸元素。如果要改变这一点,需要在 Flex
项目上显示设置最小宽度 min-width (或 min-inline-size),或最小高度min-height(或
min-block-size)的值,一般将其设置为0 。

但在 Flexbox 布局中,Flex 项目的 flex-basis 值为 auto 时,它的大小由 Flex 项目的最大内
容长度(即 max-content)来决定
但当 flex-basis: auto 碰到 Flex 项目显式设置了长度尺寸,比如 width 或 inline-size
时,此时的 auto 计算出来的值就是对应的 width 或 inline-size 的值

当你在 Flex 项目同时设置了 width (或 inline-size),且
flex-basis 值为 0 (或任何一个非 auto 的值)时,那么 flex-basis 的值都会替代 width
或 inline-size 属性的值

所有 Flex 项目的 flex-grow 总和如果小于 1 ,Flex 容器剩余空间还会
有余留; flex-grow 大于或等于1时,Flex 容器的剩余空间不会有余留

Flex 项目的 flex-grow 总和如果小于等于1时:
flex项目的灵活性 = flex容器的剩余空间 * 当前flex项目的flex-grow

大于1时浏览器将会循环遍历去计算每个 Flex 项目的 弹性量


总结:
只有 Flex 容器有剩余空间,且 flex-grow 值不为 0 时,Flex 项目才会按照扩展因子
(flex-grow 值)比率来分割 Flex 容器的剩余空间。

如果 Flex 容器中所有 Flex 项目的 flex-grow 值的总和小于 1 时,Flex 容器的剩余空间
是分不完的(有留存),只有 flex-grow 值的总和大于或等于 1 时,Flex 容器的剩余空
间才能全部分完。

Flex 容器中的所有 Flex 项目的 flex-grow 值设置为 1 ,并不能平均分配 Flex 容器的剩
余空间,它和 Flex 项目自身的内容最小尺寸以及它的内部固定尺寸的元素有关。

Flex 项目的 flex-grow 会给 Flex 项目的 flex-basis 值带来变化,但它也会受 min-*
(比如 min-width 、 min-inline-size 、min-height 、min-block-size)和 max-*
(比如 max-width 、max-inline-size 、max-height 和 max-block-size )等属性的
影响。


# flex-shrink 计算

flex容器的剩余可用空间 = flex总可用空间 - 已计算出的flex项目计算后的值之和

flex容器的不足空间=flex容器的可用空间 - 所有 Flex 项目的尺寸总和

flex项目的灵活性=(flex容器的不足空间/所有flex项目flex-shrink) * 当前flex项目的flex-shrink

flex项目计算后的值 = felx项目的灵活性 + flex-basis 如果此值小于min-content 会取 min-content


# grow与shrink对比
flex-grow 按比例分配 Flex 容器剩余空间,Flex 项目会按比例变大,但不会造成 Flex项目溢出 Flex 容器(除非所有 Flex 项目自身的最小内容总和就大于 Flex 容器空间)。

flex-shrink 按比例分配 Flex 容器不足空间,Flex 项目会按比例变小,但 Flex 项目仍
然有可能溢出 Flex 容器。

当 flex-grow 属性值总和小于 1 时,Flex 容器的剩余空间分不完;同样的,当 flex-shrink 属性值总和小于 1 时,Flex 容器的不足空间分不完。

另外,flex-shrink 有一点和 flex-grow 完全不同,如果某个 Flex 项目按照 flex-shrink 计算出来的新宽度(flex-basis)趋向于 0 或小于 Flex 项目内容的最小长度(min-content)时,Flex 项目将会按照该元素的 min-content 或其内部固定宽度的元素尺寸设置 flex-basis新的值,同时这个宽度将会转嫁到其他 Flex 项目,浏览器会按照相应的收缩因子重新对 Flex项目进行计算,直到符合条件为止。


# flex-basis

在 CSS 中,任何一个容器都有四种自动计算尺寸大小的方式:
auto :会根据格式化上下文自动计算容器的尺寸;
min-content :是在不导致溢出的情况下,容器的内容的最小尺寸;
max-content :容器可以容纳的最大尺寸,如果容器中包含未格式化的文本,那么它将
显示为一个完整的长字符串;
fit-content :如果给定轴中的可用空间是确定的,则等于 min(max-content,
max(min-content, stretch-fit)) ,反之则等于 max-content。
需要注意的是, CSS 中的宽高比属性,即 aspect-ratio 也可以决定一个容器的尺寸


flex-basis属性在任何 Flex 容器空间(剩余空间或不足空间)分配发生之前初始化 Flex 项目尺寸 。

flex-basis 属性的语法规则:

`flex-basis: content | <width>`

该属性的默认值是 auto ,它可以接受 content 和 <width> 值。

<width> 值指的是 CSS 的 width 属性(尺寸属性),可用于 width 属性的值都可以用
于 flex-basis ,比如我们熟悉的 px 、% 、vw 等,以及需要根据内容自动计算的属性
值,比如 min-content 、max-content 和 fit-content 等。

content 是指 Flex 项目的内容的自动尺寸,它通常相当于 Flex 项目最大内容大小
(max-content)。

如果 flex-basis 的值设置为 auto ,浏览器将先检查 Flex 项目的主尺寸(Main Size)是否
设置了绝对值,再计算 Flex 项目的初始值。比如说,你给 Flex 项目显式设置了 width:
200px,那么 200px 就是 Flex 项目的 flex-basis 值,该值也被称为是 Flex 项目的假设主尺
寸,因为 Flex 项目的最终主尺寸(flex-basis 计算后的值)会受 Flex 容器剩余空间或不足
空间的影响,除非 flex-grow 和 flex-shrink 两属性的值都显式设置为 0 。
如果 Flex 项目可以自动调整大小,则 auto 会解析为其内容的大小,此时 min-content 和
max-content 就会起作用,并且 Flex 项目的 flex-basis 值将会是 max-content 。

有一点需要注意的是,如果在 flex-basis 属性上设置了除 auto 和 content 之外的所有值,
它和书写模式以及阅读模式是有关的,在水平书写模式(ltr 或 rtl),flex-basis 的解析
方式与 width 相同。
不同的是,如果一个值对于 width 将解析为 auto ,那么该值对于 flex-basis 就会被解析为
content。例如,flex-basis 的值是一个百分比值,那么它会相对于 Flex 容器的主轴尺寸
(Main Size)来计算;如果 Flex 容器的大小不确定时,则 flex-basis 使用的值会是
content。


元素的 width 大于或等于 max-width 时,取 max-width ,即 max-width 能覆盖 width

元素的 width 小于或等于 min-width 时,取 min-width ,即 min-width 能覆盖 width

当 min-width 大于 max-width 时,取 min-width ,即 min-width 优先级将高于 max-width

注意,上面这个规则同样适用于 CSS 的min-height、height和max-height以及它们对
应的 CSS 逻辑属性,比如min-inline-size、inline-size和max-inline-size;min-block-size、block-size和max-block-size



CSS 中给元素设置一个尺寸时,除了设置具体值之外,还可以通过一些数学表达式来给其设
置值,比如 calc() 、min() 、max() 和 clamp() 等
3 changes: 2 additions & 1 deletion docs/frontend/engineering/webpack/upgrade.md
Original file line number Diff line number Diff line change
Expand Up @@ -40,4 +40,5 @@
- `terser-webpack-plugin` 代替 `uglifyjs-webpack-plugin`

- 如果是webpack 3 升到5 ,需安装 `webpack-cli` 参数还略有不同
- url-loader 、 css-loader 配置 `esModule: false`
- url-loader 、 css-loader 配置 `esModule: false`
- raw-loader、url-loader、file-loader 可替换为 [asset module](https://webpack.docschina.org/guides/asset-modules/)
2 changes: 2 additions & 0 deletions docs/language/english/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
- [Pronunciation Respelling](./pronunciation_respelling.md)
- APA
* Americanist phonetic notation (also called [North] American[ist] Phonetic Alphabet, or APA)
- [BBC Phonetic Respelling ](http://teach.files.bbci.co.uk/archive/BBC_Text_Spelling_guide.pdf)

# 语法
- [英语语法体系(重塑你的语法认知框架)](./english_grammar_system.md)
Expand All @@ -24,6 +25,7 @@
- [旋元佑进阶文法](http://grammar.codeyu.com/#docs/preface)
- 英语语法高手之路
- 英语语法体系
- [不一样的英语词汇书 音、形、意统一记忆法 [詹先觉著]](./yinxingyi.md)

# english course online
- [shaw english](https://www.youtube.com/channel/UC_OskgZBoS4dAnVUgJVexcw)
Expand Down
64 changes: 64 additions & 0 deletions docs/language/english/yinxingyi.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
# 开闭音节发音规则

## 开音节
- 元音结尾
* we
* go
- 元音字母+辅音字母+不发音e结尾(或y结尾)
* name
* lady
- 元音字母+元音字母+辅音
* wait
* meet


## 闭音节
- 元音字母+辅音字母结尾
* net
- 元音字母+两辅音字母+不发音e结尾
* solve

> R、W、Y要与辅音字母区别对待,因为R为翘舌,能发若因,W通U,Y通I

可将th、st、ng组合看出一个辅音字母


## 辅音音素发音规则
- [k]
* 字母 k、c,字母c在a、o、u或辅音字母前,以及词尾
* kite
* can
- [f]
* f、ph、gh
* four
* photo
* tough

- [s]
* s、c,c在e、i、y前
* say
* cent

- [sh]
* sh、ch, 常用的一些后缀也发sh音
* ship
* machine

- [ch]
* ch、tch
* cheap
* catch
- [g]
* g 在a、o、u前
* go
- [z]
* z、s,元音后,或浊辅音后
* zoo
* rise

- []
* s,在u、ure、ia、io前
- [j]
* j、g(*)、dg,在e、i、y前,词尾ge
* jeep、orange、judge
Loading

0 comments on commit 395a443

Please sign in to comment.