vim跳到指定行

在编辑模式下输入 ngg 或者 nG n为指定的行数(如25) 25gg或者25G 跳转到第25行. 在命令模式下输入行号n : n 如果想打开文件即跳转 vim +n FileName 查看当然光标所在的行 Ctrl+g

HM学习心得3

测试结果的保存、批处理及数据处理 一.测试结果的单一保存 这些天跑了一些程序,发现按照原始状态的话,得到的结果没法保存。刚开始只是跑着玩玩,认为只要把结果截图下来,然后进行处理。后来发现,这样的做法对测试一两个序列还是可以接受的,但当自已在测试多个序列时,工作量实在太大了,浪费了好多时间。于是,就想怎样使测试结果自已保存起来?网上搜了一下,发现了一个函数“freopen”,可以简单的实现测试结果的保存。即,将测试输出直接转化为TXT,保存在工程目录下(与生成解决方案同一路径)。语句具体使用如下:将freopen("filemane.txt","w",stdout)。将这条语句放在主函数(encmain.cpp)所有打印输出的语句之前(如图1所示),就能实现测试结果的TXT保存。 图1 二.批处理 但后来又发现了一个问题,不仅要测试多个序列而且同一个序列的不同QP(量化参数)也要进行测试,每测试完一个序列的一个QP,就要更改命令参数、QP等设置,非常麻烦。于是,在高人的指导下,了解到了——批处理,就能轻松解决这个问题。具体操作如下: 首先在工程目录下(与生成解决方案同一路径)创建一个TXT文本,在里面输入编码器的可执行文件名,两个配置文件名及保存的文件名,格式如图2所示。图2所示是在QP为37、32、27、22下,执行BasketballDrill这个测试序列,并将其分别保存为BasketballDrill_q37等。 图2 将所有要测试的序列及改变QP后的配置文件同行输入 ,然后保存。 再将该TXT文件的后缀名改为.bat。最后,要将序列的配置文件与不同QP的配置文件同时复制到工程目录下(与生成解决方案同一路径)。如图3所示。图3中encoder_intra_main_qp22.cfg\ encoder_intra_main_qp27.cfg\encoder_intra_main_qp32.cfg\encoder_intra_main_qp37.cfg,这四个文件为不同QP下的配置文件。 图3 在编码器的“属性”->“调试”->"命令参数"一栏中,只要输入.bat文件的第一行的配置文件即可。如图4所示: 图4 测试的时候双击该.bat文件即可。 如果要修改该.bat文件,右击选择“编辑”即可。 有一点要注意的是,当程序改动一次,编码器的可执行文件要重新生成一次。 三.数据处理 当大量的序列测试结束后,数据的处理也是一件很费时间的活。幸好在一H265交流群上下到了一个好东西,小软件的名字叫“HMResultHelper.exe”。只要把测试结果的TXT文件放到与该软件同一文件夹下(图5所示),然后双击该软件(或许称为一个可执行文件更好),就能得到一个“HMResults.txt”的文件。该文件包含所有TXT的名称,BR(码率)、PSNR-Y、PSNR-U、PSNR-V、ET(编码时间)总结输入在另一个TXT文件中(图6所示)。现在,只要把所有的同类数据对齐,导入到excel中,就能很快的对数据进行处理了。 图5 图6 图6中,每一行的数据为:第一个为文件名(如BasketballDrill_qp22.txt),第二个为码率,第三个为PSNR-Y,第四个为PSNR-U,第五个为PSNR-V,第六个为编码时间。

java学习笔记之使用MyEclipse写一个简单的登陆界面(二)

之前那个是第一种方法。还有一种方法可以直接在网页之间进行跳转。不需要通过servlet。 1、编写登陆界面。 在WebRoot下新建一个文件夹。demo02。在这个文件夹中编写login.jsp 与 hello.jsp。 2、login.jsp的编写。基本上与前面一种方法相同。只是action那里有所不同。 <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <html> <head> <title>登陆界面</title> </head> <body> <center> <h1>信息系统</h1> <form action="hello.jsp" method="post"> 用户名:<input type="text" name = "name"> <br> 密 码:<input type="password" name = "psw"><br> <input type="submit" value="登陆"> </form> </center> </body> </html> 3、hello.jsp的编写。 <%@ page language="java" pageEncoding="UTF-8"%> <html> <head> <title>用户界面</title> </head> <body> <% String name = request.getParameter("name"); String psw = request.getParameter("psw"); if(name.equals("admin")&&psw.equals("123")){ out.println("登陆成功"); }else{ request.getRequestDispatcher("login.jsp").forward(request, response); } %> </body> </html> 4、启动服务器,运行。结果和第一种方法一样。

