0day

0day 0day,中文意思"0日/零日"或"零日漏洞"或"零时差攻击", 零日这个词历史很悠久,最早出现是在战争中,将一些大规模可毁灭世界的事物 (一般是武器) 称之为零日危机 (类似的还有末日时钟), 在世界毁灭之后,重新建立新文明的第一天,即称之为第0天。 后来引入到黑客文化,将一些大规模、致命性、高威胁性、能够造成巨大破坏的漏洞也称为零日漏洞 (并不是所有漏洞都叫0day), 缩写即为: 0day。 版权声明: 本文为CSDN博主「EDDJH_31」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。 原文链接: https://blog.csdn.net/EDDJH_31/article/details/67637890

2019-09-09 · 1 min · 19 words · -

CPU steal time

CPU steal time Steal Time(st),用来衡量被虚拟机监视器(Hypervisor)偷去给其它虚拟机使用的 CPU 时间所占的比例。 https://blog.csdn.net/jessysong/article/details/73571878 Netflix 很关注 CPU 的 Steal Time。他们的策略是: 如果是当前虚拟机的 Steal Time 超过了你们设置的阈值,他们会关闭这台虚拟机并且在另外一台物理机上面重启。 如果你想要部署虚拟环境 (例如: Amazon EC2) , steal time 就是你想要关注的性能指标之一。 如果这个指标的数值很高,那么说明机器状态非常糟糕。什么是 steal time?什么会引发高 steal time?多少才是警戒值 (你需要做什么) ? CPU Steal Time 的定义 From ibm: Steal time is the percentage of time a virtual CPU waits for a real CPU while the hypervisor is servicing another virtual processor. 你的虚拟机 (VM) 会与虚拟环境的宿主机上的多个虚拟机实例共享物理资源。其中之一共享的就是CPU时间切片。如果你的VM的物理机虚拟比是1/4, 那么它的CPU使用率不会限制于25%的CPU时间切片-它能够使用超过它设置的虚拟比。 (有别于内存的使用,内存大小是严格控制的) 。 哪里可以看到CPU Steal Time? 你可以使用Linux 的 TOP 命令来看到实时的一些性能指标。CPU相关的其中一行内容如下: ...

2019-09-03 · 1 min · 188 words · -

svn diff

svn diff 转载于: http://blog.sina.com.cn/s/blog_4e5668630100ag2u.html http://www.upsdn.net/html/2004-12/65.html $ svn diff -r 2:3 rules.txt (1)Index: rules.txt (2)=================================================================== (3)- rules.txt (revision 2) (4)+++ rules.txt (revision 3) (5)@@ -1,4 +1,4 @@ (6)Be kind to others (7)-Freedom = Chocolate Ice Cream (8)+Freedom = Responsibility (9)Everything in moderation (10)Chew with your mouth open 第一行,显示文件 第二行,分隔符 第三行,老版本用"-“表示 第四行,新版本用”+“表示 第五行,(5)@@ -1,4 +1,4 @@ -表示老版本,+++表示新版本,@@ (老版本) 起始行,行数 (新版本) 起始行,行数 应改为,老版本从第1行开始显示,共显示4行,即显示1~3行; 新版本一样 第六行,两个版本都有 第七行,只有老版本有 第八行,只有新版本有 第九行,两个版本都有 第十行,两个版本都有 unified diff format统一差异格式 一种标准的文件比较格式, 不同的行之前标上’+‘或者’-‘表示不同的文件, 新文件用’+‘表示, 旧文件用’-‘表示 ...

2019-09-02 · 1 min · 113 words · -

MySQL update in

MySQL update in EXPLAIN UPDATE table0 w SET w.field0 ='foo' WHERE (w.key0,w.key1,w.) IN ( SELECT a.* FROM ( SELECT w1.key0,w1.key1,w1.key2 FROM table0 w1 WHERE w1.field0 IS NULL AND w1.key2=0 LIMIT 10) AS a ); EXPLAIN UPDATE table0 w0 JOIN (SELECT *FROM table0 w1 WHERE w1.field0 IS NULL AND w1.key0=0 LIMIT 10) w2 ON w0.key0=w2.key0 AND w0.key1=w2.key1 AND w0.key2=w2.key2 SET w0.field0='foo'

2019-08-29 · 1 min · 60 words · -

