让 Windows 更加适合开发

在Windows上进行优雅的编程是个头疼的问题,但是在我的精心调教下,她变得听话了许多…… 安装scoop 为什么选择scoop? 有类似的选择如 chocolatey ,WinGet但是我选择了scoop。第一是因为scoop的软件很多是便携软件。便携,顾名思义可以很方便带着跑的东西。scoop安装的软件也是一样的,重装系统不必重新配置一大堆环境变量,不必重新安装一大堆软件。重装系统后按照[^1]里的步骤进行配置,很快就可以配置好各种环境变量,软件也不必再安装。 具体如何安装scoop就不赘述了,在官方网站可以了解安装的方法 https://scoop.sh/ 。 变成Lindows 安装了scoop,是时候展现她的力量了。 先来安装一下 busybox 和 sudo scoop install busybox sudo busybox内置了linux的很多命令,常用的基本上都有了。安装sudo可以临时提权类似与linux的sudo。Windows最终变成了Linux的样子,嘿嘿Windows❤️Linux。 Windows中busybox自带的命令 ar arch ash awk base64 basename bash bunzip2 bzcat bzip2 cal cat chmod cksum clear cmp comm cp cpio cut date dc dd df diff dirname dos2unix dpkg dpkg-deb du echo ed egrep env expand expr factor false fgrep find fold fsync ftpget ftpput getopt grep groups gunzip gzip hd head hexdump httpd iconv id ipcalc kill killall less link ln logname ls lzcat lzma lzop lzopcat man md5sum mkdir mktemp mv nc nl od paste patch pgrep pidof pipe_progress pkill printenv printf ps pwd readlink realpath reset rev rm rmdir rpm rpm2cpio sed seq sh sha1sum sha256sum sha3sum sha512sum shred shuf sleep sort split ssl_client stat strings su sum tac tail tar tee test time timeout touch tr true truncate ts ttysize uname uncompress unexpand uniq unix2dos unlink unlzma unlzop unxz unzip usleep uudecode uuencode vi watch wc wget which whoami whois xargs xxd xz xzcat yes zcat 有了这些命令Windows变得更像Linux了。如果有没有的命令可以尝试搜索一下`scoop search something`。 环境配置开发 在Linux里配置开发环境是很简单的,现在的Lindows其实也一样简单。 在ArchLinux里配置java开发环境,很快捷方便。...

May 27, 2022 · 2 min · 373 words · oldshensheep

Pointers in C/C++

C/C++ 的指针是什么?int* ? *(int*)var? 是什么鬼??? 指针就是地址,与其说指针,地址更容易理解。 指针变量的定义 一般的定义一个指针变量:数据类型* 变量名= new 数据类型(); int* i = new int(1); Sheep* sheep = new Sheep("mmm"); 一个指针变量是有类型的(这不是废话?)为什么要有类型?地址大小不都是一样的吗?一般是32位或64位啊。 但是如果指针变量没有类型的话用*运算符怎么取值?是取32位还是64位还是其他的?所以定义指针变量时声明的变量类型就是这个道理。 如果你学过了汇编,下面的例子可以帮助你理解,看例子1,这里将2020h移入一个内存空间,为什么要加word ptr? 2020h不就是2个字节吗,你再声明写入一个2字节的内存空间不是有点多余?这里看起来有点多余,但是如果有这样的汇编指令(例子2和3),他们的行为一样吗? 实际上是不一样的mov word ptr [addr],20h可以理解为mov word ptr [addr],0020h是实际上写入了2个字节的数据,例子3只写入了一个字节。再看例子4,如果不加word ptr你怎么区分例子2和例子3?(就是说你不知道你要写入多少数据) mov word ptr [addr],2020h ;例子1 mov word ptr [addr],20h ;例子2 mov byte ptr [addr],20h ;例子3 mov [addr],20h ;例子4 mov ax,[addr] ;例子5 可以运行、修改下面的汇编代码测试上面的说法。 DATA SEGMENT num dd 660F0655H DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA START: mov ax,data mov ds,ax lea si,num mov word ptr [si],2020h mov ah,4ch int 21h CODE ENDS END START 指针的具体使用 代码 #include <iostream>using namespace std; int main() { int* i = new int(1); int* j = new int(2); int k = 0; int l = 0x64fe10; // 或者 &j /** * l为j变量的地址,理论上**l就可以取j的值 *l取j的内存地址,再取值。 * 实际上因为int类型不能直接取值,要转换成对应的数据类型的指针,再取值。 * 即*(int*)(*(int*)l) */ cout << "变量的内存地址" << endl; cout << "&i: " << &i << endl; cout << "&j: " << &j << endl; cout << "&k: " << &k << endl; cout << "&l: " << &l << endl << endl; cout << "变量的值" << endl; cout << "i: " << i << endl; cout << "j: " << j << endl; cout << "k: " << k << endl; cout << "l: " << l << endl << endl; cout << *i << endl; cout << "l的值转成\"int*\"类型后取值" << endl; cout << *(int*)l << "\thex: " << (int*)(*(int*)l) << endl; cout << "l的值指向的地址的值,再取前面的值指向的地址的值:" << *(int*)(*(int*)l) << endl << endl; return 0; } 运行结果 变量的内存地址 &i: 0x64fe18 &j: 0x64fe10 &k: 0x64fe0c &l: 0x64fe08 变量的值 i: 0x2632540 j: 0x2632560 k: 0 l: 6618640 1 l的值转成"int*"类型后取值 40052064 hex: 0x2632560 l的值指向的地址的值,再取前面的值指向的地址的值:2 变量的内存分布 地址的值可能有所不同...

June 14, 2021 · 2 min · 310 words · oldshensheep

学习Markdown

常用的 Markdown 语法,记录一些加强记忆。 删除线 ~~删除线~~ 删除线 斜体 _斜体_ 斜体 粗体 **粗体** 粗体 斜体粗体 **_斜体粗体_** 斜体粗体 水平分割线 --- 链接 <http://http://oldshensheep.com> http://http://oldshensheep.com [我是一个链接](http://oldshensheep.com) 我是一个链接 ![我的桌面图片](http://example.com/p.jpg)

December 6, 2020 · 1 min · 23 words · oldshensheep

用github+hexo创建自己的blog网站

用 github 和 hexo 创建一个属于自己的 blog 网站 本文章是在 Windows 环境下完成的。 如果认真看完了这个教程还是不会做,那…… 建立一个 github 账号 点击进入网站注册 https://github.com 建立一个仓库(repository) 第一步,点击新建按钮 第二步,创建仓库 下载安装 git 点击下载 git https://git-scm.com/download/win 国内下载可能比较慢,淘宝镜像地址 https://npm.taobao.org/mirrors/git-for-windows/v2.24.1.windows.2/Git-2.24.1.2-64-bit.exe 安装一路下一步就行了 下载安装 nodejs 点击下载安装 nodejs https://nodejs.org/dist/v12.14.1/node-v12.14.1-x64.msi 下一步,下一步,下一步(你安装国内的一些软件可不能这样哦) 安装 hexo 在某个地方新建一个文件夹,这个文件夹是储存你网站相关的文件的 有个小技巧: 这里我把文件夹建在了桌面,在空白处按 Shift 然后鼠标右键可以快捷在此处打开 Powershell 在 cmd/PowerShell 输入 cmd npm install -g hexo-cli cd #你新建文件夹的名字 hexo init 部署到 github 安装部署工具 npm install hexo-deployer-git --save 先编辑一下 hexo 文件夹里的_config.yml 这个配置文件,在底部添加 deploy: type: git repo: https://github....

January 11, 2020 · 1 min · 123 words · oldshensheep