自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 最大递增子序列

HJ24合唱队描述N 位同学站成一排,音乐老师要请最少的同学出列,使得剩下的 K 位同学排成合唱队形。设KK位同学从左到右依次编号为 1,2…,K ,他们的身高分别为T_1,T_2,…,T_KT1​,T2​,…,TK​,若存在i(1\leq i\leq K)i(1≤i≤K)使得T_1<T_2<......<T_{i-1}<T_iT1​<T2​<......<Ti−1​<Ti​且T_i>T_{i+1}>......>T_K...

2022-04-18 15:38:08 448

原创 动态规划练习题目

1.HJ16购物单描述王强决定把年终奖用于购物,他把想买的物品分为两类:主件与附件,附件是从属于某个主件的,下表就是一些主件与附件的例子:主件 附件 电脑 打印机,扫描仪 书柜 图书 书桌 台灯,文具 工作椅 无 如果要买归类为附件的物品,必须先买该附件所属的主件,且每件物品只能购买一次。每个主件可以有0个、1个或2个附件。附件不再有从属于自己的附件。王强查到了每件物品的价格(都是10元的整数倍),而他只有 N 元的预算...

2022-04-16 18:23:37 226

原创 ios订阅的升级和降级

苹果订阅总共有3个等级,业务可以自由设置。- 等级 2 => 等级 1,升级,立即生效,等级 2 按比例退款- 等级 1 => 等级 2,降级,下次续订周期生效- 等级 1 => 等级 1- 周期相同,比如单月 A => 单月 B,立即生效,A 按比例退款- 周期不同,比如单月 C => 单季 D,C 周期结束后生效,不退款升级需要立即支付新物品的全款,原物品根据使用时间按比例进行退款。新物品的支付时间,即老物品的退款时间。...

2021-10-19 16:14:18 3275 2

转载 公钥,私钥和数字签名

转自https://blog.csdn.net/21aspnet/article/details/7249401一、公钥加密假设一下,我找了两个数字,一个是1,一个是2。我喜欢2这个数字,就保留起来,不告诉你们(私钥),然后我告诉大家,1是我的公钥。我有一个文件,不能让别人看,我就用1加密了。别人找到了这个文件,但是他不知道2就是解密的私钥啊,所以他解不开,只有我可以用数字2,就是...

2019-03-16 17:29:19 156

转载 C++构造函数和析构函数中抛出异常的注意事项

从语法上来说,构造函数和析构函数都可以抛出异常。但从逻辑上和风险控制上,构造函数和析构函数中尽量不要抛出异常,万不得已,一定要注意防止资源泄露。在析构函数中抛出异常还要注意栈展开带来的程序崩溃。1.构造函数中抛出异常在C++构造函数中,既需要分配内存,又需要抛出异常时要特别注意防止内存泄露的情况发生。因为在构造函数中抛出异常,在概念上将被视为该对象没有被成功构造,因此当前对象的析构函...

2019-03-14 22:19:54 170

转载 [转] Visual Assist 使用小结

来源:http://blog.chinaunix.net/uid-22145625-id-3230590.html来源:http://blog.csdn.net/yann2/article/details/5929501来源:http://blog.csdn.net/a597926661/article/details/7845825来源:http://blog.csdn.net/fr...

2019-01-08 20:34:58 624

转载 mysql_real_connect()函数介绍

头文件#include函数原型描述:MYSQL *mysql_real_connect (MYSQL *mysql,const char *host,const char *user, const char *passwd, const char *db, unsigned int port,const char *unix_socket,unsig

2017-11-02 16:36:29 33840 2

转载 CentOS7下安装Scrapy

更新yum[root@localhost ~]# yum -y update安装gcc及扩展包[root@localhost ~]# yum install gcc libffi-devel python-devel openssl-devel安装开发工具包[root@localhost ~]# yum groupinstall -y development

2017-09-10 13:03:45 264

转载 select和epoll 原理概述&优缺点比较

这个问题在面试跟网络编程相关的岗位的时候基本都会被问到,刚刚看到一个很好的比喻:就像收本子的班长,以前得一个个学生地去问有没有本子,如果没有,它还得等待一段时间而后又继续问,现在好了,只走一次,如果没有本子,班长就告诉大家去那里交本子,当班长想起要取本子,就去那里看看或者等待一定时间后离开,有本子到了就叫醒他,然后取走。也许在细节方面不是特别恰当,但是总的来说,比较形象地说出了se

2017-08-28 15:47:32 331

转载 两个线程同时调用同一个处理函数的互斥问题

