Java

Effective Java (并发)

六十六、同步访问共享的可变数据:在Java中很多时候都是通过synchronized关键字来实现共享对象之间的同步的。事实上,对象同步并不仅限于当多个线程操作同一可变对象时,仍然能够保证该共享对象的状态始终保持一致。与此同时,他还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护的之前所有的修改效果。Java的语言规范保证了读写一个变量是原子的,除非这个变量的类型为long或double。换句话说,读取一个非long或double类型的变量

系统 2019-08-29 22:02:40 1950

Java

java的动态性编程(二)——引入Reflection

使用反射不同于常规的Java编程,其中它与元数据--描述其它数据的数据协作。Java语言反射接入的特殊类型的原数据是JVM中类和对象的描述。反射使您能够运行时接入广泛的类信息。它甚至使您能够读写字段,调用运行时选择的类的方法。反射是一种强大的工具。它使您能够创建灵活的代码,这些代码可以在运行时装配,无需在组件之间进行源代表链接。但反射的某些方面存在一些疑问。在本文中,我将深入讨论为什么您可能不希望在程序中使用反射,以及您应该这样做的理由。在了解了权衡性分析

系统 2019-08-29 22:01:14 1950

Java

Java对象持久化技术之Hibernate

Hibernate是Java应用和关系数据库之间的桥梁,它负责Java对象和关系数据之间的映射。Hibernate内部封装了通过JDBC访问数据库的操作,向上层应用提供了面向对象的数据访问API。在Java应用中使用Hibernate包含以下步骤。(1)创建Hibernate的配置文件。(2)创建持久化类。(3)创建对象-关系映射文件。(4)通过HibernateAPI编写访问数据库的代码。本章通过一个简单的例子helloapp应用,演示如何运用Hiber

系统 2019-08-12 09:30:28 1950

Java

JAVA面试题解惑系列(六)——字符串(String)

