Java学习之路
文章平均质量分 91
化身强盗_Bandit
这个作者很懒,什么都没留下…
展开
-
Netty入门(二)--- 任务队列,异步模型剖析,Http服务Demo
文章目录四、Netty异步操作4.1 taskQueue任务队列4.2 scheduleTaskQueue定时任务4.3 非当前Reactor调用Channel的方法4.4 Netty异步模型原理剖析4.4.1 ChannelFuture4.4.2 Future-Listener 机制4.5 Http服务Demo往期Netty入门(一) — Reactor线程模型,Netty的线程模型,快速入门Demo四、Netty异步操作Netty任务队列的 Task 有3中使用场景用户程序自定义的普通任原创 2022-01-23 18:05:30 · 1160 阅读 · 0 评论 -
Netty入门(一) --- Reactor线程模型,Netty的线程模型,快速入门Demo
文章目录一、Netty概述1.1 简介1.2 原生NIO的问题1.3 Netty的优点二、线程模型2.1 传统阻塞IO服务模型特点:问题:2.2 Reactor模式2.2.1 单Reactor单线程流程说明:优缺点分析:2.2.2 单Reactor多线程流程说明:优缺点:2.2.3 主从Reactor多线程流程说明:优缺点:总结三、Netty模型原理描述:快速入门demo一、Netty概述1.1 简介官网:https://netty.io/Netty是一个NIO客户端服务器框架,它可以快速简单地开发原创 2022-01-21 22:23:22 · 1335 阅读 · 0 评论 -
NIO快速入门 --- 三大核心组件Buffer,Channel,Selector,NIO聊天室系统,NIO与零拷贝
文章目录一、I/O模型简介二、BIO和NIO2.1 BIO工作原理图:工作流程:问题分析:2.2 NIONIO基本介绍:NIO与BIO对比NIO核心三大部分关系三、缓冲区Buffer基本介绍Buffer重要属性和APIByteBufferMappedByteBufferBuffer的Scattering 和 Gathering注意事项:四、通道Channel基本介绍常用的Channel:FileChannelServerSocketChannelSocketChannelBuffer和Channel实例:1原创 2022-01-20 17:14:44 · 1546 阅读 · 0 评论 -
Collection集合工具类源码解读(五) --- TreeMap 和 TreeSet
文章目录9、TreeMap9.1 先看看属性9.2 构造函数9.3 put方法分析排序第一次put以后的put如果用比较器怎么写?9.4 一些常用API10、TreeSet10.1 先看看属性10.2 构造函数10.3 一些API往期:Collection集合工具类源码解读(一) — ArrayList 和 VectorCollection集合工具类源码解读(二) — LinkedListCollection集合工具类源码解读(三) — HashMapCollection集合工具类源码解读(四)原创 2022-01-12 19:33:14 · 530 阅读 · 0 评论 -
Collection集合工具类源码解读(四) --- HashTable,HashSet,LinkedHashMap,LinkedHashSet
文章目录5、HashTable5.1 先看看属性5.2 构造函数5.3 从put方法分析扩容机制put方法addEntry方法(真正添加值的方法)rehash方法(扩容)扩容总结:5.4 get方法5.5 remove方法5.6 replace5.7 HashTable和HashMap6、HashSet6.1 先看看属性6.2 构造方法6.3 add方法6.4 remove方法6.5 contains7、LinkedHashMap7.1 先看看属性7.2 构造方法7.3 LinkedHashMap完善的方法原创 2022-01-12 17:31:49 · 843 阅读 · 0 评论 -
Collection集合工具类源码解读(三) --- HashMap
文章目录4、HashMap4.1 先看看属性4.2 构造方法4.3 从put分析扩容机制(重点)putVal方法resize方法(扩容和树化)扩容树化扩容机制总结4.4 get方法4.5 remove方法4.6 replace往期:Collection集合工具类源码解读(一) — ArrayList 和 VectorCollection集合工具类源码解读(二) — LinkedList4、HashMap重头戏来咯,老惯例,先写个demo,debugpublic class HashMapDe原创 2022-01-11 17:33:24 · 904 阅读 · 0 评论 -
Collection集合工具类源码解读(二) --- LinkedList
文章目录3、LinkedList3.1 先看属性3.2 构造方法3.3 add方法尾插法:linkLast头插法:linkFirst中间插:linkBefore3.4 get方法和set方法3.5 remove方法头删unlinkFirst尾删unlinkLast删除第一个出现的元素删除最后一个出现的元素3.6 一些队列的方法peek系poll系offer系往期:Collection集合工具类源码解读(一) — ArrayList 和 Vector3、LinkedListlinkedList底层原创 2022-01-10 17:38:43 · 824 阅读 · 0 评论 -
Collection集合工具类源码解读(一) --- ArrayList 和 Vector
文章目录1、ArrayList1.1 先看看这些属性1.2 构造方法1.3 从add分析扩容机制结论:1.4 get方法和set方法1.5 remove方法1. remove(int index)2.remove(Object o)1.6 indexOf方法和lastIndexOf方法1. indexOf2. lastIndexOf2、Vector2.1 先看看属性2.2 构造方法2.3 从add分析扩容机制结论:2.4 get方法和set方法2.5 remove方法1. remove(int index)原创 2022-01-09 14:20:29 · 758 阅读 · 0 评论 -
JUC并发编程(四)--- JMM内存模型,Volatile关键字深入理解,CAS
文章目录14、Java内存模型JMM15、Volatile15.1 保证可见性15.2 不保证原子性15.2.1 原子类15.3 禁止指令重排16、彻底玩转单例模式16.1 饿汉式16.2 DCL懒汉式16.3 枚举类型17、深入理解CAS17.1 什么是CAS17.2 Unsafe类和CAS17.3 ABA问题17.4 原子引用18、锁总结18.1 公平锁、非公平锁18.2 可重入锁18.3 自旋锁SpinLock18.9 死锁死锁如何排除JUC笔记JUC并发编程(一) — 多线程回顾,Synchr原创 2022-01-08 16:04:44 · 613 阅读 · 0 评论 -
JUC并发编程(三) --- 线程池,并行计算ForkJoin,异步回调FutureTask和CompletableFuture
文章目录10、Callable回顾11、线程池11.1 三大方法11.2 七大参数11.3 四个拒绝策略11.4 池的大小怎么确定12、并行计算ForkJoin12.1 什么是ForkJoin12.2 ForkJoin特点12.3 ForkJoinTask和ForkJoinPool实践:13、异步回调Future和FutureTask13.1 Future13.2 FutureTask13.3 CompletableFutureJUC笔记JUC并发编程(一) — 多线程回顾,Synchronized和原创 2022-01-07 23:06:18 · 670 阅读 · 0 评论 -
JUC并发编程(二)--- 并发下集合不安全及解决方案,读写锁,阻塞队列
文章目录6、集合类不安全问题6.1 List不安全1、Vector2、synchronizedList转换3、CopyOnWriteArrayList6.2 Set不安全回顾一下HashSet:1、synchronizedSet转换2、CopyOnWriteArraySet6.3 Map不安全1、HashTable2、ConcurrentHashMap7、常用辅助类7.1 CountDownLatch7.2 CyclicBarrier7.3 Semaphore8、读写锁9、阻塞队列9.1 阻塞队列和非阻塞队原创 2022-01-07 12:16:05 · 858 阅读 · 0 评论 -
JUC并发编程(一) --- 多线程回顾,Synchronized和Lock锁,Condition线程通信,八锁问题
1、JUC简介JUC是java.util.concurrent的缩写,即concurrent包下的所有东西,非常重要在学习JUC前需要对Java多线程进行回忆并补充2、线程和进程进程和线程 详见操作系统进程:就是一个正在运行的程序实例,进程是线程的容器线程:一个程序中不同的功能可能由不同的线程并行执行,例如:打开QQ,你这边和A聊天,那边和B聊天对java而言:java默认有2个线程:main线程和gc线程基类:Thread,Runnable,Callable对于Java而言,原创 2022-01-06 16:03:42 · 336 阅读 · 0 评论 -
Java多线程拾遗 --- 创建线程方式,线程的相关方法,线程锁,线程通信
文章目录1、线程创建1.1 继承Thread类1.2 实现Runnable接口1.3 实现Callable接口2、线程状态和相关方法2.1 线程五大状态2.2 线程相关方法2.2.1 优先级setPriority2.2.2 线程休眠sleep2.2.3 线程停止2.2.4 线程礼让yield2.2.5 线程插队join2.3 线程状态观测2.4 守护线程3、线程锁3.1 synchronized3.1.1 方法锁3.1.2 块锁3.2 Lock3.3 synchronized 和 lock 对比4、线程通信原创 2021-12-19 22:57:02 · 215 阅读 · 0 评论 -
SpringMVC---SSM整合(狂神说项目练习)
九.SSM整合导依赖<dependencies> <!-- spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.3.9</version>原创 2021-08-25 18:18:33 · 382 阅读 · 2 评论 -
SpringMVC---使用注解开发,404错误原因,RESTful,页面跳转,Json交互
四.SpringMVC项目搭建(注解版)1.首先配置springmvc-servlet.xml<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.spring原创 2021-08-23 23:39:56 · 2392 阅读 · 0 评论 -
SpringMVC---初识SpringMVC,回顾servlet和分析SpringMVC原理
一.MVC和Servlet回顾1.1 回顾MVCMVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。**Model(模型):**数据模型,提供要展示的数据,因此包含数据和行为,可以认为是领域模型或JavaBean组件(包含数据和行为),不过现在一般都分离开来:Value Object(数据Dao) 和 服务层(行为Service)。也就是模型提供了模型数据查询和模型数据的状态更新等功能,包括原创 2021-08-23 10:18:45 · 237 阅读 · 0 评论 -
Spring---Spring概述,IOC,依赖注入(DI),Bean的作用域,自动装配,注解开发,JavaConfig,代理模式,AOP,Mybatis-Spring
Spring个人向笔记一.Spring概述及IOC1.1 简介1.2 框架特征1.3 IOC概述1.3.1分析原理1.3.2 IOC本质1.3.3 IOC在Spring中二.Spring快速上手2.1 需要的依赖(汇总)2.2 基本配置文件beans.xml2.3 第一个Spring程序2.4 Spring改造1.3程序(IOC)2.5 聊聊Spring配置内容2.5.1 别名2.5.2 Bean配置2.5.3 import三.依赖注入(DI)3.1 概念3.2 构造器注入(官方推荐)3.3 set方式注原创 2021-08-21 18:28:27 · 583 阅读 · 0 评论 -
Spring---环境搭建和第一个Spring程序
一.环境搭建新建一个普通Maven项目,删除src文件夹,作为父工程,修改pom.xml导入依赖:前往https://mvnrepository.com/搜索Spring依赖,选择Spring Web MVC依赖会帮助我们自动导入其他相关依赖<!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <grou原创 2021-08-18 17:27:27 · 129 阅读 · 0 评论 -
Mybatis---基本CRUD,模糊查询,配置优化,分页查询,复杂属性的查询,动态SQL
Mybatis学习笔记一.基本CRUD1.1 在接口中写增删改查方法1.2 在Mapper中绑定和相关SQL的编写1.3 编写测试类实现方法1.4 万能的Map,用Map传参(拓展)1.5 ResultMap结果集映射(拓展)二.模糊查询三.配置文件优化(部分)3.1 属性优化3.2 别名优化3.3 映射器配置四.分页查询Limit五.使用注解开发5.1 Mybatis内置注解:增删改查5.2 Lombok及其他六.复杂属性的查询6.1 多对一(从多的角度查询)6.2 一对多(从一的角度查询)七.动态SQL原创 2021-08-17 17:20:29 · 270 阅读 · 0 评论 -
Mybatis----环境搭建与第一个Mybatis程序
一.Maven环境搭建1.新建一个基本maven项目,将src文件夹删掉如下图2.修改pom.xml导入依赖和防止过滤junit单元测试mysql导入自己对应的版本mybatis环境 <dependencies> <!--junit--> <dependency> <groupId>junit</groupId> <artifactId>原创 2021-08-13 19:34:21 · 140 阅读 · 0 评论 -
JavaWeb---Cookie和Session
1.引入会话是指一个终端用户与交互系统进行通讯的过程。比如从输入账户密码进入操作系统到退出操作系统就是一个会话过程。会话较多用于网络上,TCP的三次握手就创建了一个会话,TCP关闭连接就是关闭会话。简单来讲,一个人打开浏览器点开很多网站进行浏览,之后关闭浏览器即算完成一个会话而保存会话有两种技术:Cookie和Session2.Cookie2.1.Cookie机制Cookie是服务器端为了识别用户身份,向客户端颁布的一个证明,每人一个,通过证明即可证明你的身份。比如:你进入学校报到,学校给你颁布原创 2021-08-02 19:00:39 · 209 阅读 · 0 评论 -
JavaWeb---Servlet基本用法
1.Servlet工作原理2.ServletContext保存和读取信息ServletContext可以保存一些公共资源,供不同的Servlet使用2.1.getServletContext在HelloServlet中向ServletContext写入一些信息在GetServlet中读取该信息注册servlet输出:2.2.getInitParameter获取初始化数据首先在web.xml中定义了初始化信息InitServlet中读取这些信息此处获取了键名为names原创 2021-08-02 10:50:15 · 157 阅读 · 0 评论 -
JavaWeb---IDEA的Tomcat与Maven环境搭建
1.Tomcat配置(1)进入Tomcat官网下载Tomcat9,不用10是因为tomcat10把 javax.servlet 都改为了jakarta.servlet,后面Maven导servlet相关依赖会用不了(2)Tomcat解压就能使用,但是需要配置环境变量JAVA_HOME和Tomcat的环境变量JAVA_HOME选择jdk所在位置CATALINA_BASE选择tomcat根目录CATALINA_HOME选择tomcat根目录然后再Path中新增如上三条2.Maven环境配原创 2021-08-02 00:10:23 · 1628 阅读 · 1 评论 -
Java注解和反射
一.注解Annotation1.1 基本介绍注解Annotation是JDK5.0开始引入的技术作用:可以对程序进行解释,且能被其他程序识别读取格式:注解以“@注解名”,并可以添加一些参数,例如:@SuppressWarnings(value = “unchecked”),@Override作用域:可以附加再package,class,method,field等上面。我们可以通过反射机制实现对这些元数据的访问。1.2 内置注解@Override:表示一个方法声明打算重写超类中的另一个方法原创 2021-07-22 17:07:20 · 133 阅读 · 0 评论 -
深入理解JVM
JVM初理解文章关于本人学习JVM的部分理解,相关内容:类加载器,堆栈,新生区、永久区,内存调优,GC算法等1.JVM体系结构2.类加载器和双亲委派机制2.1类加载器类加载器作用:负责动态加载Java类到Java虚拟机的内存空间中类加载器有三种:由大到小引导(Bootstrap)类加载器:由原生代码(如C语言)编写,不继承自java.lang.ClassLoader,负责加载Java核心库,存储在<JAVA_HOME>/jre/lib目录中。扩展(Extensions)类加原创 2021-07-19 12:18:36 · 177 阅读 · 0 评论