自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(45)
  • 资源 (2)
  • 收藏
  • 关注

原创 死锁简述(死锁产生的四个条件,预防死锁)

死锁是一种特定的程序状态,在实体之间,由于循环依赖导致彼此一直处于等待之中,没有任何个体可以继续前进。死锁不仅仅在线程之间会发生,存在资源独占的进程之间同样也可能出现死锁。通常来说,我们大多是聚焦在多线程场景中的死锁,指两个或多个线程之间,由于互相持有对方需要的锁,而永久处于阻塞状态。1.互斥条件某资源只能一个进(线)程使用,其他无法使用要进行等待,直到资源使用完毕释放资源2.请求和保持即资源请求者在请求其他资源时,保持对原有资源的占有,并不会释放自己所占有的资源3.不可抢占资源请求者不能强制从资源占

2022-06-07 22:28:21 3042 1

原创 java类加载过程(双亲委派机制)

类加载运行全过程通过Java命令执行代码的大体流程如下:其中loadClass的类加载过程有如下几步:加载 >> 验证 >> 准备 >> 解析 >> 初始化 >> 使用 >> 卸载加载:在硬盘上查找并通过IO读入字节码文件,使用到类时才会加载,例如调用类的main()方法,new对象等等,在加载阶段会在内存中生成一个代表这个类的java.lang.Class对象,作为方法区这个类的各种数据的访问入口 验证:校验

2022-05-24 17:55:43 888

原创 volatile关键字(数据可见性、重排序、伪共享等)

volatile的特性可见性:对一个volatile变量的读,总是能看到(任意线程)对这个volatile变量最 后的写入。原子性:对任意单个volatile变量的读/写具有原子性,但类似于volatile++这种复 合操作不具有原子性(基于这点,我们通过会认为volatile不具备原子性)。volatile仅 仅保证对单个volatile变量的读/写具有原子性,而锁的互斥执行的特性可以确保对整个 临界区代码的执行具有原子性。 64位的long型和double型变量,只要它是volatile变量,对

2022-05-23 21:08:49 241

原创 Java内存模型(JMM)

Java内存模型(JMM)JMM定义Java虚拟机规范中定义了Java内存模型(Java Memory Model,JMM),用于屏蔽掉各种硬件和操作系统的内存访问差异,以实现让Java程序在各种平台下都能达到一致的并发效 果,JMM规范了Java虚拟机与计算机内存是如何协同工作的:规定了一个线程如何和何时可以看到由其他线程修改过后的共享变量的值,以及在必须时如何同步的访问共享变量。JMM 描述的是一种抽象的概念,一组规则,通过这组规则控制程序中各个变量在共享数据区域和私 有数据区域的访问方式,JM

2022-05-23 17:40:53 147

原创 并发三大特性

并发和并行目标都是最大化CPU的使用率并行(parallel):指在同一时刻,有多条指令在多个处理器上同时执行。所以无论从微观还是从宏观来看,二者都是一起执行的。并发(concurrency):指在同一时刻只能有一条指令执行,但多个进程指令被快速的轮换执行,使得在宏观上具有多个进程同时执行的效果,但在微观上并不是同时执行的,只是把时间分成若干段,使多个进程快速交替的执行。并发三大特性并发编程Bug的源头:可见性、原子性和有序性问题可见性当一个线程修改了共享变量的值,其他线程能

2022-05-23 17:12:22 64

原创 深入理解java线程(看这篇就够了)

1. 线程基础知识1.1 线程和进程进程程序由指令和数据组成,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,数据加载至内存。在指令运行过程中 还需要用到磁盘、网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,从磁盘加载这个程序的代码至内存,这时就开启了一个进程。 进程就可以视为程序的一个实例。大部分程序可以同时运行多个实例进程(例如记事 本、画图、浏览器 等),也有的程序只 能启动一个实例进程(例如网易云音乐、360 安全卫士等)。操作系统会.

2022-05-23 16:13:21 351

原创 java线程池讲解

什么是线程池?线程池(ThreadPool)是一种基于池化思想管理和使用线程的机制。它是将多个线程预先存储在一个“池子”内,当有任务出现时可以避免重新创建和销毁线程所带来性能开销,只需要从“池子”内取出相应的线程执行对应的任务即可。常见的运用池化思想的有:内存池、数据库连接池。使用线程池的优点如下:1、降低资源的消耗:使得线程可以重复使用,不需要在创建线程和销毁线程上浪费资源2、提高响应速度:任务到达时,线程可以不需要创建即可以执行3、线程的可管理性:线程是稀缺资源,如果无限制的创建会严重影响系统效

2022-05-22 21:19:54 323

原创 springMVC的流程(容易看懂)

