java
文章平均质量分 63
衫凉℃
冒的简介
展开
-
死锁简述(死锁产生的四个条件,预防死锁)
死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞状态。1.互斥条件某资源只能一个进(线)程使用,其他无法使用要进行等待,直到资源使用完毕释放资源2.请求和保持即资源请求者在请求其他资源时,保持对原有资源的占有,并不会释放自己所占有的资源3.不可抢占资源请求者不能强制从资源占原创 2022-06-07 22:28:21 · 3490 阅读 · 1 评论 -
java类加载过程(双亲委派机制)
类加载运行全过程通过Java命令执行代码的大体流程如下:其中loadClass的类加载过程有如下几步:加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 验证:校验原创 2022-05-24 17:55:43 · 992 阅读 · 0 评论 -
volatile关键字(数据可见性、重排序、伪共享等)
volatile的特性可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最 后的写入。原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复 合操作不具有原子性(基于这点,我们通过会认为volatile不具备原子性)。volatile仅 仅保证对单个volatile变量的读/写具有原子性,而锁的互斥执行的特性可以确保对整个 临界区代码的执行具有原子性。 64位的long型和double型变量,只要它是volatile变量,对原创 2022-05-23 21:08:49 · 310 阅读 · 0 评论 -
Java内存模型(JMM)
Java内存模型(JMM)JMM定义Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效 果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。JMM 描述的是一种抽象的概念,一组规则,通过这组规则控制程序中各个变量在共享数据区域和私 有数据区域的访问方式,JM原创 2022-05-23 17:40:53 · 188 阅读 · 0 评论 -
并发三大特性
并发和并行目标都是最大化CPU的使用率并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并发三大特性并发编程Bug的源头:可见性、原子性和有序性问题可见性当一个线程修改了共享变量的值,其他线程能原创 2022-05-23 17:12:22 · 98 阅读 · 0 评论 -
深入理解java线程(看这篇就够了)
1. 线程基础知识1.1 线程和进程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中 还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事 本、画图、浏览器 等),也有的程序只 能启动一个实例进程(例如网易云音乐、360 安全卫士等)。操作系统会.原创 2022-05-23 16:13:21 · 412 阅读 · 0 评论 -
java线程池讲解
什么是线程池?线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制。它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可。常见的运用池化思想的有:内存池、数据库连接池。使用线程池的优点如下:1、降低资源的消耗:使得线程可以重复使用,不需要在创建线程和销毁线程上浪费资源2、提高响应速度:任务到达时,线程可以不需要创建即可以执行3、线程的可管理性:线程是稀缺资源,如果无限制的创建会严重影响系统效原创 2022-05-22 21:19:54 · 448 阅读 · 0 评论 -
springMVC的流程(容易看懂)
他来了,他来了,他带着流程图走来了画的不好哈哈哈哈,这就是总的流程图啦~~~~~springMVC的流程1.用户发起请求到前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理器映射器3.处理器映射器找到具体的处理器(可以XML配置或者注解进行查找),生成处理器对象以及处理器拦截器(如果有生成)一并返回DispatcherServlet4.DispatcherServlet调用HandlerAdapter处理器适配器5.原创 2022-05-21 16:58:42 · 196 阅读 · 0 评论 -
Mysql之Explain工具和sql调优标题
Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中explain中的列接下来我们将展示 explain 中每个列的信息。1.id列id列的编号是 select 的序列号,有几个 select 就有几...原创 2022-05-15 22:44:44 · 109 阅读 · 0 评论 -
spring bean的生命周期详解
文章目录序言流程图**具体过程**1.创建BeanFactory2.扫描3.合并BeanDefinition4.加载类5.实例化前6. 实例化7. BeanDefinition的后置处理8. 实例化后9. 填充填充10. 执行Aware11. 初始化前12. 初始化13. 初始化后14.bean销毁序言Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到底是怎么去创建Bean的,也就是先弄明白Bean的生命周期。原创 2022-05-06 17:15:27 · 1902 阅读 · 0 评论 -
spring bean实例化之推断构造方法
Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。一般情况下,一个类只有一个构造方法:要么是无参的构造方法要么是有参的构造方法如果只有一个无参的构造方法,那么实例化就只能使用这个构造方法了。 如果只有一个有参的构造方法,那么实例化时能使用这个构造方法吗?要分情况讨论:使用AnnotationConfigApplicationContext,会使用这个构造方法进行实例化,那么Spring会根据构造方法的参数信息去寻找bean,然后传给构造方法使用ClassP.原创 2022-05-06 15:12:44 · 680 阅读 · 0 评论 -
@Resource和@Autowired的区别
j记得之前有道面试题问的这个,当时不清楚,现在看了西安共同点:两者都可以进行依赖注入,而且效率上也都不多,并没有优劣之分吧不同点:1.@Resource是Java提供的注解但spring支持这个注解,@Autowired是spring提供的注解2.@Autowried只有一个属性,requried,是否是必须的,默认是true,为true的情况下找不到这个注入的bean会报错。进行依赖注入的时候@Autowired是先根据类型(ByType)在spring容器中查找bean,找到多个的话再根据名原创 2022-05-02 15:32:26 · 1017 阅读 · 0 评论 -
spring bean的生命周期
Spring最重要的功能就是帮助程序员创建对象(也就是IOC),而启动Spring就是为创建Bean对象做准备,所以我们先明白Spring到底是怎么去创建Bean的,也就是先弄明白Bean的生命周期。Bean的生命周期就是指:在Spring中,一个Bean是如何生成的,如何销毁的以下是spring baen生命周期的流程图一、 Bean的生成过程1. 生成BeanDefinitionSpring启动的时候会进行扫描,会先调用org.springframework.context.annota原创 2022-05-01 14:44:01 · 306 阅读 · 0 评论 -
深入理解ReentrantLock
ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程安全。相对于 synchronized, ReentrantLock具备如下特点:可中断可以设置超时时间支持多个条件变量与 synchronized 一样,都支持可重入顺便总结了几点synchronized和ReentrantLock的区别:synchronized是JVM层次的锁实现,ReentrantLock是JDK层次的原创 2022-04-18 22:11:03 · 200 阅读 · 0 评论 -
AQS(AbstractQueuedSynchronizer)同步器
什么是AQS?java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer(简称AQS)实现的,AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。JDK中提供的大多数的同步器如Lock, Latch, Barrier等,都是基于AQS框架来实现的一般是通过一个内部类Sync继承 AQS将同步器所有调用都映射到Sync对应的方法AQS具备原创 2022-04-17 21:47:18 · 550 阅读 · 0 评论 -
记一次抽奖活动访问量暴增引发的系统崩溃问题总结
项目场景:项目是一个区域性政府公共服务类的小程序,使用的用户体量还是挺大的。用的是Dubbo + Zookeeper的分布式架构,部署的服务器数量足够,且都是32G,64G的高性能服务器,基本不会存在硬件资源问题。临时进行一次抽奖活动,活动是用户未注册过进行注册,然后进行填写收货地址等信息就能参与抽奖了,已注册过的用户直接登记参与抽奖,就这样的一个活动,当然活动还有其他的逻辑,但总体不复杂。问题描述晚上更新版本后,开启抽奖活动,稍后一个拥有极多粉丝的官方公众号发文推广这次抽奖活动,用户访问量暴增,后原创 2022-04-09 16:52:18 · 896 阅读 · 0 评论 -
手写模拟Spring底层原理
手写模拟Spring底层原理原创 2022-02-17 17:55:53 · 215 阅读 · 0 评论 -
Spring中核心知识点理解
这里将我对Spring中核心知识点记录一下,加深对Spring的底层的理解。分为以下几个模块:Bean的生命周期底层原理依赖注入底层原理初始化底层原理推断构造方法底层原理AOP底层原理Spring事务底层原理但都只是大致流程,后续会针对每个流程详细深入的讲解并分析源码实现。先来看看入门使用Spring的代码:ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(“spring.xml”);U原创 2022-02-17 17:34:22 · 141 阅读 · 0 评论 -
Java dom4j 解析xml格式的返回值
调用一些http请求或者webService请求,有时候会返回一些xml格式的返回值,就不知道怎么解析了,找了一些资料后,完成解析并转化为自己想要的格式。做个记录1.导入pom依赖<dependency> <groupId>dom4j</groupId> <artifactId>dom4j</artifactId> <version>1.6.1</vers原创 2021-04-19 11:37:04 · 533 阅读 · 0 评论 -
Java httpClient 发送post内型的http请求
1.添加pom依赖 <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.12</version> </dependency>2.实现代码public Str原创 2021-04-19 11:19:13 · 261 阅读 · 0 评论 -
java 指定参数生成world文档并插入图片
需求:根据用户信息,以及和他签订合同的企业信息,用这些参数生成一份word的合同文档,并让用户在小程序手写签名,生成一个图片,插入到word文档里的个人签名那里。以前只是利用poi做过一些导入导出excel,这个就没搞过,网上的解决方案也是各种各样的,最终我找到了这样的一套解决方案,使用的是freemarker模板,并测试通过了。1.导入需要的包 <dependency> <groupId>org.freemarker</groupId>原创 2021-01-28 20:27:32 · 904 阅读 · 0 评论 -
Linux java 通过shell脚本一键启动多个jar包
这里使用shell脚本,按照我下面的稍微修改一下举行了#!/bin/shexport EUREKA=medicine-registry-1.0-SNAPSHOT.jarexport USER=medicine-user-service-1.0-SNAPSHOT.jarexport GATEWAY=medicine-gateway-1.0-SNAPSHOT.jarexport AUTH=medicine-auth-service-1.0-SNAPSHOT.jarexport COMMON=med原创 2021-01-23 17:13:39 · 891 阅读 · 0 评论 -
mybatisPlus分页查询total,pages为0解决办法
直接在springboot下面,添加下面的配置类即可@EnableTransactionManagement@Configuration@MapperScan("com.baomidou.cloud.service.*.mapper*")public class MybatisPlusConfig { @Bean public PaginationInterceptor paginationInterceptor() { PaginationInterceptor原创 2021-01-16 10:38:22 · 2440 阅读 · 1 评论 -
java 实现Excel导入导出功能
1.引入maven依赖 <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>4.1.2</version> </dependency> <dependency>原创 2020-12-03 10:04:57 · 423 阅读 · 0 评论 -
spring笔记01
1.IOC容器的最最最最核心思想…ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。第 一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度2.Spring在不指定@Scope的情况下,所有的bean都是单实例的bean,而且是饿汉加载(容器启动实例就创建 好了),指定@Scope为 prototype 表示为多实例的,而且还是懒汉模式加载(IOC容器启动的时候,并不会创建对象,而是 在第一次使用.原创 2020-12-02 20:38:26 · 90 阅读 · 0 评论 -
springboot 启动netty时,springboot内置tomcat无法启动
最近在做netty与硬件对接的一个项目。在网上搜了好多springboot启动netty的方式,好像都不行,有一个实现 CommandLineRunner接口的方式,在本地测试,springboot内置的tomcat和netty都可以启动。但一放到服务器上,tomcat还是无法启动。自己思来想去找不到问题所在。 后面在 这个帖子上[添加链接描述](https://www.v2ex.com/t/553865) 看到了这样一句话:感觉像是 netty 绑定端口的时候阻塞了主线程,导致 springbo...原创 2020-09-17 09:41:21 · 3075 阅读 · 1 评论 -
swaggerUI 配置扫描多个包路径
swaggerUI 配置扫描多个包路径package com.tyzn;import com.google.common.base.Function;import com.google.common.base.Optional;import com.google.common.base.Predicate;import org.springframework.context.annotation.Bean;import org.springframework.context.annotatio原创 2020-09-03 17:31:51 · 2912 阅读 · 3 评论 -
IDEA根据数据库表生成pojo实体类
开发一个项目,有蛮多实体类,字段还特别长,自己是真的懒得一个一个写,用mybatis逆向工程又太麻烦了,于是找到了这么一个方案。1.IDEA连接数据库原创 2020-08-05 19:01:48 · 1109 阅读 · 0 评论 -
简单实现文件上传(前后端)
项目要用到文件上传,很久没写了,记录一下前端代码,一个写在表格中的文件上传按钮 <div class="attachFile flex"> <div> <p><input type="file" id="uploadFile" style="display: initial;border: 0; background: #005394; border-radius:原创 2020-07-07 20:46:23 · 3707 阅读 · 0 评论 -
springboot静态资源无法加载最后原因竟然是拦截器没有生效
今天打开项目,发现页面的样式没了,用F12调试,果不其然,css,js等样式没有加载成功后面看控制台发现报 No mapping for GET 静态资源。很明显,访问静态资源的请求被springboot拦截了。然后我又看自己写的拦截器@Override public void addInterceptors(InterceptorRegistry registry) { logger.info("执行InterceptorRegistry"); regis原创 2020-07-01 17:38:58 · 1066 阅读 · 0 评论 -
elasticsearch判断参数是否为空,执行多条件查询,并分页
这次使用elasticsearch 需要判断前端是否传了参数,如果传了就添加这个查询条件,没传的话,就不要这个查询条件,获得查询结果并分页代码如下 public IMoocJSONResult searchComp(String ulanguage,String ucompname, String utype, String uareaid,Integer pageNo, Integer pageSize){ // 构建查询条件 NativeSearchQueryBuil原创 2020-06-08 20:08:40 · 2080 阅读 · 1 评论 -
elasticSearch availableProcessors is already set to [8], rejecting [8]
使用springboot elasticSearch启动时报org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'apiSearchController': Unsatisfied dependency expressed through field 'compRepository'; nested exception is org.springframework.b原创 2020-06-08 13:09:21 · 2041 阅读 · 1 评论 -
java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider.<init>()
通用mapper初始化报错应该是导错包了原来导的包是下面这个import org.mybatis.spring.annotation.MapperScan;@MapperScan(“com.leyou.user.mapper”)改为:import tk.mybatis.spring.annotation.MapperScan;...原创 2020-03-12 10:50:05 · 121 阅读 · 0 评论 -
liunx centos8安装jdk1.8
1.在Linux 上新建 /usr/java目录2.将下载好的jdk安装包(官网下载即可)上传至 /usr/java目录(我是通过xftp上传的)3.解压 jdk 安装包 tar (解压即可,不用安装)tar -zxvf jdk-8u211-linux-i586.tar.gz4.配置环境变量编辑文件 vim /etc/profile在文件末尾加上export JAVA_HOM...原创 2020-02-08 15:50:36 · 765 阅读 · 0 评论 -
linux环境下安装rabbitmq
1.新建文件夹 mkdir usr/local/rabbitmq2.cd rabbitmq3.上传安装文件依次执行命令:1)rpm -ivh esl-erlang-17.3-1.x86_64.rpm --force --nodeps2)rpm -ivh esl-erlang_17.3-1centos6_amd64.rpm --force --nodeps3)rpm -ivh esl-...原创 2020-03-06 15:11:24 · 401 阅读 · 2 评论 -
rabbitmq安装报 Failed to start LSB: Enable AMQP service provided by RabbitMQ broker错误
今天学习安装了rabbitmq安装完成之后启动一直失败,如下图网上的各种方法都试了还是不行最后用用 rabbitmq-server start命令 提示libraries: libtinfo.so.5: cannot open shared object file: No such file or directory找不到libtinfo.so.5这个依赖包于是我打开lib 和li...原创 2020-03-06 12:28:40 · 4559 阅读 · 0 评论 -
feign报the bean 'item-service.FeignClientSpecification', defined in null, could not be registered.错误
刚开始 学习使用feign,遇到报错Description:The bean 'item-service.FeignClientSpecification', defined in null, could not be registered. A bean with that name has already been defined in null and overriding is di...原创 2020-02-22 15:37:25 · 2098 阅读 · 0 评论