03 2013 档案

摘要:So what does a declaration look like? For example, if you write:int func();This is a function declaration; it does not provide the body of the function, but it does tell the compiler that it can use this function and expect that it will be defined somewhere.What it Means to Define Something in C and 阅读全文
posted @ 2013-03-31 23:58 JustinYo 阅读(293) 评论(0) 推荐(0) 编辑
摘要:such asvi ~/.bashrc (root默认目录下的bashrc文件)在这个文件中加入:export PATH=/home/homer/android-sdk-linux/platform-tools/:$PATH 阅读全文
posted @ 2013-03-31 22:41 JustinYo 阅读(156) 评论(0) 推荐(0) 编辑
摘要:df -h/-k 阅读全文
posted @ 2013-03-31 21:52 JustinYo 阅读(257) 评论(0) 推荐(0) 编辑
摘要:Ctrl + PageDownfor Next TabCtrl + PageUpfor Previous Tabto move tab left , tryCtrl + Shift + Leftctrl+shift +t opne a new tabctrl+shift + w close the current tabif you knew more ,please tell me.Thanks 阅读全文
posted @ 2013-03-31 21:16 JustinYo 阅读(165) 评论(0) 推荐(0) 编辑
摘要:Ubuntu已经无jdk1.6的源,无法用sudo apt-get install直接安装,下面是手动下载bin包后安装及配置方法。jdk-6u37-linux-x64.bin第一步,到官方网站下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk6u37-downloads-1859587.htmljdk-6u37-linux-x64.bin(64位)第二步,下载完成后开始安装和配置:1、把jdk安装在/usr/lib/jdk下面;root@cofface-desktop:~# sudo chmod 777 jdk-6u3 阅读全文
posted @ 2013-03-31 19:20 JustinYo 阅读(352) 评论(0) 推荐(0) 编辑
摘要:To install a .deb file, simply double click on it, and then select Install PackageAlternatively, you can also install a .deb file by opening a terminal and typing:sudo dpkg -i package_file.deb 阅读全文
posted @ 2013-03-31 19:06 JustinYo 阅读(286) 评论(0) 推荐(0) 编辑
摘要:今天写程序的时候碰到这样的问题:public String[] getPlatformIDList() { Vector result = new Vector(); try { Statement stmt = conn.createStatement(); String sql = "SELECT PlatformID FROM Platform"; rs = stmt.executeQuery(sql); while(rs.next()) { result.add(rs.getString(1)); } if (result.size() > 0) { Stri 阅读全文
posted @ 2013-03-29 15:50 JustinYo 阅读(569) 评论(0) 推荐(0) 编辑
摘要:Does Java pass by reference or pass by value?Why can't you swap in Java?By Tony Sintes, JavaWorld.com, 05/26/00Q:If Java uses the pass-by reference, why won't a swap function work?A:Your question demonstrates a common error made by Java language newcomers. Indeed, even seasoned veterans find 阅读全文
posted @ 2013-03-28 21:04 JustinYo 阅读(510) 评论(0) 推荐(0) 编辑
摘要:302 Found 类似于301,但新的URL应该被视为临时性的替代,而不是永久性的。注意,在HTTP1.0中对应的状态信息是“Moved Temporatily”,而HttpServletResponse中相应的常量是SC_MOVED_TEMPORARILY,而不是SC_FOUND。出现该状态代码时,浏览器能够自动访问新的URL,因此它是一个很有用的状态代码。为此,Servlet提供了一个专用的方法,即sendRedirect。使用response.sendRedirect(url)比使用response.setStatus(response.SC_MOVED_TEMPORARILY)和re 阅读全文
posted @ 2013-03-26 19:41 JustinYo 阅读(10223) 评论(0) 推荐(0) 编辑
摘要:在AndroidMenifest.xml中,常常会有下面的语句:<uses-sdk android:minSdkVersion="4" android:targetSdkVersion="10" android:maxSdkVersion="10" /> 在default.properties中,会看到下面的语句:target=android-10 如果是使用Eclipse的话,还可能会看到这样的警告: Attribute minSdkVersion (4) is lower than the project target 阅读全文
posted @ 2013-03-26 16:29 JustinYo 阅读(419) 评论(0) 推荐(0) 编辑
摘要:在使用手机调试程序的时候出现了java.io.IOException: Unable to open sync connection!这样的异常,我尝试使用拔掉USB然后重新,插入,结果失败。再尝试,关掉USB调试,再重新开启USB调试,结果发现有驱动自动开始安装,安装完成之后,eclipse中device试图出现手机,调试完成,运行测试工程,正确通过。所以,解决java.io.IOException: Unable to open sync connection!方案:关掉USB调试,然后重新开启。 阅读全文
posted @ 2013-03-25 19:39 JustinYo 阅读(385) 评论(0) 推荐(0) 编辑
摘要:最近在多线程编程中多次使用到mutex来互斥,看了下项目的代码,有自己封装的mutex类,也有直接使用boost::mutex的,而boost中关于mutex可谓令人眼花撩换。这里总结一下。 对于mutex和lock,要明确一点,真正起到互斥作用的mutex,而lock可以认为是协助mutex令我们在使用时更方便。搞不清楚二者关系的可以参考这里:从高中一次半夜不冲厕所的经历谈程序 最基础的mu... 阅读全文
posted @ 2013-03-21 16:27 JustinYo 阅读(3240) 评论(0) 推荐(0) 编辑
摘要:Git是什么Git是一个分布式版本控制/软件配置管理软件,原來是linux内核開發者林纳斯·托瓦兹(Linus Torvalds)为了更好地管理linux内核开发而创立的。Git名字缘由林纳斯·托瓦兹自嘲地取了這個名字"git"。在英式英語中指一個愚笨或者不開心的人。[10]“I'm an egotistical bastard, and I name all my projects after myself. First Linux, now git.”其他同类软件比较传统的SVN、CVS 等版本控制系统,只有一个仓库(repository), 阅读全文
posted @ 2013-03-18 01:11 JustinYo 阅读(465) 评论(2) 推荐(1) 编辑
摘要:据说dl-ssl.google.com在大陆被强了,伟大的天朝真是不让人活了,解决方法就是修改C:\Windows\System32\drivers\etc\hosts文件。添加一行:74.125.237.1dl-ssl.google.com 再次下载SDK的时候就会成功啦! 阅读全文
posted @ 2013-03-17 20:21 JustinYo 阅读(140) 评论(0) 推荐(0) 编辑
摘要:下载iso文件ubuntu的下载地址 找到你想要的版本吧,骚年 http://cdimage.ubuntu.com/releases/12.04的下载地址http://cdimage.ubuntu.com/releases/12.04/release/linux amd64也就是64位的linux系统,并不是指amd的cpu专用的,只要是支持64位的cpu都可以装制作U盘安装通过一个不错的老外的工具进行的(绿色版的哟,美的很)。下载的地址如下:http://www.pendrivelinux.com/universal-usb-installer-easy-as-1-2-3/#button最新 阅读全文
posted @ 2013-03-16 22:59 JustinYo 阅读(577) 评论(0) 推荐(1) 编辑
摘要:1 阅读全文
posted @ 2013-03-15 00:39 JustinYo 阅读(137) 评论(0) 推荐(0) 编辑
摘要:设计模式这一个知识点,一直都是东学西学,拼凑起来的,说起来也了解什么意思,但是没有系统的学习过,也没有按照设计模式的思路去写过程序。今天开始要完成这一个任务! 阅读全文
posted @ 2013-03-15 00:25 JustinYo 阅读(164) 评论(0) 推荐(0) 编辑
摘要:java语言中为对象的引用分为了四个级别,分别为 强引用 、软引用、弱引用、虚引用。本文只针对java中的弱引用进行一些分析,如有出入还请多指正。在分析弱引用之前,先阐述一个概念:什么是对象可到达和对象不可到达状态。其实很简单,我举个例子:现在有如下两个类class A class B,在JVM上生成他们两个类的实例分别为 instance a instance b有如下表达式:A a = new A();B b = new B();两个强引用对象就生成了,好吧,那么这个时候我做一下修改:A a = new A();B b = new B(a);B的默认构造函数上是需要一个A的实例作为参数的, 阅读全文
posted @ 2013-03-13 19:00 JustinYo 阅读(1060) 评论(2) 推荐(0) 编辑
摘要:C++要求对一般的内置函数要用关键字inline声明,但对类内定义的成员函数,可以省略inline,因为这些成员函数已经被隐含地指定为内置函数了。 应该注意的是:如果成员函数不在类体内定义,而在类体外定义,系统并不是把它默认为内置函数,调用这些成员函数的过程和调用一般函数的过程是相同的。如果想将这些成员函数指定为内置函数,则应该加inline关键字,如: class studen... 阅读全文
posted @ 2013-03-13 13:33 JustinYo 阅读(9168) 评论(1) 推荐(1) 编辑
摘要:在编写一个小的C++工程的时候 一直出现提示error: macro names must be identifiers 中文大意应该“宏名称必须是标识符”。 检查了代码都没有发现问题 后来发现在头文件的时候 #ifndef 1_h_ #define 1_h_ #endif 定义的宏用了数字开头 将头文件重命名为字母开头,error消失。 猜测是C/C++中变量名不能以数字开... 阅读全文
posted @ 2013-03-13 11:41 JustinYo 阅读(19717) 评论(0) 推荐(0) 编辑
摘要:看代码的时候发现一些类的成员变量的声明里会有mutable出现对比两段代码1.#include "iostream"using namespace std;class ClxTest{public:ClxTest();~ClxTest();void Output() const;int GetOutputTimes() const; private: int m_iTimes;}; ClxTest::ClxTest(){ m_iTimes = 0;} ClxTest::~ClxTest(){} void ClxTest::Output() const{ cout <& 阅读全文
posted @ 2013-03-13 11:04 JustinYo 阅读(1387) 评论(0) 推荐(0) 编辑
摘要:为了查看linux下malloc的实现函数,下载了Glibc的源码文件,可是找不到实现的函数在哪里。看文件名 应该是在malloc/malloc.c里面。发现__libc_malloc的实现比较像。怎么从malloc到__libc_malloc的呢?看到文件里有一个语句有点苗头来看看strong_alias的实现_typeof (name) aliasname 就是定义别名的意思了 至于后面的__attribute__看下面的解释。GNU C的一大特色(却不被初学者所知)就是__attribute__机制。__attribute__可以设置函数属性(Function Attribute)、变量 阅读全文
posted @ 2013-03-12 20:54 JustinYo 阅读(5528) 评论(0) 推荐(0) 编辑
摘要:用途一: 定义一种类型的别名,而不只是简单的宏替换。可以用作同时声明指针型的多个对象。比如: char* pa, pb; // 这多数不符合我们的意图,它只声明了一个指向字符变量的指针, // 和一个字符变量; 以下则可行: typedef char* PCHAR; PCHAR pa, pb; 用途二: 用在旧的C代码中,帮助struct。以前的代码中,声明struct新对象时,必... 阅读全文
posted @ 2013-03-12 19:38 JustinYo 阅读(203) 评论(0) 推荐(0) 编辑
摘要:1.首先我们看第一个例子: [cpp] view plaincopy #include <iostream>using namespace std; typedef char byte; int main() { byte *buffer = new byte[1000]; int *pi = new(buffer)int[10]; pi[0] = 3; cout<<(int)*... 阅读全文
posted @ 2013-03-11 20:35 JustinYo 阅读(429) 评论(0) 推荐(0) 编辑
摘要:单个class的new的重载重载的 new、delete(或者 new[]、delete[])操作符必须是类的静态成员函数(为什么必须是静态成员函数,这很好理解,因为 new 操作符被调用的时候,对象还未构建)或者是全局函数,函数的原型如下:void* operator new(size_t size) throw(std::bad_alloc);// 这里的 size 为分配的内存的总大小void* operator new[](size_t size) throw(std::bad_alloc);void operator delete(void* p) throw();void oper 阅读全文
posted @ 2013-03-11 20:05 JustinYo 阅读(3338) 评论(0) 推荐(0) 编辑
摘要:逆向调试不是逆向执行,而是模拟逆向执行。在打开逆向调试开关后,程序的执行会记录下程序运行的详细状态轨迹(想象一下把图灵机运行时的每一步纸带 的状态记录下来)。这些状态就构成了逆向调试的基础。 逆向调试的预期用处是,因为程序bug的发生处和表现处一般会有距离,那么在程序bug表现处回溯执行,就可以确定地找到bug的真正原因。这可是 很有用的哦,因为这可以避免多次运行程序,有时还徒劳武无功,尤其是在... 阅读全文
posted @ 2013-03-11 19:31 JustinYo 阅读(1363) 评论(0) 推荐(0) 编辑
摘要:C++平台有四种方式动态索求和释放内存 new和delete编译器帮你做的事情 实际上new申请的空间是由全局new ---->::operator new(size) 阅读全文
posted @ 2013-03-11 17:15 JustinYo 阅读(253) 评论(0) 推荐(0) 编辑
摘要:在Windows下,查看环境变量的命令是:set,这个命令会输出系统当前的环境变量。Linux下准确的说是RedHat下应该如何查看呢,命令是:export如果你想查看某一个名称的环境变量,命令是:echo $环境变量名,比如:echo $Oracle_HOMEWindows对应的命令是:set 环境变量名。 阅读全文
posted @ 2013-03-11 16:18 JustinYo 阅读(485) 评论(0) 推荐(0) 编辑
摘要:gdb调试的时候突然就遇到一个问题l xxx.cpp:512 没有问题但是b xxx.cpp:512的时候就会出现Cannot access memory at address 0xxxxx的问题原因是什么? 阅读全文
posted @ 2013-03-11 15:20 JustinYo 阅读(7577) 评论(1) 推荐(0) 编辑
摘要:C++中虚函数与晚绑定的编译器实现编译器到底做了什么实现的虚函数的晚绑定呢?我们来探个究竟。编译器对每个包含虚函数的类创建一个表(称为V TA B L E)。在V TA B L E中,编译器放置特定类的虚函数地址。在每个带有虚函数 的类中,编译器秘密地置一指针,称为v p o i n t e r(缩写为V P T R),指向这个对象的V TA B L E。通过基类指针做虚函 数调用时(也就是做多态调用时),编译器静态地插入取得这个V P T R,并在V TA B L E表中查找函数地址的代码,这样就能调用正确的函数使 晚捆绑发生。为每个类设置V TA B L E、初始化V P T R、为虚函数 阅读全文
posted @ 2013-03-11 13:27 JustinYo 阅读(894) 评论(0) 推荐(0) 编辑
摘要:ELF文件有三种类型:可重定位文件:也就是通常称的目标文件,后缀为.o。共享文件:也就是通常称的库文件,后缀为.so。可执行文件:本文主要讨论的文件格式,总的来说,可执行文件的格式与上述两种文件的格式之间的区别主要在于观察的角度不同:一种称为连接视图(Linking View),一种称为执行视图(Execution View)。elf文件的格式可以通过readelf命令读取出来-a --all 显示全部信息,等价于 -h -l -S -s -r -d -V -A -I. -h --file-header 显示elf文件开始的文件头信息. -l --program-headers --segme 阅读全文
posted @ 2013-03-08 21:07 JustinYo 阅读(616) 评论(0) 推荐(0) 编辑
摘要:int main(int argc, char** argv){return 1;}g++ -S test.cpp生成test.s汇编文件 .file "null-test.cpp" .text .globl main .type main, @functionmain:.LFB0: .cfi_startproc pushq %rbp .cfi_def_cfa_offset 16 .cfi_offset 6, -16 movq %rsp, %rbp .cfi_def_cfa_register 6 movl %edi, -4(%rbp) movq %rsi, -16... 阅读全文
posted @ 2013-03-08 20:33 JustinYo 阅读(7685) 评论(2) 推荐(1) 编辑
摘要:-c 只激活预处理,编译,和汇编,也就是他只把程序做成obj文件 例子用法: gcc -c hello.c 他将生成.o的obj文件-S 只激活预处理和编译,就是指把文件编译成为汇编代码。 例子用法 gcc -S hello.c 他将生成.s的汇编代码,你可以用文本编辑器察看-E 只激活预处理,这个不生成文件,你需要把它重定向到一个输出文件里面. 例子用法: gcc -E hello.c > pianoapan.txt gcc -E hello.c | more 慢慢看吧,一个hello word 也要与处理成800行的代码-o 制定目标名称,缺省的时候,gcc 编... 阅读全文
posted @ 2013-03-08 19:19 JustinYo 阅读(1864) 评论(0) 推荐(0) 编辑
摘要:编译的时候添加#error,就会在编译的时候自动停下来 阅读全文
posted @ 2013-03-07 20:02 JustinYo 阅读(143) 评论(0) 推荐(0) 编辑
摘要:mprotect- set protection on a region of memorySynopsis#include <sys/mman.h>int mprotect(const void *addr, size_t len, int prot);Descriptionmprotect() changes protection for the calling process's memorypage(s) containing any part of the address range in the interval [addr,addr+len-1].addrmu 阅读全文
posted @ 2013-03-07 16:28 JustinYo 阅读(750) 评论(0) 推荐(0) 编辑
摘要:mmap函数是unix/linux下的系统调用,来看《Unix Netword programming》卷二12.2节有详细介绍。mmap系统调用并不是完全为了用于共享内存而设计的。它本身提供了不同于一般对普通文件的访问方式,进程可以像读写内存一样对普通文件的操作。而Posix或系统V的共享内存IPC则纯粹用于共享目的,当然mmap()实现共享内存也是其主要应用之一。 mmap系统调用使得进程之间通过映射同一个普通文件实现共享内存。普通文件被映射到进程地址空间后,进程可以像访问普通内存一样对文件进行访问,不必再调用read(),write()等操作。mmap并不分配空间, 只是将文件映射到调用 阅读全文
posted @ 2013-03-07 16:16 JustinYo 阅读(310) 评论(0) 推荐(0) 编辑
摘要:前面讲了C++继承并扩展C语言的传统类型转换方式,最后留下了一些关于指针和引用上的转换问题,没有做详细地讲述。C++相比于C是一门面向对象的语言,面向对象最大的特点之一就是具有“多态性(Polymorphism)”。要想很好的使用多态性,就免不了要使用指针和引用,也免不了会碰到转换的问题,所以在这一篇,就把导师讲的以及在网上反复查阅了解的知识总结一下。C++提供了四个转换运算符:const_cast <new_type> (expression)static_cast <new_type> (expression)reinterpret_cast <new_typ 阅读全文
posted @ 2013-03-01 17:18 JustinYo 阅读(209) 评论(0) 推荐(0) 编辑
摘要:任何不会修改数据成员的函数都应该声明为const类型。如果在编写const成员函数时,不慎修改了数据成员,或者调用了其它非const成员函数,编译器将指出错误,这无疑会提高程序的健壮性。以下程序中,类stack的成员函数GetCount仅用于计数,从逻辑上讲GetCount应当为const函数。编译器将指出GetCount函数中的错误。classStack{public:void Push(intelem);int Pop(void);int GetCount(void)const; //const成员函数private:int m_num;int m_data[100];};intSt... 阅读全文
posted @ 2013-03-01 16:42 JustinYo 阅读(230) 评论(0) 推荐(0) 编辑
摘要:经常会遇到linux下c++代码死机的问题,通过addr2line转化工具转成相应的函数名但是很多时候最后一样有问题的代码恰恰是一个读取变量的函数 如Class A{bool m_hasMoney;bool checkMoney() const {return m_hasMoney;}}Class B{A* a() const {return m_a;}void doSomthing() { .....;a()->checkMoney();....}}死机堆栈最后显示是A::checkMoney() const于是就很奇怪了,为什么获取m_hasMoney也会死机呢?m_hasMoney 阅读全文
posted @ 2013-03-01 16:06 JustinYo 阅读(525) 评论(0) 推荐(0) 编辑