你们中有许多人可能已经听到过有关CSS3的不少传言,但是我们现在能真正用到的CSS3技巧又有哪些呢?本文,我将向你展示一些与众不同的 CSS3技巧,这些技巧在一些主要的浏览器中表现良好(如Firefox,Chrome,Safari,Opera浏览器)。这些效果会在不支持的浏览器中降级渲染(如IE浏览器)。使用浏览器特定的声明,许多提议的CSS3样式都可以马上拿来使用。
各大浏览器 CSS3 和 HTML5 兼容速查表
支持 CSS3 和 HTML5 的浏览器越来越多,甚至包括最新版的 IE,当然,所谓支持仅仅是部分支持,因为 CSS3 和 HTML5 的W3C 规范都尚未形成。如果你现在就希望使用 CSS3 和 HTML5 创建你的站点,至少要对各个浏览器对这两种新技术的支持情况有一个全面了解。
需要指出的是,即使同一个浏览器的同一个版本,在 Mac 和 Windows 两个平台,它们对 CSS3 和 HTML5 的支持也并不一致。本文是一份 Chrome, Safari, Firefox, Opera, IE 5 大浏览器,在 Mac 和 Windows 两个平台,对 CSS3 和 HTML5 各种功能的详细支持情况清单。 阅读全文 >>
Logging tool for JDBC
jdbcdslog 是一款知名用来跟踪 JDBC 的全功能工具.
特征包括:
- 可挂接到数据库连接, 驱动或数据源上(XA, 连接池)
- 可记录 PreparedStatement 和 CallableStatement 调用所绑定的参数
- 可记录 ResultSet 对象中的查询记录行
- 可记录查询执行时间
- 支持多种日志引擎 (感谢 SLF4J, 你可以使用多数流行的日志组件库, 像 log4j, apache common logging, java logging 或者简单的输出到 System.out) 阅读全文 >>
亲历基本 OSGI 实例,进入另番思维领域
软件的模块越来越插件化发展了,连硬件都处处热插拔,软件更当如此。记原来有个 JPF(Java Plugin Framework),也能实现动态插件化,但要是有个业界标准的东西一般来说会更好的。于是轮到 OSGI(Open Service Gateway Initiative) 登台,OSGI 出来也有好几个年头了,应用也轰轰烈烈的,比如 Eclipse 3 开始不再使用原来的插件体系,完全用 OSGI 搭建。WebSphere 6.1 也全面改用 OSGI;JBoss、WebLogic、Spring DM,甚至是 BMW 车的控制系统中都得到了很好的应用。
前面讲到可以用 OSGI 作为你的微内核,微内核的好处可以打个这样的比方:一台 Linux 服务器出故障了,应用程序坏了、某些服务不能访问等,但只要它还来连入网络,SSH 还是活的,我们就有办法进去修复它,想安装、卸载什么都行。 阅读全文 >>
启动 Equinox 时出现 The System Bundle's start level can not be modified. 错误
使用 Eclipse 的 OSGI 实现 Equinox,通过 config.ini 配置文件在命令行时启动 Equinox 时,可以进到 osgi> 是提示符,但是除 org.eclipse.osgi_3.5.2.R35x_v20100126 是 STARTING 外,其他的 Bundle 都是 RESOLVED 状态,没法进入到 ACTIVE 状态,osgi> start xxx 也不行。
然后看目录 configuration 目录中生成的日志文件,是如下错误:
!SESSION 2010-03-30 11:40:40.156 -----------------------------------------------
eclipse.buildId=unknown
java.version=1.6.0_18
java.vendor=Sun Microsystems Inc.
BootLoader constants: OS=win32, ARCH=x86_64, WS=win32, NL=zh_CN
Command-line arguments: -console 阅读全文 >>
是同步方法还是 synchronized 代码?– 详解多线程同步规则
熟悉 Java 的多线程的一般都知道会有数据不一致的情况发生,比如两个线程在操作同一个类变量时,而保护数据不至于错乱的办法就是让方法同步或者代码块同步。同步时非原子操作就得同步,比如一个简单的 1.2+1 运算也该同步,以保证一个代码块或方法成为一个原子操作。
简单点说就是给在多线程环境中可能会造成数据破坏的方法,做法有两种,以及一些疑问:
1. 不论是静态的或非静态的方法都加上 synchronized 关键字,那静态的方法和非静态的方法前加上 synchronized 关键字有区别吗?
2. 或者在可疑的代码块两旁用 synchronized(this) 或 synchronized(someObject) 包裹起来,而选用 this 还是某一个对象--someObject,又有什么不同呢? 阅读全文 >>
Java NIO 应用 -- 使用内存映射文件实现进程间通信
一看到 Java NIO 的内存映射文件(MappedByteBuffer),让我立即就联想到 Windows 系统的内存映射文件。Windows 系统的内存映射文件能用来在多个进程间共享数据,即进程间的共享内存,是通过把同一块内存区域映射到不同进程的地址空间中,从而达到共享内存。
Java NIO 的内存映射文件和 Windows 系统下的一样,都能把物理文件的内容映射到内存中,那么 MappedByteBuffer 是否能用来在不同 Java 进程(JVM) 间共享数据呢?答案是肯定的,这样在通常的 Socket 方式来实现 Java 进程间通信之上又多了一种方法。 阅读全文 >>
共享内存在Java中实现和应用[转]
1、共享内存对应应用开发的意义
对熟知UNIX系统应用开发的程序员来说,IPC(InterProcess Communication)机制是非常熟悉的,IPC基本包括共享内存、信号灯操作、消息队列、信号处理等部分,是开发应用中非常重要的必不可少的工具。其中共享内存IPC机制的关键,对于数据共享、系统快速查询、动态配置、减少资源耗费等均有独到的优点。
对应UNIX系统来说,共享内存分为一般共享内存和映像文件共享内存两种,而对应Windows,实际上只有映像文件共享内存一种。所以Java应用中,也是只能创建映像文件共享内存。 阅读全文 >>
Java NIO 入门学习(读写文件)
我们用原有 IO 读写文件应该不会陌生了,顺带回顾一下,大致两种:
1. 在 InputStream 或 OutputStream 上读写字节或字节数组,读 InputStream 时用是否返回 -1 来判断是否到达末尾。
2. 包装成 Reader/Writer 可以直接读写字符串,进一步包装到 BufferedReader/BufferedWriter 就可以按行读写了。readLine() 时看是否返回 null 断定是否读完了最后一行。
现在我们要用 NIO 来读写文件,肯定是要用到 Channel 和 Buffer 了。一句话描述过程就是从 FileInputStream 得到的 FileChannel 中读取数据到 Buffer 中,再处理 Buffer 中的数据。看代码: 阅读全文 >>
Java NIO 入门学习(通道和缓冲区)
对于 NIO 来说,Channel(通道) 和 Buffer(缓冲区) 这两个东西是不得不提的,因为它们是 NIO 的核心对象,几乎每一个 I/O 操作都要它们。
通道是对原 I/O 流的模拟,但有不同的是它是双向的,不再像流那样分 InputStream 和 OutputStream,通道的双向性更好的反映了底层操作系统的真识情况。也不能像原 I/O 那样可以直接往流里写或读数据,在通道了传输数据必须经由缓冲区。有点类似原 I/O 流通过过滤器流 BufferedInputStream 和 BufferedOutputStream 来读写数据。
FileInputStream/FileOutputStream/RandomAccessFile/DatagramSocket/ServerSocket/Socket 的 getChannel() 方法可以获得相应类型的 Channel,Channel 的类型有 FileChannel/SocketChannel/SelectableChannel/DatagramChannel/ServerSocketChannel 等。 阅读全文 >>