问题背景:在工作中遇到过一个问题,就是在两个线程同时调用同一个函数的时候,到底是应该在这个函数的内部什么处理上加上互斥。原因又是什么?为了调查这个问题,我决定从以下三方面调查1.线程中函数的调用2.同一个进程中的两个线程调用同一个处理函数3.两个不同进程中的两个线程调用同一个处理函数1.线程中函数的调用每个进程都会有自己的虚拟地址空间,同一个进程中的每个线程都会在这

2017-07-27 16:33:14 512

转载 void (*signal (int signo, void (*func)(int))) (int);

返回函数指针的函数指针类型void (*signal (int signo, void (*func)(int))) (int); void (*signal (int signo, void (*func)(int))) (int);乍一看,还以为定义了一个函数指针signal,但如果真是这样,signal后的参数列表又怎么解释?先来看看一些基础知识:1,定义函数指针:

2017-07-22 22:28:42 544 1

转载 C++中的动态绑定 对虚表的一些测试

转自:http://blog.csdn.net/fastsort/article/details/8757533C++中的动态绑定 动态绑定(dynamic binding):动态绑定是指在执行期间(非编译期)判断所引用对象的实际类型,根据其实际的类型调用其相应的方法。 C++中,通过基类的引用或指针调用虚函数时,发生动态绑定

2017-07-22 16:29:31 307

转载 C++中的explicit关键字

转自:http://blog.csdn.net/chollima/article/details/3486230#comments在C++程序中很少有人去使用explicit关键字,不可否认,在平时的实践中确实很少能用的上。再说C++的功能强大,往往一个问题可以利用好几种C++特性去解决。但稍微留心一下就会发现现有的MFC库或者C++标准库中的相关类声明中explicit出现的频率是很

2017-07-21 11:37:09 188

转载 进程 终端 的联系

1.终端登录登录过程:内核--->init[进程ID=1]--->(fork)init--->(exec)getty--->(exec)--->login登录结束过程:进程1=init->登录shell终端设备驱动程序使用终端的用户  2.网络登录如下图   3.进程组1).每个进程属于

2017-07-21 10:39:46 253

转载 进程 、进程组、会话、控制终端之间的关系

APUE学习记录:一个进程组可以包含多个进程      进程组中的这些进程之间不是孤立的,他们彼此之间或者存在者父子、兄弟关系,或者在功能有相近的联系。      那Linux为什么要有进程组呢?其实提供进程组就是方便管理这些进程。假设要完成一个任务,需要同时并发100个进程,当用户由于     某种原因要终止这个任务时,要是没有进程组,就需要一个个去杀死这些进

2017-07-21 10:36:45 490

转载 mysql远程连接命令

一、MySQL 连接本地数据库,用户名为“root”,密码“123”(注意:“-p”和“123” 之间不能有空格)C:\>mysql -h localhost -u root -p123二、MySQL 连接远程数据库(192.168.0.201),端口“3306”,用户名为“root”,密码“123”C:\>mysql -h 192.168.0.201 -P 3306 -u r

2017-05-15 12:03:30 3177

转载 C++虚函数-同名访问 以及两道例题

首先来看一下派生类和基类成员同名事的处理规则:派生类内定义了一个与基类同名的成员,该现象称为同名覆盖,此时,无论派生类内部成员函数还是派生类的对象访问同名成员,如果未加任何特殊标识,则访问派生类中重新定义的同名成员。如果派生类内部成员或派生类的对象需要访问基类继承来的同名函数,则必须在同名函数前加上"基类名::"进行类名限定。如果基类内部成员函数或基类对象访问同名成员,访问的一定是基类的同

2016-09-06 00:09:03 924

转载 C++中四种进程或线程同步互斥的控制方法

现在流行的进程线程同步互斥的控制机制,其实是由最原始最基本的4种方法实现的。由这4种方法组合优化就有了.Net和Java下灵活多变的,编程简便的线程进程控制手段。    这4种方法具体定义如下 在《操作系统教程》ISBN 7-5053-6193-7 一书中能够找到更加周详的解释      1临界区:通过对多线程的串行化来访问公共资源或一段代码,速度快,适合控制数据访问。    

2016-08-21 23:30:39 3366

原创 使用mmap实现一个文件输出函数

这是CSAPP上的一道作业题,编写一个C程序mmapcopy.c,使用mmap将一个任意大小的磁盘文件拷贝到stdout,输入文件的名字,必须作为一个命令行参数传入。#include"csapp.h"void mmapcopy(int fd,int fd1,int size){ char *bufp; bufp =(char *)mmap(NULL,size,PROT_READ,MAP

2016-04-25 23:06:36 2760 1

转载 进程间的几种通信方式