他来了,他来了,他带着流程图走来了画的不好哈哈哈哈,这就是总的流程图啦~~~~~springMVC的流程1.用户发起请求到前端控制器DispatcherServlet2.DispatcherServlet收到请求调用HandlerMapping处理器映射器3.处理器映射器找到具体的处理器(可以XML配置或者注解进行查找),生成处理器对象以及处理器拦截器(如果有生成)一并返回DispatcherServlet4.DispatcherServlet调用HandlerAdapter处理器适配器5.

2022-05-21 16:58:42 170

原创 Mysql之Explain工具和sql调优标题

Explain工具介绍使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是 执行这条SQL注意:如果 from 中包含子查询,仍会执行该子查询,将结果放入临时表中explain中的列接下来我们将展示 explain 中每个列的信息。1.id列id列的编号是 select 的序列号,有几个 select 就有几...

2022-05-15 22:44:44 64

原创 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 1403

原创 spring bean实例化之推断构造方法

Spring中的一个bean,需要实例化得到一个对象,而实例化就需要用到构造方法。一般情况下,一个类只有一个构造方法:要么是无参的构造方法要么是有参的构造方法如果只有一个无参的构造方法,那么实例化就只能使用这个构造方法了。 如果只有一个有参的构造方法,那么实例化时能使用这个构造方法吗?要分情况讨论:使用AnnotationConfigApplicationContext,会使用这个构造方法进行实例化,那么Spring会根据构造方法的参数信息去寻找bean,然后传给构造方法使用ClassP.

2022-05-06 15:12:44 617

原创 @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 961

原创 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 264

原创 深入理解ReentrantLock

ReentrantLock是一种基于AQS框架的应用实现,是JDK中的一种线程并发访问的同步手段,它的功能类似于synchronized是一种互斥锁,可以保证线程安全。相对于 synchronized, ReentrantLock具备如下特点:可中断可以设置超时时间支持多个条件变量与 synchronized 一样,都支持可重入顺便总结了几点synchronized和ReentrantLock的区别:synchronized是JVM层次的锁实现,ReentrantLock是JDK层次的

2022-04-18 22:11:03 168

原创 AQS(AbstractQueuedSynchronizer)同步器

什么是AQS?java.util.concurrent包中的大多数同步器实现都是围绕着共同的基础行为,比如等待队列、条件队列、独占获取、共享获取等,而这些行为的抽象就是基于AbstractQueuedSynchronizer(简称AQS)实现的,AQS是一个抽象同步框架,可以用来实现一个依赖状态的同步器。JDK中提供的大多数的同步器如Lock, Latch, Barrier等,都是基于AQS框架来实现的一般是通过一个内部类Sync继承 AQS将同步器所有调用都映射到Sync对应的方法AQS具备

2022-04-17 21:47:18 497

原创 记一次抽奖活动访问量暴增引发的系统崩溃问题总结

项目场景:项目是一个区域性政府公共服务类的小程序,使用的用户体量还是挺大的。用的是Dubbo + Zookeeper的分布式架构,部署的服务器数量足够,且都是32G,64G的高性能服务器,基本不会存在硬件资源问题。临时进行一次抽奖活动,活动是用户未注册过进行注册,然后进行填写收货地址等信息就能参与抽奖了,已注册过的用户直接登记参与抽奖,就这样的一个活动,当然活动还有其他的逻辑,但总体不复杂。问题描述晚上更新版本后,开启抽奖活动,稍后一个拥有极多粉丝的官方公众号发文推广这次抽奖活动,用户访问量暴增,后

2022-04-09 16:52:18 847

原创 手写模拟Spring底层原理

手写模拟Spring底层原理

2022-02-17 17:55:53 181

原创 Spring中核心知识点理解

这里将我对Spring中核心知识点记录一下,加深对Spring的底层的理解。分为以下几个模块:Bean的生命周期底层原理依赖注入底层原理初始化底层原理推断构造方法底层原理AOP底层原理Spring事务底层原理但都只是大致流程,后续会针对每个流程详细深入的讲解并分析源码实现。先来看看入门使用Spring的代码:ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(“spring.xml”);U

2022-02-17 17:34:22 94

原创 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 485

原创 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 214

原创 linux查看端口是否被占用

netstat -anp |grep 80另外 测试端口是否可以连接 telnet 对应IP 对应端口

2021-02-23 16:52:34 65

原创 linux 设置tomcat运行内存

修改bin目录下的 catalina.sh添加下面的代码JAVA_OPTS=’-Xms256m -Xmx1024m -XX:PermSize=128m -XX:MaxPermSize=256m’-Xms128m JVM初始分配的堆内存-Xmx512m JVM最大允许分配的堆内存,按需分配-XX:PermSize=64M JVM初始分配的非堆内存-XX:MaxPermSize=128M JVM最大允许分配的非堆内存,按需分配...

