本文将介绍如何基于 OAuth 协议让自己的网络应用集成第三方 GitHub 授权登录
前置内容首先登录(如果没有账号那就注册一个)GitHub
进入设置(Settings)
点击 Developer Settings
点击 OAuth Apps
然后创建应用(New OAuth Apps)
总体流程sequenceDiagram autonumber
用户->>WEB应用: 使用GitHub登录
WEB应用->>GitHub: 向GitHub请求权限
GitHub->>用户: 询问是否同意授权
用户->>GitHub: 同意授权
GitHub->>WEB应用: 携带授权码回调地址
WEB应用->>GitHub: 使用授权码获取access_token
GitHub->>WEB应用: 校验客户端ID和授权码成功返回access_token
WEB应用->>GitHub: 携带access_token向GitHub API发送请求
创建应用
按照上面表示填写数据信息,尤其是回调地 ...
前言都知道在使用SpringBoot进行部署项目的时候有两种方式。第一种方式就是正常的打成jar包,然后通过 java -jar xxx.jar 命令来运行项目(因为SpringBoot是内嵌的Tomcat服务器的);第二种方式就是采用老方法让项目打成war包,然后把这个war包放到Tomcat服务器的webapps目录下,最后启动tomcat进行部署。
这两种方式各有各的好处,首先说说jar包。它呢主要就是方便,不需要再去安装配置tomcat的环境,直接通过命令就能直接运行项目。但是一个项目就需要占用一个端口,不能像直接部署到Tomcat中的那样一个端口中可以运行多个项目。这是因为SpringBoot是内嵌的Tomcat服务器,所以它自己会启动一个Tomcat服务器,用来运行项目。
再来说说war包,他虽然没有jar包来的方便但是通过部署到tomcat中可以让一个端口中可以运行多个项目。
在部署的时候不管是jar包还是war包都行,看个人需要。这篇文章就来说说SpringBoot项目如何打成war包并部署到Tomcat中。
版本信息
SpringBoot:3.1.5
Tomcat: ...
B树这B树是一个多叉平衡搜索树,这种树在大数据量的情况下他要比二叉搜索树、红黑树要好的。因为二叉搜索树和红黑树都是先把数据给加载到内存中,然后再对其进行处理的。
内存呢现在一般就是GB级别的,比如16G、32G,这种通常处理的数据量通常不会很大。如果要是处理的数据量规模非常大的话那么就需要把数据给存到容量更改的硬盘里了,当今TB级别的硬盘已经是非常常见的了。
因为无法一次性的把大规模的数据全部读取到内存中,那么当需要处理某些数据的时候,去找硬盘上到数据然后把它读取到内存中再进行处理。
问题:为什么一定要读取到内存中再处理数据呢?
解答:操作数据是需要CPU去执行相关的指令的,而CPU是不能和硬盘直接交互的。至于原因嘛就是因为CPU太快了,硬盘跟不上CPU的速度,所以得需要内存这个中间人去协调两边。所以想要处理硬盘内的数据需要先把数据给读到内存中然后再进行交互。整个过被称做一次硬盘的访问,也可以叫一次硬盘io
在上图中,假设这些内容都是存在于磁盘中,那么每一次对节点的访问就是一次磁盘的IO。
如果我需要找到13这个数,那么我会经历以下几步
第一次访问磁盘找到根节点11- 小
第二 ...
简介在不同的前端项目中,Node版本之间的有时候会不兼容,然后需要对相对应的项目下载不同的Node版本,这很繁琐,而且很麻烦
然后,我找到了 nvm 这个专门为 Node 版本控制而生的版本控制工具,这款软件轻量而且强大
地址中文网:https://nvm.uihtm.com
GitHub:https://github.com/coreybutler/nvm-windows/releases
使用安装好软件之后,打开黑窗口然后输入 mvn -v 看看能不能输出版本号,有输出代表安装成功
然后进行切换镜像源,执行以下其中一组命令
阿里:
12nvm npm_mirror https://npmmirror.com/mirrors/npm/nvm node_mirror https://npmmirror.com/mirrors/node/
腾讯:
12nvm npm_mirror http://mirrors.cloud.tencent.com/npm/nvm node_mirror http://mirrors.cloud.tencent.com/nodejs-release/
命 ...
介绍使用该工具类时需要到123云盘开放平台申请 CLIENT_ID 和 CLIENT_SECRET
这是对123云盘的所有API链接进行封装,使用时需导入一下Maven坐标吗,主要用于配合解析返回数据
12345<dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>2.16.0</version></dependency>
使用时会生成一个配置 config/123pan.json 这里面存放着 Access_Token 和它的过期时间基本上所有的请求都需要携带 Access_Token
Access_Token 的获取会在文件加载时进行判断获取,也可以使用 OneTwoThreeCloudDisk.getAccessToken() 进行手动获取,每次请求API时会先判断 Access_Token 是否可用
...
介绍滑动窗口法,也叫尺取法,可以用来解决一些查找满足一定条件的连续区间的性质的问题。
思想就按照查找不含有重复字符的最长子串的长度来举例(abcabcbb)
现有两个变量用来当左边和右边的下标(这里以括号表示),满足要求的时候,右括号往右走,如下所示
(a) b c a b c b b –> (a b) c a b c b b –> (a b c) a b c b b –> (a b c a) b c b b
右括号一直走,直到其中包含重复字符也就是两个a,这是右括号停止走并记录此时的最大值也就是3(abc)
不满足的时候左括号开始走
(a b c a) b c b b –> a (b c a) b c b b
此时可以看到括号里面的内容是只有 bca 的,那么满足条件右括号开始走
a (b c a) b c b b –> a (b c a b) c b b
可以看到里面又有重复字符了,此时左括号开始走,并记录最大值,还是3(bca)
a (b c a b) c b b –> a b (c a b) c b b 左
a ...
成品
* {
padding: 0;
margin: 0;
box-sizing: border-box;
}
#calendar {
width: 300px;
background-color: rgb(255, 251, 240);
border-radius: 10px;
margin: auto;
}
#yue {
border-radius: 10px 10px 0 0;
width: 100%;
height: 140px;
margin-bottom: 10px;
background-image: url(https://img.zcool.cn/community/0112bb5d77c95ea ...
Cloudflared Zero TrustZero Trust是Cloudflare公司推出的一项企业级虚拟网关服务,官方对其介绍如下:
Cloudflare Zero Trust是一个安全框架,旨在通过验证和保护所有的网络访问(无论用户或地点)来保护组织免受网络威胁。该框架基于 “不信任任何人 “的原则,这意味着所有访问请求在被批准之前必须经过验证和授权。
Zero Trust “旨在提供一种全面的安全方法,涵盖一个组织的网络和基础设施的所有方面。这包括用户认证、设备安全、网络分段和应用安全。
Zero Trust的主要好处之一是它能够提供细化的访问控制,使企业能够根据用户角色和权限限制对敏感资源的访问。这可以通过最小化攻击面和限制任何潜在漏洞的影响来帮助防止数据泄露和其他安全事件。
Cloudflare Zero Trust是一项基于云的服务,可以很容易地与组织的现有安全基础设施集成。它的设计具有可扩展性和灵活性,允许企业定制框架,以满足其特定需求和要求。
(通过DeepL翻译)
本文仅使用其中的tunnel功能,对其余功能不做赘述
准备工作
一个域名(通过阿里云等购买然后解 ...
读123456789101112131415161718String readJson(String Cf) { String json = null; try { FileReader f = new FileReader(Cf); Reader reader = new InputStreamReader(new FileInputStream(Cf)); int ch = 0; StringBuffer sb = new StringBuffer(); while ((ch = reader.read()) != -1) { sb.append((char) ch); } f.close(); reader.close(); json = sb.toString(); } catch (IOException e) { System.out.p ...
介绍FastJson是阿里巴巴开源的json解析库,它可以解析json格式的字符串
具有特点
速度快
使用广泛
测试完备
使用简单
功能完备
Maven FatsJson如果是使用的Maven做的项目那么只需要在里面的pom.xml文件里面添加如下代码
12345<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.83</version></dependency>
在刷新一下Maven即可
如果添加代码dependency爆红的话只需要在外面加上一层dependencies标签
123456789<dependencies> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjs ...