- 博客(105)
- 收藏
- 关注
原创 phpstudy实现访问apache时的目录浏览功能
phpstudy是一款比较优秀的快速开发环境搭建工具,用起来很方便。但是如果你要实现访问一个目录的浏览功能的时候,你会发现修改Apache的httpd.conf文件根本就是不对的,在哪里修改呢,其实也很简单,就是phpStudy\Apache\conf下面的vhosts.conf文件打开phpStudy\Apache\conf下面的vhosts.conf文件,比如你要把网站根目录(wwwroot)下面的d目录设为可访问的浏览目录。那么只需要在里面添加以下代码即可。 <Directory "D:
2021-11-04 12:53:17
2532
原创 解决Windows下的mysql Access denied for user ‘root‘@‘localhost‘ 和 远程连接数据库问题
问题:Access denied for user ‘root’@‘localhost’ (using password:YES)。这是root帐户默认不开放远程访问权限,所以需要修改一下相关权限。解决方案:打开MySQL目录下的my.ini文件,在文件的最后添加一行“skip-grant-tables”,保存并关闭文件。(WIN7默认安装,my.ini在C:\ProgramData\MySQL\MySQL Server 5.6)重启MySQL服务(通过任务管理器,找到进程,然后跳到服务项,
2021-09-16 16:17:38
1490
原创 Docker开启ssh服务
前言因为要用vscode连接docker编辑代码,于是需要设置端口映射,ssh服务等。记录一下过程步骤开启docker容器,开启容器时候记得映射,主要参数-p xxx:22进入容器,设置root密码。命令passwd即可。安装ssh服务:apt update & apt get install openssh-server配置ssh服务:配置文件在/etc/ssh/sshd_config里。注意:是sshd_config!!!只需要更改一个地方:把PermitRootLogin.
2021-01-14 09:25:50
4198
3
原创 C++中lambda表达式
文章目录声明Lambda表达式捕获外部变量1、值捕获2、引用捕获3、隐式捕获4、混合方式修改捕获变量Lambda表达式的参数C++11的一大亮点就是引入了Lambda表达式。利用Lambda表达式,可以方便的定义和创建匿名函数。对于C++这门语言来说来说,"Lambda表达式"或"匿名函数"这些概念听起来好像很深奥,但很多高级语言在很早以前就已经提供了Lambda表达式的功能,如Python等。...
2020-03-09 01:00:24
300
原创 粘包问题
1.什么是粘包现象?TCP粘包是指发送方发送的若干数据到接收方时粘成一包,从接收缓冲区看,后一包数据的头紧接着前一包数据的尾。2.为什么会出现粘包现象?(1)发送方原因 我们知道,TCP默认会使用Nagle算法。而Nagle算法主要做两件事:1)只有上一个分组得到确认,才会发送下一个分组;2)收集多个小分组,在一个确认到来时一起发送。所以,正是Nagle算法造成了发送方有可能造成粘包现象...
2020-03-08 19:23:54
188
原创 柔性数组
柔性数组在日常的编程中,有时候需要在结构体中存放一个长度动态的字符串,一般的做法,是在结构体中定义一个指针成员,这个指针成员指向该字符串所在的动态内存空间,例如:typedef struct test { int a; double b; char *p; };p指向字符串。这种方法造成字符串与结构体是分离的,不利于操作。如果把...
2020-03-08 11:25:37
245
原创 HTTP和HTTPS协议的区别
文章目录1. HTTP协议是什么?2. HTTP原理3. HTTP特点4. HTTP报文组成5. 常见请求方法6. 响应状态码7. 为什么要用HTTPS?8. 什么是HTTPS?9. 浏览器在使用HTTPS传输数据的流程是什么?10.HTTPS的缺点11. 总结HTTPS和HTTP的区别12. 更进行一步:用wireshark抓包分析HTTPS13. 参考1. HTTP协议是什么?HTTP协议...
2020-03-07 22:38:35
12414
转载 Docker学习
Docker学习linux操作系统由内核空间和用户空间组成如上图所示:内核空间是 kernel,Linux 刚启动时会加载 bootfs 文件系统,之后 bootfs 会被卸载掉。用户空间的文件系统是 rootfs,包含我们熟悉的 /dev, /proc, /bin 等目录。对于 base 镜像来说,底层直接用 Host 的 kernel,自己只需要提供 rootfs 就行了。...
2020-03-07 17:49:23
251
原创 Docker操作备忘录
文章目录导出和导入容器慎用docker commit使用dockerfile定制镜像参考导出和导入容器导出:docker export ${容器id} > ${文件名}.tareg. docker export 7691a814370e > ubuntu.tar导入容器快照:docker import ${文件名}.tar [可选:仓库名:tag]eg. docke...
2020-02-29 01:17:11
274
原创 C++中普通函数指针与类成员函数指针的异同
文章目录函数指针(function pointer)普通函数指针成员函数指针(重点)函数指针(function pointer)与普通的指针一样,函数指针也是指针,但是不同的是函数指针指向的不是类型,而是函数地址。函数指针是通过指向函数的指针间接调用函数。相信很多人对指向一般函数的函数指针使用的比较多,而对指向类成员函数的函数指针则比较陌生。普通函数指针通常我们所说的 函数指针 指的是指向...
2020-02-24 16:49:42
2357
原创 I/O的五种模型总结
文章目录I/O的五种模型总结1. 五种 I/O 模型一次I/O的完成的步骤5种I/O 过程图解阻塞I/O非阻塞I/OI/O复用事件(信号)驱动I/O异步I/O(asynchronous I/O)2. 区分总结I/O的五种模型总结1. 五种 I/O 模型阻塞I/O非阻塞I/OI/O复用事件(信号)驱动I/O异步I/O为什么要发起系统调用?因为进程想要获取磁盘中的数据,而能和硬件...
2020-02-23 14:50:13
542
原创 https协议安全传输的过程和理解
文章目录https协议安全传输的过程和理解从故事理解https1 故事开始之前2 总是有一种被偷看的感觉3 RSA : 非对称加密4 非对称加密+对称加密5 中间人攻击6 你到底是谁?7 https额外的参考个人总结https协议安全传输的过程和理解从故事理解httpsfrom wechat 《码农翻身》1 故事开始之前在开始之前,我们来虚构两个人物, 一个是位于中国的张大胖...
2020-02-23 01:37:36
1104
1
原创 C++中mutable的用法和存在意义
1. mutable的主要用法:让类中的const函数能够修改类内值小例子:github2. mutable存在的意义有人会说,既然是在const函数中修改的,那我把函数中的const去掉不就可以了吗?还要mutable干什么?以下摘取一些知乎的回答:const意思是“这个函数不修改对象内部状态”。为了保证这一点,编译器也会主动替你检查,确保你没有修改对象成员变量——否则内部状态就变...
2020-02-17 18:13:21
3034
原创 C/C++面试题学习记录
本文主要参考:牛客网给的链接同时本人在此基础上加入个人理解和相关例子,若有不对,恳请指出。1. 语言基础1.1 值初始化问题默认初始化发生在下面的情形中:T obj; // 栈中的变量 new T; // 堆的定义一个变量但是没有给出初始值.用 new 创建一个对象, 但是没有给出初始值.(提供了括号就认为提供了初值)当父类或非静态数据成员没有出现在构造函数初始化列表...
2020-02-15 00:16:30
254
原创 C++11中有关右值引用的学习
文章目录1. 左值和右值的区别2. 左值引用和右值引用3. 引用的值类型和引用叠加3.1 值类型3.2 引用叠加4. 右值引用怎么用4.1 move语义5. 完美转发(to do)6. std::move7. 额外的例子8. 参考1. 左值和右值的区别左值和右值,最早是从 C 语言继承而来的。在 C 语言,或者继承版本的解释中,左值是可以位于赋值运算符 = 左侧的表达式(当然,左值也可以位...
2020-02-07 19:58:09
598
原创 类内值初始化问题
0. 前言昨晚写一个单向链表的代码, 目的是新建几个节点, 然后串联起来, 代码如下:class ListNode{public: ListNode(int v):val(v){} int val; ListNode *next; static void print_node_val (const ListNode* p_node){ wh...
2019-12-16 11:58:48
688
原创 反射模型公式
Chi, Zhixiang, et al. “Single image reflection removal using deep encoder-decoder network.” arXiv preprint arXiv:1802.00094 (2018).难点1: 需要从一张观察到的照片中分离出两张不知道的图片T和R难点2: 这两张图片具有相似的统计信息, 即有着相同的分布信息\...
2019-12-12 21:24:17
574
原创 Factory Method 工厂方法
1. 需要解决的问题代码1 : FileSplitter1.cppclass ISplitter{ //抽象基类public: virtual void split() = 0; virtual ~ISplitter() {}};class BinarySplitter : public ISplitter{};class TxtSplitter : publ...
2019-12-05 16:45:31
150
原创 装饰模式
1. 模式动机一般有两种方式可以实现给一个类或对象增加行为:继承机制,使用继承机制是给现有类添加功能的一种有效途径,通过继承一个现有类可以使得子类在拥有自身方法的同时还拥有父类的方法。但是这种方法是静态的,用户不能控制增加行为的方式和时机。关联机制,即将一个类的对象嵌入另一个对象中,由另一个对象来决定是否调用嵌入对象的行为以便扩展自己的行为,我们称这个嵌入的对象为装饰器(Decorator...
2019-12-05 11:19:12
189
原创 策略模式
1. 模式定义策略模式(Strategy Pattern): 定义一系列算法,将每一个算法封装起来,并让它们可以相互替换。策略模式让算法独立于使用它的客户而变化,也称为政策模式(Policy)。如下图, 用Context把算法聚合起来2. 例子类图用CashContext把算法抽象起来.代码/* * @Author: sanjayzhong * @Github: ht...
2019-12-04 16:12:18
132
原创 简单工厂模式
1. 模式定义简单工厂模式(Simple Factory Pattern): 又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工厂模式中,可以根据参数的不同返回不同类的实例。简单工厂模式专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。2. 模式例子及类图运算类为父类, 用简单工厂类来根据不同参数创建继承父类的实例代...
2019-12-04 13:28:30
105
原创 设计模式类图
1. "组件协作"模式1.1 Template method模式1.2 策略模式1.3 观察者模式2. "单一职责"模式2.1 Decorator 模式2.2 bridge 桥模式
2019-12-03 22:16:20
179
原创 C++11新特性
1. variadic template可变参数模板#include <iostream>#include <bitset>using namespace std;void print(){}template<typename T, typename... Types>void print(const T& firstArg, con...
2019-12-02 21:40:43
121
原创 C++分配内存的途径
文章目录1. C++非容器分配内存的途径2. C++容器类分配内存的途径3. 重载全局operator new和operator delete4. 重载类内operator new/ operator delete(包括[])4.1 要点4.2 测试例子1. C++非容器分配内存的途径如下图所示, 当我们使用如下语句:Foo* p = new Foo(x);的时候, 默认走的是2的路径, ...
2019-11-29 12:47:57
345
原创 C++中的内存调用
1. C++使用内存的途径通过c++标准库调用: 如std::allocator通过c++基础语法调用: 如new, new[], ::operator new()通过malloc/free调用(这里面其实是c的语法)通过操作系统提供的API进行调用2. C++内存管理的基础主要学习下面四种操作:需要注意的是::operator new()是c++函数, 因此可以重载.使用...
2019-11-28 19:50:15
897
原创 type traits浅析
1. G2.9的type traitG2.9的type trait用一个泛化类模板来定义各种类型的属性, 默认都是假的然后给每一种类型都添加了偏特化版本, 这样的缺点是每写一个类, 都要添加一个偏特化的模板类, 十分麻烦2. C++改进的type traits自从C++11之后, 添加了很多种type traits, 如下:我们可以写一个例子测试一下:#include <i...
2019-11-28 14:53:46
726
原创 C++中的元组(tuple)[待完善]
1. 元组的设计元组有一个泛化的模板, 也有两个特化模板, 如左下图:比如tuple<int, float, string>, 这时候符合的模板是第三个, 于是调用构造函数, 把int m_head = 4 记录, 接着去寻找符合的模板, 发现又是调用自己, 接着把float类型及参数保存起来, 然后继续调用自己, 把string保存起来, 这时候已经没有参数了, 于是调用clas...
2019-11-28 14:22:19
189
原创 迭代器适配器和x适配器
1. 迭代器适配器1.1 reverse_iterator 反向迭代器适配器这个迭代器适配的作用是将迭代器逆转.如rbegin()和rend()就是调用这个适配器, 如下图:本来begin()迭代器++之后是往右边走的, 然后*运算符取的是迭代器右边的元素;当使用rbegin()之后, rbegin()指向的地方和end()一样, ++是从右往左走, *运算符取的是迭代器左边的元素.怎...
2019-11-28 13:52:01
195
原创 C++中的仿函数(functors)和仿函数适配器(adapter function)
1. C++标准库中的仿函数例子比如下面的plus类, 重载了()运算符, 可以这样子用plus p; p(1, 2);, 类可以像调用函数一样的行为, 被称为仿函数.再看看多几个例子:然后我们自己写一个仿函数, 然后用sort调用试试:struct myclass{ bool operator()(int i, int j) { return i < j; }} ...
2019-11-27 17:20:27
557
原创 算法与容器联系的纽带:迭代器(Iterator)
1. 算法与容器之间的关系算法看不见容器, 对其一无所知, 因此它需要的信息都必须从iterator中获取;所以iterator必须能够回答algorithm的所有提问, 才能把容器和算法联系起来.2. iterator的种类iterator的种类一共有5种, 分别是:input_iterator_tagoutput_iterator_tagforward_iterator_ta...
2019-11-25 17:38:18
552
原创 红黑树与set, map
1. set和map的底层结构: 红黑树(rb_tree)需要注意的是, 红黑树的结构是允许我们用iterator改变元素值的, 但是不应该这么做, 因为红黑树会自动排序, 如果我们改变值, 就会破坏红黑树的结构. 后面会看到, set和map把这种自由度给限制了.下面是GNU2.9的rb_tree代码, 可以看到, 模板需要传入key, value, keyofvalue, compare...
2019-11-23 14:49:27
543
原创 stack和queue底层容器替换探究
文章目录1. stack和queue的底层容器都是deque2. 替换底层容器可以吗?2. 1 用list替换2.2 用vector替换2.2.1 stack可以用vector替换2.2.2 queue不可以2.3 用set或者map作为底层结构1. stack和queue的底层容器都是deque注意:由于stack的规则是先进后出, queue的规则是先进先出, 为了满足这种规则, 这...
2019-11-22 20:38:59
653
原创 list和iterator
文章目录1. 容器之间的复合关系(composition)2. list源码探究3. Iterator设计原则1. 容器之间的复合关系(composition)如下图:arrayvectorheappriority_queuelistslist(标准库改为forward_list了)dequestackqueue关联性容器先不说了. 注意到这是2....
2019-11-22 13:14:31
507
原创 更好但标准库却不采用的alloc内存分配
现在标准库中容器分配的默认类都是template<typename _Tp, typename _Alloc = std::allocator<_Tp> > class vector : protected _Vector_base<_Tp, _Alloc>...中的allocator类, 这样的类里面分配的内存空间每一个元素都要额外分配内存记录分...
2019-11-21 16:39:49
328
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人