include

dup与dup2函数

試著忘記壹切 提交于 2020-03-20 12:30:09
依赖的头文件 #include <unistd.h> 函数定义 int dup(int oldfd); int dup2(int oldfd, int newfd); 函数作用 dup和dup2都可用来复制一个现存的文件描述符,使两个文件描述符指向同一个file结构体。 如果两个文件描述符指向同一个file结构体,File Status Flag和读写位置只保存一份在file结构体中,并且file结构体的引用计数是2。 如果两次open同一文件得到两个文件描述符,则每个描述符对应一个不同的file结构体,可以有不同的File Status Flag和读写位置。 实战 需求:在代码中执行2次printf("hello Linux\n"),前一次输入到world文件中,后一次输入到屏幕上 #include <unistd.h> #include <sys/types.h> #include <sys/stat.h> #include <fcntl.h> #include <stdio.h> void file_Redirect() { //先备份现场 int outfd = dup(1); //先做重定向 int fd = open("world", O_WRONLY|O_CREAT,0666); //标准输出到重定向fd到对应的文件 dup2(fd, 1); printf(

iOS中@class #import #include 简介

心不动则不痛 提交于 2020-03-20 07:44:26
[转载自:http://blog.csdn.net/chengwuli125/article/details/9705315] 一、解析 很多刚开始学习iOS开发的同学可能在看别人的代码的时候会发现有部分#import操作写在 .m 文件中,而 .h 文件仅仅使用@class进行声明,不禁纳闷起来,为什么不直接把#import放到h文件中呢? 这是因为 .h 文件在修改后,所有 #import 该 .h 文件的所有文件必须重 新Build,因此,如果把 #import 写在 .h 文件中,#impor t该 .h 文件的文件也就会产生不必要的编译,增加编译时间,特别是在项目文件多的情况 下。想象一下,如果只是修改一个 .h 文件而导致上百个文件不必要的编译,那是一件多么让人纠结的事情。。。对于@class只是告诉编译器有这个class,请不要报错或警告,因此不会给编 译造成影响。 二、#import同class之间的区别 在ios中我们经常会在.h和.m中引入一些类啊等等一般用的是#import来进行声明,你们可能也见到在.h文件进用@class来声明的,那么#import和@class进行声明 到底有什么的区别呢?   1. import会包含这个类的所有信息,包括实体变量和方法,而@class只告诉编译器,声明的类的名称,至于这些类是如何定义的,暂时不用考虑,所以在

native关键字(本地方法)、 java调用so动态链接库

半世苍凉 提交于 2020-03-19 00:09:12
Java native关键字 一. 什么是Native Method 简单地讲,一个Native Method就是一个java调用非java代码的接口。一个Native Method是这样一个java的方法:该方法的实现由非java语言实现,比如C。这个特征并非java所特有,很多其它的编程语言都有这一机制,比如在C++中,你可以用extern "C"告知C++编译器去调用一个C的函数。 "A native method is a Java method whose implementation is provided by non-java code." 在定义一个native method时,并不提供实现体(有些像定义一个java interface),因为其实现体是由非java语言在外面实现的。,下面给了一个示例: package java.lang; public class Object { ...... public final native Class<?> getClass(); public native int hashCode(); protected native Object clone() throws CloneNotSupportedException; public final native void notify(); public final

AOJ 756.电梯

依然范特西╮ 提交于 2020-03-18 15:09:54
电梯 Time Limit: 1000 ms Case Time Limit: 1000 ms Memory Limit: 64 MB Total Submission: 21 Submission Accepted: 13 Description 在城市的高层建筑物中,只有一部电梯,由N个正整数组成一个请求列表,列表中的数字表示电梯将在哪层停,电梯按列表顺序依次停靠。电梯每上行一层需要 花6秒时间,每下行一层需要花4秒时间,电梯每停一次需要用时5秒。 对于给定的请求列表,计算完成所有请求需要花费的时间,不考虑优先顺序,电梯从第0层开始,完成所有请求后又回到第0层。 Input 包含多组数据,每组数据占一行,其中第一个正整数N表示请求列表中有N个数据,接下来是N个整数,如果N=0,则表示输入结束。 Output 对每组数据,输出所有请求的总时间。 Sample Input Original Transformed 1 2 3 2 3 1 0 Sample Output Original Transformed 17 41 直接模拟电梯的运行即可 AC代码: GitHub 1 /* 2 By:OhYee 3 Github:OhYee 4 HomePage:http://www.oyohyee.com 5 Email:oyohyee@oyohyee.com 6 Blog:http:/

【算法学习】单调队列

自闭症网瘾萝莉.ら 提交于 2020-03-18 13:54:47
基础模板 求区间最大值最小值之差在[L,R]范围内的最长区间长度 int l=1; int l1=1,r1=0; int l2=1,r2=0; int ans=0; for(int r=1;r<=n;r++){ //删除队尾元素再入队,使满足单调性 while(l1<=r1 && a[r]>a[mxq[r1]]){ r1--; } mxq[++r1]=r; while(l2<=r2 && a[r]<a[mnq[r2]]){ r2--; } mnq[++r2]=r; //队首元素只能用来维护max和min的最大差值 while(l<=r && l1<=r1 && l2<=r2 && a[mxq[l1]]-a[mnq[l2]]>k){ l++; //删去队头无效元素 while(l1<=r1 && mxq[l1]<l){ l1++; } while(l2<=r2 && mnq[l2]<l){ l2++; } } //根据最小差值的限制,更新答案 if(l1<=r1 && l2<=r2 && a[mxq[l1]]-a[mnq[l2]]>=m){ ans=max(ans,r-l+1); } } 单调队列常用作有大小限制,带删除操作的优先队列?可用来优化dp,或其他类似状态转移。 例题 HDU3530 即上面的模板题 HDU3706 题意 给定 \(n\) , \(A\) , \(B\)

[Offer收割]编程练习赛9,10

送分小仙女□ 提交于 2020-03-18 07:03:24
题目1 : 闰秒 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 计算机系统中使用的UTC时间基于原子钟,这种计时方式同“地球自转一周是24小时”的计时方式有微小的偏差。为了弥补这种偏差,我们偶尔需要增加一个“闰秒”。 最近的一次闰秒增加发生在UTC时间2016年的最后一天。我们在2016年12月31日23时59分59秒和2017年1月1日0时0分0秒之间增加了这样一秒:2016年12月31日23时59分60秒,记作2016-12-31 23:59:60。 目前一共增加了27次闰秒,具体添加的时间见下表: 给出两个时间,请你判断在考虑闰秒的情况下,这两个时间间隔多少秒。 输入 两个时间各占一行,格式是yyyy-MM-dd HH:mm:ss,范围在1970-01-01 00:00:00至2017-03-12 23:59:59之间。保证第一个时间不晚于第二个时间。 输出 两个时间间隔多少秒。 样例输入 2016-12-31 23:59:59 2017-01-01 00:00:00 样例输出 2 暴力模拟就好了,用ans[2]-ans[1]。 #include <stdio.h> #include <cstring> #include <cmath> using namespace std; typedef long long ll; ll ans[5];

【Caffe】Ubuntu 安装 Caffe gpu版

☆樱花仙子☆ 提交于 2020-03-18 06:12:40
安装环境:Ubuntu 16.04lts 64位, gcc5.4 gpu1050ti,cuda8.0,cudnn5.1.10 1. 安装依赖库 sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libhdf5-serial-dev libboost-all-dev protobuf-compiler sudo apt-get install libatlas-base-dev libgflags-dev libgoogle-glog-dev liblmdb-dev 2. 安装caffe   终端输入命令: git clone git://github.com/BVLC/caffe.git   然后找到caffe文件夹,打开后会发现Makefile.config.example 文件,   这时候将Makefile.config.example复制一份命名为Makefile.config,并打开,将 #USE_CUDNN := 1 # CUDA_DIR := /usr/local/cuda # CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \   #-gencode arch=compute_20,code=sm_21 \

Kingdom of Black and White(模拟)

◇◆丶佛笑我妖孽 提交于 2020-03-18 05:00:12
http://acm.hdu.edu.cn/showproblem.php?pid=5583 题意: 给你一个只含有01的字符串,然后这个串的权值就是每一段连续的0或1的长度的平方和,然后你可以修改一个数,使得这个数变成0,或者使这个数变成1 然后问你最大权值能为多少。 解法:暴力枚举改变每一个联通块,注意当联通块值为1时,需合并3块联通块。 #include<bits/stdc++.h> #include <cstdio> #include <cstring> #include <cmath> #include <algorithm> #include <iostream> #include <string> #include <stdio.h> #include <queue> #include <stack> #include <map> #include <set> #include <string.h> #include <vector> using namespace std; typedef long long ll ; #define int ll #define mod 1000000007 #define gcd(m,n) __gcd(m, n) #define rep(i , j , n) for(int i = j ; i <= n ; i++)

守护进程

房东的猫 提交于 2020-03-17 19:46:14
守护进程: 也就是通常说的Daemon进程,是Linux中的后台服务进程。它是一个生存期较长的进程,通常独立于控制终端并且周期性地执行某种任务或等待处理某些发生的事件. 它可以在Linux系统启动时从启动脚本/etc/rc.d中启动,可以由作业规划进程crond启动,还可以由用户终端(通常是shell)执行。 创建守护进程流程 1. 创建子进程,父进程退出 2. 在子进程中创建新会话 3. 改变当前目录为根目录 4. 重设文件权限掩码 5. 关闭打开的文件描述符 6. 守护进程退出处理 1 #include <sys/param.h> 2 #include <unistd.h> 3 #include <signal.h> 4 #include <sys/types.h> 5 #include <sys/stat.h> 6 #include <stdio.h> 7 #include <stdlib.h> 8 9 void init_daemon() 10 { 11 int pid; 12 int i; 13 if(pid = fork()) exit(0); //父进程,退出 14 else if(pid < 0) exit(1); //fork失败 15 16 /* 子进程继续执行 */ 17 setsid(); //创建新的会话组,子进程成为组长,并与控制终端分离 18 19 /

使用Swagger2Markup 实现导出的API漂亮的HTML和PDF文档

感情迁移 提交于 2020-03-17 09:15:13
使用swagger完整的生成PDF和HTML的漂亮文档终于完工啦,分享如下: 一、先看下生成效果 二、操作步骤 1、修改生成最终文档的索引文件index.adoc,在src/docs/asciidoc目录中,根据自己需要添加章节 include::{generated}/overview.adoc[] include::manual_content1.adoc[] include::manual_content2.adoc[] include::{generated}/paths.adoc[] include::{generated}/security.adoc[] include::{generated}/definitions.adoc[] 2、修改pom.xml的30行地址,改为需要生成文档的系统地址 3、使用命令:mvn clean test 生成接口手册文档 4、生成的的文档路径: 生成HTML文档: target\asciidoc\html 生成PDF文档 : target\asciidoc\pdf 三、完整工程下载地址如下: https://download.csdn.net/download/iamghost007/12247642 来源: CSDN 作者: iamghost007 链接: https://blog.csdn.net/iamghost007