Thursday, November 22, 2018

Android 启动显示对话框

可以使用Recevier启动透明Activity来实现 Recevier 实现 网络上很多 具体Receiver的实现 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 package com.example.myapplication; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; public class MyReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { if (intent.getAction().equals("android.intent.action.BOOT_COMPLETED"))...

Wednesday, November 21, 2018

算法题-推荐潜在好友

昨天写的一道算法题 图算法:推荐潜在好友 by Hongzhi Shi 时间限制: 2000 ms 内存限制: 6000 KB 但是跟图算法没半毛钱关系 关键是过内存上的限制 问题描述 社交网络可以用一个图来描述。假定有N个使用者,每个使用者可以用一个节点表示,如果使用者m和使用者n已经是线上朋友,表示两个节点已经连接,即图中包含连接m和n的边。在这个练习中,我们将为使用者推荐可能的朋友。 给定表示一个社交网络的图,包含N个节点和M条边。如果节点m和n不直接相连,但与K个以上(包括K个)的相同节点连接,我们可以认为他们可能认识,请给出指定用户的潜在好友(暂时还未直接连接的节点)。对于给定用户,请将其所有潜在好友按照他们共同好友数量由多到少排列输出,对于共同好友数量相同的情况,请按照序号从小到大排列输出。 输入格式 输入的第一行是三个整数N,K,U。其中N表示社交网络中用户的个数,即网络节点的个数。K表示共同好友数不少于K的两个用户才互相算作潜在好友。U表示需要输出标号为U的用户的潜在好友,对应矩阵行/列标号为U的节点,U从0开始计。 输入的第二行到第N+1行是用户之间的图的邻接矩阵:0代表不是好友,1代表是好友。 输出格式 输入的第一行是三个整数N,K,U。其中N表示社交网络中用户的个数,即网络节点的个数。K表示共同好友数不少于K的两个用户才互相算作潜在好友。U表示需要输出标号为U的用户的潜在好友,对应矩阵行/列标号为U的节点,U从0开始计。 输入的第二行到第N+1行是用户之间的图的邻接矩阵:0代表不是好友,1代表是好友。 输入样例 1 2 3 4 5 6 7 6...

Saturday, November 17, 2018

V2Ray + iptables 实现全局代理

设置全局代理的目的懒得烦那堵破墙 ALL_PROXY有一定的局限性, 所以还是需要全局代理舒服点 由于V2Ray迭代速度太快, 写上我现在使用的版本号 V2Ray 4.5.0 (Po) 20181116 V2Ray 思路是使用 iptables 将流量转发到 V2Ray 的透明代理上 具体如何实现参考V2Ray Dokodemo-door iptables 没有了解过iptables请Google了解下 重点知道iptables中nat的是干啥的, 还有iptables的常用命令即可 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/bin/sh # 删除设置 # iptables -t nat -F # iptables -t nat -X...

Tuesday, November 13, 2018

MacOS 默认群组之间的区别

本文讲解MacOS默认群组wheel admin staff everyone wheel 是系统管理员组, 默认有用户root, 此组中的用户拥有系统最高权限, 100%的控制系统, wheel源于BSD UNIX, 而 wheel又有掌舵意思, 意味这掌控着系统方向 admin 是用户管理员组, 在此组中的成员可以通过sudo命令暂时升级为root去执行命令, 和wheel同样身为管理员, 但是在平时, 如果不使用sudo的话就和普通用户没什么区别, 安全性更好 staff 本机的用户都会在此组中, 注意, 并不包括用户guest everyone 直译过来就是任何人, 包括任何用户, 比如guest或者是远程连接过来的用户 reference https://superuser.c...

Wednesday, November 7, 2018

Vim 替换基本命令讲解

使用Vim很长时间了, 我对于替换命令的印象还是最基本的这样:%s/pattern/string/g 所以写下本文是为了好好梳理一下, 本文只总结最常用的方法对于不常用或比较复杂的不进行介绍 本文基于Vim Docs, 想看官方文档的请在Vim中运行:h :s 基本格式 替换命令的基本格式是:[range]s[ubstitute]/{pattern}/{string}/[flags] [count] 我们可以分成 [range] s[ubstitute] {pattern} {string} [flags] [count]来进行讲解 [range] range太强大, 很多地方都可以用的到, 所以我单独写了一篇: Vim range详解 s[ubstitute] 这里的s[ubstitute]代表动作为替换, 由于substitute太长, 一般简写s即可 {pattern} 用来匹配的正则表达式 {string} 用来替换的内容 支持正则表达式的子匹配 \0 匹配到的字符串 \1 第一个子匹配 \2 第二个子匹配…以此类推 \r 换行 \b backspace \t table \\ \ [flags] Options c confirm,...