自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 《Java核心技术 I》容易忽视和重要的知识点汇总

本文对《Java核心技术 I》中开发者和的知识点进行总结,不包含一般开发者都知道内容。大标题后括号的数字代表书中对应的章节。

2024-12-23 20:25:28 2314 1

原创 Netty网络框架详细讲解

Netty是一个异步的、基于事件驱动的网络应用框架,用于快速开发可维护、高性能的网络服务器和客户端。异步的:事件驱动:基于 Java NIO(Non-blocking I/O)的Selector实现的。高性能:充分利用 Java NIO 的非阻塞特性。可扩展性:适用于从简单客户端到复杂服务器的大多数网络应用场景。易用性:提供高度抽象的 API,屏蔽 NIO 编程的复杂细节。

2024-12-16 21:46:37 3363 1

原创 JUC 多线程并发编程

进程(Process):计算机中正在运行的程序的实例,是操作系统分配资源的基本单位。每个进程拥有自己的内存空间、文件描述符、数据栈等。线程(Thread):进程中的一个执行单元。一个进程中至少有一个线程,通常称为主线程。线程是 **CPU 调度和执行的最小单位。** 线程共享进程的资源,一个进程中的多个线程可以并发执行,线程之间的通信比进程之间的通信更高效。### 2. 并发与并行并发(Concurrency):系统能够在同一**时间段**内处理多个任务,但这些任务可

2024-12-09 13:44:18 1747

原创 Java JVM(内存结构,垃圾回收,类加载,内存模型)

负责运行 Java 程序的核心组件。它将 Java 字节码(.class 文件)解释或编译为机器代码,并提供内存管理、垃圾回收和线程管理等功能。:Java 运行时环境,包含运行 Java 应用程序所需的所有组件,包括 JVM 和 Java 标准库(如核心类和辅助类)。提供一个运行 Java 应用的完整环境。:Java 开发工具包,是用于开发 Java 应用程序的完整工具集。它包含 JRE 和额外的开发工具,如编译器(javac)、调试器(jdb)、打包工具(jar)等。JDK (开发工具 + JRE)

2024-12-02 22:36:48 2549

原创 Java NIO(io模型,三大组件,网络编程)

(New I/O,新的输入输出)是 Java 1.4 引入的一套 I/O 库,相比传统的(字节流和字符流),它主要用于处理高效的、非阻塞的 I/O 操作,特别是在需要处理大规模数据或高并发的场景中表现突出。Java NIO 提供了非阻塞模式、内存映射文件、缓冲区等一系列增强功能,适用于现代的高性能应用。

2024-11-25 07:45:00 2459

原创 spring cloud内容汇总(各个功能模块,启动,部署)

服务注册:服务注册与发现用于让各个服务在启动时自动注册到一个中央注册中心(如 Nacos、Eureka),并且能让其他服务通过注册中心找到并调用它们的地址。发现:每个服务启动后会将自身的地址和端口信息注册到注册中心;其他服务要调用它时,通过注册中心获取服务实例的地址,而不需要固定的地址。作用:指定一个类,其中包含处理方法。这样可以将流控处理方法与业务逻辑分离,便于管理。默认值:如果未指定,方法会在当前类中查找。// 业务逻辑// 自定义流控处理类作用:指定一个类,其中包含fallback。

2024-11-18 08:30:00 2690

原创 kafka(启动集群,集成spring,自定义配置)

Apache Kafka 是一个开源的分布式流处理平台,最初由 LinkedIn 开发,后来成为 Apache 项目。Kafka 主要用于高吞吐量、低延迟的实时数据流处理,常用于日志收集、实时分析、消息传递等场景。

2024-11-11 09:08:18 2950

原创 linux shell 脚本语言教程(超详细!)

Shell 是用户与操作系统内核之间的接口,允许用户通过命令行输入来控制操作系统。它充当命令解释器,读取用户输入的命令并执行相应的操作。Shell 提供了强大的脚本编程能力,可以自动化许多任务。常见的 Shell 有 Bash(Bourne Again Shell)、Zsh(Z Shell)、Ksh(Korn Shell)等。Shell 脚本是一种编程语言脚本,用于在 Unix/Linux 操作系统上执行命令。它是一系列命令的集合,通常保存在一个文件中,可以通过运行脚本文件来执行这些命令。使用export。