好东西分享上一次我们已经一起回顾了面试题中常考的到底创建了几个String对象的相关知识,这一次我们以几个常见面试题为引子,来回顾一下String对象相关的其它一些方面。String的length()方法和数组的length属性String类有length()方法吗?数组有length()方法吗?String类当然有length()方法了,看看String类的源码就知道了,这是这个方法的定义:Java代码publicintlength(){returnco

系统 2019-08-12 09:30:16 1950

Java

Java Annotation手册

版权声明:本文可以自由转载,转载时请务必以超链接形式标明文章原始出处和作者信息及本声明作者:cleverpig(作者的Blog:http://blog.matrix.org.cn/page/cleverpig)原文:http://www.matrix.org.cn/resource/article/44/44055_Java+Annotation+Reflect.html关键字:java,annotation,reflect前言:在上篇文章《JavaAnn

系统 2019-08-12 09:30:13 1950

Java

Java程序之内存简单分析

对于不同的系统,程序运行内存的分配可能略有不同,这里只以最基本的4块做介绍。堆内存(Heap)是用于动态给new出来的对象分配空间(每个对象大小不定),堆内存比较大;对象的引用(一般在方法体内,new对应之后赋给一个引用),可以看成局部变量,在stack中分配空间(即栈内存);基础类型变量只分配一块内存(stack),引用类型变量占两块内存(heap,stack)。①Load到内存区(程序----我们编写的代码是存在硬盘上面的);②找到main方法开始执行

系统 2019-08-12 09:30:09 1950

Java

java中函数使用变长参数

java中函数使用变长参数2010-01-0121:09当参数个数不确定时,开发者很想使用变长参数,让调用者以更灵活的方式调用。此种方法和方法重载有同样的效果,但是个人感觉比方法重载用着简洁。一直知道Java支持变长参数函数,然而项目中一直没有用到,前几天在项目中看到前辈大量使用变长参数,感觉有很好的效果。特别是API设计中能够解决很多不确定因素。下面是一个简单的变长参数示例变长参数使用的形式是Type...argsName,即类型+省略号+参数名Java

系统 2019-08-12 09:29:32 1950

Java

Java正则表达式(二)

转自http://fuliang.iteye.com/blog/175035Matcher类:使用Matcher类,最重要的一个概念必须清楚:组(Group),在正则表达式中()定义了一个组,由于一个正则表达式可以包含很多的组,所以下面先说说怎么划分组的,以及这些组和组的下标怎么对应的.下面我们看看一个小例子,来说明这个问题引用\w(\d\d)(\w+)这个正则表达式有三个组:整个\w(\d\d)(\w+)是第0组group(0)(\d\d)是第1组gro

系统 2019-08-12 09:29:31 1950

Java

Java Map按键排序和按值排序

Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sortbykey),按值排序(sortbyvalue)。按键排序(sortbykey)jdk内置的java.util包下的TreeMap既可满足此类需求,原理很简单,其重载的构造器之一有一个参数,该参数接受一个比较器,比较器定义比较规则,比较规则就是作用于TreeMap的键,据此可实现按键排序。publicMapsortMapBy

系统 2019-08-12 09:29:29 1950

Java

java validator的原理与使用

http://developer.51cto.com/art/201104/253257_1.htmavaEE6核心特征:BeanValidation特性概述(2)2011-04-0214:33张冠楠陈志娴IBMdeveloperWorks字号:T|T数据验证在Java分层结构的应用开发中占据着重要位置。JavaEE6提出了BeanValidation规范,使用注解的方式对JavaBean进行约束验证,不局限于某一层次或者某一编程模型,灵活易用。本文将向您

系统 2019-08-12 09:27:17 1950

Java

Sublime run Java code after compiling

很简单.Preferences--browsepackages--打开java文件夹--编辑Java.sublime-build{"cmd":["javac","$file"],"cmd":["java","$file_base_name"],"file_regex":"^(...*?):([0-9]*):?([0-9]*)","selector":"source.java","encoding":"utf-8"}sublimetext.com的forum

系统 2019-08-12 09:27:08 1950

Java

selenium 调用JS操作滚动条(java)来解决eleme

今天在运行自动化用例的时候,发现总是某个元素提示notclickable。分析原因有可能是页面右下角那个大大的top图标,刚好挡住了我要点击的元素。要解决就得拉动页面,就需要操作页面上的滚动条。使用了一个比较简单的方法,在这里记录下来:JavascriptExecutorJS=(JavascriptExecutor)driver;Stringhigh="scroll(0,10000);";//滚动到Y值10000像素的位置,一般10000就到页面的底部了,

系统 2019-08-12 09:27:07 1950

Java

java 连接sqlserver数据库语句

importjava.sql.*;/***java连接sqlserver数据库语句*@authorAdministrator**/publicclassMain{publicstaticvoidmain(String[]args)throwsSQLException{StringdriverName="com.microsoft.sqlserver.jdbc.SQLServerDriver";//加载驱动StringdbURL="jdbc:sqlserve

系统 2019-08-12 01:54:15 1950

Java

java database connect

Java数据库连接(JDBC)由一组用Java编程语言编写的类和接口组成。JDBC为工具/数据库开发人员提供了一个标准的API,使他们能够用纯JavaAPI来编写数据库应用程序。然而各个开发商的接口并不完全相同,所以开发环境的变化会带来一定的配置变化。本文主要集合了不同数据库的连接方式。一、连接各种数据库方式速查表下面罗列了各种数据库使用JDBC连接的方式,可以作为一个手册使用。1、Oracle8/8i/9i数据库(thin模式)Class.forName

系统 2019-08-12 01:53:04 1950

Java

Ubuntu12.04.3LTS安装Oracle Java 7

今天在ubuntu12.04LTS上安装Matlab时总是出错,显示拷贝jar包(cp“xx.jar”)出现错误,在网上搜索了一下发现原来是没有安装java。自己打算安装oracle官方的java版本,所以就进行了一下安装:(也可以使用软件源中的openjava)1.删除openjava安装包:sudoapt-getpurgeopenjdk*2.安装oraclejava7,打开终端运行下面的命令(这里是有错误的):sudoadd-apt-repositor

系统 2019-08-12 01:52:19 1950