
架构面试
文章平均质量分 84
即刻出发
有梦想才能走得更远,才会有动力提升自己。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JDK1.5新增的功能
JDK1.5新增的功能 "JDK1.5"的一个重要主题就是通过新增一些特性来简化开发,这些特性包括泛型,for-each 循环,自动装包/拆包,枚举,可变参数, 静态导入 。使用这些特性有助于我们编写更加清晰,精悍,安全的代码。 下面我们简单介绍一下这些新特性。 1.泛型(Generic) C++通过模板技术可以指定集合的元素类型,而Java在1.5之前一直没有相对应的原创 2015-04-02 09:58:11 · 399 阅读 · 0 评论 -
spring - ioc和aop
1.程序中为什么会用到spring的ioc和aop 2.什么是IOC,AOP,以及使用它们的好处,即详细回答了第一个问题 3.原理 关于1: a:我们平常使用对象的时候,一般都是直接使用关键字类new一个对象,那这样有什么坏处呢?其实很显然的,使用new那么就表示当前模块已经不知不觉的和 new的对象耦合了,而我们通常都是更高层次的抽象模块调用底原创 2015-04-15 09:27:00 · 517 阅读 · 0 评论 -
字符常见的几种编码方式
无论在是在编辑文本文件的时候,还是在制作网页的时候,总会遇到文本编码方式的问题。如果处理不当,就会出现乱码的问题。因此,有必要对文本的编码方式做一个详尽的了解。 常见的一些字符编码方式无非有:Unicode、ASCII、GBK、GB2312、UTF-8。下面先对常见的这一些字符编码方式作下说明: 1.ASCII码 这是美国在19世纪60年代的时候为了建立英文字符和二进制的关系时制原创 2015-04-14 15:54:49 · 2440 阅读 · 0 评论 -
内连接,外连接,左连接,右连接,全连接,内连接,交叉连接,自连接
(一) 内连接 内连接,inner join,join 查询操作列出与连接条件匹配的数据行,它使用比较运算符比较被连接列的 列值。内连接分三种: 1.等值连接 2.不等值连接 3.自然连接 (二) 外连接 外连接,返回到查询结果集合中的不仅包含符合连接条件的行,而且还包括左表(左 外连接或左连接))、右表(右外连接或右连接)或两个边接表(全外连接)原创 2015-04-08 13:43:48 · 1037 阅读 · 0 评论 -
hash算法的实现原理,hashcode的实现原理
1. 引言 哈希表(Hash Table)的应用近两年才在NOI中出现,作为一种高效的数据结构,它正在竞赛中发挥着越来越重要的作用。 哈希表最大的优点,就是把数据的存储和查找消耗的时间大大降低,几乎可以看成是常数时间;而代价仅仅是消耗比较多的内存。然而在当前可利用内存越来越多的情况下,用空间换时间的做法是值得的。另外,编码比较容易也是它的特点之一。 哈希表又叫做散原创 2015-04-08 11:33:05 · 469 阅读 · 0 评论 -
数据库设计三大范式
为了建立冗余较小、结构合理的数据库,设计数据库时必须遵循一定的规则。在关系型数据库中这种规则就称为范式。范式是符合某一种设计要求的总结。要想设计一个结构合理的关系型数据库,必须满足一定的范式。 在实际开发中最为常见的设计范式有三个: 1.第一范式(确保每列保持原子性) 第一范式是最基本的范式。如果数据库表中的所有字段值都是不可分解的原子值原创 2015-04-14 15:11:39 · 394 阅读 · 0 评论 -
Java 二叉树排序
创建节点类: package org.binary; public class Node { Node left; Node right; int data; public Node(int data) { this.data = data; } } 创建二叉树操作类: package org.b原创 2015-04-14 11:36:35 · 412 阅读 · 0 评论 -
JAVA深入研究——Method的Invoke方法。
在写代码的时候,发现Method可以调用子类的对象,但子类即使是改写了的Method,方法名一样,去调用父类的对象也会报错,虽然这是很符合多态的现象,也符合java的动态绑定规范,但还是想弄懂java是如何实现的,就学习了下Method的源代码。 Method的invoke方法 1.先检查 AccessibleObject的override属性是否为true。 Accessibl原创 2015-04-15 10:46:14 · 721 阅读 · 0 评论 -
冒泡排序
public class SortTest { public void sort(int[] args){ for(int m : args){ System.out.print("排序前 "+args[m]+" "); } int time1 = 0,time2 = 0; for(int i = 0 ; i < args.length-1 ; i++){原创 2015-04-09 11:53:06 · 374 阅读 · 0 评论 -
使用静态工厂方法的好处和坏处
一个模块的使用者永远也不应该被模块的行为所迷惑(那样就不清晰了),模块要尽可能的小,但又不能太小【术语模块(module):是指任何可重用的软件组件,从单个方法到包含多个包的复杂系统都可以是一个模块】。代码应该被重用,而不是拷贝,模块之间的相依性应该尽可能降低到最小,错误应该尽早被检测出来,理想的情况下是在编译的时刻。 NO.1 考虑用静态工厂方法代替构造函数 静态工厂方法原创 2015-04-08 23:34:06 · 611 阅读 · 0 评论 -
常用的排序算法的时间复杂度和空间复杂度
常用的排序算法的时间复杂度和空间复杂度 排序法 最差时间分析 平均时间复杂度 稳定度 空间复杂度 冒泡排序 O(n2) O(n2) 稳定 O(1) 快速排序 O(n2) O(n*log2n) 不稳定 O(log2n)~O(n) 选择排序 O(n2) O(n2) 稳定 O(1) 二叉树排序 O(n原创 2015-04-09 10:58:19 · 467 阅读 · 0 评论 -
java实现快速排序
快速排序的基本思想: 通过一趟排序将待排序记录分割成独立的两部分,其中一部分记录的关键字均比另一部分关键字小,则分别对这两部分继续进行排序,直到整个序列有序。 先看一下这幅图: 把整个序列看做一个数组,把第零个位置看做中轴,和最后一个比,如果比它小交换,比它大不做任何处理;交换了以后再和小的那端比,比它小不交换,比他大交换。这样循环往复原创 2015-04-09 14:20:04 · 383 阅读 · 0 评论 -
序列化的作用,应用场景,除了网路传输
关于更多java序列化的问题可以参见JAVA系列之对象的序列化与反序列化 Java的序列化机制只序列化对象的属性值,而不会去序列化什么所谓的方法。其实这个问题简单思考一下就可以搞清楚,方法是不带状态的,就是一些指令,指令是不需要序列化的,只要你的JVM classloader可以load到这个类,那么类方法指令自然就可以获得。序列化真正需要保存的只是对象属性的值,和对象的类型。原创 2015-04-14 16:47:44 · 2716 阅读 · 0 评论 -
hash算法的实现原理,hashcode的实现原理趣解
这个问题有点难度,不是很好说清楚。 我来做一个比喻吧。 我们有很多的小猪,每个的体重都不一样,假设体重分布比较平均(我们考虑到公斤级别),我们按照体重来分,划分成100个小猪圈。 然后把每个小猪,按照体重赶进各自的猪圈里,记录档案。 好了,如果我们要找某个小猪怎么办呢?我们需要每个猪圈,每个小猪的比对吗? 当然不需要了。 我们先看看要找的这个小猪的体重,然后就找原创 2015-04-08 11:50:36 · 669 阅读 · 0 评论 -
一个JDK1.5的新特性:枚举学习笔记
枚举 枚举就是一个特殊的类。可以有若干公有方法或抽象方法。采用抽象方法定义nextDay就将大量的if.else语句转移成了一个个独立的类。 枚举的构造方法等其他信息必须放在成员类表之后,而且枚举的构造方法必须是私有的。 有多个构造方法时,枚举元素后面跟上一对大括号就表示构造枚举元素指向的是哪个构造方法。有带参数的构造方法,还有不带参数的构造方法。 枚举元素MON和MON(原创 2015-04-02 10:38:16 · 465 阅读 · 0 评论 -
java反射机制详解 及 Method.invoke解释 getMethod
JAVA反射机制 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 Java反射机制主要提供了以下功能: 在运行时判断任意一个对象所属的类;在运行时构造任意一个类的对象;在运行时判断任意一个类所具有的成员变量和方法;在运行时调用任意一个对原创 2015-04-02 11:01:29 · 428 阅读 · 0 评论 -
FileInputStream/FileOutputStream的应用
这是一对继承于InputStream和OutputStream的类,用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象); 本地文件读写编程的基本过程为: ① 生成文件流对象(对文件读操作时应该为FileInputStream类,而文件写应该为FileOutputStream类); ② 调用FileInputStream或FileOutputS原创 2015-04-03 17:17:58 · 394 阅读 · 0 评论 -
字符流和字节流的区别,使用场景,相关类
Java 流在处理上分为字符流和字节流。字符流处理的单元为 2 个字节的 Unicode 字符,分别操作字符、字符数组或字符串,而字节流处理单元为 1 个字节,操作字节和字节数组。 Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。而类 InputStreamReader 和 OutputStreamWr原创 2015-04-03 11:18:52 · 462 阅读 · 0 评论 -
线程安全的概念,实现线程安全的几种方法
Java 编程语言为编写多线程应用程序提供强大的语言支持。但是,编写有用的、没有错误的多线程程序仍然比较困难。本文试图概述几种方法,程序员可用这几种方法来创建高效的线程安全类。 并发性 只有当要解决的问题需要一定程度的并发性时,程序员才会从多线程应用程序中受益。例如,如果打印队列应用程序仅支持一台打印机和一台客户机,则不应该将它编写为多线程的。一般说来,包含并发性的编码问题通常都包含一原创 2015-04-07 11:32:59 · 6408 阅读 · 0 评论 -
接口与抽象类
1、首先不要想接口与抽象类的区别,而要采用逆向思维,即是什么原因导致了他们的区别。 2、接口和抽象类的使用场景不同,也就是说,接口和抽象类是针对不同的使用场景而设计的。我们站在接口和抽象类的设计者的角度来看待这个问题。 3、接口的使用场景是:完全抽象,仅仅声明特征(能完成某些任务),不给出任何实现。 抽象类的使用场景是:部分抽象,给出部分实现。 4、接口的使用场景原创 2015-04-07 23:53:21 · 359 阅读 · 0 评论 -
ISP简介(ISP--Interface Segregation Principle)
一、ISP简介(ISP--Interface Segregation Principle): 使用多个专门的接口比使用单一的总接口要好。 一个类对另外一个类的依赖性应当是建立在最小的接口上的。 一个接口代表一个角色,不应当将不同的角色都交给一个接口。没有关系的接口合并在一起,形成一个臃肿的大接口,这是对角色和接口的污染。 “不应该强迫客户依赖原创 2015-04-08 00:05:04 · 749 阅读 · 0 评论 -
java抽象类和接口的区别,使用场景
在Java语言中, abstract class 和interafce是支持抽象类定义的两种机制。正是由于这两种机制的存在,才赋予了Java强大的 面向对象能力。abstract class和interface之间在对于抽象类定义的支持方面具有很大的相似性,甚至可以相互替换,因此很多开发者在进 行抽象类定义时对于abstract class和interface的选择显得比较随意。其实,两者之间还是原创 2015-04-07 23:52:11 · 809 阅读 · 0 评论 -
选择排序
一. 算法描述 选择排序:比如在一个长度为N的无序数组中,在第一趟遍历N个数据,找出其中最小的数值与第一个元素交换,第二趟遍历剩下的N-1个数据,找出其中最小的数值与第二个元素交换......第N-1趟遍历剩下的2个数据,找出其中最小的数值与第N-1个元素交换,至此选择排序完成。 以下面5个无序的数据为例: 56 12 80 91 20(文中仅细化了第一趟的选择过程)原创 2015-04-10 16:24:37 · 406 阅读 · 0 评论 -
error和exception的区别,RuntimeException和非RuntimeException的区别
1. 异常机制 异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。 传统的处理异常的办法是,函数返回一个特殊的结果来表示出现异常(通常这个特殊结果是大家约定俗称的),调用该函数的程序负责检查并分析函数返回的结果。这样做有如下的弊端:例如函数返回-1代表出现异常原创 2015-04-08 13:43:09 · 459 阅读 · 0 评论 -
Java 继承与组合的区别
根据网络上大家对继承和组合的讨论,我简单总结以下几点: 1)组合(has-a)关系可以显式地获得被包含类(继承中称为父类)的对象,而继承(is-a)则是隐式地获得父类的对象,被包含类和父类对应,而组合外部类和子类对应。 2)组合关系在运行期决定,而继承关系在编译期就已经决定了。 3)组合是在组合类和被包含类之间的一种松耦合关系,而继承则是父类和子类之间的一种紧耦合关系。 4原创 2015-04-08 23:31:44 · 392 阅读 · 0 评论 -
JAVA EE架构师 需要具备的知识
1、构架师胚胎(程序员) 学习的知识是语言基础、设计基础、通信基础等,应该在大学完成,内容包括java、c、c++、uml、RUP、XML、socket通信(通信协议)——学习搭建应用系统所必须的原材料。 2、构架师萌芽(高级程序员) 学习分布式系统、组建等内容,可以在大学或第一年工作时间接触,包括分布式系统原理、ejb、corba、com/com+、webservice(研究生原创 2015-05-26 16:13:34 · 818 阅读 · 0 评论