需要门具有报警alarm乐队的功能,那么该如何实现

alarm set - Bing 词典网络报警设定;上下限报警;报警门限1.报警设定  (2) 顺时针调节报警设定(ALARM SET)旋转到“报警灯闪亮为止”。如报警值已经活   动,则逆时针方向转动报警设定(ALARM SET) …|2.上下限报警TM-130D... ... 反测声速功能 Sound Velocity measuring 上下限报警 Alarm set 低电指示 Low battery indication ... |3.报警门限英语专业词汇 - 豆丁网 ... 报警高限 ALARM HIGH 报警门限 ALARM SET 英语专业词汇 /shke2004 ... |4.报警参数的设置康强呼吸机5300使用说明书1 ... ----FREQ( 通气频率) ----ALARM SET( 报警参数的设置) ----TRI( 触发压力) ... |5.闹钟时间设置美国钟控收音机创意CD机胎教机钟控投影时钟催... ... 7、CD 格式的碟片播放 ALARM SET: 闹钟时间设置 TIMER: 时间设置 ... |6.闹钟设置主机按键 :电源开关(Power),贪睡(Snooze),播放暂停(Play/Pause),音量大小(VOL-/VOL+),闹钟设置(ALARM SET),快进(Skip+)…|7.按键来调整设定分钟时间Timess 天美时 前卫创意高级小闹钟 AQ-32R... ...
“ALARM SET” 按键来调整设定分钟时间。
... |8.报警回路核能专业词汇英语翻译(A) ... alarm limit 报警限 alarm set 报警回路 albedo 反照率 ... |更多释义收起释义例句释义:全部,报警设定,上下限报警,报警门限类别:全部,口语,书面语,标题,技术来源:全部,字典,网络难度:全部,简单,中等,难更多例句筛选收起例句筛选1.
device , ,
2.At what value
so I won't 5. have the
必应词典应用准确权威无广告下 载 手 机 版 必 应 词 典体 验 P C 版 必 应 词 典深入理解Java的接口和抽象类
对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。下面是本文的目录大纲:
  一.抽象类
  二.接口
  三.抽象类和接口的区别
  在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:
abstract void fun();
 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。
  下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。
[public] abstract class ClassName {
abstract void fun();
  从这里可以看出,抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。
  包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:
  1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。
  2)抽象类不能用来创建对象;
  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。
  在其他方面,抽象类和普通的类并没有区别。
  接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。从这里,我们可以体会到Java语言设计者的初衷,它是对行为的抽象。在Java中,定一个接口的形式如下:
