GT

G++编译期间的四个过程

自古美人都是妖i 提交于 2020-04-06 15:15:58
编写文件mian.cpp,代码示例是 https://www.cnblogs.com/zjiaxing/p/5557549.html 中的。 1 #include <iostream> 2 using namespace std; 3 #define pi 3.14 4 static int t = 1; 5 //这个注释是用来解释g++ -E预处理的过程的 6 int main() 7 { 8 cout<<"Hello world: the t+pi" << t+pi<<endl; 9 return 0; 10 } 第一步 预处理 执行如下 g++ -E main.cpp > main.i 会生成预处理文件,可以打开看看,一共生成了18150行,截取前十行如下 # 1 "main.cpp" # 1 "<built-in>" # 1 "<command-line>" # 1 "/usr/include/stdc-predef.h" 1 3 4 # 1 "<command-line>" 2 # 1 "main.cpp" # 1 "/usr/local/include/c++/5.4.0/iostream" 1 3 # 36 "/usr/local/include/c++/5.4.0/iostream" 3 # 37 "/usr/local/include/c++/5.4.0

工欲善其事,必先利其器——DevOps中如何管理工具包

谁说我不能喝 提交于 2020-04-06 15:11:49
一、背景 作为DevOps交付流水线的开发者,为支持CI/CD中各项任务的自动化,都需要依赖多种包管理工具来下载各种相关的工具,比如针对产生最终交付件的构建过程,就需要在构建流程的第一步,自动地把相关工具,如Curl、wget、Maven、Gradle、npm等等,下载到CI服务器。这些工具的下载,通常都需要依靠对应的公网服务器和包管理工具来支持。而这样通过公网来下载工具,有时会遇到稳定性的问题,也就是所谓的环境问题,导致工具下载失败,进而导致构建任务的失败。因此,我们需要引入新的技术来克服这些问题,保证工具包下载的稳定和可靠。 二、工具包管理的痛点——缺乏稳定性 通常,我们会使用各种各样的包管理工具来帮助我们下载和管理这些工具包,如Windows上的Chocolatey,Mac/Linux上的Homebrew,还有npm、Yum、Debian、Docker等等。可是,有时我们通过这些包管理工具来下载工具包时,会碰到意外的5xx服务器错误。而更多的时候,通过这些包管理工具来下载会非常的慢。这些问题在我们使用自动化构建工具(如Travis CI、Jenkins、Gitlab CI,等等)来实现持续集成CI的时候,会被成千上百倍地放大。一种解决办法就是在碰到这些环境问题时,通过手动运行构建的方式进行补救,当然,这只是指标不治本。同时,在网络访问有限制的时候

C/C++ 第八周串和数组 (一)稀疏矩阵的三元组表示的实现及应用 项目4—(2)

故事扮演 提交于 2020-04-06 15:02:16
/* *Copyright (c) 2017,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:项目4-稀疏矩阵的三元组表示的实现及应用(1) *作 者:黄士胜 *完成日期:2017年10月24日 *版 本 号:v1.0 * 问题: 建立稀疏矩阵三元组表示的算法库 */ 主函数代码如下: #include <stdio.h> #include "../tup.h" bool MatAdd(TSMatrix a,TSMatrix b,TSMatrix &c) { int i,j; ElemType va,vb,vc; if (a.rows!=b.rows || a.cols!=b.cols) return false; //行数或列数不等时不能进行相加运算 c.rows=a.rows; c.cols=a.cols; //c的行列数与a的相同 c.nums=0; for(i=0; i<M; i++) for(j=0; j<N; j++) { Assign(a,va,i,j); Assign(b,vb,i,j); vc=va+vb; if(vc) Value(c,vc,i,j); } return true; } int main() { TSMatrix ta,tb,tc; int A[M][N]= { {0,0,1,0,0,0,0}, {0,2,0

第7周 【项目5】 排队看病模拟

