- 博客(35)
- 资源 (63)
- 问答 (1)
- 收藏
- 关注
原创 WebRTC -- IP地址
§ Unresolved IPUnresolved IP直译为“未能解答的IP”,也就是不能识别的IP。必须既不是IPv4地址也不是IPv6地址,才叫Unresolved IP。 IPv4地址格式:xxx.xxx.xxx.xxx (0 <= xxx <= 255) IPv6地址格式:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx:xxxx (xxxx代表4位十六进制数字)具
2017-11-29 16:26:46 88588
原创 WebRTC-命令行参数解析
一、 功能介绍webrtc中命令行参数解析功能由rtc_base/flags.h中的Flag类和FlagList类提供。使用起来比较简单,支持参数中含有空格等。可以看成google开源的gflags的轻量版. 支持的命令行语法为:The following syntax for flags is accepted (both '-' and '--' are ok): --fla
2017-11-28 11:44:05 87458
转载 根据进程句柄获得可执行文件路径的几种方法
转载自: http://blog.csdn.net/hellokandy/article/details/52160077通过进程句柄,获得可执行文件的路径,主要有以下几种方法:第一种方法:也是最常用的方法,是通过GetModuleFileNameEx函数获得可执行文件的模块路径,这个函数从Windows NT 4.0开始到现在的Vista系统都能使用,向后兼容性比较好。
2017-11-28 10:15:16 130436
原创 短信验证码URL收集
https://my.zto.com/account/register http://ec.yto.net.cn/register.htm http://q1.sto.cn/reg/registerform https://ssl.zc.qq.com/chs/index.html https://mail.sina.com.cn/register/regmail.php http://me
2017-11-27 21:46:13 12160
原创 进制转换
一、 十进制整数 转 二进制字符串1.1 位运算方式实现代码如下:template<typename T>std::string Dec2Bin(T val, bool bHighBitFillZero){ std::string strRet; bool bFirstZero = true; int iSize = sizeof(T) ...
2017-11-27 21:36:33 86589
原创 MySQL数据库防SQL注入原理
每个语言都有自己的数据库框架或库,无论是哪种语言,哪种库,它们在数据库防注入方面使用的技术原理无外乎下面介绍的几种方法。一、特殊字符转义处理Mysql特殊字符指在mysql中具有特殊含义的字符,除了%和_是mysql特有的外,其他的和我们在C语句中接触的特殊字符一样。 特殊字符 转义字符 特殊意义 \0 \\0 字符串结束符NUL ' \' 单引号 " \
2017-11-27 21:34:25 86814
原创 拨开字符编码的迷雾--MySQL数据库字符编码
一. MySQL字符集和校对规则MySQL的字符集是用来定义MySQL存储字符串的方式,校对规则(有的软件叫排序规则)则是用来定义了比较字符串的方式。字符集和校对规则是一对多的关系。每种字符集都有一个默认校对规则。查看数据库支持的字符集: # 方法1:SHOW CHARACTER SET;# 方法2:USE information_schema;SELECT * FROM CHARACTER
2017-11-27 21:33:02 86366
原创 拨开字符编码的迷雾--编译器如何处理文件编码
一. Visual Studio字符集使用Visual Studio创建的C++工程可以在工程属性配置属性-->常规中配置字符集:使用Unicode字符集(默认)、使用多字节字符集。 如图: 但这个设置项不会对编译器处理字符编码产生直接的影响(注意这里的“直接”二字,第3节会说到),只会在工程属性配置属性-->C/C++-->预处理器加入相应的宏:使用Unicode字符集 --
2017-11-27 21:29:35 86716
原创 拨开字符编码的迷雾--字符编码转换
1. Windows API介绍本文介绍使用Windows API进行字符编码的转换,涉及WideCharToMultiByte和MultiByteToWideChar2个API, API接口名中的MultiByte对应着多字节编码,如ASCII、UTF-8等都是多字节编码,而WideChar字面意思是宽字符,在windows内部宽字符特指UTF-16编码。 原型如下:int WideCharTo
2017-11-27 21:22:09 86202
原创 拨开字符编码的迷雾--字符编码概述
为什么这样的{"data":"颸颸"}JSON会解析失败? 为什么界面上韩文显示乱码? ASCII和ANSI有什么区别? 相信不少人在字符编码上面摔过跟头,这篇文章针对开发中需要了解的字符编码知识进行了简要的讲解,希望能够对大家有所帮助。1. ASCII及其扩展1.1 什么是ASCII字符集字符集就是一系列用于显示的字符的集合。ASCII字符集由美国国...
2017-11-27 20:46:23 86461 4
转载 WebRTC下的网络连接: STUN, TURN, ICE, TCP
实现一个WebRTC demo是比较容易的, 但如果要做一个webrtc产品, 则需要在任何网络环境下都能够建立网络连接.Background: NAT多数联网设备都位于局域网中, 并位于防火墙后面, 设备本身只有一个内网的私有IP, 在与外部通信时, 会经过1个或多个NAT路由器, 最终得到一个最外端的一个外部IP, 然后与远端目标机器通讯. 这一网络结构对于web应用, c/s型应用等...
2017-11-26 22:00:36 6985 2
原创 windows事件跨session访问
事件名前面加“Global\”的方法,只能实现跨session检测事件是否存在,但执行打开事件OpenEvent等操作会返回Access Denied的错误。解决方法是创建一个没有任何权限的事件(A NULL DACL):PSECURITY_DESCRIPTOR psd = (PSECURITY_DESCRIPTOR) LocalAlloc(LPTR, SECURITY_DESCRIP...
2017-11-24 22:37:38 85872
原创 VIM常用快捷键
移动0 移动到该行行首。$ 移动到该行行尾。G 移动到当前文件最后一行。nG 移动到当前文件第n行。t, 移动到下一个,号前的第一个字符。f, 移动到下一个,号处。1G或gg 移动到当前文件第一行。ctrl+f 屏幕向下移动一页。ctrl+b 屏幕向上移动一页。选择v
2017-11-24 22:11:09 85539
原创 Mysql--一条SQL语句多条插入、更新、删除
插入INSERT INTO users(name, age) VALUES('姚明', 25), ('比尔.盖茨', 50), ('火星人', 600);更新UPDATE member SET descipt = "默认" WHERE usertypeid IN (1,2,3,4);UPDATE member SET descipt = CASE id WHEN 1 THEN '默认' WHE
2017-11-24 22:04:58 87309
原创 MySQL--在批处理中执行SQL
"%~dp0\mysql-5.6.19-win32\bin\mysql.exe" -h127.0.0.1 -P31060 -uroot --execute="grant all on *.* to 'root'@'%' identified by '123456';update mysql.user SET password=PASSWORD('123456') WHERE user='root'
2017-11-24 21:34:17 85778
原创 MySQL--字符串长度
常用函数有char_length、length、bit_length,它们针对不同的字符编码处理方式不一样。 总的来说: char_length字符显示的个数; length 字符在当前编码下存储,所占的字节数。 bit_length 字符在当前编码下存储,所占的bit,也就是length*8GBK 编码select char_length('中国'); -- 2select lengt
2017-11-24 21:30:21 104507
原创 C++11 智能指针
C++11标准库中提供的智能指针主要有:std::auto_ptr, std::unique_ptr, std::shared_ptr。 std::auto_ptr在C++11中已经标记为弃用,而在C++17中就完全移除了,不建议使用std::auto_ptr。头文件:#include <memory>using namespace std;现有如下测试类:...
2017-11-24 15:14:03 86885
原创 WebRTC-线程模型(1)
在介绍WebRTC的线程模型之前,先介绍webrtc线程模型中用到的几个简单、常用的模块或函数。webrtc是一个代码宝库,且它本身跨平台(windows,linux,ios,android),不管是哪个平台上面开发,都可以从中学习到很多有用的东西。一、 设置线程名platform_thread.ccvoid SetCurrentThreadName(const char* name) {#if
2017-11-23 14:10:38 86408
原创 使用ssh-keygen生成公私钥
常用法:ssh-keygen -t rsa参数:-t 密钥类型 可以使用:"rsa1"(SSH-1) "rsa"(SSH-2) "dsa"(SSH-2),如果没有指定则默认生成用于SSH-2的RSA密钥。-C comment 提供一个注释。 -f filename 指定密钥文件名。...
2017-11-17 21:27:40 85630
原创 WebRTC -- P2P及NAT穿越技术介绍
一、 P2P(peer to peer)P2P是一个“点对点传输技术”,也就是2台计算机之间不需要第三台机器作为服务端就能实现数据的传输。每台计算机即是客户端又是服务端。如果每台计算机都有自己的独立的公网IP,那么P2P技术就比较好实现了,但是现实中由于NAT的存在,使得P2P技术最大的难点就在于穿越NAT的限制,俗称“打洞”。二、 NAT(Network Address Transl...
2017-11-15 17:26:31 86254
原创 C++ 编译时断言检查
一、 static_assertC++自C++11起支持static_assert编译时断言,static_assert ( bool_constexpr , message ) (C++11 起)static_assert ( bool_constexpr ) (C++17 起)若 bool_constexpr 返回 true ,则此声明没有效果。否则发布一个编译
2017-11-13 16:19:18 85378
原创 C++11 右值引用&&
一、 新特性的目的右值引用 (Rvalue Referene) 是 C++ 新标准 (C++11, 11 代表 2011 年 ) 中引入的新特性 , 它实现了转移语义 (Move Sementics) 和精确传递 (Perfect Forwarding)。它的主要目的有两个方面: 1. 消除两个对象交互时不必要的对象拷贝,节省运算存储资源,提高效率。 2. 能够更简洁明确地定义泛型函数。
2017-11-13 14:43:33 95220 4
原创 C/C++ enum class枚举类型
声明枚举类型的方式有2种:1. 常见的enum方式enum A { a0 = 0, a1 = 1};enum B { b0 = 0, b1 = 1};2. enum class 方式enum class CC { cc0 = 0, cc1 = 1};enum和enum class的区别如下:1. 使用方式enum声明的枚举可以直接使用枚举
2017-11-10 15:40:33 85692
原创 __declspec(noreturn)使用
__declspec(noreturn)用于告知编译器该函数没有返回值。使用__declspec(noreturn)声明的函数中,不允许出现return。否则会有警告:warning C4645: 用 "noreturn" 声明的函数具有 return 语句
2017-11-10 15:21:33 947
原创 MySQL--日期和时间
一、 时间、日期获取1.1、获取当前本地的日期和时间SELECT NOW(), CURRENT_TIMESTAMP(), LOCALTIME(), LOCALTIMESTAMP(), SYSDATE();上面5个函数都可以获取当前本地时间,但SYSDATE有所不同。SELECT NOW(), SLEEP(3), NOW();执行结果:NOW()
2017-11-09 18:34:51 84049
原创 MSVC编译器Warnings手册
Warning NumberDescriptionC6001warning C6001: using uninitialized memory C6011warning C6011: dereferencing NULL pointer C6029warning C6029: possibl
2017-11-09 10:59:40 1548
原创 C++虚函数的实现原理
一. 虚函数介绍C++中的虚函数主要是用来实现多态(面向对象的三大特性之一)的。 下面是一个实现多态的错误例子:// 基类//class Base {public: Base() { printf("Call Base::Base()\n"); } ~Base() { } void Name() { ...
2017-11-08 22:49:34 84059
原创 Windows环境下“路径”处理
头文件#include 引用库文件#pragma comment(lib, "shlwapi.lib")路径截断与合并函数PathRemoveArgs 去除路径后面的参数PathRemoveBackslash 去除路径最后的反斜杠“\”PathAddBackslash
2017-11-08 22:27:35 84139
原创 ZeroMQ入门示例
一、一问一答模式服务端代码:// server.cpp#include "./include/zmq.h"#pragma comment(lib, "libzmq.lib")int _tmain(int argc, _TCHAR* argv[]){ void *context = zmq_ctx_new(); void *responder = zmq_socket(context,...
2017-11-07 22:45:40 129487
原创 正则表达式简明手册
一、 元字符字符说明^一行开始$一行结束\b单词的开始或结束.除换行符外的任意字符\w单词字符(包括字母、数字、下划线和汉字)\W任意的非单词字符(包括字母、数字、下划线和汉字)\s任意的空白字符,如空格、制表符、换行符、中文全角空格等\S任意的非空白字符\d任意的数字\D任意的非数字字符二、 字符集合字符集合说明[aeiou]aeiou字符集中的任何字符[^aeiou]除aeiou字符集之外的字...
2017-11-03 16:23:44 83525
原创 MySQL---索引
一、索引介绍 索引是帮助MySQL高效获取数据的数据结构。我们知道最基本的数据查找方式是顺序查找,这种算法的复杂度为O(n),性能很低。性能比较高的数据查找算法有:二分查找、二叉树查找。但二分查找算法要求被查找的数据是有序的,数据库中的数据不可能满足这种要求。二叉树查找只能应用于二叉树这种特定数据结构上面。MySQL数据库为了满足这些高级的查找算法,在保存数据之外,数据库还维护着满足这些高级算法
2017-11-02 16:31:22 83674
原创 C++生成Dump文件
C++开发的应用程序避免不了各种崩溃,空指针,野指针,栈溢出等等。为了方便定位问题,我们一般在程序崩溃的时候自动生成一个dump文件,然后通过dump文件结合pdb来定位问题。c++生成dump文件的代码网上有很多,但大多使用起来不那么方便;通过本文介绍的方法只需要使用2个宏就可以实现自动生成dump的功能。代码包含中将EasyDump.h和EasyDump.cpp文件中:
2017-11-01 15:01:53 85925
原创 如何生成转储(dmp)文件--工具篇
转储文件也就是我们常说的dump文件。可以把转储文件看成软件的某个时刻的一个快照。转储文件一般都是在软件出现问题时手动生成或者程序自动生成。下面我们介绍几种借助第三方工具生成转储文件的方法。一、 任务管理器任务管理器可以说是最易获取的系统工具,同时它具有生成转储文件的功能。但要注意的是在64位操作系统上面,默认启动的是64位的任务管理器。使用任务管理器生成转储文件需要遵循一个原则:
2017-11-01 11:53:10 89439
原创 C++ Windows平台字符串编码转换
一、Windows API本文介绍使用Windows API进行字符编码的转换,涉及WideCharToMultiByte和MultiByteToWideChar2个API,API接口名中的MultiByte对应着多字节编码,如ASCII、UTF-8等都是多字节编码,而WideChar字面意思是宽字符,在windows内部宽字符特指UTF-16编码。 原型如下:int WideCh
2017-11-01 00:38:23 84106
原创 C++软件开发中“时间”相关操作全攻略
1. 时间概念在日常生活中我们遇到的和时间相关的概念有北京时间、时差、12小时制、24小时制等,在软件开发中我们也经常遇到和时间相关的概念,软件虽说是一个虚拟的事物,但它仍然是来源于生活,不会脱离生活。我们在开发中遇到的时间概念大多可以对应上日常生活中的时间概念,但也有一些是软件作者(如微软等)人为制造的一些概念,如系统时间、文件时间等。格林威治时间(UTC Time)本初子午线
2017-11-01 00:04:42 83331
基于NSIS Modern界面制作的网易云音乐安装包
2018-01-18
基于NSIS传统界面制作的网易云音乐安装包
2018-01-18
NSIS用户手册 中文版
2018-01-17
automate-git.zip
2019-07-13
ffmpeg-20180427-4833050-win64-static
2018-04-28
区块链技术解决方案和安全性方面的问题
2017-12-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人