- 博客(23)
- 收藏
- 关注
原创 C++大整数类
实现了 + - * ,除法还没有完成。 利用string类模拟手工加减乘。头文件#pragma once#include <string>#include <iostream>using namespace std;typedef long long INT64;class BigData {public: friend ostream&a...
2018-06-28 10:36:55 2100
原创 网络基础——TCP/IP五层模型
网络基础——TCP/IP五层模型局域网和广域网局域网LAN是通过交换机和路由器连在一起的一些主机,广域网的概念比局域网规模大一些,但是没有明显的界限区分两者。局域网通信原理在数据链路层有两种使用信道的方式,点对点和广播。点对点的作用是用户在接入互联网之前必须先访问某个ISP,其中使用的就是点对点通信方式。局域网使用广播方式,因为局域网具有地域范围和主机数有限的特点,所以局域网具...
2018-06-27 15:52:50 1057
转载 海量数据处理(转)
海量数据处理(转)位图和布隆过滤器实现:https://blog.csdn.net/mxrrr_sunshine/article/details/80451189常见问题:https://blog.csdn.net/zhangye3017/article/details/79431449...
2018-06-27 15:02:26 877
原创 Linux作业控制(前后台)和守护进程
Linux进程间关系和守护进程进程间的关系有哪些之前学过父进程通过fork创建子进程,其实还有一种进程间关系是进程组。进程组可以接受同一终端的各种信号,比如ctr+c就是给一个进程组发的中断信号而不是个单个进程,所以说进程组通常和一个作业相关联。组长进程可以创建进程组,但是组内只要有进程就一直存在。例如在shell界面下用两个管道执行三个命令,就要在shell进程下fork...
2018-06-27 10:06:21 1063
原创 哈希搜索(多次探测,哈希桶)
哈希搜索(闭散列,开散列) 为什么提出哈希?顺序搜索和二叉树搜索中,元素存储位置和元素关键码之间没有联系。因此在查找一个数据时,必须经过关键码的多次比较,搜索效率取决于比较次数。而一个理想的搜索是不经过比较,直接拿出数据,建立关键码和存储位置的关系。 哈希冲突的产生与解决不同的关键码通过相同的哈希函数计算出相同的地址,产生冲突。因此在设计哈希函数时,要尽量避免冲突,...
2018-06-26 15:22:45 1886
原创 C++获取函数运行时间
第一种方法: GetTickCount()获取系统启动后的时间间隔,精确度有限,跟CPU有关。 第二种方法: QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以us为单位计时.但是它确切的精确计时的最小单位是与系统有关的,所以,必须要查询系统以得到QueryPerformanceCounter()返回的嘀哒声的频率. QueryP...
2018-06-25 15:10:45 1791
原创 C++日期类
学会调用写好的函数完成其他更复杂的函数。#include <iostream>using namespace std;class Date{public: friend ostream& operator<<(ostream&, Date&); Date(int year = 2018, int month = 6, ...
2018-06-24 20:56:09 765
原创 C++String类与深浅拷贝
C++String类与深浅拷贝浅拷贝编译器默认合成的拷贝构造和赋值运算符是浅拷贝,意思是从编译器的角度看到什么就原封不动拷贝到当前对象。 导致的问题:多个对象使用同一块空间,释放的空间被其他对象访问会导致程序崩溃。以下实现深拷贝版本,将对象动态申请的资源也拷贝到当前对象。class String {public: String(const char* str =...
2018-06-24 16:38:17 691
原创 线程重要概念
线程重要概念线程重要概念如何谈进程?线程是什么?为什么需要线程?进程ID和线程ID线程的互斥和同步条件变量读写锁如何谈进程?进程是代码的一次动态执行,系统中肯定不止一个进程,所以OS为了管理起这些进程创建了PCB这种结构用来描述关于进程的所有信息。在系统内核用链表把PCB组织起来,进行调度。进程本质可以说是代码+数据,OS为每个进程分配一...
2018-06-21 22:42:06 533
原创 生产者消费者模型
生产者消费者模型生产者消费者模型互斥同步篇第一个版本,不加互斥限制加入互斥条件加入线程同步信号量篇互斥同步篇三种关系两个角色一个规则。生产者和消费者对临界区的访问是互斥的,各自也是互斥的。例如链表生产节点的例子,生产者往链表里push,消费者pop,这时他们共同操纵的链表就是临界资源,不能让生产者消费者同时进入临界区,需要加以互斥条件。又假如生产者慢,...
2018-06-20 23:06:37 657
原创 c++动态内存管理深入理解
C语言三种开辟堆内存方式malloc底层实现,本质C++的动态内存管理malloc和free, new和delete深入探究new和delete所做的工作定位newC语言三种开辟堆内存方式c语言用3个函数进行动态内存分配。malloc申请一段连续的堆空间并返回首地址,不能初始化内存空间。calloc会将分配到的空间每一位初始化为0,因此效率稍低。...
2018-06-20 20:40:18 763
原创 c语言小游戏——贪吃蛇和俄罗斯方块
c语言小游戏——贪吃蛇和俄罗斯方块贪吃蛇效果: 运行环境:win10,vs2017 代码地址:https://github.com/zzaiyuyu/Snake/blob/master/main.c首先思考一下设计这个游戏的流程model部分实体有游戏,蛇,坐标,食物,墙,所以我们的模型先抽象出来。蛇用一个链表表示,链表的每个节点都是x,y坐标,蛇还要保存当前移...
2018-06-16 14:07:08 3302
原创 c++类默认的成员函数
空类的大小构造函数默认构造函数拷贝构造函数默认拷贝构造函数析构函数关于构造和析构的顺序运算符重载友元函数的出现static修饰类成员C++中的const内联函数空类的大小class Person { }; sizeof(Person) //1空类的大小为1.因为实例化类后为每个对象分配内存空间,若要是0空间,对象会被分配到...
2018-06-16 10:23:17 924
原创 自行实现linux命令之——CP命令
简单实现cp命令 源和目的操作数都只能是文件名。#include <stdio.h>#include <string.h>#include <stdlib.h>#include <sys/types.h>#include <fcntl.h>#include <unistd.h>#include <sys...
2018-06-14 18:40:54 1509
原创 Linux——竟态条件和SIGCHLD
可重入函数一个函数被多个执行流调用,有可能在第一次调用还没返回时就再次进入函数,称为重入。 例如上面的insert函数,在执行第一步时收到信号产生硬件中断,转去信号处理函数,而信号处理函恰好调用了insert函数,由于两个函数操纵了同一个链表而产生意外的结果,所以这个函数是不可重入函数。如果这个函数只是操纵自己的局部变量就是可重入的。另外调用IO库,或者使用malloc的函数也是不可...
2018-06-11 17:29:05 861
原创 Linux进程信号探究
概述信号产生信号的处理方式信号的状态通过信号集改变信号的状态信号的捕捉过程概述在程序正常执行过程中可能出现各种情况,系统会产生硬件中断去执行响应动作。在进程的PCB中通过bitmap存放信号的状态,操作系统若想给进程发信号,只需要修改PCB的bitmap。进程收到信号并不是立即处理的,而是等cpu调度,切换内核态检查处理信号。信号产生信号相对与...
2018-06-10 17:31:47 740
原创 C++类和对象的概念
C++类和对象的概念面向对象程序设计 概念:(Object Oriented Programming,缩写:OOP)是一种程序开发的方法。 对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性在c语言中使用struct可以对数据进行抽象封装,在c++中用class封装程序和数据,其访问权限体现了封装性。封装:隐藏对象的属性...
2018-06-10 17:31:13 4898 1
原创 c++基础,引用重载命名空间
命名空间输入输出函数重载参数缺省指针和引用引用传参引用做返回值总结命名空间命名空间解决全局命名冲突的问题 标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在 采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符: using namespace std; 就可以直接使用标准C++库中的所有成员。 或者 ...
2018-06-05 22:21:53 765
原创 信号量实现共享内存的同步问题
任务: 其中父进程计算结果1+2需要调用一个动态库,动态库提供1+2的方法。 文件的makefile:.PHONY:cleadn allall: rd main##链接动态库main: main.o libadd.so gcc -o $@ $&lt; -L. -ladd#生成动态库libadd.so: add.o gcc -fPIC -shared -o li...
2018-06-03 18:08:29 2128
原创 查看core dump段错误原因
什么是core dump 当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做core dump-核心转储。进程异常终止时因为有BUG,比如非法访问内存导致段错误。事后可以用调试器检查core文件以查清错误原因,这叫做事后调试。 一个进程允许产生多大的core文件,取决于进程的Resource Limit。默认是不允许产生core文...
2018-06-03 17:31:33 9501 3
原创 面向对象的理解
1、对于OO(面向对象)的含义,并非每一个人的看法都是同样的。 即使在如今。假设问十个人,可能会得到15种不同的答案。差点儿全部的人都会允许继承和多态是OO中的概念。大多数人还会再加上封装。 另一些人会加上异常处理。而可能会没有人将模板也包括进去。问题的关键在于:对于某个特性是否是属于OO的,往往都存在着不同的观点。而每一种观点都有着热情的拥护者。 2、C++的标准化工作对C++最重要的贡献...
2018-06-02 22:33:25 841
原创 django博客开发
完成品:github.com/zzaiyuyu/MyBlog教程来源:https://www.zmrenwu.com/post/2/服务器搭建的核心为了让客户端的请求能被Django的Application处理,需要WSGI服务器接受并分析用户的请求,调用相应的python对象完成对请求的处理,然后返回相应的结果。配置Nginx是用来处理静态文件请求的。比如当我们访问一个博客文...
2018-06-02 19:58:43 966
原创 Linux进程间通信——共享内存和信号量
共享内存共享内存是最快的进程通信方式。因为不同于消息队列和管道,需要调用内核函数切换运行环境,而是直接在自己进程的虚拟地址空间里操作。 创建或打开共享内存int shmget(key_t key, int size, int flag);key:共享内存字段名size:共享内存大小flag:和创建文件的mode相同返回值:返回共享内存标识码将共享内存映射...
2018-06-01 14:26:33 2208
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人