Java 基础学习
1. java 基础
狂奔岻蜗牛
坚持
展开
-
eclipse常用快捷键
Ctrl+1快速修复(最经典的快捷键,就不用多说了)Ctrl+D:删除当前行Ctrl+Alt+↓复制当前行到下一行(复制增加)Ctrl+Alt+↑复制当前行到上一行(复制增加)Alt+↓当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑当前行和上面一行交互位置(同上)Alt+←前一个编辑的页面Ctrl+/注释当前行,再按则取消注释Ctrl+O快速显示Ou...原创 2014-06-14 16:37:46 · 467 阅读 · 0 评论 -
JSTL 核心标签库标签
JSTL 核心标签库标签共有13个,功能上分为4类:1.表达式控制标签:out、set、remove、catch2.流程控制标签:if、choose、when、otherwise3.循环标签:forEach、forTokens4.URL操作标签:import、url、redirect使用标签时,一定要在jsp文件头加入以下代码:<%@taglib prefix="...原创 2014-06-20 22:26:39 · 441 阅读 · 0 评论 -
Jsp和servlet的编译过程、原理、区别
jsp:1、客户端发送请求给服务器2、服务器将jsp转换为servlet源文件3、将servlet转换成.Class文件4、执行.class文件5、生成静态文件返回给客户端注:如果不是第一次访问,则省略2、3步servlet:使用servlet基本流程1、客户端通过Http提出请求2、web服务器接受请求并转发给servlet3、servlet接受请求并...原创 2014-08-18 21:23:08 · 687 阅读 · 0 评论 -
javaweb学习总结(七)——HttpServletResponse对象(一)
Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表请求的request对象、和代表响应的response对象。request和response对象即然代表请求和响应,那我们要获取客户机提交过来的数据,只需要找request对象就行了。要向客户机输出数据,只需要找response对象就行了。一、HttpServletResponse对象介绍 HttpSe...原创 2015-11-11 15:04:01 · 409 阅读 · 0 评论 -
Java 数据基本类型
整形 类型 字节 取值范围 int 4字节 short 2字节 -32768~32767 long 8字节 byte 1字节 -128 ~~ 127 浮点型 float 4字节 double 8字节 char类型 char 2字节 bool...原创 2019-05-16 17:39:44 · 56 阅读 · 0 评论 -
Set、List、Map的区别和联系
1. 我们先来分析一下他的层级结构对于 Iterator 和 Conllection 就不在赘述,下面总结一下Set、List、Map 之间的区别和联系一、Set 1. Set接口同样是Collection接口的一个子接口,它表示数学意义上的集合概念。Set中不包含重复的元素,即Set中不存两个这样的元素e1和e2,使得e1.equals(e2)为true。由于Set接口提...原创 2019-05-16 18:07:35 · 386 阅读 · 0 评论 -
Java学习(32) -- 并发编程(synchronized)
一、synchronized是如何实现的如果你使用反编译工具查看synchronized代码块,会发现是由一对儿monitorentry/monitorexit指令实现的,Monitor对象是同步的基本实现单元。二、synchronized 和lock之间的关系1、ReentrantLock 拥有Synchronized相同的并发性和内存语义,此外还多了 锁投票,定时锁等候和中断锁等...原创 2019-11-06 11:41:33 · 95 阅读 · 0 评论 -
Java学习(31) -- 并发编程(锁)
一、CAShttps://blog.csdn.net/mmoren/article/details/79185862二、乐观锁与悲观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。传统的关系型数据库里边就用到了很多这种锁机制,比如行锁,表锁等,读锁,写锁等,都是在做操作之前先上锁。再比如Java...原创 2019-06-10 16:58:30 · 123 阅读 · 0 评论 -
Java学习(30) -- 并发编程(线程安全)
一、死锁死锁概念及产生原理概念:多个并发进程因争夺系统资源而产生相互等待的现象。原理:当一组进程中的每个进程都在等待某个事件发生,而只有这组进程中的其他进程才能触发该事件,这就称这组进程发生了死锁。本质原因:1)、系统资源有限。2)、进程推进顺序不合理。死锁产生的4个必要条件1、互斥:某种资源一次只允许一个进程访问...原创 2019-06-10 15:56:46 · 141 阅读 · 0 评论 -
Java学习(29) -- 并发编程(线程)
一、什么是线程线程是一个程序的顺序控制流;二、线程与进程的区别1)每个进程都有独立的代码和数据空间(进程上下文),进程的切换会有较大的开销;2)线程可以看做轻量级的进程,同一类线程共享代码和数据空间,每个线程都有独立的运行栈和程序计数器(PC),线程切换开销小;3)多进程:在操作系统中能同时运行多个任务(程序);4)多线程:在同一进程内有多个顺序流执行;三、线程的状态...原创 2019-06-05 10:37:27 · 195 阅读 · 0 评论 -
Java学习(29) -- 并发编程(并发与并行)
一、什么是并发指应用能够交替执行不同的任务,其实并发有点类似于多线程的原理,多线程并非是同时执行多个任务,如果你开两个线程执行,就是在你几乎不可能察觉到的速度不断去切换这两个任务,已达到"同时执行效果",其实并不是的,只是计算机的速度太快,我们无法察觉到而已.二、什么是并行指应用能够同时执行不同的任务,例:吃饭的时候可以边吃饭边打电话,这两件事情可以同时执行三、并发与并行的区别...原创 2019-06-05 09:48:57 · 269 阅读 · 0 评论 -
Java学习(28) -- 源码阅读(HashSet&LinkedHashSet&TreeSet)
一.HashSet特点:1.HashSet中不能有相同的元素,可以有一个Null元素,存入的元素是无序的。2.HashSet如何保证唯一性?1).HashSet底层数据结构是哈希表,哈希表就是存储唯一系列的表,而哈希值是由对象的hashCode()方法生成。2).确保唯一性的两个方法:hashCode()和equals()方法。3.添加、删除操作时间复杂度都是O(1)。...原创 2019-06-04 16:20:03 · 154 阅读 · 0 评论 -
Java学习(27) -- 源码阅读(HashMap&LinkedHashMap&TreeMap&&CouncurrentHashMap)
先占个位置,后续来完善原创 2019-06-04 16:17:27 · 159 阅读 · 2 评论 -
Java学习(26) -- 源码阅读(ArrayList)
阅读目录(Content)一、ArrayList简介 1.1、ArrayList概述 1.2、ArrayList的数据结构 二、ArrayList源码分析 2.1、继承结构和层次关系 2.2、类中的属性 2.3、构造方法 2.4、核心方法 2.4.1、add()方法(有四个) 2.4.2、删除方法 2.4.3、set()方法 2...转载 2019-06-04 15:37:52 · 95 阅读 · 0 评论 -
Java学习(25) -- 源码阅读(ThreadLocal)
想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对ThreadLocal的理解 二.深入解析ThreadLocal类 三.Threa...转载 2019-06-04 11:23:51 · 119 阅读 · 0 评论 -
Java学习(24) -- 源码阅读(BigDecimal)
一、java 中使用什么操作金额?float,double?因为float和double都是浮点数, 都有取值范围, 都有精度范围. 浮点数与通常使用的小数不同, 使用中, 往往难以确定. 常见的问题是定 义了一个浮点数, 经过一系列的计算, 它本来应该等于某个确定值, 但实际上并不是! 金额必须是完全精确的计算, 故不能使用double或者float, 而应该采用java.math.BigD...原创 2019-06-04 09:52:13 · 612 阅读 · 0 评论 -
Java学习(23) -- 源码阅读(Enum)
package java.lang;import java.io.Serializable;import java.io.IOException;import java.io.InvalidObjectException;import java.io.ObjectInputStream;import java.io.ObjectStreamException;/*声明方法的描述...转载 2019-06-03 19:13:32 · 162 阅读 · 0 评论 -
Java学习(22) -- 源码阅读(Long)
/** * auther: jiyx * date: 2018/9/18. */public class Long extends Number implements Comparable { /** * 最小值,-2的63次方 */ @Native public static final long MIN_VALUE = 0x80000000...转载 2019-06-03 19:06:13 · 363 阅读 · 1 评论 -
Java学习(21) -- 源码阅读(Integer)
一、Integer简单介绍1)、由于类修饰符中有关键字final,故该类不能够被继承2)、继承了抽象类Number3)、实现了接口Comparable,即实现了compareTo方法4)、重写了hashCode和equals方法,其中hashCode是value,而equals只是比较同种类型的intValue的值二、属性//值为 (-(2的31次方)) 的常量,它表示 i...原创 2019-06-02 10:20:10 · 164 阅读 · 0 评论 -
Java学习(20) -- 源码阅读(String)
一、String以下几个特性决定它是不可变的1、`String`是`final`类,不可继承。2、字符数组成员变量`value`使用`final`修饰,也就是常量,常量一大好处就是线程安全,所以`String`不需要考虑线程安全问题。3、通过反射还是可以修改value常量值的,这时候会发现如果字符串是在常量池里,那么这个常量池字符串将会被修改成其他值。4、成员变量`value`字符数组必...原创 2019-06-02 09:46:34 · 127 阅读 · 0 评论 -
Java学习(19) -- 语法糖
一、java中的语法糖原理语法糖(Syntactic sugar),也译为糖衣语法,是由英国计算机科学家彼得·兰丁发明的一个术语,指计算机语言中添加的某种语法,这种语法对语言的功能没有影响,但是更方便程序员使用。语法糖让程序更加简洁,有更高的可读性。Java中的泛型,变长参数,自动拆箱/装箱,条件编译等都是二、解语法糖java中的语法糖只存在于编译期, 在编译器将 .java 源文...转载 2019-05-30 14:59:07 · 232 阅读 · 0 评论 -
Java学习(18) -- 编码方式
一、UnicodeUnicode(统一码、万国码、单一码)是计算机科学领域里的一项业界标准,包括字符集、编码方案等。Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。二、有了Unicode 为什么还需要UTF-8互联网的普及,强烈要求出现一种统一的编码方式。UTF-8 就是...原创 2019-05-30 14:19:22 · 548 阅读 · 0 评论 -
Java学习(17) -- 异常
一、异常类型1)java 分为异常和错误,错误不可处理,异常是可以处理的,他们都继承Throwable.2) 异常分为IO异常和运行是异常3)可以自定义异常二、正确处理异常在编写代码处理异常时,对于检查异常,有2种不同的处理方式:使用try…catch…finally语句块处理它。或者,在函数签名中使用throws 声明交给函数调用者caller去解决。三、自定义异常...原创 2019-05-30 10:38:47 · 122 阅读 · 0 评论 -
Java学习(16) -- API & SPI
Java 中区分 API 和 SPI,通俗的讲:API 和 SPI 都是相对的概念,他们的差别只在语义上,API 直接被应用开发人员使用,SPI 被框架扩展人员使用一、API大多数情况下,都是实现方来制定接口并完成对接口的不同实现,调用方仅仅依赖却无权选择不同实现。关注使用,不关注具体实现并改变实现方式;二、SPI而如果是调用方来制定接口,实现方来针对接口来实现不同的实现...原创 2019-05-29 11:25:48 · 132 阅读 · 0 评论 -
Java学习(15) -- 正则表达式
Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如Hello World正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。下表列出了一...转载 2019-05-29 11:07:14 · 121 阅读 · 0 评论 -
Java学习(14) -- 单元测试
一、junithttps://blog.csdn.net/fulishafulisha/article/details/80158392二、mockhttps://www.cnblogs.com/zjoch/p/6565956.html三、mockitohttps://www.cnblogs.com/wangtj-19/p/5822369.html四、内存数据库http...原创 2019-05-29 11:02:25 · 126 阅读 · 0 评论 -
Java学习(13) -- 泛型
一、什么是泛型 泛型,即“参数化类型”。一提到参数,最熟悉的就是定义方法时有形参,然后调用此方法时传递实参。那么参数化类型怎么理解呢?顾名思义,就是将类型由原来的具体的类型参数化,类似于方法中的变量参数,此时类型也定义成参数形式(可以称之为类型形参),然后在使用/调用时传入具体的类型(类型实参)。 泛型的本质是为了参数化类型(在不创建新的类型的情况下...原创 2019-05-29 10:47:52 · 103 阅读 · 0 评论 -
Java学习(12) -- JMX
一、什么是JMX在 Java 5.0 中,类库和和 JVM 提供了一种全面的管理和监视基础设施——JMX。JMX 是一种用来提供可以远程访问的管理接口的标准措施,也是一种向应用程序添加灵活且强大的管理接口的简易方式。被称作受管 bean(MBean)的 JMX 组件,是提供与实体的管理有关的访问器和业务方法的 JavaBean。具体情况请阅读1) java.lang.man...原创 2019-05-28 18:02:40 · 144 阅读 · 0 评论 -
Java学习(11) -- JMS
1)什么是java消息服务java消息服务(Java Message Service, JMS)是一个允许应用创建、发送、接收和读取消息的Java API2)JMS消息传送模型JMS应用由以下部分组成 JMS提供者:是一个实现JMS接口的消息传送系统,提供管理和控制特性 JMS客户端:是用Java编程语言编写的程序和组件,可以生成(生产)和使用(消费)消息 消息:是在JMS...原创 2019-05-28 17:46:37 · 211 阅读 · 0 评论 -
Java学习(10) -- 注解
一、元注解元注解是指注解的注解,包括@Retention @Target @Document @Inherited四种。@Target:表示该注解可以用于什么地方,可能的ElementType参数有:CONSTRUCTOR:构造器的声明FIELD:域声明(包括enum实例)LOCAL_VARIABLE:局部变量声明METHOD:方法声明PACKAGE:包声明PARAMETER:参数声明...原创 2019-05-28 17:29:05 · 258 阅读 · 0 评论 -
Java学习(9) -- 序列化
一、 什么是序列化和反序列化对象序列化是一个用于将对象状态转换为字节流的过程,可以将其保存到磁盘文件中或通过网络发送到任何其他程序;从字节流创建对象的相反的过程称为反序列化。而创建的字节流是与平台无关的,在一个平台上序列化的对象可以在不同的平台上反序列化。二、为什么序列化(1)永久性保存对象,保存对象的字节序列到本地文件或者数据库中;(2)通过序列化以字节流的形式使对象在网...原创 2019-05-28 10:58:36 · 165 阅读 · 0 评论 -
Java学习(8) -- 动态代理
一、动态代理和静态代理1.静态代理//静态代理实现//共同接口public interface Action { public void doSomething();}//对象public class RealObject implements Action{ public void doSomething() { System.out.pr...原创 2019-05-28 09:52:29 · 174 阅读 · 0 评论 -
Java学习(7) -- 反射
一、 什么是反射 Java反射说的是在运行状态中,对于任何一个类,我们都能够知道这个类有哪些方法和属性。对于任何一个对象,我们都能够对它的方法和属性进行调用。我们把这种动态获取对象信息和调用对象方法的功能称之为反射机制。二、反射与工厂模式工厂模式一般有两类,一类是工厂方法模式,另一类是抽象工厂模式。但是《head first 设计模式》中,通过某些例子,实际...原创 2019-05-27 18:16:25 · 113 阅读 · 0 评论 -
Java学习(6) -- IO详解
一、字符流、字节流 字符流的由来: 因为数据编码的不同,而有了对字符进行高效操作的流对象。本质其实就是基于字节流读取时,去查了指定的码表。 Java 内用 Unicode 编码存储字符,字符流处理类负责将外部的其他编码的字符流和 java 内 Unicode 字符流之间的转换。字节流和字符流的区别:(1)读写单位不同:字节流以字节(8bit)为单位,字符流以字符为单...原创 2019-05-27 17:53:17 · 209 阅读 · 0 评论 -
Java学习(5) -- 枚举详解
一、枚举的用法1)常量使用public enum EnumTest { ONE,TWO}2)自定义函数使用public enum EnumTest { ONE("ONE","1"),TWO("TWO","2"); private String key; private String value; private EnumTest(String key, String...原创 2019-05-26 09:28:42 · 388 阅读 · 0 评论 -
java学习(4)-- 集合类
一、集合类组成架构二、ArrayList、LinkedList、Vector 的区别1)首先普及一基础知识,数组和链表 数组和链表都是线性表(数据成线性排列),只有前后两个方向; 数组是连续的内存空间、存储相同的数据类型; 链表是可以非连续的内存空间存储相同的数据类型;2)简单说一下ArrayList、Linke...原创 2019-05-24 13:05:21 · 124 阅读 · 0 评论 -
Java学习(3)-- 关键字
一、transient Java中transient关键字的作用,简单地说,就是让某些被修饰的成员属性变量不被序列化二、instanceof java 中的instanceof 运算符是用来在运行时指出对象是否是特定类的一个实例三、 volatile Java语言提供了一种稍弱的同步机制,即volatile变量,用来确...原创 2019-05-24 10:59:19 · 121 阅读 · 0 评论 -
Java学习(2) String介绍
一、字符串的不可变性1) Java 的字符串类被final修饰,表示该类不能被继承;2)java 值存储为 final char[] value,变量也不可被修改;3)每次变更字符串,其实是在内存中新创建一个对象,将变量指向该应用;二、JDK6和JDK7中substring的区别1)在jdk 6 中,String类包含三个成员变量:char value[], int offse...原创 2019-05-24 09:13:50 · 143 阅读 · 0 评论 -
java学习(1)面向对象和基本数据类型
直接贴图了下一篇:java基础(2)-String 详解原创 2019-05-24 09:59:34 · 145 阅读 · 0 评论 -
Java 学习资料
一、博客学习资料1. 推荐一下,感觉他的很不错,非常适合初学者http://www.ityouknow.com/下一篇:java 学习1-面向对象...原创 2019-05-22 11:36:36 · 128 阅读 · 0 评论