w1100n
This site is best viewed in Google Chrome
wiloon, 7/31/2016 11:42 | Tag:

很多人不好掌握粥的稀稠,其实是有一定的比例的。如果想喝全粥(其实类似煮比较软烂的米饭),那米和水的比例(体积比)就是1:8,如果想喝稠粥那么就是1:10,稀粥的话就是1:13。一般来说,我喜欢介于稠粥和稀粥之间的状态,因此使用的是1:11这样的比例。 1、开水下米,这样米不粘锅,而且小米容易开花容易熟,并且有助于增加粥的粘稠度; 2、大火烧开后转小火慢熬,整个过程最好不少于30分钟; 3、小火保持水沸而不滚,稍微冒气泡的状态,这样可以让粥很快粘稠; 4、点几滴食用油,一是防溢,二是增香增稠; 5、出锅前一定不停地慢搅大约10分钟,你会发现锅里的粥是越搅越稠。 http://www.meishichina.com/Eat/Nosh/201004/79840.html http://www.meishichina.com/Eat/Nosh/201004/79840_2.html https://www.xiachufang.com/recipe/100035144/

wiloon, 7/28/2016 21:26

angler: Nexus 6P (codenamed Angler) provided you’ve already unlocked your bootloader, Download the TWRP Recovery https://dl.twrp.me/angler/ Download the SuperSU and push the zip to your device. http://www.supersu.com/download sudo adb push SuperSU-v2.82-201705271822.zip /storage/emulated/0 reboot to bootloader adb reboot bootloader flash twrp … Continue reading

wiloon, 7/26/2016 21:24

install download http://kafka.apache.org/downloads.html install and start zookeeper http://www.wiloon.com/wordpress/?p=7242 config kafka server edit config/server.properties 为何使用消息系统 解耦 在项目启动之初来预测将来项目会碰到什么需求,是极其困难的。消息系统在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口。这允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 冗余 有些情况下,处理数据的过程会失败。除非数据被持久化,否则将造成丢失。消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队列中删除之前,需要你的处理系统明确的指出该消息已经被处理完毕,从而确保你的数据被安全的保存直到你使用完毕。 扩展性 因为消息队列解耦了你的处理过程,所以增大消息入队和处理的频率是很容易的,只要另外增加处理过程即可。不需要改变代码、不需要调节参数。扩展就像调大电力按钮一样简单。 灵活性 & 峰值处理能力 在访问量剧增的情况下,应用仍然需要继续发挥作用,但是这样的突发流量并不常见;如果为以能处理这类峰值访问为标准来投入资源随时待命无疑是巨大的浪费。使用消息队列能够使关键组件顶住突发的访问压力,而不会因为突发的超负荷的请求而完全崩溃。 可恢复性 系统的一部分组件失效时,不会影响到整个系统。消息队列降低了进程间的耦合度,所以即使一个处理消息的进程挂掉,加入队列中的消息仍然可以在系统恢复后被处理。 顺序保证 在大多使用场景下,数据处理的顺序都很重要。大部分消息队列本来就是排序的,并且能保证数据会按照特定的顺序来处理。Kafka保证一个Partition内的消息的有序性。 缓冲 在任何重要的系统中,都会有需要不同的处理时间的元素。例如,加载一张图片比应用过滤器花费更少的时间。消息队列通过一个缓冲层来帮助任务最高效率的执行———写入队列的处理会尽可能的快速。该缓冲有助于控制和优化数据流经过系统的速度。 异步通信 很多时候,用户不想也不需要立即处理消息。消息队列提供了异步处理机制,允许用户把一个消息放入队列,但并不立即处理它。想向队列中放入多少消息就放多少,然后在需要的时候再去处理它们。 Kafka是由LinkedIn开发的用于日志处理的一个分布式的消息系统,使用Scala编写.是一种高吞吐量的分布式发布订阅消息系统 linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进程状态) 当前很多的消息队列服务提供可靠交付保证,并默认是即时消费(不适合离线)。 高可靠交付对linkedin的日志不是必须的,故可通过降低可靠性来提高性能,同时通过构建分布式的集群,允许消息在系统中累积,使得kafka同时支持离线和在线日志处理 Kafka架构 Terminology Broker Kafka集群包含一个或多个服务器,这种服务器被称为broker … Continue reading

