- 博客(1156)
- 收藏
- 关注
原创 【Mac】将微信安装到移动硬盘
这里仅针对下载的.dmg文件,如果是AppStore里面的APP不适用。双击之后,不要将应用拖到旁边的文件夹中,而是拖入你的移动硬盘中。当然最好你也在移动硬盘中建立一个类似的文件夹,方便查找和管理。现在mac的软件必须要把软件安装到里。mac自带的磁盘工具里,将磁盘格式化成APFS格式。名字随便取,自己觉得好听记得就行。
2025-03-10 11:35:53
1025
原创 【Git】文件操作 - 误删除
其实平日开发中最多的误操作是这样:刚刚提交完,突然发现了问题,比如提交信息没写好,或者代码更改有遗漏,这时需要撤回到上次提交,修改代码,然后重新提交。这个命令会直接修改当前的提交信息。如果代码有更改,先执行 git add,然后再执行这个命令,比上述的流程更快捷更方便。git revert 版本号,这个版本号是恢复到哪个提交。解决办法:reset(重置),即恢复到上一个版本。option 参数的选项有以下几种。如果需要远程仓库也回退,可以使用“”强制推送到远程仓库。
2025-03-06 20:00:09
313
原创 使用轻量应用服务器搭建图床(整合Typora、PicGo版)
我们需要通过Nginx设置一个网站,用来展示我们的图片,因为我们刚刚已经通过宝塔安装Nginx,所以在这再设置一个网站::默认创建的文件没有用可以删掉。
2024-12-10 15:08:25
391
原创 使用IDEA查看Maven依赖关系
图中的红色实线就算是冲突的,可以入上图那样,右键,排除,他就自动在pom文件里面给exclud啦。还有一种是虚线的红线,这种虚线,告诉你同一个jar都在哪里被多次引用了。图标,它会帮助你根据当前你选择的布局重新排列。但是这个图很乱很杂,我们需要对它进行调整。此时展现的图标就非常有条理。可以将图标调整到合适大小。Windows电脑按。,使拐角圆滑变为直接。
2024-12-07 21:13:53
1799
原创 SpringBoot整合Logback日志框架
在application.yml中添加logging:pattern:1234该属性用于定制日志控制台输出格式。该属性用于定制日志文件输出格式。上述配置的编码中,对应符号的含义如下%d{HH:mm:ss.SSS}——日志输出时间%thread——输出日志的进程名字,这在Web应用以及异步任务处理中很有用%-5level——日志级别,并且使用5个字符靠左对齐%logger- ——日志输出者的名字%msg——日志消息%n——平台的换行符123456。
2024-12-07 21:13:09
1288
原创 Logback
Logback是基于slf4j的日志规范实现的框架,性能比之前使用的log4j要好官方网站:https://logback.qos.ch/index.htmllogback主要分为三个技术模块:该模块为其他两个模块提供基础代码,必须有:完整实现了slf4j API的模块。:与Tomcat 和 Jetty 等Servlet容器集成,以提供HTTP方法日志功能。由于logback是一个基于slf4j的日志框架,slf4j是规范,规范中都是接口,因此需要导入。
2024-12-07 21:12:18
802
原创 【Docker】基于CentOS7安装DockerCompose
一旦配了自动补全,将来我们再去用DockerCompose时它会有提示,比较方便。第二种方式:使用课前资料提供的docker-compose文件上传到。方式一:在GitHub慢慢下,但是速度特别的慢,不建议大家这么做。到这里DockerCompose安装就结束了。修改文件权限:添加执行权。
2024-11-28 20:07:20
381
原创 【Docker】Docker-Compose
在前面几章,我们已经实现了用Docker来部署像Redis、MySQL这样的中间件,还有利用Dockerfile实现微服务的自定义镜像构建、docker部署,但是所有的这些部署都是我们手动一个个去完成的,但是在实际生产环境中,微服务的数量非常多,这么多微服务我们都一个个去构建,肯定受不了,所以我们一定要有一种集群部署的手段,那么这就是我们这一章要学习的Docker Compose。但是它来做集群部署,是要基于Compose文件才行的。下面这只章鱼手上拿的是容器,它在帮我们部署容器。
2024-11-28 20:06:32
397
原创 【Docker】Dockerfile语法
构建自定义的镜像时,并不需要一个个文件去拷贝,打包。我们只需要告诉Docker,我们的镜像的组成,需要哪些BaseImage、需要拷贝什么文件、需要安装什么依赖、启动脚本是什么,将来Docker会帮助我们构建镜像。而描述上述信息的文件就是Dockerfile文件。Dockerfile就是一个文本文件,里面有很多指令(Instruction),这些指令就是来描述你这个镜像内部是如何构建的,它可以当做是镜像构建的说明书,将来docker会按照里面的指令去构建好我们的镜像,每一个指令都会形成一层Layer。
2024-11-27 20:07:13
819
原创 【Docker】镜像结构
镜像是分层结构,每一层称之为一个Layer。BaseImage层:包含基本的系统函数库、环境变量、文件系统Entrypoint:入口,是镜像中应用启动的命令除非你这个镜像不想让别人启动,这样的镜像才不需要入口其他:在BaseImage基础上添加依赖、安装程序、完成整个应用的安装和配置。这一步里面的具体操作我们就不能确定了,因为镜像在构建的时候它中间要做哪些动作,我们不知道,但是我们可以知道的是:每做一次操作一定会产生新的一层。
2024-11-27 20:06:21
321
原创 使用轻量应用服务器搭建图床
如果一切顺利的话,可以在用户主目录里找到.ssh目录,里面有id_rsa和id_rsa.pub两个文件,这两个就是SSH Key的秘钥对,id_rsa是私钥,不能泄露出去,id_rsa.pub是公钥,可以放心地告诉任何人。不可以,CNAME 域名为腾讯云 CDN 分配给每个域名的专属加速地址,不可以直接作为访问域名使用,需要用户将接入的业务域名 CNAME 到该地址上,访问用户的业务域名,即可有 CDN 加速效果。使用 DNS 解析验证的方式,需要您前往该域名的解析服务商,在主域名下添加一个主机记录值为。
2024-11-27 00:06:21
1168
原创 【Docker】将容器目录挂载到宿主机目录上
而docker挂载时,只需要挂载到卷上就可以了,它不需要关心你这个目录在哪里,这种方式就相当于全部交给docker去处理了,我们不用去操心。数据存储目录和容器的配置文件都可以到官方文档中找到,这个配置文件不建议大家去覆盖它,因为它里面有很多东西,我们写的只是简化的配置,因此我们不覆盖它,我们看一看就这个文件里面包含了两个目录:以。我知道我创建的目录在哪,将来也没有人帮我做代理,我直接挂上去就行了,因此将来我想要快速的定位到这个文件,一目了然就知道了。这个目录不是我们创建的,目录结构也比较深,找比较麻烦。
2024-11-23 22:26:05
2115
原创 【Docker】挂载数据卷
上个案例中,我们进入nginx容器内部,已经知道nginx的html目录所在位置/usr/share/nginx/html ,我们需要把这个目录挂载到html这个数据卷上,方便操作其中的内容。PS:在做数据卷挂载时,这个数据卷不存在的话,docker会自动创建卷,所以大多数情况下我们没必要自己去刻意的创建数据卷,都可以由docker自动完成。在做数据卷挂载时,这个数据卷不存在的话,docker会自动创建卷,所以大多数情况下我们没必要自己去刻意的创建数据卷,都可以由docker自动完成。
2024-11-23 22:25:03
392
原创 【Docker】数据卷(容器数据管理)
在之前的nginx案例中,修改nginx的html页面时,需要进入nginx内部。并且因为没有编辑器,修改文件也很麻烦。这就是因为容器与数据(容器内文件)耦合带来的后果。要解决这个问题,必须将数据与容器解耦,这就要用到数据卷了。
2024-11-22 13:00:16
1119
原创 【Docker】容器操作
docker run,这个命令不仅仅可以帮助我们创建一个容器,而且还可以让这个容器处于运行状态。容器除了运行状态,还会有暂停、停止这两个状态。运行:进程正常运行暂停:进程暂停,CPU不再运行,并不释放内存停止:进程终止,回收进程占用的内存、CPU等资源可以让容器从运行进入暂停。可以让容器从暂停恢复运行。可以让容器从运行变成停止。可以让容器从停止恢复运行。停止和暂停差别主要在于操作系统的处理方式。
2024-11-10 08:50:13
497
原创 【Docker】镜像操作
如下图:这里有一个mysql:5.7的镜像,冒号前的mysql就是一个repository,而冒号之后的5.7就是tag(版本),合一起就是镜像名称,代表5.7版本的MySQL镜像。Usage后面给出的是命令的示例,IMAGE:你要导出的是哪个镜像,写的是镜像的名字。点进去后,可以看见它有很多不同的版本,如果不指定版本的时候,它就是默认最新版(latest), 它的作用就是:列出所有的镜像,并且还有各种各样的参数,每个参数什么含义这里都有说明。在没有指定tag时,默认是latest,代表最新版本的镜像。
2024-11-10 08:49:20
2559
原创 【Docker】CentOS安装Docker
Docker可以安装在各种系统上。企业部署一般都是采用Linux操作系统,而其中又数CentOS发行版占比最多,因此我们在CentOS下安装Docker。Docker 分为 CE 和 EE 两大版本。CE 即社区版(免费,支持周期 7 个月),EE 即企业版,强调安全,付费使用,支持周期 24 个月。Docker CE 分为stabletest和nightly三个更新频道。官方网站上有各种环境下的安装指南,这里主要介绍 Docker CE 在 CentOS上的安装。
2024-11-08 20:43:51
996
原创 Docker架构
为了避免这些重复劳动,人们就会将自己打包的应用镜像,例如Redis、MySQL镜像放到网络上,共享使用,就像GitHub的代码共享一样,GitHub是做代码托管的,而DockerHub是做镜像托管的。比如之前讲过的MySQL镜像,它里面就有各种各样所需要的依赖,这些东西最终落地到硬盘,其实就是硬盘中的文件,例如下图有MySQL写数据的data目录文件、还有logs日志文件、bin里的可执行文件,还有就是MySQL所需要的各种各样的函数库了。这个文件包是只读的。及其运行的操作系统依赖打包,形成QQ镜像。
2024-11-08 20:42:54
687
原创 【Docker】Docker和虚拟机的区别
我们的虚拟机它是在一个系统里装了另外的一个系统,所以当应用执行时它会以为自己在一台真实的电脑上,因此它会去调用这个内置的操作系统,然后它再与Hypervisor进行交互,然后再把信息传递给了我们的web操作系统,web操作系统再去调用计算机硬件,于是我们的应用执行就完成了,此时它经过了层层的传递,所以它的性能相对来讲是比较差一点的。Docker可以让一个应用在任何操作系统中非常方便的运行。并且虚拟机启动的时候需要启动虚拟的计算机的操作系统,等于把这个计算机重启了一遍,然后再去启动虚拟操作系统上面的应用。
2024-11-01 10:03:36
619
原创 【Docker】初识Docker
可以将程序及其依赖、运行环境一起打包为一个镜像,可以迁移到任意Linux操作系统运行时利用沙箱机制形成隔离容器,各个应用互不干扰启动、移除都可以通过一行命令完成,方便快捷。
2024-11-01 10:02:55
697
原创 【MySQL】数据库中有个字段为JSON,需求:筛选JSON里面的字段
需求:写出mapper xml文件,我想要查找sys_data表中data字段,其中data字段是一个JSON,图二中的map参数,需要让JSON中的key与map中的key相等并且value也相等的数据,图三为sys_data表结构,请拿map中存储’key1’->'1’举例。
2024-09-11 18:15:04
543
原创 MyBatisPlus3向数据库中存入List
官网:https://baomidou.com/guides/type-handler/#%E9%85%8D%E7%BD%AE。
2024-08-17 17:06:52
555
原创 【SpringCloud】搭建eureka-server(Eureka注册中心)
依赖的结尾是:eureka-server,说明它是eureka的服务端依赖,中间的starter,是SpringBoot里面的自动装配,也就是说在这个依赖里面已经把eureka所有的配置都已经做好了,也就是说我们可以做到0配置就能拿来用了。如果有多个,则以逗号隔开,但由于这里是单机,所以这里配的是自己。后面显示不像IP的原因是,这里是windows,后面显示的是计算机名,理论上讲,这里应该显示ip,这里理论上讲可以理解成:localhost(即自己电脑的名称)这里的服务名称和服务地址其实是在做服务注册。
2024-08-08 11:05:23
1630
原创 【SpringCloud】Ereka-eureka原理分析
这样的一种写法,它其实是有一定问题的:在公司里开发的时候,我们会有开发环境、测试环境、生产环境等等,每一次环境的变更,可能服务的地址也会发生变化。然后再利用负载均衡从三个user-service中挑一个,向挑好的发请求,并且挑好的这个不可能是挂的,因为服务每隔30秒钟都会向Eureka发一次心跳,来确认一下自己的状态。如果有一天它不跳了,就会把它从列表中剃掉。这些问题都需要利用SpringCloud中的注册中心来解决,其中最广为人知的注册中心就是Eureka,其结构如下,起到的作用就是:记录和管理微服务。
2024-08-07 12:10:37
751
原创 【SpringCloud】Kureka-提供者与消费者
但是,服务提供者与服务消费者的角色并不是绝对的,而是相对于业务而言。如果服务A调用了服务B,而服务B又调用了服务C,服务B的角色是什么?:一次业务中,调用其它微服务的服务。(调用其它微服务提供的接口):一次业务中,被其它微服务调用的服务。(提供接口给其它微服务)提供者与消费者角色其实是。
2024-08-07 12:09:52
348
原创 【SpringCloud】服务拆分-服务远程调用
在order-service服务中,有一个根据id查询订单的接口:根据id查询订单,返回值是Order对象,如图:其中的user为null在user-service中有一个根据id查询用户的接口:修改order-service中的根据id查询订单业务,要求在查询订单的同时,根据订单中包含的userId查询出用户信息,一起返回。从订单模块向用户模块发起远程调用,然后把查到结果做一个组合。
2024-08-07 12:09:22
476
原创 【SpringCloud】认知微服务-SpringCloud
其中,Hoxton 是 Spring Cloud 的一个大版本系列名称,而 .SR10 表示它是 Hoxton 系列的第10个 Service Release(修正版或更新版)。在软件开发中,Service Release 通常是针对前一个正式版发布之后收集到的问题和需求进行修复与改进的一个版本,相比于主要版本更新,它更注重于对现有功能的稳定性和错误修复。这些功能其实大多数都是从其他公司开源的组件整合进来的。我们课堂学习的版本是 Hoxton.SR10,因此对应的SpringBoot版本是2.3.x版本。
2024-08-07 12:08:13
438
原创 【SpringCloud】微服务技术对比
所以阿里巴巴也认识到了这一点,因此在近几年,其实也是在不断地去奋起直追,想办法追赶SpringCloud的脚步,它逐渐的实现了自己的注册中心、配置中心、服务监控等等组件,形成一套技术栈,起了个名字叫:SpringCloudAlibaba。首先,它们都需要去做微服务的拆分,形成微服务集群。将来如果需要有些配置要修改,手动修改会十分麻烦,所以在微服务里面还会有一个配置中心,可以统一的去管理整个微服务群的配置,如果将来有变更,我们也可以利用通知的方式去让对应的服务监控到配置的变化,从而实现配置的热更新。
2024-08-07 12:07:37
764
原创 【SpringCloud】服务架构演变
单体架构特点?简单方便,高度耦合,扩展性差,适合小型项目。例如:学生管理系统分布式架构特点?松耦合,扩展性好,但架构复杂,难度大。适合大型互联网项目,例如:京东、淘宝微服务:一种良好的分布式架构方案优点:拆分粒度更小、服务更独立、耦合度更低缺点:架构非常复杂,运维、监控、部署难度提高。
2024-08-07 12:07:02
1234
原创 【Redis】分布式锁-Redission快速入门
并且官方还提供了一个Redission-springboot-starter,但这种方式并不推荐大家去使用,因为它会去替代spring官方提供的对于redis的这套配置和实现。Redission的配置其实有两种方式,这是一种利用Java配置方式来实现,事实上它也可以利用yml文件跟SpringBoot去整合实现。注入RedissonClient。
2024-08-07 12:04:37
358
原创 【Redis】分布式锁-redission
我们一路走来,利用添加过期时间,防止死锁问题的发生,但是有了过期时间之后,可能出现误删别人锁的问题,这个问题我们开始是利用删之前 通过拿锁,比锁,删锁这个逻辑来解决的,也就是删之前判断一下当前这把锁是否是属于自己的,但是现在还有原子性问题,也就是我们没法保证拿锁比锁删锁是一个原子性的动作,最后通过lua表达式来解决这个问题。
2024-08-07 12:03:55
1121
原创 【Redis】利用Java代码调用Lua脚本改造分布式锁
现在我们实现的分布式锁其实就已经是一个生产可用的、相对完善的分布式锁了。小总结:基于Redis的分布式锁实现思路:获取锁的时候利用set nx ex获取锁,set nx目的是互斥,确保只有一个线程能拿到锁,ex是一个兜底方案,防止宕机导致锁无法释放。释放锁时先判断线程标示是否与自己一致,一致则删除锁,防止误删并且使用Lua脚本保证它的原子性,这样避免在多线程的情况下因为阻塞导致的误删。那这样的分布式锁有什么特性呢?利用set nx满足互斥性。
2024-08-07 12:03:23
935
原创 【Redis】Lua脚本解决多条命令原子性问题
而且它事务中多个操作,其实是一个批处理,是在最终一次性趣执行的,也就是说没有办法先去查询,然后判断,最后释放。因为编写这个脚本的是一个叫做Lua的编程语言,并且我们不需要熟练精通Lua语言,你只需要懂它的一些基本用法就行了,它的基本语法大家可以参考网站:https://www.runoob.com/lua/lua-tutorial.html,我们最终要做的事情是:利用Lua语言编写脚本调用redis。表示参数的数量,我们这个脚本内容全都是写死的,内容固定的,脚本可以理解为一个函数,里面有一堆的代码。
2024-08-07 12:02:47
428
原创 【Redis】分布式锁的原子性问题
同样的是线程1一上来就申请锁,线程1现在持有锁之后,在执行业务逻辑过程中,他正准备删除锁,而且已经走到了判断锁标识的过程中,由于这把锁是自己的,因此肯定返回ok,紧接着就要执行释放锁的动作了。锁一旦超时释放,其他的线程又可以乘虚而入了,例如此时线程2进来,由于锁被释放掉了,因此它可以继续获取锁,可以开始执行自己的业务,而就在他获取锁成功的那一刻,如果GC结束了,阻塞结束,我们的线程恢复运行,此时它就会去执行释放锁的动作了,因为判断已经执行过了,它认为锁还是自己的,但现在锁已经是线程2的了。
2024-08-07 12:02:12
302
原创 【Redis】解决Redis分布式锁误删问题
之前使用的是线程的id,线程id是一个递增的数字,JVM内部每创建一个线程,它的数字就会递增。但是如果我们是在集群的模式下,我们有多个JVM,这样一来,每个JVM内部都会维护这样一个递增的数字,那两个JVM很有可能出现线程id冲突的情况,所以说我们直接使用线程的id去作为线程标识是不够的,我们还要去区分不同的JVM,让它们产生一些差异,因此这里使用UUID。总结:在存入锁时,放入自己线程的标识,在删除锁时,判断当前这把锁的标识是不是自己存入的,如果是,则进行删除,如果不是,则不进行删除。
2024-08-07 11:58:13
997
JDBC-1500行学习笔记,真的超级详细!!!
2023-08-25
F12开发者工具中,如下图小眼睛是代表啥
2024-01-12
框起来的地方为啥报错?
2023-08-25
jdbc中的批量操作,我明明都是按照步骤写的,但最后的执行时间并没有优化,这是为什么?
2023-08-24
我这一段的存储函数哪里写错了?
2023-08-06
下面是N叉树层次遍历的代码,为什么改变list时,也会将ans中对应的list改变?list = ans.get(depth)时,难道不是只是将ans中的list拷贝给了list吗
2023-08-02
下面是N叉树层次遍历的代码,为什么改变list时,也会将ans中对应的list改变?list = ans.get(depth)时,难道不是只是将ans中的list拷贝给了list吗
2023-08-02
标点,空格,有没有拼错,都检查了一遍,还是没发现自己错在哪。
2023-07-23
用这种方式创建文件,明明已经输出了创建成功,但为什么D盘并没有这个文件?
2023-07-17
这样创建文件错在哪里?我明明也将IOException异常抛出去了,为什么依旧报错?
2023-07-17
他们题解里的case和base case一般是指什么,感觉翻译成“案例”又不太对
2023-07-17
为什么1处的<>里面的可以省略,而2处省略却报错?
2023-07-12
为什么Idea里面的List.of会报错?但是我明明引了头文件
2023-07-11
框起来的部分如何理解?
2023-07-07
我感觉我和题解写的一模一样,但是为什么题解可以编译通过,但是我的这段代码不行?
2023-07-07
改变了str也应该改变了s哇,但当我打印时,s并没有发生改变,这是为什么?
2023-07-03
这里为啥报红线?该如何修改?
2023-06-22
idea划紫线是啥意思,可以替代成Comparator.comparingInt?
2023-06-22
Array.sort()中的第二个参数是什么意思,是java里面的哪个知识点?
2023-06-22
为什么框起来的没有输出出来,箭头指向的是将StringBuffer类转为String类
2023-06-21
这两种算法如何正确理解,除了死记硬背
2023-06-20
他们这里说的掩码是啥意思,感觉找了资料还是不能很理解这个的意思
2023-06-20
这里为啥显示标识符未标识?
2023-06-19
java如何将int转化为无符号整型?最简便的方法
2023-06-18
Operator '&&' cannot be applied to 'int', 'int'该如何改正该错误?前面为真,我就不想执行后面的,除了用if-else语句,还能如何改正?
2023-06-18
如图所示,报错原因是啥?
2023-06-15
如图所示,框出来的两个单词是哪两个单词的缩写?分别代表什么意思?
2023-06-15
我这段代码为什么i = 9的时候就直接跳出了循环?
2023-06-14
Arrays.stream这个方法的作用是做什么的,还有底下那个点是什么用法
2023-06-13
我这里的拓扑排序为啥没有输出来?
2023-06-07
求关键路径,这里为啥会报错?
2023-06-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人