[public] interface InterfaceName {
  接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。
  要让一个类遵循某组特地的接口需要使用implements关键字,具体格式如下:
class ClassName implements Interface1,Interface2,[....]{
  可以看出,允许一个类遵循多个特定的接口。如果一个非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法。
三.抽象类和接口的区别
1.语法层面上的区别
  1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;
  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;
  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;
  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。
2.设计层面上的区别
  1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 &是不是&的关系,而 接口 实现则是 &有没有&的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。
  2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。什么是模板式设计?最简单例子,大家都用过ppt里面的模板,如果用模板A设计了ppt B和ppt C,ppt B和ppt C公共的部分就是模板A了,如果它们的公共部分需要改动,则只需要改动模板A就可以了,不需要重新对ppt B和ppt C进行改动。而辐射式设计,比如某个电梯都装了某种报警器,一旦要更新报警器,就必须全部更新。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。
  下面看一个网上流传最广泛的例子:门和警报的例子:门都有open( )和close( )两个动作,此时我们可以定义通过抽象类和接口来定义这个抽象概念:
abstract class Door {
public abstract void open();
public abstract void close();
  或者:
interface Door {
public abstract void open();
public abstract void close();
  但是现在如果我们需要门具有报警alarm( )的功能,那么该如何实现?下面提供两种思路:
  1)将这三个功能都放在抽象类里面,但是这样一来所有继承于这个抽象类的子类都具备了报警功能,但是有的门并不一定具备报警功能;
  2)将这三个功能都放在接口里面,需要用到报警功能的类就需要实现这个接口中的open( )和close( ),也许这个类根本就不具备open( )和close( )这两个功能,比如火灾报警器。
  从这里可以看出, Door的open() 、close()和alarm()根本就属于两个不同范畴内的行为,open()和close()属于门本身固有的行为特性,而alarm()属于延伸的附加行为。因此最好的解决办法是单独将报警设计为一个接口,包含alarm()行为,Door设计为单独的一个抽象类,包含open和close两种行为。再设计一个报警门继承Door类和实现Alarm接口。
interface Alram {
void alarm();
abstract class Door {
void open();
void close();
class AlarmDoor extends Door implements Alarm {
void oepn() {
void close() {
void alarm() {
本文已收录于以下专栏:
相关文章推荐
深入理解Java的接口和抽象类
  对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多不同的地方。很多人在...
如果一个类包含一个或多个抽象方法,该类必须被声明为抽象类
抽象类可以包含具体的方法,也可以不包含任何抽象方法
如果一个类继承自抽象类,那么该类必须实现抽象类中所有的抽象方法(即提供方法体{})...
您举报文章:
举报原因:
原文地址:
原因补充:
(最多只允许输入30个字)&img src=&/v2-6fd17aefed1c_b.jpg& data-rawwidth=&444& data-rawheight=&245& class=&origin_image zh-lightbox-thumb& width=&444& data-original=&/v2-6fd17aefed1c_r.jpg&&本文的最初版是发表于&a href=&/?target=http%3A///jerrywdlee/items/d8dd49bac43c3b282fdd& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a&&a href=&/?target=http%3A///advent-calendar/2016/javascript& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Javascript Advent Calendar&i class=&icon-external&&&/i&&/a&第23日的文章。&br&&br&&h2&&b&前言:&/b&&/h2&&br&&p&
作为一个“知乎龄”3年左右的资深小透明,我还没有写过一篇像样的干货(这篇估计也不算…)。作为只学化学的前(dan)端(shen)狗,别人过圣诞节的时候我就只能撸JavaScript了。撸着撸着我也算是撸出麒麟臂了(然而并不是…)。就把我几个月前一直在构思的一个项目给做出来了。命名为 &a href=&/?target=https%3A///jerrywdlee/Xylole& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Xylole.js&i class=&icon-external&&&/i&&/a& 。 &/p&&h2&&b&有什么用:&/b&&/h2&&p&
简单的说,就是一个可以远程调试网页的控制台。是的,就是一个远程版的浏览器Console。某些浏览器(例如移动端的Chrome)没有控制台,在这些浏览器调试网页会比较困难,使用 &a href=&/?target=https%3A///jerrywdlee/Xylole& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Xylole.js&i class=&icon-external&&&/i&&/a& 能够在很大程度上解决无控制台的浏览器的调试问题。&/p&&br&&p&直接上图(GIF?点击查看动图):&/p&&img src=&/v2-92f7bce84baa17e042c7f0_b.jpg& data-rawwidth=&1425& data-rawheight=&729& class=&origin_image zh-lightbox-thumb& width=&1425& data-original=&/v2-92f7bce84baa17e042c7f0_r.jpg&&&br&&h2&&b&名字的由来:&/b&&/h2&&p&
Xylole是芳香族化合物&a href=&/?target=https%3A//zh.wikipedia.org/wiki/%25E4%25BA%258C%25E7%%25E8%258B%25AF& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&二甲苯&i class=&icon-external&&&/i&&/a&的德语。我们也可以将它看作是“Cross(X)”和“Console”的合成词。再加上苯环标志性的六边形与Node.js的标志也有异曲同工之处,于是我就发扬化学人的恶趣味(雾),将这个小工具取名为“二甲苯.js”了。&/p&&br&&h2&&b&用法:&/b&&/h2&&ul&&li&安装&a href=&/?target=https%3A//nodejs.org/en/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Node.js&i class=&icon-external&&&/i&&/a&&/li&&/ul&&br&
Xylole.js是基于Node.js的,而且当中用了不少ES2015的语法,所以,要先安装较新版的Node.js。最好是6.0以上的版本,4.7以上理论上也是能跑的(没试过)。&ul&&li&克隆GitHub仓库&/li&&/ul&&br& 大家的老朋友,全球最大的同性交友网站…&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ git clone /jerrywdlee/Xylole.git
&/code&&/pre&&/div&&ul&&li&安装依赖包&/li&&/ul&&br&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&$ &span class=&nb&&cd&/span& Xylole
&/code&&/pre&&/div&&p&Xylole.js有一个依赖包是&ngrok&,考虑到中国的特殊国情,大家可以选择科学上网,或是把这个依赖包给去掉。&br&&/p&&ul&&li&启动服务端&/li&&/ul&&br&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&$ npm run xylole
&/code&&/pre&&/div&&p&成功启动之后,命令行界面会显示像下图一样的信息(ngrok的URL是随机分配的,每次启动服务端URL都不一样)&/p&&img src=&/v2-77f26e92c2fcb0d928e8_b.png& data-rawwidth=&663& data-rawheight=&733& class=&origin_image zh-lightbox-thumb& width=&663& data-original=&/v2-77f26e92c2fcb0d928e8_r.png&&&br&&ul&&li&挂载客户端脚本&/li&&/ul&&br&&p&服务端启动之后,会显示如何向目标网页挂载客户端,考虑到本透明英文写的比较烂,在这里用中文介绍一下。&/p&&p&首先,Xylole挂载客户端的方式有两种,一种是XSS(跨站脚本)模式,一种是CORS(跨来源资源共享)模式。XSS模式对大多数网页都是有效的,并且在XSS模式下,&load&命令是可以使用的。CORS模式是为了解决一部分网页在Http Header里限制了跨站资源的读取而开发的模式。使用CORS模式时必须使用“https”加载客户端脚本。&/p&&p&具体挂载客户端的方法就比较简单了,向地址栏贴一行代码执行就可以了。&/p&&p&XSS模式/显示加载(加载成功后显示输入框提示输入服务端地址):&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&javascript&/span&&span class=&o&&:&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&d&/span&&span class=&p&&){&/span&&span class=&kd&&var&/span& &span class=&nx&&s&/span&&span class=&o&&=&/span&&span class=&nx&&d&/span&&span class=&p&&.&/span&&span class=&nx&&createElement&/span&&span class=&p&&(&/span&&span class=&s1&&'script'&/span&&span class=&p&&);&/span&&span class=&nx&&s&/span&&span class=&p&&.&/span&&span class=&nx&&src&/span&&span class=&o&&=&/span&&span class=&s1&&'https://[随机地址].ap.ngrok.io/js'&/span&&span class=&p&&;&/span&&span class=&nx&&d&/span&&span class=&p&&.&/span&&span class=&nx&&body&/span&&span class=&p&&.&/span&&span class=&nx&&appendChild&/span&&span class=&p&&(&/span&&span class=&nx&&s&/span&&span class=&p&&)})(&/span&&span class=&nb&&document&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&XSS模式/隐式加载(加载成功后自动连接服务端,不显示任何提示):&br&&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&javascript&/span&&span class=&o&&:&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&d&/span&&span class=&p&&){&/span&&span class=&kd&&var&/span& &span class=&nx&&s&/span&&span class=&o&&=&/span&&span class=&nx&&d&/span&&span class=&p&&.&/span&&span class=&nx&&createElement&/span&&span class=&p&&(&/span&&span class=&s1&&'script'&/span&&span class=&p&&);&/span&&span class=&nx&&s&/span&&span class=&p&&.&/span&&span class=&nx&&src&/span&&span class=&o&&=&/span&&span class=&s1&&'https://[随机地址].ap.ngrok.io/jss'&/span&&span class=&p&&;&/span&&span class=&nx&&d&/span&&span class=&p&&.&/span&&span class=&nx&&body&/span&&span class=&p&&.&/span&&span class=&nx&&appendChild&/span&&span class=&p&&(&/span&&span class=&nx&&s&/span&&span class=&p&&)})(&/span&&span class=&nb&&document&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&XSS模式/CDN加载(只有显示模式):&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&javascript&/span&&span class=&o&&:&/span&&span class=&p&&(&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&d&/span&&span class=&p&&){&/span&&span class=&kd&&var&/span& &span class=&nx&&s&/span&&span class=&o&&=&/span&&span class=&nx&&d&/span&&span class=&p&&.&/span&&span class=&nx&&createElement&/span&&span class=&p&&(&/span&&span class=&s1&&'script'&/span&&span class=&p&&);&/span&&span class=&nx&&s&/span&&span class=&p&&.&/span&&span class=&nx&&src&/span&&span class=&o&&=&/span&&span class=&s1&&'/jerrywdlee/Xylole/master/min/xylole-client.min.js'&/span&&span class=&p&&;&/span&&span class=&nx&&d&/span&&span class=&p&&.&/span&&span class=&nx&&body&/span&&span class=&p&&.&/span&&span class=&nx&&appendChild&/span&&span class=&p&&(&/span&&span class=&nx&&s&/span&&span class=&p&&)})(&/span&&span class=&nb&&document&/span&&span class=&p&&)&/span&
&/code&&/pre&&/div&&p&CORS模式(只有显示模式)/目标网页有jQuery:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&javascript&/span&&span class=&o&&:&/span&&span class=&p&&(&/span&&span class=&nx&&$&/span&&span class=&p&&.&/span&&span class=&nx&&get&/span&&span class=&p&&(&/span&&span class=&s1&&'https://[随机地址].ap.ngrok.io/csp'&/span&&span class=&p&&,&/span&&span class=&kd&&function&/span&&span class=&p&&(&/span&&span class=&nx&&d&/span&&span class=&p&&){&/span&&span class=&nb&&eval&/span&&span class=&p&&(&/span&&span class=&nx&&d&/span&&span class=&p&&)}))&/span&
&/code&&/pre&&/div&&p&CORS模式(只有显示模式)/目标网页&b&没有&/b&jQuery:&/p&&div class=&highlight&&&pre&&code class=&language-js&&&span&&/span&&span class=&nx&&javascript&/span&&span class=&o&&:&/span&&span class=&p&&(()&/span&&span class=&o&&=&&/span&&span class=&p&&{&/span&&span class=&kd&&var&/span& &span class=&nx&&x&/span&&span class=&o&&=&/span&&span class=&k&&new&/span& &span class=&nx&&XMLHttpRequest&/span&&span class=&p&&();&/span&&span class=&nx&&x&/span&&span class=&p&&.&/span&&span class=&nx&&onreadystatechange&/span&&span class=&o&&=&/span&&span class=&p&&()&/span&&span class=&o&&=&&/span&&span class=&p&&{&/span&&span class=&k&&if&/span&&span class=&p&&(&/span&&span class=&nx&&x&/span&&span class=&p&&.&/span&&span class=&nx&&readyState&/span&&span class=&o&&==&/span&&span class=&mi&&4&/span&&span class=&o&&&&&/span&&span class=&nx&&x&/span&&span class=&p&&.&/span&&span class=&nx&&status&/span&&span class=&o&&==&/span&&span class=&mi&&200&/span&&span class=&p&&){&/span&&span class=&nb&&eval&/span&&span class=&p&&(&/span&&span class=&nx&&x&/span&&span class=&p&&.&/span&&span class=&nx&&responseText&/span&&span class=&p&&)}};&/span&&span class=&nx&&x&/span&&span class=&p&&.&/span&&span class=&nx&&open&/span&&span class=&p&&(&/span&&span class=&s2&&&GET&&/span&&span class=&p&&,&/span&&span class=&s2&&&https://[随机地址].ap.ngrok.io/csp&&/span&&span class=&p&&,&/span&&span class=&kc&&true&/span&&span class=&p&&);&/span&&span class=&nx&&x&/span&&span class=&p&&.&/span&&span class=&nx&&send&/span&&span class=&p&&()})()&/span&
&/code&&/pre&&/div&&b&注意:&/b&&p&
一部分浏览器,如Chrome和FireFox,在向地址栏里黏贴以“javascript:”开头的代码时,会悄悄地将关键词“javascript:”给吞掉(PC端,手机端同样)。如果要成功挂载客户端脚本,请在黏贴代码之后手动在开头输入“javascript:”。&/p&&p&
同时,Safari的手机端是不允许在地址栏执行JavaScript代码的,如果想要在iOS的Safari挂载客户端脚本的话,将CDN模式的代码做成bookmarklet会比较有效。&br&&/p&&ul&&li&连接服务端&/li&&/ul&&br&
在显示加载模式下,当客户端脚本成功挂载之后,会显示下图的信息(隐式模式下不显示)&p&&img src=&/v2-08bb09f85cc88ec60bb3af_b.png& data-rawwidth=&481& data-rawheight=&242& class=&origin_image zh-lightbox-thumb& width=&481& data-original=&/v2-08bb09f85cc88ec60bb3af_r.png&&
回到控制台界面,找到下列语句并将URL输入弹出的对话框,然后按“OK”确定&/p&&div class=&highlight&&&pre&&code class=&language-text&&&span&&/span&Please input url below into prompt shown in page :
https://[RANDOM].ap.ngrok.io
&/code&&/pre&&/div&&p&
当成功连接上服务器之后,控制台会显示当前网页的基本信息,输入“info”命令可以随时更新这一信息。&/p&&img src=&/v2-c00cd5b1f358036aac2b_b.png& data-rawwidth=&1099& data-rawheight=&198& class=&origin_image zh-lightbox-thumb& width=&1099& data-original=&/v2-c00cd5b1f358036aac2b_r.png&&&ul&&li&开始玩吧&/li&&/ul&&br&
这个时候,连接上的网页就几乎完全在你的控制之下了。可以发一些对话框来卖个萌,或者把界面涂黑来搞怪。&b&不要拿来做坏事哦!&/b&&p&演示(GIF?点击查看动图)&br&&img src=&/v2-9ab972ded607eed0948768_b.jpg& data-rawwidth=&1425& data-rawheight=&729& class=&origin_image zh-lightbox-thumb& width=&1425& data-original=&/v2-9ab972ded607eed0948768_r.jpg&&&/p&&h2&&b&一些命令:&/b&&/h2&&p&Xylole.js可以通过一些命令来简化操作,可以通过命令“command”来查看所有可用命令&/p&&p&&b&本地命令:&/b&&/p&&p&无论是否连接上了网页,都可以使用以下命令&/p&&p&命令: &help& =& 显示帮助信息&/p&&p&命令: &command& =& 显示帮助信息&/p&&p&命令: &license& =& 显示版权信息&br&&/p&&p&命令: &qr& =& 显示服务器端URL的二维码&br&&/p&&p&命令: &qr-[cdn|em|sm|csp|csp-jq]& =& 显示挂载客户端脚本代码的二维码,&/p&&p&从左到右是[CDN|显式|隐式|CORS|CORS(有jQuery)]&/p&&p&二维码演示(GIF?点击查看动图):&/p&&br&&img src=&/v2-11cbfe6dbda06d_b.jpg& data-rawwidth=&1290& data-rawheight=&745& class=&origin_image zh-lightbox-thumb& width=&1290& data-original=&/v2-11cbfe6dbda06d_r.jpg&&&br&&br&&p&&b&远程命令:&/b&&br&&/p&&p&必须连接上网页才能使用的命令&/p&&p&命令: &load [js|css] [URL]& =& 向目标网页挂载某一远程资源(CORS模式下此命令无效)&br&&/p&&div class=&highlight&&&pre&&code class=&language-bash&&&span&&/span&&span class=&c1&&# 用法&/span&
&&& load js /jquery-1.11.1.min.js
&&& load css /mobile/1.4.5/jquery.mobile-1.4.5.min.css
&/code&&/pre&&/div&&p&命令: &disconnect& =& 断开与目标网页的连接&br&&/p&&p&命令: &close& =& 关闭目标网页&br&&/p&&p&&b&自定义命令:&/b&&/p&&p&用户可用通过修改 &i&customCommands.yml &/i&文件来添加自定义命令,默认状态下已添加2个自定义命令&/p&&p&命令: &border& =& 显示网页中所有元素的盒子边界&/p&&p&命令: &black-background& =& 将网页的背景涂黑&/p&&p&自定义命令演示(GIF?点击查看动图):&/p&&img src=&/v2-2ff4f47402_b.jpg& data-rawwidth=&1425& data-rawheight=&745& class=&origin_image zh-lightbox-thumb& width=&1425& data-original=&/v2-2ff4f47402_r.jpg&&&br&&br&&h2&&b&原理:&/b&&/h2&&p&Xylole.js其实只做了三件小事…&/p&&ol&&li&将客户端脚本和&a href=&/?target=http%3A//socket.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Socket.io&i class=&icon-external&&&/i&&/a&脚本挂载到目标页面上&/li&&li&将控制台收到的信息通过WebSocket发送到目标页面上&/li&&li&客户端脚本将收到的代码用eval函数转变为可执行模式&/li&&/ol&&br&很简单的原理,用来做玩具再好不过了。&br&&h2&&b&多余的话:&/b&&/h2&&p&
本透明关注前端话题也有一段时间了,知乎大神众多,我等小透明一直没有机会发文章。本透明今日斗胆献丑,@几位我关注的大神,还请各路前端大神不吝赐教。望各路大神海涵。&/p&&p&&a href=&/people/352f8fda103& data-hash=&352f8fda103& class=&member_mention& data-editable=&true& data-title=&@小芋头君& data-hovercard=&p$b$352f8fda103&&@小芋头君&/a&&a href=&/people/8366575cfcfb919baedbd19& data-hash=&8366575cfcfb919baedbd19& class=&member_mention& data-title=&@小爝& data-hovercard=&p$b$8366575cfcfb919baedbd19& data-editable=&true&&@小爝&/a&&a href=&/people/766aad6e4cc2dd0fbfc12& data-hash=&766aad6e4cc2dd0fbfc12& class=&member_mention& data-hovercard=&p$b$766aad6e4cc2dd0fbfc12& data-editable=&true& data-title=&@Jasin Yip&&@Jasin Yip&/a&&a href=&/people/8c6c79702& data-hash=&8c6c79702& class=&member_mention& data-hovercard=&p$b$8c6c79702& data-editable=&true& data-title=&@马天翼&&@马天翼&/a&&a href=&/people/1e2cccc3ce33& data-hash=&1e2cccc3ce33& class=&member_mention& data-title=&@Milo Yip& data-hovercard=&p$b$1e2cccc3ce33& data-editable=&true&&@Milo Yip&/a&&a href=&/people/69ed13f3ddc662d6ecde85& data-hash=&69ed13f3ddc662d6ecde85& class=&member_mention& data-hovercard=&p$b$69ed13f3ddc662d6ecde85& data-editable=&true& data-title=&@于江水&&@于江水&/a&&a href=&/people/596c0a5fdd9b36cea06bac348d418824& data-hash=&596c0a5fdd9b36cea06bac348d418824& class=&member_mention& data-hovercard=&p$b$596c0a5fdd9b36cea06bac348d418824& data-editable=&true& data-title=&@顾轶灵&&@顾轶灵&/a&&a href=&/people/cfdec6226ece879d2571fbcf& data-hash=&cfdec6226ece879d2571fbcf& class=&member_mention& data-title=&@尤雨溪& data-hovercard=&p$b$cfdec6226ece879d2571fbcf& data-editable=&true&&@尤雨溪&/a&&a href=&/people/d965f32ae58ad3a48a1585a4& data-hash=&d965f32ae58ad3a48a1585a4& class=&member_mention& data-hovercard=&p$b$d965f32ae58ad3a48a1585a4& data-editable=&true& data-title=&@Stark伟&&@Stark伟&/a&&a href=&/people/cinwell& class=&internal&&@cinwell&/a&&/p&&p&&a href=&/people/wonderful611& class=&internal&&@王德福&/a&&a href=&/people/xiaou-14& class=&internal&&@阿德&/a&&a href=&/people/wang-fu-peng-54& class=&internal&&@王福朋&/a&&a href=&/people/revir& class=&internal&&@River Yang&/a&&a href=&/people/marshan-xiao& class=&internal&&@Mars韩笑&/a&&a href=&/people/liaoxuefeng& class=&internal&&@廖雪峰&/a&&/p&&p&源码:&a href=&/?target=https%3A///jerrywdlee/Xylole& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&jerrywdlee/Xylole&i class=&icon-external&&&/i&&/a&&/p&&p&许可证:&a href=&/?target=https%3A///jerrywdlee/Xylole/blob/master/LICENSE& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MIT&i class=&icon-external&&&/i&&/a&&/p&
本文的最初版是发表于第23日的文章。 前言: 作为一个“知乎龄”3年左右的资深小透明,我还没有写过一篇像样的干货(这篇估计也不算…)。作为只学化学的前(dan)端(shen)狗,别人过圣诞节的时候我就只能撸JavaScript了。…
&p&明天就是世界读书日了,就知道广大程序员们有这个需求。豆列都给你准备好了:&a href=&///?target=https%3A///doulist//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&ThoughtWorks读书雷达&i class=&icon-external&&&/i&&/a&&/p&&br&&img src=&/v2-f2d1c32acaa2b6d05a0843_b.png& data-rawwidth=&842& data-rawheight=&1024& class=&origin_image zh-lightbox-thumb& width=&842& data-original=&/v2-f2d1c32acaa2b6d05a0843_r.png&&&p&&b&编程与实践&/b&&/p&&p&&i&基础篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&白帽子讲Web安全&i class=&icon-external&&&/i&&/a&
&i&互联网时代,每个人都需要知道的安全知识必备书籍。&/i&&/li&&li&&a href=&///?target=http%3A///subject/1140457/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&敏捷软件开发:原则、实践和模式&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/1229923/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&重构&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&编写可读代码的艺术&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员的职业素养&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&软件开发践行录&i class=&icon-external&&&/i&&/a&
&i&ThoughtWorks聚集了很多爱思考爱分享的人。本书可以说就是这样一群极有天分的软件精英的思想和观点的汇聚,是他们多年的宝贵实践经验的凝结。涉猎广泛,通俗易懂,相信你读完肯定会有收获。&/i&&/li&&/ul&&p&&i&进阶篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/3324516/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&实现模式&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&领域特定语言&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Building Microservices&i class=&icon-external&&&/i&&/a&
&i&微服务是支持可演化性的一些一起协同工作的小而自治的服务。许多组织发现这种细粒度的架构让系统更具弹性,扩展,也能增加团队的自治。但是,大量的服务会导致很多令人头疼的问题必须处理。这本书作为一个一站式商店包含微服务涉及的各种主题,并且通过在ThoughtWorks,Amazon,Netflix和其他公司的具体实践,帮助大家了解微服务。&/i&&/li&&/ul&&p&&i&高级篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/1148282/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&计算机程序的构造和解释&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/2248759/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&修改代码的艺术&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&b&提升与修炼&/b&&/p&&p&&i&基础篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&程序员思维修炼&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/1020644/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&金字塔原理&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/6709809/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&暗时间&i class=&icon-external&&&/i&&/a&
&i&为什么我每天都看书学习进步却并不明显?为什么有些人玩得时间不比我少学的时间不比我多,但却越来越牛?也许刘未鹏会给你答案。&/i&&/li&&li&&a href=&///?target=http%3A///subject/6860890/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&黑客:计算机革命的英雄&i class=&icon-external&&&/i&&/a&
&i&每门专业都有其灵魂,或者说启蒙思想。黑客精神伦理及其独特的价值观在很多方面都深刻地影响了今天软件业的形态。这本书对“黑客”的起源及发展做了详尽的阐释。对于一位以计算机,尤其是软件为职业的人来说,这本书将带你“寻根访祖”,探寻我们日常工作背后的哲思。&/i&&/li&&/ul&&p&&i&进阶篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/1156866/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&系统思考&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&咨询的奥秘&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/2091738/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&The Trusted Advisor&i class=&icon-external&&&/i&&/a&
&i&这本书初看有点儿像中文版的“厚黑学”,但是它内容并不是教读者取得个人功利的最大化,而是如何与他人合作,达到“win-win”。它的内容虽然涉及作为顾问如何有效地为客户提供价值,不过书中的建议操作性很强,完全可以应用在更广泛的范畴——我们每天与他人的交流很多都是向别人提建议或者接受别人建议的过程。最初我担心这本书的内容不适合“国情”,但后来的经历告诉我,在沟通与协作上,全人类都面临相同的挑战。&/i&&/li&&li&&a href=&///?target=http%3A///subject/1467587/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Unix编程艺术&i class=&icon-external&&&/i&&/a&
&i&UNIX作为一款软件,绝对是人类的工程史上的奇迹,今天最重要的系统几乎全部运行在UNIX或其变体之上。它诞生于软件工程方法论的“创世纪”。得益于数位天才的努力,UNIX将他们的智慧全部包容进来,比如我们耳熟能详的KISS,YAGNI原则。不过这些智慧大多以源代码的形式保留在磁盘上了。所幸Eric Raymond的妙笔让这些睿智跃然纸上,触手可得,也让后人可以不断地从中汲取智慧和精神动力。&/i&&/li&&/ul&&p&&i&高级篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/1237577/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&分析模式&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&实现领域驱动设计&i class=&icon-external&&&/i&&/a&
&i&本书适合于那些已经具备面向对象编程基础并想进一步提升的开发人员,它告诉我们:好的软件不只是用好设计模式这么简单,而是要能够准确地表达业务意图,达到“代码本身即是设计”。&/i&&/li&&/ul&&p&&b&流程与交付&/b&&/p&&p&&i&基础篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/3390446/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&硝烟中的Scrum和XP&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/4743056/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&用户故事与敏捷方法&i class=&icon-external&&&/i&&/a&&/li&&/ul&&p&&i&进阶篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/6862062/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&持续交付&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Google软件测试之道&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/5338399/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&敏捷软件测试&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&精益软件度量&i class=&icon-external&&&/i&&/a&
&i&软件度量是当今软件开发行业的热点话题,但同时也是推广实施过程中的难题。一方面软件企业管理存在度量的迫切需求,另一方面,企业在推行软件度量的实践上问题颇多、效果不佳。人们迫切需要破解度量难题,找到切实可行的软件度量的实践方法。而这本书从精益理念的角度,尝试重新梳理在中等规模到大规模软件开发中度量体系设计和实施的思路。&/i&&/li&&/ul&&p&&i&高级篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&发布!软件的设计与部署&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&看板方法&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&实例化需求:团队如何交付正确的软件&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/4170079/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&精益和敏捷开发大型应用指南&i class=&icon-external&&&/i&&/a&
&i&精益和敏捷在很多人眼里只是那些小而美的团队才能玩的转的工具,在大团队大项目中会出现各种各样的阻碍,源于和已有组织结构,沟通结构甚至绩效考核制度的不匹配。而大团体如何运用精益思想和敏捷的原则与实践开发?相信看完本书你会找到答案。&/i&&/li&&/ul&&p&&b&思想与领导力&/b&&/p&&p&&i&基础篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/5401859/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&门后的秘密&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=https%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&部落的力量&i class=&icon-external&&&/i&&/a&
&i&如果你幸运的话,在你的一生中,会有一些经历让你难忘,每当你遇到困难的时候,你都会不自觉的想起那个时候是什么样的,从中寻找答案,你在努力让自己身边的环境回到“当年”的那个状态,虽然已经物是人非。如果你不能,你会痛苦、无力、抱怨世事不如以前了。&/i&
&i&然而“当年”那个状态到底是什么状态?所谓伟大的团队到底有什么样的特点?他们中的每一个人心里想的是什么,他们之间又是如何交互的?所谓团队建设究竟应该怎么做?你又如何领导你的团队到达这样的状态?&/i&
&i&作为一个软件工程师,你一定会多多少少的遇到这些困惑,我强烈建议你读读这本书,因为,毕竟,软件是一个协作的游戏。&/i&&/li&&/ul&&p&&i&进阶篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject/6307924/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&精益思想&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/1045862/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&第五项修炼&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject/1786387/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&影响力&i class=&icon-external&&&/i&&/a&
&i&为什么有些人极具说服力?同样的观点为什么不同人说出来的大家的反应是不一样的甚至截然相反的?这就是影响力这个武器的威力所在。影响力的打造和经营,无论对于个人还是企业,都可以让我们做到事半功倍,节省更多的成本,创造更多的价值&/i&&/li&&/ul&&p&&i&高级篇&/i&&/p&&ul&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Agile IT Organization Design&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&管理3.0:培养和提升敏捷领导力&i class=&icon-external&&&/i&&/a&&/li&&li&&a href=&///?target=http%3A///subject//& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&精益企业&i class=&icon-external&&&/i&&/a&
&i&“精益”的概念源自于二十世纪末期美国人对丰田制造方法的研究,总结出的可以同是提高质量并降低成本的秘密。“精益创业”将这种方法用于初创企业,并随着很多硅谷的明星公司以及国内很多创业奇迹故事而流行开来。于是很多人开始认为只有小型的初创企业才能谈及“精益”。本书的三位作者以他们自身丰富的经历告诉我们,同样的原则、方法、实践也适用于“恐龙”般的大型企业,从而保持它们与“初创公司”的竞争力。&/i&&/li&&/ul&&p&本读书雷达虽然冠以ThoughtWorks(中国)之名,但选书的倾向与意见并非ThoughtWorks(中国)官方的态度,而是几位爱读书、会读书的ThoughtWorker的个人意见而已。如果你也加入了ThoughtWorks,你一定会发现这种自发组织的民间活动,在ThoughtWorks可谓俯拾皆是,不用诧异。 如果想对读书雷达的由来和制定标准有更为清晰的了解,可以戳这里:&a href=&///?target=http%3A//insights.thoughtworkers.org/reading-radar-2016/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&读书雷达 - ThoughtWorks洞见&i class=&icon-external&&&/i&&/a&
明天就是世界读书日了,就知道广大程序员们有这个需求。豆列都给你准备好了: 编程与实践基础篇
互联网时代,每个人都需要知道的安全知识必备书籍。
&p&&b&以下推荐列表都是技术圈活跃分子,欢迎大家帮忙补充和指正。额,别问我值不值得关注,我只是一名程序员安慰师而已,并不是你想关注的程序员。&/b& &b&
╮(╯▽╰)╭,真的相信我是程序员鼓励师么?我之前是一个Android程序员啦,曾经在2012年美好时代做过一个产品最后百万便宜卖掉了,那时候真傻。现在偶尔写代码,一直玩美股 &a class=&member_mention& href=&///people/8f5a47ce847f312bbc8f5ce0425ecae2& data-hash=&8f5a47ce847f312bbc8f5ce0425ecae2& data-hovercard=&p$b$8f5a47ce847f312bbc8f5ce0425ecae2&&@App小公主&/a&&/b& &b&
知乎三大软狗:带你发现更大的世界,老赵最近一直观察美国大选,轮子哥蜘蛛依旧是知乎最污,winter现在更新少了。&/b&&/p&&p&&a class=&member_mention& href=&///people/78e3b2ae1be4ab038a6e& data-hash=&78e3b2ae1be4ab038a6e& data-hovercard=&p$b$78e3b2ae1be4ab038a6e&&@赵劼&/a& 网名老赵,洋名Jeffrey Zhao,花名赵姐夫,金融行业程序员,Wind.js类库作者,多年微软MVP,InfoQ中文站兼职编辑,目前就职于摩根大通。知乎“温赵轮”三大软狗之一。&/p&&p&&b&我的点评:我很多年前就知道老赵了,从他的博客园岛微博,我一直有在看的。&/b&&/p&&p&&a class=&member_mention& href=&///people/ecc0ec035f& data-hash=&ecc0ec035f& data-hovercard=&p$b$ecc0ec035f&&@vczh&/a& 本名陈梓瀚,因知乎的个人信息介绍上写有 “专业造轮子”,所以江湖人称 “轮子哥”。vczh 大学时代就在微软实习,毕业后即加入微软。开始时是在微软上海,后来进入北京的微软亚洲研究院。现已移居美国西雅图,在 Office 组做工程师。妻子陈萌萌,原来在百度工作,已随 vczh 共赴美国,入职 Google。&/p&&p&&b&我的点评:很多人搞不懂为什么轮子哥会有那么多关注,其实我也不懂,如果你有有趣好玩的话题, &a class=&member_mention& href=&///people/ecc0ec035f& data-hash=&ecc0ec035f& data-hovercard=&p$b$ecc0ec035f&&@vczh&/a& 他,可能他会帮你点赞哦。&/b&&/p&&p&&a class=&member_mention& href=&///people/ec03b8e839a6fb763e1bdb& data-hash=&ec03b8e839a6fb763e1bdb& data-hovercard=&p$b$ec03b8e839a6fb763e1bdb&&@winter&/a& 程劭非,阿里巴巴高级技术专家,著名JavaScript专家。目前是手机淘宝前端 leader,曾参与Bambook开发,更早为微软工作,开发Windows CE平台的IE浏览器。知乎三大软狗之一!&/p&&p&&b&我的点评:去年我写个文章私信了winter大叔,他以为我是搞营销的,骂了我一顿,真是个率真可爱的大叔啊!&/b&&/p&&p&&b&新增的:这两位是留言区推荐最多的,我增加进来&/b&&/p&&br&&p&&b&&a class=&member_mention& href=&///people/745f68a74a02e455b1e1& data-hash=&745f68a74a02e455b1e1& data-hovercard=&p$b$745f68a74a02e455b1e1&&@蓝色&/a&&/b& ,目前在IBM从事C++编译器开发,是个 C++ 方面的高手,我前段时间加过他微信,原因是他写了个凄美的码农爱情故事,我贴下来哈。从他头像看还是个粉嫩的文青,只是不知道是否有男朋友。&/p&&p&一个男孩给女孩写了一行代码&/p&&p&for(;;) printf(&I Love You!\n&);
&/p&&p&女孩回了一行代码&/p&&p&for(;;); printf(&I Love You Too!\n&);
&/p&&p&很凄美&/p&&br&&p&&a class=&member_mention& href=&///people/a06cfb38e37dacdf4d7f032& data-hash=&a06cfb38e37dacdf4d7f032& data-hovercard=&p$b$a06cfb38e37dacdf4d7f032&&@RednaxelaFX&/a& Jvm,编译器领域国内知名开发者之一,热心回答,乐于分享,毕业于南京大学,之后入职阿里核心事业部虚拟机组,之后进入Oracle jdk组开发,现在在Azul Systems做JIT编译器研发。(来自&a href=&/people/zeng-jian-ping-66& class=&internal&&XlousZeng&/a&评论推荐。)&/p&&p&&b&知乎女程序员:&/b& &b&&a class=&member_mention& href=&///people/1c7fdb6b3cf05e2b6eaac0a9& data-hash=&1c7fdb6b3cf05e2b6eaac0a9& data-hovercard=&p$b$1c7fdb6b3cf05e2b6eaac0a9&&@陈萌萌&/a&&/b& &b&知乎最最最最最最最知名女程序员,&/b&原来在百度工作,已随 vczh 共赴美国,入职 Google。(我一直想不明白的是为什么她不管管轮子哥,每天给各种美女点赞啊!后来发现萌萌是做人工智能的,我坚信 &a class=&member_mention& href=&///people/ecc0ec035f& data-hash=&ecc0ec035f& data-hovercard=&p$b$ecc0ec035f&&@vczh&/a&是他们两正在驯化的半人工智能角色,萌萌这事你招不招吧!)&/p&&br&&p&&a class=&member_mention& href=&///people/596c0a5fdd9b36cea06bac348d418824& data-hash=&596c0a5fdd9b36cea06bac348d418824& data-hovercard=&p$b$596c0a5fdd9b36cea06bac348d418824&&@顾轶灵&/a& 百度的前端开发工程师,目前在上海。&/p&&p&&b&我的点评:&/b&跟顾大大同在 justjavac 的微信群里,平时在群里会聊聊,后来有一次我加他微信跟他说“顾大大,你粉丝那么多,可以接广告,帮别人点点赞呀,赚赚零花钱啊!”&b&然后被顾大大教育了一番以及抛了一个鄙视的表情。&/b&顾大代表了知乎里绝大多数大 V 程序员,在知乎只是为了装逼,我想凭着这点他就很值得关注啊。&/p&&br&&p&&b&发明轮子的天才们:&/b&&/p&&p&&a class=&member_mention& href=&///people/59bb1cf36c486f096a30& data-hash=&59bb1cf36c486f096a30& data-hovercard=&p$b$59bb1cf36c486f096a30&&@Laruence&/a& 惠新宸 ,国内最有影响力的PHP技术专家, PHP开发组核心成员 , PECL开发者 , Zend公司外聘顾问, 曾供职于雅虎,百度,新浪微博现为链家网技术副总裁。 是PHP NG核心开发者,PHP5.4,5.5的主要开发者。作为PECL开发者贡献了Yaf (Yet another framework),Yar(Yet another RPC framework) 以及Yac(Yet another Cache)、Taint等多个优秀开源作品,同时也是APC ,Opcache,Msgpack等项目的维护者。&/p&&p&&a class=&member_mention& href=&///people/cfdec6226ece879d2571fbcf& data-hash=&cfdec6226ece879d2571fbcf& data-hovercard=&p$b$cfdec6226ece879d2571fbcf&&@尤雨溪&/a& Vue.js
作者,前端超级大牛!&/p&&br&&p&&b&安全圈子:&/b&&/p&&p&&a class=&member_mention& href=&///people/7baaf3c00c2c7daeddf8e9ba813af141& data-hash=&7baaf3c00c2c7daeddf8e9ba813af141& data-hovercard=&p$b$7baaf3c00c2c7daeddf8e9ba813af141&&@tombkeeper&/a& 本名于旸,男,现为腾讯玄武实验室的掌门人。国内网络安全与黑客界响当当的大佬级人物。同时也是跨界明星,本科毕业于安徽医科大学临床医学专业。在微博上被粉丝们冠以"教主""妇科圣手"等名号。除了在网络安全领域卓有建树以外,也是育儿界一颗冉冉升起的新星。才华横溢却行事低调,为人谦逊,从不显山露水,是最值得关注的微博人物之一。&/p&&p&&a class=&member_mention& href=&///people/929dc8c4f87a15a8cb708a& data-hash=&929dc8c4f87a15a8cb708a& data-hovercard=&p$b$929dc8c4f87a15a8cb708a&&@道哥&/a& 毕业于西安交大少年班,阿里巴巴集团研究员,安全宝前合伙人,已经成为过去式的叱诧风云的安全组织「幻影」创始人,微信公众号「道哥的黑板报」作者,著有技术畅销书《白帽子讲Web安全》。&/p&&p&&a class=&member_mention& href=&///people/18bbffa1fe885fba& data-hash=&18bbffa1fe885fba& data-hovercard=&p$b$18bbffa1fe885fba&&@云舒&/a& 前阿里巴巴安全大牛,今年春天离开阿里创业担任默安科技CTO&/p&&p&&b&移动开发圈&/b&&/p&&p&&a class=&member_mention& href=&///people/e8ddeba7e3ca016ffd0e8ca30d0f534e& data-hash=&e8ddeba7e3ca016ffd0e8ca30d0f534e& data-hovercard=&p$b$e8ddeba7e3ca016ffd0e8ca30d0f534e&&@D-clock爱吃葱花&/a& 一个尚未成名,身高180的帅气小生,他对于编程的执着一直感染着我,推荐他姑且是为了鼓励他吧。&/p&&p&&a class=&member_mention& href=&///people/033aaa7b41577bdf4fdbb0& data-hash=&033aaa7b41577bdf4fdbb0& data-hovercard=&p$b$033aaa7b41577bdf4fdbb0&&@Trinea&/a& 吴更新,2010 年加入阿里巴巴,开始网站工具开发和性能优化工作,现滴滴出行技术专家;Android 开源项目源码解析 codeKK 发起人,热心推动国内 Android 开源发展。&/p&&p&&a class=&member_mention& href=&///people/926fa049f& data-hash=&926fa049f& data-hovercard=&p$b$926fa049f&&@stormzhang&/a& 从编程小白的自学之路影响了无数Android开发者,他的公众号是Android界最有影响力的公众号之一。现担任薄荷科技Android开发主管。&/p&&p&&a class=&member_mention& href=&///people/ad02ed87e3941cccc6bb1376581badc1& data-hash=&ad02ed87e3941cccc6bb1376581badc1& data-hovercard=&p$b$ad02ed87e3941cccc6bb1376581badc1&&@MagiLu&/a& :腾讯的一个Android 开发工程师,目前是知乎 Android 开发领域第一答主,跟他没有过交集。&/p&&p&&a class=&member_mention& href=&///people/c6884bbeba340affe826b& data-hash=&c6884bbeba340affe826b& data-hovercard=&p$b$c6884bbeba340affe826b&&@唐巧&/a& 资深 iOS 开发者和 Blogger,曾开发有道云笔记、猿题库和小猿搜题的 iOS 客户端。他维护着 iOS 开发博客&a href=&///?target=http%3A///& class=& external& target=&_blank& rel=&nofollow noreferrer&&&span class=&invisible&&http://www.&/span&&span class=&visible&&/&/span&&span class=&invisible&&&/span&&i class=&icon-external&&&/i&&/a& 和「iOS 开发」微信公众账号。&/p&&p&&a class=&member_mention& href=&///people/62f8e6fcf3bfc0e3ea3014a& data-hash=&62f8e6fcf3bfc0e3ea3014a& data-hovercard=&p$b$62f8e6fcf3bfc0e3ea3014a&&@张明云&/a& 常活跃于知乎和简书,知乎 Android 开发和编程话题下优秀回答者;简书《Android 开发经验谈》专题管理员,超过 11K 的关注。目前就职于步步高教育电子,4 年 Android 应用开发经验,一线 Android 开发人员,同时目前也是应用组的 Leader。&/p&&p&&b&前端圈:&/b&&/p&&br&&p&&b&&a class=&member_mention& href=&///people/5b651f38d9d96ae855cf5c1& data-hash=&5b651f38d9d96ae855cf5c1& data-hovercard=&p$b$5b651f38d9d96ae855cf5c1&&@貘吃馍香&/a&&/b&史前前端圈知名人物,关于他有非常多传奇故事在江湖流传,最近几次在微信上跟他对话,发现这是一个超级有趣的前辈,关于他除了膜之外无他了。另外附上他的微博介绍【天天混日子的矮胖子,乌鸦嘴一个,首席吐槽二货,人穷,器短。昵称:土肥圆闲二 。 座右铭:弱智中年欢乐多】真是一个有趣的灵魂。&/p&&p&&a class=&member_mention& href=&///people/7cd6a45d341fb2b4b35b& data-hash=&7cd6a45d341fb2b4b35b& data-hovercard=&p$b$7cd6a45d341fb2b4b35b&&@朴灵&/a& 真名田永强,文艺型码农,Node.js布道者。现就职于阿里巴巴数据平台,任资深工程师,著有《深入浅出Node.js》。他活跃于CNode社区,是线下会议NodeParty的组织者,同时也是JSConf China(沪JS、京JS,以及杭JS)的组织者之一。朴灵热爱开源,是多个Node.js模块的作者。名言:叩首问路,码梦为生。&/p&&p&&a class=&member_mention& href=&///people/cd86bc9090bed90757a34c& data-hash=&cd86bc9090bed90757a34c& data-hovercard=&p$b$cd86bc9090bed90757a34c&&@玉伯&/a& 真名王保平 ,淘宝前端类库 KISSY、前端模块化开发框架SeaJS、前端基础类库Arale的创始人。 年,中科院物理所研究生,Fortran 与 C 程序员,喜爱实验模拟和数值计算。
年,在中科院软件所互联网实验室从事项目管理软件的研发,C# 与 Java 爱好者。 2008 年 4 月份加入淘宝,就职于 UED 部门。2009 年起,组建前端架构团队,在首页维护、全网性能优化、类库研发、知识沉淀、工具应用等方面取得了丰硕成果。&/p&&p&@&a href=&/people/liaoxuefeng& class=&internal&&廖雪峰&/a& 技术作家,著有《Spring 2.0核心技术与最佳实践》&/p&&p&&a class=&member_mention& href=&///people/d1f62e3ceb9aad870f18a& data-hash=&d1f62e3ceb9aad870f18a& data-hovercard=&p$b$d1f62e3ceb9aad870f18a&&@sofish&/a& 林建锋,国内资深前端开发工程师,Web 标准布道者,前支付宝前端开发部 CSS 样式库负责人。Trimidea 创始人,目前就职饿了么(了解博主近况的时候,博主跟我说已经很久木有写代码了,让大家不要别像 他一样,不写代码从 3 跌到 12,这段话给如此严肃的一个分析文章带来了一丝逗比风,更新下,小鱼骗我说他转行了,呜呜呜,今晚大家说他去饿了么)&/p&&p&&a class=&member_mention& href=&///people/739d4aeb5456& data-hash=&739d4aeb5456& data-hovercard=&p$b$739d4aeb5456&&@司徒正美&/a& 钟钦成,网名司徒正美,著名的JavaScript专家,去哪儿网前端架构师,立志做考古学家的日语系工程师,穿梭于二次元与二进制间的“魔法师”,做过陶艺,写过小说,涉猎Java、Ruby、 JavaScript。曾出版《JavaScript框架设计》一书。&/p&&p&&a class=&member_mention& href=&///people/e9306aab1b61e74e7ae6& data-hash=&e9306aab1b61e74e7ae6& data-hovercard=&p$b$e9306aab1b61e74e7ae6&&@张云龙&/a& 张云龙前UC(优视科技) 前端工程师,现全民TV 研发负责人&/p&&p&&a class=&member_mention& href=&///people/ebfb3dea54a18f96d4c8cbb& data-hash=&ebfb3dea54a18f96d4c8cbb& data-hovercard=&p$b$ebfb3dea54a18f96d4c8cbb&&@hzlzh&/a&黄自力,前端工程师,就职于腾讯微信 &a href=&///?target=https%3A///TmT& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&TmT&i class=&icon-external&&&/i&&/a& 团队,十足的 Geek 果粉,折腾过很多有意思的项目和网站,如:&a href=&///?target=https%3A///hzlzh/Best-App& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Best-App&i class=&icon-external&&&/i&&/a&、&a href=&///?target=http%3A///& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&&i class=&icon-external&&&/i&&/a&,mou.li 等,开发上架了 App:&a href=&///?target=https%3A///us/app/yun-shou-yi-pro-hu-lian-wang/idFmt%3D8& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&云收益 Pro&i class=&icon-external&&&/i&&/a&。目前运营的公众号「&a href=&///?target=http%3A//mactips.io/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&MacTips&i class=&icon-external&&&/i&&/a&」 分享 Mac OS 的经验和技巧。&/p&&p&&b&&a class=&member_mention& href=&///people/ced30ef2e460b4febfd77ef3038167ce& data-hash=&ced30ef2e460b4febfd77ef3038167ce& data-hovercard=&p$b$ced30ef2e460b4febfd77ef3038167ce&&justjavac&/a& 技术娱乐圈的朋友们,说是娱乐圈因为他们已经不不止于写代码,而是全职段子手业余程序员!&/b&&/p&&p&&a class=&member_mention& href=&///people/ced30ef2e460b4febfd77ef3038167ce& data-hash=&ced30ef2e460b4febfd77ef3038167ce& data-hovercard=&p$b$ced30ef2e460b4febfd77ef3038167ce&&@justjavac&/a& 活跃于国内外互联网社区,知乎大V,一个充满侠义之心的技术人,曾经多次在知乎朋友圈各个技术社区替技术圈网友维权。曾翻译《JavaScript quirks》,正在出版《代码之谜》。HTML5+CSS3 布道师,NoBackend 信徒,翻译了 JSON API 规范文档,Flaurm 中文社区创始人。平时混迹于 &a href=&///?target=https%3A///justjavac& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&Github&i class=&icon-external&&&/i&&/a&,参与众多开源项目,Star 数位列全球前 100 名。目前正在出版「代码之谜」&/p&&p&&a class=&member_mention& href=&///people/fea2f801ab1dc87a87f8bdeb6fdb3394& data-hash=&fea2f801ab1dc87a87f8bdeb6fdb3394& data-hovercard=&p$b$fea2f801ab1dc87a87f8bdeb6fdb3394&&@phodal&/a& InfoQ社区编辑、 CSDN前端博客专家、 SegmentFault Top Writer、 稀土掘金 Editor、出生于闽南,毕业于西安文理学院(电子信息工程专业),就职于ThoughtWorks,前端、后台、SEO、硬件工程师。(这似乎是一个热恋中的程序员,签名是:待我代码编成,娶你为妻可好 @花仲马)&/p&&p&&a class=&member_mention& href=&///people/8366575cfcfb919baedbd19& data-hash=&8366575cfcfb919baedbd19& data-hovercard=&p$b$8366575cfcfb919baedbd19&&@小爝&/a& 北京前端圈知名人物,人高高瘦瘦,看起来好像是单身其实早就怀抱美人了,手下管着一帮人。&/p&&p&&a class=&member_mention& href=&///people/352f8fda103& data-hash=&352f8fda103& data-hovercard=&p$b$352f8fda103&&@小芋头君&/a& 前端乱炖社区创始人,颜文字君App 独立开发者(已经被他卖掉了,是我们群里最土豪的人物之一),长得很基友(身材妖娆)。目前为大搜车前端负责人。&/p&&p&&a class=&member_mention& href=&///people/766aad6e4cc2dd0fbfc12& data-hash=&766aad6e4cc2dd0fbfc12& data-hovercard=&p$b$766aad6e4cc2dd0fbfc12&&@Jasin Yip&/a& 前端技术话题活跃开发者,我们天天在群里一起聊技(吹)术(牛)。
目前供职于美团,看得出来,他值得关注。&/p&&br&&br&&p&&b&一位我关注已久,值得强烈推荐的大牛:&/b&
这是其豆瓣 &a href=&///?target=http%3A///people/farmostwood/& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&木遥&i class=&icon-external&&&/i&&/a&
这是其博客 &a href=&///?target=http%3A//blog.farmostwood.net/about& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&About me and this blog << 木遥的窗子&i class=&icon-external&&&/i&&/a&
P大数学本科加硕士 ucla应用数学博士google纽约工程师 ,最近木遥已经回国,可能创业,去向暂时不明,关注他让我更懂得生活,学习。
一些我不太熟悉,但是成名已久的大牛:&/b&&/p&&p&&a class=&member_mention& href=&///people/1e2cccc3ce33& data-hash=&1e2cccc3ce33& data-hovercard=&p$b$1e2cccc3ce33&&@Milo Yip&/a& 香港人,目前就职腾讯&/p&&p&&a class=&member_mention& href=&///people/c1c892f179f95da8b37a1dcc& data-hash=&c1c892f179f95da8b37a1dcc& data-hovercard=&p$b$c1c892f179f95da8b37a1dcc&&@陈硕&/a& Google 工程师,《Linux 多线程服务端编程:使用 muduo C++ 网络库》作者。&/p&&p&&a class=&member_mention& href=&///people/ed1bff9f8d1dd80f45c88aa& data-hash=&ed1bff9f8d1dd80f45c88aa& data-hovercard=&p$b$ed1bff9f8d1dd80f45c88aa&&@陈皓&/a& 左耳朵耗子,酷壳博主() 前阿里巴巴大牛。&/p&&p&&b&评论区 &a class=&member_mention& href=&///people/d073f194bcabc1cec5ef69d0b534de99& data-hash=&d073f194bcabc1cec5ef69d0b534de99& data-hovercard=&p$b$d073f194bcabc1cec5ef69d0b534de99&&@空明流转&/a&
推荐的几个有趣的程序员,资料暂时不详大家自己判断吧&/b&&/p&&p&&a class=&member_mention& href=&///people/42c7d84ae7d50b31d2a14& data-hash=&42c7d84ae7d50b31d2a14& data-hovercard=&p$b$42c7d84ae7d50b31d2a14&&@Hush&/a& MSFT,DB相关。
&a class=&member_mention& href=&///people/33b61032ede4cff9a9de9& data-hash=&33b61032ede4cff9a9de9& data-hovercard=&p$b$33b61032ede4cff9a9de9&&@Chaos&/a& 网易游戏,在知乎上以P(吹)R(逼)为主。
&a class=&member_mention& href=&///people/d570a141b59ffe4f079f& data-hash=&d570a141b59ffe4f079f& data-hovercard=&p$b$d570a141b59ffe4f079f&&@吉林小伙&/a& 熟悉ASM级别的Debug。
&a class=&member_mention& href=&///people/aee55fc6d0d2b1efa72d290& data-hash=&aee55fc6d0d2b1efa72d290& data-hovercard=&p$b$aee55fc6d0d2b1efa72d290&&@Skogkatt&/a& 资深被淘汰平台工程师
&a class=&member_mention& href=&///people/0b21747b1fec79ad8af7e68a2b1ff681& data-hash=&0b21747b1fec79ad8af7e68a2b1ff681& data-hovercard=&p$b$0b21747b1fec79ad8af7e68a2b1ff681&&@叛逆者&/a& 图形学。
&a class=&member_mention& href=&///people/85b8e42bd9cc7c5ef492bbd8& data-hash=&85b8e42bd9cc7c5ef492bbd8& data-hovercard=&p$b$85b8e42bd9cc7c5ef492bbd8&&@顾煜&/a& 腾讯互娱。
&a class=&member_mention& href=&///people/b6d28ac2b88b7f230552bab4a0aceaca& data-hash=&b6d28ac2b88b7f230552bab4a0aceaca& data-hovercard=&p$b$b6d28ac2b88b7f230552bab4a0aceaca&&@Belleve&/a& PLT,字体。
&a class=&member_mention& href=&///people/c2d3f56ac34de7d71cdcbc& data-hash=&c2d3f56ac34de7d71cdcbc& data-hovercard=&p$b$c2d3f56ac34de7d71cdcbc&&@雾雨魔理沙&/a& PLT。&/p&&br&&p&&b&行走在创业圈的技术人:&/b&&/p&&p&&a class=&member_mention& href=&///people/19fabe7c& data-hash=&19fabe7c& data-hovercard=&p$b$19fabe7c&&@Fenng&/a& 前阿里巴巴,丁香园六年CTO(目前已经离职去向暂时不明),贝塔咖啡联合创始人,小道消息博主,喜爱崔健的蓝色骨头,我想他也是一根蓝色骨头。&/p&&p&&a class=&member_mention& href=&///people/7d45b644ccdb269db56497& data-hash=&7d45b644ccdb269db56497& data-hovercard=&p$b$7d45b644ccdb269db56497&&@曹政&/a& 俞军的关门弟子,CNZZ统计工具的缔造者,前百度商业产品部boss、4399CTO目前在新加坡浪荡,关注他微信公众号知道他目前状态是偶尔给新加坡一些互联网企业或者投资工资做顾问,偶尔回国照料他投资的公司。&/p&&p&&a class=&member_mention& href=&///people/8de9aa7f60d890b29c39& data-hash=&8de9aa7f60d890b29c39& data-hovercard=&p$b$8de9aa7f60d890b29c39&&@覃超&/a& Facebook早期工程师,在知乎及其活跃,涉猎较为广泛不仅限于编程、工程师职业发展、创业、投资、中美互联网公司文化差异等等。本科时期参加大学生计算机竞赛和TopCoder比赛,在谷歌北京实习,而后留学Carnegie Mellon University (卡耐基梅隆大学)。年在Facebook工作,有经历Facebook由600人到6000人的发展过程,也经历过Facebook移动互联网转型的痛苦,同时也经历过上市的喜悦。&/p&&p&&b&最后推荐下我自己:&/b& &a class=&member_mention& href=&///people/8f5a47ce847f312bbc8f5ce0425ecae2& data-hash=&8f5a47ce847f312bbc8f5ce0425ecae2& data-hovercard=&p$b$8f5a47ce847f312bbc8f5ce0425ecae2&&@App小公主&/a& 嗯啊,就是答主我自己啦, 原安卓巴士创始人,移动开发者沙龙发起人。后创业一年半开发微蛋App、Sense App 然而现在都已经关了。最近收到朋友的一笔天使投资,准备再次创业。(为了涨粉,我把自己都出卖了,要知道我现在还没有辞职啊)&/p&&br&&br&&p&部分资料参考自:&/p&&p&&a href=&///?target=http%3A//www.diycode.cc/topics/23& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&GitHub 中国区前 100 名到底是什么样的人?&i class=&icon-external&&&/i&&/a&&/p&
以下推荐列表都是技术圈活跃分子,欢迎大家帮忙补充和指正。额,别问我值不值得关注,我只是一名程序员安慰师而已,并不是你想关注的程序员。
╮(╯▽╰)╭,真的相信我是程序员鼓励师么?我之前是一个Android程序员啦,曾经在2012年美好时代做过一个产品…
&h2&一.抽象类&/h2&&p&  在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为:&/p&&br&1&br&&b&abstract&/b&&b& void fun();&/b&&br&&p&  抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象类必须在类前用abstract关键字修饰。因为抽象类中含有无具体实现的方法,所以不能用抽象类创建对象。&/p&&p&  下面要注意一个问题:在《JAVA编程思想》一书中,将抽象类定义为“包含抽象方法的类”,但是后面发现如果一个类不包含抽象方法,只是用abstract修饰的话也是抽象类。也就是说抽象类不一定必须含有抽象方法。个人觉得这个属于钻牛角尖的问题吧,因为如果一个抽象类不包含任何抽象方法,为何还要设计为抽象类?所以暂且记住这个概念吧,不必去深究为什么。&/p&&p&&b&[&/b&&b&public] abstract class ClassName {&/b&&/p&&p&&b&
abstract void fun();&/b&&/p&&br&&b&
}&/b&&br&&p&  从这里可以看出,抽象类就是为了继承而存在的,如果你定义了一个抽象类,却不去继承它,那么等于白白创建了这个抽象类,因为你不能用它来做任何事情。对于一个父类,如果它的某个方法在父类中实现出来没有任何意义,必须根据子类的实际需求来进行不同的实现,那么就可以将这个方法声明为abstract方法,此时这个类也就成为abstract类了。&/p&&p&  包含抽象方法的类称为抽象类,但并不意味着抽象类中只能有抽象方法,它和普通类一样,同样可以拥有成员变量和普通的成员方法。注意,抽象类和普通类的主要有三点区别:&/p&&p&  1)抽象方法必须为public或者protected(因为如果为private,则不能被子类继承,子类便无法实现该方法),缺省情况下默认为public。&/p&&p&  2)抽象类不能用来创建对象;&/p&&p&  3)如果一个类继承于一个抽象类,则子类必须实现父类的抽象方法。如果子类没有实现父类的抽象方法,则必须将子类也定义为为abstract类。&/p&&p&  在其他方面,抽象类和普通的类并没有区别。&/p&&h2&二.接口&/h2&&p&  接口,英文称作interface,在软件工程中,接口泛指供别人调用的方法或者函数。从这里,我们可以体会到Java语言设计者的初衷,它是对行为的抽象。在Java中,定一个接口的形式如下:&/p&&p&&b&[public] interface InterfaceName {&/b&&/p&&p&&b&}&/b&&/p&&br&&p&  接口中可以含有 变量和方法。但是要注意,接口中的变量会被隐式地指定为public static final变量(并且只能是public static final变量,用private修饰会报编译错误),而方法会被隐式地指定为public abstract方法且只能是public abstract方法(用其他关键字,比如private、protected、static、 final等修饰会报编译错误),并且接口中所有的方法不能有具体的实现,也就是说,接口中的方法必须都是抽象方法。从这里可以隐约看出接口和抽象类的区别,接口是一种极度抽象的类型,它比抽象类更加“抽象”,并且一般情况下不在接口中定义变量。&/p&&p&  要让一个类遵循某组特地的接口需要使用implements关键字,具体格式如下:&/p&&p&&b&class&/b&&b& ClassName implements Interface1,Interface2,[....]{&/b&&/p&&br&&b&
}&/b&&br&&p&  可以看出,允许一个类遵循多个特定的接口。如果一个非抽象类遵循了某个接口,就必须实现该接口中的所有方法。对于遵循某个接口的抽象类,可以不实现该接口中的抽象方法。&/p&&h2&三.抽象类和接口的区别&/h2&&p&1.语法层面上的区别&/p&&p&  1)抽象类可以提供成员方法的实现细节,而接口中只能存在public abstract 方法;&/p&&p&  2)抽象类中的成员变量可以是各种类型的,而接口中的成员变量只能是public static final类型的;&/p&&p&  3)接口中不能含有静态代码块以及静态方法,而抽象类可以有静态代码块和静态方法;&/p&&p&  4)一个类只能继承一个抽象类,而一个类却可以实现多个接口。&/p&&p&2.设计层面上的区别&/p&&p&  1)抽象类是对一种事物的抽象,即对类抽象,而接口是对行为的抽象。抽象类是对整个类整体进行抽象,包括属性、行为,但是接口却是对类局部(行为)进行抽象。举个简单的例子,飞机和鸟是不同类的事物,但是它们都有一个共性,就是都会飞。那么在设计的时候,可以将飞机设计为一个类Airplane,将鸟设计为一个类Bird,但是不能将 飞行 这个特性也设计为类,因此它只是一个行为特性,并不是对一类事物的抽象描述。此时可以将 飞行 设计为一个接口Fly,包含方法fly( ),然后Airplane和Bird分别根据自己的需要实现Fly这个接口。然后至于有不同种类的飞机,比如战斗机、民用飞机等直接继承Airplane即可,对于鸟也是类似的,不同种类的鸟直接继承Bird类即可。从这里可以看出,继承是一个 &是不是&的关系,而 接口 实现则是 &有没有&的关系。如果一个类继承了某个抽象类,则子类必定是抽象类的种类,而接口实现则是有没有、具备不具备的关系,比如鸟是否能飞(或者是否具备飞行这个特点),能飞行则可以实现这个接口,不能飞行就不实现这个接口。&/p&&p&  2)设计层面不同,抽象类作为很多子类的父类,它是一种模板式设计。而接口是一种行为规范,它是一种辐射式设计。什么是模板式设计?最简单例子,大家都用过ppt里面的模板,如果用模板A设计了ppt B和ppt C,ppt B和ppt C公共的部分就是模板A了,如果它们的公共部分需要改动,则只需要改动模板A就可以了,不需要重新对ppt B和ppt C进行改动。而辐射式设计,比如某个电梯都装了某种报警器,一旦要更新报警器,就必须全部更新。也就是说对于抽象类,如果需要添加新的方法,可以直接在抽象类中添加具体的实现,子类可以不进行变更;而对于接口则不行,如果接口进行了变更,则所有实现这个接口的类都必须进行相应的改动。&/p&&p&  下面看一个网上流传最广泛的例子:门和警报的例子:门都有open( )和close( )两个动作,此时我们可以定义通过抽象类和接口来定义这个抽象概念:&/p&&p&&b&abstract class Door {&/b&&/p&&p&&b&
public abstract void open();&/b&&/p&&br&&b&
public abstract void close();&/b&&br&&b&}&/b&&br&&p&  或者:&/p&&p&&b&interface Door {&/b&&/p&&br&&b&
public abstract void open();&/b&&br&&b&
public abstract void close();&/b&&br&&b&}&/b&&br&&p&  但是现在如果我们需要门具有报警alarm( )的功能,那么该如何实现?下面提供两种思路:&/p&&p&  1)将这三个功能都放在抽象类里面,但是这样一来所有继承于这个抽象类的子类都具备了报警功能,但是有的门并不一定具备报警功能;&/p&&p&  2)将这三个功能都放在接口里面,需要用到报警功能的类就需要实现这个接口中的open( )和close( ),也许这个类根本就不具备open( )和close( )这两个功能,比如火灾报警器。&/p&&p&  从这里可以看出, Door的open() 、close()和alarm()根本就属于两个不同范畴内的行为,open()和close()属于门本身固有的行为特性,而alarm()属于延伸的附加行为。因此最好的解决办法是单独将报警设计为一个接口,包含alarm()行为,Door设计为单独的一个抽象类,包含open和close两种行为。再设计一个报警门继承Door类和实现Alarm接口。&/p&&p&&b&interface&/b&&b& Alram {&/b&&/p&&br&&b&
void alarm();&/b&&br&&b&
}&/b&&br&&br&&b&
abstract class Door {&/b&&br&&b&
void open();&/b&&br&&b&
void close();&/b&&br&&b&
}&/b&&br&&br&&b&
class AlarmDoor extends Door implements Alarm {&/b&&br&&b&
void oepn() {&/b&&br&&b&
//....&/b&&br&&b&
}&/b&&br&&b&
void close() {&/b&&br&&b&
//....&/b&&br&&b&
}&/b&&br&&b&
void alarm() {&/b&&br&&b&
//....&/b&&br&&b&
}&/b&&br&&b&}&/b&&br&&br&转载自《&a href=&/?target=http%3A///dolphin0520/p/3811437.html& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&深入理解Java的接口和抽象类&i class=&icon-external&&&/i&&/a&》
一.抽象类 在了解抽象类之前,先来了解一下抽象方法。抽象方法是一种特殊的方法:它只有声明,而没有具体的实现。抽象方法的声明格式为: 1 abstract void fun(); 抽象方法必须用abstract关键字进行修饰。如果一个类含有抽象方法,则称这个类为抽象类,抽象…
&b&其实接口就是调用端和实现端做个规范,调用端和实现端按照规范做正确的输入和输出调用,异常的输入输出捕获,双方对各自内部的业务都不需要了解,这个是和语言无关的。&/b&&br&拿java web经常用到的dao的增删改查来做实例说下吧:&br&&blockquote&&p&這個好處多多啊, 所謂的接口就是只給出了函數聲明,但是沒有函數體的類嘛 ,函數體在實現類中給出.&/p&&p&假設你有一個數據庫Dao, 給上一級程序用的: 就是
DatabaseDao dao = new DatabaseDao();這樣子&/p&&p&DatabaseDao{&/p&&p&
insert(); 增&/p&&p&
delete(); 刪&/p&&p&
update(); 改&/p&&p&
query() ; 查&/p&&p&}&/p&&p&然後你突然發現你根據需要,程序要鏈接兩個數據庫 一個orcale, 一個 sql server&/p&&p&你就寫了 兩個Dao的實現類orcaleImpl, SQLServerImpl&/p&&p&orcaleImpl implement DatabaseDao(){&/p&&p&
insert(); 增orcale&/p&&p&
delete(); 刪orcale&/p&&p&
update(); 改orcale&/p&&p&
query() ; 查orcale&/p&&p&}&/p&&p&SQLServerImpl implement DatabaseDao(){&/p&&p&
insert(); 增SQL Server&/p&&p&
delete(); 刪SQL Server&/p&&p&
update(); 改SQL Server&/p&&p&
query() ; 查SQL Server&/p&&p&}&/p&&p&這樣做的好處就將 Dao層和程序上面的其他部分開了, 其他人調用的時候也只是使用DatabaseDao dao = new DatabaseDao(); Dao接口, 具體後面用什麼數據庫 就看具體哪個去實現該接口了. &/p&&p&對應程序的維護有很大幫助, 假設這時候你要添加一個新數據庫 MySQL, 你也就只需創建一個MySQLImpl的類而已, 而其他地方都不用進行修改的.&/p&&p&server跟Dao的原理是一樣一樣的 .&/p&&p&具體分層 頁面 -& controller (調用server接口) -& server(調用Dao接口 ) -& Dao -& database&/p&&p&如果要類比現實中的物體, 就想樓上說的USB接口一個道理, 你永遠不知道USB具體是怎麼回事, 但是你永遠都知道USB接口能被上一級使用,也就是你的手機, 平板,同時使用, 此時USB接口就像一個標準一樣,被社會大眾所接收了 &/p&&/blockquote&&p&原文:&a href=&///?target=http%3A///question/3264.htm& class=& wrap external& target=&_blank& rel=&nofollow noreferrer&&java web项目中dao和service前面为什么要有接口呢??&i class=&icon-external&&&/i&&/a&&/p&
其实接口就是调用端和实现端做个规范,调用端和实现端按照规范做正确的输入和输出调用,异常的输入输出捕获,双方对各自内部的业务都不需要了解,这个是和语言无关的。 拿java web经常用到的dao的增删改查来做实例说下吧: 這個好處多多啊, 所謂的接口就是…
或者说,除了解决多继承之外,还给开发者一个明确的面向对象警示,因为接口的含义是can do,即可以做什么,而继承的含义是is a,即是什么。以上仅代表本人意见,欢迎斧正~
或者说,除了解决多继承之外,还给开发者一个明确的面向对象警示,因为接口的含义是can do,即可以做什么,而继承的含义是is a,即是什么。以上仅代表本人意见,欢迎斧正~
多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题.&br&多态有两种表现形式:重载和覆盖&br&首先说重载(overload),是发生在同一类中.与什么父类子类、继承毫无关系.&br&标识一个函数除了函数名外,还有函数的参数(个数和类型).也就是说,一个类中可以有两个或更多的函数,叫同一个名字而他们的参数不同.&br&他们之间毫无关系,是不同的函数,只是可能他们的功能类似,所以才命名一样,增加可读性,仅此而已!&br&再说覆盖(override),是发生在子类中!也就是说必须有继承的情况下才有覆盖发生.&br&我们知道继承一个类,也就有了父类了全部方法,如果你感到哪个方法不爽,功能要变,那就把那个函数在子类中重新实现一遍.&br&这样再调用这个方法的时候,就是执行子类中的过程了.父类中的函数就被覆盖了.(当然,覆盖的时候函数名和参数要和父类中完全一样,不然你的方法对父类中的方法就不起任何作用,因为两者是两个函数,毫不关系)
多态性是指允许不同类的对象对同一消息作出响应.多态性包括参数化多态性和包含多态性.多态性语言具有灵活、抽象、行为共享、代码共享的优势,很好的解决了应用程序函数同名问题. 多态有两种表现形式:重载和覆盖 首先说重载(overload),是发生在同一类中.与…
&p&接口的意义在于它不是一个类也不是一个对象。&/p&&p&它是对象与对象连接的部分!可以理解为一种交流协议。。&/p&&p&你知道安卓跟苹果充电器么?很久之前每个手机厂家都有不同的充电接口,这样导致了掉了充电器就很难充电,需要万能充什么的!后来智能机时代就把充电接口统一了!手机跟充电器只要实现了输入端,输出端,样式相同的接口就可以充电。。。。。这就是接口。&/p&&br&&p&接口还有一个显著的特性一是协助封装。&/p&&p&别人给了你一个工具类是绝对封装的,你某个部位会用到这个对象,你又不知道这个对象能不能用。。。那就看他有没有实现你规定的接口方法!就是输入参数与返回值与方法名是否相同即可,你不用去一个个方法找出符合你要求的东西。只要实现了你的接口就可以使用。。。这个东西在维护的过程中非常好用。&/p&&p&你可以做前面部分,同事可以帮你做工具类,然后两头一做好直接调用,或者换了一个要求,我也只需要修改接口方法内的东西就行了,分割了整个任务成无限个小段,修改的时候不用大动干戈&/p&
接口的意义在于它不是一个类也不是一个对象。它是对象与对象连接的部分!可以理解为一种交流协议。。你知道安卓跟苹果充电器么?很久之前每个手机厂家都有不同的充电接口,这样导致了掉了充电器就很难充电,需要万能充什么的!后来智能机时代就把充电接口统…
java中的数组int[]在初始化时有静态初始化和动态初始化两种方式&br&静态:&br&int[] arrayA = new int[]{1,2,3,4};&br&或&br&int[]
arrayA= {1,2,3,4};&br&其中引用变量arrayA存在栈内存中,堆内存中有4个连续的内存单元分别存储int型数据1234,arrayA指向堆内存中的数据对象。此处arrayA类似于指针。&br&动态:&br&int[] arrayA= new int[4];&br&此处的arrayA指向堆内存中的数据对象,4个全为null,因为

我要回帖

更多关于 alarm 的文章

 

随机推荐