- 博客(52)
- 收藏
- 关注
原创 第二章:线程同步精要
文章目录互斥量使用互斥量的原则RAIIMutexLockMutexLockGuard使用non-recursive mutex条件变量条件变量的封装ConditionBlockingQueueCountDownLatch线程安全的单例模式互斥量互斥量保护临界区,任何时候最多只有一个线程在同一个互斥量保护的临界区内活动使用互斥量的原则用RAII手法封装互斥量,即使用MutexLock...
2019-08-05 21:30:29
415
原创 牛客网shopee 2019校招部分编程题汇总
文章目录@[toc]Shopee的办公室(二)Shopee的零食柜实现字通配符*建物流中转站周六晚上就要shopee笔试啦!刷完牛客网shopee 2019校招部分编程题汇总之后内心拔凉拔凉的。https://github.com/seawood/Leetcode-JianzhiOfferShopee的办公室(二)典型的动态规划//牛客Shopee 2019校招部分编程题汇总//编...
2019-07-26 11:33:00
1513
原创 第一章:跨线程对象的生命期管理
文章目录主旨一些基础知识构造函数的线程安全析构函数的线程安全Observer模式对象池主旨用流水线,生产者消费者,任务队列等机制尽量减少跨线程对象的使用。如果一定要用跨线程的对象,那么要注意安全地构造、使用和析构跨线程的对象。对于跨线程对象的使用可以通过mutex保护临界区实现线程安全,对象的生与死不能由对象自身拥有的mutex来保护,本章的重点在于跨线程对象的安全构造和析构问题。一些...
2019-07-17 21:09:02
394
原创 UNXI线程及线程间同步方式
UNXI线程及线程间同步方式线程的资源线程基本操作线程标识线程创建线程终止线程的资源共享:代码段、堆、全局变量和静态变量(.dss和.data)、打开的文件描述符、信号的处理器、进程的当前目录、进程用户ID与用户组ID独享:栈、信号屏蔽集、errno值,寄存器(物理寄存器的副本)、线程ID、线程的调度优先级、线程的私有数据同一个进程的多个线程之间共享了很多资源,对这些资源的访问需要同...
2019-04-09 17:36:26
352
原创 UNIX进程间通信IPC
UNIX进程间通信方式总结为什么需要进程间通信UNIX标准和实现管道为什么需要进程间通信进程的通信需求包括:数据传输、共享数据、通知事件、资源共享、进程控制。 每个进程具有一个虚拟内存地址空间,除了共享内存区之外不能互相访问,因此需要通过内核或者外设进行通信。UNIX标准和实现由于接下来会讲到XSI和System V,所以先理一下各种UNIX标准和实现名称标准/实现组...
2019-04-07 11:19:56
475
原创 C++ STL之迭代器
标准模板库STL标准模板库 不是面向对象编程,而是泛型编程。标准模板库STL迭代器为什么需要迭代器迭代器的通用功能迭代器类型(概念描述)将指针用作迭代器STL预定义迭代器ostream_iteratoristream_iteratorreverse_iteratorback_insert_iteratorfront_insert_iteratorinsert...
2018-08-14 21:32:23
341
原创 C++ STL之容器
标准模板库STL标准模板库 不是面向对象编程,而是泛型编程。标准模板库STL容器创建遍历容器元素的三种方式容器的通用操作序列容器序列容器的通用操作序列容器的可选操作array固定长度的数组vector长度可变的数组deque双端队列list双向链表forward_list单向链表(C++11)stack栈queue先进先出队列priority_queu...
2018-08-14 21:10:45
281
原创 Fog Computing Model
来源:《ENORM:A Framework for Edge NOde Resource Management》1.aggregation model在无线传感网络、物联网中,在云服务器上的application需要收集传感数据进行处理,fog node对传感数据进行预处理/过滤,减少了大量的传感数据传输对网络造成的负载。2.sharing model用户设备如手机、平板电脑、笔记本电脑等自发地为...
2018-03-15 21:01:05
503
原创 Named Data Networking of Things
张丽霞老师写的NDN+IoT领域必看的两篇综述之一一、NDN的特性及应用到IoT场景的好处1.Basic Protocol: Named Data Retrieval例如:命名为"/LivingRoom/Lighting/OFF"的Interest包,可以使得livingroom中的灯关闭,回复的Data包作为对这个命令执行的确认问题:livingroom中的每一个IoT设备都要对这个Intere...
2018-02-27 21:20:54
547
原创 读《Challenges in IoT Networking via TCP/IP Architecture》笔记
张丽霞老师写的NDN+IoT领域必看的两篇综述之一小小感受:将应用层普遍需要的功能下放到网络层来做是有必要的,那要使网络层能实现这些功能,需要的就是网络层对内容的感知,NDN的数据命名其实就是使得网络层对应用层的内容感知很容易实现。网络基础知识还是差,有时间撸一遍《TCP/IP详解:卷一》吧一、网络层的问题1.small MTU:IPv6有两大限制:头部长度至少40
2018-01-31 16:23:08
501
原创 UNIX网络编程3:基本TCP套接字编程
1. 基本TCP客户/服务器程序的套接字函数2. socket函数:指定期望的通信协议类型#include int socket(int family, int type, int protocal);//若成功则返回非负描述符,若失败则返回-1socket函数成功时返回的为套接字描述符(socket descriptor,简称sockfd)socket函数的family
2017-06-25 19:45:36
506
原创 UNIX网络编程2:套接字编程简介
1. 套接字地址结构大多数套接字函数都需要一个指向套接字地址结构的指针作为参数,每个协议族都定义它自己的套接字地址结构,这些结构的名字均以sockaddr_开头。1.1 IPv4套接字地址结构(网际套接字地址结构):名称sockaddr_in,定义在头文件长度字段sin_len:可简化对长度可变套接字地址结构的操作,POSIX规范并不要求有这个成员套接字地址结构的地址族sin_
2017-06-18 17:19:29
466
原创 C++学习笔记14: 抽象基类
1. 抽象基类包含纯虚函数的类为抽象基类,不能创建抽象基类的对象纯虚函数:函数原型结尾加=0,可以不提供纯虚函数的定义,也可以提供纯虚函数的定义。从纯虚函数派生出来的类可以根据派生类的具体特征,使用常规虚函数来实现该接口。class baseQuene{public: virtual double Area()const = 0;};
2017-06-15 11:07:13
429
原创 C++学习笔记12:类成员初始化等问题
类中嵌套结构或类声明,类的成员初始化列表,类成员的类内初始化,避免复制构造函数和执行深度复制的 赋值运算符被调用的方法
2017-06-13 11:14:05
390
原创 C++学习笔记11:定位new运算符
使用定位new运算符应注意:注意内存覆盖delete不能与定位new运算符配合使用,因此要显示地为定位new运算符创建的对象调用析构函数删除顺序:后创建的对象先删除,所有用定位new运算符创建的对象都被删除后再释放用于存储这些对象的缓冲区#include #include #include using namespace std;const int BUF = 512;
2017-06-11 14:45:55
1139
原创 C++学习笔记10:返回对象
当成员函数或者独立的函数返回对象时可以有三种情况:返回指向对象的引用、指向对象的const引用、const对象。1. 返回指向const对象的引用//version 1Vector Max(const Vector & v1, const Vector & v2) { if (v1.magval() > v2.magval()) return v1; else return
2017-06-11 10:05:01
589
原创 PHP学习笔记14:会话控制
1. cookie简介cookie是存储在客户浏览器中的数据,通过cookie来跟踪与存储用户数据一般cookie通过HTTP headers从服务端返回到客户端cookie存在于HTTP的标头之中,所以必须在其他信息输出以前进行设置PHP通过setcookie函数设置cookie,任何从浏览器发回的cookie都会自动存储在$_COOKIE全局变量中,可以通过$_COOKIE['ke
2017-06-08 11:34:59
387
原创 PHP笔记13:正则表达式
1. 正则表达式正则表达式是对字符串进行操作的一种逻辑公式,就是用一些特定的字符组合成一个规则字符串,称之为正则匹配模式。使用PCRE库函数进行正则匹配2. 正则表达式的基本语法由分隔符和元字符组成3. 分隔符分隔符可以是非数字、非反斜线、非空格的任意字符,经常使用的分隔符是正斜线(/),hash符号(#)、取反符号(~)/foo bar/#^[^0-9
2017-06-07 11:35:15
350
原创 PHP学习笔记12:字符串操作
1. 去除字符串首尾的空格trim()去除字符串两端的空格rtrim()去除字符串右边的空格ltrim()去除字符串左边的空格2. 获取字符串的长度strlen()获取英文字符串的长度mb_strlen(字符串变量,编码方式)获取中文字符串的长度3. 截取字符串substr(字符串变量,开始截取的位置,截取个数)英文字符串的截取mb_str(字符串变量,
2017-06-05 15:02:40
373
原创 PHP学习笔记11:类和对象
1. 定义一个类class Car{ var $name ='汽车'; function getName(){ return $this->name; }}var代表属性,function代表方法2. 创建一个类的实例$car = new Car();//也可以采用变量来创建$className='Car';$car=new $class
2017-06-03 23:24:12
367
原创 PHP学习笔记10:函数
1. PHP自定义函数function f1(){ echo "hello";}2. 带返回和参数的自定义函数可以返回数组和对象的任意类型function f2($a,$b){ return $a+$b;}3. 可变函数通过变量的值来调用函数,因为变量的值是可变的,所以可以通过改变一个变量的值来实现调用不同的函数。可变函数的调用方法为变量名加上括号。func
2017-05-31 09:57:44
405
原创 PHP学习笔记9:数组
1. 数组的分类索引数组和关联数组2. 索引数组索引数组的键是从0开始递增的整数索引数组初始化$fruit=array("苹果","香蕉","菠萝");print_r($fruit); //print_r输出数组的键和值索引数组赋值$arr[0]="苹果"; //方法1$fruit=array(); //方法2$fruit=array('0'=>'苹
2017-05-31 09:55:23
396
原创 PHP学习笔记8:Zend Studio
1. Zend Studio安装注意不要把安装包放在有中文的路径下,不然安装的时候会出错工作路径要设置在apache工作路径下2. Zendio Stduio快捷键可以在widows->preferences->general->keys下进行设置复制当前行ctrl+alt+↓删除当前行ctrl+d上下行互换atl+↓/↑行注释ctrl+/段注释ctrl+shift+/
2017-05-30 16:31:41
567
原创 PHP学习笔记7:语言结构语句
1. 顺序结构2. if ...else...3. if ...else if ...4. if ...else if ...else ...5. switch ...case...6. while7. do ... while ...8. for9. foreach用于遍历数组9.1 只取值,不取下标<?php$students=array('2010'=
2017-05-30 09:16:48
481
原创 PHP学习笔记6:运算符
1. 运算符的分类算术运算符、赋值运算符、比较运算符、三元运算符、逻辑运算符、字符串连接运算符、错误控制运算符2. 算术运算符+、-、*、/、%3. 赋值运算符=、&$b = &$a //&相当于C++的引用4. 比较运算符==、===(值相等类型也相等)、!=、、=5. 三元运算符?:6. 逻辑运算符and、or、xor、!、&&、||7. 字符串连接
2017-05-30 08:51:35
579
原创 C++学习笔记9:字符串和string类简介
1. C风格字符串以空字符‘\0’结尾的char数组char cat[4] = { 'a','b','c','\0' };2. 字符串常量(字符串字面值)用双引号括起的字符串,隐式地包含结尾的空字符。应确保字符串的长度足够存储空字符在内的所有字符,声明时可以不指定长度,而是让编译器计算长度。char birds[10] = "abcdef";char egg[] = "bub
2017-05-27 20:33:52
383
原创 C++学习笔记8:类和动态内存分配
1.动态内存和类1.1 静态数据成员在类声明中声明,在包含类方法的文件中初始化。在初始化时使用作用域运算符并指出类型,但是不用const关键字。如果静态成员是整形或者枚举类型,则可以在类声明中初始化。//StringBad.hpp#include #ifndef STRINGBAD_H_#define STRINGBAD_H_class StringBad {private:
2017-05-27 09:13:30
353
原创 归并排序
归并排序:将两个已经排好序的子序列合并成一个有序的序列。首先需要将整个序列进行分解,直到每个序列只有一个数(一个数必然有序),然后再合并。需要应用递归。时间复杂度:平均O(n*logn),最差O(n*logn)稳定性:稳定代码实现://归并排序void merge(int *a, int start, int mid, int end) { int *temp =new i
2017-05-25 10:44:04
287
原创 交换排序
交换排序:根据两个记录值的比较结果来交换两个记录值在序列中的位置,常见的交换排序有冒泡排序(Bubble Sort),鸡尾酒排序(Cocktail Sort),奇偶排序(OddEven Sort),地精排序(Gnome Sort),快速排序(Quick Sort),臭皮匠排序(Stooge Sort),梳排序(Comb Sort),Bogo排序(Bogo sort)。一. 冒泡排序
2017-05-24 17:31:48
537
原创 选择排序
选择排序的基本思想:每一趟从待排序的序列中找出最小(大)的值,放在已排好序的序列的末尾。分为直接选择排序(Selection Sort),堆排序(Heap Sort),平滑排序(Smooth Sort),笛卡尔树排序(Cartesian Sort),锦标赛排序(Tournament Sort),循环排序(Cycle)。1. 直接选择排序(Selection Sort)时间复杂度
2017-05-19 11:21:48
390
原创 插入排序
插入排序的思想是每次把一个数插入到一个有序的序列中,使得插入后仍然是有序序列 。插入排序有直接插入排序(Insertion Sort),希尔排序(Shell Sort),二叉查找树排序(Tree Sort),图书馆排序(Library Sort),patience Sort。1. 直接插入排序(Insertion Sort)时间复杂度O(n^2)稳定性:稳定void Inserti
2017-05-18 17:31:23
261
原创 C++学习笔记7 : 变量命名规则及类型
1.变量1.1 C++变量类型基本类型:整形和浮点型复合类型:数组、字符串、指针和结构1.2 C++变量命名规则变量名只能由字母、数字和下滑线组成,且不能以数字开头,区分大小写不能将C++关键字用作名称以两个下滑线开头(如__my)、以下滑线和大写字母开头(如_My)的名称被保留给实现(编译器及使用的资源)使用以一个下滑线开头的名称(如_my)被保留给实现,用作
2017-05-18 09:26:55
656
原创 C++学习笔记6:按位运算符
按位运算符对整数值得位进行操作。1. 移位运算符1.1 左移运算符(腾出的位置用0填充,超出的位被丢弃。左移n位相当于乘以2的n次方int x = 20;int y = x << 2;x 1.2 右移运算符(>>)对于无符号整数,腾出的位置用0填充,超出边界的位被删除。对于有符号整数,腾出的位置可能用0填充,也可能用原来最左边的位填充,这
2017-05-17 15:48:45
383
原创 c++学习笔记5:运算符重载、友元和类的类型转换
1. 运算符重载1.1 运算符函数的声明class Time{public: Time operator+(const Time & t)const;};Time Time::operator+(const Time & t)const{ ...}1.2 运算符函数的调用常规调用方法运算符表示法:运算符左侧的对象是调用对象,运
2017-05-16 18:17:48
415
原创 C++学习笔记4:对象和类
最近有点烦有点烦,还是学习使我快乐,嗯,学习使我快乐~1. 过程性编程和面向对象编程过程性编程:首先考虑要遵循的步骤,然后考虑如何表示这些数据。面向对象编程:首先考虑数据(如何表示数据和如何使用数据),然后使用新的设计方案创建出程序。2. 抽象和类2.1 类规范类声明:以数据成员的方式描述数据部分,以成员函数(方法)的方式描述公有接口。放在头文件中类方法定义:描述如
2017-05-13 10:30:54
320
原创 PHP学习笔记5:常量
一. 常量1.分类系统常量和自定义常量2. 定义常量define函数,第一个参数为常量名称,第二个参数为常量值,第三个参数为对大小写是否敏感(默认为false,表示对大小写敏感)define("PI",3.14);define("Greet","Welcome home",true);3. 几个系统常量_FILE_:php程序文件名_LINE_:php程序文件当前所在行数
2017-05-13 09:45:38
273
原创 PHP学习笔记4:变量
1.变量名的命名规则变量名可以由字母、数字、下滑线、汉字组成,区分大小写,只能有字母或者下滑线开头2.常用函数memory_get_usage()获取当前PHP消耗的内存var_dump($sum)输出变量sum的数据类型3.PHP标量类型布尔类型:TUE(true)和FALSE(false)整形:可以是十进制、八进制(0开头)、十六进制(0x开头)、负数浮
2017-05-12 10:42:19
295
原创 PHP学习笔记3:WAMPServer自拟定端口号
默认端口号为80,如果80端口被其它程序占用,则需要修改端口号。只要修改httpd.conf文件的两个地方就可以啦~下面两张图绿色的地方原来是80,改为你想要的端口号(这里是8080)。测试是否修改成功:
2017-05-12 10:27:50
798
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人