Skip to content

Commit

Permalink
Fix content show error.
Browse files Browse the repository at this point in the history
  • Loading branch information
HarleysZhang committed Aug 27, 2021
1 parent 064ab29 commit 7299293
Show file tree
Hide file tree
Showing 21 changed files with 664 additions and 300 deletions.
Original file line number Diff line number Diff line change
@@ -1,4 +1,18 @@
# Linux 基础-文件及目录管理
- [前言](#前言)
- [概述](#概述)
- [创建、删除、移动和复制](#创建删除移动和复制)
- [目录切换](#目录切换)
- [列出目录内容](#列出目录内容)
- [查找目录及文件 find/locate](#查找目录及文件-findlocate)
- [查看文件内容](#查看文件内容)
- [查找文件内容](#查找文件内容)
- [文件与目录权限修改](#文件与目录权限修改)
- [总结](#总结)
- [管道和重定向](#管道和重定向)
- [设置环境变量](#设置环境变量)
- [Bash快捷输入或删除](#bash快捷输入或删除)
- [总结](#总结-1)
- [参考资料](#参考资料)

## 前言

Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
- [Linux 下查看和设置环境变量](#linux-下查看和设置环境变量)
- [参考资料](#参考资料)

## Linux 下查看和设置环境变量

在 Linux中,**环境变量**是一个很重要的概念。环境变量可以由系统、用户、`Shell` 以及其他程序来设定。变量就是一个可以被赋值的字符串,赋值范围包括数字、文本、文件名、设备以及其他类型的数据
Expand Down
20 changes: 17 additions & 3 deletions 1-computer_basics/Linux 网络编程基础.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,20 @@
目录
---
[toc]
- [大并发服务器架构学习](#大并发服务器架构学习)
- [第一章 高性能的服务器架构](#第一章-高性能的服务器架构)
- [第二章 大型网站架构演变过程](#第二章-大型网站架构演变过程)
- [第三章 poll](#第三章-poll)
- [Linux网络编程基础](#linux网络编程基础)
- [网络基础-综述](#网络基础-综述)
- [1. 协议的概念](#1-协议的概念)
- [2. b/s(浏览器/服务端模式) c/s(客户端/服务端模式)](#2-bs浏览器服务端模式-cs客户端服务端模式)
- [3. 分层模型:OSI七层模型-TCP/IP四层模型](#3-分层模型osi七层模型-tcpip四层模型)
- [4. 协议格式](#4-协议格式)
- [5. NAT映射 打洞机制](#5-nat映射-打洞机制)
- [6. 套接字socket通信原理概念](#6-套接字socket通信原理概念)
- [6.1 网络字节序列化](#61-网络字节序列化)
- [6.2 ip地址转换函数](#62-ip地址转换函数)
- [6.3 socketaddr数据结构](#63-socketaddr数据结构)
- [6.4 网络套接字函数](#64-网络套接字函数)
- [7. TCP C/S 模型:server.c client.c](#7-tcp-cs-模型serverc-clientc)

## 3.1 课程内容概述

Expand Down
18 changes: 15 additions & 3 deletions 1-computer_basics/计算机基础知识.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,18 @@
目录
---
[toc]
- [知识点目录](#知识点目录)
- [操作系统](#操作系统)
- [操作系统中堆和栈的区别](#操作系统中堆和栈的区别)
- [Linux查看cpu和cache信息](#linux查看cpu和cache信息)
- [Windows查看cpu和cache信息](#windows查看cpu和cache信息)
- [并发与并行区别](#并发与并行区别)
- [数据库](#数据库)
- [什么是事务](#什么是事务)
- [并发一致性问题](#并发一致性问题)
- [多进程与多线程区别](#多进程与多线程区别)
- [进程/线程通信](#进程线程通信)
- [进程间通信](#进程间通信)
- [线程通信](#线程通信)
- [并发与并行](#并发与并行)
- [手撕代码题](#手撕代码题)

## 知识点目录

Expand Down
25 changes: 22 additions & 3 deletions 2-programming_language/C++ Primer 学习笔记.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,25 @@
目录
---
[toc]
- [第一部分 C++基础](#第一部分-c基础)
- [第2章 变量和基本类型](#第2章-变量和基本类型)
- [第3章 字符串、向量、数组](#第3章-字符串向量数组)
- [第4章 表达式](#第4章-表达式)
- [第5章 语句](#第5章-语句)
- [第6章 函数](#第6章-函数)
- [第7章 类](#第7章-类)
- [第二部分 C++标准库](#第二部分-c标准库)
- [第8章 IO库](#第8章-io库)
- [第9章 顺序容器](#第9章-顺序容器)
- [第10章 泛型算法](#第10章-泛型算法)
- [第11章 关联容器](#第11章-关联容器)
- [第12章 动态内存](#第12章-动态内存)
- [第四部分高级主题](#第四部分高级主题)
- [第17章 标准库特殊设施](#第17章-标准库特殊设施)
- [第18章 用于大型程序的工具](#第18章-用于大型程序的工具)
- [第19章 特殊工具与技术](#第19章-特殊工具与技术)
- [第三部分 类设计者工具](#第三部分-类设计者工具)
- [第14章 重载运算与类型转换](#第14章-重载运算与类型转换)
- [第13章 拷贝控制](#第13章-拷贝控制)
- [第15章 面向对象程序设计](#第15章-面向对象程序设计)
- [第16章 模板与泛型编程](#第16章-模板与泛型编程)

## 第一部分 C++基础

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
目录
---
[toc]
- [基本概念](#基本概念)
- [](#堆)
- [](#栈)
- [RAII](#raii)
- [如何使用 RAII](#如何使用-raii)
- [参考资料](#参考资料)

## 基本概念

Expand Down
14 changes: 11 additions & 3 deletions 2-programming_language/C-CPP 编程基础.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,14 @@
目录
---
[toc]
- [堆栈溢出一般是由什么原因导致的?](#堆栈溢出一般是由什么原因导致的)
- [C++ 构造函数和析构函数的初始化顺序](#c-构造函数和析构函数的初始化顺序)
- [全局变量和局部变量在内存中是否有区别?如果有,是什么区别?](#全局变量和局部变量在内存中是否有区别如果有是什么区别)
- [C++ 中的 new delete 和 C 语言中的 malloc free 有什么区别](#c-中的-new-delete-和-c-语言中的-malloc-free-有什么区别)
- [static 关键字作用](#static-关键字作用)
- [C++ 变量作用域](#c-变量作用域)
- [C++ 指针和引用的区别](#c-指针和引用的区别)
- [C++ 中析构函数的作用](#c-中析构函数的作用)
- [C++ 静态函数和虚函数的区别](#c-静态函数和虚函数的区别)
- [++i 和 i++ 区别](#i-和-i-区别)
- [const 关键字作用](#const-关键字作用)

## 堆栈溢出一般是由什么原因导致的?

Expand Down
24 changes: 21 additions & 3 deletions 2-programming_language/Python 编程基础.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,24 @@
目录
---
[toc]
- [Python global 语句的作用](#python-global-语句的作用)
- [lambda 匿名函数好处](#lambda-匿名函数好处)
- [Python 错误处理](#python-错误处理)
- [Python 内置错误类型](#python-内置错误类型)
- [简述 any() 和 all() 方法](#简述-any-和-all-方法)
- [Python 中什么元素为假?](#python-中什么元素为假)
- [提高 Python 运行效率的方法](#提高-python-运行效率的方法)
- [Python 单例模式](#python-单例模式)
- [为什么 Python 不提供函数重载](#为什么-python-不提供函数重载)
- [实例方法/静态方法/类方法](#实例方法静态方法类方法)
- [\_\_new\_\_\_\_init \_\_方法的区别](#__new__和-__init-__方法的区别)
- [Python 的函数参数传递](#python-的函数参数传递)
- [Python 实现对函参做类型检查](#python-实现对函参做类型检查)
- [为什么说 Python 是动态语言](#为什么说-python-是动态语言)
- [Python 装饰器理解](#python-装饰器理解)
- [map 与 reduce 函数用法解释](#map-与-reduce-函数用法解释)
- [Python 深拷贝、浅拷贝区别](#python-深拷贝浅拷贝区别)
- [Python 继承多态理解](#python-继承多态理解)
- [总结](#总结)
- [Python 面向对象的原则](#python-面向对象的原则)
- [参考资料](#参考资料)

## Python global 语句的作用

Expand Down
52 changes: 40 additions & 12 deletions 2-programming_language/Shell 语法基础.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,43 @@
## 文章目录

+ Shell 变量
+ Shell 字符串
+ Shell 数组
+ Shell 传递参数
+ Shell 基本运算符
+ Shell 信息输出命令
+ Shell test 命令
+ Shell 流程控制
+ Shell 函数
+ Shell 正则表达式
- [Shell 变量](#shell-变量)
- [使用变量](#使用变量)
- [只读变量](#只读变量)
- [删除变量](#删除变量)
- [变量类型](#变量类型)
- [Shell 字符串](#shell-字符串)
- [单引号与双引号字符串](#单引号与双引号字符串)
- [获取字符串长度](#获取字符串长度)
- [提取子字符串](#提取子字符串)
- [拼接字符串](#拼接字符串)
- [Shell 数组](#shell-数组)
- [定义数组](#定义数组)
- [读取数组](#读取数组)
- [获取数组的长度](#获取数组的长度)
- [Shell 传递参数](#shell-传递参数)
- [Shell 基本运算符](#shell-基本运算符)
- [算术运算符](#算术运算符)
- [关系运算符](#关系运算符)
- [布尔运算符](#布尔运算符)
- [逻辑运算符](#逻辑运算符)
- [字符串运算符](#字符串运算符)
- [Shell 信息输出命令](#shell-信息输出命令)
- [Shell echo 命令](#shell-echo-命令)
- [Shell printf 命令](#shell-printf-命令)
- [%d %s %c %f 格式替代符详解:](#d-s-c-f-格式替代符详解)
- [printf 的转义序列](#printf-的转义序列)
- [Shell test 命令](#shell-test-命令)
- [数值测试](#数值测试)
- [test 检查文件属性](#test-检查文件属性)
- [Shell 流程控制](#shell-流程控制)
- [if else](#if-else)
- [if else-if else](#if-else-if-else)
- [for 循环](#for-循环)
- [while 语句](#while-语句)
- [Shell 函数](#shell-函数)
- [局部变量与全局变量](#局部变量与全局变量)
- [递归函数](#递归函数)
- [常用命令](#常用命令)
- [Shell 正则表达式](#shell-正则表达式)
- [参考资料](#参考资料)

## Shell 变量

Expand Down
53 changes: 53 additions & 0 deletions 3-data_structure-algorithm/算法图解笔记.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,56 @@
- [前言知识](#前言知识)
- [第一章,算法简介](#第一章算法简介)
- [1.2,二分法查找元素](#12二分法查找元素)
- [1.2.1,特殊的二分查找](#121特殊的二分查找)
- [第二章,选择排序](#第二章选择排序)
- [2.1,内存工作原理](#21内存工作原理)
- [2.2.1,链表](#221链表)
- [2.2.2,数组](#222数组)
- [2.2.3,术语](#223术语)
- [2.3,选择排序](#23选择排序)
- [2.4,小结](#24小结)
- [第三章,递归](#第三章递归)
- [3.2,基线条件和递归条件](#32基线条件和递归条件)
- [3.3,栈](#33栈)
- [3.3.1,调用栈](#331调用栈)
- [3.3.2,递归调用栈](#332递归调用栈)
- [3.4,小结](#34小结)
- [第四章,快速排序](#第四章快速排序)
- [4.1,分而治之](#41分而治之)
- [4.2 快速排序](#42-快速排序)
- [4.3 再谈大O表示法](#43-再谈大o表示法)
- [4.4,小结](#44小结)
- [第五章,散列表](#第五章散列表)
- [5.3,冲突](#53冲突)
- [5.4,性能](#54性能)
- [5.5,小结](#55小结)
- [第六章,广度优先搜索](#第六章广度优先搜索)
- [6.1,图是什么](#61图是什么)
- [6.2,广度优先搜索](#62广度优先搜索)
- [6.3,栈与队列](#63栈与队列)
- [6.4,代码实现图结构](#64代码实现图结构)
- [6.4.1 运行时间](#641-运行时间)
- [第七章,迪克斯特拉算法](#第七章迪克斯特拉算法)
- [7.1,使用迪克斯特拉算法](#71使用迪克斯特拉算法)
- [7.2,术语](#72术语)
- [7.3,负权边](#73负权边)
- [7.4,编程实现狄克斯特拉算法](#74编程实现狄克斯特拉算法)
- [7.5,小结](#75小结)
- [第八章,贪婪(贪心)算法](#第八章贪婪贪心算法)
- [8.1,教室调度问题](#81教室调度问题)
- [8.2,背包问题](#82背包问题)
- [8.3,集合覆盖问题](#83集合覆盖问题)
- [8.3.1,近似算法](#831近似算法)
- [8.4,NP完全问题](#84np完全问题)
- [8.4.1,如何识别NP完全问题](#841如何识别np完全问题)
- [8.5,小结](#85小结)
- [第九章,动态规划](#第九章动态规划)
- [9.1,概念](#91概念)
- [9.2,背包问题](#92背包问题)
- [9.1,最长公共子串](#91最长公共子串)
- [第十章,K最近邻算法](#第十章k最近邻算法)
- [第十一章 接下来如何做](#第十一章接下来如何做)

# 前言知识

> [十大经典排序算法动画与解析,看我就够了!(配代码完全版)](https://mp.weixin.qq.com/s/vn3KiV-ez79FmbZ36SX9lg)
Expand Down
59 changes: 56 additions & 3 deletions 4-machine_learning/0-机器学习基本概念.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,22 @@
目录
---
[toc]
- [一,欧氏距离与余弦相似度(cos距离)](#一欧氏距离与余弦相似度cos距离)
- [1.1,余弦相似度](#11余弦相似度)
- [1.2,欧式距离](#12欧式距离)
- [1.3,余弦相似度和欧氏距离的区别](#13余弦相似度和欧氏距离的区别)
- [二,混淆矩阵与 PR](#二混淆矩阵与-pr)
- [三,均方误差和方差、标准差](#三均方误差和方差标准差)
- [四,如何处理数据中的缺失值](#四如何处理数据中的缺失值)
- [五,机器学习项目流程](#五机器学习项目流程)
- [六,数据清洗与特征处理](#六数据清洗与特征处理)
- [5.1,清洗标注数据](#51清洗标注数据)
- [5.2,特征分类](#52特征分类)
- [5.3,特征处理与分析](#53特征处理与分析)
- [六,信息熵与交叉熵](#六信息熵与交叉熵)
- [信息熵](#信息熵)
- [相对熵/KL散度](#相对熵kl散度)
- [交叉熵 cross-entroy](#交叉熵-cross-entroy)
- [为什么交叉熵可以用作代价](#为什么交叉熵可以用作代价)
- [KL散度与cross-entropy的关系](#kl散度与cross-entropy的关系)
- [参考资料](#参考资料)

## 一,欧氏距离与余弦相似度(cos距离)
> [专题-机器学习实践](https://github.com/imhuay/Algorithm_Interview_Notes-Chinese/blob/master/A-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0/A-%E6%9C%BA%E5%99%A8%E5%AD%A6%E4%B9%A0%E5%AE%9E%E8%B7%B5.md)
Expand Down Expand Up @@ -114,6 +130,43 @@ $\overline{x_{i}..x_{n}}$ 表示样本均值公式分母由总体方差的 `N`
2. `等量划分`,是根据样本总数进行均分,每段等量个样本划分为 1 段。例如距离特征,取值范围[0,3000000],现在需要切分成 10 段,如果按照等比例划分的话,会发现绝大部分样本都在第 1 段中。使用等量划分就会避免这种问题,最终可能的切分是[0,100),[100,300),[300,500),..,[10000,3000000],前面的区间划分比较密,后面的比较稀疏。

**缺省值处理**。有些特征可能因为无法采样或者没有观测值而缺失,例如距离特征,用户可能禁止获取地理位置或者获取地理位置失败,此时需要对这些特征做特殊的处理,赋予一个缺省值。缺省值如何赋予,也有很多种方法。例如`单独表示,众数,平均值等`

## 六,信息熵与交叉熵

> [【直观详解】信息熵、交叉熵和相对熵](https://charlesliuyx.github.io/2017/09/11/%E4%BB%80%E4%B9%88%E6%98%AF%E4%BF%A1%E6%81%AF%E7%86%B5%E3%80%81%E4%BA%A4%E5%8F%89%E7%86%B5%E5%92%8C%E7%9B%B8%E5%AF%B9%E7%86%B5/)
[为什么交叉熵(cross-entropy)可以用于计算代价](https://www.zhihu.com/question/65288314)

### 信息熵

**其实信息熵是香农信息量($log\frac{1}{p}$)的期望(均值),它不是针对每条信息,而是针对整个不确定性结果集而言,信息熵越大,事件不确定性就越大。单条信息只能从某种程度上影响结果集概率的分布**。信息熵定义:
$$H(P) = \sum_{i} P(i)log_{a} \frac{1}{P(i)} = -\sum_{i}P(i)log_{a} P(i)$$
$P_{i}$ 表示第 i 个事件发生得概率,总的来说信息熵其实从某种意义上反映了**信息量存储下来需要多少存储空间**
总结为:根据真实分布,我们能够找到一个最优策略,以**最小的代价消除系统的不确定性**(比如编码),而这个代价的大小就是**信息熵**

### 相对熵/KL散度

KL散度,有时候也叫KL距离,一般被用于计算两个分布之间的不同,记为 $D(P||Q) = H(P,Q) - H(P)$,也称之为 `KL散度`,离散事件数学公式如下:
$$D_{KL}(P \| Q) = \sum_i P(i)log_{a} \frac{P(i)}{Q(i)} = \sum_i P(i)[logP(x) - log Q(x)]$$
`P(i) = Q(i)` 的时候,该值为0,深度学习过程也是一个降低该值的过程,**该值越低,训练出来的概率 Q 越接近样本集概率 P,即越准确**,或者可以理解为相对熵一把标尺,用来衡量两个函数是否相似,相似就是 0。即,**相对熵 = 某个策略的交叉熵 - 信息熵**(根据系统真实分布计算而得的信息熵,为最优策略),**当熵为常量时,交叉熵与KL散度相等**(推导公式可参考第二个链接)。
### 交叉熵 cross-entroy

交叉熵是由信息熵而得来的,和 KL 散度关系密切,拓展用在机器学习/深度学习中作损失函数。假定在确定性更大的概率分布情况下,用更不确定的存储策略来计算,比如使用 `P` 的概率乘上 `Q` 的存储因子,套用信息熵公式:
$$H(P) = \sum_{i} P(i)log_{a} \frac{1}{Q(i)} = -\sum_{i}P(i)log_{a} Q(i)$$
用预测概率 p 分布,去编码真实标签 q 的分布,得到的信息量。**交叉熵,用来衡量在给定的真实分布下,使用非真实分布指定的策略消除系统的不确定性所需要付出努力的大小**。总的来说,我们的目的是:让熵尽可能小,即存储空间小(消除系统的不确定的努力小)。**交叉熵的一些性质:**

+ 非负。
+ 和 KL 散度相同,交叉熵也不具备对称性,即 `H(P,Q)≠H(Q,P)`
+ 交叉熵主要用于描述两个事件之间的相互关系,对同一个分布求交叉熵等于对其求熵

### 为什么交叉熵可以用作代价

从数学上来理解就是,为了让学到的模型分布更接近真实数据的分布,我们需要最小化模型数据分布与训练数据之间的 `KL 散度`,而因为训练数据的分布是固定的,因此最小化 `KL 散度`等价于最小化交叉熵,而且交叉熵计算更简单,所以机器/深度学习中常用交叉熵 `cross-entroy` 作为分类问题的损失函数。

### KL散度与cross-entropy的关系

+ `KL` 散度和交叉熵在特定条件下等价
+ $D_{KL}(P||Q) = H(P,Q) - H(P)$

## 参考资料
+ [机器学习中的数据清洗与特征处理综述](https://tech.meituan.com/2015/02/10/machinelearning-data-feature-process.html)
+ [02.[必读]均值、方差、标准差](https://zhuanlan.zhihu.com/p/35435231)
19 changes: 16 additions & 3 deletions 4-machine_learning/1-机器学习基础.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,19 @@
目录
---
[toc]
- [一,Bias(偏差),Error(误差)和Varience(方差)](#一bias偏差error误差和varience方差)
- [1.1,偏差与方差公式](#11偏差与方差公式)
- [1.2,导致偏差和方差的原因](#12导致偏差和方差的原因)
- [1.3,深度学习中的偏差与方差](#13深度学习中的偏差与方差)
- [1.4,交叉验证](#14交叉验证)
- [二,先验概率与后验概率](#二先验概率与后验概率)
- [2.1,条件概率](#21条件概率)
- [2.2,先验概率](#22先验概率)
- [2.3,后验概率](#23后验概率)
- [2.4,贝叶斯公式](#24贝叶斯公式)
- [2.5,后验概率实例](#25后验概率实例)
- [三,似然函数](#三似然函数)
- [四,最大似然估计](#四最大似然估计)
- [五,容量、过拟合和欠拟合](#五容量过拟合和欠拟合)
- [六,交叉验证](#六交叉验证)
- [参考资料](#参考资料)

> 深度学习是机器学习的一个特定分支,要想充分理解深度学习,就必须对机器学习的基本原理有深刻的理解。机器学习的本质属于应用统计学,其更多地关注如何用计算机统计地估计复杂函数,而不太关注为这些函数提供置信区间,大部分机器学习算法可以分成监督学习和无监督学习两类;通过组合不同的算法部分,例如优化算法、代价函数、模型和数据集可以建立一个完整的机器学习算法。
Expand Down
Loading

0 comments on commit 7299293

Please sign in to comment.