Web 实时推送技术的总结

2015-08-22 Web

随着 Web 的发展,用户对于 Web 的实时的要求也越来越高 ,比如,工业运行监控、Web 在线通讯、即时报价系统、在线游戏等,都需要将后台发生的变化主动地、实时地传送到浏览器端,而不需要用户手动地刷新页面。本文对过去和现在流行的 Web 实时推送技术进行了全面的总结。


SVN 中的 truck、branch 和 tag

2015-07-29 SVN

问题

使用 SVN 进行项目的版本管理时, truck(主干)、branch(分支) 和 tag(标签) 是如何区别?何时使用他们?



RHEL\CentOS 7 下 MySQL 连接数被限制为214个

2015-07-09 CentOS MySQL

问题

项目中,由于连接数过多,提示“Too many connections”,需要增加连接数。我在 /etc/my.cnf中修改了

max_connections = 2000

但是, 实际连接数一直被限制在 214

mysql> show variables like "max_connections";
+-----------------+-------+
| Variable_name   | Value |
+-----------------+-------+
| max_connections | 214   |
+-----------------+-------+
1 row in set

MySQL max_connections 总是 214 。不能设大了?




Oracle VM VirtualBox 安装和使用

2015-06-01 VirtualBox

VirtualBox 是一款开源虚拟机软件。VirtualBox 是由德国 Innotek 公司开发,由Sun Microsystems 公司出品的软件,使用 Qt 编写,在 Sun 被 Oracle 收购后正式更名成 Oracle VM VirtualBox。Innotek 以 GNU General Public License (GPL) 释出 VirtualBox,并提供二进制版本及 OSE 版本的代码。使用者可以在VirtualBox上安装并且执行 Solaris、Windows、DOS、Linux、OS/2 Warp、BSD 等系统作为客户端操作系统。

VirtualBox 号称是最强的免费虚拟机软件,它不仅具有丰富的特色,而且性能也很优异!它简单易用,可虚拟的系统包括 Windows(从 Windows 3.1 到 Windows8、Windows Server 2012,所有的 Windows 系统都支持)、Mac OS X(32bit和64bit都支持)、Linux(2.4和2.6)、OpenBSD、Solaris、IBM OS2 甚至 Android 4.0 系统等操作系统!使用者可以在 VirtualBox 上安装并且运行上述的这些操作系统! 与同性质的 VMware 及 Virtual PC 比较下,VirtualBox 独到之处包括远端桌面协定(RDP)、iSCSI 及 USB 的支持,VirtualBox 在客户端操作系统上已可以支持USB 2.0的硬件装置,不过要安装 VirtualBox Extension Pack。


Webmin 安装和使用

2015-05-29 Webmin

Webmin 是目前功能最强大的基于 Web 的 Unix 系统管理工具。管理员通过浏览器访问Webmin 的各种管理功能并完成相应的管理动作。目前 Webmin 支持绝大多数的Unix系统,这些系统除了各种版本的 linux 以外还包括:AIX、HPUX、Solaris、Unixware、Irix 和 FreeBSD 等。



Linux 常用命令

2015-05-21 Linux

性能分析

vmstat

虚拟内存统计

用法

Usage:
 vmstat [options] [delay [count]]

Options:
 -a, --active           active/inactive memory
 -f, --forks            number of forks since boot
 -m, --slabs            slabinfo
 -n, --one-header       do not redisplay header
 -s, --stats            event counter statistics
 -d, --disk             disk statistics
 -D, --disk-sum         summarize disk statistics
 -p, --partition <dev>  partition specific statistics
 -S, --unit <char>      define display unit
 -w, --wide             wide output
 -t, --timestamp        show timestamp

 -h, --help     display this help and exit
 -V, --version  output version information and exit





MySQL 使用教程

2015-05-10 MySQL

关于 MySQL

MySQL 是最流行的开源数据库。

本文简明的讲解了 MySQL 如何下载安装到使用的整个过程。


Help&Manual 使用教程

