自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(15)
  • 收藏
  • 关注

转载 三种工厂模式的C++实现

引出工厂模式的设计问题1.为了提高内聚(Cohesion)和松耦合(Coupling),我们经常会抽象出一些类的公共接口以形成抽象基类或者接口。这样我们可以通过声明一个指向基类的指针来指向实际的子类实现,达到了多态的目的。这里很容易出现的一个问题 n 多的子类继承自抽象基类,我们不得不在每次要用到子类的地方就编写诸如 new ×××;的代码。这里带来两个问题:客户程序员必须知道实际子类的名称(当系统复杂后,命名将是一个很不好处理的问题,为了处理可能的名字冲突,有的命名可能并不是具有很好的可读性和可记忆

2020-08-08 10:11:01 253

原创 背包问题--01背包

01背包问题是入门级别的背包问题,其主要的问题可描述为下:那么我们怎么去求解这样的问题呢?首先背包问题的解题思路基本都是采用动态规划的思想,动态规划的核心就是寻找到状态转化方程。背包问题的解题思路如下:找到状态转移方程后,下面就是编写我们的代码了。#include <iostream>#include <stdlib.h>#include <vector>#include <algorithm>using namespace std;i

2020-08-06 17:16:39 194

原创 五种IO模型详解及优缺点

阻塞IO、非阻塞IO、多路复用IO、信号驱动IO以及异步IO。下面就分别来介绍一下这5种IO模型的异同。1.阻塞IO模型最传统的一种IO模型,即在读写数据过程中会发生阻塞现象。当用户线程发出IO请求之后,内核会去查看数据是否就绪,如果没有就绪就会等待数据就绪,而用户线程就会处于阻塞状态,用户线程交出CPU。当数据就绪之后,内核会将数据拷贝到用户线程,并返回结果给用户线程,用户线程才解除block状态。(阻塞模式下用户进程需要等待两次,一次为等待io中的数据就绪,一次是等待内核把数据拷贝到用户空间)

2020-07-23 12:05:55 3891

原创 if,elseif多重判断的用法

if,elseif是我们在执行程序的时候,常用的分支判断语句,那么为什么需要if,elseif这种类型的条件判断语句呢?为什么我们不可以直接用if,if替代呢?下面结合一个具体的使用场景来解释原因。首先看一道题目:把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个递增排序的数组的一个旋转,输出旋转数组的最小元素。例如,数组 [3,4,5,1,2] 为 [1,2,3,4,5] 的一个旋转,该数组的最小值为1。那么这道题目显然可以采用二分查找的思想解决,我们首先用if,if这

2020-07-22 23:35:55 3319

转载 面试常见海量数据处理问题

参考:https://blog.csdn.net/v_july_v/article/details/6279498/目录top k 问题1、海量日志数据,提取出某日访问百度次数最多的那个IP。2.统计最热门的10个查询串3.有一个1G大小的一个文件,里面每一行是一个词,词的大小不超过16字节,内存限制大小是1M。返回频数最高的100个词。4.有10个文件,每个文件1G,每个文件的每一行存放的都是用户的query,每个文件的query都可能重复。要求你按照query的频度排序。5.

2020-07-17 23:03:54 657

原创 shared_ptr的简单实现

shared_ptr是c++中的一种常用智能指针,它能够解决C++程序员未及时释放内存空间导致的内存泄露问题。shared_ptr的实现核心是改变其中的引用计数值,下面是我实现的一个简单的shared_ptr,其中主要包括拷贝构造函数、赋值运算符等。#include <iostream>using namespace std;template <typename T>class myshared_ptr{public: myshared_ptr(T*value) /

2020-07-17 11:03:33 2764 2

原创 C++实现的生产者消费者模型及应用场景

生产者消费者模型是操作系统中一种重要的进程/线程同步与互斥模型,在实际的项目中应用十分的广泛。1、我们编写一个高并发的web服务器,需要使用到线程池技术,其中的线程池用来处理不同客户的请求任务,不同客户的请求任务我们把它们放入一个请求队列中,如果请求队列中有任务,那线程就从请求队列中取任务,如果请求队列中没任务,那线程就阻塞,那么这些线程就是系统中的消费者。同理,系统中也会有相应的生产者进程把客户的请求任务放入请求队列中。2、在高并发的web服务器中我们经常使用数据库连接池技术来加快系统的响应速度,

2020-07-16 17:46:35 483

原创 valgrind的安装及简单使用

valgrind是一款强大的C++程序调试工具,可帮助我们检测程序中的内存泄露、死锁等,valgrind的安装比较简单。下载了valgrind后,在linux系统中输入下列命令:$ sudo apt-get install automake$ tar jxf valgrind-3.16.1.tar.bz2$ cd valgrind-3.16.1$ ./autogen.sh$ ./configure$ make$ sudo make install期间可能遇到的问题:1、如果输入./

2020-07-02 17:49:56 1094

转载 从10亿个数字中找出最大的前100个数

先拿10000个数建堆,然后一次添加剩余元素,如果大于堆顶的数(10000中最小的),将这个数替换堆顶,并调整结构使之仍然是一个最小堆,这样,遍历完后,堆中的10000个数就是所需的最大的10000个。建堆时间复杂度是O(mlogm),算法的时间复杂度为O(nmlogm)(n为10亿,m为10000)。 优化的方法:可以把所有10亿个数据分组存放,比如分别放在1000个文件中。这样处理就可以分别在每个文件的10^6个数据中找出最大的10000个数,合并到一起在再找出最终的结果。 ...

2020-06-06 17:28:35 4325

原创 回溯算法

回溯算法是算法分析与设计中一种重要的算法设计思路,其本质就是类似暴力的方式去穷举可达到可行解的目标序列。其主要的算法架构如下:void backtrack(路径,选择列表){ if(满足结束条件) { result.push_back(结果); } for(选择:选择列表) { 做出选择; backtrack(路径,选择列表); 撤销选择; }}结合leetcode 中的一道题目...

2020-06-06 11:32:39 140

原创 动态规划之打家劫舍

打家劫舍问题是经典的动态规划问题,首先我们看最简单的一种场景。你是一个专业的小偷,计划偷窃沿街的房屋。每间房内都藏有一定的现金,影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统,如果两间相邻的房屋在同一晚上被小偷闯入,系统会自动报警。给定一个代表每个房屋存放金额的非负整数数组,计算你不触动警报装置的情况下,一夜之内能够偷窃到的最高金额。输入:[1,2,3,1]输出:4解释:偷窃 1 号房屋 (金额 = 1) ,然后偷窃 3 号房屋 (金额 = 3),偷窃到的最高金额 = 1 +...

2020-06-05 19:22:05 311

原创 操作系统中的进程与线程

操作系统中的进程与线程目录操作系统中的进程与线程为什么需要进程进程的组成进程的调度进程之间的切换

2020-05-31 11:49:19 162

原创 使用vscode配置远程服务器代码调试

我们在linux下编程经常会使用vim这种编辑工具,但是可能有一部分人对于vim这种类型的编辑工具使用很不习惯。在windows系统上通过vscode配置远程服务器代码调试可以方便我们在windows系统上编写代码,在linux系统上运行调试,配置的具体过程如下:1、vscode安装从vscode官网https://code.visualstudio.com/下载vscode,之后一直点下一步安装就行。2、linux系统下安装openssh-server在linux终端中输入:sudo ap

2020-05-30 11:16:19 4307

原创 虚拟机下配置网桥模式实现主机与虚拟机之间的通信

最近在使用虚拟机下的ubuntu做服务器,刚开始发现两台机器之间无法ping通,后来找到原因发现要配置桥接模式。其实配置桥接模式十分简单主要的流程如下:第一步:打开VM VirutalBOX虚拟机电视设置按钮,如下图所示:第二步:在点击设置后我们点击其中的网络选项,然后在右边选择桥接网卡即可至此我们的桥接模式就配置完成了测试:首先在ubuntu终端中输入ifconfig查看虚拟机的ip地址,如我的ip地址为192.168.0.105。之后我们在windows系统中输入

2020-05-29 10:46:47 1263

原创 用css3实现页面背景图片不重复

也许许多人在做网页的时候都会遇到过一个这样的问题,什么问题呢那就是跟下面这张图片一样的问题出现这样的问题的原因是因为div的大小大于背景图片的大小,从而导致了背景图片的重复,其实在css3中解决像这样的问题特别简单只需要添加一个这样的样式即可   background-repeat:no-repeat;加上这条语句之后一切问题就顺利的解决了。看问题得到解决效果图

2016-07-10 18:17:45 6530

空空如也

空空如也

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

TA关注的人

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