Skip to content

Commit

Permalink
feat: 新增一些读书整理文档
Browse files Browse the repository at this point in the history
  • Loading branch information
142vip.cn committed Nov 8, 2023
1 parent 1ea8d51 commit f11753d
Show file tree
Hide file tree
Showing 32 changed files with 716 additions and 791 deletions.
2 changes: 1 addition & 1 deletion .markdownlint.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ module.exports = {
"style": "---"
},
"MD036": false,
"MD040": false,
"MD040": true,
"MD045": false,
"MD041": false,
"MD042": false,
Expand Down
215 changes: 90 additions & 125 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,32 @@
<!-- #region quick-start -->

>这里是工作、学习、生活中总结的各类文章,`有技术``有生活``有思考`
所有内容会选择性的发表于**微信公众号、博客、掘金、CSDN、Github ,实际内容以本仓库排版、校对为主。**
代码会不定期同步到 **码云**
<div align="center">

<p>
JavaScriptCollection
</p>
<p style="font-size: 30px"><strong>✨【理论+实战】保姆级成长笔记✨</strong></p>

</div>

<div style="text-align: center">
<div>
<a href="https://js-collection.netlify.app" target="_blank" style="padding: 5px">
<img alt="Netlify" src="https://api.netlify.com/api/v1/badges/75a7251a-f873-4aff-b387-6449ca241ef7/deploy-status">
</a>
<a href="https://js-collection.vercel.app" target="_blank" style="padding: 5px">
<img alt="Vercel" src="https://therealsujitk-vercel-badge.vercel.app/?app=408">
</a>
</div>
<div>
<img alt="code size" src="https://img.shields.io/github/languages/code-size/142vip/JavaScriptCollection" style="padding: 5px">
<img alt="release version" src="https://img.shields.io/github/v/release/142vip/JavaScriptCollection" style="padding: 5px">
<img alt="repo size" src="https://img.shields.io/github/repo-size/142vip/JavaScriptCollection" style="padding: 5px">
</div>
</div>

这里是工作、学习、生活中总结的各类文章,`有技术``有生活``有思考`
所有内容会选择性的发表于`微信公众号``掘金``CSDN``Github` ,实际内容以本仓库排版、校对为主。

## 在线浏览

Expand All @@ -20,26 +44,24 @@

> 前端技术百花齐放、层出不穷,个人认为要注重广度,学会看官方文档熟练操作即可;
### CSS
### HTML

> 依赖W3CSchool文档和日常整理,主要是对CSS常用操作和基础属性进行整理总结。不会过多深入
### CSS

- CSS开发规范
- 样式属性
- 页面布局
- 移动端适配

##### 基础教程

### JavaScript

##### 快速入门
#### 快速入门

- [简单介绍]()
- [快速了解]()
- [JavasScript开发规范]()

##### 基础教程
#### 基础教程

- [语法与数据结构]()
- [循环与迭代]()
Expand All @@ -52,7 +74,7 @@
- [promise对象的使用]()
- [modules模块]()

##### 中级教程
#### 中级教程

- [Promise对象]()
- [async函数]()
Expand All @@ -62,7 +84,7 @@
- [JSON.stringify()的三个参数]()
- [ES6、ES7、ES8、ES9、ES10的新特性]()
- [ES2020新特性]()
- [JavaScript 工具函数大全]()
- [工具函数大全]()
- [常用函数方法整理]()

### JQuery
Expand All @@ -81,8 +103,6 @@

### Vue.js

> 介绍基础、常用的vue功能,不会很深入的涉及到vue源码及原理
### React

### Nuxt.js
Expand All @@ -95,20 +115,19 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的

市面上前端框架层出不穷,不同的技术栈依赖的UI框架也不尽相同,这里将会依据笔者使用的UI框架,以线上项目展示的方式,介绍用过的框架;

- Bootstrap
- LayerUI
- Ant-design-vue
- iView-UI
- VantUI
- Element-UI
#### Bootstrap

## 后端【Node】
#### LayerUI

> 相比前端,作为偏后端的开发者,
>
后端技术的学习则需要稳扎稳打、不断积累整理,在会用、能用、熟练的基础上,更应该学习其中的原理;所以若你为后端开发者,不论Java、Nodejs、Go等技术栈,对待下面将提及的微服务架构、容器技术、服务治理、高可用等都需要努力学习,抓住重点;
>
> 在面试面前,能力是不会说谎的,打铁还需自身硬,加油~
#### Ant-Design-Vue

#### IView-UI

#### Vant-UI

#### Element-UI

## 后端【Node】

### Express框架

Expand Down Expand Up @@ -142,87 +161,50 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的

### Egg.js框架

#### 入门篇

- [第一部分:Egg框架快速入门]()
- [1.1 基础功能]()
- [1.1.1 接口参数获取]()
- [1.1.2 Egg内置对象]()
- [1.1.3 Config配置]()
- [1.1.4 Egg生命周期]()
- [1.1.5 中间件理解]()
- [1.1.6 Router路由分发]()
- [1.1.7 Controller控制器]()
- [1.1.8 Service服务]()
- [1.1.9 常用插件]()
- [1.2 核心功能]()
- [1.2.1 日志输出]()
- [1.2.2 定时任务]()
- [1.2.2 HttpClient网络请求]()
- [1.2.3 Cookie的基本使用]()
- [1.2.4 Session的基本使用]()
- [1.2.5 统一异常-错误处理]()
- [1.2.6 CSRF防范和XSS攻击]()
- [1.2.7 RESTful API风格]()
- [第二部分:插件开发]()
#### 入门教程

