自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

漫鱼

计科专业大学生

  • 博客(126)
  • 收藏
  • 关注

原创 计算机专业大学生怎么学习?

漫漫学习路在2018年1月30日起我的寒假学习路线:继续学习爬虫,入门scrapy框架放弃啃《某难读的操作系统书籍》,开始读《剑指offer》,刷leetcode,巩固算法数据结构的基础从大二下学期开始,我的学习之魂貌似开始觉醒,当时兴冲冲地跟着一个宿舍都报了蓝桥杯算法竞赛,结果没想到试题与想象中的并不一样,自己练的都是些c基础语法题,而竞赛层次主要考的是算法思想,结果堪...

2018-01-30 21:28:16 17106 4

原创 实习随笔

2-25内网-外网不是互通的,只能从外网发送文件到内网利用CRT连上服务器进行开发。25是开发服务器,21是运行服务器。在内网上 Sz 和 rz 命令可以传送本机文件到服务器。2-26git更新代码。因为本地和远端存在冲突(每一个 commit 是一个节点,连起来就是一个链,而本地进行rebase会改变链结构,把提交历史整理成一条线)。所以步骤是先fetch 同步到本地版本库,在...

2019-08-01 15:37:45 461

原创 面试中遇到的问题总结

面筋死锁的概念,如何避免死锁?两个或者两个以上线程在执行过程中,因争夺资源而产生互相等待的现象,若无外力作用,他们都将无法推进下去,此时,称系统处于死锁。四个条件,互斥,请求保持,不可剥夺,环路等待。破坏任一条件即可预防破坏请求保持,进程必须一次申请所有需要的资源。资源分层,破坏环路等待。避免是在进程每次申请资源时判断是否是安全操作。银行家算法里,安全是绝对的,不安全不一定...

2018-09-13 15:26:37 439

转载 C++类型转换

https://www.nowcoder.com/questionTerminal/5e5bb7214788436cb966e67305a8041e?pos=242&mutiTagIds=138&orderByHotValue=1看一道题: 假设定义了ClassA* pA2,下面正确的代码是? class A{ public: virtual void FunTest...

2018-08-17 21:31:52 490

原创 动态规划练习

数字和为sum的方法数给定一个有n个正整数的数组A和一个整数sum,求选择数组A中部分数字和为sum的方案数。 当两种选取方案有一个数字的下标不一样,我们就认为是不同的组成方案。 输入 5 15 5 5 10 2 3 输出 4思路:暴力不行。sum值是指定的,但是解空间肯定是最小单位为1进行增长,所以想到dp[i][j]表示前缀为 i ,能组成值为 j 的可能性个数。然后行...

2018-08-13 17:48:04 399

原创 C++11新特性

C++11新特性初始化变量自定义类型可以用大括号(构造列表)构造列表还可以作为函数参数和返回值在定义变量时检测精度丢失问题自动类型auto回炉重造,在编译期间推到变量类型。主要用在复杂类型减少代码量,比如std::vector<int>::iterator itauto不能做函数参数,定义类的non-static成员变量,实例化模板decltype可以...

2018-08-12 10:31:49 266

原创 C++STL库探究

C++STL库探究C++STL库探究六大组件空间配置器仿函数容器选择vector ,list ,deque ?vector实现细节list实现细节deque和vector的差异关联容器关联容器和序列容器的差异STL即标准模板库,封装了一些常用的数据结构和算法它的价值是从小来说,给用户直接提供了一套高效的算法接口,并且讲算法和数据容器分离,让算法...

2018-08-09 17:05:01 955

原创 基于CGI搭建网络数据采集站

基于CGI搭建网络数据采集站http是被应用最为广泛的协议,所以我做项目首先从学习技术角度出发,在github找到开源项目minihttp,并对其进行拓展开发。项目整体思路编写目标是编写一个小型http服务器,能正确处理来自浏览器的请求。开发环境是Linux下的C语言编写。其次需要服务器支持CGI技术,可以让用户执行服务器上的CGI程序,实现搜索引擎的类似功能。从底层编写的服...

2018-08-05 23:15:43 1204

原创 C++智能指针剖析

智能指针智能指针的版本auto_ptrscoped_ptrshared_ptr循环引用问题智能指针 什么是智能指针?程序里有一些指针管理着资源,比如文件指针,指向malloc动态分配空间的指针。这些指针在使用完后必须被释放,否则有内存泄露问题。而程序员往往会因为程序执行流复杂而疏忽了释放这些指针指向的资源,所以,智能指针智能在自动释放资源。这里的概...

2018-07-20 16:47:29 892

原创 I/O多路转接服务器设计(select,poll,epoll)

