当Java代码遇上抽象.重载加重写.一切都不美好了 前几天调程序遇上个奇怪的bug.一直没找到问题,今天最终发现问题所在了,不说了先上代码(下面代码是演示样例代码,经測试,Java不存在这问题,安卓存在这问题): 片段1: @Override public void printfData() { printfData("hello"); } 第一眼看上去貌似没什么不正确,这段代码非常正常嘛.代码检查工具也没报错哇,为啥就就是不正确呢? 再细致看一眼:我靠.方法名和被调用的方法名是一样的…
这是 Java 爬虫系列博文的第三篇,在上一篇 Java 爬虫遇到需要登录的网站,该怎么办? 中,我们简单的讲解了爬虫时遇到登录问题的解决办法,在这篇文章中我们一起来聊一聊爬虫时遇到数据异步加载的问题,这也是爬虫中常见的问题. 现在很多都是前后端分离项目,这会使得数据异步加载问题更加突出,所以你在爬虫时遇到这类问题不必惊讶,不必慌张.对于这类问题的解决办法总体来说有以下两种: 1.内置一个浏览器内核 内置浏览器就是在抓取的程序中,启动一个浏览器内核,使我们获取到 js 渲染后的页面,这样我们就跟…
1.什么叫重构? 答:重构(Refactoring)就是通过调整程序代码改善软件的质量.性能,使其程序的设计模式和架构更趋合理,提高软件的扩展性和维护性,系统发展到一定阶段后,使用重构的方式,不改变系统的外部功能,只对内部的结构进行重新的整理.通过重构,不断的调整系统的结构,使系统对于需求的变更始终具有较强的适应能力. 重写:也叫覆盖,当一个子类继承一父类,而子类中的方法与父类中的方法的名称.参数个数.类型都完全一致时,就称子类中的这个方法重写了父类中的方法.(相对于继承) 例子: public…
转载请注明出处:jiq•钦's technical Blog (1)域与静态方法 记住"仅仅有普通方法的调用是多态的". 而域和静态方法不是:对于域的訪问.在编译期间就已经进行解析和绑定了.而假设某个方法是静态的,就不具备多态性. (2)编写构造器有一条准则: * 用尽可能简单的方法使得对象进入正常状态.尽量避免调用其它方法. * 构造器内可以安全调用的方法仅仅有那些final方法(private默认final),由于他们无法被覆盖. (3)多态概念: 多态是指一个程序中同名的不同方法…
从2016年12月20号自学java,先是咨询了下培训中心,得小两万,四个月毕业,算了一笔账,一百二十天,合下来每天三百多块,再加上开销之类压力太大,于是开始入坑自学,随后血一般的教训直面而来: 1.环境很重要 不要妄图在家里自己学,因为将面临各种诱惑,电影.游戏.动作片.接踵而来.结果就是到了3月份才学完一个月的内容. 到4月中旬的时候发现才学了40天的进度,意识到这样不行,随后尝试着去了下图书馆,瞬间进入状态!全是学习的人,不由自主的想学习.谁试谁知道! 刚开始去的省图书馆,没有充电的地方,…
同步 1)同步方法 2)同步块 21) 实例变量 22) 类变量 锁定的内容 1)锁定类的某个特定实例 2)锁定类对象(类的所有实例) 一.同步类实例:同步方法 public class Demo { public synchronized void m1(){ //............... } public void m2(){ //............ synchronized(this){ //......... } //........ } } 这两种写法的效果是一样的,锁定的…
单双引号 在js代码中 在js中单.双引号引起来的是字符串,如果我们要在字符串中使用单.双引号,需要反斜杠进行转义 let str='user\'s name'; // or let str=" user's name"; // or let str="she said:\"...\"."; 如果在字符串中输出反斜杠,仍然是用反斜杠转义,即2个反斜杠输出1个反斜杠 在html代码中 html标签中,属性值通常用双引号引起来,也可以使用单引号或不用…
什么是多态?它的实现机制是什么呢?重载和重写的区别在那里?这就是这一次我们要回顾的四个十分重要的概念:继承.多态.重载和重写. 继承(inheritance) 简单的说,继承就是在一个现有类型的基础上,通过增加新的方法或者重定义已有方法(下面会讲到,这种方式叫重写)的方式,产生一个新的类型.继承是面向对象的三个基本特征--封装.继承.多态的其中之一,我们在使用JAVA时编写的每一个类都是在继承,因为在JAVA语言中,java.lang.Object类是所有类最根本的基类(或者叫父类.超类),如果…
Java代码运行的方式 1:在开发工具中运行 2:双击 jar 文件运行 3:在命令行中运行 4:在网页中运行 上述运行方式都离不开 JRE,也就是 Java 运行时环境.实际上 JRE 仅包含运行 Java 程序的必须组件,包括 Java 虚拟机以及 Java 核心类库等.Java 程序员经常接触到的 JDK 同样包含了 JRE,并且还附带了一系列开发和诊断工具. 为什么 Java 要在虚拟机里运行 Java 是一门高级程序语言,语法复杂,抽象程度高,因此直接在硬件上运行并不现实.所以,在 J…
Java代码到字节码——第一部分 原文地址 作者:James Bloom 译者:张坤 理解在Java虚拟机中Java代码如何别被编译成字节码并执行是非常重要的,因为这可以帮助你理解你的程序在运行时发生了什么.这种理解不仅能确保你对语言特性有逻辑上的认识而且做具体的讨论时可以理解在语言特性上的妥协和副作用. 这篇文章讲解了在Java虚拟机上Java代码是如何编译成字节码并执行的.想了解JVM内部架构和在字节码执行期间不同内存区域之间的差异可以查看我的上一篇文章 JVM 内部原理. 这篇文章共分为三…