山东青岛电脑学校 专业软件工程师培训,软件人才就业实训中心0532-85025005

Java 性能测试的四项原则

 

引言

计算机软件作为人类智慧的结晶,帮助我们在这个日新月异的社会中完成了大量工作。我们的日常生活中已经离不开软件,玲琅满目的软件已经渗透到了我们生活的各个角落,令我们目不暇接。我们都希望软件变得更好,运行处理的速度更快,在当今硬件性能突飞猛进的变革中,软件性能的提升也是一个永不落伍的话题。软件性能测试的实质,是从哲学的角度看问题,找出其内在联系,因果关系,形式内容关系,重叠关系等等。假如这些关系我们在分析过程中理清了,那么性能测试问题就会变得迎刃而解。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 17

Java代码规范

 

Java代码规范

 

本Java代码规范以SUN的标准Java代码规范为基础,为适应我们公司的实际需要,可能会做一些修改。本文档中没有说明的地方,请参看SUN Java标准代码规范。如果两边有冲突,以本文档为准。

1. 标识符命名规范

1.1 概述

标识符的命名力求做到统一、达意和简洁。

1.1.1 统一

统一是指,对于同一个概念,在程序中用同一种表示方法,比如对于供应商,既可以用supplier,也可以用provider,但是我们只能选定一个使用,至少在一个Java项目中保持统一。统一是作为重要的,如果对同一概念有不同的表示方法,会使代码混乱难以理解。即使不能取得好的名称,但是只要统一,阅读起来也不会太困难,因为阅读者只要理解一次。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 33

Android中常见的内存泄露

 

内存泄漏是指无用对象(不再使用的对象)持续占有内存或无用对象的内存得不到及时释放,从而造成内存空间的浪费称为内存泄漏。内存泄露有时不严重且不易察觉,这样开发者就不知道存在内存泄露,但有时也会很严重,会提示你Out of memory。 


Android中常见的内存泄露如下: 


1.集合类泄漏 
集合类如果仅仅有添加元素的方法,而没有相应的删除机制,导致内存被占用。如果这个集合类是全局性的变量 (比如类中的静态属性,全局性的 map 等即有静态引用或 final 一直指向它),那么没有相应的删除机制,很可能导致集合所占用的内存只增不减。 

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 14

Android布局概述

 

布局

布局定义用户界面的视觉结构,如Activity或应用小部件的 UI。您可以通过两种方式声明布局:

在 XML 中声明 UI 元素。Android 提供了对应于 View 类及其子类的简明 XML 词汇,如用于小部件和布局的词汇; 
运行时实例化布局元素。您的应用可以通过编程创建 View 对象和 ViewGroup 对象(并操纵其属性)。 
Android 框架让您可以灵活地使用以下一种或两种方法来声明和管理应用的 UI。例如,您可以在 XML 中声明应用的默认布局,包括将出现在布局中的屏幕元素及其属性。然后,您可以在应用中添加可在运行时修改屏幕对象(包括那些已在 XML 中声明的对象)状态的代码。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 29

Java多线程简介

 

Java中内置了对多线程的支持,让多线程的开发方便很多,但同时也带来了另外的复杂,线程间的交互以及很多的不确定性让多线程又显得很复杂。在此只是针对Java中多线程的基础做些说明,有关线程和进程的区别,以及多线程的好处和更深层的暂不多说。

线程的状态

线程的状态定义在Thread类中一个State枚举类型:

新建状态(NEW),通过 new Thread 新建的线程处于新建状态,通常会调用start()方法来启动线程。 
就绪状态(RUNNABLE),此时线程并没有在执行,而是可执行,在等待CPU调度去真正执行。就绪状态的线程有可能是刚调用start()方法进入就绪队列的线程,也有可能是等待其他资源的状态的线程。 
阻塞状态(BLOCKED),等待锁的线程会处于阻塞状态,线程等待进入synchronized块或方法时候处于阻塞状态;线程调用了wait()方法后等待重新获取锁的时候也会处于阻塞状态。 
等待状态(WAITING),线程调用了wait()方法并且没有设置超时时间会一直处于等待状态;线程调用了join()方法并且没有设置超时时间会一直处于等待状态;线程调用了LockSupport.park()方法会处于等待状态。 
有等待时间的等待状态(TIMED_WAITING),线程调用了以下方法,并且设置了等待的时间,会处于等待状态:1. Thread.sleep;2. wait(long)设置了超时时间;3. join(long)设置了超时时间;4. LockSupport.parkNanos()方法;5. LockSupport.parkUntil()方法。 
终止状态(TERMINATED),线程处于终止状态,已经完成了执行。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 37

