自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(30)
  • 资源 (1)
  • 收藏
  • 关注

原创 Java基础面试问题(1)

1. List与Set的区别?都是Collection接口List特点:元素有放入顺序,可重复Set特点:元素放入无顺序,不可重复(虽然元素无放入顺序,但元素位置由hashcode决定,其实是固定的)List的三个实现类:LinkedList、ArrayList、VectorSet的两个实现类:HashSet(底层HashMap)、LinkedHashSet2. HashS...

2018-07-11 01:46:04 174

原创 线程杂项题

1. 死锁避免方法(1)注意加锁的顺序,加锁都用同一顺序。 (2)注意锁的超时机制2. 线程优先级(1)可以用setpriority设置优先级(1-10),自动对应操作系统的优先级。 (2)getState可以获取线程状态。3. 线程停止方法不推荐:Thread.stop 会恶意终止线程,破坏原子性。 推荐:Thread.interrupt 设置推出位,由对应...

2018-07-05 00:48:21 135

原创 Spring Bean的加载

Spring Bean的加载步骤值得研究下。1. 转换对应的BeanName从传入的beanName获取最终的beanName.2. 尝试从缓存中加载单例尝试从缓存中加载,如果没有,从singletonFactories中加载 原则:不能在bean创建完成后就将创建的ObjectFactory提前曝光到缓存中(为了避免循环依赖)3. bean的实例化从缓存种获取的...

2018-07-05 00:39:07 177

原创 Java类加载顺序

类加载顺序1.加载阶段 (1) 类的全限定名获取类的二进制流(代表静态存储结构转化为方法区运行时的数据结构) (2) 在Java堆生成java.lang.Class对象作为入口。 注:加载与连接交叉进行。2. 验证 (1) 校验字节流中的信息规范(文件格式、元数据、字节码、符号引用)3. 准备 (1) 给静态变量分配内存(方法区)并初始化为默认值 (2) ...

2018-06-28 01:47:22 158

原创 Sychonize用法

通用用法Java每个对象都可以作为锁 1. 普通同步方法,锁的是当前实例对象 2. 静态同步方法,锁的是当前class对象 3. 同步代码块,锁的是括号中的对象扩展 1. 不同对象的多线程是可以同时访问同一个synchronized方法(保护同一个对象的方法调用) 2. 不同的两个线程,可以其中1个访问sync保护的静态方法,另一个访问sync保护的实例方法。 保护的对象不同:...

2018-06-28 01:19:24 2083

原创 常见的RPC框架

常见的RPC框架RMIHessianDubboRMIRegistry其实充当了一个管理者,用于管理注册的API。 序列化和反序列化都用的是Java自带的。Hession基于HTTP协议传输,性能方面一般,负载均衡和失效转移依赖应用的负载均衡。显式调用方式,淡化Registry角色。 DubboZookeeper作为Dubbo服务的注册中心,Dubbo...

2018-06-27 01:35:22 941

原创 Java引用类型解读

Java 引用类型强引用软引用弱引用虚引用基本概念强引用:不会被回收,内存不足会OOM,置为Null后可以被回收 使用方式:Object obj = new Object();软引用:非必须,但还有用的对象,例如缓存。 使用方式:使用SoftReference创建,内存不足会回收。弱引用: 描述非必须对象。 使用方式:使用WeakReference创建,一...

2018-06-26 01:30:04 168

原创 多线程同步器AQS

介绍AQS是AbstractQueuedSynchronizer的缩写,AbstractQueuedSynchronizer类是很多cuncurrent.lock是包中的Lock的实现类,常见的ReentrantLock(可重入锁)、ReadWriteLock(读写锁)。public abstract class AbstractQueuedSynchronizer extends Abst

2017-08-16 00:57:14 276

原创 线程池原理

避免每次新起线程对内存的消耗,降低资源消耗,提高内存利用率,使用线程池将线程管理起来。线程池 Executor// 基础用法public class ExecutorTest { public static void main(String[] args) { // 可伸缩的线程池 大小为10 Executor executor = Executors.ne

2017-08-09 02:06:28 313

原创 多线程相关

