编程技巧 - 文章列表

  • Java-栈与堆都是Java用来在Ram中存放数据的地方

    栈与堆都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。 Java的堆是一个运行时数据区,类的(对象从中分配空间。这些对象通过new、newarray、anewarray和multianewarray等指令建立,它们不需要程序代码来显式的释放。堆是由垃圾回收来负责的,堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,因为它是在运行时动态分配内存的,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。 栈的优势是,存取速度比堆要快,仅次于

  • 多核能带来性能的大幅增长-Java 构造高可扩展应用

    为什么性能没有增长? 多核能带来性能的大幅增长,这很容易通过简单的一些测试来观察到。如果我们写一个多线程程序,并在每个线程中对一个本地变量进行累加,我们可以很容易的看到多核和并行带来的成倍的性能提升。这非常容易做到,不是吗?然而,与我们的测试相反,我们很少在实际软件应用中看到这样完美的可扩展性。阻碍我们获得完美的可扩展性有两方面的因素存在。首先,我们面临着理论上的限制,其次软件开发过程中也经常出现实现上的问题。让我们看看 图 1 中的三条性能曲线:图 1. 性能曲线 作为追求完美的软件工程师,我们希望看到随着线程数目的增长程序的性能获得线性的增长,也就是

  • Java的内存管理就是对象的分配和释放问题

    1、Java的内存管理就是对象的分配和释放问题。 在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。 对象的释放是由GC决定和执行的。 在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法简化了程序员的工作。但也加重了JVM的工作。这也是Java程序运行速度较慢的原因之一。 GC释放空间方法: 监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等。当该对象不再被引用时,释放对象。 2、内存管理结构 Java使用有向图的方式进行内存管

  • Java内部类可以很好的实现隐藏,也就是封装性

    一、 定义 放在一个类的内部的类我们就叫内部类。 二、 作用 1.内部类可以很好的实现隐藏,也就是封装性。一般的非内部类,是不允许有 private 与protected权限的,但内部类可以 2.内部类拥有外围类的所有元素的访问权限 3.可是实现多重继承 4.可以避免修改接口而实现同一个类中两种同名方法的调用 三、 例子 1.实现隐藏 平时我们对类的访问权限,都是通过类前面的访问修饰符来限制的,一般的非内部类,是不允许有 private 与protected权限的,但内部类可以,所以我们能通过内部类来隐藏我们的信息。可以看下面的例子 Java代码 1.p

  • 读取当前路径以及“直接父路径”的所有Cookie对象

      测试环境:JDK1.5、Tomcat5.5  1.设置Cookie  1 Cookie cookie = new Cookie(\\\"key\\\", \\\"value\\\");  2 cookie.setMaxAge(60); //设置60秒生存期,如果设置为负值的话,则为浏览器进程Cookie(内存中保存),关闭浏览器就失效。  3 cookie.setPath(\\\"/test/test2\\\"); //设置Cookie路径,不设置的话为当前路径(对于Servlet来说为request.getContextPath() + web.xml里配置的该Servl

  • Socket连接套接字,Java分别为TCP和UDP提供了相应的类

      127.0.0.1是回路地址,用于测试,相当于localhost本机地址,没有网卡,不设DNS都可以访问.  端口地址在0~65535之间,其中0~1023之间的端口是用于一些知名的网络服务和应用,用户的普通网络应用程序应该使用1024以上的端口.  网络应用中基本上都是TCP(Transmission Control Protocol传输控制协议)和UDP(User Datagram Protocol用户数据报协议),TCP是面向连接的通信协议,UDP是无连接的通信协议.  Socket连接套接字,Java分别为TCP和UDP提供了相应的类,TCP

  • ava的内存管理就是对象的分配和释放问题

      1、Java的内存管理就是对象的分配和释放问题。   在Java中,程序员需要通过关键字new为每个对象申请内存空间 (基本类型除外),所有的对象都在堆 (Heap)中分配空间。  对象的释放是由GC决定和执行的。  在Java中,内存的分配是由程序完成的,而内存的释放是有GC完成的,这种收支两条线的方法简化了程序员的工作。但也加重了JVM的工作。这也是Java程序运行速度较慢的原因之一。  GC释放空间方法:监控每一个对象的运行状态,包括对象的申请、引用、被引用、赋值等。当该对象不再被引用时,释放对象。  2、内存管理结构Java使用有向图的方式进

  • Java中组件的摆放位置和大小事由布局管理器来决定的

    在Java中组件的摆放位置和大小事由布局管理器来决定的,容器对布局管理器的特定实例保持着一个引用,当容器要定位一个组件的时候,它将调用布局管理器来决定。我们在设置组件的大小的时候,也是通过这个完成的。 在Java中给我提供了五种布局管理器。BoraderLayout边界布局管理器,FlowLayout浮动布局管理器,GridLayout网格布局管理器,CardLayout卡片布局管理器,GridBagLayout布局管理器。 在Java中FlowLayout是Panel容器的默认管理器,其组件的放置规律是从上到下,从左到又。BoarderLayout是W

  • EditPlus配置Java编译环境 Java编译程序

    从菜单“工具 (Tools)”;“配置用户工具...”进入用户工具设置,选择“组和工具条目”中的“Group 1”,点击面板右 边的“组名称...”按钮,将文本Group1”修改成“Java编译程序”,点击“添加工具”按钮,选择应用程序, 然后就是修改属性: 1. 添加编译功能 “菜单文本”里的内容修改为“Javac”; “命令”选择安装JDK后的Bin目录中的编译程序javac.exe,我的JDK 安装路径为“C:\\\\Program Files\\\\JDK\\\\j2sdk1.4.2_08”,那么此路径为“C:\\\\Program Files\\\\Java\\\\j

  • 一个实现了记忆功能的函数 带有显式的cache

      记忆是衍生自Lisp,Python和Perl等过程性语言的一种设计模式,它可以对前次的计算结果进行记忆。一个实现了记忆功能的函数,带有显式的cache,所以,已经计算过的结果就能直接从cache中获得,而不用每次都进行计算。  记忆能显著的提升大计算量代码的效率。 而且是一种可重用的方案。  本文阐述了在Java中使用这一模式的方法,并提供了一个可以提供上述功能的“记忆类”:  Foo foo = (Foo) Memoizer.memoize(new FooImpl());这里,Foo是一个接口,它含有的方法是需要记忆的。FooImpl是Foo的一个