2021-02-23 16:48:07 2022

原创 设置mysql允许远程访问

长话短说先登录mysql mysql -u root -p输入密码:设置允许远程访问:GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘你的密码’ WITH GRANT OPTION刷新 FLUSH PRIVILEGES;

2021-02-23 16:04:49 77

原创 java 指定参数生成world文档并插入图片

需求:根据用户信息,以及和他签订合同的企业信息,用这些参数生成一份word的合同文档,并让用户在小程序手写签名,生成一个图片,插入到word文档里的个人签名那里。以前只是利用poi做过一些导入导出excel,这个就没搞过,网上的解决方案也是各种各样的,最终我找到了这样的一套解决方案,使用的是freemarker模板,并测试通过了。1.导入需要的包 <dependency> <groupId>org.freemarker</groupId>

2021-01-28 20:27:32 801

原创 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 828

原创 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 2334 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 384

原创 spring笔记01

1.IOC容器的最最最最核心思想…ioc的思想最核心的地方在于,资源不由使用资源的双方管理,而由不使用资源的第三方管理,这可以带来很多好处。第 一,资源集中管理,实现资源的可配置和易管理。第二,降低了使用资源双方的依赖程度,也就是我们说的耦合度2.Spring在不指定@Scope的情况下,所有的bean都是单实例的bean,而且是饿汉加载(容器启动实例就创建 好了),指定@Scope为 prototype 表示为多实例的,而且还是懒汉模式加载(IOC容器启动的时候,并不会创建对象,而是 在第一次使用.

2020-12-02 20:38:26 73

原创 nginx 反向代理解决前后端分离跨域问题

修改nginx.confproxy_pass http://127.0.0.1:8088/html; 你重定向的位置server { listen 80; server_name 127.0.0.1; #charset koi8-r; #access_log logs/host.access.log main; location /html/ { proxy_pass http://12

2020-10-26 19:51:49 121 1

原创 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 2842 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 2790 3

原创 IDEA根据数据库表生成pojo实体类

开发一个项目,有蛮多实体类,字段还特别长,自己是真的懒得一个一个写,用mybatis逆向工程又太麻烦了,于是找到了这么一个方案。1.IDEA连接数据库

2020-08-05 19:01:48 1020

原创 简单实现文件上传(前后端)

项目要用到文件上传,很久没写了,记录一下前端代码,一个写在表格中的文件上传按钮 <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 3668

原创 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 1011

原创 elasticsearch判断参数是否为空,执行多条件查询,并分页

这次使用elasticsearch 需要判断前端是否传了参数,如果传了就添加这个查询条件,没传的话,就不要这个查询条件,获得查询结果并分页代码如下 public IMoocJSONResult searchComp(String ulanguage,String ucompname, String utype, String uareaid,Integer pageNo, Integer pageSize){ // 构建查询条件 NativeSearchQueryBuil

2020-06-08 20:08:40 1988 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 1997 1

转载 linux常用命令

1、ls命令就是 list 的缩写,通过 ls 命令不仅可以查看 linux 文件夹包含的文件,而且可以查看文件权限(包括目录、文件夹、文件权限)查看目录信息等等。常用参数搭配:ls -a 列出目录所有文件,包含以.开始的隐藏文件ls -A 列出除.及…的其它文件ls -r 反序排列ls -t 以文件修改时间排序ls -S 以文件大小排序ls -h 以易读大小显示ls -l 除...

2020-03-28 19:27:53 134

转载 linux内存不够

刚接触服务器的时候 什么都不懂 于是便买了台阿里最低配的服务器结果在安装需要大量内存的软件的时候 内存不够用了 linux自动杀死了这个安装过程….解决方案 : 创建 swap 分区1 创建文件夹 mkdir /developer/2设置交换分区大小 dd if=/dev/zero of=/developer/swap bs=2048 count=20480003创建交换分区 mkswa...

2020-03-19 19:24:05 146

原创 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 101

原创 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 311 2

vue-dev-tools.rar

chrome浏览器vue开发调试插件,解压添加到chrome浏览器扩展程序,即可使用!!!!!!!!

2020-02-23

openssh-8.1p1-1.el7.x86_64.tar.gz

openssh8.1 linux版 OpenSSH是使用SSH透过计算机网络加密通讯的实现。它是取代由SSH Communications Security所提供的商用版本的开放源代码方案。目前OpenSSH是OpenBSD的子计划。 OpenSSH常常被误认以为与OpenSSL有关联,但实际上这两个计划的有不同的目的,不同的发展团队,名称相近只是因为两者有同样的软件发展目标──提供开放源代码的加密通讯软件。

2020-01-14

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除