自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(60)
  • 收藏
  • 关注

原创 Netty深入浅出(无处不在的IO)

从图中可以看出用户态与内核态的切换,那么什么是用户/内核态呢?这也是下面的内容。

2023-10-09 23:22:02 1002

原创 MySQL到Oracle快速上手

CREATE MATERIALIZED VIEW 用于创建一个新的物化视图,BUILD IMMEDIATE 或 BUILD DEFERRED 用于指定何时开始构建物化视图,REFRESH FAST、REFRESH COMPLETE 或 REFRESH FORCE 用于指定何时刷新物化视图,START WITH 和 NEXT 用于指定刷新计划,view_name 是物化视图的名称,SELECT statement 是用于创建物化视图的查询语句。如果要比较的字段或表达式等于某个值,则返回该值对应的结果;

2023-08-10 22:28:02 837

原创 WinSCP登陆AWS服务器提示收到了太大的SFTP包

使用WinSCP登录出现以下错误,我的原因是登录用户写成了root,改成AWS默认的ec2-user账户就好了。

2023-03-24 00:05:42 613

原创 谈谈我对volatile的理解

大家在写懒汉单例模式的时候,一定见过这种double check lock的写法//没有第二个判断会创建多个对象 instance = new Singleton05();} }那么这里把instance变量加上volatile修饰有什么作用呢?这行代码是由内部多行指令构成的。jvm可能会进行优化,打乱多条指令的顺序,导致先给instance赋值,然后再执行构造方法。若没有volatile。

2023-02-02 19:17:40 296

原创 Mybatis-Plus代码自动生成器的使用与配置

自己开发项目MP这个框架是很常用的,它的插件自动生成代码用起来效率也很高,但是第一次使用配置还是会睬很多坑,现在来记录一下使用过程。其实生成代码只需要这两个依赖就行了。

2022-11-26 17:43:38 712

原创 Nacos报错 Can‘t find dependent libraries(坑!)

如题所示,nacos好好的突然报了这个错。一搜网上都是说c++组件缺失的原因,但是自己装了还是没用。突然想起来前几天玩《生化奇兵-无限》丢存档,改了windows一个设置解决丢存档问题导致nacos起不来,取消勾选之后果然成功启动nacos了。...

2022-08-30 10:57:53 3410 1

原创 初步理解SpringBoot如何实现自动装配

说到自动装配就要从注解开始,先看看这个复合注解里面包含了什么。是和我们的自动装配直接有关的注解,再来看看它里面包含了什么东西。@SpringBootApplication下的@EnableAutoConfiguration注解包含了和 .里面也是一个注解,用来导入Register这个类。添加该注解的类所在的包作为 自动配置包 进行管理,扫描springboot所在包 将其配置类交给IOC容器管理。而的导入的是这个类。这个导入类的作用可以帮助将所有符合条件的@Configuration配置类交给I

2022-07-04 13:47:23 206

原创 Websocket+SpringBoot+Vuex实现点对点聊天系统

本篇文章主要记录下我是怎么在项目中实现点对点聊天功能的。

2022-04-29 21:59:03 2575 1

原创 一篇入门JVM运行时数据区

概念一个Java进程对应着一个JVM程序,一个JVM只有一个运行时数据区。一个运行时数据区又只有一个堆和方法区。运行时数据区1. PC计数器学过计组的应该对PC计数器不陌生,JVM的PC计数器作用与其大同小异,程序要继续执行则必须知道下一条指令是啥吧。PC(Program Counter,PC)用来存放当前欲执行指令的地址,它与主存的MAR之间有一条直接通路,且具有自加1的功能,即可形成下一条指令的地址。中文名指令计数器外文名PC(program counter)应 用存放下一条指令

2022-04-20 00:37:42 141

原创 从ReentrantLock看AQS(三)

上篇文章主要介绍了ReentrantLock的lock方法,这次来看看unlock的底层是如何实现的。

