自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Redisread的博客

希望对计算机理解的更加透彻,也算没白学。

  • 博客(42)
  • 收藏
  • 关注

原创 Spring源码阅读调试环境搭建(MacOS)

MacOS搭建Spring源码阅读和调试环境指导手册

2022-07-03 13:46:50 587

原创 极化码-信道模型

在通信过程中,物理层传输的就是电信号,假如我们只用0和1传输信号,并且这些信道互相都没有关系,我们称为二进制离散无记忆信道。信道模型是研究信道编码的基础,常见的几种信道模型分别有:二进制删除信道(BEC)、二进制对称信道(BSC)、高斯信道(AWGN)。设信道的输入和输出分别是长为N的序列,输入是x,输出是y,其信道的转移概率满足:p(y∣x)=∑i=1Np(yi∣xi)p\left( {y|x} \right) = \sum_{i=1}^N p\left( {y_{i} | x_{i}} \right

2022-05-05 14:43:47 1836

原创 极化码-译码

Arıkan教授在文献提出了串行抵消SC译码算法。SC译码算法类似一个深度优先搜索的算法,其根据两个判决函数进行迭代计算最大似然对数比LLR,两个判决函数分别叫做f函数和g函数。下面是这两个公式的计算方法:其中,a,b∈R,us∈{0,1}a,b\in R,{ {u}_{s}}\in \left\{ 0,1 \right\}a,b∈R,us​∈{0,1}。LLR的递归运算借助函数f和g表示如下:递归的终止条件为当N=1N=1N=1时,即到达了信道WWW端,此时L1(1)(yj)=ln⁡W(yj∣0)

2022-05-05 14:40:25 1770

原创 极化码-编码

极化编码的基本思想是:只在Z(WN(i))Z\left( W_{N}^{\left( i \right)} \right)Z(WN(i)​)近于0的坐标信道WN(i)W_{N}^{\left( i \right)}WN(i)​上发送数据比特。极化码具有一般的二元线性分组码的基本编码要素,因而可以通过显示地写出其生成矩阵来完成编码:x1N=u1NGNx_{1}^{N}=u_{1}^{N}{G_{N}}x1N​=u1N​GN​其中,编码生成矩阵GN=BNF⊗n{G_{N}}\text{=}{B_{N}}

2021-06-29 13:10:05 5034 1

原创 极化码-基本原理

基本概念信噪比信噪比,英文名称叫做SNR(SIGNAL-NOISE RATIO ),是指一个电子设备或者电子系统中信号与噪声的比例。信噪比的计算可以为有用信号功率与噪声功率的比 :SNR=PsignalPnoiseSNR = \frac {P_{signal}} {P_{noise}}SNR=Pnoise​Psignal​​它的单位一般使用分贝,其值为十倍对数信号与噪声功率比:SNR(dB)=10log⁡10(PsibnalPnoise)SNR(dB) = 10\log_{10}(\frac

2021-06-29 12:59:27 7500

原创 极化码-信道模型

在信息论中,信道是指信息传输的通道。我们在实际通信中所利用的各种物理通道是信道的最典型的例子,如电缆、光纤、电波传布的空间、载波线路等等。但是极化码的信道模型将他们进行了抽象,将信道分成了几类:BEC、BSC、AWGN。在通信过程中,物理层传输的就是电信号,假如我们只用0和1传输信号,并且这些信道互相都没有关系,我们称为二进制离散无记忆信道。信道模型是研究信道编码的基础,常见的几种信道模型分别有:二进制删除信道(BEC)、二进制对称信道(BSC)、高斯信道(AWGN)。设信道的输入和输出分别是长为N的序

2021-06-29 12:42:18 3304 1

原创 5G极化码专栏介绍

极化码已经入选5G的标准,是唯一一个被证明可以达到香农极限的一种编码方式。5G下的极化码这个专栏介绍极化码的相关原理,一方面是因为我目前的毕业设计是关于5G极化码方向的,另一方面我想将自己所学的一些知识记录或者分享起来。首先,我想要说的是,极化码是一种编码方式,它的目的是为了使得在传输过程中传输更多有效的消息,也可以理解为让传输更可靠的编码方式。当然,对于信道编码来讲,那最主要的就是编码和解码这两个板块。那什么是信道编码呢?可以这样理解:发送方先对发送的信息进行编码,通过信道进行传输,然后在接受方那边

2021-06-29 12:23:04 1755

原创 【数据结构-堆】 C++实现最最大堆与最小堆 + 堆排序

概念堆数据结构是一种数组对象,它可以被视为一颗完全二叉树结构(或者也有可能是满二叉树)最大堆任一结点的关键码均大于等于它的左右孩子的关键码,其中堆顶的元素最大。(任一路径中的元素升序排列)最小堆:任一结点的关键码均小于等于它的左右孩子的关键码,其中堆顶的元素最小。(任一路径中的元素升序排列)已知父节点:左孩子节点 = 2*父节点+1右孩子节点 = 2*父节点+2已知孩子节点:父节点 = (孩子节点-1)/ 2下面这张图展示了最大堆与最小堆的样例:应用优先级队列堆排序100W

2021-03-12 23:19:23 410

原创 【算法】 快速排序 (分治思想) C++

基本思想快速排序使用分治的思想,通过一趟排序将待排序列分割成两部分,其中一部分记录的关键字均比另一部分记录的关键字小。之后分别对这两部分记录继续进行排序,以达到整个序列有序的目的。基本步骤选择基准:在待排序列中,按照某种方式挑出一个元素,作为 “基准”(pivot)分割操作:以该基准在序列中的实际位置,把序列分成两个子序列。此时,在基准左边的元素都比该基准小,在基准右边的元素都比基准大递归地对两个序列进行快速排序,直到序列为空或者只有一个元素。流程大致如下:快速排序的时间复杂度是O(nl

2021-03-12 22:51:13 560

原创 【leetcode】验证二叉树的前序序列化 C++/Go(栈/递归)

问题描述:序列化二叉树的一种方法是使用前序遍历。当我们遇到一个非空节点时,我们可以记录下这个节点的值。如果它是一个空节点,我们可以使用一个标记值记录,例如 #。 _9_ / \ 3 2 / \ / \ 4 1 # 6/ \ / \ / \# # # # # #例如,上面的二叉树可以被序列化为字符串 "9,3,4,#,#,1,#,#,2,#,6,#,#",其中 # 代表一个空节点。给定一串以逗号分隔的序列,验证它是否是正确的二叉树的前序

2021-03-12 16:11:36 113

原创 【leetcode】基本计算器II C++/Go(栈)

问题描述给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。示例 1:输入:s = "3+2*2"输出:7示例 2:输入:s = " 3/2 "输出:1提示:1 <= s.length <= 3 * 105s 由整数和算符 ('+', '-', '*', '/') 组成,中间由一些空格隔开s 表示一个 有效表达式表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1] 内题目数据保证答案是一个 32-bit 整

2021-03-12 00:17:35 139

原创 【leetcode】爬楼梯C++/Go(动态规划)

题目描述假设你正在爬楼梯。需要 n 阶你才能到达楼顶。每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢?注意:给定 n 是一个正整数。示例 1:输入: 2输出: 2解释: 有两种方法可以爬到楼顶。1. 1 阶 + 1 阶2. 2 阶示例 2:输入: 3输出: 3解释: 有三种方法可以爬到楼顶。1. 1 阶 + 1 阶 + 1 阶2. 1 阶 + 2 阶3. 2 阶 + 1 阶动态规划情况一:首先我们考虑基础情况,就是当n = 1的情况(

2021-03-11 21:27:52 215

原创 【leetcode】最长回文子串 C++/Go(中心扩散法+动态规划)

题目描述给你一个字符串 s,找到 s 中最长的回文子串。示例 1:输入:s = "babad"输出:"bab"解释:"aba" 同样是符合题意的答案。示例 2:输入:s = "cbbd"输出:"bb"中心扩散法直接两张图就能够解释,如下是两种情况:第一种:由中间一个字符向左右两边进行扩散,当左右两端的字符相等时,继续扩散,否则停止,得到当前最长的回文子串。第二种:由中间的2个字符向左右两边进行扩散,当左右两端的字符相等时,继续扩散,否则停止,得到当前最长的回文子串。

2021-03-10 14:22:45 440 1

原创 Go语言专栏目录

【Go 】 Golang的安装以及运行【Go】 Go的包及包管理【Go】 Go注释【Go】 变量【Go】 常量【Go】 数组【Go】 指针【Go】 类型转换【Go】 类型别名(type)【Go】枚举【Go】 判断语句(if else switch)【Go】 循环(for)【Go】 range关键字【Go】 动态数组(slice)【Go】 字符串(string与str)【Go】 结构体【Go】map的使用待补充...

2021-03-09 22:51:49 88

原创 实习总结

安装部署(搭建环境)能力日志查看持续集成gitlab-runner 自动化部署,多写脚本文档整理 先广度再深度 docx xmls xmind论文阅读 以及research查阅配置docker以及使用工具命令行使用以及封装(python日志 argparse模块使用)运维服务器代码规范checklist以及代码扫描工具codescan pylint flake8 打包工具 pyinstaller...

2021-03-06 11:44:34 178

原创 冷数据与热数据

从两个层面上来说:一个是数据的访问频次层面,一个是数据分析层面。访问频次层面热数据:是需要被计算节点频繁访问的在线类数据。冷数据:是对于离线类不经常访问的数据,比如企业备份数据、业务与操作日志数据、话单与统计数据。数据分析层面独有的数据技术引擎:冷数据、温数据和热数据。冷数据——性别、兴趣、常住地、职业、年龄等数据画像,表征“这是什么样的人”;温数据——近期活跃应用、近期去过的地方等具有一定时效性的行为数据,表征“最近对什么感兴趣”;热数据——当前地点、打开的应用等场景化明显的、稍纵即逝

2020-11-21 15:32:07 11050 2

原创 Quic协议为什么这么快

文章目录为什么需要QUIC?QUIC概述目标QUIC连接过程如何做到0RTT?连接过程QUIC连接迁移QUIC解决队头阻塞问题QUIC的拥塞控制(可插拔)热拔插QUIC前向纠错FECQUIC重传序列号单调递增保证包的顺序不允许 Reneging更多的 ACK 块ACK DelayQUIC流量控制(基于 stream 和 connecton 级别)加密认证的报文如何让网络数据传输地更快?(合并一些层)为什么需要QUIC?中间设备的僵化可能是 TCP 协议使用得太久,也非常可靠。所以我们很多中间设

2020-11-18 18:36:02 466

原创 拥塞控制算法

TCP拥塞控制算法的目的可以简单概括为:公平竞争、充分利用网络带宽、降低网络延时、优化用户体验,然而就目前而言要实现这些目标就难免有权衡和取舍。算法分类基于丢包策略的传统拥塞控制算法的几个迭代版本,如图所示:与此同时还有一类算法是基于RTT延时策略来进行控制的,但是这类算法在发包速率上可能不够激进,竞争性能不如其他算法,因此在共享网络带宽时有失公平性,但是算法速率曲线却是很平滑基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞,如 BBR。基于学习的

2020-11-18 16:09:56 1156

原创 【数据结构】Huffman Coding(哈夫曼树)

哈夫曼编码算法用字符在文件中出现的频率表来建立一个用0,1串表示各字符的最优表示方式。给出现频率高的字符较短的编码,出现频率较低的字符以较长的编码,可以大大缩短总码长。Huffman Coding两个步骤:编码(从输入的字符数据构建一颗哈夫曼树,并将字符串转化位01编码)解码(遍历哈夫曼树将01编码转化为字符)构建哈夫曼树的过程:计算输入数据的每一个字符的出现频率。从最小堆中提取两个频率最小的字符。创建一个频率等于两个节点频率之和的新内部节点。使第一个提取的节点为其左子节点,另一个提取的

2020-11-18 16:08:42 373

原创 CloudFlare+Nginx配置HTTPS连接

参考地址:cloudflare.com使用Cloudflare和Nginx来托管网站管理 Cloudflare Origin CA 证书已安装nginx支持https配置nginx启动、重启、关闭nginx配置ssl实现https访问点击SSL/TLS,并且点击源服务器进入下面的页面,点击下面的创建证书,接下来按照下面链接的指导进行操作:使用Cloudflare和Nginx来托管网站同时在Nginx服务器的配置文件nginx.conf中设置相关的配置nginx配置ssl实现ht

2020-11-18 16:07:30 4576

原创 Linux虚拟内存与分页存储管理

虚拟存储器作为现代操作系统中存储器管理的一项重要技术,实现了内存扩充功能。**但该功能并非是从物理上实际地扩大内存的容量,而是从逻辑上实现对内存容量的扩充,让用户所感觉到的内存容量比实际内存容量大得多。**于是便可以让比内存空间更大的程序运行,或者让更多的用户程序并发运行。这样既满足了用户的需要,又改善了系统的性能。虚拟内存是操作系统物理内存和进程之间的中间层,它为进程隐藏了物理内存这一概念,为进程提供了更加简洁和易用的接口以及更加复杂的功能。我们可以将虚拟内存看作是在磁盘上一片空间,当这片空间中的一

2020-11-14 15:56:44 786

原创 为什么网络需要分层

OSI与TCP/IP分层模型为什么网络需要分层?大部分软件系统都是分层架构的,为了工程上实现/调试/维护方便。网络系统分得更明显一点,因为其系统设计写成了协议。把TCP/IP层次化是有好处的。比如,如果互联网只由一个协议统筹,某个地方需要改变设计时,就必须把所有部分整体替换掉。而分层之后只需把变动的层替换掉即可。把各层之间的接口部分规划好之后,每个层次内部的设计就能够自由改动了。分层模型传输过程发送端在层与层之间传输数据时,每经过一层时必定会被打上一个该层所属的首部信息。反之,接收

2020-11-14 13:58:20 2090

原创 Select、Poll、Epoll详解

同步异步与阻塞非阻塞用户空间和内核空间操作系统为了支持多个应用同时运行,需要保证不同进程之间相对独立(一个进程的崩溃不会影响其他的进程 , 恶意进程不能直接读取和修改其他进程运行时的代码和数据)。 因此操作系统内核需要拥有高于普通进程的权限, 以此来调度和管理用户的应用程序。于是内存空间被划分为两部分,一部分为内核空间,一部分为用户空间,内核空间存储的代码和数据具有更高级别的权限。内存访问的相关硬件在程序执行期间会进行访问控制( Access Control),使得用户空间的程序不能直接读写内核空间的

2020-08-30 16:54:33 1353 2

原创 Linux Socket接口使用方法

Linux内核net/socket.c定义了一套socket的操作api。图1展示了socket层所处与TCP/IP协议栈之上和应用层之下。socket()函数socket函数对应于普通文件的打开操作。普通文件的打开操作返回一个文件描述字,而**socket()**用于创建一个socket描述符(socket descriptor),它唯一标识一个socket。这个socket描述字跟文件描述字一样,后续的操作都有用到它,把它作为参数,通过它来进行一些读写操作。int socket(int doma

2020-08-28 00:43:42 698

原创 【STL源码分析】空闲适配器

配置器STL一级适配器和二级适配器考虑到小型区块所可能造成的内存破碎问题,SGI 设计了双层级配置器,第5用 malloc()和 free(),第二级配置器则视情况采用不同的策略:当配置区块超过 128 bytes 时,视之为 “足够大”,便调用第一级配置器;当配置区块小于 128 bytes 时,视之为 “过小”,为了降低额外负担,便采用复杂的**内存池(memory pool)**整理方式,而不再求助于第一级配置器。一级适配器第一级配置器以 malloc(), free(), realloc

2020-08-21 22:48:05 98

原创 Linux内存管理方式

本质上是一种内存的划分方法分页存储管理这种方式中,将用户程序的地址空间,注意,是用户程序的地址空间分为若干个固定大小的区域,成为“页”或“页面”。我们可以知道,这也页其实是不存在的,只是一种划分内存空间的方法。也就是说,这种方式将用户的程序**“肢解”**了,分成很多个小的部分,每个部分称为一个“页”。逻辑地址将逻辑地址的前n位作为页号,后面32-n位作为页内偏移量。页内碎片由于进程的最后一页经常装不满一个块,从而形成了不可利用的碎片,称之为**“页内碎片”**。页表作用:实现页号到.

2020-08-19 23:23:55 245

原创 【数据结构】优先队列(priority_queue)

STL里的priority_queuepriority_queue的底层实现是堆。使用方法头文件:#include<queue>原型:priority_queue<Type, Container, Functional> Type为数据类型, Container为保存数据的容器,Functional为元素比较方式。(如果不写后两个参数,那么容器默认用的是vector,比较方式默认用operator<,也就是优先队列是大顶堆,队头元素最大。)最简单的一个参数的p

2020-08-18 10:23:07 186

原创 Leetcode每日一题(3)

743. 网络延迟时间有 N 个网络节点,标记为 1 到 N。给定一个列表 times,表示信号经过有向边的传递时间。 times[i] = (u, v, w),其中 u 是源节点,v 是目标节点, w 是一个信号从源节点传递到目标节点的时间。现在,我们从某个节点 K 发出一个信号。需要多久才能使所有节点都收到信号?如果不能使所有节点收到信号,返回 -1。示例:输入:times = [[2,1,1],[2,3,1],[3,4,1]], N = 4, K = 2输出:2注意:N 的范围在

2020-08-17 23:16:56 364

原创 Leetcode每日一刷(2)

5490. 吃掉 N 个橘子的最少天数厨房里总共有 n 个橘子,你决定每一天选择如下方式之一吃这些橘子:吃掉一个橘子。如果剩余橘子数 n 能被 2 整除,那么你可以吃掉 n/2 个橘子。如果剩余橘子数 n 能被 3 整除,那么你可以吃掉 2*(n/3) 个橘子。每天你只能从以上 3 种方案中选择一种方案。请你返回吃掉所有 n 个橘子的最少天数。示例 1:输入:n = 10输出:4解释:你总共有 10 个橘子。第 1 天:吃 1 个橘子,剩余橘子数 10 - 1 = 9。第 2 天

2020-08-16 13:06:12 103

原创 【数据结构】 哈希表

哈希表什么是哈希表?哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。哈希表hashtable(key,value) 就是把Key通过一个固定的算法函数既所谓的哈希函数转换成一个整型数字,然后就将该数字对数组长度进行取余,取余结果就当作数组的下标,将value存储在以该数字为下标的数组空间里。(或者:把任意长度的输入(又

2020-08-15 23:32:51 1010

原创 数据库知识(2)

mysql的MVCC机制MVCC的维基百科解释:多版本并发控制(Multiversion concurrency control, MCC 或 MVCC),是数据库管理系统常用的一种并发控制,也用于程序设计语言实现事务内存。MVCC是一种多版本并发控制机制,是MySQL的InnoDB存储引擎实现隔离级别的一种具体方式,用于实现提交读和可重复读这两种隔离级别MVCC作用MVCC意图解决读写锁造成的多个、长时间的读操作饿死写操作问题。所以MVCC通过保存某个时间点的快照来实现该机制,每个事务读到的数

2020-08-15 22:00:18 97

原创 数据库知识(1)

数据库事务事务(Transaction)是由一系列对系统中数据进行访问与更新的操作所组成的一个程序执行逻辑单元。事务是DBMS中最基础的单位,事务不可分割。数据库事务四大特性(ACID)原子性:不可分割,要么全部完成提交,要么全部回滚一致性:一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态。隔离性:多用户一起进行事务操作互不影响,相互隔离。持久性:一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库

2020-08-15 14:44:49 76

原创 Leetcode每日一刷(1)

546. 移除盒子给出一些不同颜色的盒子,盒子的颜色由数字表示,即不同的数字表示不同的颜色。你将经过若干轮操作去去掉盒子,直到所有的盒子都去掉为止。每一轮你可以移除具有相同颜色的连续 k 个盒子(k >= 1),这样一轮之后你将得到 k*k 个积分。当你将所有盒子都去掉之后,求你能获得的最大积分和。示例:输入:boxes = [1,3,2,2,2,3,4,3,1]输出:23解释:[1, 3, 2, 2, 2, 3, 4, 3, 1] ----> [1, 3, 3, 4, 3,

2020-08-15 14:21:22 97

原创 Http协议浅析

HTTP/1.x在早期,HTTP 使用一个简单的模型来处理这样的连接。这些连接的生命周期是短暂的:每发起一个请求时都会创建一个新的连接,并在收到应答时立即关闭。当请求发起时,网络延迟和带宽都会对性能造成影响。现代浏览器往往要发起很多次请求(十几个或者更多)才能拿到所需的完整信息,证明了这个早期模型的效率低下。在 HTTP/1.x 里有多种模型:短连接, 长连接, 和 HTTP 流水线。短链接模型HTTP/1.0 的默认模型。每一个 HTTP 请求都由它自己独立的连接完成;这意味着发起每一个

2020-07-28 12:21:02 306

原创 捣弄行云趣码

行云趣码官网:http://mart.cloudtogo.cn/Linux服务器生成自己的服务器进入应用商店,选择需要的Linux服务器,这里选择CentOS[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pIte1kPE-1595681757857)(https://i.loli.net/2020/03/28/VkdSiEHqtpfPBTw.png)]点击部署,等待生成自己的服务器发布成功[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(i

2020-07-25 21:04:33 296

原创 UE4编辑器模式下使用HitProxy

需要从 UGameViewportClient 类继承修改返回值为true,路径:\Source\Runtime\Engine\Private\GameViewportClient.hvirtual bool RequiresHitProxyStorage() override { return true; }在FViewportClient类中新建DrawHitProxy函数文件UnrealClient.h在GameViewportClient类中声明并且实现声明:\Source\Runt

2020-07-25 20:49:41 1146 8

原创 UE4获取深度缓存

深度像素格式键入命令vis scenedepthz uv0以查看实际使用的深度缓冲区。UE4对场景使用“反向”深度缓冲区。获取在任意tick函数或者其他函数添加以下的命令:struct DepthPixel //定义深度像素结构体 { float depth; char stencil; char unused1; char unused2; char unused3; }; float* cpuDataPtr; // Texture深度值数组首地址 TArray&l

2020-07-25 20:45:17 1772 2

原创 Linux编辑利器-Vim

在大学时代,Vim 的大名就已如雷贯耳,但由于它陡峭的学习曲线,一直望而却步。等真正开始学习之后,发现并没有想象中的复杂,也没有所谓的瓶颈,只要在实际写代码中强迫自己使用就可以了,无形中就会形成习惯。​ ——GeekPlux三种模式正常模式以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。正常模式可以使用快捷键。编辑模式按下i, I, o, O, a, A, r, R等任何一个字母之后才会进入编辑模式, 一般来说按i即可.

2020-07-25 20:39:56 123

原创 Linux简单命令与Shell

Linux目录结构及解释查看命令行执行完位置:echo $BASH命令记录mkdirmkdir命令 用来创建目录。语法:mkdir (选项)(参数)主要选项:-m<目标属性>或–mode<目标属性>建立目录的同时设置目录的权限;-p或–parents 若所要建立目录的上层目录目前尚未建立,则会一并建立上层目录;参数:指定要创建的目录列表,多个目录之间用空格隔开。创建多层目录:mkdir a/b/c/dchmodchmod命令用来变更文件或目录

2020-07-25 20:38:15 92

原创 使用Github(Action)+Hugo搭建自己的博客

HUGO + Github + Github Action持续集成部署个人博客HUGO本地环境首先在HUGO的官网下载Hugo的Windows安装包,然后将路径添加到环境变量即可。step1:下载hugostep2:配置环境变量HUGO站点配置及主题配置创建站点在目录下直接输入下面的代码即可创建一个名为blog的hugo站点(注意:新建的站点是没有自带主题的)hugo new site blog或者进入blog文件夹内直接输入以下语句:hugo new site .下载主题.

2020-07-25 20:33:53 1994 1

空空如也

空空如也

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

TA关注的人

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