Java
文章平均质量分 96
Au-csdn
邮箱:hzj1301414175@gmail.com
展开
-
JUC 基石之 AQS 原理
JUC 基石之 AQS 原理文章目录JUC 基石之 AQS 原理一、简介,什么是 AQS二、相关基础知识1. synchronized 原理2. CLH 队列3. CAS 原理三、AQS 解析1. AQS 分层架构图2. AQS 核心思想3. AQS 数据结构4. AQS 源码分析(1) 获取锁a. 公平锁获取过程1. FairSync.lock() & acquire() 公平锁开始获取锁2. FairSync.tryAcquire() 公平锁尝试获取锁3. addWaiter() 进入等待队列原创 2021-08-12 15:34:58 · 344 阅读 · 4 评论 -
Dubbo SPI 源码分析(基于2.7.8-release)
文章目录一、SPI介绍二、JDK SPI1. 实现原理2. 使用示例三、Dubbo SPI1. 实现原理2. 使用示例3. 源码分析3.1. 获取 ExtensionLoader 实例3.2. 获取拓展类对象3.3. 创建扩展类对象实例3.4. 获取所有的拓展类3.5. 加载所有扩展类3.6. 加载策略中配置的所有目录文件3.7. 读取并解析配置文件3.8. 加载单个扩展类3.9. Dubbo IOC 实现3.10. 获取默认的扩展类对象实例一、SPI介绍引自Dubbo官方教程:https://dubb原创 2021-02-09 15:09:51 · 453 阅读 · 4 评论 -
redis实现分布式锁(秒杀商品demo,各种问题循序渐进)
redis实现分布式锁(秒杀商品demo,各种问题循序渐进)文章目录redis实现分布式锁(秒杀商品demo,各种问题循序渐进)前言背景测试工具一、 基础环境搭建1. 新建SpringBoot项目,导入web、redis相关依赖2. 在application.yml中配置redis相关内容3. 编写RedisConfig类4. 启动redis服务器,并设置商品初始数量5. 编写TestContr...原创 2019-12-22 11:36:01 · 929 阅读 · 12 评论 -
SpringBoot整合Vue访问index.html出现404
SpringBoot的yml(properties、yaml)文件配置了禁用资源映射有的项目可能为了要使用@ControllerAdvice与@ExceptionHandler来捕获controller层的异常,可能会在配置文件中配置了如下内容,从而禁用了资源映射:spring: mvc: throw-exception-if-no-handler-found: true # 告诉...原创 2019-12-06 17:30:22 · 6384 阅读 · 0 评论 -
Spring与Mybatis的整合
Spring与Mybatis的整合文章目录Spring与Mybatis的整合一、 回顾MyBatis常规操作流程二、 Spring整合MyBatis一、 回顾MyBatis常规操作流程//mybatis常规操作流程public void mybatis_basic() throws Exception { // 获取sqlSession工厂 // 注意,此处没有myba...原创 2019-11-09 19:42:27 · 429 阅读 · 0 评论 -
Spring DI(依赖注入)的几种方法
Spring DI(依赖注入)的几种方法文章目录Spring DI(依赖注入)的几种方法DI概念一、 set方法注入a. 创建StudentDao.java类b. 创建StudentService.java类c. 创建bean.xml文件d. 创建测试类二、 构造器注入a. 创建Student.java类b. 创建bean.xml文件1. 按照名字注入2. 按照类型与索引注入c. 创建测试类三、...原创 2019-11-09 15:10:56 · 475 阅读 · 0 评论 -
Spring环境搭建与IOC案例
Spring环境搭建与IOC案例文章目录Spring环境搭建与IOC案例一、 搭建Spring环境1. 创建Java项目2. 导入Spring相关jar包3. 创建bean.xml配置文件二、 IOC案例1. IOC简介2. 使用Spring与不用Spring的区别a. 在com.au.service包下创建StudentService.java类b. 在bean.xml文件添加如下内容c. 创...原创 2019-11-09 15:09:41 · 428 阅读 · 0 评论 -
MyBatis配置文件mybatis-config详解
MyBatis配置文件mybatis-config.xml内容详解文章目录MyBatis配置文件mybatis-config.xml内容详解一、略解mybatis-config.xml二、详解mybatis-config.xml1. configuration2. properties3. settings4. typeAliases5. typeHandlers6. objectFactory...原创 2019-11-07 19:00:33 · 28081 阅读 · 1 评论 -
MyBatis自定义类型处理器(typeHandler)
MyBatis自定义类型处理器(typeHandler)我们执行sql语句通过PreparedStatement语句实现,PreparedStatement会设置?值,类型处理器帮PreparedStatement找到对应的set方法,到底是选择setInt、setString或setDate...注意:类型处理器默认可以处理基本的数据类型以及对应的包装类,uitl.Date、sql.Date...原创 2019-11-07 18:56:40 · 1149 阅读 · 5 评论 -
MyBatis环境搭建与简单使用
MyBatis环境搭建与简单使用文章目录MyBatis环境搭建与简单使用环境搭建1. eclipse新建java project2. 导入MyBatis相关jar包3. 编写配置文件mybatis-config.xml简单使用1. 新建com.au.bean包,新建Student类。2. 数据库创建对应的student表3. 编写StudentMapper.java接口(增删改查)4. 编写St...原创 2019-11-07 11:20:16 · 349 阅读 · 0 评论 -
SpringBoot入门项目-helloWorld
SpringBoot入门web项目-helloWorld文章目录SpringBoot入门web项目-helloWorld项目构建1. 用idea构建Maven项目2. 添加maven依赖3. 构建SpringBoot启动程序4. 创建一个Controller类用于测试5. 浏览器测试idea快速构建SpringBoot项目idea设置项目热部署项目构建1. 用idea构建Maven项目f...原创 2019-11-06 09:52:31 · 479 阅读 · 0 评论 -
JDBC连接数据库(MySQL、Oracle、SQL Server)
JDBC连接数据库文章目录JDBC连接数据库1. 创建Java项目2. 将驱动包添加到项目中3. 连接数据库四要素(驱动名、链接地址、数据库用户名、数据库密码)4. 数据库创建好库和表(以Oracle为例)5. 代码连接7步骤1. 创建Java项目eclipse:file->new->java project->输入项目名->finish。2. 将驱动包添加到项目...原创 2019-11-05 09:27:06 · 1129 阅读 · 0 评论 -
Java学习笔记——IO流与文件
Java学习笔记——IO流与文件标签: IO、Stream、File文章目录`Java学习笔记——IO流与文件`一、文件(`File类`)1. `File`对象创建方法2. `File`类常用方法二、`IO`流(`Stream`)1. 字节流(1)输入流(`InputStream`)(2)输出流(`OutputStream`)(3)各输入流、输出流用法详解(1). `ByteArrayInp...原创 2019-06-12 21:02:05 · 651 阅读 · 0 评论 -
Java学习笔记——Set、List集合
Java学习笔记——Set、List集合标签: Java 集合(Set、List)(一)SetSet集合是最简单的一种集合,集合中的对象无序、不能重复。用得较多的主要实现类有HashSet和TreeSet。HashSet:按照哈希算法来存取集合中的对象,存取速度比较快。TreeSet:实现SortedSet接口,具有排序功能。(1)HashSetSet集合没有重复对象,当...原创 2019-06-03 22:49:38 · 487 阅读 · 0 评论 -
Java学习笔记——equals与==比较
Java学习笔记——equals与==比较首先我们先来思考一下以下程序运行的结果: Integer i1 = 127; Integer i2 = 127; System.out.println("i1 == i2 :" + (i1 == i2)); System.out.println("i1.equals(i2) :" + i1.equals(i2)); ...原创 2019-06-04 19:42:01 · 455 阅读 · 5 评论 -
Java踩坑系列——类型强转
Java踩坑系列——类型强转(Object[] 转 String[])文章目录Java踩坑系列——类型强转(Object[] 转 String[])最近开发中遇到了一个bug,就是List的toArray方法,他返回的是Object[]类型,当我们将它转换为String[]类型的时候并不会提示错误,但运行时就会报如下错,其实就是类型转换异常: // 运行代码: List<...原创 2019-07-15 19:07:01 · 665 阅读 · 0 评论 -
Java学习笔记——synchronized
Java学习笔记——synchronized关键字文章目录`Java学习笔记——synchronized关键字``synchronized`的三种应用方式(一)、`synchronized`作用于实例方法(二)、`synchronized`作用于静态方法(三)、`synchronized`作用于代码块`synchronized`的应用例子——单例模式synchronized的三种应用方式...原创 2019-07-12 16:54:00 · 402 阅读 · 0 评论 -
Java学习笔记——LinkedList插入和删除真的比ArrayList快吗
Java学习笔记——LinkedList插入和删除速度真的比ArrayList快吗问:LinkedList 和 ArrayList 有什么区别?答:LinkedList 实现了 List 和 Deque 接口,一般称为双向链表;ArrayList 实现了List 接口,称为动态数组;LinkedList 在插入和删除数据时效率更高;ArrayList 在查找某个 index...原创 2019-07-26 19:42:33 · 4331 阅读 · 2 评论 -
Java实现最大(小)堆以及堆排序、TopN问题
Java实现最大(小)堆以及堆排序、TopN问题文章目录Java实现最大(小)堆以及堆排序、TopN问题Java实现堆堆的构建堆的插入堆的删除具体实现代码堆排序TopN问题Java实现堆什么是堆,先来了解原理,再看如何实现。堆的定义:堆(Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵完全二叉树的数组对象。堆可以看成是一棵树,并且这棵树的子树也是堆。...原创 2019-08-19 19:54:07 · 2382 阅读 · 0 评论 -
二分查找用法小结(Java实现)
二分查找用法小结(Java实现)文章目录二分查找用法小结(Java实现)一、二分法定义二、基本二分及其变形用法1. 基本的二分查找2. 如果有多个与target相等,返回第一个与target相等的值的下标,如果找不到target则返回-13. 查找小于target且最接近target的数的下标,没有则返回-14. 如果有多个与target相等,返回最后一个与target相等的值的下标,如果找不到...原创 2019-08-28 20:26:01 · 512 阅读 · 0 评论 -
Java学习笔记——jdk8新特性及其用法小结
前言:最近摸索了JDK8的一些新特性,特此总结一下。Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。JDK8有很多新特性,我在此就讨论以下特性:一、接口的默认方法二、Lambda ...原创 2019-04-25 17:32:26 · 3028 阅读 · 0 评论