2024-10-24 10:13:14 3790 2

原创 java 文件的操作(Path、Paths、Files)

随着 Java 7 引入 NIO.2(即 Java New I/O 2),文件处理得到了显著改进。PathPaths和FilesPath:表示文件系统中的路径,类似于传统的,但更加灵活和功能丰富。Paths:一个工具类,提供静态方法用于创建Path实例。Files:一个实用工具类,提供了大量静态方法用于执行文件和目录的各种操作,如创建、删除、复制、移动、读取和写入等。相比传统的File类,NIO.2 提供了更好的错误处理、更丰富的功能以及对不同文件系统的支持。Path是一个接口,位于。

2024-10-14 14:19:07 2265

原创 react 知识点汇总(非常全面)

React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它的核心理念是“组件化”,即将用户界面拆分为可重用的组件。React 的组件通常使用 JSX(JavaScript XML)。JSX 是一种 JavaScript 语法扩展,允许开发者在 JavaScript 代码中编写类似 HTML 的结构。## 1、初识react### 1.1 常用命令首先安装 [Nodejs](https://nodejs.org/en/),然后执行下面命令安装 `rea

2024-10-07 08:30:00 2931

原创 spring security 超详细使用教程(接入springboot、前后端分离)

Spring Security 是一个强大且可扩展的框架,用于保护 Java 应用程序,尤其是基于 Spring 的应用。它提供了身份验证(验证用户身份)、授权(管理用户权限)和防护机制(如 CSRF 保护和防止会话劫持)等功能。Spring Security 允许开发者通过灵活的配置实现安全控制,确保应用程序的数据和资源安全。通过与其他 Spring 生态系统的无缝集成,Spring Security 成为构建安全应用的理想选择。- **前端**: - 用户在登录界面输入用户名和密码。 - 前

2024-09-30 08:30:00 15532 2

原创 html css js(这一篇就够了)

