`
marlonyao
  • 浏览: 248797 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
下面的代码的作用是将电子书作为附件发送到163邮箱。   #!/usr/bin/env python # -*- coding: utf8 -*- import smtplib,email,os,sys from email.MIMEBase import MIMEBase from email.MIMEText import MIMEText from email.MIMEMultipart import MIMEMultipart from email import Encoders from email.header import Header def se ...
ConcurrentHashMap是Java 5中支持高并发、高吞吐量的线程安全HashMap实现。在这之前我对ConcurrentHashMap只有一些肤浅的理解,仅知道它采用了多个锁,大概也足够了。但是在经过一次惨痛的面试经历之后,我觉得必须深入研究它的实现。面试中被问到读是否要加锁,因为读写会发生冲突,我说必须要加锁,我和面试官也因此发生了冲突,结果可想而知。还是闲话少说,通过仔细阅读源代码,现在总算理解ConcurrentHashMap实现机制了,其实现之精巧,令人叹服,与大家共享之。     实现原理   锁分离 (Lock Stripping) ...
Java SE的每个版本都花费了大量的心思在同步性能优化上,Java SE 6也不例外。当多个线程需要同时访问共享的可变数据时,需要使用锁来同步多个线程的访问。根据竞争程度的不同,锁又可分为竞争性锁(contended lock)和非竞争性锁(u ...
下面的程序会输出什么?   public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World!"); } private static java.lang.reflect.Field valueField; static { try { valueField = String.class.getDeclaredField("value"); if (valueField != null) { ...
1 乱码的根源 在计算机中所有的数据最终都必须序列化成字节序列,如果数据恰好表示就是字符,这种序列化的过程称作编码 , 反之当要读取序列化的数据,要先反序列化,对字符数据这种过程称之为解码 。 编码和解码 ...
要谈编码就要先谈两个十分容易混淆的概念,一个是编码字符集 (Coded Character Set),一个是字符编码方案 (Character Encoding Scheme)。   编码字符集就是将字符集中每个字符赋一个数字代码 ,这是为了便于计算机处理。编码字符集一般 ...
架构 架构一般来说意味着: 从最高层将系统分解成多个部分。 一旦作出就很难改变的决定。 Ralph Johnson说: 架构是一种主观 的东西,是项目专家开发人员对系统设计的一种共同理解 。通常,共同理解是指系统包含哪些主要组件以及这些组件相互之间如何交互。Martin认为架构模式中最重要就是分层 。 企业应用程序 企 业应用程序通常也被称为"信息系统(Information Systems)"或”数据处理系统(Data Processing)"。企业应用程序的例子包括:薪水帐册、病人记录、船运跟踪、费用分析、信用等级、保险、供应链、会计、客户服务 ...
在同事的建议下写了一个自动从网上抓取火车票信息的程序,抓取完之后使用Gtalk来发送抓取到的信息。现在可以从火车票网,酷讯网和水木社区上抓取火车标信息。 需要的可以使用下载源代码。运行环境是JDK1.6,源文件没有带相关的jar包,我使用了Maven来管理依赖,因此最好用Maven来编译,主要的依赖是Smack(用来发送Gtalk消息)和HtmlUnit(用来抓取并分析网页)。 有两个配置文件config.properties和gtalk.properties。config.properties是主要设置抓取的过滤条件(出发城市、目的城市和关键字等)以及其它一些乱七八糟的东西,配置文件采用 ...
HSQL使用AVL Tree来实现索引,AVL Tree有如下特性:     * 它是一个二叉树。二叉树的每个结点有零个或1个左孩子,零个或1个右孩子,和一个父亲结点(除了根节点以外)。任何节点必须满足以下关系:左子树中每个结点都不能大 ...
HSQLDB does not use indexes to improve sorting of query results. But indexes have a crucial role in improving query speed. If no index is used in a query on a single table, such as a DELETE query, then all the rows of the table must be examined. With an index on one of the columns that is in the WHER ...
学习模式最好通过真实的例子来学习 Builder模式是一步一步创建一个复杂的对象,它允许用户可以只通过指定复杂对象的类型和内容就可以构建它们.用户不知道内部的具体构建细节. 它的目的是为了将构建复杂对象的过程 和它的部件 解耦。参考http://www.jdon.com/designpatterns/builder.htm。不过里面举的例子让人看了仍然对builder模式是一头雾水,因为这个例子完全无法展示构建的复杂性,只有在构建比较复杂时才有必要使用Builder模式。 真实例子:commons-lang中的ToStringBuilder, HashCodeBuilde ...
Global site tag (gtag.js) - Google Analytics