0%

2019年4月3日 上午11:54
Effective C++ 学习笔记 | Charles的技术博客

提醒:

  1. 认真的学习c++的语法过程中,要注意:你的首要任务还是完成功能。
  2. 就像学习英语一样,作为一个初学者,别怕自己口语不好、或者为了炫耀自己的口语,而去说英语一样。首要目的是为了交流
  3. 对于我这个初学者来说,effective C++这本书远高于我的能力,所以,别过分的要求自己要使用这其中的各种知识点,能做出来就不错的
  4. 读这本书最重要的是明白自己与高手之间的差距,这种差距不是我读本书就可以赶上的。
  1. 构造_析构_赋值 :
    1. 是我们就应该掌握的一些基本能力
    2. 主要内容:
      1. 知道4种c++类自带的函数是什么?
      2. 什么时候对应哪一个要区分清楚
  2. 资源管理:
    1. 先引出了智能指针,然后说明了智能指针的优势4个限制
  3. 接口设计+实现:
    1. 这部分的知识点比较散乱,每个小章节之间没有连贯性
    2. 我理解就是一些花式技巧,和一些应用点
  4. 类的继承:
    1. 两个思考的角度:
      1. 站在作用域的角度去理解,很多问题都迎刃而解
      2. C++本身的语法是帮助我们对问题建模的思考角度
    2. 理解3个vitual
      1. pure virtual_simple(impure) virtual_non-virtual各自代表的什么意思? 什么时候使用?
    3. 一个好玩的地方:
      1. p180:继承一个带有缺省参数值的virtual函数
        1. virtual函数是动态绑定而缺省参数是静态绑定!

2019年4月1日 下午7:05
极大似然估计详解 - 知行流浪 - CSDN博客
这篇文章写的太好了

  1. 我在学习EM和HMM时,对极大似然估计不理解
    1. 不知道他有什么用?怎么用?
  2. 这篇文章就从简单的概率问题开始讲解,并引出问题,最后讲解了极大似然估计的原理:
    1. 这篇文章最核心的一句话:利用试验结果得到某个参数值能够使样本出现的概率为最大,则称为极大似然估计
    2. 翻译过来:我既然能在众多样本中选中他们几个,那么他们这几个样本对应的出现的概率一定是最大的!
    3. 之所以核心的原因:这一句话就提供了一个最大化的等式,有了等式我们就可以求解这个等式中的参数.
  3. 其实这个道理我在学习概率的时候我已经懂了,但是在用的使用却联系不起来,还是自己知识学习的不到位!

2019年3月31日 下午8:05

层次 话gitignore的思路:

  1. 分层次
  2. 每层次,先全部删掉,再往回捡
    注:最大的问题就是不分层次!

例子:

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
41
#数学gitignore的思路:

#1.分层次

#2.每层次,先全部删掉,再往回捡

#注:最大的问题就是不分层次!



#第一层[要的]

/*

!/2019_知识/

!.gitignore

!README.md



#第二层/2019_知识/[要的]

/2019_知识/*

!/2019_知识/czh_leetcode

!/2019_知识/czh_share_review

!/2019_知识/czh_数学/



#第三层/2019_知识/czh_数学/[要的]

/2019_知识/czh_数学/*

!/2019_知识/czh_数学/从历史发展的角度理解线性代数+微积分,及其关系.md

!/2019_知识/czh_数学/从历史发展的角度理解线性代数+微积分,及其关系

2019年3月31日 下午5:53

参考文章:

LeetCode Divide Two Integers 两数相除 - Grandyang - 博客园

  1. 我一开觉得求绝对值、-ans这些都算是不符合规定的,后来发现其他人都是这么用的!
  2. 通过这道题有也发现:不用乘除法之后,速度大家都非常的快!

Divide Two Integers - LeetCode

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
41
42
43
44
//上一版本的:负数不能使用左移符号,ans没有忘了longlong了
class Solution {
public:
int divide(int dividend, int divisor) {
//处理int的边界
if (divisor == 0 || (dividend == INT_MIN && divisor == -1)) return INT_MAX;
if((dividend<divisor && dividend > 0) || (dividend>divisor && dividend<0) || (dividend<0 && divisor>0 && (dividend+divisor)>0) || (dividend>0 && divisor<0 && (dividend+divisor)<0)) return 0;
//使用long long 就不用处理步骤中的溢出问题
long long dividend2 = abs((long long)dividend), divisor2 = abs((long long)divisor), res = 0;
int sign = ((dividend < 0) ^ (divisor < 0)) ? -1 : 1;

long long ans=0;

//处理全正的情况
if((dividend2 >=divisor2 && divisor2 > 0 )||(dividend2 <= divisor2 && divisor2 < 0 ))
{
long long temp_divisor = divisor2;
while(dividend2 >= temp_divisor){
//此时,i代表divisor左移次数
int i = 0;
divisor2 = temp_divisor;
while(dividend2 >= divisor2){
i++;
divisor2 <<= 1;
}
divisor2 >>= 1;
//此时,i代表2左移次数
i= i-2;

//更新结果
if(i == -1){
ans += 1;
}
else{
ans += 2<<i;
}

//更新dividend
dividend2 = dividend2 - divisor2;
}
}
return sign == 1 ? ans : -ans;
}
};

2019年3月30日 下午11:58

  1. 就像我前面一篇文章所写,我提出的问题品味不够 提高看待问题的品味
  2. 我在文中也写到可以站在更加宏观的角度去理解,比如说行业的角度
  3. 其实:如何站在更加宏观的角度思考?这也是一个具体的问题
    1. 我认为:下面这些故事中蕴含的哲学原理,就是我们解决问题的关键
    2. 因为,咱们所遇到的问题,前人们早就遇到过了,我们其实没有比较从头开始。





2019年3月30日 下午11:11
续:
特征工程与竞赛
PPT:
模式识别与机器学习

  1. 在读了施一公的文章之后,我尝试使用批判性的思维去学习和整理知识,发现其实还是很有难度的。
  2. 我提出一个最原始的问题:如果我遇到了类似的数据和算法,我如何让他们达到最好的效果,我可以从哪些角度去解决这个问题?
  3. 从这堂课的学习中,有以下几种解决的方式:
    1. 特征选择
    2. 特征提取、转换
    3. 属性离散化
    4. 自动数据清洗(这个我还没有弄懂)
    5. 并且最后还提出问题:数学建模的困境?
      1. 来自于:Breiman, L. (2001). “Statistical Modeling: the Two Cultures”. Statistical Science 16 (3): 199–215.
      2. 这篇文章提出了机器学习所面临的几个本质问题?
        1. 这些问题都是几乎无法完全解决的,通过这样的问题我们也可以再多了解一些机器学习本质。
      3. 我更关注的:他是如何发现这其中的问题的?,这样认识问题的能力,比我自己总结一些小的科研tip强好几个层次。
  4. 总结反思过后,我总结:
    1. 我虽然现在掌握了通过提问题来发现问题、解决问题的思路技巧,但是这其中的不足是:我对事物的视角、品味比较低。
    2. 我关注的地方是具体的方法、模型,我总结tip和方法,以及我提出的一些问题,都是围绕这些具体的方法,想着如何理解他们,如何改进他们。
    3. 而,老师们的视角是站在领域和行业发展的角度去分析问题,提出的问题是这个领域的问题,更加宏观也更加深远。