2015-05-08 Help&Manual

关于 Help&Manual

Help&Manual 一个所见即所得的帮助文件制作工具,支持打印功能。还可以用来制作非常专业的使用手册、HTML页面及RTF、PDF 格式的文件。值得一提的是,它的OLE链接功能十分强大,支持26种文件格式,而且还支持未定义的某些文件格式的文本、图形、声音、动画的链接,真可谓无所不能。

该软件现在能够完美支持中文。

注意: 该软件是收费的,但可以下载试用


Spring singleton bean 与 prototype bean 的依赖

2015-05-07 Spring

Spring支持不同的scope。不同scope在使用上是有差异的,比如singleton与prototype。

问题背景

我们知道,Spring bean 默认的 scope 是 singleton(单例),但有些场景(比如多线程)需要每次调用都生成一个实例, 此时 scope 就应该设为 prototype。如:



MINA 实现聊天功能

2015-04-12 MINA

在《MINA 快速入门》一文中,我们介绍了如何利用 MINA 快速构建一个 Time Server(时间服务器)。在《Netty 实现聊天功能》一文,我们也介绍了如何用 Netty 实现聊天功能。由于 MINA 和 Netty 是同一个作者,架构类似,如果你掌握其中一个,学习另外一个也不是难事。现在我们就用 MINA 来实现聊天功能。

##准备

  • JDK 7+
  • Maven 3.2.x
  • MINA 2.x
  • Eclipse 4.x

Java switch 语句使用 String 参数

2015-04-10 Java

当我尝试在 switch 语句使用 String 参数时(注意ctrType为字符串)

	switch (ctrType) {
	case "01" : 
		exceptionType = "读FC参数数据";
		break;
	case "03" :
		exceptionType = "读FC保存的当前表计数据";
		break;
	default:
		exceptionType = "未知控制码:"+ctrType;
	}

MINA 快速入门

2015-04-04 MINA

Apache MINA 是一个网络应用的框架,可以帮助用户开发的高性能、高扩展性的网络应用程序。它通过 Java NIO 提供了一个抽象的事件驱动的异步 API 用在不同传输协议上,比如 TCP/IP 和 UDP/IP 等。

本教程介绍了如何构建基于 MINA 的应用的过程。这个教程介绍的是构建一个 Time Server(时间服务器)。


如何查看 JAR 包的源代码

2015-04-02 Java

Java 项目的编译文件经常被打包成 JAR(Java Archive,Java 归档文件)文件,当然,作为学习,有时候也非常想看到这个 JAR 被打包前的源代码是怎么样的。 下面提供几种查看 JAR 包的源代码方式。

##环境

  • JDK 7+
  • Maven 3.2.x
  • Eclipse 4.x

Java 注释规范详解

2015-04-01 Java

在 Java 的编写过程中我们需要对一些程序进行注释,除了自己方便阅读,更为别人更好理解自己的程序,所以我们需要进行一些注释,可以是编程思路或者是程序的作用,总而言之就是方便自己他人更好的阅读。

##注释类型

Java 有两类注释: implementation comments(实现注释)和 documentation comments(文档注释)。 实现注释常见于 C++,使用 /*...*/,和 //。文档注释 (也称为”doc comments”) 是 Java 独有的,使用 /**...*/。文档注释可以通过 javadoc 工具转成 HTML 文件。



使用 Eclipse 优化工具 Optimizer for Eclipse

2015-03-19 Eclipse

##Optimizer for Eclipse 介绍

官网: http://zeroturnaround.com/free/optimizer-for-eclipse/

顾名思义,Optimizer for Eclipse 这个插件主要是解决 Eclipse 性能优化问题:

###1.低内存分配

较低的最小堆大小不断将导致 JVM 分配额外的内存。当你没有足够的内存,垃圾收集频繁的 JVM 会减慢你的体验。

###2.慢类验证

类在 Eclipse 执行验证类和插件类显著减慢 JVM 的启动。