雨燕双飞 提交于 2020-04-06 14:57:31
/* *Copyright (c)2017,烟台大学计算机与控制工程学院 *All rights reservrd. *作者:李欣豪 *完成时间:2017年12月14日 *版本号:v1.0 *问题描述: 编写一个程序,反映病人到医院看病,排队看医生的情况。在病人排队过程中,主要重复两件事: (1)病人到达诊室,将病历本交给护士,排到等待队列中候诊。 (2)护士从等待队列中取出下一位病人的病历,该病人进入诊室就诊。 要求模拟病人等待就诊这一过程。程序采用菜单方式,其选项及功能说明如下: (1)排队——输入排队病人的病历号,加入到病人排队队列中。 (2)就诊——病人排队队列中最前面的病人就诊,并将其从队列中删除。 (3)查看排队——从队首到队尾列出所有的排队病人的病历号。 (4)不再排队,余下顺序就诊——从队首到队尾列出所有的排队病人的病历号,并退出运行。 (5)下班——退出运行,提示未就诊的病人明天再来。 编辑代码如下: #include <stdio.h> #include <malloc.h> typedef struct qnode { int data; struct qnode *next; } QNode; /*链队结点类型*/ typedef struct { QNode *front,*rear; } QuType; /*链队类型*/ void SeeDoctor()

配置Spring项目输出JSON到LogStash或者使用FileBeat收集上传到ELK

我是研究僧i 提交于 2020-04-06 14:45:07
一、使用LogStash 在项目中添加Gradle依赖,然后Sync项目: "net.logstash.logback:logstash-logback-encoder:4.11", 或者使用Maven: <!-- https://mvnrepository.com/artifact/net.logstash.logback/logstash-logback-encoder --> <dependency> <groupId>net.logstash.logback</groupId> <artifactId>logstash-logback-encoder</artifactId> <version>4.11</version> </dependency> 然后添加配置文件: <?xml version="1.0" encoding="UTF-8"?> <configuration> <contextName>${HOSTNAME}</contextName> <property name="LOG_PATH" value="/var/log" /> <springProperty scope="context" name="appName" source="spring.application.name" /> <springProperty scope="context"

Linux中文件加锁

时光毁灭记忆、已成空白 提交于 2020-04-06 14:15:40
/proc/locks andrew@andrew-Thurley:/dev$ cat /proc/locks 1: POSIX ADVISORY WRITE 8968 08:01:11666907 1073741825 1073741825 2: POSIX ADVISORY READ 2433 08:01:11798469 128 128 .. . 35: FLOCK ADVISORY WRITE 1436 00:1a:7 0 EOF 51: FLOCK ADVISORY WRITE 1036 00:16:763 0 EOF 使用 ps -p PID 查看进程的相关信息 andrew@andrew-Thurley:/dev$ ps -p 8968 PID TTY TIME CMD 8968 ? 00:00:02 chrome 从上面的输出可以看出持有的锁的程序是 chrome ,即 google 浏览器 在 /dev 我下搜索主设备号为 8 次设备号为 1 的设备,是 /dev/sda1 andrew@andrew-Thurley:/dev$ ls -li /dev/sda1 | awk ' $6 =8' 351 brw-rw---- 1 root disk 8 1 12月 22 13:13 /dev/sda1 查看设备 /dev/sda1 的挂载点,并在该部分文件系统中搜索

字节头条的一道代码题,面试题

拟墨画扇 提交于 2020-04-06 14:04:07
题目: 有一个键盘,只有a-z的26个英文字母的输入按键,现在键盘有两个按键坏了, 按i键,会退格,等同于常规键盘的backspace键, 按o键,会撤回上一步,效果等同于win系统的ctrl+z, 要求实现一个方法,模拟键盘的输出逻辑 思路: 先定义一个list类型的stack,对输入的字符串进行处理, 处理完成后,stack中只有常规字母,和“i”(就是删除) 然后再对上一步的list进行循环,处理, def getBoard(strs): stack = [] result=[] for s in strs: if s=="i" : stack.append("back") elif s=="o" and len(stack)>0: stack.pop() else: stack.append(s) for action in stack: if action=="back" and len(result)>0: result.pop() else: result.append(action) return "".join(result) if __name__=="__main__": print(getBoard("zijietiaodong")) 有什么更好的办法大家可以提出来呀~ 点赞 收藏 分享 文章举报 那一年-漫天雪 发布了56 篇原创文章 · 获赞 20 ·

