链接:Link 耗时:0.028s
一道简单的动态规划,主要思路就是:
用f[i,j]表示到达(i,j)的最长路径的长度。找到每个最高点,从其开始向四周的低处搜索。如果该点已搜过并且f值大于当前长度则退出回溯。直到达到某个最低点为止。
不多说了,直接上代码:
```pascal
const
delta :array [1..4, 1..2] of integer = ((-1, 0), (1, 0), (0, 1), (0, -1)); //四个方向向量
var
_: Integer;
name: string;
n, m, i, j, x: Integer;
ans: longint
继续阅读 »
七、新增原始数据类型Symbol
ES6中引入了一种新的原始数据类型Symbol,表示独一无二的值,它是javascript语言的第七种数据类型。其它六种分别是Undefined,Null,Boolean,String,Number,Object.
继续阅读 »
开发中常需要获取机器的mac地址或者ip,本文通过go获取机器上所有mac地址和ip,详细代码如下:
```go
package main
import (
"fmt"
"net"
)
func getMacAddrs() (macAddrs []string) {
netInterfaces, err := net.Interfaces()
if err != nil {
fmt.Printf("fail to get net interfaces: %v", err)
return macAddrs
}
继续阅读 »
最近稍微整理了下tbox的utils模块,发现里面有很多都是一些,之前放置的hash算法,例如:md5, sha1, crc32, adler32啊什么,比较凌乱。
因此我抽时间整理下这些hash算法,打算单独建立个hash算法模块,来放置各种大大小小的hash算法。
顺便把tbox里面用到的一些字符串hash算法,也做了些整理,一并归并到这个新模块中,例如比较常用的一些字符串哈希:
bkdr, fnv, fnv-1a, aphash, rshash, djb2, murmur, sdbm, blizzard ...
其中 bkdr 的效果比较好,因此目前作为tbox里面主要的string哈希来用,其他的hash虽然实现
继续阅读 »
baby_N1ES
题目提供两个文件,challenge.py和N1ES.py 。
虽然似乎在模仿AES,但是实际上明文和密文是一一映射的,复杂度不是恶心的100^48 而只是100*48 ,穷举是很快的。一个小障碍是N1ES.py 第71行的L, R = R, L ,这导致了明文的[0:8] 、[8:16]、[16:24]、[24:32]、[32:40]、[40:48] 分别对应的是密文的[8:16]、[0:8] 、[24:32]、[16:24]、[40:48]、 [32:40] ,写穷举脚本时需要注意。
crack.py
```python
import base64,string,N1ES
key = "wxy191i
继续阅读 »
本章是该书的第五章, 主要讲了方法引用和收集器
方法引用
形如:
java
artist -> artist.getName()
(String arg) -> arg.length()
这样的表达式, 可以简写为:
继续阅读 »
定时任务是非常常见的需求,比如定期的去汇总数据,定期的清除垃圾等。
Java 提供了很多定时任务的方案,下面简单的列举一下。
more
利用 thread 的sleep
新开一个线程,死循环运行,通过 sleep 的达到定时运行的效果。
public static void main(String[] args) {
final long timeInterval = 1000;
Runnable runnable = new Runnable() {
public void run() {
while (true) {
继续阅读 »
之前的一篇博客讲了AWS和Heat中AutoScaling的机制和大概的实现,本篇是上一篇的姊妹篇,主要讲autoscaling在heat中的简单使用。
环境准备
我们还是以一个模板为例,模板内容如下:
{
"HeatTemplateFormatVersion": "2012-12-12",
"Description": "Template which create a base autoscaling for launch base.",
"Parameters": {
"InstanceType": {
"Type": "String"
},
"ImageId": {
继续阅读 »
绝对路径
我们在本机写一些测试方法时,经常会直接把加载文件的路径写死,即写成绝对路径进行处理,毕竟这样节省时间。这里的例子我们忽略文件是否存在等异常问题。
String fileName = "/Users/summer/Documents/workspaces/test.properties";
Properties p = new Properties();
InputStream in = new FileInputStream(fileName);
p.load(in);
System.out.println(p);
通过上述方式我们可以在绝对路径下获取响应的配置文件。但是实际项目中如果加载资源文件,不可能写死路
继续阅读 »
基本上常用的项目有两种,一种是Java Project,另一种是Web Project,下面就以这两种项目为例,来阐释如何在项目中加载dll文件。
Java中调用dll的方式
System.load()
java
/**
*Loads the native library specified by the filename argument. The filename argument must be an absolute path name.
*/
public static void load(String filename)
//等价于
Runtime.getRuntime().load(name)
由JDK的说明文
继续阅读 »