wiloon, 7/23/2016 17:22

查看集合。 ipset list -N, –创建 集合名称 类型 类型具体选项 创建一个用集合名称命名并且指定类型的集合。类型具体选项必须是系统规定的。 iptables是在linux内核里配置防火墙规则的用户空间工具,它实际上是netfilter框架的一部分.可能因为iptables是netfilter框架里最常见的部分,所以这个框架通常被称为iptables,iptables是linux从2.4版本引入的防火墙解决方案. ipset是 Linux 防火墙iptables的一个伴随工具。是iptables的扩展,它允许你创建匹配整个地址sets(地址集合) 的规则。而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找. 除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置. 在本文中,在快速的讨论ipsets的安装要求后,我会花一点时间来介绍iptables的核心机制和基本概念.然后我会介绍ipset的使用方法和语法,并且演示ipset如何与iptables结合来完成各种不同的配置。最后,我会提供一些细节和较高级的例子来演示如何解决现实中的问题。 ipset比传统的iptables拥有显著的性能提升和扩展特性,比如将单个防火墙规则通过一次配置应用到整个主机所在的组和网络。 由于ipset只是iptables的扩展,所以也会对iptables进行描述。 在许多的linux发布中ipset是一个简单的安装包,大家可以通过自己的linux发行版提供的包管理工具进行安装。 需要理解的重点时,同iptables一样,ipset是由用户空间的工具和内核空间的模块两部分组成,所以你需要将这两部分都准备好。你也需要”ipset-aware”这个iptables 模块,这个模块用来增加 rules that match against sets。(……) 首先我们使用自己的linux发行版的包管理工具对ipset进行搜索。在ubuntu上安装需要安装ipset 和 xtables-addons-source 包,然后,运行module-assistant auto-install xtables-addons,等待大约30秒后ipset就可以使用了。 如果你的linux发行版没有被支持,那就需要根据ipset 首页中的安装步骤构建源码并对内核打补丁。 这篇文章中使用ipset v4.3 和 iptables v1.4.9。 iptables概述 … Continue reading

wiloon, 7/23/2016 14:27

http://www.williamlong.info/archives/3356.html 我们知道,某些网络运营商为了某些目的,对DNS进行了某些操作,导致网民使用正常的上网设置无法通过域名解析出正确的IP地址。常用的手段有:DNS劫持和DNS污染。 什么是DNS劫持 DNS劫持就是通过劫持了DNS服务器,通过某些手段取得某域名的解析记录控制权,进而修改此域名的解析结果,导致对该域名的访问由原IP地址转入到修改后的指定IP,其结果就是对特定的网址不能访问或访问的是假网址,从而实现窃取资料或者破坏原有正常服务的目的。DNS劫持通过篡改DNS服务器上的数据返回给用户一个错误的查询结果来实现的。 DNS劫持症状:在某些地区的用户在成功连接宽带后,首次打开任何页面都指向ISP提供的“电信互联星空”、“网通黄页广告”等内容页面。还有就是曾经出现过用户访问Google域名的时候出现了百度的网站。这些都属于DNS劫持。 什么是DNS污染 DNS污染是一种让一般用户由于得到虚假目标主机IP而不能与其通信的方法,是一种DNS缓存投毒攻击(DNS cache poisoning)。其工作方式是:由于通常的DNS查询没有任何认证机制,而且DNS查询通常基于的UDP是无连接不可靠的协议,因此DNS的查询非常容易被篡改,通过对UDP端口53上的DNS查询进行入侵检测,一经发现与关键词相匹配的请求则立即伪装成目标域名的解析服务器(NS,Name Server)给查询者返回虚假结果。 而DNS污染则是发生在用户请求的第一步上,直接从协议上对用户的DNS请求进行干扰。 DNS污染症状:目前一些被禁止访问的网站很多就是通过DNS污染来实现的,例如YouTube、Facebook等网站。 解决方法 对于DNS劫持,可以采用使用国外免费公用的DNS服务器解决。例如OpenDNS(208.67.222.222)或GoogleDNS(8.8.8.8)。 对于DNS污染,可以说,个人用户很难单单靠设置解决,通常可以使用VPN或者域名远程解析的方法解决,但这大多需要购买付费的VPN或SSH等,也可以通过修改Hosts的方法,手动设置域名正确的IP地址。 总结 DNS劫持就是指用户访问一个被标记的地址时,DNS服务器故意将此地址指向一个错误的IP地址的行为。范例,网通、电信、铁通的某些用户有时候会发现自己打算访问一个地址,却被转向了各种推送广告等网站,这就是DNS劫持。 DNS污染,指的是用户访问一个地址,国内的服务器(非DNS)监控到用户访问的已经被标记地址时,服务器伪装成DNS服务器向用户发回错误的地址的行为。范例,访问Youtube、Facebook之类网站等出现的状况。

