个人技术分享


  • 首页

  • 归档

选择数组中最佳组合算法

发表于 2017-09-22

问题

有 N 个等高不等长的长方形,排列成 2 行。求 2 行长度差值最小的情况下长那行的长度。例如 {2,2,3},结果为 4。

[问题]

答案

计算出全部符合条件的组合数,再找出最大的组合数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
public class NChooseK {
private static long findOptimum(List<Integer> numbers, long maxSum) {
Set<Integer> sums = new HashSet<>(Collections.singletonList(0));
numbers.forEach(number -> {
Set<Integer> subSums = sums.stream().map(sum -> sum + number)
.filter(newSum -> newSum <= maxSum).collect(toSet());
sums.addAll(subSums);
});
return sums.stream().mapToLong(i -> i).max().orElse(0);
}
public static void main(String[] args) {
List<Integer> numbers = Arrays.asList(3, 7, 7, 5, 4);
long sum = numbers.stream().mapToLong(i -> i).sum();
long mid = sum / 2;
long optimum = findOptimum(numbers, mid);
long answer = sum - optimum;
System.out.println("Answer is " + answer);
}
}

Postman 离线安装指南

发表于 2017-09-07

下载

访问 https://www.crx4chrome.com/crx/1058 ,点击「Crx4Chrome」下载 Postman 离线安装包。

解压

  1. 修改离线安装包扩展名 .ctx 为 .zip。
  2. 解压到 C:\Chrome\postman (可更改为任意目录)。
  3. 重命名 _metadata 文件夹为 metadata。

安装

  1. 浏览器地址栏输入 chrome://extensions 打开扩展管理页面。
  2. 勾选页面右上角的「开发者模式」选项。
  3. 点击「加载已解压的扩展程序」,选择 C:\Chrome\postman 并确定。
postman-installation.png

使用

  1. 浏览器地址栏输入 chrome://apps 打开应用页面。
  2. 点击 Postman 应用。
  3. 如果弹出注册页面,点击页面最底部「Take me straight to the app …」。
postman-ui.png

Linux 删除除指定文件外的其他文件

发表于 2017-08-29

Find

1
2
3
4
5
# 排除单个文件
find . ! -name 'exec.js'
# 排除多个文件
find . ! -name 'exec.js' -a ! -name '.git'

Bash

1
2
3
4
5
6
7
shopt -s extglob
# 排除单个文件
rm -- !exec.js
# 排除多个文件
rm -- !(exec.js|.git)

Zsh

1
2
3
4
5
6
7
setopt extended_glob
# 排除单个文件
rm -- ^exec.js
# 排除多个文件
rm -- ^(exec.js|.git)

重置 OmniFocus 数据库

发表于 2017-08-17

步骤

of2-mac-reset-db.png
  1. 右键 OmniFocus 窗口标题栏中的文档图标。
  2. 点击下拉列表中的 OmniFocus 文件夹,在 Finder 中打开它。
  3. 退出 OmniFocus。
  4. 将 OmniFocus.ofocus 移动到其他位置(如果您想保留)或删除。
  5. 运行 OmniFocus。将显示首次启动经验的欢迎页面。
  6. 选择「只能在此处保存数据(仅在此 Mac 上储存 OmniFocus 数据)」,然后创建一个全新的数据库。
  7. 取消「将教学课程项目添加到数据库」选项,然后点击紫色按钮结束。
  8. 如果以前没有设置数据库同步,则到此结束。
  9. 通过「菜单栏 ▸ OmniFocus ▸ 偏好设置 ▸ 同步」来设置同步。
  10. 选择您的同步方式,输入账户信息,然后关闭配置窗口(不要按「同步」按钮)。如果收到同步提示替换数据库并开始同步,请点击取消。
  11. 选择「文件 ▸ 更换服务器数据库」以将新的空白数据库上传到服务器。
  12. 在其他设备上,同步并从提示中选择「保留同步数据库」选项,从服务器下载新的空白数据库。

原文

How to reset the OmniFocus database

Nginx 日志转储

发表于 2017-06-06

前言

Nginx 自身并没有日志转储功能,需要由其他程序来完成。这符合 Unix 哲学,专注于一件事并将其做好。

Logrotate 是日志文件管理工具,提供自动转储压缩,删除和邮寄日志文件。 Logrotate 可以设置为每天,每周,每月或当日志文件达到一定大小时处理日志文件。

配置 Logrotate

创建 /etc/logrotate.d/nginx,内容如下

1
2
3
4
5
6
7
8
9
/usr/local/nginx/logs/*.log {
daily
rotate 30
notifempty
sharedscripts
postrotate
kill -USR1 `cat /usr/local/nginx/logs/nginx.pid`
endscript
}

第一行:转储目录 /usr/local/nginx/logs 下全部 .log 后缀的日志文件。
第二行:每天执行。
第三行:最多保留 30 份日志。
第四行:如果日志为空则不执行。
第五行:只执行一次 postrotate 脚本。
第六行:开始 postrotate 脚本声明。postrotate 脚本在转储文件后(压缩文件前)马上执行。
第七行:通知 Nginx 重新打开日志文件。
第八行:结束 postrotate 脚本声明。

测试 Logrotate

执行 logrotate -d /etc/logrotate.d/nginx 测试配置是否正确。

常见问题处理

日志转储没有执行

根据以下步骤定位问题:

  1. 执行 logrotate -d /etc/logrotate.d/nginx 测试配置是否正确。
  2. 检查 /var/log/cron 日志 logrotate 是否有执行。
  3. 检查 cron 守护进程是否正在运行。
Gordian Yuan

Gordian Yuan

5 日志
6 标签
GitHub
© 2019 Gordian Yuan | 粤ICP备19049593号
由 Hexo 强力驱动
|
主题 — NexT.Gemini