Tensorflow的StreamExecutor编程

瘦欲@ 提交于 2020-04-06 13:56:07
首先了解一下结构化编译器前端Clang。 背景与概览 Low Level Virtual Machine (LLVM) 是一个开源的编译器架构,它已经被成功应用到多个应用领域。Clang ( 发音为 /klæŋ/) 是 LLVM 的一个编译器前端,它目前支持 C, C++, Objective-C 以及 Objective-C++ 等编程语言。Clang 对源程序进行词法分析和语义分析,并将分析结果转换为 Abstract Syntax Tree ( 抽象语法树 ) ,最后使用 LLVM 作为后端代码的生成器。 Clang 的开发目标是提供一个可以替代 GCC 的前端编译器。与 GCC 相比,Clang 是一个重新设计的编译器前端,具有一系列优点,例如模块化,代码简单易懂,占用内存小以及容易扩展和重用等。由于 Clang 在设计上的优异性,使得 Clang 非常适合用于设计源代码级别的分析和转化工具。Clang 也已经被应用到一些重要的开发领域,如 Static Analysis 是一个基于 Clang 的静态代码分析工具。 本文将简单介绍 Clang 的背景知识和功能特性,并通过一个小例子介绍如何使用 Clang 的库来编写一个小程序来统计源代码中的函数。 Clang 的开发背景 由于 GNU 编译器套装 (GCC) 系统庞大,而且 Apple 大量使用的 Objective-C

springboot 部署

淺唱寂寞╮ 提交于 2020-04-06 13:55:49
作者:https://my.oschina.net/watsonos/blog/1647708 springboot的应用打包默认是打成jar包,并且如果是web应用的话,默认使用内置的tomcat充当servlet容器,但内置的tomcat有时候并不满足我们的需求,当我们需要把springboot的jar应用打包成war包并在外部tomcat中部署时,默认的设置就需要更改了。 习惯SSM开发的同学可能会疑惑,不是直接打成war包然后扔到到tomcat的webapp下就行了的吗?然而,springboot默认的设置是:如果在类路径下有tomcat相关类文件,就会以内置tomcat进行启动,不管你是不是把war包扔到外置的tomcat下启动。 要把springboot应用打包成war包并且能够在外部tomcat下启动,需要对项目进行以下改造: 1、在pom.xml文件中把打包方式改成war <packaging>war</packaging> 2、添加maven的war打包插件如下 <warName>可以给war包起个好名字,方便部署后访问使用。 该配置可忽略,默认的打包名称为"name-1.0-SNAPSHOT",其中的name是项目(文件夹)名称。 使用<warName>给war包起名字后,其实是把打包结果复制了一份并根据该名字重命名了而已,默认打的war包依然可以在打包路径找到

mysql导出与导出远程操作

纵饮孤独 提交于 2020-04-06 13:49:53
(一)数据库备份: mysqldump -h 10.31.xxx.xxx -u username -p --set-gtid-purged=off --databases dbname --tables tb_table_1 tb_table_2 > backupfile.sql (二)还原数据库 方法一: mysql -h 10.31.xx.xx -u username -p db_name < backupfile.sql 方法二: # mysql -h 10.31.xx.xx -u zxsy_front -p mysql > use db_name mysql > source backupfile.sql (三)创建用户并给用户授权 grant select,insert,update on `db-name`.* to 'newuser'@'%' identified by 'crmpassword'; REVOKE All ON *.* FROM 'newuser'@'%'; 点赞 收藏 分享 文章举报 零度anngle 发布了165 篇原创文章 · 获赞 559 · 访问量 375万+ 私信 关注 来源: oschina 链接: https://my.oschina.net/u/4312361/blog/3216427