分类 编程 下的文章

内容

  • 基本的独立数学函数根据涉及的主要数字类型分为IntMathLongMathDoubleMathBigIntegerMath。这些类具有并行结构,但每个类只支持函数的相关子集。请注意,在com.google.common.primitives类中也可以找到类似的函数,它们本质上不那么数学化。
  • 为单个和成对的数据集提供了各种统计计算(平均值、中位数等)。从阅读本文开始,而不仅仅是浏览Javadoc。
  • LinearTransformation 表示 y = mx + b的两个值之间的线性变换; 例如,英尺和米之间的换算,或者凯尔文和摄氏温度之间的换算。

示例:

int logFloor = LongMath.log2(n, FLOOR);

int mustNotOverflow = IntMath.checkedMultiply(x, y);

long quotient = LongMath.divide(knownMultipleOfThree, 3, RoundingMode.UNNECESSARY); // fail fast on non-multiple of 3

BigInteger nearestInteger = DoubleMath.roundToBigInteger(d, RoundingMode.HALF_EVEN);

BigInteger sideLength = BigIntegerMath.sqrt(area, CEILING);

- 阅读剩余部分 -

Mako是什么?Moko是Python写的一个模板库,Python官网http://python.org/ 用的就是它哦。

(Mako官网地址:http://www.makotemplates.org/ ,可以下载安装包,推荐使用 easy_install 安装, 或者 通过 pip)

先来个简单的使用示例, 通过文本直接构建模板

from mako.template import Template
mytemplate = Template("hello world!")
print mytemplate.render()
mytemplate = Template("hello, ${name}!")
print mytemplate.render(name="jack")

通过文件构建模板

mytemplate = Template(filename='/docs/example.txt')
print mytemplate.render()

- 阅读剩余部分 -

Python 环境使用 MySQL, 需要安装 Python MySQL 的 lib 库, 早期需要手工从源码安装, 目前来说已经可以很方便的从 pypi 下载就可以了.

pip install MySQL-python

如果环境无网络,才需要手工安装, 可以按下述流程来安装.

tar zxvf MySQL-python-1.2.2.tar.gz
cd MySQL-python-1.2.2
python setup.py install

- 阅读剩余部分 -

事件总线

EventBus允许组件之间的发布-订阅式通信,而不需要组件彼此显式注册(因此可以相互感知)。它专门用于使用显式注册替代传统的Java进程内事件分发。它不是一个通用的发布-订阅系统,也不是用于进程间通信。

示例:

// Class is typically registered by the container.
class EventBusChangeRecorder {
  @Subscribe public void recordCustomerChange(ChangeEvent e) {
    recordChange(e.getChange());
  }
}
// somewhere during initialization
eventBus.register(new EventBusChangeRecorder());
// much later
public void changeCustomer()
  ChangeEvent event = getChangeEvent();
  eventBus.post(event);
}

- 阅读剩余部分 -

示例

List<Double> scores;
Iterable<Double> belowMedianScores = Iterables.filter(scores, Range.lessThan(median));
...
Range<Integer> validGrades = Range.closed(1, 12);
for(int grade : ContiguousSet.create(validGrades, DiscreteDomain.integers())) {
  ...
}

简介

区间,有时也称为范围,是特定域中的凸性(非正式说法为连续的或不中断的)部分。在形式上,凸性表示对 a<=b<=c, range.contains(a)range.contains(c)意味着 range.contains(b)

- 阅读剩余部分 -

选择排序(Selection sort)是一种简单直观的排序算法。它的工作原理如下。首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的主要优点与数据移动有关。如果某个元素位于正确的最终位置上,则它不会被移动。选择排序每次交换一对元素,它们当中至少有一个将被移到其最终位置上,因此对 n个元素的表进行排序总共进行至多n-1次交换。在所有的完全依靠交换去移动元素的排序方法中,选择排序属于非常好的一种。

- 阅读剩余部分 -

概述

Java的基本类型:byteshortintlongfloatdoublecharboolean

在从Guava查找原生类型方法之前,可以先查查Arrays类,或者对应的基础类型包装类,如Integer

原生类型不能当作对象或泛型的类型参数使用,这意味着许多通用方法都不能应用于它们。Guava提供了若干通用工具,包括原生类型数组与集合API的交互,原生类型和字节数组的相互转换,以及对某些原生类型的无符号形式的支持。

- 阅读剩余部分 -

快速排序(Quicksort)是对冒泡排序的一种改进。

快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

算法

快速排序使用分治法(Divide and conquer)策略来把一个序列(list)分为较小和较大的2个子序列,然后递归地排序两个子序列。

- 阅读剩余部分 -

介绍

InternetDomainName是一个用于解析和操作域名的工具。它可以用作验证器、组件提取器和值类型,以便以类型安全的方式传递域名。

然而,InternetDomainName行为在某些方面可能会令人吃惊,并可能导致调用代码的错误。本文档解决了这些问题。

详情

公共后缀和私有域

根据相关的RFC规范,可以保证InternetDomainName对象在语法上是有效的,但不能保证它与Internet上的实际可寻址域相对应。如果不进行域的网络查找并尝试与它联系,就不可能做到这一点,对于大多数情况,这是无法接受的开销。

不过,确定给定的域名是否代表Internet上的实际域名通常非常有用。为此,我们使用来自公共后缀列表Public Suffix List (PSL)的数据,该列表由Mozilla基金会维护。在InternetDomainName上有一些方法来确定给定域与PSL之间的关系。用最基本的术语来说,如果domain.haspublicsuffix()返回true,则该域可能对应一个实际的Internet地址;否则,它几乎肯定不会。

- 阅读剩余部分 -

Joiner

用分隔符把字符串序列连接起来也可能会遇上不必要的麻烦。如果字符串序列中含有null,那连接操作会更难。Fluent 风格的Joiner让连接字符串更简单。

Joiner joiner = Joiner.on("; ").skipNulls();
return joiner.join("Harry", null, "Ron", "Hermione");

上述代码返回”Harry; Ron; Hermione”。另外,useForNull(String)方法可以给定某个字符串来替换null,而不像skipNulls()方法是直接忽略nullJoiner也可以用来连接对象类型,在这种情况下,它会把对象的toString()值连接起来。

Joiner.on(",").join(Arrays.asList(1, 5, 7)); // returns "1,5,7"

- 阅读剩余部分 -