CSS变量允许开发者定义可重复使用的值,简化代码的管理和维护。CSS变量使用--定义,并通过var()函数调用。:root {button {这样,当我们需要修改主颜色时,只需要更改的值,而不需要修改每个地方的样式。CSS是用于控制网页外观和布局的重要技术。它通过选择器和属性,允许开发者对HTML元素进行样式定义和控制。掌握CSS的基本语法、布局模式(如Flexbox和Grid)、动画、媒体查询等知识,能够帮助开发者创建更加美观、响应式且用户友好的网页设计。

2024-09-23 09:45:00 3652

原创 spring 详细讲解(ioc,依赖注入,aop)

广义上的 Spring是一个完整的生态系统,包括 Spring Framework、Spring Boot、Spring Cloud 等多个子项目,涵盖了从基础应用到分布式系统开发的方方面面。狭义上的 Spring是指,它是 Spring 生态的核心,主要提供 IoC、AOP 等核心功能。下面会先简单介绍一下 Spring DAO 模块 和 Spring ORM 模块(我们主要讲解的是 ioc、依赖注入、aop相关内容)Spring DAO。

2024-09-16 09:30:00 1272

原创 spring mvc详细讲解(前后端分离模式)

在前后端分离模式下,Spring MVC 的作用主要集中在处理后端的业务逻辑和 API 接口,而不再直接管理视图部分。也就是说,Spring MVC 的重点是如何处理客户端的请求并返回数据(通常以 JSON 或 XML 格式),而视图渲染交给前端框架(如 Vue.js、React 等)来完成。下面是针对前后端分离模式的 Spring MVC 详细讲解。

2024-09-16 09:00:00 2082

原创 mysql 常用知识点总结

MySQL 是一种广泛使用的关系型数据库管理系统(RDBMS),它基于结构化查询语言(SQL)。了解 MySQL 的语法对数据库管理和操作非常重要。以下是 MySQL 语法的详细完整解释,涵盖基本概念、创建表、查询、修改数据等内容。

2024-09-16 08:30:00 1042

原创 快速了解 servlet(SpringMVC 的底层)

Servlet是 Java EE/Jakarta EE 的核心技术,用于处理 Web 请求,开发者需要手动处理很多细节。基于 Servlet 之上,通过注解和封装提供了更高层次的 Web 开发体验,简化了请求处理、依赖管理和数据绑定。这两者在设计上有相似之处(比如注解驱动开发),但 Spring Boot 更注重开发的简便性和功能的完整性。

2024-09-09 08:45:00 1939

原创 mybatis plus 常用知识汇总(保姆级教程!~)

/ 可以定义一些自定义的服务方法@Service// 你可以重写 ServiceImpl 中的方法,或者定义更多的业务逻辑在这个例子中,继承了并实现了接口。通过这种方式,类可以直接使用提供的基本 CRUD 方法。Mapper 和 Service 中有很多的方法,具体用法可以参考Mybatis plus 官网。

2024-09-09 08:30:00 2242 2

原创 redis常用知识汇总(基本命令, springboot整合, 哨兵、集合部署,分布式锁)

Redis 是一个开源的内存数据库,它支持多种数据结构,并且常用于高速缓存、会话管理、消息队列等场景。Redis 的全称是,是一种key-value(键值对)存储系统,能够以极高的性能处理大量数据的读写操作。

2024-09-09 08:15:00 1556

原创 javascript(js)入门指南

模板字符串由反引号(` `)包裹,支持多行字符串和嵌入表达式。// 定义模板字符串函数声明:使用function关键字定义函数。这种方式定义的函数会在代码执行之前被提升,因此可以在函数声明之前调用它。// 输出 "Hello, Alice"函数表达式:将函数赋值给变量。这种方式定义的函数不会被提升,因此只能在函数表达式之后调用。// 输出 "Hello, Bob"数组是一个有序的数据集合,其中的每个元素都有一个索引。数组中的元素可以是任意数据类型,例如字符串、数字、对象,甚至其他数组。

2024-08-26 15:30:34 3279 1

原创 python入门教程(非常详细!3w+ 文字)

可以通过key参数自定义排序规则。key参数接收一个函数,这个函数对每个列表元素进行处理,并返回一个用于比较的值。可以结合lambda函数使用。# 按照最后一个字母排序print(sorted_words) # 输出: ['banana', 'grape', 'apple', 'cherry']Python 使用def"""docstring (optional): 函数的文档字符串,用于描述函数功能"""# 函数体return value # 可选的返回值。

2024-08-19 06:30:00 2035 5

原创 java 入门教程(非常详细!1.6w+ 文字)

Java 是一种面向对象的编程语言,由 Sun Microsystems(现在的 Oracle)在 1995 年推出。Java 程序可以在任何支持 Java 虚拟机 (JVM) 的设备上运行。Java 的核心理念是“一次编写,到处运行”。: 用于输出内容,不换行。: 用于输出内容并换行。: 用于格式化输出内容。

2024-08-19 06:15:00 8325 3

原创 ssh 和 git 教程(1万字超详细)

scp是一个简单且安全的文件传输工具,适合基本的文件复制任务。它利用 SSH 协议进行加密传输,支持本地和远程之间的文件复制操作。linux中我们常用到的是 tmux 和 vim, 这两个的配置文件在 用户的根目录下(), 通过ls -a可以看到.vimrc和.tmux.conf的配置文件。我们可以通过scp命令快速的配置一个服务器的常用功能.tmux、vim参考文章Git是一个分布式版本控制系统,用于跟踪文件的更改并协调不同用户之间的代码开发工作。

2024-08-12 06:30:00 2125 5

原创 docker 详细教程(通俗易懂,带有应用示例)

Docker 是一个开源的容器化平台,允许开发者封装他们的应用程序及其所有依赖项到一个标准化的单元中,这个单元被称为“容器”。容器可以在任何支持 Docker 的环境中运行,从而确保应用程序的可移植性和一致性。

2024-08-12 06:15:00 2592 2

原创 ubuntu 22.04 安装 docker(服务器从毛胚到精装)

我们通过docker官方的默认地址下载镜像时,由于 gwf 的原因,可能会出现无法访问的情况。(上面步骤3、4 用的地址也是阿里云的, 我下载的时候没法访问docker官方的下载地址)阿里云默认是 root 用户,我们一般要自己创建一个用户,然后给该用户。主要是配置 ”ssh免密登陆“ 和 “tmux、vim配置文件”。中添加下面内容 (url 换成你的加速地址)可参考下面两个文章中的配置相关的内容。很多 Docker 命令都需要使用。

2024-08-12 06:00:00 2459 1

原创 tmux和vim精简教程(非常详细实用!)

会话是 tmux 的最顶层结构,包含了多个窗口。(会话可以不止一个,可以创建多个会话)窗口是会话中的独立工作区域,可以进一步分割成多个窗格。窗格是窗口中的子区域,允许在同一个窗口中并排显示多个终端会话。| (会话) || || | (窗口 1) | | (窗口 2) | || | | (窗格 1) | | | | (窗格 3) | | || | | (窗格 2) | | | | (窗格 4) | | || |

2024-08-05 07:30:00 2591 8

原创 linux 常用知识汇总(非常全面!)

Linux文件系统是指操作系统用来控制文件如何存储和检索的结构和逻辑。在Linux操作系统中,根目录()是整个文件系统的起点。所有文件和目录都是从根目录开始的,根目录下包含了系统所需的各种子目录,每个子目录都有其特定的用途。

2024-08-05 07:00:00 2780 2

原创 java多线程(超详细!)

Java 的多线程是一种允许在一个程序中同时运行多个线程的技术。每个线程是独立的执行路径,可以并发执行,从而提高程序的效率和响应能力。

2024-07-29 18:48:35 1897 4

原创 java注解与反射(非常详细, 带有很多样例)

你可以定义自己的注解,并通过元注解(meta-annotation)来指定注解的行为。@Retention:指定注解的保留策略,取值有。@Target:指定注解可以应用的程序元素,取值有等。:指定注解是否包含在 Javadoc 中。@Inherited:指定注解是否可以被子类继承。

2024-07-29 18:45:48 1376 2

原创 springboot websocket 知识点汇总

以下是一个详细全面的 Spring Boot 使用 WebSocket 的知识点汇总1. 配置 WebSocket添加依赖 进入maven官网, 搜索spring-boot-starter-websocket,选择版本, 然后把依赖复制到pom.xml的dependencies标签中在这里插入图片描述配置 WebSocket创建一个配置类 WebSocketConfig,并启用 WebSocket 支持:这个类的主要作用就是启用 WebSocket 支持: 这个配置类通过返回 Ser

2024-07-15 15:05:00 2328 8

原创 springboot常用注解大全(超详细, 30个)

Spring Boot注解主要用于简化配置、自动装配组件和实现声明式服务。

2024-07-15 15:01:16 6463 3

原创 快速入门,springboot知识点汇总

学习 springboot 应该像学习一门编程语言一样,首先要熟练掌握常用的知识,而对于不常用的内容可以简单了解一下。先对整个框架和语言有一个大致的轮廓,然后再逐步补充细节。

2024-07-09 16:31:36 2621 7

原创 centos7安装mysql教程及Navicat平替软件

MySQL 官方不再维护 CentOS 7 自带的 MySQL 软件包。 解决 GPG 密钥问题: “失败的软件包是:mysql-community-client-8.0.38-1.el7.x86_64 GPG 密钥配置为:file:///etc/pki/rpm-gpg/RPM-GPG-KEY-mysql” 的提示信息。

2024-07-03 11:08:05 837 3

原创 初学vue3, 全是黑盒子,vue3知识点汇总

通过Vue Router,我们可以轻松地定义路由规则,将不同的 URL 映射到不同的组件,并在这些组件之间切换,通俗的讲就是我们可以让页面在不同的url上显示我们想要显示的组件。router是路由器的意思, route是路由的意思,我们需要给vue的实例创建一个router, 通过函数.history: createWebHistory(), // 路由器的工作模式, 下面会讲到routes : [path : "/home", // url匹配path的时候路由器会渲染这个路由的组件。

2024-07-03 11:01:16 1849 3

原创 蓝桥杯-AB路线(详细原创)

有一个由 N × M 个方格组成的迷宫,每个方格写有一个字母 A 或者 B。小蓝站在迷宫左上角的方格,目标是走到右下角的方格。他每一步可以移动到上下左右相邻的方格去。由于特殊的原因,小蓝的路线必须先走 K 个 A 格子、再走 K 个 B 格子、再走 K 个 A 格子、再走 K 个 B 格子…如此反复交替。请你计算小蓝最少需要走多少步,才能到达右下角方格?注意路线经过的格子数不必一定是 K 的倍数,即最后一段 A 或 B 的格子可以不满 K 个。起点保证是 A 格子。

2024-05-29 22:20:39 2823 15

原创 二分查找算法详讲(三种版本写法)原创

二分查找算法(Binary Search)是一种在有序数组中查找目标元素的算法。它的基本思想是通过将目标元素与数组的中间元素进行比较,从而将搜索范围缩小一半。如果目标元素等于中间元素,则搜索结束;如果目标元素小于中间元素,则继续在左半部分查找;如果目标元素大于中间元素,则在右半部分查找。通过不断地将搜索范围缩小一半,最终可以找到目标元素或确定目标元素不存在。接下来通过例题介绍二分的不同写法。

2024-05-28 23:48:35 913 4

原创 leetcode力扣 300. 最长递增子序列 II

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4。

2024-05-26 20:24:18 834 10

原创 leetcode力扣 300. 最长递增子序列

给你一个整数数组 nums ,找到其中最长严格递增子序列的长度。子序列 是由数组派生而来的序列,删除(或不删除)数组中的元素而不改变其余元素的顺序。例如,[3,6,2,7] 是数组 [0,3,1,6,2,2,7] 的子序列。示例 1:输入:nums = [10,9,2,5,3,7,101,18]输出:4解释:最长递增子序列是 [2,3,7,101],因此长度为 4 。示例 2:输入...

2024-05-26 20:22:00 1150 3

原创 leetcode力扣 1004. 最大连续1的个数 III

滑动窗口算法是一种用于解决子数组或子串问题的有效技巧.常见类型:固定长度的子数组/子串问题:找到固定长度的子数组或子串,并求其某些特征(如最大或最小值、平均值等)。例子:给定一个数组和一个整数k,找到长度为k的子数组的最大平均值。可变长度的子数组/子串问题:找到可变长度的子数组或子串,使其满足某些条件(如和等于某个值、包含某些字符等)。例子:给定一个数组,找到和等于某个值的最长子数组。最长或最短的子数组/子串问题:找到满足某些条件的最长或最短子数组或子串。

2024-05-26 18:47:09 614

原创 leetcode力扣 2024. 考试的最大困扰度

一位老师正在出一场由 n 道判断题构成的考试,每道题的答案为 true (用 ‘T’ 表示)或者 false (用 ‘F’ 表示)。老师想增加学生对自己做出答案的不确定性,方法是最大化有连续相同结果的题数。(也就是连续出现 true 或者连续出现 false)。给你一个字符串 answerKey,其中 answerKey[i] 是第 i 个问题的正确结果。

2024-05-25 23:27:27 516

原创 leetcode力扣 213. 打家劫舍 II

计划偷窃沿街的房屋是小偷的计划。在这个地方,所有的房屋都围成一圈,这意味着第一个房屋和最后一个房屋是紧挨着的。但是,相邻的房屋都装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。为了计算在不触动警报装置的情况下,今晚能够偷窃到的最高金额,我们给定了一个代表每个房屋存放金额的非负整数数组。

2024-05-25 23:08:27 478

空空如也

空空如也

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

TA关注的人

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