wiloon, 7/20/2016 23:27

ss-local 用于客户端,所有linux都可用,包括openwrt   ss-redir ss-redir用于将客户端的原始数据封装成shadowsocks协议内容,转发给server,实现透明转发。 ss-redir用于适用于透明代理,用于openwrt,其他linux也可以用,但需要打开防火墙的转发功能   ss-server是服务器 ss-tunnul是通道,一般用于udp协议用tcp转发,解决dns问题 ss-tunnel ss-tunnel用于实现本地port forward,和ssh的port forward一样,只是加密方式用了shadowsocks协议,用于在本地起服务,转发DNS请求   http://hbprotoss.github.io/posts/da-jian-zhi-neng-fan-qiang-lu-you-qi.html

wiloon, 7/19/2016 8:03

https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter02/02.3.md strconv — 字符串和基本数据类型之间转换 这里的基本数据类型包括:布尔、整型(包括有/无符号、二进制、八进制、十进制和十六进制)和浮点型等。 2.3.1 strconv 包转换错误处理 介绍具体的转换之前,先看看 strconv 中的错误处理。 由于将字符串转为其他数据类型可能会出错,strconv 包定义了两个 error 类型的变量:ErrRange 和 ErrSyntax。其中,ErrRange 表示值超过了类型能表示的最大范围,比如将 “128” 转为 int8 就会返回这个错误;ErrSyntax 表示语法错误,比如将 “” 转为 int 类型会返回这个错误。 然而,在返回错误的时候,不是直接将上面的变量值返回,而是通过构造一个 NumError 类型的 error 对象返回。NumError 结构的定义如下: // A NumError records a failed conversion. … Continue reading

wiloon, 7/17/2016 23:05

http://wudixiaozi.com/1694.html Debian安装FTP服务器,使用vsftpd简单实现 June 27th, 2013无敌小子Leave a commentGo to comments Debian自己安装的时候若没有勾选FTP服务器的话,那就需要在后期手动安装了!这里简单介绍一下debian如何安装和配置FTP服务器! Debian下实现FTP的软件很多,我这里推荐vsftpd,因为他非常的短小精干,只要设置得当还是不错的!那我们就按照下面的命令一步步的来完成! 首先我们更新下软件源: aptitude update 安装vsftpd apt-get install vsftpd 安装完毕以后我们来配置vsftpd,使用nano编辑器打开 nano /etc/vsftpd.conf 打开后我们找到anonymous_enable=YES 替换成anonymous_enable=NO 找到local_enable=YES,将前面的#去掉 找到Write_enable=NO将前面的#去掉,改成YES 然后在配置文件的最后一行加上:chroot_local_user=YES 目的是让登陆用户锁定在指定目录里面!放置用户可以返回上层目录! 接下来创建用户组: groupadd ftp 一般会提示用户组ftp已存在,我们忽略他! 创建用户 useradd -g ftp -d /var/www user 这里需要修改的就量个,/var/www是你想创建的用户登陆后锁定在哪个目录里面,上面的user是用户名,你这里可以改成你自己想要的! 然后我们给添加的ftp的user更改密码 … Continue reading

