
C++/Java
文章平均质量分 71
zhangren07
重新写博客,每周一篇,坚持~
展开
-
C++笔记——c++编程思想(上)前3章
为了准备找工作,复习了一段时间的c++,而且有些内容当时复习了得还比较细致,做的笔记是纸质的,为了不使自己的这部分资料遗失,把它一点点放到网上来吧,从今天开始,一点一点。C++笔记——C++编程思想第一章 对象导言1. 面向对象三大特性:封装、继承、多态。2. C ++中的多态(晚捆绑)是通过虚函数实现的,在父类函数声明前加上关键字Virtual3. 把处理派生类型就如处理原创 2010-03-17 21:03:00 · 1533 阅读 · 3 评论 -
Tomcat配默认应用
在conf目录下的server.xml中,最后加入这句: 之后启动Tomcat时,默认启动的应用就是D:/lcz/vdb-1.3.2/WebRoot下的应用,只需要输入http://localhost:8080即可,不需要输入应用路径名称。原创 2010-04-23 10:53:00 · 1175 阅读 · 0 评论 -
RCP项目导出--No application id has been found
在陈刚的《Eclipse从入门到精通》一书中,有关于项目导出的详细步骤,质控系统在曹老师的电脑上也导出运行完全没有问题。我于是下载到我电脑上,在开发环境下运行没有问题,整个项目的配置也与曹老师的完全一致,导出也没有问题。可是运行程序时,却出现了问题:一堆错误提示信息如下: !SESSION 2010-04-30 16:56:36.875 ------------------------原创 2010-04-30 17:14:00 · 3535 阅读 · 0 评论 -
Java虚拟机JVM内存分区及代码执行机制
1. JVM体系结构图1 JVM体系结构 方法区:存放JVM加载的类型信息。包括: 类型基本信息,常量池,字段信息,方法信息,类变量,指向ClassLoader的引用,Class类的引用,方法表等。(对应JVM内存配置中的-PermSize等) java堆:程序中创建的类的实例和数组,包括class对象和exception对象,存放在堆里面。堆中除了存储对象的实例数据外,还要存储该对象指向方法区中类型信息的指针。(JVM中所有的线程共享堆空间,对应JVM内存配置中的-Xms和-Xmx等) ja原创 2011-03-23 14:21:00 · 11310 阅读 · 0 评论 -
Java虚拟机的JVM垃圾回收机制
1.JVM内存空间 JVM堆(Heap)= 新生代(Young) + 旧生代(Tenured) 分区作用: 新创建的对象通常先将其分配在新生代中,在新生代中经过若干次GC之后仍未释放的对象,再将它移动到旧生代。为了让内存回收更高效(GC会暂停JVM中的应用),Sun JDK在1.2开始对堆采用了分代管理的方式。在分配对象遇到内存不足时,先对新生代进行GC(Young GC);当新生代GC之后仍无法满足内存空间分配需求时, 才会对整个堆空间以及方法区进行GC (Full GC) 相关参数:-Xms原创 2011-03-23 14:35:00 · 14134 阅读 · 4 评论 -
jdk+apache+jboss +mod_jk+openssl--从零开始搭建Linux测试环境
<br /><br />从零开始搭建Linux测试环境<br />之<br />jdk+apache+jboss +mod_jk+openssl<br />软件介绍<br />1.JDK(Java DevelopmentKit)。Java开发工具包。大家都知道Java程序可以在绝大多数的机器上运行,不需要安装任何额外的软件,为什么我们要安装JDK呢?这是因为Java程序在开发过程中,需要将源代码转换为中间代码形式,也即class文件。平常运行Java程序不需要安装额外软件是指对编译好的Java程序中间代码,原创 2011-03-22 23:24:00 · 4122 阅读 · 1 评论 -
TCP连接状态详解
做性能测试进行分析时,时常会涉及到TCP连接的查看与分析,ESTABLISED和CLOSED容易理解,但TIME_WAIT,CLOSE_WAIT,FIN_WAIT_1等等这些状态就让人看了迷糊了。最近在分析一个Apache与Jboss AJP连接半断开问题时候,用到了这些知识,于是学习了一点资料作为补充。资源来源《TCP IP协议详解》。放两张图吧,呵呵: 按图中的表述,看到原创 2011-06-09 14:50:00 · 1787 阅读 · 0 评论 -
Android自动化测试框架Robotium学习笔记
<br /><br />刚好前段时间也研究了一下Android的自动化测试框架。感觉用起来还是比较方便的。<br />几点体会也一起和大家交流下,有一些内容还在慢慢学习中:<br />1.Java5(2004-10)开始推出了Instrumentation,这是一个可以在main之前Java虚拟机加载类时改变Java类字节码或类classpath等内容的工具,同时JDK1.6还提供了运行过程中的动态改变,如在方法执行前后加入度量时间的代码,使Java代码可度量就是一个很典型的应用。不过这需要涉及到Java字原创 2011-04-26 23:03:00 · 11113 阅读 · 2 评论 -
Android的Message,MessageQueue,Looper,Handler详解+实例
<br />一、几个关键概念<br /><br />1、MessageQueue:是一种数据结构,见名知义,就是一个消息队列,存放消息的地方。每一个线程最多只可以拥有一个MessageQueue数据结构。<br />创建一个线程的时候,并不会自动创建其MessageQueue。通常使用一个Looper对象对该线程的MessageQueue进行管理。主线程创建时,会创建一<br />个默认的Looper对象,而Looper对象的创建,将自动创建一个Message Queue。其他非主线程,不会自动创建Loop转载 2011-05-06 20:55:00 · 1811 阅读 · 0 评论 -
selenium学习笔记
selenium学习笔记之一 实现原理 1.使用方式,分为IDE方式和脚本驱动方式:IDE方式。目前只支持FireFox。是一个FireFox插件,只要录制脚本,即可进行回放,添加断言等,很方便但通用性不足(只支持FF);脚本驱动方式之一。中间加一个Remote Control Server,Remote Control Server实质上就是开启一个Http代理服务器,它在原创 2011-06-28 17:32:00 · 1447 阅读 · 0 评论 -
perftools查看JVM堆外内存
转自http://koven2049.iteye.com/blog/1142768最近线上运行的hbase发现分配了16g内存,但是实际使用了22g,堆外内存达到6g。感觉非常诡异。堆外内存用一般的工具很难查看,可以通过google-perftools来跟踪: http:转载 2011-08-17 19:17:34 · 8587 阅读 · 0 评论 -
关于《Android应用开发揭秘》中早期版本中联系人例子错误的解决办法
转自:http://yarin.blog.51cto.com/1130898/412035针对于android应用开发揭秘书中的4-5节代码不能工作的补充首先感谢该篇文章的作者,因为网上到处转载,就不知道原作者了,在这里感谢你对本书的关于与支持。问题原因:转载 2011-08-21 13:59:38 · 649 阅读 · 0 评论 -
jetty重复编译jsp页面初探——一个配置提升5ms
进行测试时,发现jetty一直比jboss慢5ms。通过visualvm观察发现在如下代码处总是出现blocked情况:JspServletWrapper.java:356。通过btrace跟踪得知在JspServletWrapper.java:356(使用的是glass原创 2011-10-12 11:00:22 · 3270 阅读 · 0 评论 -
Java SE 6 新特性: Instrumentation 新功能
看源文:http://www.ibm.com/developerworks/cn/java/j-lo-jse61/转载 2011-11-29 11:19:30 · 627 阅读 · 0 评论 -
基于Jmeter开发性能自动化测试平台
基于Jmeter开发一个性能测试自动化的平台,需要考虑主控机器的调度,脚本与场景的划分等问题。需要精通Web开发,amcharts图形展现等,除些之外的一些关键技术点如下: 1.Java客户端对Linux环境进行操作可以使用ssh2的Java客户端,这方面的选择比较多,如jcraft及ganymed都可以。 2. 远程执行Jmeter脚本,这个已经有命令行的方式原创 2011-12-07 15:12:22 · 6281 阅读 · 2 评论 -
性能mock问题记录
方案在jboss启动之后,利用jdk的instrumentation提供的修改字节码功能,挂一个带agent-main的jar包上去,挂jar包使用VirtualMachine.attach(pid)。在jar包中指定Agent-Class,并在这个class中实现agentmain方法来对jvm做一些操作(使用实现了ClassFileTransformer的类进行字节码替换工作)。对原创 2011-12-13 10:39:38 · 4424 阅读 · 0 评论 -
Linux下Jboss启动、关闭、端口配置等常见问题FAQ
转自:http://blog.csdn.net/sfdev/article/details/4266728单台Linux服务器中如何部署多个独立应用,即多个应用不能run在一个jboss实例中?换言之,这个问题也可以这样描述:在单台Linux服务器中服务启动多个Jboss实例?默认情况下,jboss启动时加载server/default/目录下的配置,要实现多个实例的启动,主要是解决端转载 2012-04-09 16:46:57 · 6752 阅读 · 0 评论 -
Java中使用信号量——Semaphore
主线程中:InitThread initThread=new InitThread(new Semaphore(0));//初始化一个子线程,传一个初值为0的信号量给它 Display.getDefault().asyncExec(initThread); try {//此处会挂起,直到子线程完成工作,修改了信号量的值,主线程才会继续 initThread.getSe原创 2010-04-23 13:59:00 · 2342 阅读 · 0 评论 -
c++函数指针、虚继承大小、类型转换、C特殊情况记录
1. 函数和数组的修饰符的优先级通常比指针修饰符高,故一般要加(),如:int *f();//表示一个返回int *的函数声明。int (*f) ();//函数指针,所指函数返回值为int型的。int *a[N];//表示具有N个int*的数组,没()时,*与int结合。int (*a)[N];//表示一个指针,指向具有N个int元素的数组,把int [N]放一起,而*a另拿出来易原创 2010-04-01 15:07:00 · 1481 阅读 · 0 评论 -
程序员面试宝典知识总结
1. int x=2,y=3,z;x==(z=y);//x=2,x只是参与表达式布尔值的判断,不改变原值x=(y&z);//x=3z=4;x=(y|z);//x=7按位或 2.x=x+1,x+=1,x++//三个效率依次从低到高x=x+1;//读右x的地址;对x+1;读左x的地址;赋值。x+=1;//读x的地址;对x+1;赋值。x++;//读x地址;x自增1 3原创 2010-04-01 14:00:00 · 1492 阅读 · 0 评论 -
C++笔记——c++编程思想(上)第四五六章数据抽象、初始化与清除
第四五六章 数据抽象、初始化与清除1. new与malloc的区别:(1)new是C++中的一个操作符,malloc是C的一个库函数;(2)new与delete除分配释放内存外,还调用构造与析构函数,malloc与free只分配/释放内存;(3)new检查内存泄漏时,可用的办法多些,比如重载operator new运算符;(4)new返回的是带类型的指针,malloc的返回值是void型原创 2010-03-19 17:35:00 · 1178 阅读 · 0 评论 -
C++笔记——c++编程思想(上)第九十章 内联函数及名字控制
第九十章 内联函数及名字控制1. 内联函数与一般函数的区别:内联函数会在调用处直接展开代码,而省去了调用的开销。C的宏与内联类似,但其不进行类型方面检查等,故而易出错,而且宏不允许访问类的成员,故C++中用内联函数。2. 任何类内定义的函数,自动地成为内联函数,类外的函数用inline修饰。关键字inline必须与函数定义体放在一起才能使函数成为内联,仅将inline放在函数声明前面不原创 2010-03-19 18:51:00 · 907 阅读 · 0 评论 -
C++笔记——c++编程思想(下)第一章异常处理
1. 传统的C中处理错误的方法有三种:(1)使用全局状态本标记来标识异常状态,或是函数返回值区别错误类型;(2)使用鲜为人知的C中的signal和raise库函数提供的信号处理系统;(3)使用C库中的非局部跳转函数:setjmp()和longjmp(),这种非局部跳转函数与goto的区别是:goto只在一个函数中进行跳转。这些方法的缺点在于,信息不丰富,各种错误信号要定义,对应关系及其含义很烦琐,原创 2010-03-22 09:31:00 · 1324 阅读 · 2 评论 -
C++笔记——c++编程思想(下)第二三四章防御性编程及输入输出流
1. 断言(assert)的使用时机与if语句的差别:assert主要用在调用和测试阶段,用来发现潜在的bug,发行版本中应该完全去除。if是正常的逻辑分支,用来预防错误的发生,发行版本中,所有的assert失败情况都要(或用if)加以处理,换句话说,assert是专为调试而写的特殊if语句,它可直接指出出错所在地方并终止程序,无需用户写这些代码。2. 断言不假时,将调用asertImpl原创 2010-03-22 10:15:00 · 1063 阅读 · 2 评论 -
C++笔记——c++编程思想(下)通用算法和运行时类型识别
1. 函数对象是重载了operator()的类的一个实例,operator()是函数调用运算符,如定义了一个重载了operator的类gt_n,则:gt_n f(4);//定义一个对象f,用4对它进行初始化。f(3);//相当于f.operator(3)。2. 函数对象根据其参数分为发生器(无参),一元和二元等。3. 使用适配器可以固定函数对象的参数等,适配器有bind1st, b原创 2010-03-22 10:18:00 · 785 阅读 · 0 评论 -
C++笔记——c++编程思想(上)第十一、十二、十三章 引用和拷贝构造函数,运算符重载,继承组合等
第十一、十二、十三、十四章 引用和拷贝构造函数,运算符重载,继承组合等1. C++中指针的类型检查更为严格。2. 因为默认拷贝构造函数采用位拷贝,所以对包含指针的对象,必须自己定义拷贝构造函数,进行真正的复制,避免浅拷贝。3. 防止对象按值传递的方法之一:定义一个私有拷贝构造函数,但什么也不做。4. 运算符重载只是为了使语法方便,实质仍是函数调用。只有自定义类型的运算符才可重载原创 2010-03-19 20:01:00 · 1337 阅读 · 2 评论 -
C++笔记——c++编程思想(上)多态性、虚函数与模板
1. 每当创建一个虚函数的类,或从有虚函数的基类派生出一个子类时,编译器就为这个基类创建了一个唯一的虚函数表,在这个表中,编译器存放了这个类中及其基类声明的所有虚函数的地址,若子类虚函数对父类进行了重定义,则存子类虚函数的地址,否则存父类虚函数的地址。子类对父类中虚函数进行重定义时,不需要用virtual,只要一个函数在某处声明为Virtual,则一直为Virtual,子类不需要再声明。2.原创 2010-03-20 20:51:00 · 1280 阅读 · 2 评论 -
Java编程思想学习笔记——对象导论
1. 任何对象放入容器之前,都必须向上转型为Object,所以取出时也必须向下转型。泛型可使操作简单一些,泛型会进行类型检查。2. Java采用了完全动态内存分配机制,一切对象都在堆中创建,栈中保留引用。基本类型(在栈上创建)只是特例。3. Java方法调用时,基本类型是值传递,引用类型也是值传递,值的是引用的值(可以理解为指针),因此引用在方法内不可改变,但引用所指的对象可以改变。4原创 2010-03-24 09:21:00 · 635 阅读 · 0 评论 -
Java编程思想学习笔记——流程控制,初始化与清除
1. 尽管Java中仍将goto作为保留字,但其不可在Java中使用。2. Java中的break,continue语句,可以后面加标签一起使用以使break,continue在多重循环中起作用,break中转到标签处但不再重新迭代。Java中标签只能用于嵌套循环的控制。3. switch语句只支持int与char类型,但Java SE5中的新特性enum减弱了这种限制,因为enum可与s原创 2010-03-24 09:40:00 · 724 阅读 · 0 评论 -
Java编程思想学习笔记——类型信息
1. Class.forName(className)用来加载指定类名,并返回Class对象,一般可忽略返回值。如果已有一个对象,可以通过getClass方法来获得Class对象。或者用ClassName.class也可以获得。2. 通过Class对象,可以用getInterfaces方法getSuperClass方法获得其实现的接口及父类名,而且Class对象的newInstance方法可以原创 2010-03-26 20:45:00 · 627 阅读 · 0 评论 -
Java编程思想学习笔记——泛型
1. 泛型的主要目的之一,就是用来指定容器持有什么类型的对象,而且由编译器来保证其类型的正确性。由此,与其用Object指定为任何类型,不如暂时不指定类型,而到定义时决定类型,因为前者不会有类型检查。2. 擦除。List型的对象与List型的对象,在运行时,其类型都被擦除为List。因此,在泛型机制下,无法获得有关泛型参数的运行时信息,像List成为List,普通类型T则成为Object类型。原创 2010-03-26 21:18:00 · 1213 阅读 · 1 评论 -
Java编程思想学习笔记——访问权限控制与类的复用
1. 静态导入:import static com....className.*;与一般的import比,多了一个“static”,类名后多了“.*”。意指导入该类下的所有静态方法及静态成员。在当前类中使用时,便可不需要写类名了,直接使用。若只想导入某一个静态方法,只需要将*改为方法名即可。2. 访问控制符权限 本身 同一包中 子类原创 2010-03-25 20:33:00 · 782 阅读 · 0 评论 -
Java编程思想学习笔记——内部类、异常
1. 内部类在另一个类中定义,可以是public,private,protected等修饰符,当创建一个内部类对象时,外部类会传一个指针给它。因此,内部类中能不受限制地使用外部类的所有属性及方法,这与c++的嵌套类不同。2. 用外部类名如Outer加上.this可以在内部类中获得外部类的一个对象,如OuterClass.this;如果用外部类对象如outer新建内部类对象时,语法是:Outer原创 2010-03-25 20:53:00 · 606 阅读 · 0 评论 -
Java编程思想学习笔记——容器深入、I/O系统
1. 遍历Map用Entry类比较方便。2. 用Arrays.asList()方法可将一个数组转化为List,但对于该转换得来的List,任何会改变其长度的操作都将抛UnsupportedOperationException。3. Set接口的三种实现,HashSet(其元素必须实现hashCode);TreeSet(其元素必须实现Comparable接口);LinkedHashSet(其原创 2010-03-31 17:58:00 · 1095 阅读 · 0 评论 -
Java编程思想学习笔记——枚举、注解
1. 除了不能继承自一个enum外,我们基本上可以将enum看作一个常规的类。可以向其中添加方法,甚至main。enum的构造函数默认为private因为定义完enum后不允许往其中动态添加实例作为其子集。2. enum的所有定义的类型其实均继承自java.lang.Enum,因此不能继承自其它类。在定义一个新的enum类型时编译器自动将其定义为final并对它加上了values(),valu原创 2010-03-31 20:49:00 · 814 阅读 · 0 评论 -
Java编程思想学习笔记——并发
1. java.util.concurrency包中的ExcecutorService类执行线程任务时,用它的exec()方法提交任务。实现Runnable接口的类不含返回值,若想要返回值,需要实现Callable接口,用submit方法提交任务。它会返回一个Future对象,从中可获得返回值及判断线程状态等。2. yield()方法表示当前线程已经完成或暂时不需要CPU,其它线程可以占用之,原创 2010-03-31 20:58:00 · 1089 阅读 · 0 评论 -
Java学习笔记——其它Java知识
1. JNLP(Java网络加载协议),它可以允许使用一组API及Ant等构建工具,在用户访问Web服务器时,Servlet通过响应生成应用程序及数据文件的jar包,下载传输到客户端去执行,然后再将结果返回服务器,由此节约服务器资源。下载文件运行时,需要提供签名保障安全。大致包含一个JNLP描述文件等的设置,利用了Java执行Runtime外部命令及Java中执行Ant的一些API。2. Ja原创 2010-04-01 10:10:00 · 651 阅读 · 0 评论