- 博客(50)
- 资源 (5)
- 收藏
- 关注
原创 git fatal: Authentication failed for
git fatal: Authentication failed for
2022-06-06 16:48:20
351
原创 git保存用户名和密码,不用每次输入账号
实验环境:window10,安装git,tortoiseGit 打开.gitconfig 在[credential]下增加一项: helper = store
2022-05-24 10:30:58
427
原创 ATL服务程序编写
打开VS2013,文件--->新建--->项目,选择ATL名称自己随便取,确定 下一步 完成 移除ServiceDemoPS项目 核心代码 HRESULT InitializeSecurity() throw() { // TODO : 调用 CoInitializeSecurity 并为服务提供适当的安全设置 // 建议 - PKT 级别的身份验证、 // RPC_C_IM...
2021-10-29 10:38:13
681
原创 Android Studio打包apk
打开Android的工程项目,选择Build 弹出对话框选择apk Next Key store path就是Key文件的路径,如果有Key文件就不用创建,没有就指定一个文件路径,点击Create new...就可以,剩下的随便填,Next 选择一个生成版本,Finish 就会在工程目录下生成对应的apk文件 ...
2021-08-27 16:00:40
205
转载 使用Ubuntu安装软件出现Unable to locate package错误解决办法
apt-get update apt-get upgrade
2021-04-02 23:58:41
1348
原创 CollaboraOnline在Ubuntu20.04下编译运行
1.安装Ubuntu 20.04 LTS server 64位的测试机,安装时要确保镜像地址可访问,我这里填的是:http://mirrors.aliyun.com/ubuntu/ 2.sudo apt install -y dialog 3.sudo apt install -y libpoco-dev python3-polib libcap-dev npm \ libpam-dev wget git build-essential libtool \ ...
2021-03-18 17:20:24
2023
9
原创 go指针
go指针跟c语言里的指针类似 go函数可以返回局部变量的地址。 func fun() *int{ m := 1 return &m } var p = fun() fmt.Println(fun() == p) //false var n = flag.Bool("n", false,"newline") var sep = flag.String("s", " ", "separator") func main(){ flag.Parse() ...
2020-08-07 10:18:37
171
原创 go语言名称、声明
名称: 简单的命名规则:名称的开头是一个字母(Unicode中的字符即可)或下划线,后面可以跟任意数量的字符、数字和下划线,并区分大小写。 预留的关键字: break default func interface select case defer go map struct chan else goto package switch const fallthrough if range type ...
2020-08-06 17:40:13
230
原创 最大公约数
辗转相除求最大公约数法: int gcd(int a, int b) { int r; while (b > 0) { r = a % b; a = b; b = r; } return a; }
2020-08-04 15:41:46
209
原创 ShellExecuteEx启动进程失败
ShellExecuteEx启动一个进程,有时候会失败 SHELLEXECUTEINFO中lpFile,lpDirectory参数带空格时候,需要在参数前后加上双引号
2020-07-29 10:42:12
3544
原创 stl map常用函数
//构造函数 //map() map<char, int> m1; //指定一个比较函数来创建map对象 struct KeyCompare { bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) < 0; } }; map<const char...
2020-07-14 18:22:00
370
原创 stl multiset常用函数
//构造函数 //multiset() multiset<int> ms1; //指定一个比较函数来创建multiset对象 struct KeyCompare { bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) < 0; } }; multise...
2020-07-14 17:39:48
420
原创 stl set常用函数
//构造函数 //set() set<int> s1; //指定一个比较函数来创建set对象 struct KeyCompare { bool operator()(const char* s1, const char* s2) const { return strcmp(s1, s2) < 0; } }; set<const char*, Key...
2020-07-14 16:33:16
250
原创 stl list常用函数
//构造函数 //list() list<int> l1; //explicit list(size_type _Count) list<int> l2(10); //list(size_type _Count, const _Ty& _Val) list<int> l3(3, 11); //list(const _Myt& _Right) list<int> l4(...
2020-07-14 15:24:48
352
原创 stl deque常用函数
//构造函数 //deque() deque<int> d1; //explicit deque(const _Alloc& _Al) deque<int> d2; //deque(size_type _Count, const value_type& _Val) deque<int> d3(3, 3); //deque(const _Myt& _Right) deque...
2020-07-14 14:49:20
327
原创 stl vector常用函数
//构造函数 //explicit vector(const _Alloc& _Al) vector<int> v1; //explicit vector(size_type _Count) vector<double> v2(12); //vector(size_type _Count, const value_type& _Val) vector<double> v3(10, 1.3); ...
2020-07-13 14:49:29
220
原创 sqlite3_exec返回SQLITE_MISUSE(21)
sqlite3版本3.29.0 sqlite3打开数据的路径中有中文时,sqlite3_exec会返回这个错误,将中文转utf8就好了
2020-07-10 18:00:09
2006
原创 c++11 thread
thread创建: void func(int i) { cout << "func" << endl; } thread t(func, 1); t.join(); 注意我们应该保证线程对象的生命周期在线程函数执行完时仍然存在。 get_id获取当前线程id,hardware_concurrency获取cpu核心数,sleep_for让当前的线程休眠一定时间 ...
2020-05-19 10:42:01
168
原创 c++11 std::shared_ptr std::uniq_ptr std::weak_ptr
std::shared_ptr共享的智能指针,内部使用了引用计数,当引用计数为0的时候,内存就会被释放。 智能指针的初始化: std::shared_ptr<int> p(new int(1)); std::shared_ptr<int> p2 = p; std::shared_ptr<int> ptr; ptr.reset(new int(2)); if (ptr) { cout << "...
2020-05-18 18:16:32
325
原创 placement new
c++中new和delete是一对操作符,我们经常用new申请内存,调用类的构造函数初始化对象,然后用delete调用类的析构函数,释放内存。还有一个不常用的new操作符,placement new,在我们需要时传入一个指针,此时会在该指针所指向的内存空间构造对象,该指针所指向的地址可以是堆、栈、静态存储区。 struct MyStruct { MyStruct(int a, int b) : m_a(a) , m_b(b) { } My...
2020-05-13 15:33:02
212
原创 c++11 可变参数模板类
可变参数模板类,如元组: template<class... Args> class tuple; 递归和特化的方式展开参数包 //可变参数模板类前向声明 template<typename... Args> struct Sum; //定义展开参数的可变参数模板类 template<typename First, typename... Rest> struct Sum<First, Rest...> { enum{ value = S...
2020-05-13 11:46:06
542
原创 c++11 可变参数模板
打印可变参数的个数: template<class...Args> void f(Args... args) { cout << sizeof...(args) << endl; } f(1); //1 f(1, 1.2); //2 f(1, 'c', 2); //3 递归展开参数包: template<typename T> void print(T t) ...
2020-05-13 11:05:45
226
原创 c++11 其它的转换的traits
template<bool B, class T, class F> struct conditional; 如果B为true,则conditional::type为T,否则为F。 typedef conditional<(sizeof(long long) > sizeof(long double)), long long, long double...
2020-05-11 11:52:01
135
原创 c++11 std::enable_if
c++11 std::enable_if原型如下: template<bool B, class T = void> struct enable_if; 在判断条件B为true时才有效,默认类型为void。它可以在编译期检查模板输入参数是否有效。
2020-05-11 11:50:01
446
原创 c++11 类型的转换的traits
template<class T> struct remove_const; 移除const template<class T> struct add_const; 添加const template<class T> struct remove_reference; 移除引用 template<class T> struct...
2020-05-08 11:27:19
278
原创 c++11 常用判断类型的traits
template<class T> struct is_void; T是否为void类型 template<class T> struct is_enum; T是否为枚举类型 template<class T> struct is_union; T是否为union类型 template<class T> struct is_...
2020-05-08 11:05:24
561
原创 c++11 编译期常量定义
在c++11之前,在类中定义编译期常量的方法: template<typename Type> struct Size { static const int x = 1; }; template<typename Type> struct Size { enum{ x = 1, y = 2 }; }; 在c++11中定义编译期常量,无须定义static...
2020-05-08 10:34:37
1220
原创 项目中使用libuv做本地的http服务程序
使用libuv的http模块,做一个简单的本地http服务程序,直接贴上代码: class WebRouter { public: WebRouter () { } void serve(request& req, response& res) { if (req.url().path() == "/") { re...
2020-05-07 18:43:04
2483
转载 硬编码
硬编码是将数据直接嵌入到程序或其他可执行对象的源代码中的软件开发实践,与从外部获取数据或在运行时生成数据不同。 硬编码数据通常只能通过编辑源代码和重新编译可执行文件来修改,尽管可以使用调试器或十六进制编辑器在内存或磁盘上进行更改。 硬编码的数据通常表示不变的信息,例如物理常量,版本号和静态文本元素。 另一方面,软编码数据对用户输入,HTTP服务器响应或配置文件等任意信息进行编码,并在运行时...
2020-05-07 10:10:25
522
原创 c++11 std::forward
在函数模板中,需要完全依照模板的参数类型(即保持参数的左值、右值特征),将参数传递给函数模板中调用的另外一个函数。c++11提供了这样的一个函数std::forward,不管参数是T&&这种未定的引用,还是明确的左值引用或右值引用,它会按照参数本来的类型转发。 forward会把左值传递给右值。 struct A { int value; explicit A(...
2020-05-06 14:38:46
828
原创 c++11 std::move
std::move方法将左值转换为右值,方便实现移动构造。当一个对象内部有很大的堆内存或者动态数组时,有必要写move语义的拷贝构造函数和赋值函数,避免无谓的深拷贝,以提高性能。c++中所有的容器都实现了move语义,方便性能优化。 move对于拥有内存、文件句柄等资源的成员的对象有效,对于基本类型,如int和char[10]数组等,如果使用move,任然会发生拷贝。 ...
2020-05-06 13:56:12
305
原创 c++11 右值引用
右值引用标记为T&&,在介绍右值引用前先了解什么是左值和右值。 左值是指表达式结束后依然存在的持久对象,右值是指表达式结束时不再存在的临时对象。区分左右值,看能不能对表达式取地址,能取,是左值,不能取,是右值。所有具名变量或对象都是左值,而右值不具名。 c++11中右值两个概念,一个将亡值,另一个纯右值。非引用返回的临时变量、表达式产生的临时对象、原始字面量和lambda表达式...
2020-05-06 13:43:38
200
原创 c++11 tupe
tupe元组是一个固定大小的不同类型值的集合,是泛化的std::pair,可以把它当结构体使用。 构造一个元组: tuple<const char*, int> tp = make_tuple("sendpack", 8); 或 int i = 1; auto tp = std::tie(i, "aa"); 相当于: struct tp { char* p; ...
2020-05-06 11:27:43
900
原创 c++11 lambda表达式
lambda表达式定义了一个匿名函数,并且可以捕获一定范围内的变量。 形如:[capture](params) opt->ret{body;} capture是捕获列表,params是参数列表,opt是函数选项,如mutable,ret是函数返回值类型,body是函数体 []不捕获任何变量 [&]按引用捕获作用域中的所有变量 [=]按值捕获作用域中的所有变量 [=,&am...
2020-05-06 10:29:13
186
原创 c++11 std::function
c++可调用对象的几种定义 1.是一个函数指针 2.是一个具有operator()成员函数的类对象(仿函数) 3.是一个可被转换为函数指针的类对象 4.是一个类成员变量指针 5.是一个类成员函数指针 void func() {} struct Foo { void operator () (void){ } }; struct Foo2 { using cb...
2020-04-30 18:33:03
376
原创 c++11 基于范围的for循环
基于范围的for循环auto自动推导出的类型是容器中的value_type,而不是迭代器 新的for循环,冒号后面的表达式只会执行一次 std::vector<int> arr = { 1, 2, 3, 4, 5 }; std::vector<int>& get_range() { std::cout << "get_range" <&...
2020-04-30 12:39:37
188
原创 c++11 列表初始化
c++11中,初始化列表的使用范围被大大增强了。 首先看看聚合类型定义: 1.类型是一个普通数组(如int[3]) 2.类型是一个类(class、struct、union)且 无用户自定义的构造函数 无私有或保护的非静态数据成员 无基类 无虚函数 自定义的构造函数: struct B { int x; int y; B(int, int) ...
2020-04-30 08:26:08
275
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