- [接口参数获取]()
- [Egg内置对象]()
- [Config配置]()
- [Egg生命周期]()
- [中间件理解]()
- [Router路由分发]()
- [Controller控制器]()
- [Service服务]()
- [日志输出]()
- [定时任务]()
- [HttpClient网络请求]()
- [Cookie的基本使用]()
- [Session的基本使用]()
- [统一异常-错误处理]()
- [CSRF防范和XSS攻击]()
- [RESTful API风格]()

#### 插件使用

- [2.1 egg-validate参数校验]()
- [2.2 egg-view-ejs页面渲染]()
- [2.3 egg-redis缓存]()
- [2.4 egg-mysql]()
- [2.5 egg-sequelize]()
- [2.6 egg-socket.io即时通讯]()

#### 代码实战篇

##### 常用代码
#### 最佳实践

- [图片前端在线剪辑]()
- [文件上传后台处理]()
- [MD5加密-解密算法]()
- [Egg Jwt加密和校验]()

##### 框架集成

- [手把手搭建基础Egg开发框架]()

### Nest.js框架

> Nestjs框架推崇Typescript语法,友好的兼容express框架,因此在学习Nestjs框架之前,请务必熟悉express框架、Typescript入门
> `Nestjs`框架推崇`Typescript`语法,友好的兼容`Express`框架,因此在学习`Nestjs`框架之前,请务必熟悉`Express`框架、`Typescript`入门
- [核心基础概念]()
- [项目创建初始化入门]()
- [整合swagger快速生成api文档]()
- [接口路由请求传参]()

## 算法

- 算法分析——时间、空间复杂度

### 查找算法

- 顺序查找
- 折半查找
- 分块查找
- B树和B+树
- 散列(Hash)表
- 字符串模式匹配(KPM)

### 排序算法

- 插入排序
- 交换排序
- 选择排序
- 归并排序
- 基数排序

## 开发技巧

### 代码管理

### 代码风格

### 编译工具

## 数据库

> 主讲数据库基础知识,结合node的简单使用,相关的部署方案参照下方的文档
Expand Down Expand Up @@ -254,57 +236,42 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
- 简单使用
- Node下的CURD操作、

## 容器相关
### 算法

## 服务部署

### Nginx

- [nginx安装,普通安装 Or Docker搞定?]()
- [手把手nginx基础入门]()
- [反向代理、负载均衡真有那么难吗?]()
- [Nginx SSL证书,从此踏上Https之路]()

### Docker
- 算法分析——时间、空间复杂度

- 我与docker的第一次硬碰硬
- docker操作入门真有那么难吗?
- 这些基础操作指令,你会吗?
- 那些年,我常用的docker指令操作汇总
#### 查找算法

### Docker-Compose
- 顺序查找
- 折半查找
- 分块查找
- B树和B+树
- 散列(Hash)表
- 字符串模式匹配(KPM)

- 听说你装了N次都没搞定?
- 集群启动失败,yaml规范不清楚?
- [我了解的docker-compose都在这里了](https://mp.weixin.qq.com/s/nC4nF51xn61TZlenuUxDog)
#### 排序算法

### Linux下Shell编程
- 插入排序
- 交换排序
- 选择排序
- 归并排序
- 基数排序

- [shell基础整理](https://mp.weixin.qq.com/s/gctrWdB1JEK59_a9tJQSkg)
- [操作mysql数据库]()
- shell操作docker
- 环境变量env
## 开发技巧

## 网关
### 代码管理

### Kong
### 代码风格

- [kong的的基本介绍]()
- [docker下kong的部署]()
- docker-compose搭建kong集群
- 可视化管理界面介绍
### 编译工具

### KongAdmin
## 微服务

- 基本介绍与docker部署
- 简单使用
- 路由管理
### 容器相关

### kong-dashboard
### 服务部署

- docker简单部署
- 路由管理
- 插件介绍
### 网关

## 服务注册|发现

Expand All @@ -322,8 +289,6 @@ Nuxt.js是在vue框架上进行封装的,主要是用来解决单体页面的
## 消息中间件

>消息队列已经逐渐成为企业IT系统内部通信的核心手段。具有低耦合、可靠投递、广播、流量控制、最终一致性等一系列功能,成为异步RPC的主要手段之一。当今市面上有很多主流的消息中间件,如老牌的ActiveMQ、RabbitMQ,炙手可热的Kafka,阿里巴巴自主开发RocketMQ等。
### RabbitMQ

### kafka
Expand Down
42 changes: 42 additions & 0 deletions code/node/javascript/deepCopy.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
/**
* 深拷贝实现
*/

const obj = {
name: 'xxxx',
test: 'xxx',
// 浅拷贝中,这一层只能拷贝引用
msg: {
name: 'xxx'
},
color: ['pink', 'red']
}

const obj_test = {

}

// 利用函数递归来实现深拷贝
function deepCopy(newObj, oldObj) {
for (const key in oldObj) {
// 判断我们的属性值属于那种数据类型
const item = oldObj[key]
// 判断item是否为数组
if (item instanceof Array) {
newObj[key] = []
deepCopy(newObj[key], item)
// 注意 Array instanceof Object 数组是属于对象的 先过滤
} else if (item instanceof Object) {
// 判断item是否为对象
newObj[key] = {}
deepCopy(newObj[key], item)
} else {
// 判断是否为简单数据类型
newObj[key] = item
}
}
}

deepCopy(obj_test, obj)
// 输出对比
console.log(obj_test, obj)

0 comments on commit f11753d

Please sign in to comment.