1. 线程池实现2. coreNum和maxNum的区别3. 实际场景的线程池设置

2017-08-08 23:14:37 234

原创 Java面试题整理

感觉看了一段时间的书,好多知识点也记得不牢,Java知识点博大精深,好多知识点还是需要面试题来进行练习才能巩固。 按照不同方向整理Java方向的面试题,希望后续能有所突破Java基础方向数据库方向JVM方向多线程框架方向

2017-08-08 00:49:00 257

原创 模板模式

概念模板模式很简单,通过名字都能明白,设定好需要实现的方法,在子类中实现定义的方法。类图实现算法//---------------------------基础模板-----------------------public abstract class BaseTemplate { public abstract void showA(); public abstract void

2017-07-13 01:19:11 291

原创 数据库锁机制

概念为了保证数据的完事性和一致性,数据库系统采用锁来实现事务的隔离性。锁的种类共享锁共享锁又称读锁,是读取操作创建的锁。其他用户可以并发读取数据,但任何事务都不能对数据进行修改(获取数据上的排他锁),直到已释放所有共享锁。 获取共享锁的事务只能读取数据,不能修改数据 使用 SELECT …. LOCK IN SHARE MODE 在没有排它锁的情况下,能够获取共享锁。更新锁防止死锁用的,更新

2017-07-12 00:41:21 322

原创 泛型

