JAVA中使用到继承就会有两个无法回避的缺点:打破了封装性,迫使开发者去了解超类的实现细节,子类和超类耦合。超类更新后可能会导致错误。继承打破了封装性关于这一点,下面是一个详细的例子(来源于Effective Java第16条)public class MyHashSet<E> exte...
性能问题的主要原因是什么,原因有相同的,也有不同的,但归根到底,不外乎内存使用、代码效率、合适的策略逻辑、代码质量、安装包体积这一类问题。但从用户体验的角度去思考,当我们置身处地得把自己当做用户去玩一款应用时候,那么都会在意什么呢?假如正在玩一款手游,首先一定不希望玩着玩着突然闪退,然后就是不希望卡...
1.定义单例模式(Singleton),也叫单子模式,是一种常用的软件设计模式。在应用这个模式时,单例对象的类必须保证只有一个实例存在。许多时候整个系统只需要拥有一个的全局对象,这样有利于我们协调系统整体的行为。比如在某个服务器程序中,该服务器的配置信息存放在一个文件中,这些配置数据由一个单例对象统...
基本概念快速排序是非常流行、应用非常广泛的排序算法,而且实现简单,适用于各种不同的输入数据,在一般应用中比其他排序算法都要快很多。快速排序是基于分治思想的原地排序的排序算法,将长度为N的数组排序所需时间和NlgN成正比,而且内循环比大多数排序算法都要短小和简单,因此一般情况比其他排序算法效率高。它的...
这个问题虽然看起来很小,却并不那么容易回答。大家如果有更好的方法欢迎赐教,先来一个天真的估算方法:假设要求一个系统的TPS(Transaction Per Second或者Task Per Second)至少为20,然后假设每个Transaction由一个线程完成,继续假设平均每个线程处理一个Tra...
一、基本概念回溯法,又称为试探法,按选优条件向前不断搜索,以达到目标。但是当探索到某一步时,如果发现原先选择并不优或达不到目标,就会退回一步重新选择,这种达不到目的就退回再走的算法称为回溯法。与穷举法的区别和联系:相同点:它们都是基于试探的。区别:穷举法要将一个解的各个部分全部生成后,才检查是否满足...
写这篇总结,主要是记录下自己的学习经历,算是自己对知识的一个回顾。也给想要学习 Java 的提供一些参考,对于一些想要学习Java,又不知道从哪里下手,以及现在有哪些主流的 Java 技术。想必大家学习一门技术,前期都很想看到一些结果或成就,这样就比较容易激励自己学习下去,最好的办法就是实践,实践,...
爬虫基本流程发起请求通过HTTP库向目标服务器发送Request,Request内可以包含额外的headers信息。获取响应内容如果服务器正常响应,会返回Response, 里面包含的就是该页面的内容。解析数据内容或许是HTML,可以用正则表达式、网页解析库进行解析。或许是Json,可以直接转换为J...
如果待处理任务满足:可拆分,即任务可以被拆分为多个子任务,或任务是多个相同的任务的集合;任务不是CPU密集型的,如任务涉及到较多IO操作(如文件读取和网络数据处理)则使用多线程将任务并行运行,能够提高运行效率。假设待处理的任务为:有很多文件目录,对于每个文件目录,搜索匹配一个给定字符串的文件的所有行...
引言昨天和刚入行就带我的老领导相约北京酒吧,4年师徒情,7年未见,从老公司境况到老熟人的现状,到现在的工作,未来的发展。从当下的技术到新技术的展望,聊到数据库架构,我说我现在还是在做传统的数据库架构,而老领导满心的分布式,好像不是分布式都是比较LOW了,这里面依然存在着这样一个问题,什么是“分布式”...