c++编码规范(三)

5 内存管理安全 规则5.1:禁止引用未初始化的内存 说明:有些函数如malloc分配出来的内存是没有初始化的,可以使用memset进行清零,或者使用calloc进行内存分配,calloc分配的内存是清零的。当然,如果后面需要对申请的内存进行全部赋值,就不要清零了,但要确保内存被引用前是被初始化的。此外,分配内存初始化,可以消除之前可能存放在内存中的敏感信息,避免敏感信息的泄露。 错误示例:如下代码没有对malloc的y内存进行初始化,所以功能不正确。 /* return y = Ax */ int * Noncompliant(int **A, int *x, int n) { if(n <= 0) return NULL; int *y = (int*)malloc (n * sizeof (int)); if(y == NULL) return NULL; int i, j; for (i = 0; i < n; ++i) { for (j = 0; j < n; ++j) { y[i] += A[i][j] * x[j]; } } return y; }

输入一个链表的头结点,从尾到头反过来打印出每个结点的值

#include <iostream> #include <string.h> #include <stdlib.h> #include <stack> using namespace std; struct Node { int data; struct Node* next; }; struct Node* create_list(int len) { if (len <= 0) return NULL; struct Node* head; struct Node* tmp; struct Node* pre; for (int i=0; i<len; i++) { if (i == 0) { head = tmp = new struct Node; cin >> tmp->data; tmp->next = NULL; pre = tmp; continue; } tmp = new struct Node; cin >> tmp->data; tmp->next = NULL; pre->next = tmp; pre = tmp; } return head; } void visit(const struct Node *head) { if (head == NULL) return; const struct Node *tmp; tmp = head; while (tmp) { cout << tmp->data; tmp = tmp->next; } } void free_list(struct Node *head) { if (head == NULL) return; struct Node *tmp; while (head) { tmp = head; head = head->next; delete tmp; } } int main() { struct Node *head = create_list(5); visit(head); cout << endl; stack<int> sts; struct Node* tmp = head; while (tmp) { sts.

mysql分组取每组前几条记录(排序)

