dot语言介绍
需要注意的是,当使用 dot -Tpng input.dot 生成图片时候,一定要加上 -o output.png 指定输出文件。
dot的语法
dot的语法定义如下所示:
graph : [ strict ] (graph | digraph) [ ID ] '{' stmt_list '}'
stmt_list : [ stmt [ ';' ] stmt_list ]
stmt : node_stmt
| edge_stmt
| attr_stmt
| ID '=' ID
| subgraph
attr_stmt : (graph | node | edge) attr_list
attr_list : '[' [ a_list ] ']' [ attr_list ]
a_list : ID '=' ID [ (';' | ',') ] [ a_list ]
edge_stmt : (node_id | subgraph) ed ...
编译LLVM
Windows下编译LLVM
安装Visual Studio
首先需要下载Visual Studio Installer的安装程序VisualStudioSetup.exe,下载链接: https://visualstudio.microsoft.com/zh-hans/downloads/。选择社区版,点击免费下载。
下载后,双击运行VisualStudioSetup.exe。一路下一步即可安装Visual Studio Installer。
接下来,点击任务栏左侧的搜索图标,搜索Visual Studio Installer,找到并启动。然后点击可用标签,在列表中找到社区版的Visual Studio,写这篇博客的时候,最新的Visual Studio版本是Visual Studio Community 2022,点击安装,即可进入相关配置界面。
根据需要选择工作负荷和组件。对于编译LLVM的需求来说,需要安装使用C++的桌面开发这个工作负荷。勾选后,点击安装,即可进行安装,等待安装完成即可。
安装完成之后,再次点击任务栏左侧的搜索图标,搜索Developer Powershell ...
graphviz安装教程
Linux下的安装
在linux下直接使用命令即可安装
123456# ubuntusudo apt install graphviz# Fedorasudo yum install graphviz# Debiansudo apt install graphviz
windows下的安装
首先下载安装程序,下载地址: https://graphviz.org/download/。
找到对应的安装程序,笔者这里选择的是graphviz-3.0.0 (64-bit) EXE installer [sha256]。
下载后运行安装程序,当询问是否添加环境变量时选择添加当前用户。
然后一路下一步即可。
安装完成后,打开终端,输入命令
1dot -version
出现下图所示的结果,表明安装成功。
测试graphviz
新建一个文本文件,命名为main.dot。然后将下面的内容复制到main.dot。
1234567digraph { a -> b -> c -> d; b -> a ; a -> d;}
然后运行下述命 ...
使用VMWare安装Ubuntu并使用vscode远程连接到虚拟机
VMware下载
下载地址: https://www.vmware.com/products/workstation-pro/workstation-pro-evaluation.html
点击进入上面的地址,然后往下拉,就可以看到windows和linux的下载选项,选择对应的系统进行下载即可。
下载完成后,双击运行下载的安装文件,一路下一步即可完成安装。
如果需要许可证,可以去咸鱼找一个。
Ubuntu下载
下载地址: https://ubuntu.com/download/desktop
选择需要的版本下载即可。
创建新的虚拟机
打开安装好的VMware,点击文件->新建虚拟机,如下图所示。
会弹出如下的对话框:
这里选择推荐的设置,直接点击下一步即可。
然后选择稍后安装操作系统,如下图所示。
然后客户操作系统选择linux,版本选择Ubuntu 64位,如下图所示。
然后需要指定磁盘容量,这里采用默认就好。
然后会进入下图所示的界面,如果需要修改,可以点击自定义硬件。如果不需要修改,点击完成即可。至此虚拟机创建完成,可以在左侧的列表中找到刚才创建的虚拟机。
选 ...
樱花飘落效果实现
效果预览
var stop, staticx;
var img = new Image();
img.src =
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAUgAAAEwCAYAAADVZeifAAAACXBIWXMAAACYAAAAmAGiyIKYAAAHG2lUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPD94cGFja2V0IGJlZ2luPSLvu78iIGlkPSJXNU0wTXBDZWhpSHpyZVN6TlRjemtjOWQiPz4gPHg6eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iQWRvYmUgWE1QIENvcmUgNS42LWMxNDIgNzkuMTYwOTI0LCAyMDE3LzA3LzEzLTAxOjA2OjM5ICAgICAgICAiPiA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjIt ...
星星追随鼠标效果
效果预览
鼠标滑过下图的时候,会有星星追随。
const container = document.getElementById('preview-container');
container.width = window.innerWidth;
container.height = window.innerHeight;
// 三种可能的颜色
var possibleColors = ["#D61C59", "#E7D84B", "#1B8798"]
// var width = window.innerWidth;
// var height = window.innerHeight;
var width = container.clientWidth;
var height = container.clientHeight;
var cursor = { x: width / 2, y: width / 2 };
var particles = []; // 粒子
func ...
文字烟雾效果的实现
效果预览
鼠标经过文字的时候,会出现烟雾的效果
午南卜卯印即去又及取受口召可史右各合吉名向君启吹告周咸品唐唯商
喜嘉四因囿圉土在壬复夕夙多大天夫夷奚奠女好如妣妥妹妻妾姬娥子季
宀宁它宅安宗官宜宣室宫
const text = document.getElementById('preview-container').querySelector('.smoke-text');
text.innerHTML = text.textContent.replace(/\S/g, "$&")
const letters = text.querySelectorAll("span");
for (let i = 0; i < letters.length; i++) {
letters[i].addEventListener('mouseover', function () {
letters[i].classList.add('active')
})
...
黑客帝国的代码雨实现
少年不识愁滋味,爱上层楼。爱上层楼。为赋新词强说愁。
而今识尽愁滋味,欲说还休。欲说还休。却道天凉好个秋。
辛弃疾《丑奴儿·书博山道中壁》
效果预览
从上至下,依次是 阿拉伯语 、甲骨文 、日语 、彝语 、藏语 、希伯来语 、小篆 、印地语 、大篆 、西里尔字母 。
const container = document.getElementById("preview-container");
const base_path = 'https://cdn.jsdelivr.net/gh/Qiu-Weidong/blog/resources/images/hacker/';
// 字符集
const Arab = 'ابتثجحخدذرزسشضصضطظعغفقكلمنهويء'; // 阿拉伯语
const Hebrew = 'אבגדהוזחטיךכלםמןנסעףפץצקרשתבכפּתּוּואֽאֿשׁשׂוֹ'; // 希伯来语
const Hindi = 'अआएईऍऎऐइओऑऒऊऔउबभचछडढफफ़गघग़हजझ ...
C++11的λ表达式
甚矣吾衰矣。怅平生、交游零落,只今余几!白发空垂三千丈,一笑人间万事。问何物、能令公喜?我见青山多妩媚,料青山见我应如是。情与貌,略相似。
一尊搔首东窗里。想渊明、《停云》诗就,此时风味。江左沉酣求名者,岂识浊醪妙理。回首叫、云飞风起。不恨古人吾不见,恨古人不见吾狂耳。知我者,二三子。
辛弃疾《贺新郎·甚矣吾衰矣》
C++11中引入了λ表达式,它可以用来定义一个内联(inline)的函数,作为一个本地的对象或者一个参数。有了λ表达式,我们可以很方便的使用stl标准库。
λ表达式的构成
[...](...) mutable throwSpec -> returnType {...}
中括号当中是捕获列表(后面解释),小括号当中是λ表达式的参数(和一般的函数参数一样,若没有参数可以省略),大括号中是具体的代码。mutable、throwSpec和returnType都是可以省略的,同时,若returnType被省略,那么参数列表(也就是小括号)也可以省略。如果mutable省略,那么捕获列表当中的数据将不可更改,如果代码当中不会抛出异常,则throwSpec也可 ...
最远点对
题目描述
求nnn个点中相距最远的两个点的距离
输入
第一个数为点的个数nnn
接下来nnn行,每行2个浮点数xxx,yyy,表示点的坐标
输出
一个浮点数,表示最远的距离,保留6位小数。
样例1
输入:
2
0 0
1 1
输出:
1.414214
样例2
输入:
4
0 1
1 0
1 1
-1 -1
输出:
2.828427
数据范围
2≤n≤1000002 \leq n \leq 1000002≤n≤100000
hint
直接用O(n2)O(n^2)O(n2)的算法可以拿21.4286%21.4286\%21.4286%的分数,先求出凸包再对凸包上的点使用O(n2)O(n^2)O(n2)的算法可以拿到64.2857%64.2857\%64.2857%的分数,求出凸包再对凸包上的点使用O(n)O(n)O(n)的算法可以拿到100%100\%100%的分数