I/O多路转接服务器设计(select,poll,epoll)I/O多路转接服务器设计(select,poll,epoll)理解IO阻塞和非阻塞异步和同步select服务器的设计思路epoll服务器epoll的优点——对应select,poll理解IOIO就是用户向操作系统索取或发送数据的过程,linux系统实现的是缓存IO。缓存IO就是底层数据到...

2018-07-19 15:20:50 988

原创 “直播”俄罗斯方块——linux服务器编程

“直播”俄罗斯方块概述:一个玩家客户端,多个观战客户端,一个服务器。玩家进行操作,同步游戏信息到服务器,服务器向所有观战客户端实时转发。观战者可以看到下一个图案。展示: 代码地址:使用说明:./server 8080./client 127.0.0.1 8080./viewer 127.0.0.1 8080单机版设计思路:model部分每一个图形用一个...

2018-07-19 15:12:25 1345

原创 C++泛型编程——模板,容器实现

泛型编程模板技术模板实例化模板的使用模板参数模板特化函数模板特化类模板特化容器适配器分离编译模式泛型编程泛型编程是编写和类型无关的逻辑代码,是代码复用的另一种手段。模板是实现泛型编程的一种技术。以往要编写一个通用的函数有3种方法,函数重载,使用公共基类,宏函数。然而函数重载需要对各种类型一一枚举,且一个错个个错。第二种继承公共基类并重写虚...

2018-07-15 09:15:17 8245

原创 TCP设计思想

TCP设计思想连接管理三次握手过程四次挥手过程流量控制拥塞控制滑动窗口报文段格式6个标志位:TCP异常终止TCP?UDPTCP设计思想TCP是传输层的可靠传输协议,而传输层以下的网络层不提供可靠传输,因此TCP协议必须做一些措施,出错重发,超时重发,以及在接收方来不及接收时告诉发送方降低速度。TCP还要满足高性能要求,所以非常复杂。 ...

2018-07-09 17:34:04 1521

原创 C++多态——虚函数,调用原理

多态分为静态多态和动态多态什么时候形成动态多态函数重载,同名隐藏,重写抽象类多态调用原理 什么是多态?通俗的,一个事物有多种状态,在C++里是指一个基类成员函数被不同的派生类或者基类调用,有不同的结果。用基类的指针或引用操纵多个类型的能力被称为多态多态分为静态多态和动态多态静态多态是在编译期间完成,根据函数参数实参判断需要调用的函数。以此形成了...

2018-07-01 16:37:40 1638

原创 C++继承概念——权限,对象模型,菱形虚拟继承

访问权限和继承权限派生类默认的成员函数赋值兼容规则菱形继承和虚拟继承 什么是继承?继承是面向对象设计的重要部分,允许在原有类特性上进行扩展和代码复用!符合认知上的从浅入深的过程。访问权限和继承权限访问权限是指对于本类或者对象的成员来说的,继承权限是在访问权限的基础上谈的,这一点很容易理不清。访问权限:private: 只能由该类中的函数、其友...

2018-07-01 10:30:22 858

原创 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 2083

原创 网络基础——TCP/IP五层模型

网络基础——TCP/IP五层模型局域网和广域网局域网LAN是通过交换机和路由器连在一起的一些主机,广域网的概念比局域网规模大一些,但是没有明显的界限区分两者。局域网通信原理在数据链路层有两种使用信道的方式,点对点和广播。点对点的作用是用户在接入互联网之前必须先访问某个ISP,其中使用的就是点对点通信方式。局域网使用广播方式,因为局域网具有地域范围和主机数有限的特点,所以局域网具...

2018-06-27 15:52:50 1036

转载 海量数据处理(转)

海量数据处理(转)位图和布隆过滤器实现:https://blog.csdn.net/mxrrr_sunshine/article/details/80451189常见问题:https://blog.csdn.net/zhangye3017/article/details/79431449...

2018-06-27 15:02:26 867

原创 Linux作业控制(前后台)和守护进程

Linux进程间关系和守护进程进程间的关系有哪些之前学过父进程通过fork创建子进程,其实还有一种进程间关系是进程组。进程组可以接受同一终端的各种信号,比如ctr+c就是给一个进程组发的中断信号而不是个单个进程,所以说进程组通常和一个作业相关联。组长进程可以创建进程组,但是组内只要有进程就一直存在。例如在shell界面下用两个管道执行三个命令,就要在shell进程下fork...

2018-06-27 10:06:21 1046

原创 哈希搜索(多次探测,哈希桶)

