
开发学习
文章平均质量分 89
傻羊肖恩
这个作者很懒,什么都没留下…
展开
-
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 · 608 阅读 · 0 评论 -
SpringBoot自动配置原理(超详细)
SpringBoot自动配置原理解析(源码剖析),清楚讲述selectImports()方法中各部分的作用。原创 2022-02-06 23:31:45 · 2324 阅读 · 0 评论 -
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 · 376 阅读 · 0 评论 -
Go学习记录(三)
简介本文为Go学习过程中记录的笔记,参考文档如下:《Go入门指南》接口与反射1. 接口定义:type Namer interface{ Method1(param_list) return_type Method2(param_list) return_type ...}接口定义了一组方法,但是这些方法不包含代码,它们没有被实现,且接口里也不能包含变量。如果有某个类型(或结构体)实现了接口方法集中的所有方法,我们则称该类型(或结构体)实现了该接口。此时,我们可以将该类型原创 2022-01-13 16:08:49 · 201 阅读 · 0 评论 -
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 · 204 阅读 · 0 评论 -
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 · 312 阅读 · 0 评论 -
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 · 224 阅读 · 0 评论 -
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 · 2077 阅读 · 0 评论 -
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 · 307 阅读 · 0 评论 -
Go语言解leetcode(三)
0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 组合总和:39. 组合总和 - 力扣(LeetCode) (leetcode-cn.com)解题思路:采用递归回溯的思想,因为可以一个元素重复用多次,因此每次搜索解决方案都是从当前索引出发,不再搜索前面索引的元素(因为在之前已经搜索过了)。需要注意的点是,由于Go语言底层的影响,这里我是额外写了一个函数来实现递归调用的,也是该程序的主体部分。其中,函数名为:func find(candid原创 2021-12-26 11:41:05 · 592 阅读 · 0 评论 -
Go语言解leetcode(二)
0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 删除有序数组中的重复项?26. 删除有序数组中的重复项 - 力扣(LeetCode) (leetcode-cn.com)解题思路:因为是对有序数组中的数据项进行操作,因此,重复项有以下特点,即重复项的数据与前一项的数据一致。所以我们可以通过设置快慢指针,慢指针指向新数组应该填充新数据的位置,快指针用来遍历旧数组中的元素,当遍历到的元素为新数据项时,将慢指针指向的数据更新,同时慢指针后移,最后返原创 2021-12-24 16:36:54 · 281 阅读 · 0 评论 -
Go语言解leetcode(一)
0. 简介最近在学Go语言,但是没怎么练习,因此在leetcode上用Go语言刷算法题巩固一下Go基础。1. 最接近的三数之和?16. 最接近的三数之和 - 力扣(LeetCode) (leetcode-cn.com)解题思路:先排序然后再去求取目标值,因为这里的要求是三个数,可以在固定一个最小值(三数中的相对最小值)的情况下,将问题转换为求最接近的两数之和,然后对其使用双指针的解法。同时有一个地方需要注意的是,在求绝对值的时候需要自己额外写一个函数,因为math包提供的不支持int只支持float原创 2021-12-22 16:22:20 · 844 阅读 · 0 评论 -
Go学习记录(一)
简介:本文为Go学习过程中记录的笔记,参考文档如下:《Go入门指南》一些介绍1. Go的由来——其中一个点是:“在 Go 语言出现之前,开发者们总是面临非常艰难的抉择,究竟是使用执行速度快但是编译速度并不理想的语言(如:C++),还是使用编译速度较快但执行效率不佳的语言(如:.NET、Java),或者说开发难度较低但执行速度一般的动态语言呢?显然,Go 语言在这 3 个条件之间做到了最佳的平衡:快速编译,高效执行,易于开发。”2. Go的特点:目标是将静态语言的安全性和高效性与动态语言的易开原创 2021-12-17 08:19:14 · 187 阅读 · 0 评论 -
RabbitMQ知识点整理
0. 简介本文为观看B站RabbitMQ学习视频后整理的相关知识点,可能有不足的地方,欢迎指正。RabbitMQ学习——飞哥/狂神1. 什么是AMQP?AMQP模型中定义了三个角色,分别是:exchange交换机,message queue消息队列,binding绑定关系;exchange交换机,用于接收信息生产者生产的消息,在AMQP中消息并不会直接由生产者交给队列,而是通过exchange交换机来进行消息接收,而后根据消息中的部分属性,即表示到达目标队列的信息,由交换机来进行转发,有点原创 2021-12-15 10:53:17 · 2647 阅读 · 0 评论 -
Linux系统(Centos)下单机RabbitMQ环境搭建及下载安装
Linux系统(Centos)下单机RabbitMQ环境搭建及下载安装erlang下载:由于国内访问国外网站下载速度的问题,建议使用镜像下载。而安装RabbitMQ需要安装erlang,还有考虑版本适配的问题,因此需要先安装好erlang再考虑安装RabbitMQ的版本(这里这么操作是因为,在安装erlang的时候找到的资源都是确实一大堆依赖,只有以下的安装方法可以使用,因此只能反过来通过erlang确定RabbitMQ版本)。# 在Linux系统下的cmd窗口调用该命令,将安装包下载到目标文件夹中原创 2021-12-09 18:21:39 · 529 阅读 · 0 评论 -
Redis知识汇总
概述本文属于学习Redis过程中整理的笔记,学习视频为B站狂神Redis视频,可能有部分笔记叙述有误的地方,欢迎指正。狂神说Java-Redis学习基本知识基本知识:Redis有16个数据库,默认使用第一个数据库,可以使用select语句切换数据库,各数据库之间独立;使用 " keys * " 查看当前数据库下的所有key;使用 " flushdb " 清空当前数据库的键值对," flushall " 清除全部数据库中的内容;Redis是单线程的;Redis是基于内存操作的,内存的原创 2021-12-05 16:47:43 · 612 阅读 · 0 评论 -
SpringMVC内容汇总
0. 简介 本文用于记录本人的SpringMVC学习内容以及部分自己的理解,参考资料源自以下: 狂神说Java——SpringMVC fastjson常用方法_authority39的博客-优快云博客_fastjson常用方法 可能有部分理解不到位的地方,不喜勿喷。1. 常规开发流程原创 2021-09-25 00:22:02 · 214 阅读 · 0 评论 -
Spring内容汇总
0. 简介 本文用于记录本人的Spring学习内容以及部分自己对于工厂模式和代理模式的理解,参考资料源自以下: JAVA设计模式之工厂模式(三种工厂模式)-阿里云开发者社区 (aliyun.com) 设计模式(四)——搞懂什么是代理模式 - 知乎 (zhihu.com) 静态代理和动态代原创 2021-09-22 22:55:54 · 151 阅读 · 0 评论 -
MyBatis学习汇总
0. 简介 本文用于记录本人的MyBatis学习内容,只编写了部分个人认为比较常用到的一些知识点,参考资料分别源自以下: MyBatis官方文档 C语言中文网编写资料 B站狂神说Java——MyBatis相关视频 可能有部分理解不到原创 2021-09-19 19:47:33 · 130 阅读 · 0 评论 -
超市订单管理系统(smbms)——后端开发
超市订单管理系统(smbms)——后端开发背景学习b站up遇见狂神说的JavaWeb相关视频做的项目,本人开发经验比较少,不喜勿喷,讲的是一些开发准备还有过程中遇到的一些问题。前期环境搭建MySQL下载,环境搭建和可视化工具,这里用的是NaviCatTomCat下载和环境搭建,这里用的是TomCat10.0.10新建Maven搭建工程,这里用的是模板创建webapp项目遇到的一些问题:MySQL初始化成功,但是无法进入可视化工具,即使用户名和密码正确的情况下,报错the user sp原创 2021-08-28 08:23:09 · 1691 阅读 · 0 评论