【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、形象而具体的讲解说明
科幻经典《黑客帝国》家喻户晓,而最后一幕尼奥献身保护锡安更是让人难忘。我们虽知道最终扮演尼奥的人是李维斯,但我们仍希望在必要时作为导
演的身份进行替换,而这与具体的剧本无关。
如果在以前是这样:

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

一个好的获取资源的解决方案应该是应用IoC。传统的资源查找方式要求组件向容器发起请求来查找资源,作为回应,容器适时地返回资源。而应用IoC之后,
则是容器主动地将资源推送给它所管理的组件里,组件所要做的仅仅是选择一种合适的方式来接受资源,这种行为被称为查找的被动形式。
【Paper Reading】Learning while Reading的更多相关文章
- 【论文阅读】Learning Spatial Regularization with Image-level Supervisions for Multi-label Image Classification
转载请注明出处:https://www.cnblogs.com/White-xzx/ 原文地址:https://arxiv.org/abs/1702.05891 Caffe-code:https:// ...
- 【POJ 3320】Jessica's Reading Problemc(尺取法)
题 题意 P个数,求最短的一段包含P个数里所有出现过的数的区间. 分析 尺取法,边读边记录每个数出现次数num[d[i]],和不同数字个数n个. 尺取时,l和r 代表区间两边,每次r++时,d[r]即 ...
- 【论文笔记】Learning Convolutional Neural Networks for Graphs
Learning Convolutional Neural Networks for Graphs 2018-01-17 21:41:57 [Introduction] 这篇 paper 是发表在 ...
- 【论文阅读】Learning Dual Convolutional Neural Networks for Low-Level Vision
论文阅读([CVPR2018]Jinshan Pan - Learning Dual Convolutional Neural Networks for Low-Level Vision) 本文针对低 ...
- 【学习笔记】Learning OpenCV3——Ch8 working with video
Reading Video with the cv::VideoCapture Object 对象创建的三种方法: // 1. Input filename cv::VideoCapture::Vid ...
- 【电子书分享】Learning PySpark下载,包含pdf、epub格式
<Learning PySpark>电子书下载链接: 链接:http://pan.baidu.com/s/1skAC6LZ 密码:kbse,包括pdf.epub格式: (--学习愉快--)
- 【论文笔记】Learning Fashion Compatibility with Bidirectional LSTMs
论文:<Learning Fashion Compatibility with Bidirectional LSTMs> 论文地址:https://arxiv.org/abs/1707.0 ...
- 【Discriminative Localization】Learning Deep Features for Discriminative Localization 论文解析(转)
文章翻译: 翻译 以下文章来源: 链接
- 【深度学习Deep Learning】资料大全
最近在学深度学习相关的东西,在网上搜集到了一些不错的资料,现在汇总一下: Free Online Books by Yoshua Bengio, Ian Goodfellow and Aaron C ...
随机推荐
- ML二:NNSearch数据结构--二叉树
wiki百科:http://zh.wikipedia.org/wiki/%E5%86%B3%E7%AD%96%E6%A0%91%E5%AD%A6%E4%B9%A0 opencv学习笔记--二杈决策树: ...
- 场景报错Error -27492: "HttpSendRequest" failed, Windows error code=12029 (cannot connect) and retry limit (0) exceeded for URL=""
1.现象:loadrunner场景执行,tps图是一段很平稳,然后直线触底,一段时间,直线恢复平稳,触底这段时间报错信息如下: Action.c(6): Error -27492: "Htt ...
- SpringMVC(一) HelloWorld
学习新东西的的第一个程序--HelloWorld,以下是SpringMVC的HelloWorld 第一步: 用MAVEN 创建webapp,并添加依赖.(强烈建议使用MAVEN,MAVEN学习书籍和视 ...
- 反射API提供的常用类和函数
ReflectionParameter 取回了函数或方法参数的相关信息. {//要自行检查函数的参数,首先创建一个 ReflectionFunction 或 ReflectionMethod 的 实例 ...
- Centos 7.2 安装和卸载 MySQL 5.7
一.背景 闲暇之余在虚拟机安装了 Centos 7.2 系统,按照 <简单安装MySQL(RPM方式)> 这篇文章安装 MySQL ,发现由于包依赖的问题安装失败,于是索性在官网查询相关文 ...
- web内置对象
内置对象,宿主对象,自定义对象的区别? 内置对象: 系统所提供的对象:Object,Array,Math,Date等等. 宿主对象: JS所运行的环境提 ...
- BZOJ 3028 食物 (生成函数+数学题)
题面:BZOJ传送门 题目让我们求这些物品在合法范围内任意组合,一共组合出$n$个物品的方案数 考虑把每种食物都用生成函数表示出来,然后用多项式乘法把它们乘起来,第$n$项的系数就是方案数 汉堡:$1 ...
- [USACO08FEB]修路Making the Grade 动态规划
对的\(n^3\)的程序调了一个月了,惊了... HSZ学oi\(\Longleftrightarrow\)闭眼学oi 要不是翻旧账还看不见.. 这是有\(n^2\)做法的. 参见LYD的书P244 ...
- Python 不同列表时间测试
import timeit import threading def test1(): l = [] for i in range(1000): l = l + [i] def test2(): l ...
- 面试准备专题——JVM,类编译,类加载,内存错误
jvm体系总体分四大块: 类的加载机制 jvm内存结构 GC算法 垃圾回收 GC分析 命令调优 类的加载机制 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法 ...