自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 linux-随笔(1)

命令格式:$rm -r dir (短选项)$rm --recurive dir (长选项)使用短选项可以合并多个选项文件操作命令:ls,cd,pwd,touch,mkdir,cp,mv,rm,rmdirls——列出参数的属性信息,缺省的话则参数为当前路径下的对象; ls [选项] [参数]-l 以详细信息的形式展示出当前目录下的文件;[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kUT4Vp8M-1652..

2022-05-13 10:53:29 350

原创 AQS——CLH队列维护方法详解

独占模式下的acquire()方法:public final void acquire(int arg) { if (!tryAcquire(arg) && acquireQueued(addWaiter(Node.EXCLUSIVE), arg)) // 如果tryAcquire()获取不到锁的情况下 // 将当前线程包装成Node结点在CLH队列中获取到锁后 // 检测到线程被中断,则调用selfInterrupt

2022-03-28 19:43:04 566

原创 SpringBoot自动配置原理(超详细)

SpringBoot自动配置原理解析(源码剖析),清楚讲述selectImports()方法中各部分的作用。

2022-02-06 23:31:45 2278

原创 Go学习记录(四)

简介本文为Go学习过程中记录的笔记,参考文档如下:《Go入门指南》错误处理与测试1. 定义错误:Go有一个预先定义的error接口类型:type error interface { Error() string}通过调用Error()方法我们可以获取其错误信息。简单的错误可以用以下的方式定义然后在函数中最终返回:err := errors.New("errmsg")也可以自定义错误类型,以文件错误为例:type PathError struct { Op s

2022-01-19 22:40:04 319

原创 Go学习记录(三)

简介本文为Go学习过程中记录的笔记,参考文档如下:《Go入门指南》接口与反射1. 接口定义:type Namer interface{ Method1(param_list) return_type Method2(param_list) return_type ...}接口定义了一组方法,但是这些方法不包含代码,它们没有被实现,且接口里也不能包含变量。如果有某个类型(或结构体)实现了接口方法集中的所有方法,我们则称该类型(或结构体)实现了该接口。此时,我们可以将该类型

2022-01-13 16:08:49 181

原创 Go学习记录(1.5)

简介本文为Go学习过程中记录的笔记,参考文档如下:《Go入门指南》控制结构1. if-else:if condition{ }else if condition{ }else{ }//在Go中,"{"不能成为某一行的开头,"}"若未完结也不能成为某一行的结尾//因为Go的自动补全";"机制,猜测是因为Go会自动在"}"和不带有"{"结尾//的每一行都加上";",因此才不能随便换行更改结构在Go语言中,if后面携带的condition条件,可以内嵌一个初始化语

2022-01-12 21:14:50 175

原创 Go语言解leetcode(六)

0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 字母异位词分组?49. 字母异位词分组 - 力扣(LeetCode) (leetcode-cn.com)解题思路:对需要进行分组的单词进行重新排序,排序规则按照字母顺序设置,这里因为针对操作的类型是[]byte,sort包中并没有提供相关的排序函数,因此需要自己实现比较规则:for _,str := range strs{ s := []byte(str) sort.Slic

2022-01-09 21:40:58 274

原创 Go学习记录(二)

Map1. map是引用类型,可以使用如下声明:var map1 map[keytype]valuetypevar map1 map[string]intmap1 := make(map[string]int)key可以是任意可以用==或者!=操作符进行比较(这里的比较其实是指Hash()返回值的比较)的类型,因此切片、函数、map不能作为key。但是指针和接口类型可以。如果要用结构体作为key需要实现相应的Key()和Hash()方法。map也可以将函数用来作为自己的值,这样可以用来做分支结

2021-12-31 09:16:19 190

原创 Go语言解leetcode(五)

0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 通配符匹配:44. 通配符匹配 - 力扣(LeetCode) (leetcode-cn.com)解题思路:动态规划,具体思路可见这里。通配符匹配 - 通配符匹配 - 力扣(LeetCode) (leetcode-cn.com)func isMatch(s string, p string) bool { lens := len(s) lenp := len(p) fl

2021-12-27 17:35:41 2045

原创 Go语言解leetcode(四)

0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 在排序数组中查找元素的第一个和最后一个元素:34. 在排序数组中查找元素的第一个和最后一个位置 - 力扣(LeetCode) (leetcode-cn.com)解题思路:二分查找,当找到了目标元素时,便向前遍历或者向后遍历找出第一个位置和最后一个位置,然后返回。如果找不到则返回{-1,-1}func searchRange(nums []int, target int) []int {

2021-12-26 19:19:25 280

原创 Go语言解leetcode(三)

0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 组合总和:39. 组合总和 - 力扣(LeetCode) (leetcode-cn.com)解题思路:采用递归回溯的思想,因为可以一个元素重复用多次,因此每次搜索解决方案都是从当前索引出发,不再搜索前面索引的元素(因为在之前已经搜索过了)。需要注意的点是,由于Go语言底层的影响,这里我是额外写了一个函数来实现递归调用的,也是该程序的主体部分。其中,函数名为:func find(candid

2021-12-26 11:41:05 536

原创 Go语言解leetcode(二)

0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 删除有序数组中的重复项?26. 删除有序数组中的重复项 - 力扣(LeetCode) (leetcode-cn.com)解题思路:因为是对有序数组中的数据项进行操作,因此,重复项有以下特点,即重复项的数据与前一项的数据一致。所以我们可以通过设置快慢指针,慢指针指向新数组应该填充新数据的位置,快指针用来遍历旧数组中的元素,当遍历到的元素为新数据项时,将慢指针指向的数据更新,同时慢指针后移,最后返

2021-12-24 16:36:54 258

原创 Go语言解leetcode(一)

0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 最接近的三数之和?16. 最接近的三数之和 - 力扣(LeetCode) (leetcode-cn.com)解题思路:先排序然后再去求取目标值,因为这里的要求是三个数,可以在固定一个最小值(三数中的相对最小值)的情况下,将问题转换为求最接近的两数之和,然后对其使用双指针的解法。同时有一个地方需要注意的是,在求绝对值的时候需要自己额外写一个函数,因为math包提供的不支持int只支持float

2021-12-22 16:22:20 803

原创 Go学习记录(一)

简介:本文为Go学习过程中记录的笔记,参考文档如下:《Go入门指南》一些介绍1. Go的由来——其中一个点是:“在 Go 语言出现之前,开发者们总是面临非常艰难的抉择,究竟是使用执行速度快但是编译速度并不理想的语言(如:C++),还是使用编译速度较快但执行效率不佳的语言(如:.NET、Java),或者说开发难度较低但执行速度一般的动态语言呢?显然,Go 语言在这 3 个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。”2. Go的特点:目标是将静态语言的安全性和高效性与动态语言的易开

2021-12-17 08:19:14 155

原创 RabbitMQ知识点整理

0. 简介本文为观看B站RabbitMQ学习视频后整理的相关知识点,可能有不足的地方,欢迎指正。RabbitMQ学习——飞哥/狂神1. 什么是AMQP?AMQP模型中定义了三个角色,分别是:exchange交换机,message queue消息队列,binding绑定关系;exchange交换机,用于接收信息生产者生产的消息,在AMQP中消息并不会直接由生产者交给队列,而是通过exchange交换机来进行消息接收,而后根据消息中的部分属性,即表示到达目标队列的信息,由交换机来进行转发,有点

2021-12-15 10:53:17 2593

原创 Linux系统(Centos)下单机RabbitMQ环境搭建及下载安装

Linux系统(Centos)下单机RabbitMQ环境搭建及下载安装erlang下载:由于国内访问国外网站下载速度的问题,建议使用镜像下载。而安装RabbitMQ需要安装erlang,还有考虑版本适配的问题,因此需要先安装好erlang再考虑安装RabbitMQ的版本(这里这么操作是因为,在安装erlang的时候找到的资源都是确实一大堆依赖,只有以下的安装方法可以使用,因此只能反过来通过erlang确定RabbitMQ版本)。# 在Linux系统下的cmd窗口调用该命令,将安装包下载到目标文件夹中

2021-12-09 18:21:39 481

原创 Redis知识汇总

概述本文属于学习Redis过程中整理的笔记,学习视频为B站狂神Redis视频,可能有部分笔记叙述有误的地方,欢迎指正。狂神说Java-Redis学习基本知识基本知识:Redis有16个数据库,默认使用第一个数据库,可以使用select语句切换数据库,各数据库之间独立;使用 " keys * " 查看当前数据库下的所有key;使用 " flushdb " 清空当前数据库的键值对," flushall " 清除全部数据库中的内容;Redis是单线程的;Redis是基于内存操作的,内存的

2021-12-05 16:47:43 578

原创 Java关于synchronized的一些问题

0. 介绍——本文内容为自己在学习JVM以及多线程过程中,遇到的一些问题的总结,可能存在一些问题,欢迎指正;参考文章:深入理解Java并发之synchronized实现原理——zejianJava对象的对象头、偏向锁、轻量级锁、重量级锁——Code@Z1. 关于synchronized:MarkWord在32位JVM中的结构如下2. 什么是monitor?每个对象都绑定唯一的monitor嘛?——Java虚拟机中的同步是基于进入和瑞出管程(monitor)对象来实现的,因为每个对象都持有唯一

2021-11-18 16:59:15 391

原创 JVM笔记

0. 简介——本文写于观看B站黑马视频JVM部分记录的笔记,权当保存记录作用。1. 什么是JVM?——Java虚拟机,更准确地说是一套规范,只要实现了这套规范就可以是Java虚拟机,通过Java虚拟机可以实现Java的跨平台运行。2. JVM,JRE,JDK的关系?JVM是Java虚拟机,Java程序都是运行在虚拟机上的;JRE是Java运行时环境,提供了Java应用程序执行时所需要的环境,其中包含了JDK;JDK是Java开发工具包,是整个Java的核心,其中包含了JRE和JVM;3.

2021-11-14 18:33:26 133

原创 关于ThreadLocal,ThreadLocalMap,和Thread的结构

关于ThreadLocal,ThreadLocalMap,和Thread的结构首先,ThreadLocalMap是ThreadLocal的静态内部类;其次,每个Thread中都包含了一个类型为ThreadLocal.ThreadLocalMap的变量threadLocals,也就是说每个线程都有自己独有的ThreadLocalMap;ThreadLocal.ThreadLocalMap内部又有一个静态内部类Entry,用来存放键值对,key为ThreadLocal,value为Object

2021-11-10 10:36:53 313

原创 多线程知识汇总

0.介绍本文只是个人学习过程中的汇总,部分存在一些问题,欢迎指正。1. 什么是并发?什么是并行?并发是指多个线程争夺一个CPU,因为每个线程的执行时间很短,所以在微观上是轮换执行但在宏观上来看却是多个线程同时执行,这就是并发;并行是指在多个CPU的情况下,每个CPU执行不同的线程,实现宏观以及微观上的多个线程同时执行。2. 线程有多少个状态?线程有5个状态,分别是新建,运行,等待,超时等待,终止;线程新建完毕之后调用start之前,就处于新建状态;运行状态分为就绪和正在运行,线程调用了

2021-11-09 15:24:14 305

原创 关于Java的值传递和引用传递的问题

关于Java的值传递和引用传递的问题文章参考:Java只有值传递Java中的参数传递,到底是值传递还是引用传递在认真研究这个问题之前,我一直认为针对于对象,Java是引用传递的。我对于值传递和引用传递的认知是:在传进去的实参中,经过了方法体的执行,对象中的相应内容如果发生了改变,那么就是引用传递,如果没有发生改变,那么是值传递。此处不考虑基本数据类型的情况,因为基本数据类型只有值传递而不存在引用传递。事实上,Java在将对象传给方法时,使用的方式确实是值传递,但对于对象中的相关字段确实也可以改

2021-10-31 00:00:37 145

原创 SpringMVC内容汇总

0. 简介       本文用于记录本人的SpringMVC学习内容以及部分自己的理解,参考资料源自以下:       狂神说Java——SpringMVC       fastjson常用方法_authority39的博客-CSDN博客_fastjson常用方法       可能有部分理解不到位的地方,不喜勿喷。1. 常规开发流程

2021-09-25 00:22:02 188

原创 Spring内容汇总

0. 简介       本文用于记录本人的Spring学习内容以及部分自己对于工厂模式和代理模式的理解,参考资料源自以下:       JAVA设计模式之工厂模式(三种工厂模式)-阿里云开发者社区 (aliyun.com)       设计模式(四)——搞懂什么是代理模式 - 知乎 (zhihu.com)       静态代理和动态代

2021-09-22 22:55:54 131

原创 MyBatis学习汇总

0. 简介       本文用于记录本人的MyBatis学习内容,只编写了部分个人认为比较常用到的一些知识点,参考资料分别源自以下:       MyBatis官方文档       C语言中文网编写资料       B站狂神说Java——MyBatis相关视频       可能有部分理解不到

2021-09-19 19:47:33 117

原创 超市订单管理系统(smbms)——后端开发

超市订单管理系统(smbms)——后端开发背景学习b站up遇见狂神说的JavaWeb相关视频做的项目,本人开发经验比较少,不喜勿喷,讲的是一些开发准备还有过程中遇到的一些问题。前期环境搭建MySQL下载,环境搭建和可视化工具,这里用的是NaviCatTomCat下载和环境搭建,这里用的是TomCat10.0.10新建Maven搭建工程,这里用的是模板创建webapp项目遇到的一些问题:MySQL初始化成功,但是无法进入可视化工具,即使用户名和密码正确的情况下,报错the user sp

2021-08-28 08:23:09 1617

原创 遗传算法解决8数码难题——Java

遗传算法解决8数码难题什么是遗传算法什么是8数码难题解决8数码难题——Java轮盘赌算法思想代码优化参考文章什么是遗传算法​  遗传算法是模拟达尔文生物进化伦的自然选择和遗传学激励的生物进化古欧成的计算模型,它通过模拟自然进化——适者生存,不适者淘汰,的过程搜索对于问题的最优解。​  下面描述遗传算法的基本框架:初始化一个随机种群作为第一代,种群中的个体通过基因实现唯一性,针对我们要解决的问题,不同基因的个体存在不同的适应性,适者生存,不适者被淘汰,通过大自然的选择,存活下来的所有个体进行遗传变异

2021-04-04 00:11:56 849 1

空空如也

空空如也

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

TA关注的人

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