Java基础
DoneBug
这个作者很懒,什么都没留下…
展开
-
文件上传
一、创建一个简单的包含WEB依赖的SpringBoot项目pom.xml内容:<!-- Spring Boot web启动器 --><dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web&...原创 2019-12-27 15:27:44 · 179 阅读 · 0 评论 -
[Java学习笔记]JDK1.8新特性学习(二)Stream API学习
Stream API学习什么是 Stream?Stream(流)是一个来自数据源的元素队列并支持聚合操作元素是特定类型的对象,形成一个队列。 Java中的Stream并不会存储元素,而是按需计算。数据源:Stream 的来源。 可以是集合,数组,I/O channel, 产生器generator 等。聚合操作:类似SQL语句一样的操作, 比如filter, map, reduce, f...原创 2019-12-09 17:36:59 · 178 阅读 · 0 评论 -
[Java学习笔记]JDK1.8新特性学习(一)Lambda表达式
java8 新特性Java8 新增了非常多的特性,我们主要讨论以下几个:Lambda 表达式Lambda 允许把函数作为一个方法的参数(函数作为参数传递到方法中)。方法引用方法引用提供了非常有用的语法,可以直接引用已有Java类或对象(实例)的方法或构造器。与lambda联合使用,方法引用可以使语言的构造更紧凑简洁,减少冗余代码。默认(Default)方法默认方...原创 2019-12-09 16:16:59 · 187 阅读 · 0 评论 -
[Java学习笔记]使用RestTemplate调用restful服务
使用RestTemplate调用restful服务什么是RestTemplate?RestTemplate是Spring提供的用于访问Rest服务的客户端,RestTemplate提供了多种便捷访问远程Http服务的方法,能够大大提高客户端的编写效率。调用RestTemplate的默认构造函数,RestTemplate对象在底层通过使用java.net包下的实现创建HTTP 请求,可以通...原创 2019-12-05 13:50:06 · 262 阅读 · 0 评论 -
[java学习笔记]MyBatis源码学习笔记(五) 一级缓存
Mybatis中的多级缓存一级缓存一、Cachekey要了解一级缓存,先要了解一个类:CacheKey,它是查询条件的抽象封装体,也就是说,判断一个条件是否是之前查过的,那么就是通过判断Cachekey的相等性也就是Equals方法了当下列特征值相同时,我们认为是相同的查询。statementId要求的查询结果集的范围(RowBounds的offset和limit)传给statem...原创 2019-11-19 11:55:19 · 155 阅读 · 0 评论 -
[java学习笔记]MyBatis源码学习笔记(四)
接下来看看MappedStatement这个对象是怎么来的,一个mappedStatement对象代表的就是mapperxml内的一个select/insert/update/delete标签,也就是一条sql语句 1 private String resource;//mapper配置文件名,如:UserMapper.xml 2 private Configuration confi...原创 2019-11-19 11:54:13 · 139 阅读 · 0 评论 -
[java学习笔记]MyBatis源码学习笔记(三)
sql语句的执行流程static { InputStream inputStream = MybatisTest.class.getClassLoader().getResourceAsStream("mybatis-configuration.xml"); sqlSessionFactory = new SqlSessionFactoryBuilder().bu...原创 2019-11-19 11:53:10 · 87 阅读 · 0 评论 -
[java学习笔记]MyBatis源码学习笔记(二)
Mapper映射器的配置就是 标签了,用来进行 sql 文件映射。也就是说我们需要告诉 MyBatis 到哪里去找到这些语句。 Java 在自动查找这方面没有提供一个很好的方法,所以最佳的方式是告诉 MyBatis 到哪里去找映射文件。<!-- 使用相对于类路径的资源引用 --><mappers> <mapper resource="org/mybatis/...原创 2019-11-19 11:50:56 · 135 阅读 · 0 评论 -
拦截器 Interceptor 和过滤器 Filter
目录过滤器(Filter) 拦截器(Interceptor) 拦截器(Interceptor)和过滤器(Filter)的区别拦截器(Interceptor)和过滤器(Filter)的执行顺序拦截器(Interceptor)使用过滤器(Filter)使用拦截器(Interceptor)和过滤器(Filter)的一些用途demo 总结 参考资料 正文...原创 2019-10-24 10:55:19 · 172 阅读 · 0 评论 -
[Java学习笔记]Lock锁和Condition条件
线程高级篇-Lock锁和Condition条件 </h1> <div class="clear"></div> <div class="postBody"> 浅谈Synchronized: synchronized是Java的一个关键字,也就是Java语言内置...原创 2019-10-23 22:24:08 · 149 阅读 · 0 评论 -
[java学习笔记]静态内部类加载的情况
参考文章:【https://www.cnblogs.com/maohuidong/p/7843807.html】前言: 在看单例模式的时候,在网上找帖子看见其中有一种(IoDH) 实现单例的方式,其中用到了静态内部类,文章中有写到当jvm加载外部类的时候,并没有加载静态内部内这和之前自己想的不一样,特意在网上找了一些帖子总结一下。一、学习前的疑问: 稍微了解Java虚拟机内...原创 2019-10-12 14:15:19 · 329 阅读 · 1 评论 -
[Java学习笔记]Spring(二)AOP思想及其实现
何为AOP ?AOP(Aspect Oriented Programming)是Spring提供的关键特性之一。AOP即面向切面编程,是OOP编程的有效补充。使用AOP技术,可以将一些系统性相关的编程工作,独立提取出来,独立实现,然后通过切面切入进系统。从而避免了在业务逻辑的代码中混入很多的系统相关的逻辑——比如权限管理,事物管理,日志记录等等。这些系统性的编程工作都可以独立编码实现,然后通过...原创 2019-09-04 22:46:25 · 143 阅读 · 0 评论 -
[Java学习笔记]Struts2执行原理及流程
Struts2是一套非常优秀的Web应用框架,实现优雅、功能强大、使用简洁。可以说是Struts2是一款非...转载 2019-08-30 10:32:02 · 155 阅读 · 0 评论 -
Hibernate中HQL的一对多和多对一多表查询
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...转载 2019-08-29 22:48:45 · 270 阅读 · 0 评论 -
[Java学习笔记]Hibernate
Hibernate框架工作模式Hibernate在三层模型中承担的正是Dao(数据访问层)层中的反复sql查询工作实现步骤一、导jar包1.hibernate.final/lib/required下的所有jar包2.数据库驱动类库3.准备数据库4.配置文件准备全局配置文件hibernate.cfg.xml五项必填内容 数据库方言、驱动类名、数据库url、数据库用户名、...原创 2019-08-26 22:48:46 · 95 阅读 · 0 评论 -
[Java学习笔记]反射机制
反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的Class,Class类...转载 2019-08-15 22:44:21 · 85 阅读 · 0 评论 -
[Java学习笔记]JavaWeb中的四大域对象
域对象可以在不同Servlet之间传递数据的对象,就是域对象只要是域对象都有如下方法setAttribute(name,value);存储数据的方法getAttribute(name);根据name获取对应数据值removeAttribute(name);删除数据JavaWeb有 ServletContext、ServletRequest、HttpSession、PageConte...原创 2019-08-11 21:36:37 · 199 阅读 · 0 评论 -
[Java学习笔记]JDBC使用要点
Java DataBase Connectivity1.JDBC原理2.JDBC使用步骤及原理JDBC连接数据库实现登录验证PreparedStatement和Statement1.JDBC原理什么是JDBC?JDBC(Java DataBase Connectivity)就是Java数据库连接,说白了就是用Java语言来操作数据库。原来我们操作数据库是在控制台使用SQL语句来操作数据库,J...原创 2019-07-31 20:27:13 · 148 阅读 · 0 评论 -
[Java学习笔记]ThreadLocal实现不同线程的数据隔离,同一线程的数据共享
ThreadLocalThreadLocal是什么?ThreadLocal的用法(存在意义)一、同一线程内共享数据二、不同线程实现数据隔离ThreadLocal实现机制ThreadLocal是什么?早在JDK 1.2的版本中就提供java.lang.ThreadLocal,ThreadLocal为解决多线程程序的并发问题提供了一种新的思路。使用这个工具类可以很简洁地编写出优美的多线程程序。当...原创 2019-08-02 21:20:26 · 1612 阅读 · 0 评论 -
[Java学习笔记(转载)]Java中的各种同步锁
转载自: http://blog.csdn.net/sinat_33087001/article/details/73607625上一篇既然提到了锁,这一篇来详细介绍JAVA中的锁,也为之后JUC下的锁做一个铺垫 其实如果按照名称来说,锁大概有以下名词: 自旋锁 ,自旋锁的其他种类,阻塞锁,可重入锁 ,读写锁 ,互斥锁 ,悲观锁 ,乐观锁 ,公平锁 ,偏向锁, ...转载 2019-07-16 20:51:55 · 177 阅读 · 0 评论 -
[Java学习笔记]File类操作使用
File类——文件的封装类文件和目录路径名的抽象表示形式。用户界面和操作系统使用路径名字符串来命名文件和目录,路径名 有两个组件:一个可选的与系统有关的前缀字符串,比如盘符,"/" 表示 UNIX中的根目录,"\\" 表示 Microsoft Windows UNC 路径名。一个文件名绝对路径:就是文件或目录在硬盘上真正的路径,在windows系统上表现就是从盘符开始的路径,LI...原创 2019-05-19 15:51:23 · 142 阅读 · 0 评论 -
[JAVA学习笔记]String类
. **一、String类——不可变字符串java.lang.String 该类为final所修饰,为不可继承类它的底层实现是一个char[]数组 value且该数组定义为final属性,因此该数组不可变字符串String的不可变在于其方法都是返回一个新对象而非本对象,本对象字符串不能改变,而一个String类的引用是可以重新赋值的Java中字符串在内存采用Unicode编码,与系统的...原创 2019-05-09 22:52:39 · 347 阅读 · 0 评论 -
[Java学习笔记]StringBuilder/StringBuffer类
一、StringBuilder——可变字符串 StringBuilder是一个继承了AbstractStringBuilder的实现类 又称可变字符串属性:byte[] value(非final修饰) int count; (此时计数器)构造器:实际上都用的是父类内的构造方法! StringBuilde...原创 2019-05-09 23:05:55 · 140 阅读 · 0 评论 -
[Java学习笔记] Date/Calendar/DateFormat的使用
一、Date类–主要表征某一时刻排去已经废弃的构造器,Date的构造器有:Date() 空参构造器—>构造一个Date对象,它反应此时的系统时间Date(long n) 传入一个long数据(由1970.1.1计算机元年以来的毫秒数)得到一个对应的Date对象方法:void setTime(long date) 使用给定毫秒时间值设置现有 Date 对象。 S...原创 2019-05-09 23:59:58 · 168 阅读 · 0 评论 -
[Java学习笔记] List 接口下的ArrayList类
ArrayList——线性表ArrayList类作为List 接口的大小可变数组的实现,实现了所有可选列表操作,并允许包括 null 在内的所有元素。除了实现 List接口外,此类还提供一些方法来操作内部用来存储列表的数组的大小。(此类大致上等同于 Vector 类,除了此类是不同步的。)构造器ArrayList()构造一个初始容量为 10 的空列表。ArrayList(Colle...原创 2019-05-10 11:56:52 · 213 阅读 · 0 评论 -
[Java学习笔记] List 接口下的LinkedList类
LinkedList——双向链表所有已实现的接口:Serializable, Cloneable, Iterable, Collection, Deque, List, QueueLinkedList作为List 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove ...原创 2019-05-10 15:28:07 · 241 阅读 · 0 评论 -
[Java学习笔记]Set接口下的散列表
Set集合——散列表此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素构造方法摘要HashSet()构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。HashSet(Collection<? extends E...原创 2019-05-10 21:02:52 · 206 阅读 · 0 评论 -
[Java学习笔记]IO流——读写操作
RandomAcessFile类构造方法摘要方法摘要文件读写的过程RandomAccessFile类应用——文件加密此类的实例支持对随机访问文件的读取和写入。随机访问文件的行为类似存储在文件系统中的一个大型 byte数组。存在指向该隐含数组的光标或索引,称为文件指针;输入操作从文件指针开始读取字节,并随着对字节的读取而前移此文件指针。如果随机访问文件以读取/写入模式创建,则输出操作也可用;输出操...原创 2019-06-02 21:46:52 · 279 阅读 · 0 评论 -
[Java学习笔记]IO流——字节流和字符流
字节流抽象超类:InputStream是所有字节输入流的父类,其定义了基础的读取方法,常用的方法如下:— int read() 读取一个字节,以int形式返回(取一个byte也即“低8位”),若返回值为-1,则表示EOF(End Of File)— int read(byte[] d) 尝试读取给指定数组的length个字节并存入该数组,返回值为实际读取到的字节量Output...原创 2019-06-03 00:31:23 · 162 阅读 · 0 评论 -
[Java学习笔记]IO流——对象流、序列化与反序列化
序列化序列化 (Serialization)是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。也就是说:把对象转换为字节序列的过程称为对象的序列化。把字节序列恢复为对象的过程称为对象的反序列化。对象的序列化主要有两种用途: 1) 把对象的字节序列永久地...原创 2019-06-03 11:28:11 · 308 阅读 · 0 评论 -
[Java学习笔记]异常机制
Java中的异常类结构ThrowableThrowable是Java异常的顶级类,所有的异常都继承于这个类。Error,Exception是异常类的两个大分类。ErrorError是非程序异常,即程序不能捕获的异常,一般是编译或者系统性的错误,如OutOfMemorry内存溢出异常等。ExceptionException是程序异常类,由程序内部产生。Exception又分为运行时异...原创 2019-06-11 21:07:11 · 116 阅读 · 0 评论 -
[Java学习笔记]Java中的多态深入
多态多态是同一个行为具有多个不同表现形式或形态的能力。多态就是同一个接口,使用不同的实例而执行不同操作,如图所示:多态的实现方式方式一:重写:方式二:接口方式三:抽象类和抽象方法实际上方式二、方式三基于的都是方式一的方法重写以及我们的向上造型机制,这里我们不再详细论述,仅以代码简单表示public class Demo { public static void main(Str...原创 2019-06-11 22:26:54 · 138 阅读 · 0 评论 -
[Java学习笔记]BlockingQueue的使用
BlockingQueue介绍BlockingQueue是java.util.concurrent包下的一个接口它的继承关系是:它是继承Queue的一个接口Collection|—Queue||—BlockingQueue*它的主要意义:在于应用在两个以上的线程同时对队列进行入队/出队的任务的情况下,显然由于多线程执行过程中的随机性,出现一个线程一直在从队列出列获取元素而队列却...原创 2019-06-29 23:59:49 · 167 阅读 · 0 评论 -
[Java学习笔记]多线程基础
了解进程与线程进程:简单的理解——进行中的程序,实际上,进程就是我们操作系统进行资源分配的单位,也是程序运行的载体线程:简单的理解——进程中各种各样的任务,实际上,线程是任务调度的最小单位,一个进程中会有各种的线程在并发执行任务Java中的线程java.lang.Thread 类,即是java中对于线程的封装对象,.我们想要利用多个线程并发执行不同任务,也正是多线程技术,那么就需要使...原创 2019-06-30 12:03:25 · 114 阅读 · 0 评论 -
[Java学习笔记]Socket网络编程——附控制台版群聊、私聊系统
网络套接字网络套接字是IP地址与端口的组合。所谓套接字,实际上是一个通信端点,每个套接字都有一个套接字序号,包括主机的IP地址与一个16位的主机端口号,即形如(主机IP地址:端口号)Java中的套接字ServerSocket类此类实现服务器套接字。服务器套接字等待请求通过网络传入。它基于该请求执行某些操作,然后可能向请求者返回结果。Socket类此类实现客户端套接字。Se...原创 2019-07-11 10:10:08 · 225 阅读 · 0 评论 -
[Java学习笔记]并发编程——Lock的使用
Synchronized\Lock的比较初学Java多线程编程我们发现除了关键字Synchronized以外,还有各种各样的Lock类型,那么我们就会想:既然已经有了Synchronized这个关键字帮助我们实现线程同步,管理资源的有序和谐访问,那么Lock又有什么存在的必要呢?为此我们需要了解Synchronized的缺陷:我们知道在Synchronized同步机制下,获取锁的线程释放锁...原创 2019-07-16 20:45:47 · 228 阅读 · 0 评论 -
[Java学习笔记]Map下的映射表
接口 Map<K,V>类型参数: K - 此映射所维护的键的类型 V - 映射值的类型因为Map中的Entry键值对、Key键都是有Set存放的,这也就确保了键、键值对是不可重复的(Value可重复)public interface Map<K,V>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。常用方法void clea...原创 2019-05-19 12:18:04 · 571 阅读 · 0 评论