CREATE TABLE `mygoods` ( `goods_id` int(11) unsigned NOT NULL AUTO_INCREMENT, `cat_id` int(11) NOT NULL DEFAULT '0', `price` tinyint(3) NOT NULL DEFAULT '0', `status` tinyint(3) DEFAULT '1', PRIMARY KEY (`goods_id`), KEY `icatid` (`cat_id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; INSERT INTO `mygoods` VALUES (1, 101, 90, 0); INSERT INTO `mygoods` VALUES (2, 101, 99, 1); INSERT INTO `mygoods` VALUES (3, 102, 98, 0); INSERT INTO `mygoods` VALUES (4, 103, 96, 0); INSERT INTO `mygoods` VALUES (5, 102, 95, 0); INSERT INTO `mygoods` VALUES (6, 102, 94, 1); INSERT INTO `mygoods` VALUES (7, 102, 93, 1); INSERT INTO `mygoods` VALUES (8, 103, 99, 1); INSERT INTO `mygoods` VALUES (9, 103, 98, 1); INSERT INTO `mygoods` VALUES (10, 103, 97, 1); INSERT INTO `mygoods` VALUES (11, 104, 96, 1); INSERT INTO `mygoods` VALUES (12, 104, 95, 1); INSERT INTO `mygoods` VALUES (13, 104, 94, 1); INSERT INTO `mygoods` VALUES (15, 101, 92, 1); INSERT INTO `mygoods` VALUES (16, 101, 93, 1); INSERT INTO `mygoods` VALUES (17, 101, 94, 0); INSERT INTO `mygoods` VALUES (18, 102, 99, 1); INSERT INTO `mygoods` VALUES (19, 105, 85, 1); INSERT INTO `mygoods` VALUES (20, 105, 89, 0); INSERT INTO `mygoods` VALUES (21, 105, 99, 1); 说明:

如何使用MyEclipse快速开发图形化界面

对于我这种渣渣级的小白来说,昨天学会了如何使用MyEclipse快速开发界面。快捷方便。 1.首先,下载MyEclipse。我是在网上找的一个扣扣群里面下载的。我下载的这个不需要破解。大家也可以通过其他渠道去下载。网上也是有许多破解方法的。 2.其实和使用eclipse很类似。file-new-java project 输入project name 再在这个文件中新建包 点击包 右键 出现如图所示的选项。然后选择new-other 3.之后,出现如下图所示的选项: 4.选择JFrame。 5.点击 design ,出现如下界面。 6.这个时候,就可以自由设计啦!

输入一个链表的头结点,从尾到头反过来输出每个结点的值

题目:输入一个链表的头结点,从尾到头反过来输出每个结点的值。链表结点定义如下: struct ListNode { int m_nKey; ListNode* m_pNext; }; 这题我目前有两个思路,把这个链表做成反向链表,另一个是用递归的方法。其实还可以用栈来实现,但是考虑到栈比较麻烦就算了。 递归方法: #include<stdio.h> #include<stdlib.h> struct ListNode { int m_nKey; ListNode* m_pNext; }; void Display(struct ListNode *listnode) { if(listnode==NULL) return ; else { Display(listnode->m_pNext); printf("%d ",listnode->m_nKey); } } int main() { struct ListNode *listnode ; listnode=(struct ListNode *)malloc(sizeof(struct ListNode)); listnode->m_nKey=10; listnode->m_pNext=NULL; struct ListNode *temp; temp=(struct ListNode *)malloc(sizeof(struct ListNode)); temp->m_nKey=5; temp->m_pNext=listnode; listnode=temp; Display(listnode); getchar(); return 0; } 链表反转 #include<stdio.h> #include<stdlib.h> struct ListNode { int m_nKey; ListNode* m_pNext; }; struct ListNode * ReverNode( struct ListNode *listnode ) { if(listnode==NULL ) return NULL; struct ListNode *pre=NULL; struct ListNode *temp=listnode; struct ListNode *p_temp=listnode; while(p_temp!

Spring MVC Controller与jquery ajax请求处理json

在用 spring mvc 写应用的时候发现jquery传递的【json数组对象】参数后台接收不到,多订单的处理,ajax请求: Java代码 var cmd = {orders:[{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"1"}, {"goodsId":"2"}, {"goodsId":"3"}]},{"storeId":"0a1", "address":"西斗门路2号", "goods":[{"goodsId":"4"}, {"goodsId":"4"}, {"goodsId":"5"}]}]} $.ajax({ url : url, type : "POST", datatype:"json", data : cmd, success : function(data, stats) { if (stats == "success") { // window.location.href="/yc" } }, error : function(data) { alert("请求失败"); } }); 开始如何传后台用 @RequestParam 去接收如何都接不到,分析下请求头,原来是json格式没转换 Java代码 Origin:http://localhost Referer:http://localhost/test/myorder User-Agent:Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.1 (KHTML, like Gecko) Chrome/21.0.1180.89 Safari/537.1 X-Requested-With:XMLHttpRequest Form Dataview URL encoded orders[0][storeId]:0a1 orders[0][address]:西斗门路2号 orders[0][goods][0][goodsId]:1 orders[0][goods][1][goodsId]:2 orders[0][goods][2][goodsId]:3 orders[1][storeId]:0a1 orders[1][address]:西斗门路2号 orders[1][goods][0][goodsId]:4 orders[1][goods][1][goodsId]:4 orders[1][goods][2][goodsId]:5 Response Headersview source Content-Length:1051 Content-Type:text/html;charset=utf-8 Date:Mon, 26 Nov 2012 16:10:07 GMT Server:Apache-Coyote/1.

Android截图命令screencap

查看帮助命令 bixiaopeng@bixiaopeng ~$ adb shell screencap -v screencap: invalid option -- v usage: screencap [-hp] [-d display-id] [FILENAME] -h: this message -p: save the file as a png. -d: specify the display id to capture, default 0. If FILENAME ends with .png it will be saved as a png. If FILENAME is not given, the results will be printed to stdout. 注意: 如果文件名以.png结尾时,它将保存为png文件 如果文件名没有给出,则结果被会被输出到stdout 截图保存到SD卡里再导出 $ adb shell screencap -p /sdcard/screen.

JS只弹出一个居中弹出窗口

var newWindow;//定义一个窗口,有利于窗口间的通讯 function makeNewWindow(url) { if (!newWindow || newWindow.closed) { var width = 400; var height = 300; var left = parseInt((screen.availWidth/2) - (width/2));//屏幕居中 var top = parseInt((screen.availHeight/2) - (height/2)); var windowFeatures = "width=" + width + ",height=" + height + ",status,resizable,left=" + left + ",top=" + top + "screenX=" + left + ",screenY=" + top; newWindow = window.open(url, "subWind", windowFeatures); } else { // window is already open, so bring it to the front newWindow.

Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它)

在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionBar框架等等。 下面就来说说经常会使用到通知机制中的通知栏框架(Notificaiton),它适用于交互事件的通知。它是位于顶层可以展开的通知列表。它会时不时的提醒你什么软件该更新了,什么人发你微信消息了等。 (网上看了下,全面介绍的文章不多,所以就萌生了写这篇的念头,随便当作回顾笔记。下面我就通过官方文档、源代码、书上的一些资料汇总下这一块的知识,并通过一个通知栏的汇总DEMO让大家更好的了解这个类的使用,内容有点多,可以根据需求看目录学习)。 Notificaiton状态通知栏: 功能作用 1.显示接收到短消息、即使消息等信息 (如QQ、微信、新浪、短信) 2.显示客户端的推送消息(如有新版本发布,广告,推荐新闻等) 3.显示正在进行的事物(例如:后台运行的程序)(如音乐播放器、版本更新时候的下载进度等) 思维导图结构 思维导图的大体结构(按照各个节点延伸拓展学习) Notificaiton -- service -- BroadcastReceiver -- Intent(flag、Action等属性应用) -- PendingIntent 感慨: 一个Notificaiton通知的拓展使用就要涉及与4大组建的配合,所以学好整体的知识体系。 联系: 1.由于service 是在后台运行,所以它意图做什么我们看不到,可以通过Notificaiton 来显示提醒(如音乐的后台播放)。 2.service服务和BroadcastReceiver广播相结合,在加上Notificaiton 显示(如程序的后台更新)。 3.Intent作为意图处理,和Notificaiton的点击时间紧密结合在了一起,并且与BroadcastReceiver和service的联系也紧密不可以分割。 (service 在后台之后通过BroadcastReceiver来通知Notificaiton 显示相关东西,在通过Intent完成用户的意图操作) 相关文档:Activity启动模式 及 Intent Flags 与 栈 的关联分析 对应的官方链接 设计文档 : 官方: http://developer.android.com/design/patterns/notifications.html 译文: http://adchs.github.io/patterns/notifications.html 使用教程 : http://developer.android.com/training/notify-user/index.html 开发文档 : http://developer.android.com/reference/android/app/Notification.html 大体了解 Notification支持文字内容显示、震动、三色灯、铃声等多种提示形式,在默认情况下,Notification仅显示消息标题、消息内容、送达时间这3项内容。以下就是通知的基本布局。 通知的基本布局: 普通视图: 高度64dp 大试图的通知在展开前也显示为普通视图 元素: 1. 标题 Title/Name 2. 大图标 Icon/Photo 3. 内容文字 4. 内容信息 MESSAGE

适配器模式、装饰器模式、代理模式的区别

适配器 vs 代理模式 适配器改变所考虑的对象的接口,代理模式不能改变所代理对象的接口 装饰器 vs 代理模式 装饰器为所装饰的对象提供增强功能,代理模式对对象的使用施加控制,不提供对象本身的增强功能 适配器 vs 装饰器模式 都是包装模式,适配器把一个API转换成另一个API,装饰器保存被包装的对象的API

CSS网模板

<!DOCTYPE html > <head> <title>标题-CSS网模板</title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta name="keywords" content="关键字" /> <meta name="description" content="关键字描述" /> <link href="css文件路径" rel="stylesheet" type="text/css" /> <script language="javascript" type="text/javascript" src="JS文件路径"></script> </head> <body>内容</body> </html> <!DOCTYPE html > <html xmlns="http://www.w3.org/1999/xhtml" lang="zh-cn"> <head> <title>网站标题 - Admin10000.com </title> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Language" content="zh-CN" /> <meta name="Author" content="网页作者" /> <meta name="Copyright" content="网站版权" /> <meta name="keywords" content="网站关键字" /> <meta name="description" content="网站描述" /> <link rel="Shortcut Icon" href="

libcurl使用示例

简要说明:C++使用libcurl访问"www.baidu.com",获取返回码和打印出http文件 /* * @ libcurl使用示例 * @ 2014.04.29 * @ g++ -o LibCurlFunc LibCurlFunc.cpp -lcurl */ #include <iostream> #include <string.h> #include <curl/curl.h> using namespace std; /* Http请求结束的回调函数 @ 会被调用多次,有下载到数据(http文件)就回调,直到下载完 */ static size_t WriteFunction(void *input, size_t uSize, size_t uCount, void *avg) { /* cout << "[WriteFunction]:" << endl << "input=" << (char*)input << endl << "elementSize=" << uSize << endl << "elementCount=" << uCount << endl;*/ // 将请求返回数据input拷贝到avg中(avg为一开始curl_easy_setopt设置的参) size_t uLen = uSize*uCount; // string &sBuffer = *reinterpret_cast<string *>(avg); // sBuffer.

用pygame写个简单的贪吃蛇游戏

编写游戏无疑是理解面向对象最有效的方法,在学习python面向对象部分的过程中,我尝试写了如下一个简单的贪吃蛇小游戏,作为理解面向对象、事件触发机制、pygame模块的一个途径。OK,废话少说,上代码。 首先介绍页面布局,为了美观,我们把每块蛇的身体定义为14x14像素的矩形,实物为直径14像素的圆。为什么采用14像素这个值呢?因为在身体大小合适的15像素附近,不想用一个奇数导致确定圆心的过程中会有浮点数产生,增加额外的内存消耗。当然您也可以使用16像素balablabla。游戏标题为“Greedy Snake”,窗口大小采用560x560像素,560/14=40,故横向纵向分别可以产生40个贪吃蛇的身体长度。 定义Snake类,包含初始化蛇的位置和蛇移动的初始方向。用一个嵌套列表来存储蛇的身体的位置,初始蛇向右移动,使用复制身体位置的方式移动蛇。 class Snake(object): """This is the snake class, including the initializing, body, eat food, and direction to move.""" def __init__(self): """Using the random module to create a initial snake. The snake has three parts: a head, a body, and a tail.""" self.pos_list = [[42, 42]] self.direction = 'R' def posList(self): "Return all the points of the snake." return self.pos_list def changeDirection(self, direction): "Change the direction of the snake.

libcurl,CURLOPT_POSTFIELDS的内容变乱码或少一字节

今天写了一段代码调用libcurl库的,post的数据都会变成乱码,或者少一字节后来发现实变量有效范围的问题. 错误代码: //...... if( NULL!=pszHttpBody ){ const std::string strPostData = pszHttpBody; if( strPostData.size() ){ ErrCode = curl_easy_setopt( m_curl, CURLOPT_POSTFIELDSIZE, strPostData.size() ); ErrCode = curl_easy_setopt( m_curl, CURLOPT_POSTFIELDS, strPostData.c_str() ); } } //...... ErrCode = curl_easy_perform( m_curl ); 正确代码: //...... std::string strPostData; if( NULL!=pszHttpBody ){ strPostData = pszHttpBody; if( strPostData.size() ){ ErrCode = curl_easy_setopt( m_curl, CURLOPT_POSTFIELDSIZE, strPostData.size() ); ErrCode = curl_easy_setopt( m_curl, CURLOPT_POSTFIELDS, strPostData.c_str() ); } } //...... ErrCode = curl_easy_perform( m_curl ); 问题出在变量strPostData,在错误代码中,if结束变量就释放了CURLOPT_POSTFIELDS指向了一个野指针.

postgresql安装及常见错误处理

postgresql安装及常见错误处理 一、安装说明 最近,由于业务需要,我抛弃了一直使用的mysql数据库,开始转向postgresql数据库,至于为什么选择postgresql?肯定是postgresql比mysql更强大,对于postgresql的优点,就不在此赘述,大家可以google下。 本例中安装的postgresql版本为9.3.2,安装方式为源码安装,安装环境为Centos-6.4-x86_64。 二、安装 1.下载postgresql: 本例中安装的方式为源码安装,读者可以到官方网址:http://www.postgresql.org/ftp/source/v9.3.2/进行下载 2.解压文件: tar -zxvf postgresql-9.3.2.tar.gz 3.进入解压目录并配置参数 进入解压目录:cd postgresql-9.3.2 创建安装目录:sudo mkdir /opt/postgresql-9.3.2(依你习惯而定) 配置安装参数:./configure --prefix=/opt/postgresql-9.3.2 注:在这一步,相信很多同学会发生一些错误,如果发生了,请参看下面"三、常见错误说明"部分来解决她。 4.编译: make 5.安装: sudo make install 6.创建用户组和用户: 创建用户组:sudo groupadd postgresql 创建用户:sudo useradd -gpostgresql postgresql 为了方便管理,在此创建了postgresql用户组以及postgresql用户,以后可以通过postgresql用户来管理postgresql数据库。 7.创建数据库库文件存储目录并给postgresql用户赋予权限: 进入数据库安装目录:[zhu@zhu postgresql-9.3.2]$ cd /opt/postgresql-9.3.2 创建data目录:[zhu@zhu postgresql-9.3.2]$ sudo mkdir data 给postgresql用户赋予权限:sudo chown postgresql.postgresql data 8.添加环境变量: 9.初始化数据库目录: 首先,要切换用户:su postgresql 如果没有配置密码,先给postgresql配置密码:sudo passwd postgresql 初始化数据:[postgres@zhu postgresql-9.3.2] bin/initdb -D data 10.启动数据库: 这里通过postmaster脚本启动:postgresql安装及常见错误处理 [postgres@zhu postgresql-9.3.2] bin/postmaster -D /opt/postgresql-9.3.2/data 启动成功后,可以看到如下提示:

Java常见问题和解决办法

1.windows下的编译器问题: 问题:'javac' is not recognized as an internal or external command, operable program or batch file 解决: 这个错误提示表明Windows找不到Java编译器(javac),所以我们要告知Windows改如何去找到javac这个编译工具。( 这里假设你已经成功安装了JDK在C:\jdk1.7.0)在命令窗口中,我们可以使用绝对路径来访问javac编译器,如在命令行提示符下输入C:\jdk1.7.0\bin\javac HelloWorldApp.java 使用绝对路径会比较麻烦,因为每次调用javac和java工具时都必须输入它们的完整路径,所以我们建议你通过更新环境变量PATH来实现。 在windows下为javac和java等JDK工具添加环境变量支持的步骤如下: 1)右击我的电脑-》属性-》高级系统设置-》环境变量 找到系统变量中的PATH(或者path)变量,点击编辑在变量值的最后面添加:;F:\DevelopmentTools\Java\jdk1.7.0_51\bin,这里应该根据你JDK的安装路径来添加,注意不要漏掉最前面的那个分号,且必须为英文输入法下的!! 环境变量设置成功后我们即可以直接使用javac及java了,检查是否添加成功,我们可以在命令行下直接输入java及javac即可验证,若显示下图即表示环境变量设置成功: 2.windows下的运行时错误: 问题:Exception in thread "main" java.lang.NoClassDefFoundError: HelloWorldApp 解决:这个错误提示表明系统找不到你的类文件,即HelloWorldApp.class字节码文件。所以我们必须把工作目录切换至HelloWorldApp.class所在目录或者把HelloWorldApp.class复制到当前工作目录下。切换工作目录:比如我的HelloWorldApp.class文件放在 C:\java,所以我通过输入cd c:\java即可切换工作目录至HelloWorldApp.class所在目录,此时再次输入java HelloWorldApp即可成功获得结果。 问题:Could not find or load main class HelloWorldApp.class 解决:这个错误在初学者中会经常出现,由于我们在运行文件时把.class后缀名也加上了如java HelloWorldApp.class,正确的做法应该是: java HelloWorldApp 。请记住:java启动器java的参数仅仅是类文件的文件名!这里就是HelloWorldApp 问题:Exception in thread "main" java.lang.NoSuchMethodError: main 解决:Java虚拟机(JVM)要求你所运行的类文件必须提供入口函数main,这个错误表明你所要启动的类文件缺失main方法,造成的原因可能是语法 错误或者直接是缺少了main方法;

在linux中安装gdb遇到的问题

检查是否安装gdb :rpm -qa|grep gdb 没有gdb eggdbus-0.6-3.el6.i686 gdbm-1.8.0-36.el6.i686 1.gdb的获取:http://www.gnu.org/software/gdb/download/ http://ftp.gnu.org/gnu/gdb (mirrors) ftp://sourceware.org/pub/gdb/releases/ (mirrors). 选择第一个网址,我的./configure出错,于是下载第二个,对于我的系统,是可用的。 2.gdb的安装:解压后,./configure make make install 在./configure中,遇到问题 configure: error:no termcap library found make[1]: *** [configure-gdb] Error 1 make: *** [all] Error 2 认识termcap:https://www.gnu.org/software/termutils/manual/termcap-1.3/html_mono/termcap.html 下载 termcap:http://ftp.gnu.org/gnu/termcap/ 安装termcap:tar -zxvf termcap-1.3.1.tar.gz cd termcap-1.3.1 ./configure make make install 安装termcap后,继续安装gdb。其中,安装第一次,失败,于是,make clean,make,make install,成功。 3.gdb安装成功:gdb -v GNU gdb (GDB) 7.7 Copyright (C) 2014 Free Software Foundation, Inc.