最近几年,前端技术迅猛发展,差不多每年都会冒出一款主流的框架。 每次新开业务线或启动新项目时,是第一件事就是纠结:使用什么框架,重造什么轮子?我很高兴应CSDN的邀请谈我的看法。

在五六年,移动端还没有兴起,我们没有什么选择,就是jQuery。有人会说,jQuery只是类库,不是框架;但那时前端业务还没有像今天这么繁重,原本是后端干的事,全部挪到前端来,因为光是jQuery就可以包打天下。jQuery不够用,还有成千上万的jQuery的插件呢。于是问题就是这样一一衍生出来了,一个页面太多jQuery插件了,请求数太多了,于是我们得打包。打包需要我们对插件有规划。于是这需求在社区上逐渐形成了某些规则,其中最出名的是AMD规范,体现上requirejs这个加载库上。

requirejs是前端技术发展上的一个分水岭。javascript在es6之前一直没有自己的加载机制,requirejs的出现意味着前端可以向更大规模发展。以后我说的技术选型,一个非常重要的甄选点, 就是 是否存在加载器机制或符合某个模块规范。

阅读全文 »

好吧,我去了地球的另一边,并且因为我的PC不在旁边,只有一台MacBook Pro可以用于开发。这篇文章应该被看作是一个加强书签,我列出了使得MacBook能实现目的的所有必需安装的工具,即用于Java和稍后也会用于JavaScript的开发。

需要提一下的是,直到现在,我仍然是Windows用户(XP / 7)和Linux(Ubuntu /Mint/Cent OS)。在写这篇文章的时候,我的MacBook Pro上运行的是OS X Yosemite Version 10.10.5。

阅读全文 »

我常常问面试者,“你最喜欢的编程语言是什么?” 答案几乎如出一辙,“工作中我只选择正确的编程语言。” 废话,谁会故意选择错误的语言呢?这显然是为了逃避选择一种具体的编程语言,以免选择了一种我不喜欢的。

如果面试者这样回答“我最熟悉某一种编程语言”,这同样也没有回答我的问题。

当时要是我的话,我会这样回答,“我最喜欢 Python,因为使用它编程让我感到快乐,但我只在某某情况下使用它。其余时间,我使用 XYZ...”

然而,大约一年之前,我产生了一个奇怪的想法:Java 适合所有的编程工作。(在你吐槽之前,我暂停一下,)这个想法根植于你感觉正确但却与现实不符的一些观点,而且这个想法从来都没有流行起来,但不管怎样,请让我先来解释一下。

Python 的确是我喜爱的编程语言,用它编程真的让我感到快乐。它让我的大脑感到快乐,它和伪代码是如此契合,以至于用它来工作能让人真正感到愉悦。

阅读全文 »

接口 Closeable

所有已知子接口:

ByteChannel, Channel, GatheringByteChannel, InterruptibleChannel, JavaFileManager, JMXConnector, ReadableByteChannel, RMIConnection, ScatteringByteChannel, StandardJavaFileManager, WritableByteChannel

所有已知实现类:

AbstractInterruptibleChannel, AbstractSelectableChannel, AudioInputStream, BufferedInputStream, BufferedOutputStream, BufferedReader, BufferedWriter, ByteArrayInputStream, ByteArrayOutputStream, CharArrayReader, CharArrayWriter, CheckedInputStream, CheckedOutputStream, CipherInputStream, CipherOutputStream, DatagramChannel, DataInputStream, DataOutputStream, DeflaterInputStream, DeflaterOutputStream, DigestInputStream, DigestOutputStream, FileChannel, FileInputStream, FileOutputStream, FileReader, FileWriter, FilterInputStream, FilterOutputStream, FilterReader, FilterWriter, Formatter, ForwardingJavaFileManager, GZIPInputStream, GZIPOutputStream, InflaterInputStream, InflaterOutputStream, InputStream, InputStream, InputStream, InputStreamReader, JarInputStream, JarOutputStream, LineNumberInputStream, LineNumberReader, LogStream, ObjectInputStream, ObjectOutputStream, OutputStream, OutputStream, OutputStream, OutputStreamWriter, Pipe.SinkChannel, Pipe.SourceChannel, PipedInputStream, PipedOutputStream, PipedReader, PipedWriter, PrintStream, PrintWriter, ProgressMonitorInputStream, PushbackInputStream, PushbackReader, RandomAccessFile, Reader, RMIConnectionImpl, RMIConnectionImpl_Stub, RMIConnector, RMIIIOPServerImpl, RMIJRMPServerImpl, RMIServerImpl, SelectableChannel, SequenceInputStream, ServerSocketChannel, SocketChannel, StringBufferInputStream, StringReader, StringWriter, Writer, ZipInputStream, ZipOutputStream

阅读全文 »

目录

一、面向过程的思想和面向对象的思想
二、简单理解面向对象
三、面向对象的设计思想
四、对象和类的概念
五、如何抽象出一个类?
六、类(对象)之间的关系
七、Java与面向对象
八、为什么使用面向对象编程?


正文

一、面向过程的思想和面向对象的思想

面向对象和面向过程的思想有着本质上的区别, 作为面向对象的思维来说,当你拿到一个问题时,你分析这个问题不再是第一步先做什么,第二步再做什么,这是面向过程的思维,你应该分析这个问题里面有哪些类和对象,这是第一点,然后再分析这些类和对象应该具有哪些属性和方法。这是第二点。最后分析类和类之间具体有什么关系,这是第三点。

面向对象有一个非常重要的设计思维:合适的方法应该出现在合适的类里面








阅读全文 »