一些工具、环境配置的一些技巧或者相关的知识概念记录在这里。
Linux文件权限修改
Linux下每个文件有9个权限位,可以将他们分为三类:
- | 读(read) | 写(write) | 执行(execute) | - |
---|---|---|---|---|
所有者(user) | r | w | x | 7 |
用户组(group) | r | w | x | 7 |
其他(other) | r | w | x | 7 |
- | 4 | 2 | 1 | - |
在Linux下使用chmod
来修改文件权限。
如果需要往一个文件上增加user
的可执行权限,简单来说可以有两种办法:
假定有一个文件test,当前的权限是-wxr-xwr-
(356),我们要往其上增加用户读、用户组写以及其他执行权限。
第一种:通过u
表示用户、g
表示用户组、o
代表其他。
1 | chmod u+x test |
第二种方式就是使用数字设定法,由上面的表格可见r
为4、w
为2、x
为1,把你要设定的三位的值加起来就是该组(user/group/other)的权限:
上一种方法修改权限略微繁琐一点,在这里我们可以直接指定u/g/o
的权限:
1 | chmod 777 test |
虚拟机网络配置
在VMware
-编辑
-虚拟网络编辑器
中设置其中一个虚拟网卡(VMnet0)为桥接到物理网卡。
然后修改虚拟机设置
中的网络适配器
为上面我们所编辑的虚拟网卡(VMnet0)。
然后重启进系统,通过ifconfig
查看是否与局域网在同一网段。
因为现在是路由动态分配的IP,所以有可能重启之后IP就变化了。需要来设置一下静态IP。
编辑/etc/network/interfaces
,从
1 | auto eth0 |
改为(网关和IP地址改为你自己的局域网配置):
1 | auto eth0 |
最后重启即可。
也可以加上自定义的DNS服务器:
1 | #DNS配置 |
man命令中输出的数字含义
我们使用man看一个接口,比如fork:
注意左上角和右上角的fork(2)
,这个数字2代表什么呢(man不同的参数是不一样的)
可以通过man man
命令来查看:
可以看到1~9分别代表不同的接口类别:
1: Executable programs or shell commands
2: System calls (functions provided by the kernel)
3: Library calls (functions within program libraries)
4: Special files (usually found in /dev)
5: File formats and conventions eg /etc/passwd
6: Games
7: Miscellaneous (including macro packages and conventions), e.g. man(7), groff(7)
8: System administration commands (usually only for root)
9: Kernel routines [Non standard]
MinGW版本中SJLJ/DWARF/SEH的区别
SJLJ (setjmp/longjmp)
available for 32 bit and 64 bit
not “zero-cost”: even if an exception isn’t thrown, it incurs a minor performance penalty (~15% in exception heavy code).
allows exceptions to traverse through e.g. windows callbacks
DWARF (DW2, dwarf-2)
available for 32 bit only
no permanent runtime overhead
needs whole call stack to be dwarf-enabled, which means exceptions cannot be thrown over e.g. Windows system DLLs.
SEH (zero overhead exception)
Windows下系统路径
系统路径含义 | 系统路径(不区分大小写) | 对应的绝对路径 |
---|---|---|
当前系统盘符 | %systemdrive%或%HOMEDRIVE% | C:\ |
当前系统目录 | %SystemRoot%或%Windir% | C:\WINDOWS |
当前用户文件夹 | %UserProfile%或%HOMEPATH% | C:\User\UserName |
公用应用数据文件夹 | %AllUsersProfile% | C:\ProgramData |
临时文件夹 | %TEMP% | C:\Users\UserName\AppData\Local\Temp |
Markdown
防止Markdown将链接中的括号截断
使用Markdown创建一个链接或者图片是使用[title](link)
和![ti./2017-02-03-16793/tle](link)
,但是当Markdown的连接中含有括号时,markdown的语法就会匹配链接中的括号,导致一个链接被断为两截。
1 | # 导致链接会被匹配为https://imzlp.com/ar(chi |
解决办法是使用%28
代替(
、%29
代替)
。主要是因为)
会歧义链接部分的结束。
1 | # OK.https://imzlp.com/ar(chi)ves/ |
这是使用url符号码去代替ASCII的符号,能够解决这个问题。
标题和目录中使用"号字符
Markdown在标题中直接使用"
可能会被转义,可以使用"
来替代,更多字符的转义字符可以看:HTML转义字符对照表.
mathjax有些不解析
注意在markdown中使用mathjax下标_
时,记得一定要写成\_
,否则将会出现不能解析的情况。
Visual Studio
关闭VS本身的拼写检查
工具(Tools)
-选项(Opetions)
-文本编辑器(TEXT Editor)
-C/C++
-高级(Advance)
:
在禁用波形曲线(Disable Squiggles)
处,改为true
.
Visual Assist关闭拼写检查
在VS中使用visual assist在输入中文注释的时候会有红色波浪线,看着很不舒服。
可以在VAssistX
- Visual Assist Options
中在左侧找到Underlinging
,取消勾选Underline spelling error in comments and strings using:
取消勾选即可。
源文件与模块生成时文件不同
在附加到进程调试时可能会碰到这种情况,解决的办法为:
打开VS:工具——选项——调试——常规,将“启用地址级调试”和“要求源文件与原始版本完全匹配”两项前的勾选去掉。
然后重新附加到进程调试即可。
开启最新标准草案的Modules
具体的链接看这里:Using C++ Modules in Visual Studio 2017
首先要在VS安装处添加上**标准库模块(Standard Library Modules)**,然后在项目属性中设置以下三处:
上副图片中在命令行处填入的命令为:
1 | /experimental:module /module:stdIfcDir "$(VCToolsInstallDir_150)ifc\$(PlatformTarget)" |
Windos 技巧
Wdinows10删除资源管理器的快速启动
打开此电脑
之后会有下载
/视频
/文档
之类的东西,感觉也不怎么用得到,可以通过下面的方法删除。
将下面的代码保存为.reg
执行既可。
1 | Windows Registry Editor Version 5.00 |
Bat技巧
bat获取当前的目录名
1 | @echo off |
bat获取当前目录
1 | echo 当前盘符和路径:"%~dp0" |
bat判断文件是否存在
1 | @echo off |