Java多线程基础知识笔记(持续更新)

多线程基础知识笔记 一、线程 1.基本概念 程序(program):是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process):是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程(生命周期)。 进程作为资源分 ... »

定时任务应该这么玩

1.场景 在电商系统中会经常遇到这样一种场景,就是商品的定时上下架功能,总不能每次都手动执行吧,这个时候我们首先想到的就是利用定时任务来实现这个功能。 目前实现定时任务主要有以下几种方式: JDK自带 :JDK自带的Timer以及JDK1.5+ 新增的ScheduledExecutorService ... »

Java基础学习总结笔记

Java基础 Java常用内存区域 栈内存空间:存储引用堆内存空间的地址 堆内存空间:保存每个对象的具体属性内容 全局数据区:保存static类型的属性 全局代码区:保存所有的方法定义 修饰符 权限修饰符 5 修饰符 同一个类中 同一个包中子类无关类 不同包的子类 不同包的无关类 private √ ... »

NIO基础操作

原文链接http://zhhll.icu/2020/05/18/java%E5%9F%BA%E7%A1%80/IO/NIO%E5%9F%BA%E6%9C%AC%E6%93%8D%E4%BD%9C/ NIO 同步非阻塞 阻塞与非阻塞的区别: 阻塞时,在调用结果返回时,当前线程会被挂起,并在得到结果之后 ... »

jdk的动态代理和静态代理你还写不出来嘛???

一、什么叫jdk的代理? 用另外一个对象去代理实际对象的操作 分为动态代理和静态代理二、先说说静态代理 从字面意思来看就是不会改变的,只可以代理某个固定对象的。 静态代理就是通过实现和目标对象实现的同一个接口来代理目标对象。 通俗一点:例如A类实现了B接口,这时候我们要代理A类,我们需要声明一个C类 ... »

周末我把HashMap源码又过了一遍

为什么在Java面试中总是会问HashMap? HashMap一直是Java面试官喜欢考察的题目,无论应聘者你处于哪个级别,在多轮的技术面试中似乎总有一次会被问到有关 HashMap 的问题。 为什么在Java面试中一定会深入考察HashMap?因为 HashMap 它的设计结构和原理的特点,它既可 ... »

Mybatis 批量更新遇到的小问题

小问题 记一个开发过程中因为小细节的遗漏而引发的 "莫名其妙",公司中有个2B(to B)供应链项目,持久层用的是 JPA,这里我就不吐槽 JPA 了,这种 SQL 嵌入在代码里的方式真的不够简洁。 由于是新功能的开发,查询的功能中需要多字段的条件查询,涉及到多张表的关联操作。我试着用 JPA 来写 ... »

MapStruct 解了对象映射的毒

前言 MVC模式是目前主流项目的标准开发模式,这种模式下框架的分层结构清晰,主要分为Controller,Service,Dao。分层的结构下,各层之间的数据传输要求就会存在差异,我们不能用一个对象来贯穿3层,这样不符合开发规范且不够灵活。 我们常常会遇到层级之间字段格式需求不一致的情况,例如数据库 ... »

Java注解(入门级)

Java注解 前言 近日在阅读开源项目,发现项目里好多奇奇怪怪的注解(@DataScope、@Log...)看得我一脸懵,不知道大家是否也有过这样的经历,回想了一下,发现自己对于注解的知识,好像只停留在@Override。。。异常尴尬,所以今天就补补注解这个知识,并把自己的收获记录在此,与大家一同交 ... »

idea创建servlet工程初体验

servlet工程创建 前提:创建项目之前需要配置java环境变量 和tomcat配置,配置完成后进入如下操作。 tomcat 安装和配置参考 https://www.cnblogs.com/xushengyong/p/13734688.html 1、idea创建servlet项目 File-->n ... »

浅谈 Java线程状态转换及控制

线程的状态(系统层面) 一个线程被创建后就进入了线程的生命周期。在线程的生命周期中,共包括新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)这五种状态。当线程启动以后,CPU需要在多个线程之间切换,所以线程也会随之在运行、阻塞、就绪这几种状态之 ... »

tomcat的安装和使用

Tomcat 想必使用java的人都用过,也很熟悉,对于刚入行的java使用者来说还是很重要的,都需要安装,以及简单的使用,随着经验的增长,可能还需要了解更多的内部实现以及出现相关问题的解决。 不过随着现在技术的推进,各种框架也是越来越便利,封装了很多技术细节,比如现在springboot,很简单创 ... »

浅谈Java多线程

线程与进程 什么是进程? 当一个程序进入内存中运行起来它就变为一个进程。因此,进程就是一个处于运行状态的程序。同时进程具有独立功能,进程是操作系统进行资源分配和调度的独立单位。 什么是线程? 线程是进程的组成部分。通常情况下,一个进程可拥有多个线程,而一个线程只能拥有一个父进程。 线程可以拥有自己的 ... »

Debug HashMap

最近跟两个正在找工作的同学聊天,说起集合,都是面试的重灾区,必问的选项,而且在实际的面试中并不会单独提问某一个问题,而是围绕核心知识连环炮提问。所以背面试题治标不治本,还是得读一读源码。谁让这是个面试造火箭,工作拧螺丝的市场氛围,就连CSDN的首页第二张轮播图都在蹭这个热点: 本文主要包括两部分: ... »

Java基础-异常

1、了解Java中的异常体系框架 介绍 异常就是程序运行过程中出现的错误。Java中,阻止当前方法或作用域的情况,称之为异常 Java语言的异常处理框架,是Java语言健壮性的一个重要体现 思想 Java把异常当做对象来处理,并定义一个基类Java.lang.Throwable作为所有异常的超类。在 ... »

你不知道的Java引用

什么是引用 引用就是保存着一块地址(门牌号)的对象,就像C语言的指针那样,引用可以传递某个数据的地址,如果我们想拿到某一条数据,就要先找到他的地址,然后告诉计算机我去拿这个地址的数据,最后计算机就会去磁盘拿到我们要的数据。 其实,在学Java的时候我们就知道了Java的类型可分为基本类型与引用类型 ... »

Java基础-语法基础

一、Java中的关键字和保留字 关键字:某种语言赋予了特殊含义的单词 保留字:没有赋予特殊含义,但是准备日后要使用的单词 二、Java中的标识符 其实就是在从程序中自定义的名词。比如类名、变量名,函数名。包含0-9、a-Z、&、_ 注意: 数字不可以开头 不可以使用关键字 三、Java中的常量和变量 ... »

Debug LinkedList

Debug LinkedList源码 前置知识 LinkedList基于链表,LinkedList的Node节点定义 成员变量 //链表中元素的数量 transient int size = 0; /** * 链表的头节点:用于遍历 */ transient Node<E> first; /** * ... »

Java对象公约

灵魂static关键字 Java规定:方法只能由对象来调用。 换句话来说,在面向对象的思维下,方法与对象存在一种强耦合。 static作用:即使没有初始化对象,也可以调用方法。(类比到属性上同样如此) 被static修饰的数据称为类数据,修饰的方法称为类方法。并且Java推荐使用类名.方法名(或属性 ... »