自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(113)
  • 资源 (3)
  • 收藏
  • 关注

原创 【MySQL】函数

窗口函数可以像聚合函数一样对一组数据进行分析并返回结果,二者的不同指出之处在于,窗口函数不是将一组数据汇总成单个结果,而是为每一行数据都返回一个结果。窗口函数名称([ 可选的分析字段或表达式 ]) over(# 分区 partition by . . . # 排序 order by . . . # 窗口大小 frame_clause)over 子句用于指定一个数据分析窗口。partition by 类似于 group by,会分别针对每个分区单独进行分析。

2023-04-02 03:08:43 706 1

原创 【Swagger】认识与使用 Swagger 实现接口文档

使用 Swagger 你只需要按照它的规范去定义接口及接口相关的信息,再通过 Swagger 衍生出来的一系列项目和工具,就可以做到生成各种各式的接口文档,以及在线接口调试页面等等。Swagger 官网:https://swagger.io/由于直接使用 Swagger 操作是比较繁琐的,因此可以使用一些基于 Swagger 实现的框架,例如 knife4j,它是一个为 Java MVC 框架集成 Swagger 生成 Api 文档的增强解决方案。

2022-10-11 23:57:13 2111

原创 【Nginx】认识与基本使用 Nginx 实现反向代理、配置负载均衡

Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,实际上 Nginx 的并发能力在同类型的网页服务器中表现较好,国内使用 Nginx 的网站有:百度、京东、淘宝、腾讯等。代理就像是我们去购买海外的东西,找了个中间人帮我们去买物品并且带了回来。从系统的角度来说,直接访问就是浏览器的请求直接到了最终的服务器,中间没有经过任何的代理服务器,否则就是通过了代理的形式去访问了服务器。

2022-10-10 21:59:24 3267 3

原创 【MySQL 数据库】MySQL 主从复制和 Sharding-JDBC 实现读写分离

MySQL 主从复制是一个异步的复制过程,底层是基于 MySQL 数据库自带的二进制日志功能。就是一台或多台 MySQL 数据库(slave,即从库)从另一台 MySQL 数据库(master,即主库)进行日志的复制然后再解析日志并应用到自身,最终实现从库的数据和主库的数据保持一致。MySQL 主从复制是 MySQL 数据库自带的功能,无需借助第三方工具。master 将改变记录到二进制日志(binary log)

2022-10-10 02:30:24 2597

原创 【Spring】Spring Cache 基于注解的缓存操作(包含使用 Redis 作为缓存技术)

Spring Cache 是一个框架,实现了基于注解的缓存功能,只需要简单地加一个注解,就能实现缓存功能。Spring Cache 提供了一层抽象,底层可以切换不同的 cache 实现。具体就是通过 CacheManager 接口来统一不同的缓存技术。CacheManger 是 Spring 提供的各种缓存技术抽象接口,针对不同的缓存技术需要实现不同的 CacheManager:CacheManager 接口默认自带的缓存管理器(都存在于包中):使用其它缓存技术作为缓存管理器说明。

2022-10-09 01:45:44 2683

原创 【Git】认识与使用 Git

Git 是一个分布式版本控制工具,通常用来对软件开发过程中的源代码文件进行管理。本地仓库:开发人员自己电脑上的 Git 仓库远程仓库:远程服务器上的 Git 仓库commit:提交,将本地文件和版本信息保存到本地仓库push:推送,将本地仓库文件和版本信息上传到远程仓库pull:拉取,将远程仓库文件和版本信息下载到本地仓库。

2022-10-06 20:27:53 2105

原创 【Python】pyecharts 数据可视化模块

Echarts 是一个由百度开源的数据可视化,凭借着良好的交互性,精巧的图表设计,得到了众多开发者的认可。而 Python 是一门富有表达力的语言,很适合用于数据处理。当数据分析遇上数据可视化时,pyecharts 诞生了。

2022-09-19 04:52:24 8222 3

原创 【Python】有序容器的 sort 方法

容器.sort(key=选择排序依据的函数, reverse=True|False)可以将有序容器进行排序。参数 key 是要求传入一个函数,表示将容器的每一个元素都传入函数中,返回排序的依据,即确定通过哪个值去排序。参数 reverse 表示是否反转排序结果,True 表示降序,False 表示升序,默认为 False。则需要搭配 key 参数来确定排序容器的依据是容器中的哪个值。使用方法包括带名函数或者匿名函数的形式,具体介绍如下。

2022-09-19 03:26:50 1016

原创 【Python】Python 和 JSON 数据的相互转化

JSON 是一种轻量级的数据交互格式。可以按照 JSON 指定的格式去组织和封装数据。JSON 本质是一个带有特定格式的字符串。JSON 是一种在各个编程语言中流通的数据格式,负责不同编程语言中的数据的传递和交互。JSON 的数据格式和 Python 中的字典一样,或者是一个嵌套字典的列表。

2022-09-17 20:15:05 1144

原创 Linux 中启动 SpringBoot 项目出现 java.lang.OutOfMemoryError Java heap space 错误

表示 Java 的堆内存溢出。每个 Java 程序都只能使用一定量的内存,这种限制是由于 JVM 的启动参数决定的。heap space 堆内存permanent generation 永久代(实际就是方法去,用来存放类信息、常量、静态变量、及时编译器编译后的代码等)这两个区域的最大内存大小是由 JVM 启动参数-Xmx和指定,如果没有指定,则会根据操作系统版本、JVM 版本和物理内存的大小来确定。当创建新的对象时,堆内存中的空间不足以存放新创建的对象,就会引入。

2022-09-08 23:24:38 5793 1

原创 【Java 基础语法】Java 的文件操作

Java 中通过类来对一个文件(包括目录)进行抽象的描述。不过有 File 对象,并不代表对应的文件真实存在。

2022-09-03 03:05:48 1656 1

原创 【多线程】多线程面试常见基础内容

内存地址 V旧的预期值 A即将要更新的目标值 B更新一个变量的时候,只有当变量的预期值 A 和内存地址 V 当中的实际值相同时,才会将内存地址 V 对应的值修改为 B。整个比较并替换的操作是一个原子操作。由于 CAS 这个机制,就给实现线程安全版本的代码提供了一个新的思路,之前是通过加锁来把多个指令打包成一个整体,来实现线程安全。使用 CAS 来实现修改操作,则就能保证线程是安全的。Callable 是一个接口,描述了一个任务,通过重写 call 方法来完成该任务的内容。...

2022-08-28 00:55:33 1125 1

原创 【多线程】常见的锁策略

如果有 A、B、C 三个线程,A 线程在获取到锁后,B 紧接着获取锁但失败了,C 最后也获取锁也失败了。当 A 释放锁后,如果按照先来后到的顺序获取锁,即 B 先获取锁,则是一个公平锁。如果不遵循先来后到,B 和 C 都有可能获取锁,则是一个非公平锁,synchronized 既是一个乐观锁,又是一个悲观锁。读写锁就是把读操作和写操作分别加锁,适用于读多写少的场景中,Java 标准库提供了。乐观锁和悲观锁并无高下之分,主要还是看应用场景。synchronized 不是读写锁。

2022-08-25 03:17:53 953

原创 【多线程】线程池

线程池(Thread pool)是一种线程使用模式。线程过多会带来调度开销,进而影响缓存局部性和整体性能。而线程池维护着多个线程,等待着监督管理者分配可并发执行的任务。这避免了在处理短时间任务时创建与销毁线程的代价。线程池不仅能够保证内核的充分利用,还能防止过分调度。降低资源消耗通过重复利用自己已创建的线程降低线程创建和销毁造成的消耗。提高响应速度当任务到达时,任务可以不需要等到线程创建就能立即执行。提高线程的可管理性。

2022-08-23 23:06:39 1261 1

原创 【多线程】阻塞队列、定时器、线程安全的单例模式的原理及实现

单例模式(Singleton Pattern)是 Java 最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类也只提供一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。单例模式具体的实现有以下两种:饿汉模式(线程安全)

2022-08-23 04:38:14 993

原创 【多线程】线程安全问题

我们可以把一段代码想象成一个房间,每个线程就是要进入这个房间的人。如果没有任何机制保证, A 进入房间后,还没有出来,B 由于也能进入房间,就能打断 A 在房间里的隐私。因此就不具备原子性。而一条 Java 语句不一定是原子的,比如 count++,它其实由三步操作组成。...

2022-08-18 22:15:00 1059

原创 【多线程】多线程基础知识

Runnable 接口时线程辅助类,仅定义了一个 fun() 方法。该方法中描述了要实现的线程的内容。

2022-08-15 02:53:01 1195 2

原创 【Redis】Redis 的缓存使用技巧(商户查询缓存)

缓存(Cache)就是数据交换的缓冲区,是存贮数据的临时地方,一般读写性能较高。降低后端负载提高读写效率,降低响应时间数据一致性成本代码维护成本运维成本缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不生效,这些请求都会打到数据库。(如果不断发起这样的请求,会给数据库带来巨大压力)方案描述优点缺点缓存空对象如果请求的数据缓存不存在,并且数据库也不存在,数据库将给缓存更新个空对象。实现简单,维护方便。额外的内存消耗,可能造成短期的不一致。布隆过滤器。...

2022-08-12 23:40:04 1330

原创 【Redis】Redis 的共享 session 应用(短信登录)

这里将原有的一个拦截器分成两个拦截器,第一个拦截器对所有的请求进行拦截,每次拦截刷新 token 的有效期,并将能查询到的用户信息保存到 ThreadLocal 中。第二个拦截器则进行拦截功能,对需要登录的路径进行拦截。多台 tomcat 并不共享 session 存储空间,当请求切换到不同 tomcat 服务时会导致数据丢失的问题。该类中定义了一个静态的 ThreadLocal。该类中定义了一个静态的 ThreadLocal。...

2022-08-11 21:50:02 1632 1

原创 【Redis】Redis 的 Java 客户端(Jedis、SpringDataRedis)

提供了对不同 Redis 客户端的整合。(Lettuce 和 Jedis)提供了 RedisTemplate 统一 API 来操作 Redis支持 Redis 的发布订阅模型支持 Redis 哨兵和 Redis 集群支持基于 Lettuce 的响应式编程支持基于 JDK、JSON、字符串、Spring 对象的数据系列化及反序列化支持基于 Redis 的 JDKCollection 实现。...

2022-08-10 18:06:14 1175

原创 【Redis】Redis 数据结构介绍

value 类型示例StringHashListSet{A, B, C}SortedSetGEOBitMapHyperLog前五种为基本类型,后三种为特殊类型,除了这几种类型之外还有用来处理消息队列的类型等等。在 Redis 的官网()中可以很方便的查询到操作不同数据结构的命令。...

2022-08-09 20:43:16 937

原创 【Redis】Redis 安装启动使用流程

如果要让 Redis 以后台方式启动,则必须修改 Redis 配置文件,配置文件位于 Redis 解压包中,叫做 redis.conf。默认的安装路径为 /usr/local/bin,该目录已经默认配置到环境变量,因此可以在任意目录下运行下面的命令。Redis 是基于 C 语言编写的,因此首先需要安装 Redis 所需要的 gcc 依赖。通过查看 Redis 的进程,就能判断是否成功运行 Redis。保存好修改的配置文件后,输入以下命令既可以执行修改后的配置。通过下面的命令就可以操作 Redis。...

2022-08-08 22:05:15 664 1

原创 【Spring Boot】事务和事务传播机制

将一组操作封装成一个执行单元,要么全部成功,要么全部失败。当执行某个操作,例如支付操作时(分为先将钱从个人账户扣除和将他人账户新增两个操作),如果这两个操作不能同时成功或者失败,那么就会出现财产问题。而使用事务就能够很好的解决这个问题。通过上文我们了解到,在需要的方法上添加 @Transactional 注解,就能自动开启事务。接下来将会具体了解下 @Transactional 的使用细节。Spring 事务传播机制定义了多个包含了事务的方法在相互调用时,事务是如何在这些方法之间进行传递的。...

2022-08-07 20:38:09 3060 2

原创 【Spring Boot】拦截器使用和常用功能统一封装

以上就是对拦截器源码的解析,在 applyRreHandle 中会获取所有拦截器 HandlerInterceptor,并执行拦截器的 preHandle 方法,这样就会与个人自定义的拦截器对应上。我们可以发现预处理中首先获取到了所有的拦截器,并进行遍历,如果当前拦截器的返回值为 true 则不进行拦截,如果返回值为 false 则提前结束,而在预处理中则会直接 return。当出现算数异常时,返回的结果应该是 ArithmeticException 方法通知的异常。定义用户登录权限校验的拦截器。...

2022-08-03 21:37:55 866

原创 【JWT】JWT 整合

是一个开放标准(RFC7519),它定义了一种紧凑的、自包含的方式,用于作为JSON对象在各方之间安全地传输信息。该信息可以被验证和信任,因为它是数字签名的。

2022-07-26 19:50:21 1326 2

原创 微服务入门(RestTemplate、Eureka、Nacos、Feign、Gateway)

基本介绍: 将业务的所有功能集中在一个项目中开发,打成一个包部署。优点: 架构简单、部署成本低缺点: 耦合度高基本介绍: 根据业务功能对系统进行拆分,每个业务模块作为独立项目开发,称为一个服务。优点: 降低服务耦合、有利于服务升级拓展缺点: 架构复杂、难度大分布式架构的要考虑的问题:基本介绍: 微服务是一种经过良好架构设计的分布式架构方案。特征:优点: 拆分粒度更小、服务更独立、耦合度更低缺点: 架构非常复杂,运维、监控、部署难度提高SpringCloud 是目前国内使用最广泛的微服务框架。官网地址:htt

2022-07-04 23:47:43 1639 1

原创 【操作系统】进程的简单介绍

文章目录1. 进程介绍1.1 进程的概念1.2 进程和程序的关系1.3 进程的特点2. 进程控制块 PCB3. 进程的状态3.1 进程的生命周期3.2 进程的状态4. 进程间通信的机制1. 进程介绍1.1 进程的概念程序是由指令和数据组成的,但这些指令要运行,数据要读写,就必须将指令加载至 CPU,将数据加载至内存。在指令运行过程中还需要用到磁盘和网络等设备。进程就是用来加载指令、管理内存、管理 IO 的。当一个程序被运行,会从磁盘加载这个程序代码至内存,这时就开启了一个进程。一个运行

2022-05-18 17:02:00 351 2

原创 【Spring Boot】Spring Boot 日志文件详解

文章目录1. 日志介绍1.1 日志是什么?1.2 日志的作用1.3 日志格式说明2. 常见日志框架说明3. 日志级别3.1 日志级别的作用3.2 日志级别的分类3.3 日志级别的设置4. 自定义日志打印4.1 在程序中得到日志对象4.2 使用日志对象打印日志5. 日志持久化6. 更简单的日志打印方式 lombok6.1 lombok 介绍6.2 lombok 注解说明6.3 使用 @Slf4j 注解打印日志6.4 lombok 工作原理6.5 lombok 的优缺点1. 日志介绍1.1 日志是什么?日

2022-05-14 03:36:23 1707 3

原创 【Spring Boot】SpringBoot 配置文件详解

文章目录1. 配置文件的作用2. 配置文件的格式3. properties 配置文件说明3.1 properties 基本语法3.2 properties 配置缺点分析4. yml 配置文件说明4.1 yml 基本语法4.2 yml 配置简单的数据类型及 null4.3 yml 配置对象4.4 yml 配置 list 集合5. properties 和 yml 的总结6. Spring Boot 读取配置文件的方法6.1 使用 @Value 读取配置文件6.2 使用 @ConfigurationProper

2022-05-11 23:28:46 4979 12

原创 【Spring】Spring 入门介绍

文章目录1. Spring 介绍1.1 Spring 是什么?1.2 IoC 是什么?1.3 DI 是什么?1.4 Spring 的核心功能1.5 Spring 的应用上下文2. Spring 项目的创建和使用2.1 创建 Maven 项目2.2 存储 Bean 对象2.3 获取并使用 Bean 对象3. Spring 更简单的读取和存储对象方式3.1 存储 Bean 对象3.1.1 配置扫描路径3.1.2 注册 Bean 相关的注解介绍3.1.3 添加 @Controller 注解存储 Bean 对象3.

2022-05-09 21:01:15 1182 24

原创 【博客系统】项目中出现的一些问题

文章目录1. 项目流程2. 数据库设计出现的问题3. 模板引擎出现的问题3.1 模板引擎初始化问题3.2 博客正文编辑的输入框设置3.3 页面的记录太多,超过指定区域3.4 显示的博客需要进行 markdown 渲染4. 前后端分离出现的问题4.1 前后端分离的写法需要约定好交互的接口4.2 JavaScript 中的相关方法1. 项目流程项目基本环境搭建数据库的设计以及代码的编写(Model)先创建 DBUtil 类封装建立连接和资源回收的过程再创建数据表的实体类最后创建 Dao 类

2022-04-30 14:04:01 2778 1

原创 从阿里云迁移域名至 Amazon Route 53 帮你了解域名迁移

文章目录为什么要迁移域名?为什么选择 Amazon Route 53?1. 基本介绍2. Amazon Route 53 的优势域名解析迁移步骤1. 创建并配置托管区域2. 创建 DNS 解析记录3. 迁移域名到 Route 53总结为什么要迁移域名?最近和一个小伙伴聊天时,他说因为之前在不同的平台购买过云服务器和域名,最近已经购买的云服务器也快到期了,但是他不想再续费了,可他还是想用那个服务商的域名,所以他一直很烦恼。我说你可以将域名转移到其它的服务商啊?你不知道?后来在解决他的问题之后,我打算写下这

2022-04-27 11:55:32 9220 5

原创 【模板引擎】Thymeleaf 介绍及使用

文章目录1. 服务器生成动态页面的方式1.1 客户端渲染(前后端分离)1.2 服务器渲染(使用模板引擎)2. 模板引擎2.1 模板引擎介绍2.2 模板引擎的作用2.3 常见的模板引擎3. Thymeleaf3.1 Thymeleaf 介绍3.2 Thymeleaf 语法规则3.2.1 标准表达式语法3.2.2 th 属性3.3 Thymeleaf 使用流程1. 服务器生成动态页面的方式这里介绍两种常用的服务器生成动态页面的方式:服务器渲染和客户端渲染渲染就是把数据和页面结合起来1.1 客户端渲染

2022-04-25 20:27:11 1744 3

原创 【Servlet】Servlet 详解(使用+原理)

文章目录1. Servlet 介绍1.1 什么是 Servlet1.2 Servlet 的主要工作2. Servlet 程序创建步骤2.1 创建项目2.2 引入依赖2.3 创建目录2.4 编写代码2.5 打包程序2.6 部署程序2.7 验证程序3. 使用 Smart Tomcat 进行部署3.1 安装 Smart Tomcat3.2 配置 Smart Tomcat3.3 使用 Smart Tomcat4. 访问出错解决方案4.1 出现 4044.2 出现 4054.3 出现 5004.4 出现“空白页面”4

2022-04-21 17:17:12 25955 39

原创 【Linux】Linux 常用基操和 Java 环境的部署

文章目录1. Linux 常用命令快捷键lspwdcdtouchechocatmkdirtreermmvcpfindmanlessvimdatepsgrepnetstat2. Linux 权限用户介绍及操作Linux 中用户的三个类别文件类型和访问权限修改文件权限3. 搭建 Java 部署环境yumgit安装 JDK安装 Maven安装 Tomcat安装 MySQL1. Linux 常用命令快捷键使用 tab 键补全使用 Ctrl + c 重新输入使用 Ctrl + insert 复制使用 S

2022-03-22 17:31:19 6591 43

原创 【Tomcat】Tomcat 介绍及使用教程

文章目录1. Tomcat 介绍2. 下载安装2.1 Windows 中安装2.2 Linux 中安装2.3 访问 Tomcat3. Tomcat 的目录结构4. Tomcat 的配置文件5. WEB 应用部署目录结构6. 部署静态页面6.1 部署单个 HTML6.2 部署带有 CSS、JavaScript、图片的 HTML6.3 部署 HTML 到单独的目录中6.4 部署博客系统页面6.5 部署博客系统到云服务器1. Tomcat 介绍Apache Tomcat 是由 Apache Softwar

2022-03-11 17:00:44 35304 60

原创 【计算机网络】HTTPS 协议详解

前言: 之前详细介绍了 HTTP 协议,在 HTTP 协议的基础上,本章详细介绍 HTTPS 协议的内容。如果对于 HTTP 协议有疑问的友友们,可以看看之前的文章《HTTP 协议详解》,希望能够给大家带来帮助!文章目录1. HTTPS 是什么2. “加密”是什么3. HTTPS 的工作过程3.1 引入对称加密3.2 引入非对称加密3.3 引入证书机制3.4 完整流程1. HTTPS 是什么HTTPS (Hyper Text Transfer Protocol over SecureSocket La

2022-03-09 19:57:05 22752 63

原创 【计算机网络】HTTP 协议详解

文章目录1. HTTP 协议介绍2. HTTP 协议的工作过程3. Fiddler 抓包工具介绍3.1 抓包工具的使用3.2 抓包结果3.3 抓包工具原理4. HTTP 协议格式总览5. HTTP 请求(Request)5.1 认识 URLURL 基本介绍URL 基本格式URL 参数介绍URLencode 介绍5.2 认识“方法”(method)GET 方法POST 方法GET 和 POST 的区别关于 GET 请求的 URL 长度问题的误解关于 POST 比 GET 更安全的误解关于 GET 只能传输文本

2022-03-06 17:05:06 125606 105

原创 【算法笔记】图结构及图的 DFS 和 BFS 介绍

前言: 该篇文章将介绍如何应付面试中的图结构,并且还简单介绍了图的宽度优先遍历和深度优先遍历文章目录1. 图的基本介绍2. 图的实现3. 图的宽度优先遍历(BFS)4. 图的深度优先遍历(DFS)1. 图的基本介绍基本概念:图由点的集合和边的集合构成虽然存在有向图和无向图的概念,但实际上都可以用有向图来表达边上可能带有权值图的结构:邻接表法邻接矩阵法还有其它众多的方式如何搞定图的面试题: 图的算法都不难,但是写代码时会很复杂,coding 代价比较高,因此可以通过以下的方式来应

2022-03-02 23:32:12 895 10

原创 【算法笔记】并查集你了解吗?

前言: 最近发现了一个很有趣的算法,那就是并查集,如果你不了解什么是并查集的话,我希望你能看看下面的文章,因为它真的是一个十分有趣且有用的算法结构!文章目录1. 并查集基本介绍2. 并查集的实现(模板)3. 题目题一:有 n 个城市,其中一些彼此相连,另一些没有相连。如果城市 a 与城市 b 直接相连,且城市 b 与城市 c 直接相连,那么城市 a 与城市 c 间接相连。省份是一组直接或间接相连的城市,组内不含其他没有相连的城市。给你一个 n x n 的矩阵 isConnected ,其中 isConne

2022-03-01 16:39:57 650 15

图书馆里系统(纯 Java).zip

用纯Java制作的图书馆里系统,可以用作Java课设或期末大作业

2021-11-02

贪吃蛇小游戏(C语言).zip

有界面,可开关音乐,三种模式任你挑选

2021-11-02

薯条贩卖机 Java 课设.zip

用 Java 语言写的类似于图书管理系统的薯条贩卖机,可以用作Java期末作业或者课设

2021-11-01

空空如也

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

TA关注的人

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