进程间通信就是在不同进程之间传播或交换信息,那么不同进程之间存在着什么双方都可以访问的介质呢?进程的用户空间是互相独立的,一般而言是不能互相访问的,唯一的例外是共享内存区。但是,系统空间却是“公共场所”,所以内核显然可以提供这样的条件。除此以外,那就是双方都可以访问的外设了。在这个意义上,两个进程当然也可以通过磁盘上的普通文件交换信息,或者通过“注册表”或其它数据库中的某些表项和记录交换信息。广义

2016-04-22 22:24:13 296

原创 linux下查看一个进程的启动时间和运行时间

可通过ps 来查看,通过参数 -o 来查看如: ps -eo pid,tty,user,comm,lstart,etime | grep init参数说明:pid:进程IDtty:终端user:用户comm:进程名lstart:开始时间etime:运行时间例如:创建一个进程,其PID为 13207执行查询:

2016-04-22 20:03:42 2688

转载 进程死锁及解决办法

一、要点提示:(1)掌握死锁的概念和产生死锁的根本原因。(2)理解产生死锁的必要条件 -- 以下四个条件同时具备:互斥条件、不可抢占、占有且申请、循环等待。(3)记住解决死锁的一般方法,掌握死锁的预防和死锁的避免二者的基本思想(4)掌握死锁的预防策略中资源有序分配策略。(5)理解进程安全序列的概念,理解死锁与安全序列的关系。(6)了解银行家算

2016-03-21 21:18:31 308

转载 STL的逆向迭代器

本文转自:http://zhouruijun163.blog.163.com/blog/static/10771562008111103635444/ 在学习STL中关于迭代器reverse_iterator转换,发现个有趣的问题,如下例子。#include iostream>#include algorithm>#include vector>usin

2016-03-21 19:26:20 323

原创 SGI STL的空间配置器alloc

这两天通过阅读SGI  STL源码,与《STL源码剖析》上侯捷对于源码的非常好的讲解与注释,me理解了C++关于内存管理的具体实现方法,觉得大有所益。。。整理一下,将实现空间配置器所用的策略大致记录下来。1. STL容器简介STL提供了很多泛型容器,如vector,list和map。程序员在使用这些容器时只需关心何时往容器内塞对象,而不用关心如何管理内存,需要用多少内存

2016-03-06 21:07:07 690

原创 Effective C++读书笔记 条款03:尽可能使用const

条款03:尽可能使用const这个条款的内容叙述了很多,不便全部列出。但主要还是围绕在对const的优点的阐述上,和如何正确与合理使用const。    const的一件奇妙的事情是,它允许你指定一个语义约束,而编译器会强制实施这项约束。它允许你告诉编译器和其他程序员某个数值应该保持不变。只要这(某值保持不变)是事实,你就确实该说出来,因为说出来可以获得编译器的相助,确保这条约束不被违反。

2016-03-03 11:50:23 375

原创 Effective C++ 读书笔记 条款1~2

条款01:视C++为一个语言联邦    为了更好的理解C++,我们将C++分解为四个主要次语言:· C。说到底C++仍是以C为基础。区块,语句,预处理器,内置数据类型,数组,指针统统来自C。· Object-Oreinted C++。这一部分是面向对象设计之古典守则在C++上的最直接实施。类,封装,继承,多态,virtual函数等等...· Template C++。这是C++泛型

2016-03-01 19:23:12 330

原创 LCA 问题 用 Tarjan 离线算法 求解

题目:http://poj.org/problem?id=1330     思 路: LCA (最近公共祖先问题),目的是求出一棵树中,任意两个节点的最近公共祖先。

2016-02-27 15:39:24 485 1

转载 C++11 右值引用

转自:http://www.cnblogs.com/hujian/archive/2012/02/13/2348621.htmlC++ 11中引入的一个非常重要的概念就是右值引用。理解右值引用是学习“移动语义”(move semantics)的基础。而要理解右值引用,就必须先区分左值与右值。对左值和右值的一个最常见的误解是:等号左边的就是左值,等号右边的就是右值。左值和右值都是针对

2016-02-24 20:00:07 288

原创 C++11中initializer_list的用法

