Java学习笔记
文章平均质量分 74
每天进步一点点
天天向上的菜鸡杰!!
生活明朗 万物可爱 人间值得 全力以赴
展开
-
SpringCloud微服之Nacos的学习
springCloud微服务学习之Nacos原创 2022-07-28 17:30:07 · 464 阅读 · 0 评论 -
java如何实现把list数据格式转化为json数据格式
首先在pom.xml文件中加入以下依赖条件:然后在java文件中import com.google.gson.Gson这个包,具体实现代码如下://假设已经从后端获取到list数据,直接把list传到toJson()方法中就行。原创 2022-06-21 22:22:37 · 4562 阅读 · 0 评论 -
Spring中IOC的理解(通俗易懂版)
文章目录1.IOC提出背景2:IOC的核心概念3:IOC的实现方式4:IOC的入门案例(1):思路分析(2):代码解析5:DI入门案例(1):思路分析(2):代码解析1.IOC提出背景代码书写现状:耦合度太高,我们修改一处代码,往往要修改很多出相关联的代码。举例如下:当我们在数据层中不满足BookDaoImpl2中提供的方法了,我们写了新的实现类BookImpl,那么当业务层想要调用数据层中的实现方法的时候,我们就要修改 new 的对象。那么引发问题 我们该一处代码,就要修改与其相关联的代.原创 2022-05-11 10:53:17 · 15796 阅读 · 0 评论 -
java并发之CyclicBarrier(通俗易懂)
文章目录@[TOC](文章目录)一:简介(1):官方解释(2):通俗解释a:CountDownLatch()b:CyclicBarrier()二:小demo一:简介(1):官方解释说到简介那就非得拿他和countdownlatch()进行比较讨论了CountDownLatch是一个同步的辅助类,允许一个或多个线程,等待其他一组线程完成操作,再继续执行。CyclicBarrier是一个同步的辅助类,允许一组线程相互之间等待,达到一个共同点,再继续执行。(2):通俗解释a:CountDown.原创 2022-04-20 12:30:59 · 1985 阅读 · 0 评论 -
java并发之CountdownLatch
一:CountdownLatch1:基本含义CountDownLatch中count down是倒数的意思,latch则是门闩的含义。整体含义可以理解为倒数的门栓,似乎有一点“三二一,芝麻开门”的感觉。CountDownLatch的作用也是如此,==在构造CountDownLatch的时候需要传入一个整数n,在这个整数“倒数”到0之前,主线程需要等待在门口,而这个“倒数”过程则是由各个执行线程驱动的,每个线程执行完一个任务“倒数”一次。总结来说,CountDownLatch的作用就是等待其他的线程都执原创 2022-04-19 12:05:31 · 1717 阅读 · 0 评论 -
Java并发之semaphore(信号量)
文章目录@[toc]1:官方解读2:通俗易懂的例子解析3:代码解析4:Semaphore的应用5:类结构和相关方法(1):类结构(2):acquire()方法(3):release()方法6:总结1:官方解读semaphore信号量就是并发工具类,Semaphore管理着一组许可permit,许可的初始数量通过构造函数设定。当线程要访问共享资源时,需要先通过acquire()方法获取许可。获取到之后许可就被当前线程占用了,在归还许可之前其他线程不能获取这个许可。调用acquire()方法时,如果没有.原创 2022-04-18 10:42:15 · 2197 阅读 · 1 评论 -
Java并发之AQS
一:AQS简介AQS全称为AbstractQueuedSynchronizer,它是一个一个抽象类在AQS中有几个属性和一个双向队列(CLH队列)//头节点private transient volatile Node head;//尾节点private transient volatile Node tail;//状态值private volatile int state;AQS是一个基类,在JUC并发包下,其实现类有ReentrantLock,CountDownLatch,…图原创 2022-04-18 09:32:03 · 331 阅读 · 0 评论 -
java并发之CAS
提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录1:何为CAS2:CAS图示3:CAS和Volatile的关系4:为何CAS效率更高一些5:CAS的特点7:受保护得共享数据类型(1):原子基本数据类型(2):原子引用数据类型7:ABA问题(1):什么是ABA(2):如何解决呢?1:何为CASCAS(Compare And Swap),即比较并交换。是解决多线程并行情况下使用锁造成性能损耗的一种机制。CAS操作包含三个操作数——内存位置(V)、预期原值(A)和新值(B)。.原创 2022-04-12 10:44:22 · 731 阅读 · 0 评论 -
Java并发之volatile
系列文章目录 提示:这里可以添加系列文章的所有文章的目录,目录需要自己手动添加例如:第一章 Python 机器学习入门之pandas的使用提示:写完文章后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录系列文章目录前言一、pandas是什么?二、使用步骤1.引入库2.读入数据总结前言提示:这里可以添加本文要记录的大概内容:例如:随着人工智能的不断发展,机器学习这门技术也越来越重要,很多人都开启了学习机器学习,本文就介绍了机器学习的基础内容。提示:以下是本篇文章正文内容,下面案例原创 2022-04-11 09:49:20 · 614 阅读 · 0 评论 -
面试必问系列之在浏览器中输入URL后到网页显示 其间发生了什么?
1:解析URL网址,从而生成发送给Web服务器的Http请求信息URL 进行解析之后,浏览器确定了 Web 服务器和文件名,接下来就是根据这些信息来生成 HTTP 请求消息了。这里的文件指的就是我们要访问服务器中某个目标文件。2:真实地址查询-----(DNS域名解析)通过浏览器解析 URL 并生成 HTTP 消息后,需要委托操作系统将消息发送给 Web 服务器。但在发送之前,还有一项工作需要完成,那就是查询服务器域名对于的 IP 地址,因为委托操作系统发送消息时,必须提供通信对象的 IP 地址。原创 2022-04-08 15:15:53 · 2229 阅读 · 0 评论 -
Linux常用命令
一.Linux常用命令:目录管理切换目录cd ##;直接切换到某个目录下cd /##/##; 切换到指定文件夹下的目录cd ~;直接返回根目录下列出目录ls -a;全部文件列出ls -l;长数据串列出 包含文件的属性和权限等等ls -al;可以将上方两个上方结合来用创建和删除mkdir ###;创建一个目录rmdir ###;表示删除该目录mkdir -p ##/##/##;表示创建多层目录查看pwd ;查看当前是在哪个目录下复制cp 文件 目录;将文件复制到某个原创 2022-04-07 21:27:14 · 527 阅读 · 0 评论 -
java并发之synchronized实现原理及其优化
1:synchronnized概述synchronized修饰的方法或代码块相当于并发中的临界区,即在同一时刻jvm只允许一个线程进入执行。synchronized是通过锁机制实现同一时刻只允许一个线程来访问共享资源的。另外synchronized锁机制还可以保证线程并发运行的原子性,有序性,可见性。2:synchronized的实现原理Monitor被翻译为监视器或管程每个Java对象都可以关联一个Monitor对象,如果使用synchronized给对象上锁(重量级)之后,该对象头的Mark W原创 2022-04-07 12:19:09 · 585 阅读 · 0 评论 -
手撕单例模式(详解)
一:设计模式概述1:设计模式的概念软件设计模式(Software Design Pattern),又称设计模式,是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。它描述了在软件设计过程中的一些不断重复发生的问题,以及该问题的解决方案。也就是说,它是解决特定问题的一系列套路,是前辈们的代码设计经验的总结,具有一定的普遍性,可以反复使用。其目的是为了提高代码的可重用性、代码的可读性和代码的可靠性。(也就是给我们一种设计代码的模板 避免我们的代码错误太多)2:学习设计模式的意义设计模式原创 2022-03-28 09:49:00 · 1777 阅读 · 0 评论 -
一个对象的创建流程
一:流程加载Person类的信息,(也就是加载Person.class文件 只加载一次)这个就是类加载的几个过程加载 ,将.class文件转化成二进制流加载到JVM的内存的方法区中,并在堆中生成一个Class对象验证准备解析初始化该实例堆当中开辟空间每个类的实例都会记得自己是由哪个Class对象生成的,每个实例都会参考Class对像中有何属性,并在自己的空间上进行开辟。完成对象的初始化隐式初始化 就是 age = 90 name = null;显式初始化 就是构造原创 2022-03-26 09:37:49 · 162 阅读 · 0 评论 -
创建一个对象时,在一个类当中 静态代码块 和普通代码块构造方法 的顺序?
一:前言须知普通代码块,在创建对象实例的时候,会被调用,每创建一次,就调用一次静态代码块,在类加载的时候执行,并且只会执行一次类加载的时机:创建对象实例的时候(new)创建子类实例的时候,父类也会被加载使用类的静态成员时(静态属性,静态方法)二:顺序先执行静态属性 == 静态代码块(这两个按在代码中的顺序)再执行普通代码 == 普通属性再执行构造方法public class text03 { public static void main(String[] args原创 2022-03-26 09:02:56 · 338 阅读 · 0 评论 -
spring boot 中@Mapper和@Repository的区别
一:前言@Mapper和@Repository是常用的两个注解,两者都是用在dao上,两者功能差不多,容易混淆,有必要清楚其细微区别;二:区别@Repository需要在Spring中配置扫描地址,然后生成Dao层的Bean才能被注入到Service层中:如下,在启动类中配置扫描地址:@SpringBootApplication //添加启动类注解@MapperScan("com.anson.dao") //配置mapper扫描地址public class application{原创 2022-03-08 15:54:03 · 369 阅读 · 0 评论 -
解决Spring boot整合mybatis,xml资源文件放置及路径配置问题
一:问题描述1:前言无论你是将mapper.xml文件是和resources建造在一块,还是将mapper.xml文件和mapper放在一块,我们只要修改在yaml当中的mapper-locations的相对路径即可。(前提是你在pom文件中导入了相关的resources路径)2:下方是将mapper.xml和mapper写在了一块3:mapper.xml在resources路径下4:需要在pom中导入的resources路径<resources> <resour原创 2022-02-21 18:26:43 · 8890 阅读 · 1 评论 -
JVM笔记(JVM内存+垃圾回收器)详解
一:java代码的执行流程(引出JVM)首先由程序员编写成.java文件然后由javac(java编辑器)将.java文件编译成.class文件.class文件可以在不同平台/操作系统上的JVM上执行再由JVM编译成可供不同操作系统识别的机器码(0,1二进制)二:JVM来源我们在下载JDK的时候,也就把JVM给下载下来了 (因为JDK包含JRE,JRE包含JVM)1:JRE: Java Runtime EnvironmentJRE顾名思义是java运行时环境,包含了java虚拟机,ja原创 2022-02-17 23:28:54 · 736 阅读 · 0 评论 -
JVM笔记详解之垃圾回收器
一:什么是垃圾回收机制(GC)在C/C++程序中,程序员在内存中主动开辟一段相应的空间来存值。由于内存是有限的,所以当程序不再需要使用该内存空间时,就需要销毁对象并释放其所占用的内存资源,好重新利用这段空间。在C/C++中,释放无用内存空间的事情需要由程序员自己来处理。就是说当程序员认为空间没用了,就手动地释放其占用的内存。但是这样显然非常繁琐,如果有所遗漏,就可能造成资源浪费甚至内存泄露。当软件系统比较复杂,变量多的时候程序员往往就忘记释放内存或者在不该释放的时候释放内存了。有了GC,程序员就不需要再原创 2022-02-17 23:28:00 · 423 阅读 · 0 评论 -
session.setAttribute和request.setAttribute的区别
一:问题的引出我在设置拦截器的时候,将登录信息存在了request作用域当中,我设置登录页面的时候是放行的登录页面的请求的,同时将登录信息是设置在request的作用域中的,可是进入主页面后,我再进入其他页面的时候,又跳到登陆页面了;那么这个拦截器是拦截一切的请求,而我们存在request中的数据已经没了,所以当我们发送新的请求的时候就会被拦截住二:二者的区别request.setAttribute(“curruser”,curruser)这个方法是将curruser这个对象保存在request作原创 2022-02-17 12:34:45 · 775 阅读 · 0 评论 -
类加载机制(整个过程详解)
一:背景类加载机制是在我们的真个java的运行阶段中的其中一个阶段。二:什么是快乐星球(类加载机制)我们编写的 Java 文件都是以.java 为后缀的文件,编译器会将我们编写的.java 的文件编译成.class 文件,简单来说类加载机制就是jvm从文件系统将一系列的 class 文件z转化为二进制流加载 JVM 内存中并生成一个该类的Class对象,为后续程序运行提供资源的动作。三:类加载的流程1:整体的流程图2:各个阶段的解析(1):加载a:加载的类的字节码文件以及二进制文件的来源原创 2022-02-14 18:29:05 · 19625 阅读 · 0 评论 -
反射的基本知识(详解)
一:反射的引出1:问题比如我们给出一个student类 其方法show(),我们将其写入配置文件中;现在我们来一个新的需求说是要改变重写一个show()方法 show()2,那么如何在不修改源码的情况下进行修改,这时我们通过反射就可以完成2:过程student类:public class Student { public void show(){ System.out.println("is show()"); }}配置文件以txt文件为例子(pro.txt):className原创 2022-02-14 16:50:25 · 157 阅读 · 0 评论 -
线程与线程池(一条龙详解)
一:前言一个问题引出的学习笔记并发类库提供的线程池实现有哪些?其实Executors已经为我们封装好了 4 种常见的功能线程池,如下:定长线程池(FixedThreadPool)定时线程池(ScheduledThreadPool )可缓存线程池(CachedThreadPool)单线程化线程池(SingleThreadExecutor)那么接下来就复习一波线程和线程池二:线程1:关于线程的理解自我理解:(这是在javaweb中的文件上传部分 实际用到的线程 来帮助理解线程)原创 2022-02-08 16:59:56 · 2020 阅读 · 0 评论 -
TCP四次挥手(详解)
一:TCP四次挥手1:图示二:TCP四次挥手的过程所谓的四次挥手即TCP连接的释放(解除)。连接的释放必须是一方主动释放,另一方被动释放。挥手之前主动释放连接的客户端结束ESTABLISHED阶段。随后开始“四次挥手”:a:首先客户端想要释放连接,向服务器端发送一段TCP报文,其中:标记位为FIN,表示“请求释放连接“;序号为Seq=U;随后客户端进入FIN-WAIT-1阶段,即半关闭阶段。并且停止在客户端到服务器端方向上发送数据,但是客户端仍然能接收从服务器端传输过来的数据。注意:这里原创 2022-01-25 19:57:29 · 9277 阅读 · 0 评论 -
拥塞控制(详解)
一:TCP的拥塞控制1:是什么(1):是什么(拥塞现象)网络的 吞吐量 与 通信子网 负荷(即通信子网中正在传输的分组数)有着密切的关系。当 通信子网 负荷比较小时,网络的 吞吐量 (分组数/秒)随网络负荷(每个 节点 中分组的平均数)的增加而线性增加。当网络负荷增加到某一值后,若 网络吞吐量 反而下降,则表征网络中出现了拥塞现象。在一个出现拥塞现象的网络中,到达某个 节点 的分组将会遇到无缓冲区可用的情况,从而使这些分组不得不由前一节点重传,或者需要由源节点或源 端系统 重传。当拥塞比较严重时, 通原创 2022-01-23 19:37:29 · 20971 阅读 · 0 评论 -
动态代理的理解
一:动态代理和静态代理的区别静态代理:了解设计模式中的代理模式的童鞋应该都知道,如果想要生成代理类,需要让代理类和被代理类实现同一个接口,并且在代理类中添加被代理类的引用,代理类方法实现中添加代理逻辑,并决定是否调用被代理类方法,这种通过硬编码的方式指定代理类与被代理类的方式,叫静态代理。可以明显看出,静态代理类与被代理类是强耦合的,如果要代理100个类,你就得写100个代理类动态代理:其实动态代理与静态代理的本质一样,最终程序运行时都需要生成一个代理对象实例,通过它来完成相关增强以及业务逻辑,只不过静原创 2022-01-19 13:39:57 · 788 阅读 · 0 评论 -
2021-10-28
想敲代码 想敲代码原创 2021-10-28 11:48:36 · 135 阅读 · 0 评论