wiloon, 7/13/2016 8:45

测试文件用 “_test” 结尾,测试的函数用Test开头 fibonacci.go fibonacci_test.go   http://www.01happy.com/golang-unit-testing/   一般为了保证整个系统的稳定性,通常都需要编写大量的单元测试,诸如像java的junit,php的phpunit等都提供了类似的功能。golang中的testing包提供了这个测试的功能,结合go test工具搞起来就很方便了。 golang中的单元测试不单有功能测试,也还提供了性能测试,非常给力。 功能测试 在golang的src目录下新建目录math,测试目录结构如下: golang单元测试目录 fibonacci.go代码如下,主要有一个Fibonacci函数 package lib //斐波那契数列 //求出第n个数的值 func Fibonacci(n int64) int64 { if n < 2 { return n } return Fibonacci(n-1) + Fibonacci(n-2) fibonacci_test.go就是测试的文件了,golang需要测试文件一律用”_test”结尾,测试的函数都用Test开头,代码如下: package lib import … Continue reading

wiloon, 7/12/2016 14:56

REC 1918留出了3块IP地址空间(1个A类地址段,16个B类地址段,256个C类地址段)作为私有的内部使用的地址。在这个范围内的IP地址不能被路由到Internet骨干网上;Internet路由器将丢弃该私有地址。 IP地址类别 RPC 1918内部地址范围 A类 10.0.0.0到10.255.255.255 B类 172.16.0.0到172.31.255.255 C类 192.168.0.0到192.168.255.255 使用私有地址将网络连至Internet,需要将私有地址转换为公有地址。这个转换过程称为网络地址转换(Network Address Translation,NAT),通常使用路由器来执行NAT转换。 http://zhidao.baidu.com/question/67058143.html

wiloon, 7/12/2016 13:16

dig,其实是一个缩写,即Domain Information Groper。 dig @8.8.8.8 www.baidu.com A //命令格式为dig @dnsserver name querytype https://www.archlinux.org/todo/dnsutils-to-ldns-migration/ http://imdjh.github.io/toolchain/2015/10/07/drill-if-you-can-dig-if-you-have-to.html We are removing dnsutils from [core]. (It cannot be built independently from bind anymore, and the whole thing is becoming a mess anyhow.) Please update your packages … Continue reading

wiloon, 7/5/2016 13:33

  Project A 被 Project B 调用 比如 A 里有 mockito的jar包, B要引用A , 从而不需要在B里直接引用mockito的jar包,而且A 包里的自建代码也可以用起来。 关键点在于 A 的pom里不能 用 test scope来藏起来A里面的jar ,这样B就无法继承到了。   Maven依赖范围及依赖传递 一: 依赖范围scope 共5种,compile (编译)、test (测试)、runtime (运行时)、provided、system 不指定,则依赖范围默认为compile.   compile:编译依赖范围,在编译,测试,运行时都需要。 test: 测试依赖范围,测试时需要。编译和运行不需要。如Junit runtime: 运行时依赖范围,测试和运行时需要。编译不需要。如JDBC驱动包 provided:已提供依赖范围,编译和测试时需要。运行时不需要。如servlet-api system:系统依赖范围。本地依赖,不在maven中央仓库。   … Continue reading

wiloon, 7/2/2016 10:05

http://os.51cto.com/art/200910/158752.htm   3,如何在多个目录之间切换? 用 pushd +n即可 说明: n是一个数字,有此参数时,是切换到堆栈中的第n个目录,并把此目录以堆栈循环的方式推到堆栈的顶部 需要注意: 堆栈从第0个开始数起 看例子: [root@localhost grub]# dirs -v 0  /boot/grub 1  /usr/share/kde4/apps/kget 2  /usr/local/sbin 3  ~ [root@localhost grub]# pushd +2 /usr/local/sbin ~ /boot/grub /usr/share/kde4/apps/kget [root@localhost sbin]# dirs -v 0  /usr/local/sbin 1  ~ 2  … Continue reading

