Github基本操作
指令
1. 安装 Git
Windows:可以从 Git 官网 下载并安装 Git。
macOS:可以通过 Homebrew 安装,运行命令:brew install git。
Linux:大多数 Linux 发行版可以通过包管理器安装 Git,例如在 Ubuntu 上运行:sudo apt-get install git。
2. 配置 Git
在安装完 Git 之后,需要进行一些基本的配置:
12git config --global user.name "你的名字"git config --global user.email "你的邮箱"
这些配置用于标识提交记录的作者信息。
3. 创建和初始化 Git 仓库
新项目:在一个新项目文件夹中,运行以下命令初始化一个 Git 仓库:
123mkdir my_projectcd my_projectgit init
已有项目:如果已经有一个项目文件夹,只需进入该文件夹并运行 git init。
4. 基本操作:添加、提交和查看状态
查看状态:使用以下命令查看当前仓库的状态, ...
MyBatis-Plus基本操作
ORM介绍
ORM (Object Relational Mapping,对象关系映射)是为了解决面向对象与关系数据库存在的互不匹配现象的一种技术。
ORM通过使用描述对象和数据库之间映射的元数据将程序中的对象自动持久化到关系数据库中。
ORM框架的本质是简化编程中操作数据库的编码。
MyBatis-Plus介绍
MyBatis是一款优秀的数据持久层ORM框架,被广泛地应用于应用系统。
MyBatis能够非常灵活地实现动态SQL,可以使用XML或注解来配置和映射原生信息,能够轻松地将Java的POJO(Plain Ordinary Java Object,普通的Java对象)与数据库中的表和字段进行映射关联。
MyBatis-Plus是一个MyBatis的增强工具,在MyBatis的基础上做了增强,简化了开发。
IDEA添加依赖
1234567891011121314151617181920<!-- MyBatisPlus 依赖 --> <dependency> <groupId>com.baomidou</groupId ...
CloudFlare使用方法
Cloudflare是什么
Cloudflare是一家网络基础设施和网络安全公司,提供各种服务以提高网站的性能和安全性。以下是Cloudflare的主要功能和服务:
内容分发网络 (CDN):Cloudflare通过其全球分布的服务器网络来缓存网站内容,使访问者可以从离他们最近的服务器获取内容,从而提高加载速度和用户体验。
DDoS 防护:Cloudflare提供分布式拒绝服务攻击 (DDoS) 防护,通过监控和过滤恶意流量来保护网站免受攻击。这有助于确保网站在遭遇大规模流量攻击时仍能正常运行。
Web 应用防火墙 (WAF):Cloudflare的WAF能够检测和阻止常见的网络攻击,如SQL注入、跨站脚本 (XSS) 等,帮助保护网站免受各种安全威胁。
DNS 管理:Cloudflare还提供快速和可靠的DNS解析服务,提高了域名解析速度并增强了安全性。
SSL/TLS 加密:Cloudflare提供免费的SSL证书,帮助网站启用HTTPS加密,从而保护用户与网站之间的数据传输。
边缘计算和无服务器平台:通过Cloudflare Workers,开发者可以在C ...
RESTful服务+Swagger
RESTful介绍
RESTful是目前流行的互联网软件服务架构设计风格。
REST(Representational State Transfer,表述性状态转移)一词是由Roy Thomas Fielding在2000年的博士论文中提出的,它定义了互联网软件服务的架构原则,如果一个架构符合REST原侧,则称之为RESTfu架构。
REST并不是一个标准,它更像一组客户端和服务端交互时的架构理念和设计原则,基于这种架构理念和设计原则的Web APIE更加简洁,更有层次。
RESTful的特点
每一个URI代表一种资源
客户端使用GET、POST、PUT、DELETE四种表示操作方式的动词对服务端资源进行操作:GET用于获取资源,POST用于新建资源(也可以用于更新资源)PUT用于更新资源,DELETE用于删除资源。
通过操作资源的表现形式来实现服务端请求操作。
资源的表现形式是JSON或者HTML。
客户端与服务端之间的交互在请求之间是无状态的,从客户端到服务端的每个请求都包含必需的信息。
RESTful API
符合RESTful规范的Web APl需要具备如下两个关键特性 ...
Hexo博客创建
前置要求
在开始之前,你需要具备以下工具和账户:
Node.js 和 npm:Hexo 需要 Node.js 和 npm 来运行。你可以从 Node.js 官方网站 下载并安装。
Git:用于版本控制和部署。你可以从 Git 官方网站 下载并安装。
GitHub 账户:用于托管你的博客代码和网站。你可以从 GitHub 免费注册一个账户。
CloudFlare 账户:用于内容分发网络 (CDN) 和 DNS 服务管理。你可以从 CloudFlare 免费注册一个账户。
Namecheap 账户:用于购买和管理域名。你可以从 Namecheap 注册一个账户并购买域名。
步骤 1:设置 GitHub
创建 GitHub 仓库:
登录到你的 GitHub 账户。
点击右上角的 “+” 图标并选择 “New repository”。
仓库名称格式应为:<username>.github.io,其中 <username> 是你的 GitHub 用户名。
设为 “Public” 并点击 “Create repository”。
生成 GitHub 访问令牌 ...
SpringBoot文件上传和拦截器
静态资源访问
使用IDEA创建Spring Boot项目,会默认创建出classpath:/static/目录,静态资源一般放在这个目录下即可。
如果默认的静态资源过滤策略不能满足开发需求,也可以自定义静态资源过滤策略。
1234在application.properties中直接定义过滤规则和静态资源位置:spring.web.resources.static-locations=classpath:/static/spring.mvc.static-path-pattern=/static/**过滤规则为/static/*,静态资源位置为classpath:/static/
在典型的 Spring Boot 项目中,开发者会把静态资源(例如图片、CSS、JS 文件)放在 src/main/resources/static 目录中。
当项目构建时(例如使用 Maven 或 Gradle 构建时),构建工具会将 src/main/resources 目录下的所有内容复制到 target/classes 目录中。这就是为什么你会在 target/classes/static 中找到 ...
SpringBoot Controller
SpringBoot Web入门
Spring Boot将传统Web开发的mvc、json、tomcat等框架整合,提供了spring-boot-starter-web组件,简化了Web应用配置。
创建Spring Boot项目勾选Spring Web选项后,会自动将spring-boot-starter-web组件加入到项目中。
spring-boot-starter-web启动器主要包括web、webmvc、.json、tomcat等基础依赖组件,作用是提供Wb开发场景所需的所有底层依赖。
webmvc为Web开发的基础框架,json为SON数据解析组件,tomcat为自带的容器依赖。
控制器
介绍
Spring Boot提供了@Controller和@RestControllerp两种注解来标识此类负责接收和处理HTTP请求。
如果请求的是页面和数据,使用@Controlleri注解即可;如果只是请求数据,则可以使用@RestControlleri注解。
Controller
12345678@Controllerpublic class HelloController ...
Basic SpringBoot configuration
SpringBoot特点
遵循“约定优于配置”的原侧,只需要很少的配置或使用默认的配置。
能够使用内嵌的Tomcat、Jetty服务器,不需要部署war文件。
提供定制化的启动器Starters,简化Maven配置,开箱即用。
纯Java配置,没有代码生成,也不需要XML配置。
提供了生产级的服务监控方案,如安全监控、应用监控、健康检测等。
IDEA 组件依赖需求
Spring Web
IDEA 组件配置
Maven
Setting-> Build Tools -> Maven -> modify path of maven repository and settings.xml
pom.xel是Maven的配置文件
开发环境热部署
背景
在实际的项目开发调试过程中会频繁地修改后台类文件,导致需要重新编译,重新启动,整个过程非常麻烦,影响开发效率。
Spring Boot提供了spring-boot-devtools组件,使得无须手动重启Spring Boot应用即可重新编译、启动项目,大大缩短编译启动的时间。
devtools会监听classpath下的文件 ...
二分查找
基本内容
介绍
「二分查找 binary search」是一种基于分治策略的高效搜索算法。它利用数据的有序性,每轮减少一半搜索范围,直至找到目标元素或搜索区间为空为止。
Q&A
12Q:给定一个长度为 𝑛 的数组 nums ,元素按从小到大的顺序排列,数组不包含重复元素。请查找并返回元素 target 在该数组中的索引。若数组不包含该元素,则返回−1。
123456789101112131415161718192021222324252627282930313233343536/* 二分查找(双闭区间)(推荐) */int binarySearch(vector<int> &nums, int target) { // 初始化双闭区间 [0, n-1] ,即 i, j 分别指向数组首元素、尾元素 int i = 0, j = nums.size() - 1; // 循环,当搜索区间为空时跳出(当 i > j 时为空) while (i <= j) { int m = i + (j - i) / 2; // 计算中点索 ...
动态规划
引入
[!NOTE] 爬楼梯
给定一个共有 𝑛 阶的楼梯,你每步可以上 1 阶或者 2 阶,请问有多少种方案可以爬到楼顶。
如图所示,对于一个 3 阶楼梯,共有 3 种方案可以爬到楼顶。
暴力搜索:回溯
我们可以考虑通过回溯来穷举所有可能性。具体来说,将爬楼梯想象为一个多轮选择的过程:从地面出发,每轮选择上 1 阶或 2 阶,每当到达楼梯顶部时就将方案数量加 1 ,当越过楼梯顶部时就将其剪枝。
12345678910111213141516171819202122232425/*回溯*/void backtrack(vector<int> &choices, int state, int n, vector<int> &res) { // 当爬到第 n 阶时,方案数量加 1 if (state == n) res[0]++; // 遍历所有选择 for (auto &choice : choices) { // 剪枝:不允许越过第 n 阶 if (state + choice > n) br ...