###3.大索引和历史

随着时间的推移,Eclipse 会生成一个庞大的历史和索引文件缓存。这些文件在 RAM 和 SSD 硬盘使 Eclipse 迟缓,反应迟钝。


在 Tomcat 里面部署 Web 项目的几种方式

2015-03-14 Tomcat

1.直接把项目复制到 Tomcat 安装目录的 webapps 目录中,这是最简单的一种Tomcat项目部署的方法,也是初学者最常用的方法。

2.在 Tomcat 安装目录的 conf 文件夹,修改配置文件 server.xml,在<host></host>之间插入如下语句。

<Context path="/emsc" docBase="D:\emsc" debug="0" privileged="true"></Context>

其中,docBase 为设置项目的路径。

将 path 设为 “/” ,则以无项目名称形式部署、访问

3.在 conf 目录中,在Catalina\localhost(此处需要注意目录的大小写)目录下新建一个XML文件,任意命名,只要和当前文件中的文件名不重复即可,代码如下。

<Context path="/emsc" docBase="D:\emsc" debug="0" privileged="true"></Context>

Netty 实现聊天功能

2015-03-01 Netty

Netty 是一个 Java NIO 客户端服务器框架,使用它可以快速简单地开发网络应用程序,比如服务器和客户端的协议。Netty 大大简化了网络程序的开发过程比如 TCP 和 UDP 的 socket 服务的开发。更多关于 Netty 的知识,可以参阅《Netty 4.x 用户指南》(https://github.com/waylau/netty-4-user-guide

下面,就基于 Netty 快速实现一个聊天小程序。

准备

  • JDK 7+
  • Maven 3.2.x
  • Netty 4.x
  • Eclipse 4.x


使用 Google Gmail 邮箱服务

2015-02-27 Gmail

总所周知,Google 的大部分服务在华已经被墙,其中也包括 Gmail 。为了收取 Gmail 的邮件,也是要进行一番折腾的。当然,你可以施展各种翻墙技能(文章最后会提供一堆的翻墙方法)。如果不想折腾,只是想收发 Gmail 的邮件,下面的方法更加简单

##修改 hosts

将如下内容加入hosts之后(位置一般在C:\Windows\System32\drivers\etc\hosts)。

173.194.65.108 imap.gmail.com 
173.194.65.108 pop.gmail.com 
173.194.193.108 smtp.gmail.com 

##使用第三方邮箱客户端收发邮件

可以使用 outlook,FOXMAIL 等客户端软件,设置的你 Gmail 邮箱账号,就能收发邮件了。

##附录:翻墙技能

##参考


Gradle 2.3 发布

2015-02-27 Gradle

2月16日,Gradle 团队发布了 2.3。可以在 http://gradle.org/downloads 进行下载。

此版本的 Gradle 带来了一些漂亮的新功能来管理依赖和 IDE 的支持,以及对一些核心插件的改进。

期待已久的特性–具有访问 metadata artifacts 的能力 如 ivy.xml 和 pom.xml ,这个 Gradle 提供相关依赖解决。使用 Artifact Query API,你现在可以直接访问这些原始 metadata artifacts。这将对于生成一个脱机存储库是非常有用的,可以用来检查文件的 metadata,以及更多。

对于 Gradle IDE 的支持在不断提高, Gradle 2.3 通过在 IDE 插件修复大量 bug 而带来增强的 Gradle 工具 API 。值得注意的是,这个版本通过 eclipse-wtp 插件 带来更好的集成的 Eclipse Web Tools Platform 。

一如既往,这个 Gradle 发布受益于大量的社会贡献。这些包括对 antlr的大幅增强,比较了应用插件和工具,以及许多错误修复和改进。

更多关于 Gradle 的知识,可以关注 https://github.com/waylau/Gradle-2-User-Guide, 这里提供了最新的 Gradle 的中文翻译。

##参考:


突破 URL 传值限制

2015-02-13 Web

##问题

window.location = url 方法 当传值url 太长时,服务器无法正常接收。

比如下面,当 rowsData 数据量过大时,服务器请求失败。

window.location='rest/files/excel/easyui-datagird?fileName=' + fileName + '&columns='+columns2+'&rowsData='+rowsData;

##原因

使用浏览器发送 GET 请求会受浏览器 URL 长度的限制。而 window.location.href 就是 GET 请求。



使用 Apache POI 处理 Microsoft Office 文档

2015-01-25 POI

##POI 概述

Apache POI 项目的使命是创造和维护 Java API 操纵各种格式的文件,其中包括基于 Office Open XML 标准(OOXML)和微软的OLE 2 Compound Document 格式(OLE2)。总之,你可以使用 Java 读写 MS Excel 文件。此外,您可以使用 Java 读取和写入 MS Word 和 MS PowerPoint 文件。Apache POI 是你的 Java Excel 解决方案(用于Excel 97-2008)。包含了一个完整的 API 用于移植其他 OOXML 和OLE2 格式。

OLE2 文件包括了 Microsoft Office 文件,比如 XLS, DOC, PPT 以及 MFC 的序列化 API 为基础的文件格式。项目提供 OLE2 Filesystem (POIFS)OLE2 Document Properties (HPSF) 等 API。

Office OpenXML Format 是 Microsoft Office 2007 和 2008 中新的基于 XML 的标准。包括 XLSX, DOCX 和 PPTX。该项目提供了一个低级别的 API 使用 openxml4j来支持 Open Packaging Conventions(开放打包约定)。

针对每个 现存的 MS Office 模块组件,试图提供一个共同的高级别 Java api 给 OLE2 和 OOXML 文档格式。Excel (SS=HSSF+XSSF) Word (HWPF+XWPF),PowerPoint (HSLF+XSLF),Outlook (HSMF), Visio (HDGF), TNEF (HMEF), 和 Publisher (HPBF).

该项目尽可能与其他项目合作提供此功能。比如:Cocoon提供 HSSF 的序列化;与Open Office.org合作处理 XLS 格式;和 Tika/ Lucene提供格式解释器。


调试异步加载页面中的js文件

2015-01-17 JavaScript

问题

在使用 EasyUI 时,采用了异步加载 div 页面的方式,来优化页面的性能。但是在浏览器 debug 时,发现 div 页面中的 js 文件是不可见的,即无法断点调试。

比如,我自己写了一个 entMgt 的模块 div页面,里面引用了 entMgt.js

但是 debug ,却见不到该 js 文件

解决

就是在需要调试的 js 文件顶部加一行代码:

//# sourceURL=entMgt.js

搞定

参考引用

  • https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Errors/Deprecated_source_map_pragma?utm_source=mozilla&utm_medium=firefox-console-errors&utm_campaign=default


Spirng 4 、Hibernate 4 事务管理

2015-01-03 Spring Hibernate

建议将 Hibernate SessionFactory 交给 Spring 进行事务管理,在 applicationContext.xml 里面配置

<bean id="sessionFactory"
	class="org.springframework.orm.hibernate4.LocalSessionFactoryBean">
	<!-- 数据源 -->
	<property name="dataSource" ref="dataSource" />

	<!-- hibernate的相关属性配置 -->
	<property name="hibernateProperties">
		<props>
		...
</bean>

<!-- 定义事务管理 -->
<bean id="transactionManager"
	class="org.springframework.orm.hibernate4.HibernateTransactionManager">
	<property name="sessionFactory" ref="sessionFactory" />
	<!-- 自动扫描实体对象 com.waylau.entity 的包结构中存放实体类 -->
	<property name="packagesToScan" value="com.waylau.entity" />
</bean>

使用 SessionFactory

@Autowired
private SessionFactory sessionFactory;
 
public Session getSession() {
    return sessionFactory.getCurrentSession();
}

Way Lau

Software Engineer and Full Stack Developer, now work and live in Shenzhen, China. Detail

Donate

See the list of Donors.