定义泛型是Java SE 1.5的新特性,本质是参数化类型,也就是说所操作的数据类型被指定为一个参数,这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。 好处:安全,简单,可以将运行时错误提前到编译时错误。 泛型的好处是在编译时检查类型安全,并且所有自动转换都是自动的和隐式的,提高代码重用率。泛型接口public interface Map<K,V> { p

2017-07-11 01:33:46 259

原创 封装+继承+多态-零星知识点

封装继承多态的基本概念就不介绍了。主要介绍一些不熟悉的知识点。向上转型导出类可以转型为基类,总是安全的,唯一可能发生的就是丢失方法。封装多态区别封装:通过合并特征和行为来创建新的数据类型。多态:消除类型之间的耦合关系。覆盖私有方法只有非private方法才可以被覆盖。 只有普通方法调用可以是多态的,域访问与静态方法都不是多态的。多态分为两种类型编译时多态(重载)运行时多态(继承时的方法重

2017-07-11 01:14:29 334

原创 数据库视图

定义(From 百科)视图(View)是从一个或多个表(或视图)导出的表。视图与表(有时为与视图区别,也称表为基本表——Base Table)不同,视图是一个虚表,即视图所对应的数据不进行实际存储,数据库中只存储视图的定义,在对视图的数据进行操作时,系统根据视图的定义去操作与视图相关联的基本表。 视图是虚表,是从一个或几个基本表(或视图)中导出的表,在系统的数据字典中仅存放了视图的定义,不存放视图

2017-07-10 00:03:12 274

原创 数据库范式

设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。第一范式(1NF)符合1NF的关系中的每个属性都不可再分。每一列都是原子性。所有关系型数据库最少要满足的情况。 比如下表: ID 姓名 专业 年级 老师 1 小明 计算机 3 赵宏宇 2 小红 生物

2017-07-09 00:27:09 175

原创 数据库索引 + 执行计划

基本概念索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息(From 百科) 索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。 其实可以这么理解,索引就等于是字典的查询目录,你是在字海里查东西快还是通过查询目录来查询快呢,显而易见。 索引种类:聚簇索引和非聚簇索引,聚簇索引是按照数据存放的

2017-07-07 01:03:45 726

原创 数据库事务

定义(From 百科)数据库事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。一个逻辑工作单元要成为事务,必须满足所谓的ACID (原子性、一致性、隔离性和持久性) 属性。事务是数据库运行中的逻辑工作单位,由DBMS中的事务管理子系统负

2017-07-06 00:36:51 407

原创 Java 装饰模式

装饰模式动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活。 盗图(^_^) Component是定义了一个对象接口,可以诶这些uixiang动态添加职责。ConcreteComponent是定义了一个具体对象,也可以给这个对象添加一些职责,Decorator,装饰抽象类,继承了Component,从外类来扩展Component类功能,Component无需知道D

2017-07-05 23:26:32 284

转载 数据库中的各种键

超键在关系中能唯一标识元组的属性集称为关系模式的超键。 一个属性可以为作为一个超键,多个属性组合在一起也可以作为一个超键。超键包含候选键和主键。候选键是最小超键,即没有冗余元素的超键。主键数据库表中对储存数据对象予以唯一和完整标识的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空值(Null)。外键在一个表中存在的另一个表的主键称此表的外键。例子假设有如下两个表:学

2017-07-05 00:52:23 6774

原创 工厂模式

工厂模式是常见的设计模式,包含简单工厂、工厂方法、抽象工厂。 由于简单工厂比较简单,故主要介绍工厂方法和抽象工厂。工厂方法特点一个工厂创建一个产品,工厂和产品是一对一的关系。 盗图(^_^) 个人示例代码-----------------产品接口类------------------public interface IProduct { public void show();}--

2017-07-05 00:23:57 257

原创 存储过程简介

存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,存储在数据库中,经过第一次编译后再次调用不需要再次编译,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。 按照理解,存储过程可以理解为数据库中的函数,函数中有很多SQL语句集,可以输入参数来执行。存储过程--------------创建存

2017-07-04 22:55:22 187

原创 单例模式

单例模式是设计模式中最简单的一种模式,特点是类被创建后,只可能产生一个实例供外部访问,并且提供一个全局的访问点。 单例模式有很多变型,下面介绍不同的几个单例模式。饿汉式优点:简单,线程安全,无同步开销缺点:浪费内存,类加载的时候就会分配内存package SingleTon;/** * 饿汉式单例 */public class HungrySingleTon { // 私有的构造方法

2017-07-04 00:04:21 221

原创 容器类

基本概念Collection 一个独立元素序列 List:顺序保存元素Set:不能有重复的元素、Queue:按照排队规则确定对象产生的顺序Map 一组成对“键值对”对象。部分常用方法Arrays.asList():接受一个数组或一个用逗号分隔的元素列表。 Collection.addAll():接受另一个Collection,速度快。List={LinkedListArrayLi

2017-05-25 02:04:19 239

原创 枚举

枚举(enum)类型是Java 5新增的特性,它是一种新的类型,允许用常量来表示特定的数据片断,而且全部都以类型安全的形式来表示。基本方法values():返回enum实例数组。 ordinal():返回声明时的次序,从0开始。 enum必须先定义实例,才能定义方法。原理性1.创建实际Enum类时,编译器会为其添加valueOf方法以及values方法。 2.编译器会将Enum标记为final

2017-05-10 00:45:08 236

原创 类与对象

主要介绍类与对象的一些基础知识介绍了java动态代理的使用方法

2017-05-04 01:28:51 216

原创 常见字符串类

常见字符串类StringStringBufferStringBuilder作用String: 不可变字符串,底层使用的是字符数组保存的字符串private final char value[]StringBuffer:可变字符串,继承自AbstractorBuilder,可变长,底层也是字符串数组private char value[]StringBuilder:可变字符串,继承自Abstr

2017-04-26 22:16:32 1235

原创 Java异常

Java异常异常定义是组织当前方法或作用于继续执行的问题。异常分类Error 不能捕获的严重问题Exception 可捕获的异常异常分布图按照Checked和UnChecked划分checked异常正确的运行中,容易出现的,情理可容的异常,一旦发生必须处理。除了RuntimeException以外的Exception,编译器会检查,必须处理(捕获或抛出声明)。unchecked异常Runtim

2017-04-25 00:34:35 233

原创 JAVA 反射

Java 反射机制本文主要是学习反射的一些核心知识点反射概念JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性。反射支持Class类库与java.lang.reflect类库一起支持反射,包含了Field、Method以及Constructor类。 Class.forName()在编译器不可知。反射作用1.获取类// 方

2017-04-21 01:18:00 212

求字符串中出现相同且长度最长字符串

输入一行字符串,找出其中出现的相同且长度最长的字符串,输入它及其首字符的位置。例如“yyabcdabjcabceg”,输出结果应该为abc和3.

2011-10-21

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除