2022-04-18 23:49:46 161

原创 从ReentrantLock出发看AQS(二)

前言上一篇简要介绍了AQS和ReentrantLock,这一篇主要来看看ReentrantLock的底层是如何调用AQS的。Lock()首先来看看其中一个构造方法,可以选择公平锁或非公平锁。默认下是非公平模式,所以后面的方法默认前提是非公平锁的方法。public ReentrantLock(boolean fair) { this.sync = (ReentrantLock.Sync)(fair ? new ReentrantLock.FairSync() : new Reentra

2022-04-04 20:08:23 349

原创 从ReentrantLock出发看AQS(一)

AQS什么是AQS?是阻塞式锁和相关同步器工具的框架,如ReentrantLock内部就持有这个同步器,具体实现都是调用同步器的API实现加锁解锁==========================ReentrantLock中的Sync================================ private final ReentrantLock.Sync sync; public ReentrantLock() {//默认非公平 this.sync = new R

2022-04-01 23:59:10 549

原创 如何利用RabbitMQ的延迟队列实现文章一段时间后自动处理审核

问题假设有一个需求是文章发布后如果一段时间没有被审核的话就会自动成为已审核状态,或者也可以是成为未通过审核状态。总之需求就是自打文章发布那一刻起就随时携带了一个“定时器”,到点就自动执行某些操作。根据这个特性我们很容易想到利用cron表达式,每隔1s或2s去检查此时距离文章发布时是否达到了指定时间,如果超过了指定时间就执行一段目标程序。 UPDATE `p_post` SET `status` = 1//通过审核状态 WHERE status = 0

2022-03-28 17:32:29 2086

原创 并发编程中关于锁的黑话略解

概念总结一波多线程学习中遇见的术语不可继承Synchronize定义的方法被子类覆盖后并不是同步的,也就是不可继承性虚假唤醒由于wait方法调用后,如果被唤醒就会直接执行wait后面的代码,如果此时wait在一个if判断body中,将不会再次执行判断,所以要用while替代if操作锁对象如果锁的是成员方法,锁对象是this,也就是调用方法的对象,如果是静态方法,则锁对象是类可重入锁Synchronize和Lock都是可重入锁,也就是能自由进出锁和内层锁,递归进入,一个线程可以重复获得同一个

2022-03-26 00:02:12 722

原创 令人头疼的String该怎么破?

String是日常编码中出现频率最高的类之一了吧,但是关于它的知识点可不少,下面就来来聊聊它吧首先我们要知道String不属于Java中的八种基础类型之一,有多少新手曾误以为String是基础类型的都大胆承认吧众所周知String为了保证线程安全和效率的问题采用了不可变设计 @Stable//内部储存String的byte数组成员变量 private final byte[] value;一旦一个string对象在内存(堆)中被创建出来,他就无法被修改。特别要注意的是,String类的所

2022-03-17 20:37:29 660

原创 关于ThreadLocal不得不说的内容

概念每个Thread对象里有一个map,key是ThreadLocal的hashcode,value是我们放入的Object。每个线程都独享一块ThreadLocal Map。内存泄漏Map的Entry继承自WeakReference,所以它的key是弱引用。如果是强引用,即使threadlocal=null,key的引用仍然指向对象,造成内存泄漏。但在某些情况下还是会有内存泄漏的情况当使用static ThreadLocal的时候,延长了ThreadLocal的生命周期,也可能导致内存泄漏

2022-03-13 21:13:48 398

原创 多线程常用方法解析

上篇文章提到了线程的六种状态,这里来介绍一下如何利用线程提供的方法在这些状态之间互相转换。在这之前先初步介绍一下monitor锁,也叫内置锁。synchronize的底层就是它是实现的,它是由操作系统提供的,内部具有WaitSet, EntryList, Owner三个属性。我们经常会用synchronized(object)来实现同步代码块,如果上锁成功,则这个object就关联了一个monitor。Owner指向锁持有线程,在EntryList中的就是BLOCKED状态的线程,WaitSet中的就是

2022-02-28 23:16:39 113

原创 学习多线程前的必备知识

线程与进程对于操作系统来说,一个任务就是一个进程(Process),比如QQ。进程是系统进行资源分配和调度的基本单位在一个进程内部,运行的子任务就是线程(Thread),比如QQ的一个聊天窗口线程是操作系统进行运算调度的最小单位在同一进程中的各个线程,都可以共享该进程所拥有的资源协程运行在线程之上,协程并没有增加线程数量,只是在线程的基础之上通过分时复用的方式运行多个协程线程是动态概念,它的动态特性由线程控制块TCB(Thread Control Block)描述。TCB包括以下信息:(1

2022-02-18 03:15:05 425

原创 一文看懂装饰者模式

学习经典的设计模式的时候装饰者模式真是让人头疼,但是掌握了其基本思想后并不难实现。首先“装饰者”已经告诉了我们两个基本信息要有东西被装饰,可以看作一个核心要有装饰的东西,可以看作不同的属性或功能很简单吧,就两个信息足以让我们写出全部的模板代码。装饰者模式要做的,就是把不同的功能一层一层地包到核心的外面而已。首先设计模式看多了就知道,“核心类”和“装饰类”必然是分为抽象的和具体的类。在此次例子中,咖啡就是我们的核心,需要添加的配料就是我们的装饰。但是首先来看最终的客户端调用代码:publi

2022-02-14 04:23:26 478

原创 Git常用简单命令

git status查看仓库状态git log查看以往仓库提交的日志参数作用-p查看文件前后的差别

2022-02-08 00:44:29 247

原创 MySQL中关于事务的总结

四大特征原子性,要么同时成功,要么同时失败,是不可分割的最小单位持久性,提交或回滚数据库会持久化保存数据隔离性,多个事务之间,相互独立,由锁来实现一致性,数据操作前后,总量保持不变。数据库从一个一致状态变换到另外一个一致性状态事务有关命令set autocommit=0开启:start transation回滚:rollback提交:commitSet @@commit 查询Set @@commit 0代表手动提交,1代表自动提交select @@tx_isolation查询隔离

2022-01-27 23:58:44 219

原创 MySQL关于锁的知识点

不同引擎对于锁的处理是不一样的MyISAM表锁:锁住一整张表加锁 lock table tb_name read/write;解锁 unlock tables读锁会阻塞写,但是不会阻塞读,但是写锁会把读和写的都阻塞。一个客户端持有读锁后不能从其他表读取数据和改写数据,同时其他客户端向读锁锁住的表插入数据时会阻塞show open tables 查看表锁show status like 'table%' 两个变量记录获取锁和等待锁的次数innodb行锁:行为锁的最小单元,索引失效会导致行

2022-01-16 00:33:58 695

原创 MB KB Mb Kb Mbps Kbps小结

刚学习计算机基础知识的时候看到这些单位就头疼,长得都差不多,字母大小写不一样含义就有不同的区别。接下来我们来看看他们的区别。首先我们要知道计算机中最基本的单位bit,也就是位。计算机中常见的二进制如1011很明显就有4位。位的简写就是b,而8个bit(位)就构成了一个字节Byte,简写是B。字节是我们比较熟悉的单位,Java中各种基本类型的字节数你们还记得吗?例如1个int占4个字节,也就是 4 * 8=32位。另外在计算机存储领域中,大写K的意思是210 = 1024。而M表示的是210个K,也就是

2022-01-04 00:55:25 474

原创 Mybatis-Plus乐观锁Version字段不增长

问题在更新带有version字段的对象成功后,数据库里该条记录的version字段没有自增解决从官方文档可以知道updateById的Entity参数必须是从数据库里查出来的,这样更新后才会把version设置为newVersion错误写法正确写法...

2021-10-23 17:23:43 1953 3

原创 Vant UI结合腾讯云COS对象存储实现图片上传

需求在学习开发的过程中,一般接触的都是json对象类型的增删改查,刚开始做项目的时候需要图片上传功能,第一次做还不知道如何实现。一般后端返回给前端图片有两种方法返回base64编码(图片不能太大)返回图片的地址url(可以借助阿里云或七牛等服务)开启COS服务为了节省本机空间在这里我选择腾讯云COS对象储存,把图片存在腾讯云上。注册腾讯云账号可以领取6个月免费的对象储存服务。腾讯云COS地址创建储存桶的时候权限要设置成公有读私有写。一定要把静态网站功能打开,这样就能通过地址访问你上

2021-07-31 00:36:59 689 1

原创 初步学习整合spring security + jwt

前言在做前后端分离的项目需要登录功能,选择了权限框架spring security,这里来记录一下学习整合的过程。什么是jwtjwt是一串加密的字符串,包含了三段信息:第一部分我们称它为头部(header),第二部分我们称其为载荷(payload, 类似于飞机上承载的物品),第三部分是签证(signature) 用户以后每次请求都会带上这个jwt token。代码pom <dependency> <groupId>io.jsonweb

2021-06-03 22:04:51 122 2

原创 SpringBoot集成RabbitMq实现对象传送

需求在储存博客或文章的时候,要同时把文章存入mysql数据库和elasticsearch中,但是串行执行会导致过程太慢,于是用到rabbitmq消息队列,减少业务逻辑反应时间。解决过程controller收到前端的创建的文章实体,先存入mysql,然后将文章放入消息队列,此时可以直接返回创建成功了,不需要在意有没有存入elasticsearch。代码可以自定义消息转换器@Configurationpublic class RabbitMqConfig{ @Bean public

2021-03-10 18:13:21 501

原创 ElementUI 分页组件配合PageHelper使用

需求博客页面分页,前端element的分页组件很容易实现前端<el-pagination style="text-align: center" background //当前页面改变时执行的函数 @current-change="handCurrentChange" //当前页数 :current-page="page.currentPage" layout="prev, pager, nex

2021-02-19 22:27:57 575

原创 ElasticSearch中Date类型转换问题

需求在ES中想储存一个映射类型为Date的字段(createdAt),格式为yyyy-MM-dd HH:mm:ss问题创建mapping映射时指定了format"properties": { "createAt": { "type":"date","format":"yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis" } }} 实体类上加的注解 @JsonFormat(shape = JsonFormat.Shape.STRING, pa

2021-02-10 22:59:51 2951

原创 Element ui + SpringBoot MultipartFile类实现文件上传

目的将前端上传的文件保存到服务器,返回给前端文件在服务器的路径保存至数据库。前端代码<el-upload name="file" class="upload-demo" drag action="http://localhost:8081/media/fileupload/" :on-success="uploadSuccess" :on-error="error" multiple&

2021-01-26 23:15:23 2117

原创 Element UI 图片无法展示问题

目录结构在使用element ui的时候,发现element ui的src和原生的不一样。此时会出现加载失败正确形式:别忘了路径前面的’@'符号!!!变量模板效果

2021-01-19 00:21:51 1684

原创 ElementUI 头像上传后端无法接收 MultipartFile问题

在前端用了ElementUI,当使用上传头像组件的时候发现后端的方法里接受不到MultipartFile类型的参数。后台代码:前台代码:解决办法:在后台参数上加上@RequestParam()注解,括号里写上关键字在前端的 el-upload 组件里加上name属性,值就是参数上的关键字查看log发现接收到了实例...

2020-11-03 22:41:50 1861 2

原创 初学Python实现学校图书馆座位自动抢座预约

最近突然有个想利用python爬取学校图书馆预约的想法(因为图书馆单人的座位很难抢)可是没学过python,就草草了解下python基础语法然后找本《Python3网络爬虫实战》来啃了。首先了解了一波urllib和request库,由于有JavaWeb的基础了解cookie,session等概念所以学起来不难。加上前面有前端的知识,所以看到预约页面的前端元素如此简单便信心满满的开始爬了,可是结果出乎意料。一开始思路就是用request请求带上cookie和请求参数,弄清楚请求参数“roomId”:

2020-09-15 22:03:54 11753 21

原创 Java核心技术卷一(百度云资源)

链接:https://pan.baidu.com/s/1Y8E0IypivSXGjk18Bf1y2g提取码:qeli

2020-09-12 23:45:00 8157 9

原创 享元模式 -- 不可变类

享元模式(Flyweight Pattern)主要用于减少创建对象的数量,以减少内存占用和提高性能,常见的应用就有String类和数据库的连接池String是不可变的,如果在使用过程中发现有这个String对象,就不会去重新创建,而是去引用它。另外对String的subString等操作并不是在原有的String上改变,而是新创建了一个String结果。这种设计提高了效率和性能。public static String newString(byte[] val, int index, int len)

2020-08-27 14:40:49 96

原创 七种单例模式总结

单例模式比较经典和常见,实现的方式也很多,先来做个总结。过程单例模式实现过程:1)将该类的构造函数私有化(禁止其他程序创建该类的对象);2)在本类中自定义一个对象(自己创建一个对象供其他程序使用);3)提供一个可访问类对象的类成员方法(对外提供访问该对象的方式)单例模式还分两个概念#1饿汉式:在类加载时便实例化对象#2懒汉式:调用获得对象的方法时才实例化对象实现此种明显是饿汉式,只暴露给外面一个获得实例的方法。构造函数和静态变量都用private修饰。保证外部无法影响内部且只返回相

2020-08-22 22:18:05 188

原创 ArrayList、Vector、LinkedList源码阅读

ArrayListArrayList是线程不安全的。底层是可扩容的数组实现,所以增删慢而查询快。扩容默认的系数是1.5,也就是说每次会扩容到原来的1.5倍。ArrayList的初始容量为10当add第11个元素时就会扩容到15,oldCapacity >> 1是位运算,其实就是增量 (0.5*oldCapacity),将会和参数minCapacity比较,选出最大的那个进行扩容。private Object[] grow(int minCapacity) { int

2020-08-19 22:40:54 116

原创 图以及图的广度优先(DFS)和深度优先遍历(BFS)

图是一种数据结构,由一些顶点(节点)连接而成。可以用list来保存节点,numOfEdges保存边的条数,用一个同等大小的Boolean数组表示节点是否被遍历过。用邻接矩阵来表示这个图的关系。邻接矩阵:如果两个节点相连则设为1,否则为0,这样便可以构造出一个矩阵。public class Graph { private ArrayList<String> vertexList;//节点 private int[][] edges;//矩阵 private int.

2020-08-06 00:24:40 137

原创 二叉平衡树(AVL)笔记

学了二叉排序树https://blog.csdn.net/qq_44025894/article/details/107452151,虽然起到了增加查找效率的效果,但是有些特殊情况下的树还是很影响效率。比如树的高度太高了查找起来效率依然不高。而平衡树解决了这个问题。平衡树的每一个节点的子树高度之差的绝对值不超过 1 .其他规则和二叉排序树一样。平衡树比较难的方法是如何判断此时已经不满足平衡树的定义了节点Node中的方法://返回左子树的高度 public int getLeftHe

2020-07-26 23:33:02 98

原创 二叉排序树(BST)笔记

什么是二叉排序树二叉排序树中的每一个节点,其值大于左子树的所有节点的值,小于右子树所有节点的值。【7,3,10,12,5,1,9,2】数组组成的BST二叉排序树的查询效率很高,下面是一些关于二叉排序树实现的方法。节点信息class Node { private int val; Node left; Node right; public int getVal() { return val; } public void setVa

2020-07-19 22:20:19 191

空空如也

空空如也

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

TA关注的人

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