【Paper Reading】Learning while Reading

Learning while Reading

不限于具体的书,只限于知识的宽度

这个系列集合了一周所学所看的精华,它们往往来自不只一本书

我们之所以将自然界分类,组织成各种概念,并按其分类,主要是因为我们是整个口语交流社会共同遵守的协定的参与者,这个协定以语言的形式固定下来。除非赞成这个协定中规定的有关语言信息的组织和分类,否则我们根本无法交谈。

——Benjamin Lee Whorf

Learning and Asking

为什么选择面向对象?

机器语言、汇编语言、面向过程的语言,通过一层层地抽象,计算机语言已经足以与程序员和谐相处,作为各个专业几乎必修的C语言以足以让普

通的程序员理解并使用各种各样的计算,那么为什么还需面向对象的语言呢?

遗憾的是,以C语言为代表的“命令式”语言仍对计算机的逻辑计算有较大的依赖,归根结底,它仍然是为计算机设计的语言,只不过披上了一件更

讨人喜欢的外套。而在我们实际用C编程时,仍然需要建立起机器模型和实际待解决问题的模型之间的关联。

而面向对象的语言不同,它更像是为程序员量身打造的语言,通过把各个不同的事物当做对象,通过抽象的接口,大大减少了开发的工作量,所以

这是为程序员量身打造的语言。

为什么选择Java

         对于许多懵逼的初学者而言,与Java语言最像的恐怕就是C++了。究竟在Java与C++中如何选择?在众多面向对象的语言中如何选择?

C++:C++的创立者认为效率是最重要的议题。因为对象都会占用一定的内存空间,那么每一个对象的生命期(存在周期)如何把握?C++认为每

一位程序编写者都清楚这一点,所以把及时释放空间的重任放在了编程者的肩上。

Java:Java虚拟机认为这样程序员的任务也太大了,代码也将显得冗长、繁杂,干脆我帮他们干完了事。就这样,Java虚拟机根据每一个对象的

作用区域创立了垃圾回收制度。

C++的优势:

      1、在理想的情况下,紧凑的创立、回收会让内存的使用达到最完美的境地。

      2、C++在堆栈中创建的对象比Java在堆中创建的对象,销毁更快。

Java的优势:

      1、当然C++的优势也就是它的劣势,每一位稍有经验的程序员都知道因之而带来的内存泄漏(即为一块块被遗忘释放的内存)让许多大型项目折戟沉沙。

      2、当然程序员自己也能进行主动地垃圾回收。

      3、虚拟机的帮助让代码显得更加流畅、整洁,也很大地减小了程序员的负担。

为什么选择容器?

         由来:当你解决某个问题的时候,比如Web编程,你并不知道需要创建多少个对象(多少个用户进行访问),或者它们将存活多久(每个用户的访

问时间抑或是每个访问动作的持续时间),这些信息只有在运行时才能获得。

方法:定义一种新的数据类型(容器),这个类型可以放置其他数据类型的对象引用。

具体实现:

    1、最开始的时候,容器存储的对象都只具有Object类型,这意味着当将对象引用置入容器时,对象引用都会向上转型为Obejct。

      优:这样的方法可以让容器放置各种类型。

      劣:这也失去了引用本身的身份,除非时刻保持谨慎,向下转型将很容易导致错误。

     2、引入参数化模型,也即范型,如:

ArrayList<Shape> shapes = new ArrayList<Shape>();

      优:规避了向下转型所耗费的资源和可能带来的危险。

      劣:可能相较于Python等语言的容器,显得更加具体化。

为什么选择控制反转(IoC)?

1、问题的产生与解决:

    在我们平时编写程序的时候,进入一个场景时,常常直接在场景中初始化一个实例,然后直接通过这个实例调用方法。

    然而从以上的描述中可以发现,这个实例和场景文件耦合在了一起。但就像导演拍戏一样,实例就像是一个具体的演员,而场景就像一个剧本,实际上

  我们并不希望一个剧本和一个具体的演员有过多的联系,因为演员之后还可以更改,而剧本一旦确定就最好不要动了,如何将实例从场景中分离出来,

  像遥控板指挥电视一样,通过仅仅在别处改变需要出演的人物,而让剧本独立开来,就是控制反转思想的核心。

2、“控制反转”反转的是什么?

    从上面的例子我们可以看出,原先剧本控制着具体的实例地调用,而我们想抽出身来,把实例的调用权牢牢握在自己的手里。用一个更直接明了的名词

  来说明IoC就是依赖注入(DI),即调用类对某一接口实现类的依赖关系由第三方(容器或协作类)注入,以移除调用类对某一接口实现类的依赖。

3、形象而具体的讲解说明

    科幻经典《黑客帝国》家喻户晓,而最后一幕尼奥献身保护锡安更是让人难忘。我们虽知道最终扮演尼奥的人是李维斯,但我们仍希望在必要时作为导

  演的身份进行替换,而这与具体的剧本无关。

