单元格中输入
1 | =TODAY()+ROW() |
人,技术,生活。
单元格中输入
1 | =TODAY()+ROW() |
西晋
庙号 | 帝号 | 姓名 | 在位时期 | 上位 | 在位 | 年号 |
---|---|---|---|---|---|---|
高祖 | 宣帝 | 司马懿 | 249-251 | 70岁 | 3年 | |
世宗 | 景帝 | 司马师 | 252-254 | 44岁 | 3年 | |
太祖 | 文帝 | 司马昭 | 255-265 | 44岁 | 11年 | |
世祖 | 武帝 | 司马炎 | 266-290 | 30岁 | 25年 | 泰始/咸宁/太康/太熙 |
孝惠帝 | 司马衷 | 291-306 | 35岁 | 16年 | 永平/元康/永康/永宁/太安/永安/建武/永兴/光熙 | |
孝怀帝 | 司马炽 | 307-313 | 23岁 | 7年 | 永嘉 | |
孝愍帝 | 司马邺 | 313-316 | 13岁 | 4年 | 建兴 |
东晋
庙号 | 帝号 | 姓名 | 在位时期 | 上位 | 在位 | 年号 |
---|---|---|---|---|---|---|
中宗 | 元帝 | 司马睿 | 317-323 | 41岁 | 7年 | 建武/太兴/永昌/太宁 |
肃宗 | 明帝 | 司马绍 | 323-326 | 24岁 | 4年 | 太宁 |
显宗 | 成帝 | 司马衍 | 326-342 | 5岁 | 15年 | 咸和/咸康 |
康帝 | 司马岳 | 343-344 | 21岁 | 2年 | 建元 | |
孝宗 | 穆帝 | 司马聃 | 345-361 | 2岁 | 17年 | 永和/升平 |
哀帝 | 司马丕 | 362-365 | 21岁 | 4年 | 隆和/兴宁 | |
司马奕 | 366-371 | 24岁 | 6年 | 太和 | ||
太宗 | 简文帝 | 司马昱 | 371-372 | 51岁 | 2年 | 咸安 |
烈宗 | 孝武帝 | 司马曜 | 373-396 | 11岁 | 28年 | 宁康/太元 |
安帝 | 司马德宗 | 397-402 | 15岁 | 6年 | 隆安/元兴/大亨 | |
恒楚 | 桓玄 | 403-404 | 34岁 | 2年 | 永始 | |
恒楚 | 恒谦 | 404-410 | 7年 | 天康 | ||
安帝 | 司马德宗 | 405-418 | 23岁 | 14年 | 义熙 | |
恭帝 | 司马德文 | 419-420 | 33岁 | 2年 | 元熙 |
refer to: https://baike.baidu.com/item/%E6%99%8B%E6%9C%9D/195770?fr=aladdin
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 | #include <string> #include <vector> #include <sstream> using namespace std; wstring copySpanStr(const wchar_t* start, const wchar_t* end) { wchar_t* buf = (wchar_t*)malloc((end - start + 1) * sizeof(wchar_t)); wchar_t* pTo = buf; for (const wchar_t* p = start; p != end; p++) { if (*p == L'\\' && p + 1 != end) { p++; *pTo++ = *p; } else *pTo++ = *p; } *pTo = 0; wstring out = buf; free(buf); return out; } int getParams(const wchar_t* str, vector<wstring>& out) { int isInQMark = 0; int isInSpace = 1; const wchar_t* tokenStart = str; for (const wchar_t* p = str; ; p++) { if (*p == L'"') { if (!isInQMark) { isInQMark = 1; tokenStart = p + 1; } else { isInQMark = 0; out.push_back(copySpanStr(tokenStart, p)); } } else if (*p == L'\\') { if (*(p + 1) != 0) p++; } else if (*p == L' ' || *p == 0) { if (!isInQMark) { if (!isInSpace) { isInSpace = 1; if (tokenStart != p) { out.push_back(copySpanStr(tokenStart, p)); tokenStart = p; } } else { } } } else { if (!isInQMark) { if (!isInSpace) { } else { isInSpace = 0; tokenStart = p; } } } if (*p == 0) break; } return out.size(); } wstring strReplaceCh2Str(const wchar_t* in, wchar_t fromCh, const wchar_t* toStr) { const wchar_t* p = in; wstringstream ss; const wchar_t* pToStr; for (; *p != 0; p++) { if (*p == fromCh) { for (pToStr = toStr; *pToStr != 0; pToStr++) { ss << *pToStr; } } else ss << *p; } return ss.str(); } int main() { wstring path = strReplaceCh2Str(L"c:\\aa.txt", L'\\', L"\\\\"); wstring msg = strReplaceCh2Str(L"\"优孩\"是EuhatExpert的中文名。", L'\"', L"\\\""); wstring cmd = L"EuhatExample.exe subCmd \"" + path + L"\" \"" + msg + L"\" 1234 5678"; vector<wstring> params; getParams(cmd.c_str(), params); return 0; } |
如果外部工程ExeB调了动态库DllA中的函数,当ExeB运行时,DllA中的全局类实例一定会初始化,但不一定非得在ExeB中调DllA中的函数后DllA中的全局类实例才会初始化,比如在DllA中代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | class DllA01() { public: DllA01() { MessageBoxA(NULL, "init", NULL, 0); } ~DllA01() { MessageBoxA(NULL, "fini", NULL, 0); } void test(void) { MessageBoxA(NULL, "test", NULL, 0); } }; __declspec(dllexport) DllA01 gA01; extern "C" __declspec(dllexport) void dllA01Test(void) { MessageBoxA(NULL, "dllA01Test", NULL, 0); } |
在ExeB中加入
1 2 3 4 | #pragma comment(lib, "DllA.lib") #pragma comment(linker, "/include:__imp__dllA01Test") //#pragma comment(linker, "/include:__imp_?gA01@@3VDllA01@@A") //#pragma comment(linker, "/ENTRY:foo") |
比如在vc2008里Debug时函数的传入参数都变成0xCCCCCCCC之类,需对工程属性设置一下:
C/C++->优化->优化->禁用
源码参见https://www.codeleading.com/article/62852336906/
提示
1 2 3 4 | error C2065: “STORAGE_PROPERTY_QUERY”: 未声明的标识符 error C2065: “StorageDeviceProperty”: 未声明的标识符 error C2065: “PropertyStandardQuery”: 未声明的标识符 error C2065: “IOCTL_STORAGE_QUERY_PROPERTY”: 未声明的标识符 |
按F1在msdn上查到的可能结果为
1 | #include <Ntddstor.h> |
但加了还是编译不通过,其实正确的是只要加入
1 | #include <WinIoCtl.h> |
现在很多笔记本都内置了一块固态硬盘用于跑win10系统,用磁盘管理工具可以发现这块硬盘上有20G的恢复分区休眠着,本来固态硬盘的大小就捉襟见肘,而这20G能否删除呢?
如果win10用得得心应手,不担心以后会出现系统要恢复出厂设置的问题,并且在磁盘管理工具中看到的这二十多G分区在系统分区之后,则可以删除这20G分区,并合到系统分区中。我是指不重装系统或不用专业的磁盘分区移动软件的情况下。
由于是系统运行在系统分区中,只能用winpe装U盘引导机器去干这件事。
方法如下:
1 2 | copype amd64 d:\WinPE_amd64 MakeWinPEMedia /UFD d:\WinPE_amd64 P: |
其中P:为插入的U盘盘符。
1 | MakeWinPEMedia /ISO d:\WinPE_amd64 d:\winpe.iso |
直接用adk里的MakeWinPEMedia写winpe到U盘里报标题这个错误,所以我们换一种思路,用MakeWinPEMedia生成iso,再在linux环境将iso擦写到U盘里。
先以管理员方式运行“部署和映像工具环境”
输入
1 | MakeWinPEMedia /ISO d:\euhat\WinPE_amd64 d:\winpe.iso |
成功后,将winpe.iso拷贝到ubuntu linux虚拟机或实机里面。
我们现在以vmware的ubuntu虚拟机为例,为了使虚拟机正常识别U盘,需要做两件事
启动ubuntu虚拟机,打开终端以root身份运行
1 | fdisk -l |
通过看容量找到U盘的设备路径,如我这里是/dev/sdb,则再运行
1 2 | dd if=/home/euhat/Desktop/winpe.iso of=/dev/sdb sync |
这样winpe就写入U盘了,正常从虚拟机、Windows卸载U盘后,再插到机器上用U盘引导试试!
1 | go env -w GOPROXY=https://goproxy.cn |
To debug in VSCode, write .vscode/launch.json
1 2 3 4 5 6 7 8 9 10 11 12 13 | { "version": "0.2.0", "configurations": [ { "name": "Launch", "type": "go", "request": "launch", "mode": "debug", "program": "${workspaceFolder}/main.go", "args": ["-h", "192.168.11.128", "-user", "test", "-pwd", "123123", "-p", "1-65535"] } ] } |
refer to: https://blog.csdn.net/qq_22211217/article/details/101854419
ubuntu下编译源码出现错误
1 | /usr/bin/ld: cannot find -lbz2 |
解决办法
1 | apt-get install libbz2-dev |