C++基础知识小记
最近在帮华为接口人研究自动化部署项目AutoDeploy,把代码发给我了,不过都是用C++写的,自己虽然在大学也学了一学期的C++不过也是很菜鸟,只是学了基本语法,还远未达到实战项目,不管怎么说就是撸起袖子就是干,问了下中软其他项目组搞自动化的同事他们组用的是python来做自动化部署,自己也上网也搜了下一些开源的框架,以及自动化部署工作流程,也大致了解了下现在项目的工作流程。现在的项目大致的流程是部署一个ftp服务器用来放置要部署的文件,然后客户端通过ssh登录到ftp服务器,将文件下载到客户端,然后执行cmd命令部署应用。主要涉及了3大知识点:1.C++实现ftp登录 2.C++从ftp服务器下载文件或文件夹 3.执行cmd命令实现部署。
这两天大致的把流程、代码浏览了一下,在看代码的过程中发现大学学的算是皮毛吧。与实战的还是有不一样的地方。也可能是自己没学那么精通。
一、C++中main和_tmain
刚看项目的时候不知道从哪看,想着那就从main函数开始吧,可main函数就是没找到,不过找到了一个有点类似的_tmain函数。自己百度了下才发现_tmain()与main()是一样的,_tmain()是为了支持unicode所使用的main一个别名,既然是别名,应该有宏定义过的,在头文件<tchar.h>中可以找到_tmain的宏定#define _tmain main,所以,经过预编译以后, _tmain就变成main了。
二、在_tmain()函数中的argc和argv[]
当我调试程序的时候一直纳闷远程ftp服务的ip地址、用户名、密码、文件路径是怎么加载的,我开始以为是在数据库中,还使用vs打开了sdf类型的数据库,把数据库中的几个表的数据找了个遍然并卵,没有与这些数据沾边的数据,当我右击项目—>属性乱点时找到了相对应的数据,原来在属性—>配置属性—>调试—>命令参数中。自己又上网找了下,原来argc:argument count,表示传入main函数的参数个数,argv 是 argument vector,表示传入main函数的参数序列或指针,并且第一个参数argv[0]一定是程序的名称,并且包含了程序所在的完整路径,所以确切的说需要我们输入的main函数的参数个数应该是argc-1个.argv是指向指针的指针,main函数的第二个参数“char *argv[]“也可以替换为 “char **argv“.
而传参数给main函数有两种方法,第一种方式是在编译环境中设置,右击项目—>属性—>配置属性—>调试—>命令参数,在命令参数中输入,每个参数之间用空格隔开。第二种方式就是使用cmd命令窗体,类似之前在集群redis时使用cmd命令来启动一样传入参数。
三、远程批量部署
今天查了一下开源的自动化部署,向罗工推荐ansible时,罗工要求部署服务器不能依赖其他的,但ansible部署时对window服务器是有限制的,具体可以参考http://www.cnblogs.com/kingleft/p/6391652.html。所以还是只能用AutoDeploy。今天看代码了解了下大致的思路,原来是通过wmi远程控制服务器安装部署应用。wmi这个也是我第一次听到,今天算是涨了姿势。使用wmi可以远程登录、文件拷贝、建立进程、启动服务.可以参考http://blog.csdn.net/iamherego/article/details/11573553。
参考:http://www.cnblogs.com/XiaoJie85/articles/2128111.html
C++基础知识小记的更多相关文章
- EF基础知识小记四(数据库=>模型设计器)
EF基础知识小记三(设计器=>数据库)介绍了如何创建一个空设计器模型,并如何将模型同步到数据库的表中,本文则主要介绍如何将一个存在的数据库同步到模型设计器中.为了能快速的模拟这个过程,给出一下建 ...
- Linq基础知识小记四之操作EF
1.EF简介 EF之于Linq,EF是一种包含Linq功能对象关系映射技术.EF对数据库架构和我们查询的类型进行更好的解耦,使用EF,我们查询的对象不再是C#类,而是更高层的抽象:Entity Dat ...
- EF基础知识小记七(拆分实体到多个表以及拆分表到多个实体)
一.拆分实体到多个表 1.在日常开发中,会经常碰到一些老系统,当客户提出一些新的需求,这些需求需要在原来的表的基础上加一些字段,大多数人会选择通过给原表添加字段的方式来完成这些需求,方法,虽然可行,但 ...
- web基础知识小记
- EF基础知识小记六(使用Code First建模自引用关系,常用于系统菜单、文件目录等有层级之分的实体)
日常开发中,经常会碰到一些自引用的实体,比如系统菜单.目录实体,这类实体往往自己引用自己,所以我们必须学会使用Code First来建立这一类的模型. 以下是自引用表的数据库关系图: ok,下面开始介 ...
- EF基础知识小记五(一对多、多对多处理)
本文主要讲EF一对多关系和多对多关系的建立 一.模型设计器 1.一对多关系 右键设计器新增关联 导航属性和外键属性可修改 2.多对多关系 右键设计器新增关联 模型设计完毕之后,根据右键设计器根据模型生 ...
- EF基础知识小记三(设计器=>数据库)
本文主要介绍通过EF的设计器来同步数据库和对应的实体类.并使用生成的实体上下文,来进行简单的增删查该操作 1.通过EF设计器创建一个简单模型 (1).右键目标项目添加新建项 (2).选择ADO.Net ...
- EF基础知识小记二
1.EF的常用使用场景 (1).维护一个已经存在的数据库,VS提供了工具帮助我们把数据库中的表和视图等对象导入到实体框架. [数据库=>模型(Database First)] (2 ...
- EF基础知识小记一
1.EF等ORM解决方案出现的原因 因为软件开发中分析和解决问题的方法已经接近成熟,然后关系型数据库却没有,很多年来,数据依然是保存在表行列这样的模式里,所以,在面相对象和高度标准化的数据库中产生了一 ...
随机推荐
- java多线程系列15 设计模式 生产者 - 消费者模式
生产者-消费者 生产者消费者模式是一个非常经典的多线程模式,比如我们用到的Mq就是其中一种具体实现 在该模式中 通常会有2类线程,消费者线程和生产者线程 生产者提交用户请求 消费者负责处理生产者提交的 ...
- python3 安装 opencv (转)
Python3支持pip方式自动安装第三方开发包,我们只要打开windows下面的命令行工具,输入如下命令: pip install opencv-python 安装最新的OpenCV3.3开发包 p ...
- 结合OPENSIFT源码详解SIFT算法
平台:win10 x64 +VS 2015专业版 +opencv-2.4.11 + gtk_-bundle_2.24.10_win32 参考博客:https://www.cnblogs.com/cql ...
- iOS:使用Github托管自己本地的项目代码方式一:(Xcode方式:开发工具Xcode配置Git,由Xcode-->Source Control-->Commit)
管理代码的地方主要有:Github(国外流行).CocoaChina.Cocoa4App.中国开源社区.CSDN.博客园.简书等等..... 现在主要介绍如何使用Github托管自己的项目代码. 尊重 ...
- 2019.02.11 bzoj1568: [JSOI2008]Blue Mary开公司(线段树)
传送门 题意简述:维护整体加一条线段,求单点极值. 思路: 直接上李超线段树维护即可. 代码: #include<bits/stdc++.h> #define ri register in ...
- pycharm 如何进行全部搜索
界面里面先按ctrl F 弹出搜索页面 在搜索框内连续按两次shift shift可以搜索全文
- 2017-2018-1 20155326信息安全系统设计基础》嵌入式C语言课上考试补交
2017-2018-1 20155326信息安全系统设计基础>嵌入式C语言课上考试补交 PPT上的例子 已知位运算规则为: &0 --> 清零 &1 --> 不变 | ...
- Python学习第一章
1.Python保留字即是关键字,我们不可以把他们当作任何标识符名称. python的标准库提供了一个keyword模板,可以输出当前版本的关键字: >>>import keywor ...
- POJ2516K次费用流建图
Description: N个订单(每个订单订K种商品),M个供应商(每个供应商供应K种商品),K种商品,后N行,表示每一个订单的详细信息,后M行表示每个供应商供应的详细信息,后K 个N * M的矩阵 ...
- cobub razor 安装及使用
server端安装及配置 apache2 + Mysql5.7 + php7 + redis 参见:http://docs.cobub.com/pages/viewpage.action?pageId ...