哈希搜索(闭散列,开散列) 为什么提出哈希?顺序搜索和二叉树搜索中,元素存储位置和元素关键码之间没有联系。因此在查找一个数据时,必须经过关键码的多次比较,搜索效率取决于比较次数。而一个理想的搜索是不经过比较,直接拿出数据,建立关键码和存储位置的关系。 哈希冲突的产生与解决不同的关键码通过相同的哈希函数计算出相同的地址,产生冲突。因此在设计哈希函数时,要尽量避免冲突,...

2018-06-26 15:22:45 1829

原创 C++获取函数运行时间

第一种方法: GetTickCount()获取系统启动后的时间间隔,精确度有限,跟CPU有关。 第二种方法: QueryPerformanceCounter()这个函数返回高精确度性能计数器的值,它可以以us为单位计时.但是它确切的精确计时的最小单位是与系统有关的,所以,必须要查询系统以得到QueryPerformanceCounter()返回的嘀哒声的频率. QueryP...

2018-06-25 15:10:45 1739

原创 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 756

原创 C++String类与深浅拷贝

C++String类与深浅拷贝浅拷贝编译器默认合成的拷贝构造和赋值运算符是浅拷贝,意思是从编译器的角度看到什么就原封不动拷贝到当前对象。 导致的问题:多个对象使用同一块空间,释放的空间被其他对象访问会导致程序崩溃。以下实现深拷贝版本,将对象动态申请的资源也拷贝到当前对象。class String {public: String(const char* str =...

2018-06-24 16:38:17 674

原创 线程重要概念

线程重要概念线程重要概念如何谈进程?线程是什么?为什么需要线程?进程ID和线程ID线程的互斥和同步条件变量读写锁如何谈进程?进程是代码的一次动态执行,系统中肯定不止一个进程,所以OS为了管理起这些进程创建了PCB这种结构用来描述关于进程的所有信息。在系统内核用链表把PCB组织起来,进行调度。进程本质可以说是代码+数据,OS为每个进程分配一...

2018-06-21 22:42:06 522

原创 生产者消费者模型

生产者消费者模型生产者消费者模型互斥同步篇第一个版本,不加互斥限制加入互斥条件加入线程同步信号量篇互斥同步篇三种关系两个角色一个规则。生产者和消费者对临界区的访问是互斥的,各自也是互斥的。例如链表生产节点的例子,生产者往链表里push,消费者pop,这时他们共同操纵的链表就是临界资源,不能让生产者消费者同时进入临界区,需要加以互斥条件。又假如生产者慢,...

2018-06-20 23:06:37 647

原创 c++动态内存管理深入理解

C语言三种开辟堆内存方式malloc底层实现,本质C++的动态内存管理malloc和free, new和delete深入探究new和delete所做的工作定位newC语言三种开辟堆内存方式c语言用3个函数进行动态内存分配。malloc申请一段连续的堆空间并返回首地址,不能初始化内存空间。calloc会将分配到的空间每一位初始化为0,因此效率稍低。...

2018-06-20 20:40:18 749

原创 c语言小游戏——贪吃蛇和俄罗斯方块

c语言小游戏——贪吃蛇和俄罗斯方块贪吃蛇效果: 运行环境:win10,vs2017 代码地址:https://github.com/zzaiyuyu/Snake/blob/master/main.c首先思考一下设计这个游戏的流程model部分实体有游戏,蛇,坐标,食物,墙,所以我们的模型先抽象出来。蛇用一个链表表示,链表的每个节点都是x,y坐标,蛇还要保存当前移...

2018-06-16 14:07:08 3228

原创 c++类默认的成员函数

空类的大小构造函数默认构造函数拷贝构造函数默认拷贝构造函数析构函数关于构造和析构的顺序运算符重载友元函数的出现static修饰类成员C++中的const内联函数空类的大小class Person { }; sizeof(Person) //1空类的大小为1.因为实例化类后为每个对象分配内存空间,若要是0空间,对象会被分配到...

2018-06-16 10:23:17 890

原创 自行实现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 1495

原创 Linux——竟态条件和SIGCHLD

可重入函数一个函数被多个执行流调用,有可能在第一次调用还没返回时就再次进入函数,称为重入。 例如上面的insert函数,在执行第一步时收到信号产生硬件中断,转去信号处理函数,而信号处理函恰好调用了insert函数,由于两个函数操纵了同一个链表而产生意外的结果,所以这个函数是不可重入函数。如果这个函数只是操纵自己的局部变量就是可重入的。另外调用IO库,或者使用malloc的函数也是不可...

2018-06-11 17:29:05 850

原创 Linux进程信号探究

概述信号产生信号的处理方式信号的状态通过信号集改变信号的状态信号的捕捉过程概述在程序正常执行过程中可能出现各种情况,系统会产生硬件中断去执行响应动作。在进程的PCB中通过bitmap存放信号的状态,操作系统若想给进程发信号,只需要修改PCB的bitmap。进程收到信号并不是立即处理的,而是等cpu调度,切换内核态检查处理信号。信号产生信号相对与...

2018-06-10 17:31:47 730

原创 C++类和对象的概念

C++类和对象的概念面向对象程序设计 概念:(Object Oriented Programming,缩写:OOP)是一种程序开发的方法。 对象指的是类的实例,将对象作为程序的基本单元,将程序和数据封装其中,以提高软件的重用性、灵活性和扩展性在c语言中使用struct可以对数据进行抽象封装,在c++中用class封装程序和数据,其访问权限体现了封装性。封装:隐藏对象的属性...

2018-06-10 17:31:13 4874 1

原创 c++基础,引用重载命名空间

命名空间输入输出函数重载参数缺省指针和引用引用传参引用做返回值总结命名空间命名空间解决全局命名冲突的问题 标准C++库中的所有组件都是在一个被称为std的名字空间中声明和定义的。在 采用标准C++的平台上使用标准C++库中的组件,只要写一个using指示符: using namespace std; 就可以直接使用标准C++库中的所有成员。 或者 ...

2018-06-05 22:21:53 751

原创 信号量实现共享内存的同步问题

任务: 其中父进程计算结果1+2需要调用一个动态库,动态库提供1+2的方法。 文件的makefile:.PHONY:cleadn allall: rd main##链接动态库main: main.o libadd.so gcc -o $@ $< -L. -ladd#生成动态库libadd.so: add.o gcc -fPIC -shared -o li...

2018-06-03 18:08:29 2115

原创 查看core dump段错误原因

什么是core dump 当一个进程要异常终止时,可以选择把进程的用户空间内存数据全部保存到磁盘上,文件名通常是core,这叫做core dump-核心转储。进程异常终止时因为有BUG,比如非法访问内存导致段错误。事后可以用调试器检查core文件以查清错误原因,这叫做事后调试。 一个进程允许产生多大的core文件,取决于进程的Resource Limit。默认是不允许产生core文...

2018-06-03 17:31:33 9416 3

原创 面向对象的理解

1、对于OO(面向对象)的含义,并非每一个人的看法都是同样的。 即使在如今。假设问十个人,可能会得到15种不同的答案。差点儿全部的人都会允许继承和多态是OO中的概念。大多数人还会再加上封装。 另一些人会加上异常处理。而可能会没有人将模板也包括进去。问题的关键在于:对于某个特性是否是属于OO的,往往都存在着不同的观点。而每一种观点都有着热情的拥护者。 2、C++的标准化工作对C++最重要的贡献...

2018-06-02 22:33:25 835

原创 django博客开发

完成品:github.com/zzaiyuyu/MyBlog教程来源:https://www.zmrenwu.com/post/2/服务器搭建的核心为了让客户端的请求能被Django的Application处理,需要WSGI服务器接受并分析用户的请求,调用相应的python对象完成对请求的处理,然后返回相应的结果。配置Nginx是用来处理静态文件请求的。比如当我们访问一个博客文...

2018-06-02 19:58:43 957

原创 Linux进程间通信——共享内存和信号量

共享内存共享内存是最快的进程通信方式。因为不同于消息队列和管道,需要调用内核函数切换运行环境,而是直接在自己进程的虚拟地址空间里操作。 创建或打开共享内存int shmget(key_t key, int size, int flag);key:共享内存字段名size:共享内存大小flag:和创建文件的mode相同返回值:返回共享内存标识码将共享内存映射...

2018-06-01 14:26:33 2169

原创 Linux进程间通信——管道和消息队列

进程间通信多个进程需要互相配合完成一项任务,称为进程同步,例如公交车问题。多个进程需要访问共享资源(临界资源),而资源同时只能被一个进程访问,各个进程相互竞争使用资源,称为互斥。例如买票问题。为什么需要进程间通信:数据传递 资源共享,多个进程使用一个资源通知事件,告诉其他进程事件发生通信方式分类:管道System V IPC,消息队列,共享内存,信号量POSI...

2018-05-31 19:04:36 1781

原创 Linux IO基础——文件描述符/inode节点/动态库

文件操作打开文件关闭文件读文件写文件文件描述符进程与文件描述符目录操作生成静态库生成动态库动态库运行时加载探究文件操作包含头文件 fcntl.h打开文件int open(const char *pathname, int flags);flag:(O_RDONLY,O_WRONLY ,O_RDWR )| ( O_APPEND, O_C...

2018-05-31 19:00:18 1124

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除