Golang 入门基础(零) - 前言
前言
为什么?
学习一个语言前,首先需要搞清楚,为什么我们需要学这门语言,它有什么优势?
Golang 提供了编译和直接运行的方式, 保证了静态编译语言的安全和性能。(C/C++)
Golang 提供包的概念,下载和安装非常方便,保证了动态语言的高效开发和维护(Python)
Golang 引入垃圾回收机制(GC),开发者可以更加关注代码的其他问题。
Golang 天然支持并发,包括:goroutine 轻量级线程、channel 管道。
Golang 创新引入:slice 切片、defer 延迟执行。
实际上,Golang 最大的优势应该是天然支持并发,用它写的服务程序可以具有更高的性能,这是其他所有编程语言都无法媲美的。
前置知识
Clang :事实上 Golang 和 C++ 是由同一作者发明的,并在其基础上改进和精简,因此 Golang 和 Clang 在语法方面具有高度的相似性,本文假设你已经掌握了 C 语言,文中未提及的部分可以参考 Clang 。
多线程与并发 :Golang 最大的优势就是原生支持并发,本文将使用大量的篇幅介绍并发相关的语法,并提供一些简单的示例, ...
Golang 安装笔记
Go 安装
下载
Go官网下载地址:https://golang.org/dl/
Go官方镜像站(推荐):https://golang.google.cn/dl/
安装
安装路径:D:\Programs\Golang\Go(根据自己习惯)
配置环境变量(注意: 安装时自动配置了环境变量,如果与需要的不同,请务必手动删除)
PATH = D:\Programs\Golang\Go\bin
GOROOT = D:\Programs\Golang\Go
GOPATH = D:\Programs\Golang\GoPath (最好将 GOROOT 和 GOPATH 分开)
更改配置(命令行输入)
go env -w GO111MODULE=on(默认值 off)
go env -w GOPROXY=https://goproxy.cn,direct(配置代理,默认值 https://proxy.golang.org,direct)
Visual Studio Code 安装
到官网下载对应的 VSC 版本。
Download Visual Studio Cod ...
Github + Hexo + Butterfly 建站笔记(五) - Gitalk 评论系统
回到文章目录
关于 Gitalk 配置可以参考官方文档
Butterfly 安裝文檔(四) 主題配置-2 | Butterfly
gitalk/readme-cn
创建 Github Application
首先在 Github 的个人设置最下方找到 Developer Settings 。
选择 OAuth Apps 并注册新的 OAuth Applications 。
填写相关信息,请在 Authorization callback URL 填写你的个人网址。之后进入新的界面点击 Generate a new client secret 。Client ID 和 Client Secret 后面会用到。
配置 Butterfly 配置文件
在此之前你需要在 Github 创建一个仓库用于存放评论,我的仓库名为 jamhus-tao.github.io.gitalk ,这样可以防止混淆。
在 comments.use 增加 gitalk ,然后配置下面的 gitalk 选项。
12345678910comments: # Up to two comm ...
Github + Hexo + Butterfly 建站笔记(四) - PicGo 图床配置
回到文章目录
2023 年 8 月 26 日更新,也许是更好的解决方案最近发现我的 PicGo 经常莫名寄,刚开始以为是 Github 不稳定,换了其他平台也寄。
这里再推荐一个免费的专业图床平台 sm.ms,你可以直接在浏览器上传而无需依赖 PicGo。
为什么我们需要图床?
因为我们的博客上传到云端后,会丢失其中图片在本地的链接。图床是一个在云端存储图片的平台,使用图床可以比较好的解决这个问题。
这里我们将使用 PicGo + Github 实现图床,其中 PicGo 只是一个本地的图床管理工具,而 Github 为其提供存储。
PicGo 官方文档
创建 Github Tokens
首先在 Github 的个人设置最下方找到 Developer Settings 。
选择 Personal access tokens 下的 Tokens (classic) 选项,然后 Generate new token 。
在 Note 中为这条 token 备注,并且设置 Expiration 到期时间,可以设置为无限期,然后这条 token 需要开启所有 repo 权限。 ...
Github + Hexo + Butterfly 建站笔记(三) - Butterfly 主题
回到文章目录
你用的还是 Hexo 默认的主题,现在我们来切换更好看的主题。
Butterfly - A Simple and Card UI Design theme for Hexo
首先,由于我时间有限,本文只能教学一些简单的配置,希望根据本文的思路,你可以逐渐找到跟着官网配置的方法。许多你需要解决的问题可能都在官网可以找到解决方案。
安装 Butterfly
123cd {你的博客目录}/{你的博客名称}git clone -b master https://github.com/jerryc127/hexo-theme-butterfly.git themes/butterflynpm install hexo-renderer-pug hexo-renderer-stylus --save
更改 _config.yml 主题配置
1234# Extensions## Plugins: https://hexo.io/plugins/## Themes: https://hexo.io/themes/theme: landscap ...
Github + Hexo + Butterfly 建站笔记(二) - Hexo 部署
回到文章目录
Hexo 常用命令
生成静态网页文件到 public 目录。
1hexo generate
启动本地预览服务器(实时更新)。
1hexo server # http://localhost:4000 (https 不可用)
部署服务器到远端。
1hexo deploy # 即将介绍
新建文章到 source/_posts 目录(可以手动新建)。
1hexo new {文章名称} # 可以手动新建,但注意 Markdown 头部声明
新建页面到 source 目录(可以手动新建)。
1hexo new page {页面名称}
清除 hexo 博客目录缓存与 public 目录,用于修复未知问题。
12hexo clear# hexo generate # 别忘了重新生成
注:很多命令都可以直接用首字母简化表示。
配置博客信息
前面讲到 _config.yml 文件用于配置博客信息。这里我们打开 _config.yml,仅对于我们关心的基本内容进行讲解。
详细内容见官方文档:_config.yml
...
Github + Hexo + Butterfly 建站笔记(一) - Hexo 启动!
回到文章目录
安装 Node.js
Hexo 框架依赖于 Node.js 所以我们需要先安装 Node.js。
Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境,它让 JavaScript 可以脱离浏览器运行在服务器端。npm(node package manager)是 Node.js 的包管理器,用于 node 插件管理(包括安装、卸载、管理依赖等),这里需要使用 nmp 下载 Hexo 框架。
前往官网下载 Node.js 长期维护版,按照指引完成安装。
Node.js 官网下载
命令行 检查 `Node.js` 安装。
之后的操作都将使用命令行完成。
123node -v # 查看 node 版本号,我的版本:V18.17.0npm -v # 查看 nmp 版本号,我的版本:V9.6.7npm
安装 Hexo 框架
12npm install -g hexo-clihexo -v # 查看 hexo 版本号,我的版本:V4.3.1
初始化个人博客
此操作后你的个人博客将称为你的默认博客目录,之后的所有 hexo ...
二维哈希与二维Manacher - Beautiful Matrix - 牛客多校Day3
Beautiful Matrix
前往 算竞题解 分类 || 前往 算竞模板 分类
原题链接
G-Beautiful Matrix 2023牛客暑期多校训练营3
简明题意
给一个二维矩阵,求其中有多少个中心对称正方形子矩阵。
数据范围:矩阵小于 2000x2000,没有多组,时间限制 5s 。
注:这道题非常的丑,一点不 Beautiful !
解题思路(一)
可以考虑使用二维字符串哈希。对矩阵求二维哈希,然后逆序求一遍哈希,通过比较哈希值可以 O(1)O(1)O(1) 判定一个矩阵是否为中心对称矩阵。
预处理二维哈希值是 O(n2)O(n^2)O(n2) 的,但是如果我们考虑枚举所有正方形子矩阵,发现时间复杂度是 O(n3)O(n^3)O(n3) 的,这是一个不可接受的时间。然后我们可以考虑枚举矩阵的中心,然后通过二分判断以该点为中心的最大中心对称正方形子矩阵,因为对于中心对称正方形满足相同中心的更小正方形同样满足中心对称。时间复杂度为 O(n2logn)O(n^2logn)O(n2logn) ,这里需要注意偶矩阵与奇矩阵需要分类讨论,或者直接添加空字符将矩阵拓展为两倍 ...
Github + Hexo + Butterfly 建站笔记(零) - 前言
前言
欢迎来到我的建站笔记,该系列的文章将教你如何使用 Github 搭建自己的博客网站。
这个博客网站需要用到 Hexo 框架和 Butterfly 主题,网站代码依托于 Github 。
Hexo 是一个静态博客网站框架,使用 Hexo 以及其提供的诸多配置选项,所有代码以及你的 Markdown 博客被转换为静态网页文件后递交到 Github,不需要拥有自己的服务器就可以搭建一个博客网站。虽然静态网站有很多局限性,但这作为博客够用了!这是 Hexo 的官方文档,如果你需要更深入的使用 Hexo 可能需要该官方文档。
Butterfly 是基于 Hexo 的主题,提供了许多相关配置,快速美化你的博客网站。当然使用这类主题使得博客同质化严重。Butterfly 的作者是香港人,这意味着你可以看到中文的官方文档。这是 Butterfly 的官方主页,右下角有简繁体转换按钮,后面的许多配置本文无法一一介绍,需要你自己查阅官方文档。
前置知识
在正式开始你的配置之前,请务必确保你会以下技能:命令行 、 Git 、 Markdown 。后面此博客的所有文章都必须使用 Markdown 书写。 ...
2023 年第十四届蓝桥杯 C/C++ B组省赛题解
前言
这是一篇 2023 年第十四届蓝桥杯省赛 C/C++ B 组题解。本人蒟蒻 ACMer,最近发现时隔两周的蓝桥杯省赛还没有一篇题解,火速补了题来写份题解。最后再顺便写一下心得吧。
A 题:日期统计
这题方法应该很多,没有和别人讨论想法。我的解法思路是:先 load 函数生成所有这一年的合法日期,然后枚举所有可以从数据中拿到的八位日期,检查它是否在合法日期的集合中。
这里枚举到四位,即年份的时候要判断一下,不然可能数据太多要跑很久。
注意要去重!不知道有多少冤大头痛失这 5 分。(原题里特意加粗了不重复)
12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182// 日期统计#include <bits/stdc++.h>#define int int64_t#define endl '\n'usin ...