Android兼容性测试框架(CTS)手册 了解老码农个人隐私,请看这里:http://www.koulianbing.com/?page_id=12本文翻译自Android官方的CTS手册android-cts-manual-r4.pdf Android兼容性测试框架手册 1、为什么需要兼容性测试(以下称CTS)?1.1、让APP提供更好的用户体验。用户可以选择
用HTML开发Windows桌面应用程序 转载自:http://blog.csdn.net/xiaoaiai/article/details/46043077 如果要说明这个题目上的问题,就先要说一下,软件开发的种种方式,从最初的命令行软件开发方式,到可视化的窗口软件,开发方式的进步使得开发难度降低,用户体验也越来越完善,不过今天要谈的是windows下的桌面软件开发方式,关于windows下桌面软件的开发方式,请看下面:
HTML/CSS/JavaScript GUI in Java Swing Application 转载自:http://java.dzone.com/articles/htmlcssjavascript-gui-java-0 There are a lot of desktop applications that integrate web browser control to display HTML content and communicate with web servic
Mysql表设计及经验---提高SQL查询效率 1.表设计: 数据库要满足基本范式; 选择合适的数据类型:尽量定长; 不要使用无法加索引的类型作为关键字段,比如text类型; 为了避免联表查询,有时候可以适当的数据冗余,比如邮箱、姓名这些不容易更改的数据; 选择合适的表引擎,有时候合MySAM适和,有时InnoDB适合; 最好每个表都建立有auto_increment字段,建立合适的数据库索引以保证查询性能; 最好给
C++中括号()操作符的重载举例及解析 C++项目中,经常会遇到使用重载()操作符的地方,请看下面一个例子:#include using namespace std;class Clastype{ public: Clastype(int a) { cout << "Hello Clastype!" << a << endl; }
mysql常用命令 连接数据库 mysql -u troy -ptroy 备份表 mysqldump -u troy -ptroy mm_database mm_user_tbl > user.sql 恢复表(与恢复数据库命令相同) mysql -u troy -ptroy mm_database 备份数据库 mysqldump -u troy -ptroy mm_databa
使用JPopupMenu作为提示以及创建带图像的菜单 JPopupMenu是对于Swing开发者是在熟悉不过的组件了,不过大部分人只将其作为右击弹出菜单使用,其实JPopupMenu还可以有很多用途,可以说只要是需要弹出式效果的都可以用其实现。例如我们用开发工具输入import java.util.当输入“.”时会自动弹出提示框选项,以下的小程序展示了这样的效果: 1import java.awt.BorderLayout; 2i
Swing做出异型登录窗口 在程序中依次设置以下几个参数:设置窗口完全透明:AWTUtilities.setWindowOpaque(frame, false);设置窗口无边缘:frame.setUndecorated(true);设置窗口的ContentPane为要显示的Pane:frame.setContentPane(myPane);在myPane中放置具体要显示的内容,也可以重载paint方法进行Java2D
MYSQL查询语句优化 mysql的性能优化包罗甚广: 索引优化,查询优化,查询缓存,服务器设置优化,操作系统和硬件优化,应用层面优化(web服务器,缓存)等等。这里的记录的优化技巧更适用于开发人员,都是从网络上收集和自己整理的,主要是查询语句上面的优化,其它层面的优化技巧在此不做记录。查询的开销指标:执行时间 检查的行数 返回的行数建立索引的几个准则:1、合理的建立索引能
MySQL Explain 结果解读与实践 Explain 结果解读与实践基于 MySQL 5.0.67 ,存储引擎 MyISAM 。注:单独一行的"%%"及"`"表示分隔内容,就象分开“第一章”“第二章”。explain 可以分析 select 语句的执行,即 MySQL 的“执行计划”:mysql> explain select 1;+----+--
字符串匹配的KMP算法(简单易懂) 字符串匹配是计算机的基本任务之一。 举例来说,有一个字符串"BBC ABCDAB ABCDABCDABDE",我想知道,里面是否包含另一个字符串"ABCDABD"? 许多算法可以完成这个任务,Knuth-Morris-Pratt算法(简称KMP)是最常用的之一。它以三个发明者命名,起头的那个K就是著名科学家Donald Knuth。 这种算法不太容
Java Lambda表达式入门 本文转载自:http://blog.csdn.net/renfufei/article/details/24600507原文链接: Start Using Java Lambda Expressions下载示例程序 Examples.zip 。原文日期: 2014年4月16日翻译日期: 2014年4月27日翻译人员: 铁锚简介(译者注:虽然看着很先进,其实Lam
排序(Sort) 这可能是最有趣的一节。排序的考题,在各大公司的笔试里最喜欢出了,但我看多数考得都很简单,通常懂得冒泡排序就差不多了,确实,我在刚学数据机构时候,觉得冒泡排序真的很“精妙”,我怎么就想不出呢?呵呵,其实冒泡通常是效率最差的排序算法,差多少?请看本文,你一定不会后悔的。1、冒泡排序(Bubbler Sort)前面刚说了冒泡排序的坏话,但冒泡排序也有其优点,那就是好理解,稳定,再就是空间
图解数据结构(8)——二叉堆 转载自http://www.cppblog.com/guogangj/archive/2009/10/29/99729.html首先说说数据结构概念——堆(Heap),其实也没什么大不了,简单地说就是一种有序队列而已,普通的队列是先入先出,而二叉堆是:最小先出。这不是很简单么?如果这个队列是用数组实现的话那用打擂台的方式从头到尾找一遍,把最小的拿出来不就行了?行啊,可是出队的操作是
图解数据结构(5)——散列法及哈希表 转载自http://www.cppblog.com/guogangj/archive/2009/10/15/98699.html数组的特点是:寻址容易,插入和删除困难;而链表的特点是:寻址困难,插入和删除容易。那么我们能不能综合两者的特性,做出一种寻址容易,插入删除也容易的数据结构?答案是肯定的,这就是我们要提起的哈希表,哈希表有多种不同的实现方法,我接下来解释的是最常用的一种方法
图解数据结构(6)——树及树的遍历 转载自http://www.cppblog.com/guogangj/archive/2009/10/16/98772.html树,顾名思义,长得像一棵树,不过通常我们画成一棵倒过来的树,根在上,叶在下。不说那么多了,图一看就懂:当然了,引入了树之后,就不得不引入树的一些概念,这些概念我照样尽量用图,谁会记那么多文字?树这种结构还可以表示成下面这种方式,可见
图解数据结构(4)——二分法查找法 转载自http://www.cppblog.com/guogangj/archive/2009/10/15/98649.html如何从数组里找一个元素的位置?如果排列是无序的,我们只能从头到尾找,但如果排列是有序的,我们则可以用别的更好的方法,二分查找法就类似我们在英汉词典里找一个单词的方法。如下图所示(假如我们要查找的数字是“88”):下面我给出了一段demo代码,来演示
图解数据结构(3)——队 转载自http://www.cppblog.com/guogangj/archive/2009/10/14/98588.html前一篇讲了栈(Stack),队和栈其实只有一个差别,栈是先进后出,队是先进先出,如图:从图中可以看出,队有两个常用的方法,Enqueue和Dequeue,顾名思义,就是进队和出队了。队和栈一样,既可以用数组实现,也可以用链表实现
图解数据结构(2)——栈 转载自http://www.cppblog.com/guogangj/archive/2009/10/14/98565.html前一篇讲解了最基本的东西,这篇就稍微前进一点点,讲一下栈,栈在英文中叫Stack,翻译成中文又叫“堆栈”,但决不能称为“堆”,这个要搞清楚,我们说的“栈”和“堆栈”指的都是Stack这种数据结构,但“堆”却是另外一个概念了,这里且不提。栈最大特点是先进后出
图解数据结构(1)——大圈表示法、动态数组和单向链表 转载自http://www.cppblog.com/guogangj/archive/2009/10/13/98476.html《数据结构》这门课是计算机专业的核心课程,但往往却让人头痛,因为比较抽象,当然了,也许你足够聪明,并不觉得它有多难,但对我而言,是有点难度,后来我仔细想了想,到底哪里难?我得出这么个结论:长篇大论,缺乏图表。现在的人都喜欢看电影,看电视剧,很少人还热衷于看小说吧,
MFC的消息机制 今天重新整理MFC的消息机制,最终的结果应该是利用win32程序模拟一个MFC的消息链。1.标准消息 除WM_COMMAND之外,所有以WM_开头的消息。 从CWnd派生的类,都可以接收到这类消息。 2.命令消息 来自菜单、加速键或工具栏按钮的消息。这类消息都以WM_COMMAND呈现。在MFC中,通过菜单项的标识(ID)来区分不同的命令消息;在SDK中,通过消息的
MFC集合类 http://blog.csdn.net/yjkwf/article/details/5483975class CPoint3D { public: CPoint3D() { x=y=z=0; } CPoint3D(int xPos,int yPos,int zPos)
C语言typedef 关键字 关键字:typedef用法:为各种数据类型定义一个新名字(别名)typedef与基本数据类型typedef int Integer;Integer a= 8;也可以在别名的基础上再起一个别名typedef IntegerMyInteger;MyInteger aa = 8;原来的数据类型也可以正常使用typedef与指针t
C语言预处理指令:宏、条件编译、文件包含 预处理指令1.C语言在对源程序进行编译之前,会先对一些特殊的预处理指令作解释(比如之前使用的#include文件包含指令),产生一个新的源程序(这个过程称为编译预处理),之后再进行通常的编译2.为了区分预处理指令和一般的C语句,所有预处理指令都以符号"#"开头,并且结尾不用分号3.预处理指令可以出现在程序的任何位置,它的作用范围是从它出现的位置到文件尾。习惯
C语言宏与单井号(#)和双井号(##) C(和C++)中的宏(Macro)属于编译器预处理的范畴,属于编译期概念(而非运行期概念)。下面对常遇到的宏的使用问题做了简单总结。关于#和##在C语言的宏中,#的功能是将其后面的宏参数进行字符串化操作(Stringfication),简单说就是在对它所引用的宏变量通过替换后在其左右各加上一个双引号。比如下面代码中的宏:#define WARN_IF(EXP) / do{ if
Java 动态代理作用 主要用来做方法的增强,让你可以在不修改源码的情况下,增强一些方法,在方法执行前后做任何你想做的事情(甚至根本不去执行这个方法),因为在InvocationHandler的invoke方法中,你可以直接获取正在调用方法对应的Method对象,具体应用的话,比如可以添加调用日志,做事务控制等。还有一个有趣的作用是可以用作远程调用,比如现在有Java接口,这个接口的实现部署在其它服务器上,在编写
JAVA Observer Java 提供了 Observer 模式的默认实现,下面我们就看一下 Java 对 观察者模式的支持。Java 对 观察者模式的支持 主要体现在 Observable 类和 Observer 接口。(1) Observable 类代表 被观察者 (java.util.Observable) 主要方法有: void setCha
Swing显示图片 重写Jcomponent Swing显示图片可以有很多的种选择,例如:可以用JLabel和JTable等,通过自己的编程我还是推荐使用JPanel,因为JLable显示图片常常出现内存溢出的问题,我估计JLabel只是将图片以图标的形式显示,所以对内存有一定的限制,如果图片像素过大会出现内存溢出,而JPanel则是将图片“画”在面板上,所以可以使用更大的内存吧。 下面是将图片显示在JPanel的关键方法://
JAVA GUI 开发---登录界面加载背景图片 package com.ycty.totlosystem.gui.test;import java.awt.Graphics;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import java.awt.Insets;import javax.swing.ImageIcon;import javax
java 画的4个点的Bezier曲线 //其中第2和第3个实心点为控制点,可以鼠标拖动,但是不能太快,不然曲线点的坐标x,y计算跟不上。import java.awt.Color;import java.awt.Dimension;import java.awt.Graphics;import java.awt.Graphics2D;import java.awt.event.MouseEvent;import java.a
java - JDBC - Techniques 一、JDBC Data TypesJava has a data type system, for example, int, long, float, double, string.Database systems also have a type system, such as int, char, varchar, text, blob, clob.The J
JDBC ResultSet The JDBC java.sql.ResultSet is used to handle the result returned from the SQL select statement.The SQL select statements reads data from a database and return the data in a result set.The r
Java UDP Socket 一. UDP协议定义UDP协议的全称是用户数据报,在网络中它与TCP协议一样用于处理数据包。在OSI模型中,在第四层——传输层,处于IP协议的上一层。UDP有不提供数据报分组、组装和不能对数据包的排序的缺点,也就是说,当报文发送之后,是无法得知其是否安全完整到达的。二. 使用UDP的原因它不属于连接型协议,因而具有资源消耗小,处理速度快的优点,所以通常音频、视频和普通数
Java Network Tutorial Java TCP ServerAn object of the ServerSocket class represents a TCP server socket in Java.A ServerSocket object can accept a connection request from a remote client.We can use the no-arg
Java Executor The framework provides a way to separate task submission from task execution.The Executor interface in the java.util.concurrent package is the foundation for the executor framework.It is an in
Java Explicit Locks Explicit locking mechanism can be used to coordinate access to shared resources in a multi-threaded environment.The Lock interface, which is declared in the java.util.concurrent.locks package, def
Java Thread Producer/Consumer The producer/consumer is a typical thread synchronization problem that uses the wait() and notify() methods.ExampleThere are four classes: Buffer, Producer, Consumer, and ProducerConsumerTest.
Java Swing JTextPane The JTextPane class is a subclass of the JEditorPane class and is a specialized component to handle the styled document with embedded images and components.To display an HTML, RTF, or plain docume
Date Format Pattern PatternThe following pattern letters are defined:LetterDate or Time ComponentExamplesGEra designatorADyYear2014; 14YWeek year2014;
JAVA把毫秒数转换成日期 long sd=1429418796703L; Date dat=new Date(sd); GregorianCalendar gc = new GregorianCalendar(); gc.setTime(dat); java.text.SimpleDateFormat format =
Java开发中的23种设计模式详解 设计模式(Design Patterns) ——可复用面向对象软件的基础设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 毫无疑问,设计模式于己于他人于系统都是多赢的,设计模式使代码编制真
Java 拖动Swing组件和图片 SwingUtilities类是Swing组件内部使用的实用工具,它提供了许多的涉及计算、转换、访问控制、布局等方面的方法。这里我们只讨论它的一个方法public static Point convertPoint(Component source,Point aPoint,Component destination) ;我们假设最大的容器Container为destination,显示图
sql操作总结 SQL 语句的多表查询方式例如:按照 department_id 查询 employees(员工表)和 departments(部门表)的信息。方式一(通用型):SELECT ... FROM ... WHERESELECT e.last_name,e.department_id,d.department_nameFROM employees e,departments d
mysql 日期时间处理函数 ADDDATE(date,interval expr unit),ADDDATE(expr,days) --- 添加时间值(时区)为日期值,其为DATE_ADD()的别名DATA_ADD(date,INTERVAL expr unit)、DATE_SUB(date,INTERVAL expr unit)这些函数进行时间运算;date参数指定开始日期的日期或日期时间值,expr是一个
一个有N个元素的集合,其中有相同元素。 需要得到按重复元素多少排序的新集合。 一个有N个元素的集合,其中有相同元素。需要得到按重复元素多少排序的新集合。{"a","b","c","c","a","c"}得到{"c","a","b"}import java.util.Arrays;import java.util.Comparator;import java.util.HashMap;import java.util.Map;import
JVM 垃圾回收器工作原理 垃圾收集基础Java 语言的一大特点就是可以进行自动垃圾回收处理,而无需开发人员过于关注系统资源,例如内存资源的释放情况。自动垃圾收集虽然大大减轻了开发人员的工作量,但是也增加了软件系统的负担。拥有垃圾收集器可以说是 Java 语言与 C++语言的一项显著区别。在 C++语言中,程序员必须小心谨慎地处理每一项内存分配,且内存使用完后必须手工释放曾经占用的内存空间。当内存释放不够完全
java 数字钟 需要安装elcipse package com.test;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.Graphics;import java.awt.event.ActionEvent;import java.a
齐次坐标的理解 一直对齐次坐标这个概念的理解不够彻底,只见大部分的书中说道“齐次坐标在仿射变换中非常的方便”,然后就没有了后文,今天在一个叫做“三百年 重生”的博客上看到一篇关于透视投影变换的探讨的文章,其中有对齐次坐标有非常精辟的说明,特别是针对这样一句话进行了有力的证明:“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换。”——F.S. Hill,
矩阵的空间变换 本文出自大苞米的博客(http://blog.csdn.net/a396901990),谢谢支持!几何图形的矩阵表示:我们把每个顶点坐标看成一个行向量,采用齐次坐标法,即每个顶点坐标增加一个相同的分量1作为矩阵的一行,这样就可以用矩阵表示图形了。如:点A(1,-1),增加一个分量1,将其作为一个矩阵的行向量A=[1−11]; 以此类推,所以这个图形可
坐标旋转公式 旋转公式:x1=cos(angle)*x-sin(angle)*y;y1=cos(angle)*y+sin(angle)*x;其中x,y表示物体相对于旋转点旋转angle的角度之前的坐标,x1,y1表示物体旋转angle后相对于旋转点的坐标 从数学上来说,此公式可以用来计算某个点绕另外一点旋转一定角度后的坐标,例如:A(x,y)绕B(a,b)旋转β度后的位置
数据库三范式 关系型数据库是现在广泛应用的数据库类型,对关系型数据库的设计就是对数据进行组织化和结构化的过程。对于小规模的数据库我们处理起来还是比较轻松地,但是随着数据库规模的扩大我们将发现用户操控数据库的SQL语句将变得笨拙、复杂。更糟糕的是很有可能导致数据不完整,不准确。所以我们有必要将数据设计的更加符合规范。怎样使我们的数据库更加规范呢,前人总结了三个范式(其实一共有五个,但是一般的数据库只需满足三个
MySQL索引类型一览 索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:CREATE TABLE mytable( ID INT NOT NULL, username VARCHAR(16) NOT NULL ); 我们随机向里面插入了
Mysql命令 1、create命令用于创建数据库。create命令格式:create database ;注意:创建数据库之前要先连接Mysql服务器。1) 建立一个名为xhkdb的数据库: mysql> create database xhkdb;2) 创建数据库并分配用户:CREATE DATABASE 数据库名;GRANT SELECT,INSERT,UPDA
mysql数据类型 1、整型MySQL数据类型含义(有符号)tinyint(m)1个字节 范围(-128~127)smallint(m)2个字节 范围(-32768~32767)mediumint(m)3个字节 范围(-8388608~8388607)int(m)4个字节 范围(-214
屏幕取点工具 elcipse下运行 package com.test;import java.awt.AWTException;import java.awt.Color;import java.awt.Container;import java.awt.Graphics;import java.awt.MouseInfo;import java.awt.Rectangle;import java.awt.Robot
java 放大缩小图片 public class ImageUtils { /** * 对图片进行放大 * @param originalImage 原始图片 * @param times 放大倍数 * @return */ public static BufferedImage zoomInImage(BufferedImage ori
Java编程思想重点笔记 1. Java中的多态性理解(注意与C++区分)Java中除了static方法和final方法(private方法本质上属于final方法,因为不能被子类访问)之外,其它所有的方法都是动态绑定,这意味着通常情况下,我们不必判定是否应该进行动态绑定—它会自动发生。final方法会使编译器生成更有效的代码,这也是为什么说声明为final方法能在一定程度上提高性能(效果不明显)。如果
四种生成和解析XML文档的方法详解 众所周知,现在解析XML的方法越来越多,但主流的方法也就四种,即:DOM、SAX、JDOM和DOM4J下面首先给出这四种方法的jar包下载地址DOM:在现在的Java JDK里都自带了,在xml-apis.jar包里SAX:http://sourceforge.net/projects/sax/JDOM:http://jdom.org/downloads/index
java的xml学习[DOM4J方式解析XML文档] 使用这种方式解析XML文档可以分为两步: 1. 创建一个SAXReader对象reader; 2. 通过reader对象的read方法加载xml文件,获取Document对象。 首先从其dom4j官方网站下载dom4j-1.6.1.zip,解压得到如下文件: 在我们的项目中建立一个lib目录,将dom4j-
java的xml学习[JDOM方式解析XML文档] JDOM方式解析XML文档不是JAVA官方提供的,因此我们需要额外导入jar包,jdom的jar包的下载地址可以到JDOM的官方网站上下载。 下载后解压得到如下所示的文件: 我们通过以下的步骤将jar包导入到我们的项目中(在项目中点击右键Build Path->Add External Archives-jdom-2.0.5.jar):
用Java编写自己的机器人 Robot类的应用 很多时候,我们希望能够实现自动测试,自动演示功能,或者是其它的一些鼠标和键盘控制的应用(比如帮人点击广告赚利润等)。出于这样的目的,自从JDK1.3开始,它就为我们提供了一个用来产生本机输入事件的机器人类 — java.awt.Robot. 下面我来详细介绍Robot的功能及应用示例:一、Robot主要的功能 1. BufferedImage createScreen
快速排序 设要排序的数组是A[0]……A[N-1],首先任意选取一个数据(通常选用数组的第一个数)作为关键数据,然后将所有比它小的数都放到它前面,所有比它大的数都放到它后面,这个过程称为一趟快速排序。值得注意的是,快速排序不是一种稳定的排序算法,也就是说,多个相同的值的相对位置也许会在算法结束时产生变动。一趟快速排序的算法是:1)设置两个变量i、j,排序开始的时候:i=0,j=N-1;
分而治之策略 分而治之的概念 分而治之是一种使用递归解决问题的算法,主要的技巧是将一个大的复杂的问题划分为多个子问题,而这些子问题可以作为终止条件,或者在一个递归步骤中得到解决,所有子问题的解决结合起来就构成了对原问题的解决 2. 分而治之的优点和缺点 分而治之算法通常包括一个或者多个递归方法的调用,当这些调用将数据分隔成为独立的集合从
归并排序 归并排序是利用递归和分而治之的技术将数据序列划分成为越来越小的半子表,再对半子表排序,最后再用递归步骤将排好序的半子表合并成为越来越大的有序序列,归并排序包括两个步骤,分别为: 1)划分子表 2)合并半子表 首先我们来讨论归并算法,归并算法将一系列数据放到一个向量中,索引范围为[first,last],这个序列由两个排好序的子表构成,以索引终点
Java初始化顺序 1 无继承情况下的Java初始化顺序:class Sample{ Sample(String s) { System.out.println(s); } Sample() { System.out.println("Sample默认构造函数被调用");
Java的SystemTray类的使用方法 Java的SystemTray类的使用方法JDK1.6版增加了java.awt.SystemTray类,该类表示桌面的系统托盘,这对大多数系统托盘应用已经足够。如果这个类还是不能满足您的需求,可以试一试JDIC (JDesktop Integration Components)。JDK1.6的API文档,给出了这个类的用法。有人愿意把创建系统托盘的代码直接放在主应用代码中,笔者更倾
Java对MySQL数据库进行连接、查询和修改 0. 一般过程: (1) 调用Class.forName()方法加载驱动程序。 (2) 调用DriverManager对象的getConnection()方法,获得一个Connection对象。 (3) 创建一个Statement对象,准备一个SQL语句,这个SQL语句可以是Statement对象(立即执行的的语句)、PreparedStatement语句(预编译的语
java的xml学习[使用SAX解析XML文件] DOM:文档驱动。DOM在解析文件之前把整个文档装入内存,处理大型文件时其性能很差,是由于DOM的树结构所造成的,此结构占用的内存较多。 SAX(simple API for XML)采用事件驱动的方式解析文档。简单点说,如同在电影院看电影一样,从头到尾看一遍就完了,不能回退(DOM可来来回回读取)在看电影的过程中,每遇到一个情节,一段泪水,一次擦肩,你都会调动大脑和神经去接收或处理
java与xml学习[DOM方式解析XML文件] xml文件被广泛应用于各种领域,例如网络数据的传输和软件配置文件的设置。例如:最近很流行的ajax技术就是基于xml、 javascript、html的技术通过发送XHR(xml http request)的机制进行实现,再如:聊天工具QQ的配置文件: xml文件是一种树形的结构(称为节点树),最上层是根节点。 下面是一个简单的xml文件:
java多线程—–锁 在Java5中,专门提供了锁对象,利用锁可以方便的实现资源的封锁,用来控制对竞争资源并发访问的控制,这些内容主要集中在java.util.concurrent.locks 包下面,里面有三个重要的接口Condition、Lock、ReadWriteLock。Condition:Condition 将 Object 监视器方法(wait、notify 和 notifyAll)分解成截然不同的
良好的 Java 习惯用法总结 在Java编程中,有些知识 并不能仅通过语言规范或者标准API文档就能学到的。在本文中,我会尽量收集一些最常用的习惯用法,特别是很难猜到的用法。(Joshua Bloch的《Effective Java》对这个话题给出了更详尽的论述,可以从这本书里学习更多的用法。)我把本文的所有代码都放在公共场所里。你可以根据自己的喜好去复制和修改任意的代码片段,不需要任何的凭证。实现equals
使用JAVA读写Properties属性文件 Properties属性文件在JAVA应用程序中是经常可以看得见的,也是特别重要的一类文件。它用来配置应用程序的一些信息,不过这些信息一般都是比较少的数据,没有必要使用数据库文件来保存,而使用一般的文本文件来保存,如果是通过File直接保存的话,可能在存储和读取上都不是很方便,但如果保存为Properties文件就不一样了,属性文件都有键值对应的,在JAVA的包中,有提供专门的操作属性文件的类。这
Java多线程-工具篇-BlockingQueue 前言: 在新增的Concurrent包中,BlockingQueue很好的解决了多线程中,如何高效安全“传输”数据的问题。通过这些高效并且线程安全的队列类,为我们快速搭建高质量的多线程程序带来极大的便利。本文详细介绍了BlockingQueue家庭中的所有成员,包括他们各自的功能以及常见使用场景。认识BlockingQueue阻塞队列,顾名思义,首先它是一个队列,而一个
UML类图几种关系的总结 在UML类图中,常见的有以下几种关系: 泛化(Generalization), 实现(Realization),关联(Association),聚合(Aggregation),组合(Composition),依赖(Dependency) 1. 泛化(Generalization) 【泛化关系】:是一种继承关系,表示一般与特殊的关系,它指定了子类如何特
正则表达式–零宽断言详解 元字符( [ { \ ^ $ | ) ? * + .预定义的特殊字符字符正则描述\t/\t/制表符//制表符\r/\r/回车符\f/\f/换页符\a/\a/alert字符\e/\e/escape字符\cX
Java正则表达式(二) Matcher类: 使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中 ()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的, 以及这些组和组的下标怎么对应的. 下面我们看看一个小例子,来说明这个问题引用\w(\d\d)(\w+)这个正则表达式有三个组: 整个\w(\d\d)(\w+) 是第0组 group(0)
用java写的贪吃蛇游戏 //************************************************************//游戏:每次产生5个食物,通过上下左右键控制蛇的运动方向//*************************************************************//**************************************
java 小程序 用java写的计算器程序: import java.awt.*;import java.awt.event.*;import javax.swing.*;public class Calculator extends JFrame{ private Container container; private GridBagLayout layout; private GridBa
用java写的俄罗斯方块,并有详细的注释. /**虚拟的单个方格类,控制方格的颜色*/class RussiaBox implements Cloneable { private boolean isColor; public RussiaBox(boolean isColor) { this.isColor = isColor; } /* *设置颜色 */ public void setColor(bo
Java正则表达式 正则表达式在处理文本方面用处非常大,最早像在Perl和awk语言中,提供了这种机制,Java在Java 2中也增加了正则表达式这个包java.util.regex。这个包为用户使用正则表达式,提供了易用而全面的支持。我的研究方向是web挖掘。从网页中提取内容,处理文本,当然需要正则表达式这个强大的工具了。 一、首先我们看一下怎么使用正则表达式的一个例子: A Matcher examine
Java实现Immutable Class(不可变类)要点 Java中很多class都是immutable,像String,Integer等,它们通常用来作为Map的key.那么在实现自定义的Immutable的Class的时候,应该注意哪些要点呢? a)Class 应该定义成final,避免被继承。b)所有的成员变量应该被定义成final。c)不要提供可以改变类状态(成员变量)的方法。【get 方法不要把类里的成员变量让外部客服端引用
JAVA的StringBuffer类 StringBuffer类和String一样,也用来代表字符串,只是由于StringBuffer的内部实现方式和String不同,所以StringBuffer在进行字符串处理时,不生成新的对象,在内存使用上要优于String类。 所以在实际使用时,如果经常需要对一个字符串进行修改,例如插入、删除等操作,使用StringBuffer要更加适合一些。 在
用 new 关键字对一个String 变量赋值直接赋值有什么不同 String str1="ABC"; 和String str2 = new String("ABC"); 有什么区别。 String str1="ABC" 可能创建一个对象或者不创建对象,如果"ABC"这个字符串在java String池里不存在,会在java String池创建这个一个String对象("ABC").如果已经存在,str1直接reference to 这个Stri
JAVA重载(overload)和覆盖(override)中你所不知道的陷阱 大家都知道重载是指在同一个类中,定义了有相同名称但是有不同参数类型的方法时,到底调用那一个方法会根据参数类型来选择.我们来看下面这个例子:public class ParentClass {}public class ChildClass extends ParentClass{}public class Test { public void testOverLoad(Paren
java自带线程池和队列详细讲解 一简介线程的使用在java中占有极其重要的地位,在jdk1.4极其之前的jdk版本中,关于线程池的使用是极其简陋的。在jdk1.5之后这一情况有了很大的改观。Jdk1.5之后加入了java.util.concurrent包,这个包中主要介绍java中线程以及线程池的使用。为我们在开发中处理线程的问题提供了非常大的帮助。二:线程池线程池的作用:线程池作用就是限制系统中执行线程的数量。
sleep()和 wait()有什么区别 sleep 就是正在执行的线程主动让出cpu,cpu去执行其他线程,在sleep 指定的时间过后,cpu才会回到这个线程上继续往下执行,如果当前线程进入了同步锁,sleep方法并不会释放锁,即使当前线程使用sleep 方法让出了cpu,但其他被同步锁挡住了的线程也无法得到执行。wait是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其他
Java 线程池的原理与实现 建议:在阅读本文前,先理一理同步的知识,特别是syncronized同步关键字的用法。关于我对同步的认识,要缘于大三年的一本书,书名好像是 Java 实战,这本书写得实在太妙了,真正的从理论到实践,从截图分析到.class字节码分析。哇,我想市场上很难买到这么精致的书了。作为一个Java爱好者,我觉得绝对值得一读。我对此书印象最深之一的就是:equal()方法,由浅入深,经典!还有就是
Java 中的异常处理机制的简单原理和应用 异常是指java 程序运行时(非编译)所发生的非正常情况或错误,与现实生活中的事件很相似,现实生活中的事件可以包含事件发生的时间、地点、人物、情节等信息,可以用一个对象来表示,Java 使用面向对象的方式来处理异常,它把程序中发生的每个异常也都分别封装到一个对象来表示的,该对象中包含有异常的信息。 Java 对异常进行了分类,不同类型的异常分别用不同的Java 类表示,所有异常的根类为java
java String被设计成不可变(immutable)类 // 编译错误public class test{ private String s = "Hello "; public static void main(String[] args) { s = s+"World!"; System.out.print(s); }}编译通不过 必须是如下形式// 正确public class test{ private stat
JTabbedPane,JScroolPane,JScrolBa的使用 1:JTabbedPane的使用:类层次结构图:java.lang.Object --java.awt.Component --java.awt.Container --javax.swing.JComponent --javax.swing.JTabbedPaneJTabbedPane构造函数:JTabb
JSplitPane的使用 Split Pane(分割面版)一次可将两个组件同时显示在两个显示区中,若你想要同时在多个显示区显示组件,你便必须同时使 用多个Split Pane。JSplitPane提供两个常数让你设置到底是要水平分割还是垂直分割。这两个常数分别是:HORIZONTAL_SPIT, VERTICAL_SPLIT.除了这两个重要的常数外,JSplitPane还提供许多类常数让你使用,我们会在下面的例子中介绍比较
BoxLayout进行Swing布局 引言 在用户使用 Java Swing 进行用户界面开发过程中,会碰到如何对 Java Swing 的控件进行布局的问题。Swing 的控件放置在容器 (Container) 中,容器就是能够容纳控件或者其它容器的类,容器的具体例子有 Frame、Panel 等等。容器需要定义一个布局管理器来对控件进行布局管理,Swing 当中提供的主要的布局管理器有 FlowLayout、BorderL
socket简单传输文件例子 package com.wf.demo.socket.socketfile;import java.net.*;import java.io.*;/** * 2.socket的Util辅助类 * * @author willson * */public class ClientSocket { private String ip; private int port
Jtable表头的第一列为JCheckBox的绘制方法 import java.awt.BorderLayout;import java.awt.Component;import java.awt.Dimension;import java.awt.EventQueue;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import java.util.V
Swing编程边框(Border)的用法总结 对参数Border对象的定义主要通过BorderFactory进行,这也是本文讨论的重点,根据API的解释:BorderFactory提供标准Border对象的工厂类。在任何可能的地方,此工厂类都将提供对已共享Border实例的引用。下面讨论具体的应用方法:BorderFactory.createLineBorder(Color.red, 3) //线边框BorderFac
JTable设置多行表头 BasicTableHeaderUI 绘制 package com.yao.table;import javax.swing.*;import javax.swing.plaf.basic.BasicTableHeaderUI;import javax.swing.table.JTableHeader;import java.awt.*;/**********************************************
JTable组件 在使用JTable以前,我们先看一下它的构造函数有哪些, 以及应该如何使用:JTabel构造函数:JTable():建立一个新的JTables,并使用系统默认的Model.JTable(int numRows,int numColumns):建立一个具有numRows行,numColumns列的空表格,使用的是DefaultTableModel.JTable(Object[][]
Java判断线程池所有任务是否执行完毕 import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; /** * @author nineday */ public class Test { public static void main(String args[]) throws Int