From b41c101312ff2f4c04e56bf88126c5ac0e3e3b72 Mon Sep 17 00:00:00 2001 From: Estom Date: Mon, 19 Apr 2021 15:24:05 +0800 Subject: [PATCH] =?UTF-8?q?=E9=9D=A2=E8=AF=95=E5=87=86=E5=A4=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- C++/C++基础/1.2 复合类型.md | 2 +- C++/C++基础/12 关键词解释.md | 23 ++- C++/标准库/12 动态内存.md | 136 +++++++++++++++++- C++/面向对象/1 构造函数和析构函数.md | 54 ++++++- C++/面向对象/2 运算符重载两种方式.md | 1 + C++/面向对象/2.cpp | 107 ++++++++++++++ C++/面向对象/5 多态与虚函数.md | 6 +- C++/面试/15.构造函数和析构函数.md | 28 ---- C++/面试/2.全局变量和静态变量.md | 4 - C++/面试/2.全局变量和静态变量和static.md | 38 +++++ C++/面试/21.数组和指针的区别.md | 18 +++ Python/conda/1 概述.md | 82 +++++++++++ Python/conda/2 管理conda.md | 36 +++++ Python/conda/3 管理环境.md | 80 +++++++++++ Python/conda/4 管理包.md | 111 ++++++++++++++ Python/conda/image/2021-04-16-17-45-55.png | Bin 0 -> 142231 bytes ...{TensorFlow概述.md => 1 TensorFlow概述.md} | 8 +- Tensorflow/TensorFlow1.0/TensorFlow-IO.md | 4 +- .../TensorFlow1.0/TensorFlow-自定义IO.md | 6 +- Tensorflow/TensorFlow1.0/说明.md | 15 -- ...{编译失败记录.md => 附录1 编译失败记录.md} | 0 Tensorflow/TensorFlow2.0/004.md | 1 - Tensorflow/TensorFlow2.0/005.md | 1 - Tensorflow/TensorFlow2.0/009.md | 6 - 工作日志/2021年2月27日-三月份计划.md | 5 +- 工作日志/2021年3月19日-四月份计划.md | 22 +-- 工作日志/2021年3月20日-今日计划.md | 2 +- 工作日志/2021年3月21日-今日计划.md | 2 +- 工作日志/2021年4月10日-今日计划.md | 5 + 工作日志/2021年4月13日-今日计划.md | 2 +- 工作日志/2021年4月16日-感悟.md | 15 ++ 工作日志/2021年4月17日-五月份计划.md | 38 +++++ 工作日志/2021年4月17日-字节面试感悟.md | 6 + 工作日志/2021年4月19日-今日任务.md | 10 ++ 工作日志/2021年4月8日-简历投递记录.md | 65 ++++++--- 算法/A类:基本算法/4.1 排列组合问题.md | 2 +- 算法/B类:数据结构算法/3.4 栈的弹出序列.md | 61 ++++++++ 算法/B类:数据结构算法/4.4 线性区间操作.md | 2 +- .../{5.1 字符串排列.md => 5.1 字符串全排列.md} | 14 +- 算法/C类:问题类型算法/7.1 幂集问题.md | 4 + 40 files changed, 903 insertions(+), 119 deletions(-) create mode 100644 C++/面向对象/2.cpp delete mode 100644 C++/面试/15.构造函数和析构函数.md delete mode 100644 C++/面试/2.全局变量和静态变量.md create mode 100644 C++/面试/2.全局变量和静态变量和static.md create mode 100644 C++/面试/21.数组和指针的区别.md create mode 100644 Python/conda/1 概述.md create mode 100644 Python/conda/2 管理conda.md create mode 100644 Python/conda/3 管理环境.md create mode 100644 Python/conda/4 管理包.md create mode 100644 Python/conda/image/2021-04-16-17-45-55.png rename Tensorflow/TensorFlow1.0/{TensorFlow概述.md => 1 TensorFlow概述.md} (91%) delete mode 100644 Tensorflow/TensorFlow1.0/说明.md rename Tensorflow/TensorFlow1.0/{编译失败记录.md => 附录1 编译失败记录.md} (100%) delete mode 100644 Tensorflow/TensorFlow2.0/004.md delete mode 100644 Tensorflow/TensorFlow2.0/005.md create mode 100644 工作日志/2021年4月16日-感悟.md create mode 100644 工作日志/2021年4月17日-五月份计划.md create mode 100644 工作日志/2021年4月17日-字节面试感悟.md create mode 100644 工作日志/2021年4月19日-今日任务.md create mode 100644 算法/B类:数据结构算法/3.4 栈的弹出序列.md rename 算法/C类:问题类型算法/{5.1 字符串排列.md => 5.1 字符串全排列.md} (82%) create mode 100644 算法/C类:问题类型算法/7.1 幂集问题.md diff --git a/C++/C++基础/1.2 复合类型.md b/C++/C++基础/1.2 复合类型.md index de37bf8f..d12cb6b0 100644 --- a/C++/C++基础/1.2 复合类型.md +++ b/C++/C++基础/1.2 复合类型.md @@ -176,7 +176,7 @@ for(int i=0;i::<静态成员函数名>(<参数表>); \ No newline at end of file diff --git a/C++/标准库/12 动态内存.md b/C++/标准库/12 动态内存.md index 19745cca..0d39ad7c 100644 --- a/C++/标准库/12 动态内存.md +++ b/C++/标准库/12 动态内存.md @@ -92,6 +92,11 @@ const int * pci = new const int(1024); * 不能delete get()返回的普通指针 * 不能用get()返回的指针初始化或reset另一个智能指针。 * 如果使用智能指针管理的资源**不是new分配的内存**,传递给他一个删除器。(new分配的动态内存对应的删除器是delete) +* 当两个智能指针指向的对象相互使用一个shared_ptr成员变量指向对方,会造成循环引用,使引用计数失效,从而导致内存泄漏。例如他们同时超出作用域,但是因为相互之间还保留一次引用计数,而没有办法销毁任何一个。 +### 智能指针概述 + +* 智能指针主要用于管理在堆上分配的内存,它将普通的指针封装为一个栈对象。当栈对象的生存周期结束后,会在析构函数中释放掉申请的内存,从而防止内存泄漏。 +* C++ 11中最常用的智能指针类型为shared_ptr,它采用引用计数的方法,记录当前内存资源被多少个智能指针引用。**该引用计数的内存在堆上分配**。当新增一个时引用计数加1,当过期时引用计数减一。只有引用计数为0时,智能指针才会自动释放引用的内存资源。对shared_ptr进行初始化时不能将一个普通指针直接赋值给智能指针,因为一个是指针,一个是类。可以通过make_shared函数或者通过构造函数传入普通指针。并可以通过get函数获得普通指针。 ## 2 动态内存管理shared_ptr ### shared_ptr的操作 @@ -232,7 +237,25 @@ alloc.deallocate(p,n) ![](image/2021-03-06-22-42-35.png) -### allocator的简单实现 + +### allocator 原理 + +* STL的分配器用于封装STL容器在内存管理上的底层细节。在C++中,其内存配置和释放如下: + +* new运算分两个阶段: + 1. 调用::operator new配置内存; + 2. 调用对象构造函数构造对象内容 + +* delete运算分两个阶段: + 1. 调用对象希构函数; + 2. 调用::operator delete释放内存 + +* 为了精密分工,STL allocator将两个阶段操作区分开来:内存配置有alloc::allocate()负责,内存释放由alloc::deallocate()负责;对象构造由::construct()负责,对象析构由::destroy()负责。 + +* 同时为了提升内存管理的效率,减少申请小内存造成的内存碎片问题,SGI STL采用了两级配置器,当分配的空间大小超过128B时,会使用第一级空间配置器;当分配的空间大小小于128B时,将使用第二级空间配置器。第一级空间配置器直接使用malloc()、realloc()、free()函数进行内存空间的分配和释放,而第二级空间配置器采用了内存池技术,通过空闲链表来管理内存。 + + +## 6 实例——allocator的简单实现 ```C++ #ifndef __JJALLOC__ @@ -310,3 +333,114 @@ namespace JJ{ }; } ``` +## 7 实例——shared_ptr的简单实现 + +```C++ +template +class SmartPtr +{ +private: + T *ptr; //底层真实的指针 + + int *use_count; //保存当前对象被多少指针引用计数 + +public: + SmartPtr(T *p); //SmartPtrp(new int(2)); + + SmartPtr(const SmartPtr &orig); //SmartPtrq(p); + + SmartPtr &operator=(const SmartPtr &rhs); //q=p + + ~SmartPtr(); + + T operator*(); //为了能把智能指针当成普通指针操作定义解引用操作 + + T *operator->(); //定义取成员操作 + + T *operator+(int i); //定义指针加一个常数 + + int operator-(SmartPtr &t1, SmartPtr &t2); //定义两个指针相减 + + void getcount() { return *use_count } +}; + +// int SmartPtr::operator-(SmartPtr &t1, SmartPtr &t2) { +// return t1.ptr - t2.ptr; +// } + +template +SmartPtr::SmartPtr(T *p) +{ + ptr = p; + try + { + use_count = new int(1); + } + catch (...) + { + delete ptr; //申请失败释放真实指针和引用计数的内存 + + ptr = nullptr; + delete use_count; + use_count = nullptr; + } +} +template +SmartPtr::SmartPtr(const SmartPtr &orig) //复制构造函数 + +{ + + use_count = orig.use_count; //引用计数保存在一块内存,所有的SmarPtr对象的引用计数都指向这里 + + this->ptr = orig.ptr; + + ++(*use_count); //当前对象的引用计数加1 +} +template +SmartPtr &SmartPtr::operator=(const SmartPtr &rhs) +{ + //重载=运算符,例如SmartPtrp,q; p=q;这个语句中,首先给q指向的对象的引用计数加1,因为p重新指向了q所指的对象,所以p需要先给原来的对象的引用计数减1,如果减一后为0,先释放掉p原来指向的内存,然后讲q指向的对象的引用计数加1后赋值给p + + ++*(rhs.use_count); + if ((--*(use_count)) == 0) + { + delete ptr; + ptr = nullptr; + delete use_count; + use_count = nullptr; + } + ptr = rhs.ptr; + *use_count = *(rhs.use_count); + return *this; +} +template +SmartPtr::~SmartPtr() +{ + getcount(); + if (--(*use_count) == 0) //SmartPtr的对象会在其生命周期结束的时候调用其析构函数,在析构函数中检测当前对象的引用计数是不是只有正在结束生命周期的这个SmartPtr引用,如果是,就释放掉,如果不是,就还有其他的SmartPtr引用当前对象,就等待其他的SmartPtr对象在其生命周期结束的时候调用析构函数释放掉 + + { + getcount(); + delete ptr; + ptr = nullptr; + delete use_count; + use_count = nullptr; + } +} +template +T SmartPtr::operator*() +{ + return *ptr; +} +template +T *SmartPtr::operator->() +{ + return ptr; +} +template +T *SmartPtr::operator+(int i) +{ + T *temp = ptr + i; + return temp; +} +``` \ No newline at end of file diff --git a/C++/面向对象/1 构造函数和析构函数.md b/C++/面向对象/1 构造函数和析构函数.md index 6237199c..6b9d14ee 100644 --- a/C++/面向对象/1 构造函数和析构函数.md +++ b/C++/面向对象/1 构造函数和析构函数.md @@ -15,8 +15,27 @@ > * 赋值——拷贝赋值运算符、移动赋值运算符 > * 销毁——析构函数 +## 1 构造函数 -## 1. 拷贝构造函数 +> 与类同名的,没有返回值的函数,用来创建、赋值、移动、销毁该类的对象。 +## 1.1 合成构造函数 + +编译器自动生成的一系列构造函数。包括以下几种 +* 合成默认构造函数 + * 当用户定义了任意类型的构造函数,编译器不再自动生成合成默认构造函数 +* 合成拷贝构造函数 + * 即是用户定义了其他类型的构造函数,编译器还会自动生成合成拷贝构造函数。 + * 编译器自动生成的拷贝构造函数。从给定的对象中依次将每个非static成员拷贝到正在创建的对象当中。 +* 合成析构函数 + * 系统自动生成的析构函数。 + +## 1.2 默认构造函数 + +无参构造函数。 + +## 1.3 拷贝构造函数 + +唯一参数是当前类类型,或者当前类型的const引用。 ### 示例 ``` @@ -25,11 +44,10 @@ class Foo{ Foo(const Foo&)//拷贝构造函数 } ``` -### 合成拷贝构造函数 -* 编译器自动生成的拷贝构造函数。从给定的对象中依次将每个非static成员拷贝到正在创建的对象当中。 +### 赋值初始化(拷贝构造函数) -### 赋值初始化 +> 赋值初始化的时候会自动调用拷贝构造函数。 ``` string nies = string("efji"); @@ -39,15 +57,26 @@ string nies = string("efji"); * 从一个返回类型为费引用类型的函数返回一个对象 * 用花括号列表初始化一个数组中的元素或一个聚合类中的成员 -### 拷贝赋值运算符 +### 赋值运算符(拷贝运算符) + +> 普通赋值的时候,会调用重载的赋值运算符。 * 编译器会自动生成合成拷贝赋值运算符 * 需要重载赋值运算符。 +## 1.4 移动构造函数 + + +## 1.5 委托构造函数 + +* 使用已有的构造函数初始化。 + + ## 2 析构函数 ### 定义析构函数 -* 类的成员函数,由拨浪汉接类名构成,没有返回值,不接受参数。不能被重载,一个类只有一个析构函数。 +* 析构函数与构造函数对应,当对象结束其生命周期,如对象所在的函数已调用完毕时,系统会自动执行析构函数。 +* 类的成员函数,由拨浪号接类名构成,没有返回值,不接受参数。不能被重载,一个类只有一个析构函数。 ``` class Foo{ @@ -65,7 +94,20 @@ class Foo{ * 容器被销毁 * 动态对象,使用delete +### 对象析构顺序 + +1. 派生类本身的析构函数; +2. 对象成员析构函数; +3. 基类析构函数。 +## 3 虚函数与构造函数和析构函数 +### 构造函数不必是虚函数 +1. 对象通过虚函数指针访问虚函数。在执行构造函数之前,虚函数指针没有创建,所以即使声明为虚函数,也不会有多态,所以不必要是虚函数。 + +### 析构函数必须是虚函数 + +1. 删除动态运行时的具体对象。 +2. 普通对象如果不被继承,析构函数可以不使用虚函数。避免生成虚函数表和虚函数指针,浪费内存空间。 \ No newline at end of file diff --git a/C++/面向对象/2 运算符重载两种方式.md b/C++/面向对象/2 运算符重载两种方式.md index 44baa392..ae0d7dcc 100644 --- a/C++/面向对象/2 运算符重载两种方式.md +++ b/C++/面向对象/2 运算符重载两种方式.md @@ -503,3 +503,4 @@ int main() return 0; } ``` + diff --git a/C++/面向对象/2.cpp b/C++/面向对象/2.cpp new file mode 100644 index 00000000..ebe4c592 --- /dev/null +++ b/C++/面向对象/2.cpp @@ -0,0 +1,107 @@ +template +class SmartPtr +{ +private: + T *ptr; //底层真实的指针 + + int *use_count; //保存当前对象被多少指针引用计数 + +public: + SmartPtr(T *p); //SmartPtrp(new int(2)); + + SmartPtr(const SmartPtr &orig); //SmartPtrq(p); + + SmartPtr &operator=(const SmartPtr &rhs); //q=p + + ~SmartPtr(); + + T operator*(); //为了能把智能指针当成普通指针操作定义解引用操作 + + T *operator->(); //定义取成员操作 + + T *operator+(int i); //定义指针加一个常数 + + int operator-(SmartPtr &t1, SmartPtr &t2); //定义两个指针相减 + + void getcount() { return *use_count } +}; + +// int SmartPtr::operator-(SmartPtr &t1, SmartPtr &t2) { +// return t1.ptr - t2.ptr; +// } + +template +SmartPtr::SmartPtr(T *p) +{ + ptr = p; + try + { + use_count = new int(1); + } + catch (...) + { + delete ptr; //申请失败释放真实指针和引用计数的内存 + + ptr = nullptr; + delete use_count; + use_count = nullptr; + } +} +template +SmartPtr::SmartPtr(const SmartPtr &orig) //复制构造函数 + +{ + + use_count = orig.use_count; //引用计数保存在一块内存,所有的SmarPtr对象的引用计数都指向这里 + + this->ptr = orig.ptr; + + ++(*use_count); //当前对象的引用计数加1 +} +template +SmartPtr &SmartPtr::operator=(const SmartPtr &rhs) +{ + //重载=运算符,例如SmartPtrp,q; p=q;这个语句中,首先给q指向的对象的引用计数加1,因为p重新指向了q所指的对象,所以p需要先给原来的对象的引用计数减1,如果减一后为0,先释放掉p原来指向的内存,然后讲q指向的对象的引用计数加1后赋值给p + + ++*(rhs.use_count); + if ((--*(use_count)) == 0) + { + delete ptr; + ptr = nullptr; + delete use_count; + use_count = nullptr; + } + ptr = rhs.ptr; + *use_count = *(rhs.use_count); + return *this; +} +template +SmartPtr::~SmartPtr() +{ + getcount(); + if (--(*use_count) == 0) //SmartPtr的对象会在其生命周期结束的时候调用其析构函数,在析构函数中检测当前对象的引用计数是不是只有正在结束生命周期的这个SmartPtr引用,如果是,就释放掉,如果不是,就还有其他的SmartPtr引用当前对象,就等待其他的SmartPtr对象在其生命周期结束的时候调用析构函数释放掉 + + { + getcount(); + delete ptr; + ptr = nullptr; + delete use_count; + use_count = nullptr; + } +} +template +T SmartPtr::operator*() +{ + return *ptr; +} +template +T *SmartPtr::operator->() +{ + return ptr; +} +template +T *SmartPtr::operator+(int i) +{ + T *temp = ptr + i; + return temp; +} \ No newline at end of file diff --git a/C++/面向对象/5 多态与虚函数.md b/C++/面向对象/5 多态与虚函数.md index e60c0a37..3bac00d0 100644 --- a/C++/面向对象/5 多态与虚函数.md +++ b/C++/面向对象/5 多态与虚函数.md @@ -17,7 +17,7 @@ > 也就是说多态性体现在指针和引用的不确实能够性上。但对象在内存中的状态是确定的。当且晋档通过指针或引用调用虚函数是,才会在运行时解析该调用,也只有在这种情况下对动态类型才有可能与静态类型不同。 -``` +```C++ Bulk_quote a();//定义了对象a。这时候,无法触发多态。 Bulk_quote* b = new Bulk_quote();//指针可以指向不同的类型的对象。 Bulk_quote &b = a;//引用可以指向不同类型的对象。 @@ -27,7 +27,7 @@ * 重定义:基类中没有声明函数是虚函数。派生类中对普通函数进行了重定义。只是作用域上的覆盖,没有触发多态和动态绑定。 * 重定义不能触发动态多态。无论指针或引用绑定的是什么对象,都会根据指针或引用的类型,调用该类型的函数。而不是使用虚指针查找虚函数表。只有调用虚函数的时候,才会去根据对象的虚函数指针,查找类中的虚函数表。 -``` +```C++ class A{ public: int a; @@ -66,7 +66,7 @@ int main(){ ``` ### 实现条件 运行时多态的条件: -* 必须是集成关系 +* 必须是j继承关系 * 基类中必须包含虚函数,并且派生类中一定要对基类中的虚函数进行重写。 * 通过基类对象的指针或者引用调用虚函数。 diff --git a/C++/面试/15.构造函数和析构函数.md b/C++/面试/15.构造函数和析构函数.md deleted file mode 100644 index ef7a5e90..00000000 --- a/C++/面试/15.构造函数和析构函数.md +++ /dev/null @@ -1,28 +0,0 @@ -# 类的构造函数 - -> 与类同名的,没有返回值的函数,用来创建、赋值、移动、销毁该类的对象。 - -## 合成构造函数 - -编译器自动生成的一系列构造函数。包括以下几种 -* 合成默认构造函数 - * 当用户定义了任意类型的构造函数,编译器不再自动生成合成默认构造函数 -* 合成拷贝构造函数 - * 即是用户定义了其他类型的构造函数,编译器还会自动生成合成拷贝构造函数。 -* 合成析构函数 - * 系统自动生成的析构函数。 - -## 默认构造函数 - -无参构造函数。 - -## 拷贝构造函数 - -唯一参数是当前类类型,或者当前类型的const引用。 - -## 移动构造函数 - - -## 委托构造函数 - -使用已有的构造函数初始化。 diff --git a/C++/面试/2.全局变量和静态变量.md b/C++/面试/2.全局变量和静态变量.md deleted file mode 100644 index 983d5ac7..00000000 --- a/C++/面试/2.全局变量和静态变量.md +++ /dev/null @@ -1,4 +0,0 @@ - -* 全局变量在main方法之前声明,不显示使用static关键字。作用域是整个工程。在定义的本文件内直接使用。而其他的文件加上extern关键字声明后,也可以使用。 -* 局部静态变量由static关键字声明,他的作用域只在定义的文件,外部的文件不能用extern的方式进行使用。 -* 也就是说全局变量一定是静态变量,而静态变量不一定是全局的。anyway,这两个变量都存储在全局静态区。 \ No newline at end of file diff --git a/C++/面试/2.全局变量和静态变量和static.md b/C++/面试/2.全局变量和静态变量和static.md new file mode 100644 index 00000000..4bbeca07 --- /dev/null +++ b/C++/面试/2.全局变量和静态变量和static.md @@ -0,0 +1,38 @@ +# 全局变量和静态变量 + +## 1 介绍 +### 主要从两个维度进行介绍: + +1. 静态函数和静态变量。用来修饰不同的类型。 +2. 在类中、在块中、在全局中修饰的区别。 + +### 主要影响的有两个过程 +1. 作用域范围。全局、文件中、块作用域内 +2. 存储类型。静态类型。 + +### 补充的基础情况 + +1. 默认情况下,全局变量是静态变量和全局变量。 + +### 相关的关键字 + +* static的用法 + +## 2 全局static + +* 在函数体、块作用域之外声明的变量与函数是全局的。 +* 对于全局函数和全局变量,static修改标识符的链接属性,由默认的external变为internal,作用域和存储类型不改变,这些符号只能在声明它们的源文件中访问。 + + +## 2 代码块 static + +* 对于代码块内部的变量。static修改标识符的存储类型,由自动变量改为静态变量,作用域和链接属性不变。这种变量在程序执行之前就创建,在程序执行的整个周期都存在。 +* 对于代码块内的函数,其只能在定义它的源文件中使用,不能在其他源文件中被引用 + +## 3 类成员 static + +1. **类的静态成员**:在类中,静态成员可以实现多个对象之间的数据共享,并且使用静态数据成员还不会破坏隐藏的原则,即保证了安全性。因此,静态成员是类的所有对象中共享的成员,而不是某个对象的成员。对多个对象来说,静态数据成员只存储一处,供所有对象共用 + +2. **类的静态函数**:静态成员函数和静态数据成员一样,它们都属于类的静态成员,它们都不是对象成员。因此,对静态成员的引用不需要用对象名。 + +3. 在静态成员函数的实现中不能直接引用类中说明的非静态成员,可以引用类中说明的静态成员(这点非常重要)。如果静态成员函数中要引用非静态成员时,可通过对象来引用。从中可看出,调用静态成员函数使用如下格式:<类名>::<静态成员函数名>(<参数表>); \ No newline at end of file diff --git a/C++/面试/21.数组和指针的区别.md b/C++/面试/21.数组和指针的区别.md new file mode 100644 index 00000000..c74795dc --- /dev/null +++ b/C++/面试/21.数组和指针的区别.md @@ -0,0 +1,18 @@ + + +### const char * arr = "123"; char * brr = "123"; const char crr[] = "123"; char drr[] = "123"; + +const char * arr = "123"; +//字符串123保存在常量区,const本来是修饰arr指向的值不能通过arr去修改,但是字符串“123”在常量区,本来就不能改变,所以加不加const效果都一样 + +char * brr = "123"; + +//字符串123保存在常量区,这个arr指针指向的是同一个位置,同样不能通过brr去修改"123"的值 + +const char crr[] = "123"; + +//这里123本来是在栈上的,但是编译器可能会做某些优化,将其放到常量区 + +char drr[] = "123"; + +//字符串123保存在栈区,可以通过drr去修改 \ No newline at end of file diff --git a/Python/conda/1 概述.md b/Python/conda/1 概述.md new file mode 100644 index 00000000..83a20d73 --- /dev/null +++ b/Python/conda/1 概述.md @@ -0,0 +1,82 @@ +# conda 对比 + +> 参考文献 +> * [jianshu.com/p/62f155eb6ac5](jianshu.com/p/62f155eb6ac5) + + +## 简介 + +Anaconda(官方网站)就是可以便捷获取包且对包能够进行管理,同时对环境可以统一管理的发行版本。Anaconda包含了conda、Python在内的超过180个科学包及其依赖项。 + +## 1 Anaconda +* Anaconda是一个包含180+的科学包及其依赖项的发行版本。其包含的科学包包括:conda, numpy, scipy, ipython notebook等。 + +## 2 conda + +* conda是包及其依赖项和环境的管理工具。 +* 既是一个包管理工具,同pip,也是一个环境管理工具,同virtualenv + +* 适用语言:Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。 + +* 适用平台:Windows, macOS, Linux + +### 用途: + +1. 快速安装、运行和升级包及其依赖项。 +2. 在计算机中便捷地创建、保存、加载和切换环境。 + +> 如果你需要的包要求不同版本的Python,你无需切换到不同的环境,因为conda同样是一个环境管理器。仅需要几条命令,你可以创建一个完全独立的环境来运行不同的Python版本,同时继续在你常规的环境中使用你常用的Python版本。——conda官方网站 + +3. conda为Python项目而创造,但可适用于上述的多种语言。 +4. conda包和环境管理器包含于Anaconda的所有版本当中。 + +## 3 pip +* pip是用于安装和管理软件包的包管理器。 + +* pip编写语言:Python。 + +* Python中默认安装的版本: + * Python 2.7.9及后续版本:默认安装,命令为pip + * Python 3.4及后续版本:默认安装,命令为pip3 +* pip名称的由来:pip采用的是递归缩写进行命名的。其名字被普遍认为来源于2处: + * “Pip installs Packages”(“pip安装包”) + * “Pip installs Python”(“pip安装Python”) +## 4 virtualenv +* virtualenv:用于创建一个独立的Python环境的工具。 + +### 解决问题: + +* 当一个程序需要使用Python 2.7版本,而另一个程序需要使用Python 3.6版本,如何同时使用这两个程序? + 1. 如果将所有程序都安装在系统下的默认路径,如:/usr/lib/python2.7/site-packages,当不小心升级了本不该升级的程序时,将会对其他的程序造成影响。 + 2. 如果想要安装程序并在程序运行时对其库或库的版本进行修改,都会导致程序的中断。 + +* 在共享主机时,无法在全局site-packages目录中安装包。 + +* virtualenv将会为它自己的安装目录创建一个环境,这并不与其他virtualenv环境共享库;同时也可以选择性地不连接已安装的全局库。 + +## 5 pip 与 conda 比较 +### 依赖项检查 +pip: +* 不一定会展示所需其他依赖包。 +* 安装包时或许会直接忽略依赖项而安装,仅在结果中提示错误。 + +conda: +* 列出所需其他依赖包。 +* 安装包时自动安装其依赖项。 +* 可以便捷地在包的不同版本中自由切换。 + +### 环境管理 +* pip:维护多个环境难度较大。 +* conda:比较方便地在不同环境之间进行切换,环境管理较为简单。 + +### 对系统自带Python的影响 +* pip:在系统自带Python中包的**更新/回退版本/卸载将影响其他程序。 +* conda:不会影响系统自带Python。 + +### 适用语言 +* pip:仅适用于Python。 +* conda:适用于Python, R, Ruby, Lua, Scala, Java, JavaScript, C/C++, FORTRAN。 + +## 6 conda与pip、virtualenv的关系 + +* conda结合了pip和virtualenv的功能。 diff --git a/Python/conda/2 管理conda.md b/Python/conda/2 管理conda.md new file mode 100644 index 00000000..b5a47241 --- /dev/null +++ b/Python/conda/2 管理conda.md @@ -0,0 +1,36 @@ +# 管理conda + + +> 参考文献 +> * [jianshu.com/p/62f155eb6ac5](jianshu.com/p/62f155eb6ac5) + + +> Windows用户请打开“Anaconda Prompt”; + +## 1. 验证conda已被安装 +``` +conda --version +``` +* 终端上将会以conda 版本号的形式显示当前安装conda的版本号。如:conda 3.11.0 + +* 注意:如果出现错误信息,则需核实是否出现以下情况: + * 使用的用户是否是安装Anaconda时的账户。 + * 是否在安装Anaconda之后重启了终端。 + +## 2. 更新conda至最新版本 +``` +conda update conda +``` +* 执行命令后,conda将会对版本进行比较并列出可以升级的版本。同时,也会告知用户其他相关包也会升级到相应版本。 + +* 当较新的版本可以用于升级时,终端会显示Proceed ([y]/n)?,此时输入y即可进行升级。 + +## 3. 查看conda帮助信息 + +``` +conda --help +``` +或 +``` +conda -h +``` \ No newline at end of file diff --git a/Python/conda/3 管理环境.md b/Python/conda/3 管理环境.md new file mode 100644 index 00000000..01f48c5b --- /dev/null +++ b/Python/conda/3 管理环境.md @@ -0,0 +1,80 @@ +# 管理环境 +> Windows用户请打开“Anaconda Prompt”; + + +> 参考文献 +> * [jianshu.com/p/62f155eb6ac5](jianshu.com/p/62f155eb6ac5) + + +## 1 创建新环境 + +``` +conda create --name +``` + +注意: + +* ``即创建的环境名。建议以英文命名,且不加空格,名称两边不加尖括号“<>”。 +* ``即安装在环境中的包名。名称两边不加尖括号“<>”。 + * 如果要安装指定的版本号,则只需要在包名后面以=和版本号的形式执行。如:conda create --name python2 python=2.7,即创建一个名为“python2”的环境,环境中安装版本为2.7的python。 + * 如果要在新创建的环境中创建多个包,则直接在``后以空格隔开,添加多个包名即可。如:conda create -n python3 python=3.5 numpy pandas,即创建一个名为“python3”的环境,环境中安装版本为3.5的python,同时也安装了numpy和pandas。 + +* `--name`同样可以替换为-n。 + +> 提示:默认情况下,新创建的环境将会被保存在`/Users//anaconda3/env`目录下,其中,``为当前用户的用户名。 + +## 2. 切换环境 +### Linux 或 macOS +``` +source activate +``` +### Windows +``` +activate +``` +### 提示 +* 如果创建环境后安装Python时没有指定Python的版本,那么将会安装与Anaconda版本相同的Python版本,即如果安装Anaconda第2版,则会自动安装Python 2.x;如果安装Anaconda第3版,则会自动安装Python 3.x。 +* 当成功切换环境之后,在该行行首将以“(env_name)”或“[env_name]”开头。其中,“env_name”为切换到的环境名。如:在macOS系统中执行source active python2,即切换至名为“python2”的环境,则行首将会以(python2)开头。 + +## 3. 退出环境至root +### Linux 或 macOS +``` +source deactivate +``` +### Windows +``` +deactivate +``` +### 提示 +* 当执行退出当前环境,回到root环境命令后,原本行首以“(env_name)”或“[env_name]”开头的字符将不再显示。 + +## 4. 显示已创建环境 +``` +conda info --envs +conda info -e +conda env list +``` +例如: + +![](image/2021-04-16-17-45-55.png) + +* 结果中星号“*”所在行即为当前所在环境。macOS系统中默认创建的环境名为“base”。 + +## 5. 复制环境 +``` +conda create --name --clone +``` +注意: +* 即为被复制/克隆环境名。环境名两边不加尖括号“<>”。 + +* 即为复制之后新环境的名称。环境名两边不加尖括号“<>”。 + +* 如:conda create --name py2 --clone python2,即为克隆名为“python2”的环境,克隆后的新环境名为“py2”。此时,环境中将同时存在“python2”和“py2”环境,且两个环境的配置相同。 + +## 6. 删除环境 + +``` +conda remove --name --all +``` + +* 注意:为被删除环境的名称。环境名两边不加尖括号“<>” diff --git a/Python/conda/4 管理包.md b/Python/conda/4 管理包.md new file mode 100644 index 00000000..ec8781c8 --- /dev/null +++ b/Python/conda/4 管理包.md @@ -0,0 +1,111 @@ +# 管理包 + + +## 1. 查找可供安装的包版本 +### 精确查找 +``` +conda search --full-name +``` +* 注意: + * --full-name为精确查找的参数。 + * 是被查找包的全名。包名两边不加尖括号“<>”。 +* 例如:conda search --full-name python即查找全名为“python”的包有哪些版本可供安装。 + +### 模糊查找 +``` +conda search +``` +* 注意:是查找含有此字段的包名。此字段两边不加尖括号“<>”。 + +* 例如:conda search py即查找含有“py”字段的包,有哪些版本可供安装。 + +## 2. 获取当前环境中已安装的包信息 +``` +conda list +``` +* 执行上述命令后将在终端显示当前环境已安装包的包名及其版本号。 + +## 3. 安装包 +### 在指定环境中安装包 +``` +conda install --name +``` +* 注意: + * 即将包安装的指定环境名。环境名两边不加尖括号“<>”。 + * 即要安装的包名。包名两边不加尖括号“<>”。 + +* 例如:conda install --name python2 pandas即在名为“python2”的环境中安装pandas包。 + +### 在当前环境中安装包 +``` +conda install +``` +* 注意: + * 即要安装的包名。包名两边不加尖括号“<>”。 + * 执行命令后在当前环境中安装包。 +* 例如:conda install pandas即在当前环境中安装pandas包。 + +### 使用pip安装包 +* 使用场景 + * 当使用conda install无法进行安装时,可以使用pip进行安装。例如:see包。 + +* 命令 + * 注意:为指定安装包的名称。包名两边不加尖括号“<>”。如:pip install see即安装see包。 +``` +pip install +``` + +* 注意 + * pip只是包管理器,无法对环境进行管理。因此如果想在指定环境中使用pip进行安装包,则需要先切换到指定环境中,再使用pip命令安装包。 + * pip无法更新python,因为pip并不将python视为包。 + * pip可以安装一些conda无法安装的包;conda也可以安装一些pip无法安装的包。因此当使用一种命令无法安装包时,可以尝试用另一种命令。 + +### 从Anaconda.org安装包 +* 使用场景 + * 当使用conda install无法进行安装时,可以考虑从Anaconda.org中获取安装包的命令,并进行安装。 + +* 注意 + * 从Anaconda.org安装包时,无需注册。 + * 在当前环境中安装来自于Anaconda.org的包时,需要通过输入要安装的包在Anaconda.org中的路径作为获取途径(channel)。查询路径的方式如下: + * 在浏览器中输入:http://anaconda.org,或直接点击Anaconda.org + * 在新页面“Anaconda Cloud”的上方搜索框中输入要安装的包名,然后点击右边“放大镜”标志。 + * 搜索结果中有数以千计的包可供选择,此时点击“Downloads”可根据下载量进行排序,最上面的为下载最多的包。(图中以搜索bottleneck包为例) + * 选择满足需求的包或下载量最多的包,点击包名。 + * 复制“To install this package with conda run:”下方的命令,并粘贴在终端中执行。 + * 完成安装。 + +## 4. 卸载包 +### 卸载指定环境中的包 +``` +conda remove --name +``` +* 注意: + * 即卸载包所在指定环境的名称。环境名两边不加尖括号“<>”。 + * 即要卸载包的名称。包名两边不加尖括号“<>”。 + +* 例如:conda remove --name python2 pandas即卸载名为“python2”中的pandas包。 + +### 卸载当前环境中的包 +``` +conda remove +``` +* 注意: + * 即要卸载包的名称。包名两边不加尖括号“<>”。 + * 执行命令后即在当前环境中卸载指定包。 +* 例如:conda remove pandas即在当前环境中卸载pandas包。 + +## 5. 更新包 +### 更新所有包 +``` +conda update --all +conda upgrade --all +``` +* 建议:在安装Anaconda之后执行上述命令更新Anaconda中的所有包至最新版本,便于使用。 +### 更新指定包 +``` +conda update +conda upgrade +``` +* 注意: + * 为指定更新的包名。包名两边不加尖括号“<>”。 + * 更新多个指定包,则包名以空格隔开,向后排列。如:conda update pandas numpy matplotlib即更新pandas、numpy、matplotlib包。 \ No newline at end of file diff --git a/Python/conda/image/2021-04-16-17-45-55.png b/Python/conda/image/2021-04-16-17-45-55.png new file mode 100644 index 0000000000000000000000000000000000000000..ed8b346a79a5a3c82bbc76f1bd2abbd83e6accf5 GIT binary patch literal 142231 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 z 决策树模型是一种简单的深度学习模型。 -##### 深度学习 +## 深度学习 是基于深层次神经网络的学习模型,是机器学习的一种方式。机器学习还有很多种学习模型。机器学习是一种领域,而深度学习,是一种算法。(之前好像写过相关的区别。 > 神经网络的发展过程:单层神经网络(感知机)->双层次神经网络->深度神经网络+卷积神经网络+循环神经网络。 \ No newline at end of file diff --git a/Tensorflow/TensorFlow1.0/TensorFlow-IO.md b/Tensorflow/TensorFlow1.0/TensorFlow-IO.md index b3be5de1..2afeef2a 100644 --- a/Tensorflow/TensorFlow1.0/TensorFlow-IO.md +++ b/Tensorflow/TensorFlow1.0/TensorFlow-IO.md @@ -6,7 +6,7 @@ ### preload 直接将数据设置为常量,加载到TensorFlow的graph中。 -``` +```py import tensorflow as tf x1 = tf.constant([2,3,4]) x2 = tf.constant([4,0,1]) @@ -37,7 +37,7 @@ with tf.Session() as sess: > 基于队列(Queue)API构建输入通道(pipelines),读取文件中的数据 -##### 原理介绍 +### 原理介绍 * 使用字符串张量(比如["file0", "file1"]) 或者tf.train.match_filenames_once 函数来产生文件名列表。 * 文件名打乱(可选)(Optional filename shuffling)。 diff --git a/Tensorflow/TensorFlow1.0/TensorFlow-自定义IO.md b/Tensorflow/TensorFlow1.0/TensorFlow-自定义IO.md index f4fbb574..1f99d51f 100644 --- a/Tensorflow/TensorFlow1.0/TensorFlow-自定义IO.md +++ b/Tensorflow/TensorFlow1.0/TensorFlow-自定义IO.md @@ -1,8 +1,8 @@ -## TensorFlow-自定义IO +# TensorFlow-自定义IO -### 基本介绍 +## 基本介绍 -##### 架构 +### 架构 * 文件格式: 我们使用 Reader Op来从文件中读取一个 record (可以使任意字符串)。 * 记录格式: 我们使用解码器或者解析运算将一个字符串记录转换为TensorFlow可以使用的张量。 diff --git a/Tensorflow/TensorFlow1.0/说明.md b/Tensorflow/TensorFlow1.0/说明.md deleted file mode 100644 index a0b4dc10..00000000 --- a/Tensorflow/TensorFlow1.0/说明.md +++ /dev/null @@ -1,15 +0,0 @@ -## 基本概念 - -### 人工智能 -机器模拟人的意识和思维。是一种科研领域。 - -### 机器学习 -定义:机器学习是一种统计学方法。计算机利用已有数据,得出某种模型,再利用此模型预测结果。 -应用:对连续数据的预测;对离散数据的分类。 -是人工智能的一种方法。 -决策树模型是一种简单的深度学习模型。 - -### 深度学习 -是基于深层次神经网络的学习模型,是机器学习的一种方式。机器学习还有很多种学习模型。机器学习是一种领域,而深度学习,是一种算法。(之前好像写过相关的区别。 - -> 神经网络的发展过程:单层神经网络(感知机)->双层次神经网络->深度神经网络+卷积神经网络+循环神经网络。 \ No newline at end of file diff --git a/Tensorflow/TensorFlow1.0/编译失败记录.md b/Tensorflow/TensorFlow1.0/附录1 编译失败记录.md similarity index 100% rename from Tensorflow/TensorFlow1.0/编译失败记录.md rename to Tensorflow/TensorFlow1.0/附录1 编译失败记录.md diff --git a/Tensorflow/TensorFlow2.0/004.md b/Tensorflow/TensorFlow2.0/004.md deleted file mode 100644 index 0d0b15fa..00000000 --- a/Tensorflow/TensorFlow2.0/004.md +++ /dev/null @@ -1 +0,0 @@ -# 初级 \ No newline at end of file diff --git a/Tensorflow/TensorFlow2.0/005.md b/Tensorflow/TensorFlow2.0/005.md deleted file mode 100644 index fc51e00a..00000000 --- a/Tensorflow/TensorFlow2.0/005.md +++ /dev/null @@ -1 +0,0 @@ -# Keras 机器学习基础知识 \ No newline at end of file diff --git a/Tensorflow/TensorFlow2.0/009.md b/Tensorflow/TensorFlow2.0/009.md index ef083943..9fa25b7c 100644 --- a/Tensorflow/TensorFlow2.0/009.md +++ b/Tensorflow/TensorFlow2.0/009.md @@ -120,8 +120,6 @@ dataset['Japan'] = (origin == 3)*1.0 dataset.tail() ``` - - ### 拆分训练数据集和测试数据集 现在需要将数据集拆分为一个训练数据集和一个测试数据集。 @@ -157,8 +155,6 @@ train_stats = train_stats.transpose() train_stats ``` - - ### 从标签中分离特征 将特征值从目标值或者"标签"中分离。 这个标签是你使用训练模型进行预测的值。 @@ -305,8 +301,6 @@ hist['epoch'] = history.epoch hist.tail() ``` - - ```py def plot_history(history): hist = pd.DataFrame(history.history) diff --git a/工作日志/2021年2月27日-三月份计划.md b/工作日志/2021年2月27日-三月份计划.md index b1add975..c111bf79 100644 --- a/工作日志/2021年2月27日-三月份计划.md +++ b/工作日志/2021年2月27日-三月份计划.md @@ -14,13 +14,13 @@ - [x] 基础语法 √ - [x] 标准库 STL√ - [x] 面向对象 √ - - [ ] 设计模式(有道云笔记,源网址,gitee设计模式库,书) + - [x] 设计模式(有道云笔记,源网址,gitee设计模式库,书)√ - [ ] effective 系列 - [ ] 系列视频(知乎上收藏的内容) - [ ] 狂神java、linux系列 - [ ] C++ coding系列 - [ ] 看大佬写C++。(chermo) - - [ ] 问题专项解决 + - [x] 面试问题专项解决 - Java(四周) - [ ] 语法 - [ ] 标准库-网络编程 @@ -31,6 +31,7 @@ - [ ] 《大话数据结构》 - [ ] 《数据结构与算法分析》 - [ ] 《算法图解》 + - [x] 数据结构笔记(线性、堆栈、树、图) - 算法(一周) - [x] 学习、复习枚举法 - [x] 学习、复习分治法(把相关思想下的问题和算法补充完整) diff --git a/工作日志/2021年3月19日-四月份计划.md b/工作日志/2021年3月19日-四月份计划.md index 4862b01e..93dd182f 100644 --- a/工作日志/2021年3月19日-四月份计划.md +++ b/工作日志/2021年3月19日-四月份计划.md @@ -47,8 +47,9 @@ - [ ] pandas - [ ] sklearn复习 - [ ] pytorch复习 + - [ ] tensorflow复习 -- 视频教程 +- 复习(视频教程) - [ ] pandas - [ ] sklearn - [ ] pytorch @@ -58,12 +59,6 @@ > 1. 首先,学习完成所有的内容,大致会用,完成第一次开发。 > 2. 然后看论文,进行第二轮复习,完成第二轮开发。第二论复习主要使用xmind进行知识的整理和规划。第二轮开发主要是结合论文中的方法,对论文中方法进行复现。 -### **联邦学习文章复现(四周)** - -> 阅读当前最新的联邦学习文章。使用别人的代码复现联邦学习的过程。复习和复现 - -- [ ] DeepAMD -- [ ] CIC ### **恶意软件数据处理(四周)** @@ -120,16 +115,13 @@ ## 计划 在笔记本上的阶段性安排: -1. 第四周:完成上一周的算法的收尾。 -2. 第五周:主要课程的复习 -3. 第六周:机器学习技术栈的全部完成 -4. 第七周:基本数据处理-工程实现完成 -5. 第八周:论文的阅读和复现工作。包括联邦学习和恶意软件机器学习。 +1. 第六周:机器学习技术栈的全部完成 +2. 第七周:基本数据处理-工程实现完成 +3. 第八周:论文的阅读和复现工作。包括联邦学习和恶意软件机器学习。 ## 收获 -* 第六周(4.5-4.11) -* 第七周(4.12-4.18) +* 第六周(4.5-4.11):本来应该完成的任务都没有完成。基础知识没有学习完,一直在准备面试笔试相关的东西。 +* 第七周(4.12-4.18):已经收尾了本来应该完成的任务也一直没有完成。至少把之前的计划完成。四月份计划彻底解决。 * 第八周(4.19-4.25) -* 第九周(4.25-4.30) diff --git a/工作日志/2021年3月20日-今日计划.md b/工作日志/2021年3月20日-今日计划.md index f45e093d..779a0ed7 100644 --- a/工作日志/2021年3月20日-今日计划.md +++ b/工作日志/2021年3月20日-今日计划.md @@ -17,7 +17,7 @@ 2. 每天一个联邦学习框架 - [x] pytorch学习 3. 每天一篇联邦学习的文章。 - - [ ] deepAMD + - [ ] ~~deepAMD~~ 4. 每天数据集处理一小步。 - [X] 获取2020年的两个超大型数据集,并存到云盘当中 - [X] 获取CIC关于恶意软件分析的论文 diff --git a/工作日志/2021年3月21日-今日计划.md b/工作日志/2021年3月21日-今日计划.md index 38bdd9fd..582197d4 100644 --- a/工作日志/2021年3月21日-今日计划.md +++ b/工作日志/2021年3月21日-今日计划.md @@ -4,7 +4,7 @@ 2. 每天一个联邦学习框架 - [x] pytorch 3. 每天一篇联邦学习的文章。 - - [ ] 联邦半监督学习 + - [ ] ~~联邦半监督学习~~ > 明天实现动态数据处理的脚本 diff --git a/工作日志/2021年4月10日-今日计划.md b/工作日志/2021年4月10日-今日计划.md index 9b848cfe..99f88b10 100644 --- a/工作日志/2021年4月10日-今日计划.md +++ b/工作日志/2021年4月10日-今日计划.md @@ -11,3 +11,8 @@ ## 收获 +* 主要学习了各种设计模式。创建型设计模式包括单例模式(如何做到线程安全)、工厂方法、抽象工厂、生成器、原型模式等。用来创建指定的类的对象。 +* 结构型设计模式。主要包括适配器模式,用来封装一个类,以使其使用某个接口,一般是依赖一个具体类的对象,继承一个接口类。桥接模式、使用两个抽象的接口,实现两个角色的相互连接。比如电视有很多实现、遥控器有很多实现。他们之间只要通过接口中的一个对象连接在一块,电视的实现不需要知道使用的是哪个具体的遥控器,遥控器也不需要知道用哪个具体的电视。组合模式,通过**子类依赖多个父类的对象**,将父类的多个实现进行组合。装饰器模式,一般使用来丰富一个对象的内容,但是不是通过多重继承的方法,而是通过**子类依赖一个父类的对象**,在父类的某个实现上动态添加更多的功能。外观模式,主要提供一组类的统一的接口。享元模式主要是用来避免创建大量重复类型的对象,有一个享元工厂,根据想享元的状态判别是否存在相同状态的享元,如果存在就不会创建新的对象,而是直接使用线程的对象。 +* 行为型设计模式。这里主要提一部分。责任链模式,主要定义了一系列相互关联的类,用来流水线处理数据,与装饰器模式相似,动态添加一系列功能或者。迭代器主要是用来实现一个迭代器接口,可以用来next来访问下一个。用来迭代内部的空间。命令模式、解释模式、中介者模式、备忘录模式、观察者模式、装状态模式、策略模式、模板方法、访问者模式、空对象模式等以后再了解。 +* IO设计模式主要包括reactor和Proactor两种设计模式。前者是被动的,通过IO多路复用实现,多个阻塞IO,准备好后通过中断的方式通知线程处理数据。后者是用户自己实现的,维护一个队列,当数据准备好后,主动调用回调函数实现并行。 + diff --git a/工作日志/2021年4月13日-今日计划.md b/工作日志/2021年4月13日-今日计划.md index 0b20e0bc..ac780a1e 100644 --- a/工作日志/2021年4月13日-今日计划.md +++ b/工作日志/2021年4月13日-今日计划.md @@ -4,7 +4,7 @@ - [x] 参加腾讯面试 - [x] 整理完成Union、Enum两个类型的数据 - [x] 实现C++ string类 -- [ ] 面向对象——虚函数:构造函数能够是虚函数、多态虚函数/纯虚函数知识补充。(感觉这个东西可放到C++基础中进行介绍了) +- [x] 面向对象——虚函数:构造函数能够是虚函数、多态虚函数/纯虚函数知识补充。(感觉这个东西可放到C++基础中进行介绍了) - [x] 面向对象——继承C++函数重载和运算符重载整理 - [x] C字符串整理以及其他函数了解 diff --git a/工作日志/2021年4月16日-感悟.md b/工作日志/2021年4月16日-感悟.md new file mode 100644 index 00000000..f4f3e379 --- /dev/null +++ b/工作日志/2021年4月16日-感悟.md @@ -0,0 +1,15 @@ +红色的耳机又找不到了。按理说,应该在自己的桌子上或者宿舍里。但感觉好久都没见到了。自从上次回家之后,就再也没有见过。好想开始学习啊。就看视频。看别人怎么操作。已经看说明文档看够了,是时候看点视频学习一下别人怎么一步一步操作了,远比楷书效率来的高。看视频更容易入门。看书更容易深入。 + +每次都是这样。一旦开始学习就拼命。一旦不知道怎么开始学习,就开始放纵。已经有四天没有做过任何事情了。最近毕设与面试的进度都陷入了停滞状态。 + +我接下来应该做什么。应该从什么开始做下去?每每到这个时候,总是这两个永恒的问题。每次陷入这种不知所措的境地。 + +好久没有像现在这样惬意了,在八九年前?还是十几年前?曾经有过相同的感觉,那时候的窗子,还是木头格子的,偶尔会有几篇碎掉的,用那种老化的塑料布贴在上边,似乎是从那种蔬菜大棚上退休的就塑料布,每次有点疯吹过就会呼哧呼哧地响,总会有闲人在上边戳几个窟窿,也不怕夏天的蚊蝇,那些虫子都是从正门大摇大摆地飞进来的。那时候看天空,可能什么都不想,也可能是天马行空地思考,也不会在乎接下来要干什么。玩吧,能有什么计划,从来都是几个人一拍即合的事情,或者走到哪玩到哪。也不是为了吃什么,也不是为了玩什么。单纯地遇到花花草草,遇到形形色色的人,遇到小水库大田野,就很快乐。看到有人放风筝就回家掏出自己的风筝来。 + +放风筝可能是世界上最放松的事情了。即是一天盯着天空,也没人觉得这个人有些奇怪。就几个人,坐在麦田的田垄上,春天的麦苗没有拔节,随便踩。刚开始的时候跑两步,等上了天,就可以吧手中的线全部放掉了。有的时候,觉得线不够长,就总是把好几个线团接起来。直到风筝在天上看起来已经很小,再远就要消失的是偶才肯罢休。 + +那时候仰望天空。不会叹气。我的卧室,刚出身的时候,我就睡在那里,那张床上。后来分床睡,我去了小床,后来分屋子睡,我去了西屋。再后来,我又回来了,爸妈买了新床,新装修的屋子睡觉,我又回到了一开始出生时跟爸妈睡在一块的那张床上。果然,那张床要比其他的床,更让人容易入睡。继承了妈妈睡眠不足的坏毛病。索性就晚睡晚起呗。大学之前妈妈总会催命一样一大早叫我起来学习。大学之后,就再也没有在早上叫醒我。我啥时候睡醒,啥时候吃饭。好习惯忘得一干二净。 + +感觉已经飘过了一大片云彩。是时候开始所谓的五月份计划了。把四月份计划的一部分剥离出来。论文阅读和论文复现应该属于五月份计划的内容。四月份计划三月份就开始执行了。三月份计划执行到四月份还没有完成。如今三四五月份计划,可以并行执行了。任务的切换果然需要消耗大量的精力,多线程不是并发解决问题的最优方案。IO多路复用(基于中断的)或者IO异步才是并行开发的最好方式。处理完一个再一个。 + +已经整整耽误了一周了。这是第七周的周五。计划中第六周就应该完成了技术栈的补充。第七周已经做完数据处理和基本的训练方式。应该回顾一下前几天的收获。补充一下前几周的计划。之前的学习任务都完成。然后真正地开始五月份计划。开始吧。 \ No newline at end of file diff --git a/工作日志/2021年4月17日-五月份计划.md b/工作日志/2021年4月17日-五月份计划.md new file mode 100644 index 00000000..2787dd29 --- /dev/null +++ b/工作日志/2021年4月17日-五月份计划.md @@ -0,0 +1,38 @@ +## 任务 + +> 四月份计划主要进行基础知识的学习和复习。完成了初步的数据处理。接下来的主要任务是阅读论文并完成论文复习计划。 + +### **阅读论文计划(100篇计划)**(两周) + +### **联邦学习文章复现**(四周) + +> 阅读当前最新的联邦学习文章。使用别人的代码复现联邦学习的过程。复习和复现 + + + +### **恶意软件文章复现**(四周) + +- [ ] DeepAMD +- [ ] CIC + + +### **联邦学习+恶意软件文章复现**(四周) + + +> 后续任务:论文撰写计划(六月份计划) + + +## 计划 + + +* 第九周(4.26-5.2)完成论文阅读计划 +* 第十周(5.3-5.9)完成论文复现计划1——联邦学习论文复现 +* 第十一周(5.10-5.16)完成论文复现计划2——恶意软件论文复现 +* 第十二周(5.17-5.23)完成论文复现计划3——联邦学习+恶意软件 +* 第十四周(5.24-5.30)完成论文复现计划4——非独立同分布并准备中期答辩。 + +> 这样一看似乎真的没有时间。自己不过也只剩一个月的时间做完毕设了。 + + +## 收获 + diff --git a/工作日志/2021年4月17日-字节面试感悟.md b/工作日志/2021年4月17日-字节面试感悟.md new file mode 100644 index 00000000..4c587705 --- /dev/null +++ b/工作日志/2021年4月17日-字节面试感悟.md @@ -0,0 +1,6 @@ +# 菜 + +果然,自己还是会耿耿于怀。自己上次的说辞,没有一句话是对自己有利的。可能已经失去了最终的机会。我希望自己能够好好跟他们聊聊,实现自己的人生。 + +有时候明明都知道结果不好。却还是硬着头皮等靴子落地的声音。不到最后不死心,总是抱着奇怪的幻想,企图用意念改变既定的结果。现在等到的智能有一个结果。没办法从过去中走出来。 + diff --git a/工作日志/2021年4月19日-今日任务.md b/工作日志/2021年4月19日-今日任务.md new file mode 100644 index 00000000..2abae0b2 --- /dev/null +++ b/工作日志/2021年4月19日-今日任务.md @@ -0,0 +1,10 @@ +## 计划 + +- [ ] 看完C++面经 +- [ ] 复习一遍面试的基础知识。 +- [ ] LeetCode三道题计划正式开启。 +- [ ] tensorflow针对两个数据集的训练完成 +- [ ] 蚂蚁金服4点的面试 +- [ ] 快手6点的面试 + +## 收获 \ No newline at end of file diff --git a/工作日志/2021年4月8日-简历投递记录.md b/工作日志/2021年4月8日-简历投递记录.md index e041e1ff..e980022e 100644 --- a/工作日志/2021年4月8日-简历投递记录.md +++ b/工作日志/2021年4月8日-简历投递记录.md @@ -20,7 +20,7 @@ - [ ] 04-18 20:00:00 -- 22:00:00 笔试 > 但是TMD之前的面试进度还在。没办法参加第二次面试了,早知道,直接换个事业群,换一波人说不定还好说话。妈卖批。别是上一个boss -## 商汤科技 +## ~~商汤科技~~ * 岗位:研究院-后端研发工程师 * 技术要求: @@ -39,7 +39,7 @@ ## ~~拼多多~~ > 只有上海的岗位 -## 深睿医疗 +## ~~深睿医疗~~ * 岗位:后端研发 * 技术要求: * 流程: @@ -59,7 +59,7 @@ * 流程 - [x] 简历投递https://jobs.bytedance.com/campus/position/application - [x] 2021-04-11 15:00 1面。北京字节跳动。 - - [ ] 2021-04-14 11:00 3面。 + - [x] 2021-04-14 11:00 3面。 ## 阿里巴巴 * 岗位:研发工程师C++ @@ -70,29 +70,60 @@ * 或许,你并不熟悉C,C++,但是你不畏挑战,喜欢钻研,能够用你亮眼的成果证明自己超强的学习能力; * 或许,你参加过大学生数学建模竞赛,“挑战杯”,机器人足球比赛等; * 投递 - - [x] 简历投递 + - [x] 简历投递https://campus.alibaba.com/myJobApply.htm - [x] 素质测评 - [x] 2021年04月09日 19:00 - 2021年04月09日 20:00。完球了没人捞我的专利,待会问问师兄。 + - [ ] 2021年4月19日 16:00 一面。终于还是来了。还是要好好准备的。把所有的问题复习一遍。估计很难进。 > 二期简历 ------------- -## 快手 - -* 岗位 -* 技术要求 -* 投递 ## 华为实习 +* 岗位:软件开发实习生 +* 岗位要求: + 1. 计算机、软件、通信等相关专业本科及以上学历; + 2. 热爱编程,基础扎实,熟悉掌握但不限于JAVA/C++/C/Python/JS/HTML/GO等编程语言中的一种或数种,有良好的编程习惯; + 3. 具备独立工作能力和解决问题的能力、善于沟通,乐于合作,热衷新技术,善于总结分享,喜欢动手实践; + 4. 对数据结构、算法有一定了解; + 5. 优选条件:熟悉TCP/IP协议及互联网常见应用和协议的原理;有IT应用软件、互联网软件、IOS/安卓等相关产品开发经验,不满足于课堂所学,在校期间积极参加校内外软件编程大赛或积极参于编程开源社区组织;熟悉JS/AS/AJAX/HTML5/CSS等前端开发技术。 +* 流程 + - [ ] 简历投递https://career.huawei.com/reccampportal/portal5/user-index.html + + ## 美团 +* 岗位:后端开发工程师 +* 岗位要求 + 1. 掌握一种以上的开发语言,包括但不限于Java、C、C++、Python、Golang等;了解MySQL等基本使用,熟练使用SQL语句;会常用的shell命令; + 2. 具有扎实的数据结构、操作系统、数据库、算法、网络等计算机基础知识; + 3. 优秀的学习能力和自驱力,对新技术有强烈的求知精神,能深入代码研究,能通过英文论文等第一手资料了解业界新技术,积极学习新技术提升自我、提升团队; + 4. 优秀的逻辑思维能力,特别是流程梳理能力和建模能力,善于从复杂系统表象中分析问题。具有较强的解决问题能力,对解决复杂问题充满激情; + 5. 善于交流,有良好的团队合作精神和协调沟通能力,有一定推动能力。 +* 流程 + - [ ] 简历投递https://campus.meituan.com/apply-record +## 快手 -需要补充的能力: -* Redis nosql非关系型数据库。 -* 分布式开发 - - - - - +* 岗位:C++ 搜索推荐实习生。基础架构中心实习生 +* 岗位要求 + 1. 本科及以上学历,计算机相关专业优先; + 2. 熟悉C/C++或Rust,有扎实的计算机基础,对数据结构、算法基础有深入理解; + 3. 熟悉面向对象的设计思想,了解软件开发流程; + 4. 有实际项目经验或互联网公司实习经历者优先,有OI、ICPC等竞赛经验者优先; + 5. 热爱互联网,对互联网产品和技术有浓厚的兴趣,热衷于追求技术极致与创新; + 6. 具有良好的沟通能力和团队合作精神、优秀的分析问题和解决问题的能力。 +* 流程 + - [x] 简历投递https://zhaopin.kuaishou.cn/recruit/e/#/official/my-apply/ +## 网易 +* 岗位:C++开发实习生 +* 岗位要求 + 1. 不管学的是什么专业,都有一颗对互联网无比热爱,愿意为之付出的心; + 2. 就是喜欢C. C++这个程序语言,还就爱拿它做项目开发; + 3. 对网络编程有研究,基本的gdb调试能力?内存泄漏,越界读写等常见问题?对你来说都不是问题; + 4. 作为一个优秀的程序员,有良好的服务器端编程能力和编程习惯,相关模块设计. 文档编写都是小case; + 5. 十八般武艺样样精通,掌握多线程并发编程技术,掌握各种数据结构和算法; + 6. 熟悉windows/linux编程环境,如果有MySQL开发经验那就再 好 不 过 啦!!! +* 流程 + - [ ] 简历投递https://campus.163.com/app/personal/apply + diff --git a/算法/A类:基本算法/4.1 排列组合问题.md b/算法/A类:基本算法/4.1 排列组合问题.md index 83f094ec..8a7ccfb8 100644 --- a/算法/A类:基本算法/4.1 排列组合问题.md +++ b/算法/A类:基本算法/4.1 排列组合问题.md @@ -1,6 +1,6 @@ # 排列问题 -## 1 排列问题-分治法 +## 1 排列问题-分治法、递归法 ### 问题描述 diff --git a/算法/B类:数据结构算法/3.4 栈的弹出序列.md b/算法/B类:数据结构算法/3.4 栈的弹出序列.md new file mode 100644 index 00000000..9660fda4 --- /dev/null +++ b/算法/B类:数据结构算法/3.4 栈的弹出序列.md @@ -0,0 +1,61 @@ +## 栈的弹出序列 + +### 问题描述 +输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如,序列 {1,2,3,4,5} 是某栈的压栈序列,序列 {4,5,3,2,1} 是该压栈序列对应的一个弹出序列,但 {4,3,5,1,2} 就不可能是该压栈序列的弹出序列。 + +  + +示例 1: +``` +输入:pushed = [1,2,3,4,5], popped = [4,5,3,2,1] +输出:true +解释:我们可以按以下顺序执行: +push(1), push(2), push(3), push(4), pop() -> 4, +push(5), pop() -> 5, pop() -> 3, pop() -> 2, pop() -> 1 +``` + +示例 2: +``` +输入:pushed = [1,2,3,4,5], popped = [4,3,5,1,2] +输出:false +解释:1 不能在 2 之前弹出。 +``` +[链接](https://leetcode-cn.com/problems/zhan-de-ya-ru-dan-chu-xu-lie-lcof) + +### 问题分析 + +* 之前入栈的元素,在之后只能以逆序出现。也就是说,逆序之后的数字,都是逆序。 + +### 策略选择 + + +### 算法设计 + + +### 算法分析 + +### 算法实现 +``` +#include +using namespace std; +class Solution { +public: + bool validateStackSequences(vector& pushed, vector& popped) { + stack s; + int j=0; + for(int i=0;i tree; diff --git a/算法/C类:问题类型算法/5.1 字符串排列.md b/算法/C类:问题类型算法/5.1 字符串全排列.md similarity index 82% rename from 算法/C类:问题类型算法/5.1 字符串排列.md rename to 算法/C类:问题类型算法/5.1 字符串全排列.md index b93f39e7..b48b85a1 100644 --- a/算法/C类:问题类型算法/5.1 字符串排列.md +++ b/算法/C类:问题类型算法/5.1 字符串全排列.md @@ -1,14 +1,20 @@ +## 字符串全排列 + +### 问题描述 -## 字符串排列 - -* 递归、回溯。 +### 策略选择 +* 循环构建全排列 +* 递归构建全排列 * 判断相同字符的选择 +### 算法设计 + +### 算法分析 * 时间复杂度O(n!) * 空间复杂度O(n2) - +### 算法实现 ```C++ vector permutation(string s) { vector vec; diff --git a/算法/C类:问题类型算法/7.1 幂集问题.md b/算法/C类:问题类型算法/7.1 幂集问题.md new file mode 100644 index 00000000..1599cc52 --- /dev/null +++ b/算法/C类:问题类型算法/7.1 幂集问题.md @@ -0,0 +1,4 @@ + + + +[生成幂集](../A类:基本算法/4.11%20生成子集问题.md) \ No newline at end of file