/* initializer_list 是C++11新增的,可以使用它来初始化STL: 例如:std::vector payments {45.9,39.3,19.59,89.1}; 上述声明与下述代码等价(这里显式的将列表指定为构造函数参数): std::vector payments ({45.9,39.3,19.59,89.1}); 在C++

2016-02-01 19:14:21 8608

转载 Win7+VMware Workstation环境下的CentOS-Linux网络连接设置

首先介绍一下VMware的网络连接方式。我们的主机通常经过物理网卡与局域网和Internet相连接,而虚拟机既已被称之为虚拟计算机,那虚拟网卡也必然存在,而如果我们想让虚拟计算机能连接到局域网或者Internet,那就必须让虚拟网卡和主机的真实物理网卡协同起来。VMware提供了三种将虚拟网卡和物理网卡捆绑起来的方式,即桥接(Bridge)模式,网络地址转换(Network Address T

2016-01-25 22:12:15 381

原创 关联容器 set

//set的键与值的类型相同,且不能出现重复值。#include#include#include#include#includevoid output(const std::string &s){ std::cout<<s<<" ";} int main(void){ using namespace std; const int N=6; string s1[N]={"bu

2016-01-24 22:47:05 296

原创 关联容器 multimap

//multimap会自动按照键值为所有元素排序,将键值相同的元素放在一起//能够对元素进行快速访问,因为它是树形结构。 #include#include#include#includevoid output( std::pair &s){ std::cout<<" "<<s.first<<" "<<s.second<<std::endl;}typedef int

2016-01-24 22:43:58 303

原创 函数适配器

/* 什么是函数适配器? 例如: template bool tooBig(const T& val,T & lim){ return val > lim;} 这是比较大小的模板函数,但是一次必须得接受两个参数,但通常在 函数中,迭代器只有一个,需要一种能将 多参数函数 转换为 “接收一个参数的函数对象” 的机制,这就叫做“函数

2016-01-24 22:42:18 378

原创 KMP 模式串匹配算法

这两天读了JULY的KMP,觉得很受益,写下代码以作备忘。KMP最重要的就是求出next数组,而next数组则是通过不断比较 str2[k] 与 str2[j] 来确定下一个字符对应的 next数值 ,(相等则直接next[++j] = ++k;,不相等则令k = next[k]  进行递推直到出现 str2[k]==str2[j] 相等的情况,或是没有相等的直到 k == -1 。

2016-01-20 21:28:31 467

原创 C++之智能指针(二)

探讨 unique_ptr 为何优于 auto_ptr(已被C++11摒弃) /* 共同点:二者都建立了所有权概念(ownership) ownership:对于特定的对象,只有一个智能指针可以拥有它,所以只有拥有对象的 智能指针的析构函数会删除该对象。 *//* auto_ptr :(已经被C+

2016-01-19 20:15:38 306

原创 C++之智能指针 (一 )

//智能指针是一种类派生出的对象,能够在离开代码块的时候,自动delete掉new出的空间,以防止内存泄露 /* auto_ptr :(已经被C++11摒弃)建立所有权概念(ownership) ownership:对于特定的对象,只有一个智能指针可以拥有它,所以只有拥有对象的智能指针的 析构函数会删除该对象。 赋值操作可

2016-01-19 20:11:15 272

原创 RTTI 运行阶段类型识别

//RTTI只适合于包含虚函数的类,原因在于只有对于这种类层次的结构,才应该将派生类对象的地址赋给基类指针/*RTTI的三种策略: 1. dynamic_cast : 如果用于检测指针: Type *pm = dynamic_cast(pt) 用法:pt的类型是否可以被安全转化为Type * ?如果可以,则返

2016-01-18 19:11:51 432

原创 寻找和为定值的任意个数(01背包)

这个问题是在July的《编程之法》上看到的,题目要求是:输入两个数字n与sum,在1~n中寻找哪些数字之和等于sum。很明显这是个典型的01背包问题,因为每一个元素只有要与不要两种选择~#include #include using namespace std; listlist1; void find_factor(int sum, int n) {

2016-01-15 20:27:47 646

原创 位运算函数实现float型变量取整数位

虽然C语言自带隐式类型转换,即:float f=12.25;int a=f;printf("%d\n",a); //结果是12但是这几天了解了float的结构,所以自己写了一个函数 int ftoi(const float f) 来实现它下面是float的结构:float一共32位,其结构定义如下:|-------- 31 -------|-

2016-01-15 19:59:26 6141 5

原创 两道面试题:2012年10月9号阿里巴巴笔试

1. n个无序整数,已知第i个数在排好序的序列中的位置为j,满足|i-j|的得两分,总分是20分。借鉴的答案:答:由以上条件判断最小的数字一定在前k个中,于是可以讲前k个数建立一个最小堆,然后把根元素取出,该根元素就是最小数,然后将第k+1个数放入堆中,因为第二小的数字肯定在下标为1到k+1的位置范围内,所以调整最小堆之后,根元素就是第二小元素,

2015-10-22 22:03:24 504

空空如也

空空如也

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

TA关注的人

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