http://blog.51cto.com/angus717/769577
persistent netfilter marked packet persistence 持久防火墙标记(在pre-routing链上打netfilter marked,而且该标记只在防火墙内部有效通常是0-99)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
http://blog.51cto.com/angus717/769577
persistent netfilter marked packet persistence 持久防火墙标记(在pre-routing链上打netfilter marked,而且该标记只在防火墙内部有效通常是0-99)
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
curl wget 不验证证书进行https请求
1 2 |
|
生成证书和私匙
1
|
|
test_private.perm 是私匙, test.crt 是证书
其中CN和nginx.conf中的server_name一样
https://cloud.tencent.com/document/product/400/35244
vim /etc/nginx/nginx.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
自建证书得不到信任,所以会提示: curl: (60) Peer’s certificate issuer has been marked as not trusted by the user.
解决方法:
拿服务器证书
1
|
|
curl 参数带证书
1
|
|
或者将证书加到信任的证书列表中
1 2 |
|
访问的host一定要是证书中CN(commonname), 不然会提示: curl: (51) Unable to communicate securely with peer: requested domain name does not match the server’s certificate.
https://blog.csdn.net/albertsh/article/details/63253614
标签可以针对某一时间点的版本做标记,常用于版本发布,这恰恰是我所需要的功能,将本地标签推送到Github上即发布了一个Release版本,下载和查看非常方便。
git标签分为两种类型:轻量标签和附注标签。轻量标签是指向提交对象的引用,附注标签则是仓库中的一个独立对象,建议使用附注标签,日后还可以查看标签信息。
创建轻量标签
1
|
|
解释:创建轻量标签不需要传递参数,直接指定标签名称即可。
创建附注标签
1
|
|
解释:创建附注标签时,参数-a即annotated的缩写,指定标签类型,后附标签名。参数m指定标签说明,说明信息会保存在标签对象中。
列出当前仓库的所有标签
1
|
|
列出符合模式的标签
1
|
|
查看标签版本信息
1
|
|
切换标签与切换分支命令相同
1
|
|
解释:切换标签后处于一个空的分支上,即”You are in ‘detached HEAD’ state.”
误打或需要修改标签时,需要先将标签删除,再打新标签
1
|
|
解释:参数-d即delete的缩写,意为删除其后指定的标签。
给指定的commit打标签
1
|
|
解释:打标签不必要在HEAD之上,也可在之前的版本上打,这需要你知道某个提交对象的校验和,通过git log命令获取。
将v0.1.0标签提交到git服务器
1
|
|
解释:通常的git push不会将标签对象提交到git服务器,我们需要进行显式的操作。
将本地所有标签一次性提交到git服务器
1
|
|
http://blog.sina.com.cn/s/blog_a55522150102w6sp.html http://www.xuebuyuan.com/1622347.html
算法思想:
1 2 3 4 5 6 7 8 9 10 |
|
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
|
https://community.topcoder.com/stat?c=round_stats&rd=17140&dn=1
Consider an undirected, complete, simple graph G on n vertices. The vertices of G are labeled from 1 to n. Specifically, each pair of distinct vertices is connected by a single undirected edge, so there are precisely n*(n-1)/2 edges in this graph.
You are given a set E that contains some edges of the graph G. More precisely, you are given the vector
A spanning tree of G is a subset of exactly n-1 edges of G such that the edges connect all n vertices. You may note that the edges of a spanning tree do indeed form a tree that is a subgraph of G and spans all its vertices.
We are interested in spanning trees that contain all of the edges in the provided set E. Compute and return the number of such spanning trees modulo 987,654,323. Two spanning trees are different if there is an edge of G that is in one of them but not in the other. Definition
BuildingSpanningTreesDiv1
getNumberOfSpanningTrees
int, vector
int
int getNumberOfSpanningTrees(int n, vector
(be sure your method is public)
Time limit (s): 2.000
Memory limit (MB): 256
987,654,323 is a prime number.
n will be between 1 and 1,000, inclusive.
x will contain between 1 and 1,000 elements, inclusive.
y will contain between 1 and 1,000 elements, inclusive.
x and y will contain the same number of elements.
Each element of x will be between 1 and n-1, inclusive.
Each element of y will be between 2 and n, inclusive.
For each valid i, x[i] will be less than y[i].
All edges in E will be distinct.
0)
3
{1,2}
{2,3}
Returns: 1
The edges in the provided set E alredy form a spanning tree, so there is exactly one spanning tree that contains them.
1)
5
{1,3,4}
{2,4,5}
Returns: 6
There are six ways to add the one missing edge: one endpoint of the new edge must lie in the set {1,2} and the other in the set {3,4,5}.
2)
4
{1}
{2}
Returns: 8
There are eight spanning trees that contain the edge (1, 2):
{(1, 2), (1, 3), (1, 4)}
{(1, 2), (1, 3), (2, 4)}
{(1, 2), (1, 3), (3, 4)}
{(1, 2), (2, 3), (2, 4)}
{(1, 2), (1, 4), (2, 3)}
{(1, 2), (1, 4), (3, 4)}
{(1, 2), (2, 3), (3, 4)}
{(1, 2), (2, 4), (3, 4)}
3)
4
{1,2,1}
{2,3,3}
Returns: 0
The set E contains a cycle, and thus there is no spanning tree that contains all these edges.
4)
8
{1,4,2,3,5}
{4,7,6,5,8}
Returns: 144
5)
1000
{1}
{2}
Returns: 529013784
Don’t forget to take the modulo.
This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. ©2003, TopCoder, Inc. All rights reserved.
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 |
|
https://blog.csdn.net/baidu_35643793/article/details/75268911
当求解公式:(a/b)%m 时,因b可能会过大,会出现爆精度的情况,所以需变除法为乘法:
设c是b的逆元,则有b*c≡1(mod m);
则(a/b)%m = (a/b)1%m = (a/b)bc%m = ac(mod m);
即a/b的模等于a*b的逆元的模;
逆元就是这样应用的;
在是素数的情况下,对任意整数都有。 如果无法被整除,则有。 可以在为素数的情况下求出一个数的逆元,,即为逆元。
题目中的数据范围1<=x<=109,p=1000000007,p是素数;
所以x肯定就无法被p整除啊,所以最后就得出xp-2为x的逆元啦。
复杂度O(logn);
代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
可扩展欧几里得求逆元ax≡1(mod n)其中a,n互质;
复杂度:O(logn);
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|
求1,2,…,N关于P的逆元(P为质数)
复杂度:O(N)
代码:
1 2 3 4 5 6 |
|