Java
文章平均质量分 92
龙云尧
这个作者很懒,什么都没留下…
展开
-
【Java并发 03】常用API及底层实现——Thread.start
文章目录知识储备native方法线程创建API底层实现JVM中的start0方法JavaThread对象及构造函数os:create_thread方法osthread方法JavaThread::prepare方法Thread::start方法总结知识储备上一章节中我们讨论了Thread的状态转换,以及Thread状态和OS状态之间的映射关系。本章节开始进行发散,来看看常用的Thread操作相关的API有哪些。本部分所有内容,JDK和JVM信息如下:java version “15.0.1” 202原创 2021-02-01 02:30:29 · 608 阅读 · 1 评论 -
【Java并发 02】Thread由浅入深
知识储备Java中的线程类Thread是从1.0开始便提供给使用者的工具,用于并行计算。线程特点Thread有如下特点:线程的创建主要通过Thread(Runnable target)进行创建每个线程具有优先级,高优先级的线程会比低优先级的线程;线程主要分为Daemon线程的非Daemon线程(也叫User线程)两类;线程的Daemon属性可以通过setDaemon和isDaemon两个接口修改和查询一旦线程开始运行(执行start),就不再允许修改Daemon标志位;一旦所原创 2021-01-30 03:02:49 · 505 阅读 · 2 评论 -
【Java并发 01】Java线程并发初窥
文章目录知识储备操作系统APIjava.lang.Thread提供的API线程池其他补充知识测试代码测试结果知识储备我们知道Java中线程的创建是使用Thread进行创建。在编写简单的测试代码或者业务代码的时候,我们可能也直接使用new Thread的方式进行线程任务的创建。但是这种方式真的能够满足业务诉求么?或者说这些写出来的代码是否还有继续调优的空间?这些问题在资源紧张或者高响应的架构上,可能就需要进行考量了。本文主要基于Java中的线程及其并发库进行初窥。操作系统API首先我们看,我们程原创 2021-01-19 03:27:12 · 358 阅读 · 0 评论 -
Lambda表达式与函数式接口(补充)
文章目录补充知识Lambda表达式只应该作为FunctionalInterface的实例坚持使用标准的函数接口补充知识在上一篇《Lambda表达式与函数接口》的内容中,我大致说了Lambda表达式的来源、应用和原理。这里补充一些项目应用中的思考和注意事项。Lambda表达式只应该作为FunctionalInterface的实例通过上一篇文章的分析再加上项目中实际运用,我们其实可以知道,只要一个interface中只有一个抽象方法的时候,这个接口就可以用Lambda表达式进行实现。但是,我还是不建议原创 2020-12-10 15:57:35 · 178 阅读 · 0 评论 -
UML类图绘制实例
UML类图绘制实例下面将使用如属官的借阅管理系统做一个图书馆管理系统的UML类图。参考自*Library Domain Model*最终的绘制结果大致如下:前期建模对于图书馆的借阅系统的建模,首先我们把所有需要定义的基础类定义出来。分别是Book(书籍)、Library(图书馆)、Patron(顾客)、Librarian(图书管理员)四个基础的对象。我们尝试将四个基础类进行关系连接,最后的到的关系图如下(注,就算没有图书,图书馆也不会消失,因此使用空心的关联关系:[外链图片转存失败,源站可能原创 2020-10-30 03:55:40 · 22667 阅读 · 1 评论 -
UML类图
目录文章目录目录UML类图继承(Inheritance, IS-A)泛化(Generalization)实现(Realization)实际例子举个例子依赖(Dependency, USE-A)举个例子关联(Association, HAS-A)单向关联示意图实际例子举个例子双向关联示意图聚合(Aggregate, OWNS-A)组成(Composition, IS-A-PART-OF)举个例子关联、组成和聚合的关联差异UML类图统一建模语言(英语:Unified Modeling Language,缩原创 2020-10-29 17:04:31 · 572 阅读 · 0 评论 -
Spring的Bean管理
本博客基于SpringSourceCodeTest仓库中【SpringDemo1.0】tag进行的编写。目录文章目录目录Spring的Bean管理基于扫描的方式装载beanXML格式解读XML内容解读基于定义的方式装载bean基于注解的方式装载beanSpring的Bean管理基于配置文件进行bean管理的方案是Spring初期推行的方式,在历史比较悠久的Spring项目中比较常见。基于扫描的方式装载bean一个比较典型的配置文件通常包含<context>标签, <cont.原创 2020-06-20 15:45:49 · 313 阅读 · 0 评论 -
一点点手写Spring
目录文章目录目录一点点手写Spring关于仓库和分支关于博客分布一点点手写Spring一直有一个小小的计划,做一个完整的系列,从使用Spring,到模拟Spring,到“抄袭”Spring,一点点理解Spring的内在和机制,同时加深自己对Java机制以及设计模式等内在的理解。因为Spring很大,模块很多,这里我计划只关注Spring的core包、bean包和context包,分别对应核心、bean的生命周期管理和Spring上下文的。首先从Spring的基础配置开始,我们现在最经常使用Spri原创 2020-06-20 15:42:28 · 243 阅读 · 0 评论 -
自定义注解并且进行扫描解析
文章目录注解背景源码解析总结注解背景首先我们要知道背景知识:每一个注解其实就是一个特殊的接口(带着@符号,其实是语法糖,会被编译器自动编译成继承自Annotation接口)。我们反编译一下class文件就能看出来。注解只是一个标记位,标记了某一个类,某一个字段或者某一个函数之后,我们就可以对被标记的属性进行我们期望的行为——比如运行时动态获取和修改被标记的属性,动态执行被标记的函数等等基于第二点,我们在定义了自己的注解之后,还要定义自己注解的解析类,这样我们才能真正让注解发挥起作用(只标记而不做原创 2020-06-05 22:52:22 · 1760 阅读 · 0 评论 -
Java的Integer类方法解读
highestOneBit获取一个int类型的二进制取整public static int highestOneBit(int i) { // HD, Figure 3-1 i |= (i >> 1); i |= (i >> 2); i |= (i >> 4); i |= (i >> 8); i |= (i >> 16); return i - (i >>> 1);}上述代码粗看会不理解实现原理,但是跟着推原创 2020-06-05 21:39:38 · 715 阅读 · 0 评论 -
Lambda表达式与函数式接口
目录文章目录目录Lambda表达式Java函数式接口简述Lambda表达式Java中Lambda表达式的好处Java中Lambda的实现原理Java1.8引入的新函数式接口Java编译器自动优化实现函数接口Java编译器对动态函数的优化Lambda表达式Java函数式接口都9012年了,这篇博文代码看看5000年前4012年发布的Java 8新引入的Lambda表达式到底是个什么鬼。简述Lambda表达式Lambda表达式并不是Java 8特有的特性,其设计初衷是用于一些特定代码中,已知固定入参和原创 2020-06-05 21:36:10 · 306 阅读 · 0 评论