如果在以前是这样:

  既然要掌握主动权,可以迂回达到目的:

  

  本周就到此为止,博主最近在学习Spring框架,之后将对资料进行整理,以惠及更多的初学者。

原文地址:https://www.cnblogs.com/Trinidad/p/8617966.html

时间: 2024-10-01 06:04:12

【Paper Reading】Learning while Reading的相关文章

【POJ 3320】Jessica&#39;s Reading Problemc(尺取法)

题 题意 P个数,求最短的一段包含P个数里所有出现过的数的区间. 分析 尺取法,边读边记录每个数出现次数num[d[i]],和不同数字个数n个. 尺取时,l和r 代表区间两边,每次r++时,d[r]知识点出现次数+1,d[l]知识点出现次数大于1时,次数--,l++,直到d[l]出现次数为1,当不同知识点数量达到n,且区间更小,就更新答案. 代码 #include <cstdio> #include <map> using namespace std; map <int,in

【尺取法】Jessica&#39;s Reading Problem

Step1 Problem 原题 一个人复习一本书,这本书的每一页都有一个知识点ai,每一页的知识点可能会与其他页的知识点相同,问你如何读最少页,将所以知识点读完. Step2 Ideas: 尺取法通常是指对数组保存下一对下标(起点.终点),燃豆很具实际情况交替推进两个端点直到得出答案的方法.确定下知识点的个数,便用尺取法推进得到答案. Step3 Code: #include<iostream> #include<stdio.h> #include<iomanip>

【论文笔记】Learning Convolutional Neural Networks for Graphs

Learning Convolutional Neural Networks for Graphs 2018-01-17  21:41:57 [Introduction] 这篇 paper 是发表在 ICML 2016 的:http://jmlr.org/proceedings/papers/v48/niepert16.pdf 上图展示了传统 CNN 在 image 上进行卷积操作的工作流程.(a)就是通过滑动窗口的形式,利用3*3 的卷积核在 image 上进行滑动,来感知以某一个像素点为中心

【学习排序】Learning to Rank中Pointwise关于PRank算法源码实现

最近终于忙完了Learning to Rank的作业,同时也学到了很多东西.我准备写几篇相关的文章简单讲述自己对它的理解和认识.第一篇准备讲述的就是Learning to Rank中Pointwise的认识及PRank算法的实现.主要从以下四个方面进行讲述: 1.学习排序(Learning to Rank)概念 2.基于点的排序算法(Pointwise)介绍 3.基于顺序回归(Ordinal Regression-based)的PRank排序算法 4.PRank算法Java\C++实现及总结 一

【学习排序】 Learning to Rank 中Listwise关于ListNet算法讲解及实现

前一篇文章"Learning to Rank中Pointwise关于PRank算法源码实现"讲述了基于点的学习排序PRank算法的实现.该篇文章主要讲述Listwise Approach和基于神经网络的ListNet算法及Java实现.包括: 1.基于列的学习排序(Listwise)介绍 2.ListNet算法介绍 3.ListNet算法Java实现 LTR中单文档方法是将训练集里每一个文档当做一个训练实例,文档对方法是将同一个查询的搜索结果里任意两个文档对作为一个训练实例,文档列方法

【Discriminative Localization】Learning Deep Features for Discriminative Localization 论文解析(转)

文章翻译: 翻译 以下文章来源: 链接 原文地址:https://www.cnblogs.com/kk17/p/10051957.html

【深度学习Deep Learning】资料大全

转载:http://www.cnblogs.com/charlotte77/p/5485438.html 最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books Deep Learning66 by Yoshua Bengio, Ian Goodfellow and Aaron Courville Neural Networks and Deep Learning42 by Michael Nielsen Deep Learning27 by

【转帖】【面向代码】学习 Deep Learning(二)Deep Belief Nets(DBNs)

今天介绍DBN的内容,其中关键部分都是(Restricted Boltzmann Machines, RBM)的步骤,所以先放一张rbm的结构,帮助理解 (图来自baidu的一个讲解ppt) ========================================================================================== 照例,我们首先来看一个完整的DBN的例子程序: 这是\tests\test_example_DBN.m 中的ex2 [cpp]

【coursera笔记】Machine Learning(Week6)

发现自己不写总结真是件很恶劣的事情,好多学的东西没有自己总结都忘记了.所以决定从今天开始,学东西的时候一定跟上总结. 我写的东西大多数是自己通俗的总结,不太喜欢写严格的定义或者证明,写了也记不住,欢迎指正. 1. High Bias vs. High Variance High Bias:通常是因为模型过于简单,使得不能成功拟合数据.比如说一些有二次曲线特性的数据,如果用一次直线去拟合就会出现这个问题,所以它对应了Underfitting问题.另外,从泛化角度来说,这样的模型泛化程度更高. Hi