wiloon, 7/1/2016 17:36

https://github.com/polaris1119/The-Golang-Standard-Library-by-Example/blob/master/chapter01/01.1.md

wiloon, 7/1/2016 17:20

http://eleme.io/blog/2014/goroutine-1/   goroutine Go语言中有个概念叫做goroutine, 这类似我们熟知的线程,但是更轻。 以下的程序,我们串行地去执行两次loop函数: func loop() { for i := 0; i < 10; i++ { fmt.Printf(“%d “, i) } } func main() { loop() loop() } 毫无疑问,输出会是这样的: 0 1 2 3 4 5 6 7 8 9 … Continue reading

wiloon, 7/1/2016 16:25

http://www.cnblogs.com/ghj1976/archive/2013/02/11/2910114.html   Go语言追求简洁优雅,所以,Go语言不支持传统的 try…catch…finally 这种异常,因为Go语言的设计者们认为,将异常与控制结构混在一起会很容易使得代码变得混乱。因为开发者很容易滥用异常,甚至一个小小的错误都抛出一个异常。在Go语言中,使用多值返回来返回错误。不要用异常代替错误,更不要用来控制流程。在极个别的情况下,也就是说,遇到真正的异常的情况下(比如除数为0了)。才使用Go中引入的Exception处理:defer, panic, recover。 这几个异常的使用场景可以这么简单描述:Go中可以抛出一个panic的异常,然后在defer中通过recover捕获这个异常,然后正常处理。   例子代码: package main import “fmt” func main(){ defer func(){ // 必须要先声明defer,否则不能捕获到panic异常 fmt.Println(“c”) if err:=recover();err!=nil{ fmt.Println(err) // 这里的err其实就是panic传入的内容,55 } fmt.Println(“d”) }() f() } func f(){ fmt.Println(“a”) panic(55) fmt.Println(“b”) fmt.Println(“f”) } 输出结果: a … Continue reading

wiloon, 7/1/2016 16:06

变量 变量是几乎所有编程语言中最基本的组成元素。从根本上说,变量相当于是对一块数据存储空间的命名,程序可以通过定义一个变量来申请一块数据存储空间,之后可以通过引用变量名来使用这块存储空间。 Go语言中的变量使用方式与C语言接近,但具备更大的灵活性。 变量声明 Go语言的变量声明方式与C和C++语言有明显的不同。对于纯粹的变量声明,Go语言引入了关键字var,而类型信息放在变量名之后,示例如下: var v1 int var v2 string var v3 [10] int  // 数组 var v4 [] int  // 数组切片 var v5 struct { f int } var v6 *int   // 指针 var v7 map[string]intvar v8 func(a … Continue reading

wiloon, 7/1/2016 15:00 | Tag:

golang flag获取命令行参数 flag.String(“port”, “:8080”, “http listen port”) 像flag.Int、flag.Bool、flag.String这样的函数格式都是一样的,第一个参数表示参数名称,第二个参数表示默认值,第三个参数表示使用说明和描述。flag.StringVar这样的函数第一个参数换成了变量地址,后面的参数和flag.String是一样的。 flag.Parse() 解析函数将会在碰到第一个非flag命令行参数时停止,非flag命令行参数是指不满足命令行语法的参数,如命令行参数为cmd –flag=true abc则第一个非flag命令行参数为“abc” 使用flag来操作命令行参数,支持的格式如下: 还是非常方便的。 执行一下: $ go run flag.go -id=2 -name=”golang” ok: false id: 2 port: :8080 name: golang 使用-h参数可以查看使用帮助: $ go run flag.go -h -id=0: id -name=”123″: name -ok=false: … Continue reading

辽ICP备14012896