MySQL update 嵌套 select

MySQL update 嵌套 select 当你希望更新一批值,且值是通过select条件查询出来时,下面这个错误应该不陌生 You can’t specify target table ‘x’ for update in FROM clause。 错误示范 1: A B 有关联同一个key_id , 根据 B表符合条件 -> 更新A表val值。 UPDATE A a SET a.val = 2 WHERE a.id IN ( SELECT a.id FROM A LEFT JOIN B ON b.key_id = a.key_id WHERE b.satisfy = 1) 解决思路 1: 使用 INNER JOIN (最简洁) UPDATE A a INNER JOIN B b ON b.key_id = a.key_id SET a.val = 2 WHERE b.satisfy = 1 ...

2019-08-28 · 1 min · 112 words · -

Screeps

Screeps https://screeps-cn.github.io/introduction.html https://github.com/rustyscreeps/screeps-game-api https://twodam.net/Tutorial-for-Screeps-0 https://github.com/aphistic/screeps-deployer https://github.com/rustyscreeps/screeps-starter-rust https://github.com/hinshun/screepsapi

2019-08-27 · 1 min · 7 words · -

toml

toml https://toml.io/cn/ # comments java https://github.com/mwanji/toml4j goland https://github.com/pelletier/go-toml/tree/v2

2019-08-24 · 1 min · 8 words · -

slf4j 打印java异常堆栈信息

slf4j 打印java异常堆栈信息 SLF4J 1.6.0以前的版本,如果打印异常堆栈信息,必须用 log.error(String msg, Throwable t) log.info等对应方法. 如果msg含有变量,一般用String.format方法格式化msg. 如果用 error(String format, Object… arguments) 等其它方法,异常堆栈信息会丢失. 幸好,SLF4J 1.6.0以后的版本对这个不友好的异常信息log改进了. error(String format, Object… arguments)这个方法也会打印异常堆栈信息,只不过规定throwable对象必须为 最后一个参数.如果不遵守这个规定,异常堆栈信息不会log出来. 官方FAQ: http://www.slf4j.org/faq.html Can I log an exception without an accompanying message? In short, no. If e is an Exception, and you would like to log an exception at the ERROR level, you must add an accompanying message. For example, logger.error(“some accompanying message”, e); You might legitimately argue that not all exceptions have a meaningful message to accompany them. Moreover, a good exception should already contain a self explanatory description. The accompanying message may therefore be considered redundant. ...

2019-08-23 · 3 min · 492 words · -

回文,palindrome

回文,palindrome 回文,英文palindrome,指一个顺着读和反过来读都一样的字符串,比如 madam

2019-08-19 · 1 min · 3 words · -

Java Double 浮点数 比较大小 & 相等比较

