第一篇:黑马程序员:eclipse(或者STS)+git+码云的结合使用
黑马程序员:eclipse(或者STS)+git+码云的结合使用
在学到BOS_v2.0这个项目时,会教大家使用git,并且会连接在线仓库“码云”,把代码提交到“码云”上,这也是工作中团队开发必备技能,那么今天就详细来个教程,说说 eclipse(或者STS)+git+码云的结合使用。
一、在开源中国上面新建一个空项目
黑马程序员郑州中心 编著
到这里也就结束了,一个空项目创建完成。
二、将本地项目上传到我们新建的项目中去
2.1在eclipse中新建一个测试项目
2.2 右键team->分享项目
黑马程序员郑州中心 编著
2.3 将项目本身做为仓库,项目下会多一个.Git的文件夹。
黑马程序员郑州中心 编著
2.4 Finish完成之后,项目会发生一些变化。表示我们没有将数据提交到仓库中,下面将代码提交到本地仓库。
黑马程序员郑州中心 编著
图标改变成桶(数据库图标),并且有一个(test master)主分支,说明提交到本地已经成功了,如下图:
2.5将代码上传到云端
黑马程序员郑州中心 编著
黑马程序员郑州中心 编著
黑马程序员郑州中心 编著
黑马程序员郑州中心 编著
右下角如下图,可以看到进度
最后弹出来,点击ok,不出意外的话,我们的项目应该是成功上传了。
黑马程序员郑州中心 编著
最后,刷新云端。可以看到项目已经成功上传了。
三、修改后提交代码到云端
黑马程序员郑州中心 编著
黑马程序员郑州中心 编著
黑马程序员郑州中心 编著
去码云查看已经成功了:
黑马程序员郑州中心 编著
第二篇:黑马程序员C语言教程:QSignalMapper的使用
QSignalMapper信号转发器的使用 适用范围
简单的理解,可以把SignalMapper这个类看成是信号的翻译和转发器,它可以把一个无参数的信号翻译成带int参数、QString参数、QObject*参数或者QWidget*参数的信号,并将之转发。这么一说大家有没有联想到该类的适用范围呢?比如说:我有一堆的button,可以把clicked事件放在一个函数里处理,只要给button编个号或者给button起个名就行了,这样就不用给每个button写一个slot了,岂不是很方便?
使用方法
首先把原始的信号连接到QSignalMapper类的map()槽函数,这样QSignalMapper能在第一时间接收到原始信号;
其次调用setMapping方法建立映射关系,告诉QSignalMapper对象怎样去处理原始信号。(映射关系通过对应一个整数、字符串或者QWidget*实现)
最后通过接收QSignalMapper类转化后的带参信号mapped()与槽函数连接,在槽函数中获得需要的数据,并作出对应的处理。
映射的关系可以通过removeMappings()被移除。
示例:
// 头文件
classWidget:publicQWidget { Q_OBJECT
public: explicitWidget(QWidget*parent=0);~Widget();
publicslots: //自定义槽函数
voidslotClicked(QStringtext);
private: Ui::Widget*ui;QSignalMapper*signalMapper;};// 源文件
Widget::Widget(QWidget*parent): QWidget(parent), ui(newUi::Widget){ ui->setupUi(this);
QStringListtextList;signalMapper=newQSignalMapper(this);// 布局管理器
QVBoxLayout*vLayout=newQVBoxLayout(this);textList<<“北京”<<“上海”<<“广州”<<“南京”<<“天津”;for(inti=0;i<5;++i){ // 动态创建按钮
QPushButton*button=newQPushButton(textList[i]);button->setFixedSize(50,30);//按钮的信号和QSignalMapper类的map()槽函数关联
// 原始信号传递给signalMapper connect(button,SIGNAL(clicked(bool)),signalMapper,SLOT(map()));//设置signalmapper的转发规则, 转发为参数为QString类型的
// 信号,并把textList[i]的内容作为实参传递。
signalMapper->setMapping(button,textList[i]);vLayout->addWidget(button);} //将转发的信号连接到最终的槽函数
connect(signalMapper,SIGNAL(mapped(QString)),this,SLOT(slotClicked(QString)));}
// 自定义槽函数
voidWidget::slotClicked(QStringtext){ QMessageBox::information(this,“ButtonClicked”,text);}
当用户点击不同的按钮,会弹出不同的对话框,对话框中显示的内容为按钮的标题。
第三篇:黑马程序员:使用thinkphp 创建家具网站----第①天
1.thinkphp 在创建前后台时使用不同的文件夹 前台index.php 1.2.3.define('APP_NAME', 'home');define('APP_PATH', './home/');include './ThinkPHP/ThinkPHP.php';
复制代码
后台admin.php
1.2.3.define('APP_NAME', 'admin');define('APP_PATH', './admin/');include 'ThinkPHP/ThinkPHP.php';
复制代码
注释:使用thinkphp3.0 php5.2,创建的前后台分别属于不同的文件夹下,APP_PATH 必须有结尾的/ 2.在home,admin,文件下lib/action 创建空操作,EmptyAction,和空方法_empty();每次输出中文前加header('Content-Type:text/html;charset=utf-8')。防止乱码!
3.建立后台登入界面,写login.inc.php初始化系统session验证!方便每个后台页面载入!
login.inc.php源码
1.2.3.4.5.6.7.8.
session_start();
if(!isset($_SESSION['name_wln'])){ $path=explode('/', __URL__,-1);$path=implode('/', $path);//join()别名 header('location:'.$path.'/login');exit();}else {
9.if($_SESSION['username_wln']!= 'admin'){
10.exit;11.} 12.13.}
复制代码
LoginAction.class.php源码
1.2.3.4.5.6.7.8.9.
class LoginAction extends Action{
public function index(){
header(“content-type:text/html;charset=utf-8”);$this->display();}
public function verify(){
import('ORG.Util.Image');
10.Image::buildImageVerify();11.12.}
13.public function checkLogin(){
14.header(“content-type:text/html;charset=utf-8”);15.$username1=$_POST[uname];16.$userpwd1=$_POST[upwd];17.$user=M('User');18.19.$usernames=$user->where('username=“'.$username1.'”')->find();20.// $usernames=$user->parseFieldsMap($usernames);21.22.if($usernames[userpwd]==md5($userpwd1)){ 23.session_start();
24.$_SESSION['name_wln']=$usernames['name'];
25.$_SESSION['username_wln'] = $usernames['username'];
26.header('location:../../admin.php/index/index');
27.}else { 28.echo
'';
败29.echo 'notok';30.} 31.32.} 33.34.public function OutLogin(){
35.header(“content-type:text/html;charset=utf-8”);36.$_SESSION=array();37.session_destroy();
38.if(isset($_COOKIE[session_name()])){
39.setCookie(session_name(),'',time()-100);40.} 41.echo
'';
理42.} 43.}
复制代码
以上是个人学习之练习的整理笔记,会陆续更新,希望和菜鸟们一起学习,共同进步!
第四篇:黑马程序员C语言教程:C语言:使用容易出错的四个库函数
传智播客C/C++培训专家
使用容易出错的四个库函数
我们知道,C语言中没有定义输入/输出语句,任何一个有用的C程序(起码必须接受零个或多个输入,生成一个或多个输出)都必须调用库函数来完成最基本的输入/输出操作.大多数库函数的使用都不会有什么问题,它们的意义和用法明白而直接,基本上都能正确的使用它们,但也有一些例外情况,如一些常用到的库函数表现出来的行为方式往往有悖于使用者的本意,今天我们就来讨论一些常用到的库函数,以及使用过程中可能出错之处.1.返回整数的getchar 函数 我们先来看一个简单的例子: # include
许多系统中的标准输入/输入库都允许程序打开一个文件,同时进行写入和读取的操作.FILE * fp;fp = fopen(file,”r+”);
上面的例子代码打开了文件名由变量file指定的文件,对于存取权限的设定表明程序希望对这个文件进行输入和输出操作.编程者也许认为,程序一旦执行上述操作完毕,就可以自由的交错进行读出和写入的操作.但事实上并不是我们想象的那样,我们在进行了读操作或者写操作之后,都会改变文件指针的位置,因此,先要同时进行输入和输出操作,必须使用fseek 函数改变文件指针的位置.3.使用errno 检测错误
很多库函数,特别是与操作系统相关的,当执行失败时会通过一个名称为 errno的外部变量,通知程序该函数调用失败.请看下面的额例子: /*调用库函数*/ /*处理错误*/ if(errno)这是一个简单的错误处理程序,看起来没问题,然而却是错误的.出错原因在于,在库函数调用没有失败的情况下,并没有强制要求库函数一定设置errno为0,这样errno 的值就可能是前一个执行失败的库函数设置的值.我们对代码做了一下调整,看似正确,但可能还是错误的: Errno = 0;/*调用库函数*/ if(errno)/*出错处理*/ 原因在于,库函数在调用成功后,即没有强制要求对errno清零,同时也没有禁止设置errno.因为在调用一个函数的时候,可能会在内部调用另一个函数,此时可能设置errno.故,在调用库函数时,我们应该首先检测作为错误指示的返回值,确定程序已经执行失败,然后,在检查errno,来搞清楚出错原因: /* 调用库函数 */ if(返回的错误值)检查errno 4.库函数signal
实际上,所有的c 语言实现中都包括有signal库函数,作为捕获异步事件的一种方式.要使用该库函数,需要在源文件中加上
#include
第五篇:黑马程序员C语言教程: CC++培训专家-预处理命令使用详解
传智播客C/C++培训专家:预处
理命令详解
作为一枚C/C++程序猿,在我们编写和查看C/C++源代码的过程中会遇到各种编译指令,这些指令称为预处理命令。预处理命令虽然不是C/C+的一部分,但却扩展了C程序的设计环境,下面传智播客C/C+培训专家将向大家介绍如何应用预处理程序和注释简化程序开发过程,并提高程序的可读性。
ANSI标准定义的C语言所有预处理命令均以符号#开头,比如我写程序时常用的:
#define,#undef,#include,#if,#else,#elif,#endif,#ifdef,#ifndef, #error 1.#define和 #undef 宏定义命令的一般形式为:
#define[MacroName][MacroValue],示例如下: #defineITHEIMA 传智播客黑马程序员
在源程序中每次遇到ITHEIMA时,均以定义的值传智播客黑马程序员代换它。
在使用该宏时,有以下几点注意事项:
该语句没有分号。在标识符和串之间可以有任意个空格。 定义宏的时候,可以使用之前已经定义好的宏。
如果串长于一行,可以在该行末尾用一反斜杠' '续行。
#defineLONG_STRING“good good study,day day up!” 在定义宏标识符时,字母一般需要大写。 预处理运算符的使用:
#--该符号是“字符串化”的意思,出现在宏定义中的#是把跟在后面的参数转换成一个字符串
#define ERROR_LOG(module)
fprintf(stderr, “error: ”#module“n”)ERROR_LOG(“add”);转换为 fprintf(stderr,“error: ”add“n”);ERROR_LOG(devied =0);转换为 fprintf(stderr,“error: devied=0n”); ##--是连接符号,将多个串连接到一起。char *szStr = “传播播客_黑马程序员”;#define ITCAST(exp)cout < 2.#include 命令#i nclude使编译程序将另一源文件嵌入带有#include的源文件,被读入的源文件必须用双引号或尖括号括起来。例如: #include“stdio.h”或者#include 这两行代码均使用C编译程序读入并编译用于处理磁盘文件库的子程序。将文件嵌入#i nclude命令中的文件内是可行的,这种方 式称为嵌套的嵌入文件,嵌套层次依赖于具体实现。 如果显式路径名为文件标识符的一部分,则仅在那些子目录中搜索被嵌入文件。 例如: #include “../include/head.h” 如果文件名用双引号括起来,则首先检索当前工作目录。如果未发现文件,则在命令行中说明的所有目录中搜索。如果仍未发现文件,则搜索实现时定义的标准目录。例如: include “head.h” 如果文件名被尖括号括起来,则首先在编译命令行中的目录内检索。如果文件没找到,则检索标准目录,不检索当前工作目录。 例如: include
它与#endif之间的代码,否则跳过这些代码。命令#endif标识一个#if块的结束。
跟在#if后面的表达式在编译时求值,因此它必须仅含常量及已定义过的标识符,不可使用变量。表达式不许含有操作符sizeof(sizeof也是编译时求值)。
#else命令的功能有点象C语言中的else;#else建立另一选择(在#if失败的情况下)。注意,#else属于#if块。
#elif命令意义与ELSE IF 相同,它形成一个if else-if阶梯状语句,可进行多种编译选择。#elif 后跟一个常量表达式。如果表达式为true,则编译其后的代码块,不对其它#elif表达式进行测试。否则,顺序测试下一块。
4.#error 命令#error强迫编译程序停止编译,主要用于程序调试。该指令使预处理器发出一条错误消息,该消息包含指令中的文本.这条指令的目的就是在程序崩溃之前能够给出一定的信息。
5.#ifdef 和 #ifndef 条件编译的另一种方法是用#ifdef与#ifndef命令,它们分别表示“如果有定义”及“如果无定义”。# ifdef的一般形式是:
# ifdef macroname statement sequence
#endif #ifdef与#ifndef可以用于#if、#else,#elif语句中,但必须与一个#endif。
define MAX 91 #include
int main(){ #ifdef MAX cout<<“hello,MAX!”< #else cout<<“where is MAX?”< #endif #ifndef LEO cout<<“LEO is not defined”< #endif return 0;} 今天关于预处理命令的知识点传智播客C/C+培训专家就为大家接受到这里, 欢迎大家留言交流.