Java
文章平均质量分 84
本专栏旨在积累、总结Java基础知识
FlashSu
这个作者很懒,什么都没留下…
展开
-
并发基本原理(四):AQS源码解析1-ReentrantLock的lock实现原理
AQS(AbstractQueuedSynchronizer)是JUC包中的核心抽象类,许多并发工具的实现,包括ReentrantLock、ReentrantReadWriteLock、CountDownLatch、Semaphore 等都是基于此实现。AQS,主要提供了表示同步状态的 state 变量,以及抢不到锁时的线程进入的 等待队列 及其排队逻辑。原创 2022-12-04 22:26:36 · 379 阅读 · 1 评论 -
Java8中的日期时间API
Java8中引入了 java.time 包相关的常用类介绍原创 2022-08-07 23:53:12 · 387 阅读 · 0 评论 -
2022-007ARTS
ARTS:Algorithm、Review、Tip、ShareAlgorithm 算法题Review 英文文章Tip 回想一下本周工作中学到的一个小技巧Share思考一个技术观点、社会热点、一个产品或是一个困惑Algorithm暴力递归到动态规划516. 最长回文子序列给你一个字符串 s ,找出其中最长的回文子序列,并返回该序列的长度。子序列定义为:不改变剩余字符顺序的情况下,删除某些字符或者不删除任何字符形成的一个序列。示例 1:输入:s = “bbbab”输出:4解释.原创 2022-03-13 17:52:09 · 1551 阅读 · 0 评论 -
java单元测试(一):MyBatis实现DAO-单元测试怎么写?
java单元测试(一):MyBatis实现DAO层的单元测试怎么写?主要思路是使用H2内存数据库测试我们DAO层的实现逻辑,具体过程如下:在test/resources目录下添加如下两个sql文件:schema.sql、data.sql,分别表示表结构初始化、数据语初始化的执行语句:schema.sqlDROP TABLE IF EXISTS user;CREATE TABLE user( id bigint NOT NULL AUTO_INCREME原创 2021-12-26 23:07:12 · 1794 阅读 · 0 评论 -
深入浅出Spring源码(三):Spring上下文属性初始化及创建容器
上一篇文章中简单介绍了Spring核心启动流程,有了基本的了解后,开始熟悉各个阶段的执行细节,今天介绍下开始时的容器初始化及创建的具体执行。public ClassPathXmlApplicationContext( String[] configLocations, boolean refresh, @Nullable ApplicationContext parent) throws BeansException { super(parent); setConfigLocations(co原创 2021-11-14 15:27:34 · 545 阅读 · 0 评论 -
深入浅出Spring源码(二):IoC概览 - Spring核心启动流程
IoC概览 - Spring核心启动流程流程解析引入refresh方法核心启动节点1. 创建BeanFactory2. 加载BeanDefinition3. 执行BeanFactoryPostProcessor4. 应用反射实例化bean5. 初始化 bean小结上一篇文章(深入浅出Spring源码(一):环境准备)中,我们下载了Spring框架的源码,导入到了IDEA中。基于此,我们可以开心的断点调试、阅读注释、理解、甚至是修改源码了。今天,我们正式进入Spring的世界。同时,我们也创建了一个用于测原创 2021-10-31 21:40:10 · 237 阅读 · 0 评论 -
《Maven实战》学习总结(六)——多项目构建问题解决方案:聚合和继承
多项目构建问题 随着软件的发展,软件本身变得越来越复杂,我们往往将一个大项目划分成几个模块来进行开发,如果我们使用Maven进行构建,划分出的各个模块其实也就是多个不同的Maven项目。在这样的情况下,多模块项目的构建面临两个问题: 1.划分模块较多时,我们需要分别对每个项目执行构建命令,这样无疑降低了构建的效率; 2.多项目构建的配置中,有原创 2016-03-31 20:15:46 · 749 阅读 · 0 评论 -
《Maven实战》学习总结(五)——生命周期和插件
前面的文章中,我们介绍了Maven世界中一些基础的概念:坐标、依赖、仓库等,本篇文章将介绍另外两个核心的概念——生命周期和插件。 我们前文已经提到项目构建的定义,而在Maven出现之前,各个项目都有各自的构建过程,没有统一的标准,而正是Maven的生命周期总结了大量项目的构建经验,对所有的构建过程进行抽象和统一,提炼出一个能适应绝大部分项目的构建过程。 Mav原创 2016-03-31 20:15:27 · 579 阅读 · 0 评论 -
《Maven实战》学习总结(四)——仓库
上篇文章我们介绍了Maven构件的逻辑表现形式--坐标和依赖,本篇文章将介绍Maven中构件的物理表示方式——仓库。在Maven出现之前,我们各个项目下一般都会有一个lib文件夹,里面存放项目依赖的所有构件,那么问题来了,各个项目中都有依赖相同的构件,这些完全相同的重复的构件分散在不同的项目里,占据着磁盘空间,难于管理。在坐标机制的基础上,Maven可以将各个项目共享的构件统一存储,这个统一的位置原创 2016-03-31 20:15:03 · 666 阅读 · 1 评论 -
《Maven实战》学习总结(三)——坐标与依赖管理
从本篇开始,我们开始接触、熟悉一个概念——“构件”,“在Maven的世界中,任何一个依赖、插件或者项目构建的输出,都可以称为构件。”也就是我们平时所说的jar包、war包、ear包等都可以称为构件。在Maven中,构件的逻辑表现形式是坐标、物理表现形式是“仓库”中的文件。本篇主要介绍Maven坐标的内容以及对项目引用其他构件的处理情况。Maven坐标(Coordinate)原创 2016-02-29 20:34:00 · 918 阅读 · 1 评论 -
《Maven实战》学习总结(二)——最基础练习
Maven最基础练习原创 2016-02-29 20:33:01 · 1304 阅读 · 0 评论 -
《Maven实战》学习总结(一)——Maven内行中的专家
Maven的作用 Maven是一跨平台的项目管理工具,自己所参与的诸多项目都使用到了Maven,想必有必要对这一利器做一次较为深入的学习和总结了!首先,我们来说一说Maven的作用,可分为以下几个大的方面:build:构建 当然,并不是我们平常所说的“gou jian”。这里的构建是指在日常的开发中,我们除了编写源码的工作之外,不管我们有无意识的都在进原创 2016-02-29 20:32:32 · 1119 阅读 · 0 评论 -
【工具系列一】——Tomcat的基本配置
Tomcat是Java领域最著名的开源Web容器,也是平时最常用Web服务器,我们有必要对其基本的配置有所了解。 本篇博客中所介绍的配置基于版本apache-tomcat-6.0.43 Tomcat下载地址:http://tomcat.apache.org/目录说明windows平台下目录结构说明:bin:操作Tomcat命令的路径co原创 2015-08-31 21:38:55 · 1234 阅读 · 2 评论 -
实时日志数据处理——Kafka、Storm、ElasticSearch集成
基本介绍Kafka是一个分布式的流式数据处理平台,主要用于发布、订阅流式数据,类似于消息队列或企业级消息系统。Storm是一个分布式实时计算系统,主要用于实时分析、在线机器学习、持续计算、分布式RPC、ETL等等。可以通过Storm教程了解Storm相关的核心概念ElasticSearch是一个高可用、开源的全文本检索、分析引擎本文通过Java程序实现三个框架的集成,实现数据从Kafk...原创 2019-03-31 23:38:26 · 1957 阅读 · 0 评论 -
Java基础——深入浅出Java反射机制(Reflective)
概要反射是指能够分析类能力的程序,也称为程序运行时的自省能力,主要用于工具程序的构造,而非应用程序。反射机制的作用包括以下四点:运行时分析类运行时查看对象实现通用数组操作利用MethodJava的反射机制主要通过以下几个类实现:Class、Constructor相关类、方法ClassClass(代表类型的类,实际是一个泛型类,但平时使用时可忽略类型参数,直接使用原始Clas...原创 2019-03-31 22:44:11 · 447 阅读 · 0 评论 -
Java8中的Lambda表达式与StreamAPI
Java8中提供了新的特性,用于实现函数式编程,本文是《Java8实战》的阅读总结行为参数化一种把方法作为值,在需要传递参数的地方传递它的软件开发模式,用来适应不断变化的需求,减轻工作量。行为参数化的实现方式:策略模式,将要传递的代码包裹在对象中匿名类Lambda简洁表达匿名函数的一种方式构成:参数、箭头、主体使用:(1)Where:在传递函数式接口参数或变...原创 2018-11-28 20:38:00 · 754 阅读 · 0 评论 -
多线程系列四——整体总结
原创 2015-09-30 22:30:01 · 844 阅读 · 1 评论 -
多线程系列三——java线程间通信
子线程首先循环10次,接着主线程循环100次,然后再回到子线程循环10次,接着再回到主线程循环100次,如此循环50次,程序实现:public class TraditionalThreadCommunication { public static void main(String[] args){ Business business = new Business(); new原创 2015-09-30 22:25:30 · 560 阅读 · 0 评论 -
多线程系列二——java线程间的互斥与同步
“线程互斥是指某一资源同时只允许一个访问者对其进行访问,具有唯一性和排它性。但互斥无法限制访问者对资源的访问顺序,即访问是无序的。” 我们可以用银行转账的例子加以说明:1、甲乙两用户对银行同一账户进行操作,余额为1000元;2、甲用户将银行余额1000元读取到本地,进行取款操作。在进行取款过程中,乙用户向银行账户进行存款300元操作并将账户余额更新,而此时甲用户进行取款是建立在原始原创 2015-09-30 22:03:18 · 1055 阅读 · 0 评论 -
多线程系列一——何为线程与java中线程的创建
线程的概念 线程:“程序中一个单一的顺序控制流程”,这种官方的解释可能不太容易理解,换句话说线程其实是程序的一条执行的路线。而我们所说的多线程,则是程序内部有多条执行路线同时执行的一种机制。 在我们认识多线程之前,我们所写的代码只能是一行行代码的去顺序执行(即使是循环也不可能同时执行两行代码),而有了多线程机制则不同了,我们可以控制CPU“同时”执行两个及以上的原创 2015-09-30 15:03:25 · 929 阅读 · 0 评论 -
《Java核心技术》阅读笔记(四)- 并发
并发编程基础线程基本概念多线程与多进程的区别: 每个进程拥有自己的一整套变量,而线程则共享数据。并行运行多个任务创建new Thread(Runnable);继承Thread的创建方式不再推荐,应该将并行运行的任务与运行机制解耦合;线程池:当任务很多时,为每个任务创建一个独立的线程付出代价太大。(14.9)注:Callabe类似于Runnable接口,表示具有返回值的异步任务。...原创 2020-02-29 23:07:13 · 565 阅读 · 0 评论 -
《Java核心技术》阅读笔记(三)- 异常处理
JavaCoreNote–异常如果由于出现错误而使得某些操作没有完成,程序应该:• 返回到一种安全状态,并能够让用户执行一些其他的命令;或者• 允许用户保存所有操作的结果,并以妥善的方式终止程序异常for:将控制权从错误产生的地方转移给能够处理这种情况的错误处理器程序错误分类:用户输入物理限制设备代码处理方式:返回一个特殊的错误码;不返回任何值,而是抛出一个封装了异常信...原创 2020-02-29 22:50:55 · 325 阅读 · 0 评论 -
《Java核心技术》阅读笔记(二)- 泛型、集合
泛型程序设计Generic programming意味着代码可以被很多不同类型的对象所重用提供类型参数(type parameters)解决了继承程序设计中的强制转换的安全性、可读性问题基本概念类泛型类(generic class):具有一个或多个类型变量的类。定义:public class Pair类型变量指定方法的返回类型以及域和局部变量的类型E 集合的元素类型K、V 表的...原创 2020-02-28 16:58:12 · 347 阅读 · 0 评论 -
《Java核心技术》阅读笔记(一)-面向对象、内部类、Lambda基础
基本程序设计结构每个Java应用程序都必须有一个main方法object.method(parameters)注释单行 //长篇 /* */自动生成文档 /** */基本数据类型(primitive type)强类型:必须为每个变量声明一种类型整型byteshortintlong浮点型floatdouble(正无穷大、负无穷大、NaN)cha...原创 2020-02-28 16:43:19 · 286 阅读 · 0 评论 -
J2SE学习小结
开始接触Java的学习,Java 2 Standard Edition为Java2平台的标准版,其包括了构成Java语言核心的类,此番学习算是学习了Java体系中的基础部分。学习框架大致整理如下: 主要分为了三部分:语言基础、面向对象以及应用。 过程中学习了大量的接口、类和方法。JDK代码库中提供了大量的类、方法等,学习中学会使用API文档原创 2013-09-10 17:41:52 · 1488 阅读 · 14 评论 -
【Java技术点滴】——Java中的泛型理解
泛型是我们在程序实现中经常使用的技术,对它的理解可归纳如下 1.在程序编码中一些包含类型参数的类型,也就是说泛型的参数只可以代表类,不能代表个别对象。(这是当今较常见的定义) 2.在程序编码中一些包含参数的类。其参数可以代表类或对象等等。(现在人们大多把这称作模板)不论使用哪个定义,泛型的参数在真正使用泛型时都必须作出指明。 以上为百度百原创 2015-03-31 23:54:25 · 1298 阅读 · 6 评论 -
Java基础-容器
引: 由于数组所存在的定义时固定长度的特性,使得对于自动改变存储容量大小的需求无法实现,而这正是容器所具备的亮点。 JDK所提供的容器API位于java.util包内,容器API类图结构如下图所示:上图分为两部分:左侧部分为单个值存放,右侧Map以键-值对存放。Set接口:存放没有顺序且不可重复的对象List接口:存放有顺序可以重复的对象此处的原创 2014-01-31 23:57:08 · 1774 阅读 · 19 评论 -
Java基础-常用类
1.String与StringBuffer java.lang.String类代表不可变的字符序列,"xxxxxx"为该类的一个对象 构造方法: String():空字符串对象; String(byte[] bytes):字节数组构建字符串;(一个字符串转换为另一个字符串时使原创 2014-01-28 15:25:21 · 1665 阅读 · 21 评论 -
Java基础-异常处理
概念 “程序运行时,经常会出现一些非正常的现象,如死循环、非正常退出等,称为运行错误。根据错误性质将运行错误分为两类:错误(Error)和异常(Exception)” Error一般由系统进行处理,程序本身无需捕捉和处理,只能通过提示Error信息检查、改正程序。 Exception(除数为0或操作数超出数据范围等)是在程序运行(而非原创 2014-01-15 17:26:28 · 1661 阅读 · 26 评论 -
Java基础-面向对象(封装、继承、多态)
再次学习J2SE,不得不慨叹自己对这部分基础内容掌握的并不牢靠,因此再在这里进行总结。面向对象的基础思想在这里不再提及,此文只针对java中的面向对象的基础内容进行讲述。 封装 (1)属性 ①变量(静态属性) 成员变量可以是java中的任何一种数据类型,定义时如不初始化java可默认对其初始化,初始化值为:原创 2014-01-08 21:35:36 · 1875 阅读 · 23 评论 -
java中的多态及其内存分析
多态(polymorphism):在执行期间(而非编译器)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。由于是在运行期的动态实现,直到new出对象才能确定具体调用的哪个方法,因此多态又叫动态绑定,也叫迟绑定。 实现条件 1.类之间继承或者实现接口; 2.方法重写; 3.父类引用指向子原创 2013-09-08 22:03:51 · 4613 阅读 · 7 评论