‘Java Double 浮点数 比较大小 & 相等比较’ public class DoubleUtils { private static final double DEFAULT_DELTA = 0.000001; //默认比较精度 //比较2个double值是否相等 (默认精度) public static boolean considerEqual(double v1, double v2) { return considerEqual(v1, v2, DEFAULT_DELTA); } //比较2个double值是否相等 (指定精度) public static boolean considerEqual(double v1, double v2, double delta) { return Double.compare(v1, v2) == 0 || considerZero(v1 - v2, delta); } //判断指定double是否为0 (默认精度) public static boolean considerZero(double value) { return considerZero(value, DEFAULT_DELTA); } //判断指定double是否为0 (指定精度) public static boolean considerZero(double value, double delta) { return Math.abs(value) <= delta; } /** * @param v1 v1 * @param v2 v2 * @return result * v1>v2, result = 1 * v1=v2, result =0 * v1<v2, result =-1 */ public static int compare(double v1, double v2) { if (v1 - v2 > DEFAULT_DELTA) { return 1; } else if (considerEqual(v1, v2)) { return 0; } else { return -1; } } } https://blog.csdn.net/z69183787/article/details/81318486

2019-08-19 · 1 min · 143 words · -

ingress

ingress XM (Exotic Matter,外来能量) AP (Access Points,权限点数) Portals 直译为传送门或者据点,俗称Po 处于一个Portal的40米范围内才可以与之交互 (你周围那个圈就是40米半径的圆) Hack (中译名为"入侵") Portal是主要的物资获取方式 Links/ Fields (连接/区域或场) 收集Keys才能建立Link 持有一个Portal的Key才能从别的Portal向其发起Link (连接) (成功建立Link会消耗掉对应的Portal Key) 在几个Portals之间建立 Link构成三角形就是建成Control Field (控制区/场) 三角形,三角形,三角形。重要的事情说三遍,重点就是连成三角形 低等级升级方式 在中立Portal上面部署 (Deploy) 谐振器 (Resonators) 以占据 在友方阵营占据Portal的空槽上部署 (Deploy) 谐振器 (Resonators) 建立大量的短距离Link和小的Control Field (控制区/场) 给己方占据的Portal充能 Hack (入侵) 敌方占据的Portal也可以获得AP,但请注意,敌方Portal会反击造成你的XM损失 申请po 需要升级到 L10,po 申请的审批工作同样由玩家完成,所需等级为 L12 Portal Key Portal Key (钥匙) ,保存着对应Portal的信息。可以使用key进行充能或建立link。 虽然key被标注了等级,但是这实际上是对应Portal的等级。任何等级的agent都可以使用任何等级的key。 Key可以被放置在Key Locker中而不占用库存。 用处 Key可以用来远程观察Portal的resonator状态,mod状态,周围环境等,请参看Portal。 Key可以用来远程为Portal补充能量,请参看充能。 Key可以用来建立link,请参看Link。 一些有纪念意义的Portal的key也可以作为收藏品。 获取key Key的掉率是独立与其他物品的。社区研究表明,普通hack的掉率约为75%,而Glyph Hack的掉率约为50%。hack一个无阵营Portal的掉落几率会增加10%。 Agent如果在库存中有某个key,将不会再次hack到相同的key。学习如何绕过这个限制是新手训练的重要部分。 获取多个相同的key有以下方法: 将key丢弃在地上。 将key放在Capsule,MUFG Capsule或者Key Locker里。 ...

2019-08-19 · 1 min · 107 words · -

Java Set

Java Set 版权声明: 本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/qq_33642117/article/details/52040345 一,Set Set:注重独一无二的性质,该体系集合可以知道某物是否已近存在于集合中,不会存储重复的元素 用于存储无序(存入和取出的顺序不一定相同)元素,值不能重复。 对象的相等性 引用到堆上同一个对象的两个引用是相等的。如果对两个引用调用hashCode方法,会得到相同的结果,如果对象所属的类没有覆盖Object的hashCode方法的话,hashCode会返回每个对象特有的序号 (java是依据对象的内存地址计算出的此序号) ,所以两个不同的对象的hashCode值是不可能相等的。 如果想要让两个不同的Person对象视为相等的,就必须覆盖Object继下来的hashCode方法和equals方法,因为Object hashCode方法返回的是该对象的内存地址,所以必须重写hashCode方法,才能保证两个不同的对象具有相同的hashCode,同时也需要两个不同对象比较equals方法会返回true 该集合中没有特有的方法,直接继承自Collection。 -| Itreable 接口 实现该接口可以使用增强for循环 -| Collection 描述所有集合共性的接口 -| List接口 可以有重复元素的集合 -| ArrayList -| LinkedList -| Set接口 不可以有重复元素的集合 案例: set集合添加元素并使用迭代器迭代元素。 public class Demo4 { public static void main(String[] args) { //Set 集合存和取的顺序不一致。 Set hs = new HashSet(); hs.add(“世界军事”); hs.add(“兵器知识”); hs.add(“舰船知识”); hs.add(“汉和防务”); System.out.println(hs); // [舰船知识, 世界军事, 兵器知识, 汉和防务] Iterator it = hs.iterator(); while (it.hasNext()) { System.out.println(it.next()); ...

2019-08-19 · 1 min · 84 words · -

typescript 数据类型

typescript 数据类型 数字 和 JavaScript 一样,TypeScript 里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript 还支持 ECMAScript 2015 中引入的二进制和八进制字面量。 let decLiteral: number = 6; let hexLiteral: number = 0xf00d; let binaryLiteral: number = 0b1010; let octalLiteral: number = 0o744; https://zhongsp.gitbooks.io/typescript-handbook/content/doc/handbook/Basic%20Types.html

2019-08-17 · 1 min · 35 words · -

typescript 数组

typescript 数组 版权声明: 本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/honey199396/article/details/80750408 数组的声明 let array1:Array; let array2:number[]; 数组初始化 let array1:Array = new Array(); let array2:number[] = [1,2,3]; 数组元素赋值、添加、更改 let array:Array = [1,2,3,4]; console.log(array) // [1, 2, 3, 4] array[0] = 20; // 修改 console.log(array) // [20, 2, 3, 4] array[4] = 5; // 赋值 console.log(array) // [20, 2, 3, 4, 5] ...

2019-08-17 · 1 min · 148 words · -

TOML、YAML, JSON、XML、CSON, HOCON

TOML、YAML, JSON、XML、CSON, HOCON json json 规范要求字符串要用双引号括起来.

2019-08-15 · 1 min · 6 words · -

Redis3 集群 数据迁移

Redis3 集群 数据迁移 一、概述 要让集群正常工作至少需要3个主节点,在这里我们要创建6个redis节点,其中三个为主节点,三个为从节点,对应的redis节点的ip和端口对应关系如下 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 127.0.0.1:7003 127.0.0.1:7004 127.0.0.1:7005 二、准备环境 安装ruby 集群环境需要ruby,所以需要安装下 yum install ruby yum install ruby-rdoc ruby setup.rb 安装完毕后启动依然报错 需要安装redis库 gem install redis 问题解决 下载最新redis版本 3.06 并进行构建 创建用户 useradd redis passwd redis 切换用户 su – redis 上传redis包到home目录 tar -zxvf redis-3.0.6.tar.gz mv redis-3.0.6 redis3.0 cd redis3.0 make 本环境为伪集群环境,所以在一台机器,多机情况相同 mkdir /home/redis/ cluster-test cd /home/redis/ cluster-test mkdir 7000 mkdir 7001 mkdir 7002 mkdir 7003 mkdir 7004 mkdir 7005 三、修改配置 ...

2019-08-06 · 4 min · 777 words · -

redis stream

redis stream stream是一个看起来比pubsub可靠多的消息队列。pubsub不靠谱? 很不靠谱,网络一断或buffer一大就会主动清理数据。stream的设计参考了kafka的消费组模型,redis作者antirez也专门写了篇短文描述了这个过程。 说起新鲜的redis streams,其实Antirez在几年前开了一个新项目叫做disque, 也是用来做消息队列的,奈何没怎么有人关注。我作为antirez的粉丝,肯定是用过了,还tmd改过disque python的库。现在redis5的stream里有一些disque的影子。 更多streams的信息 https://redis.io/topics/streams-intro Redis5.0最近被作者突然放出来了,增加了很多新的特色功能。而Redis5.0最大的新特性就是多出了一个数据结构Stream,它是一个新的强大的支持多播的可持久化的消息队列,作者坦言Redis Stream狠狠地借鉴了Kafka的设计。 Redis Stream 有一个消息链表,将所有加入的消息都串起来,每个消息都有一个唯一的ID和对应的内容。消息是持久化的,Redis重启后,内容还在。 每个Stream都有唯一的名称,它就是Redis的key,在我们首次使用xadd指令追加消息时自动创建。 每个Stream都可以挂多个消费组,每个消费组会有个游标 last_delivered_id 在 Stream 数组之上往前移动,表示当前消费组已经消费到哪条消息了。每个消费组都有一个Stream内唯一的名称,消费组不会自动创建,它需要单独的指令 xgroup create进行创建,需要指定从Stream的某个消息ID开始消费,这个ID用来初始化last_delivered_id变量。 每个消费组(Consumer Group)的状态都是独立的,相互不受影响。也就是说同一份Stream内部的消息会被每个消费组都消费到。 同一个消费组(Consumer Group)可以挂接多个消费者(Consumer),这些消费者之间是竞争关系,任意一个消费者读取了消息都会使游标last_delivered_id往前移动。每个消费者者有一个组内唯一名称。 消费者(Consumer)内部会有个状态变量pending_ids,它记录了当前已经被客户端读取的消息,但是还没有ack。如果客户端没有ack,这个变量里面的消息ID会越来越多,一旦某个消息被ack,它就开始减少。这个pending_ids变量在Redis官方被称之为PEL,也就是Pending Entries List,这是一个很核心的数据结构,它用来确保客户端至少消费了消息一次,而不会在网络传输的中途丢失了没处理。 http://xiaorui.cc/2018/06/07/%E6%B5%85%E5%85%A5%E6%B5%85%E5%87%BAredis5-0%E7%9A%84streams%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84/ https://toutiao.io/posts/2agvp3/preview

2019-08-06 · 1 min · 32 words · -

MySQL int 长度

MySQL int 长度 “浮点型"的长度是用来限制数字存储范围的. 比如 float(3,2) 只能够写入 0.00~999.99. “整型"的长度并不会限制存储的数字范围. 比如, int 和 int(3) 的存储范围都是 -2147483648 ~ 2147483647, int unsigned 和 int(3) unsigned 的存储范围都是0 ~ 4294967295. “整型"的长度实际上可以理解为"显示长度”, 如果该字段开启 “Zerofill/补零"就能很明显地知道它的作用. 参考 “高性能MySQL” 的说明 “高性能MySQL” 书中在"4.1 选择优化的数据类型"中提到: MySQL 可以为整数类型指定宽度, 例如 INT(11), 对大多数应用这是没有意义的: 它不会限制值的合法范围, 只是规定了 MySQL 的一些交互工具(例如 MySQL 命令行客户端)用来显示字符的个数. 对于存储和计算来说, INT(1) 和 INT(20) 是相同的 “MySQL 手册"的说明 MySQL 5.7 手册 “12.2.5 Numeric Type Attributes”: MySQL supports an extension for optionally specifying the display width of integer data types in parentheses following the base keyword for the type. For example, INT(4) specifies an INT with a display width of four digits. This optional display width may be used by applications to display integer values having a width less than the width specified for the column by left-padding them with spaces. (That is, this width is present in the metadata returned with result sets. Whether it is used or not is up to the application.) ...

2019-08-06 · 2 min · 295 words · -

账号, account

账号, account https://36kr.com/p/2342280589940227 最近,话题#账与帐很多人分不清#登上热搜,引发网友热议。笔者注意到,不同互联网平台,“帐号”和“账号”两种表述都存在。 实话实说,如果不是这条热搜,笔者也对“帐”和“账”傻傻分不清楚;到底“账号”和“帐号”哪种表述是正确的呢? 根据第七版《现代汉语词典》,只有“账号”而无“帐号”,“账号”解释为单位或者个人跟银行建立经济关系后,银行在账上给该单位或个人编的号码。而“帐”这个字释为用布或者其他材料做成的遮蔽用的东西,和“账号”所表达的概念完全无关。 值得注意的是,《现代汉语词典》、《新华字典》等对“帐”这个字有解释称其“旧同‘帐’”,但这仅仅是指“帐”和“账”在过去一段时间内一致,现如今已经独立使用。

2019-08-04 · 1 min · 7 words · -

Desk Check

Desk Check 敏捷实践之 Desk Check http://insights.thoughtworkers.org/desk-check/embed/#?secret=5PpVVMPtJf 开发人员在完成需求之后,快速在本地开发环境建立功能验证条件。 开发人员要做的具体工作是: 需要测试数据的,建立mock data;然后对照Acceptance Criteria给团队的BA、QA展示完成的功能。这里需要注意的是,开发人员最好自己先完成一遍测试。自测能够发现一些问题,提高deskcheck的成功率,也吻合越早发现问题修复的代价越小的原理,否则不但耽误了自己的时间也耽误了BA和QA的时间。 BA的职责是: 验证开发之前提出的需求是否实现,是否有跟开发人员理解不一致的地方,是否有遗漏的需求。 QA的职责是: 从测试人员的视角评估这个功能有没有"ready for testing",并且做一个快速的测试,验证是否有Sad Path没有考虑周全。 不管怎么说Desk Check还是处于developing的阶段,在这个阶段矫正一下需求,修复一些快速的defects,这样才能让功能ready进入下一个阶段: 测试环境的测试。 之前一直错误地理解Desk Check是我们开发流程的一部分,是流程上的一个要求。但是结合最近项目的实践和敏捷宣言的理论,意识到Desk Check实际上是践行了宣言的第一条: 个体之间的合作,而且合作比流程更重要。Desk Check同时也体现了反馈在敏捷开发中的作用,及时的反馈能够尽早的纠正工作的偏差,让我们一直向正确的方向前进。 https://www.techwalla.com/articles/what-is-desk-checking

2019-08-02 · 1 min · 27 words · -