Java 实现单例的难点

 

有简单又高效的方法可以实现单例模式,但没有一种方式能在任何情况下都确保单例的完整性。

单例模式是指某个类只被实例化一次,用来表示全局或系统范围的组件。单例模式常用于日志记录、工厂、窗口管理器和平台组件管理等。我认为要尽量避免使用单例模式,因为一旦实现就很难改变或重载,而且会造成编写测试用例困难、代码结构糟糕等问题。另外,下面文章中的单例模式是不安全的。

人们花大量的精力研究怎样更好地实现单例模式,但有一种简单高效的实现方法。然而,没有一种方法能在任何情况下都确保单例的完整性。阅读下文,看看你是否认同。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 21

Java基础知识(数据类型、标识符、变量、运算符和流程控制语句)

 

一、Java中的数类型分为两种:
基本数据类型
引用数据类型


基本数据类型


基本数据类型大致可以分为4种八类

4种

整型、浮点型、字符型和布尔型

八类

整型(byte、short、int、long)默认类型为int类型

浮点型(float、double)           默认类型为double类型

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 14

编程之美---数字之魅

 

最近上算法课程老师要求我们阅读<<编程之美>>这本书,我从中找出来两个简单的问题,论述解决的高效算法:

一.求二进制数中1的个数

    (1)各种实现办法代码如下:

    

 

[java] view plain copy print?
/** 
 * 计算一个byte中 1的个数 
 * @author ZC 
 * 
 */  
public class A1 {  
     
    //方法一  除以二操作  
    public static int count(int i)  
    {   int num=0;  
//  long t1=System.currentTimeMillis();  
    while(i!=0)  
       {  
        if(i%2==1)  
        {  
          num++;      
        }  
        i=i/2;  
       }  
//  long t2=System.currentTimeMillis();  
//  System.out.println(t2-t1);  
        return num;  
              
    }  
      
      
    //方法二 采用移位操作  
    public static int count2(int i)  
    {    
  //  long t1=System.currentTimeMillis();  
        int num=0;  
        while(i!=0)  
        {  
            num+=i &0x01;  
            i>>=1;  //向右移动一位  
        }  
//    long t2=System.currentTimeMillis();  
//    System.out.println(t2-t1);  
        return num;  
          
    }  
      
    //方法三  以自己的减一数做&运算   线性时间复杂度  
    public static int  count3(int i)  
    {  
        int num=0;  
        while(i!=0)  
        {  
            i=i&(i-1);  
            num++;  
        }  
          
        return num;  
    }  
      
    //解法四 查表法   典型的空间换取时间的办法  
    public static int count4(int i)  
    {    
        //一共256个值,其他的省略没有统计  
        int []coutTable={  
                0,1,1,2,1,2,2,3,1,2,2,3  
                  
        };  
          
        return coutTable[i];  
          
          
    }  
      
      
    public static void main(String[]args)  
    {  
        System.out.println(count(7));  
        System.out.println(count2(7));  
        System.out.println(count3(7));  
        System.out.println(count4(7));  
    }  
}  

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 17

Mysql数据库主从心得整理

 

管理mysql主从有2年多了,管理过200多组mysql主从,几乎涉及到各个版本的主从,本博文属于总结性的,有一部分是摘自网络,大部分是根据自己管理的心得和经验所写,整理了一下,分享给各位同行,希望对大家有帮助,互相交流。

  一、mysql主从的原理

  1、Replication 线程

  Mysql的 Replication 是一个异步的复制过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 10

回顾15年程序员生涯,我总结的7点经验

 

我和很多人交流过一个有趣的现象,那就是刚毕业到30岁这段时间,会觉得时间过得很慢,总觉得自己还很年轻,但是一旦过了30岁,时间就如白驹过隙,一年又一年飞逝而过。

我自己也是,眼瞅着毕业快15年了,15年间从一个刚毕业的菜鸟,成长为技术骨干,做到架构师的职位,回头看看,当年听取亲戚的一句话,误入计算机行业,看来并没有走错,编程虽然枯燥辛苦,但是如果真的感兴趣,你就能体会到其中的乐趣,并且获得可观的回报。

 

1.好奇心

Tags:

发布: 青软IT学院 分类: 未分类 评论: 0 浏览: 12