w1100n
This site is best viewed in Google Chrome
wiloon, 9/30/2017 14:01

yarn config get registry -> https://registry.yarnpkg.com 可以改成 taobao 的源: yarn config set registry ‘https://registry.npm.taobao.org’ -> yarn config v0.15.0 -> success Set “registry” to “https://registry.npm.taobao.org”. -> Done in 0.04s. https://my.oschina.net/jiangxinxin/blog/775326

wiloon, 9/29/2017 15:40

斜率亦称“角系数”,表示平面直角坐标系中表示一条直线对横坐标轴的倾斜程度的量。 直线对X 轴的倾斜角α的正切值tgα称为该直线的“斜率”,并记作k,k=tgα。规定平行于X轴的直线的斜率为零,平行于Y轴的直线的斜率不存在。对于过两个已知点(x1,y1) 和 (x2,y2)的直线,若x1≠x2,则该直线的斜率为k=(y1-y2)/(x1-x2)。[3] https://baike.baidu.com/item/%E6%96%9C%E7%8E%87

wiloon, 9/27/2017 14:05

http://www.oschina.net/question/12_35433 Java 7 引入了一个全新灵活的线程同步机制,名为 Phaser 。 如果你需要等待线程结束然后继续执行其他任务,那么 Phaser 是一个好的选择,接下来我们一步步来介绍 Phaser 的使用: 首先看下面的代码: import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.concurrent.Phaser; public class PhaserExample { public static void main(String[] args) throws InterruptedException { List tasks = new ArrayList<>(); for (int i … Continue reading

wiloon, 9/26/2017 23:38

http://bbs.gfan.com/android-9177501-1-1.html https://forum.xda-developers.com/nexus-6p/general/guide-fix-nexus-6p-bootloop-death-blod-t3640279 Boot your phone into bootloader (hold power and volume down). Connect your phone to the computer. Go to the folder where you have the modified files, then hold shift and right click in a blank space, click on … Continue reading

wiloon, 9/21/2017 15:43

  TCP/IP之Nagle算法与40ms延迟提到了Nagle 算法。这样虽然提高了网络吞吐量,但是实时性却降低了,在一些交互性很强的应用程序来说是不允许的,使用TCP_NODELAY选项可以禁止Nagle 算法。禁止Nagle后应用程序向内核递交的每个数据包都会立即发送出去。但是禁止Nagle,网络传输仍然受到TCP确认延迟机制的影响。   CORK意思是塞子,TCP中的CORK意思是将连接塞住,使得数据先不发出去,等到拔去塞子后再发出去。设置该选项后,内核会尽力把小数据包拼接成一个大的数据包(一个MTU)再发送出去,一定时间后,内核仍然没有组合成一个MTU时也必须发送现有的数据。然而,TCP_CORK的实现可能并不像你想象的那么完美,CORK并不会将连接完全塞住。内核其实并不知道应用层到底什么时候会发送第二批数据用于和第一批数据拼接以达到MTU的大小,因此内核会给出一个时间限制,在该时间内没有拼接成一个大包(努力接近MTU)的话,内核就会无条件发送。也就是说若应用层程序发送小包数据的间隔不够短时,TCP_CORK就没有一点作用,反而失去了数据的实时性(每个小包数据都会延时一定时间再发送,这个时间超过了内核的时间限制)。   Nagle算法和CORK算法非常类似,但是它们的着眼点不一样,Nagle算法主要避免网络因为太多的小包(协议头的比例非常之大)而拥塞,而CORK算法则是为了提高网络的利用率,使得总体上协议头占用的比例尽可能的小。如此看来这二者在避免发送小包上是一致的,在用户控制的层面上,Nagle算法完全不受用户socket的控制,你只能简单的设置TCP_NODELAY而禁用它,CORK算法同样也是通过设置或者清除TCP_CORK使能或者禁用之,然而Nagle算法关心的是网络拥塞问题,只要所有的ACK回来则发包,而CORK算法却可以关心内容,在前后数据包发送间隔很短的前提下(很重要,否则内核会帮你将分散的包发出),即使你是分散发送多个小数据包,你也可以通过使能CORK算法将这些内容拼接在一个包内,如果此时用Nagle算法的话,则可能做不到这一点。 Nagle算法 根据创建者John Nagle命名。该算法用于对缓冲区内的一定数量的消息进行自动连接。该处理过程(称为Nagling),通过减少必须发送的封包的数量,提高了网络应用 程序系统的效率。Nagle算法,由Ford Aerospace And Communications Corporation Congestion Control in IP/TCPinternetworks(IETF RFC 896)(1984)定义,最初是用于缓冲Ford的私有TCP/IP网络拥塞情况,不过被广泛传播开来。 Nagle的文档定义了一种他称之为小封包问题的解决方法。当某个应用程序每次只产生一字节的数据,就会导致网络由于这样的小封包而过载(该情况通 常被称为“发送端SB窗口并发症”),从而产生该问题。一个源自键盘的单一字符-1字节的数据-可能导致一个41字节的封包被传送,该封包包含了1字节的 有用数据和40字节的头部数据。这种4000%过载的情况,在像APRANET这样只有很轻负载的网络中是可以接受的,但在像Ford这样的负载很重的网 络中,可能强制重传,导致封包丢失,并且通过过度拥挤交换节点和网关降低了传播速度。更进一步,当连接被丢弃时,吞吐量可能被降低。 虽然Nagle算法用于解决Ford网络内产生的问题,但同样的问题也出现在APRANet。通过网络,Nagling被广泛实现,包括 internet,并且产生了巨大的效用-虽然某些时候在高交互性环境如一些C/S情况下不希望进行该处理。在这种情况下,可以通过 TCP_NODELAY套接字选项关闭Nagling。 注:Nagle虽然解决了小封包问题,但也导致了较高的不可预测的延迟,同时降低了吞吐量。 TCP_CORK TCP链接的过程中,默认开启Nagle算法,进行小包发送的优化。优化网络传输,兼顾网络延时和网络拥塞。这个时候可以置位TCP_NODELAY关闭Nagle算法,有数据包的话直接发送保证网络时效性。在进行大量数据发送的时候可以置位TCP_CORK关闭Nagle算法保证网络利用性。尽可能的进行数据的组包,以最大mtu传输,如果发送的数据包大小过小则如果在0.6~0.8S范围内都没能组装成一个MTU时,直接发送。如果发送的数据包大小足够间隔在0.45内时,每次组装一个MTU进行发送。如果间隔大于0.4~0.8S则,每过来一个数据包就直接发送。 实测打开 TCP_CORK 选项会使响应出现 1 至 2 秒的延迟。比上面说的要长一些。 TCP_NODELAY 如果发送方持续地发送小批量的数据, 并且接收方不一定会立即发送响应数据, 那么Nagle … Continue reading

wiloon, 9/19/2017 16:21

http://www.cnblogs.com/zsy/p/5812676.html 在c#、java等高级语言中,经常会用到枚举类型来表示状态等。在golang中并没有枚举类型,如何实现枚举呢?首先从枚举的概念入手。 1、枚举类型定义 从百度百科查询解释如下:http://baike.baidu.com/link?url=Lrq57-YIZJ35grERvdg2kh7lfGfxvvLCVsNBMAqjBUOQX3CJUYnJp-9oZ2-rf3JGMqL3e4RbnSRQWs_5nmaI6K 枚举类型在C#或C++,java,VB等一些计算机编程语言中是一种基本数据类型而不是构造数据类型,而在C语言等计算机编程语言中是一种构造数据类型。它用于声明一组命名的常数,当一个变量有几种可能的取值时,可以将它定义为枚举类型。 枚举可以根据Integer、Long、Short或Byte中的任意一种数据类型来创建一种新型变量。这种变量能设置为已经定义的一组之中的一个,有效地防止用户提供无效值。该变量可使代码更加清晰,因为它可以描述特定的值。 从上面知道:是一组命名的常数,常量值可以是连续的,也可以是断续的。比较正规的理解如下: 在程序设计中,有时会用到由若干个有限数据元素组成的集合,如一周内的星期一到星期日七个数据元素组成的集合,由三种颜色红、黄、绿组成的集合,一个工作班组内十个职工组成的集合等等,程序中某个变量取值仅限于集合中的元素。此时,可将这些数据集合定义为枚举类型。因此,枚举类型是某类数据可能取值的集合,如一周内星期可能取值的集合为: { Sun,Mon,Tue,Wed,Thu,Fri,Sat} 该集合可定义为描述星期的枚举类型,该枚举类型共有七个元素,因而用枚举类型定义的枚举变量只能取集合中的某一元素值。由于枚举类型是导出数据类型,因此,必须先定义枚举类型,然后再用枚举类型定义枚举型变量。 2、枚举类型注意事项 使用枚举类型要从以下方面考虑: 1、枚举概念:查看《1、枚举类型定义》 2、枚举成员:用于声明新的枚举类型。是该枚举类型的命名常数。任意两个枚举成员不能具有相同的名称。每个枚举成员均具有相关联的常数值。此值的类型就是枚举的基础类型。每个枚举成员的常数值必须在该枚举的基础类型的范围之内。 3、枚举成员默认值:在枚举类型中声明的第一个枚举成员它的默值为零。 4、枚举成员显示赋值:允许多个枚举成员有相同的值。没有显示赋值的枚举成员的值,总是前一个枚举成员的值+1。 5、枚举类型与基础类型的转换 3、GOLANG枚举类型实现 3.1 枚举类型实现 查看2.4,可根据iota特性进行枚举类型的定义: image 测试输出如下: 7_T9%2}S6%SBW187F[]HAOW 枚举类型使用步骤: 声明枚举类型 定义枚举变量 使用枚举变量 注意:从golang枚举类型定义来看,变量enum也可以为99等其他int类型。从这个方面来看,golang定义的枚举类型比较广泛。如下图: image 3.2 iota的优势 从3.1来看golang的枚举类型实现也是比较简单的,利用iota的递增规则进行编程。 iota的使用规则,详情查看《golang 使用 iota》。 3.3 如何使用多个iota 3.1中定义的枚举类型对应的值Success=1、Failed=2、DuplicateEvent=3、DuplicateCommand=4,是按照iota递增规则进行的,加入要试下Success=1、Failed=2、DuplicateEvent=0、DuplicateCommand=1,可行吗?答案是完全行的通的,修订枚举定义格式: … Continue reading

wiloon, 9/11/2017 13:01

http://www.jianshu.com/p/e45cea3e1723 runtime 调度器是个非常有用的东西,关于 runtime 包几个方法: Gosched:让当前线程让出 cpu 以让其它线程运行,它不会挂起当前线程,因此当前线程未来会继续执行 NumCPU:返回当前系统的 CPU 核数量 GOMAXPROCS:设置最大的可同时使用的 CPU 核数 Goexit:退出当前 goroutine(但是defer语句会照常执行) NumGoroutine:返回正在执行和排队的任务总数 GOOS:目标操作系统 NumCPU package main import ( “fmt” “runtime” ) func main() { fmt.Println(“cpus:”, runtime.NumCPU()) fmt.Println(“goroot:”, runtime.GOROOT()) fmt.Println(“archive:”, runtime.GOOS) } 运行结果: GOMAXPROCS Golang 默认所有任务都运行在一个 … Continue reading

wiloon, 9/10/2017 15:31

“`shell git init git add . git commit -m “Initial commit” #访问 GitHub, 创建一个新仓库 git remote add origin https://github.com/superRaytin/alipay-app-ui.git #git push origin master git push -u origin master -f http://leonshi.com/2016/02/01/add-existing-project-to-github/ http://blog.csdn.net/shiren1118/article/details/7761203

wiloon, 9/10/2017 15:20

https://my.oschina.net/u/943306/blog/149395 ###After函数 time.After(time.Duration) 和Sleep差不多,意思是多少时间之后,但在取出管道内容前不阻塞 fmt.Println(“the 1”) tc:=time.After(time.Second) //返回一个time.C这个管道,1秒(time.Second)后会在此管道中放入一个时间点(time.Now()) //时间点记录的是放入管道那一刻的时间值 fmt.Println(“the 2”) fmt.Println(“the 3”) <-tc //阻塞中,直到取出tc管道里的数据 fmt.Println(“the 4”) //【结果】立即打印123,等了1秒不到一点点的时间,打印了4,结束 //打印the 1后,获得了一个空管道,这个管道1秒后会有数据进来 //打印the 2,(这里可以做更多事情) //打印the 3 //等待,直到可以取出管道的数据(取出数据的时间与获得tc管道的时间正好差1秒钟) //打印the 4 http://www.jianshu.com/p/8fd62c805ee5 Go有一个package名字叫time,通过这个package可以很容易的实现与时间有关的操作。time package中有一个ticker结构,可以实现定时任务。 import “time” ticker := time.NewTicker(time.Minute * 1) go func() { … Continue reading

wiloon, 9/8/2017 22:49

https://www.linuxserver.io/2017/04/28/how-to-setup-vfio-gpu-passthrough-using-ovmf-and-kvm-on-arch-linux/ https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF https://github.com/IronicBadger/arch-vfio-ovmf https://wiki.archlinux.org/index.php/PCI_passthrough_via_OVMF#Plain_QEMU_without_libvirt

wiloon, 9/8/2017 16:28

create proto file in src/main/proto/foo.proto option java_package = “com.wiloon.foo”; gradle build find generated source in build/generated/source/proto/main/grpc/com/wiloon/foo/foo.java https://grpc.io/docs/quickstart/java.html https://github.com/google/protobuf-gradle-plugin

wiloon, 9/8/2017 10:03

http://tonybai.com/2017/06/08/first-glimpse-of-dep/ https://github.com/golang/dep http://tonybai.com/2017/06/08/first-glimpse-of-dep/

wiloon, 9/7/2017 12:25

https://grpc.io/docs/quickstart/go.html#prerequisites http://www.blogjava.net/killme2008/archive/2010/01/20/310206.html

wiloon, 9/6/2017 10:34

https://my.oschina.net/jackieyeah/blog/524556 https://stackoverflow.com/questions/7875002/setting-debug-configuration-for-mavenjettyeclipse

wiloon, 9/5/2017 13:13

http://favccxx.blog.51cto.com/2890523/1635938 OAuth与SSO、REST有哪些区别与联系 2015-04-20 10:31:10 标签:SSO REST OAuth OAuth2.0 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://favccxx.blog.51cto.com/2890523/1635938 谈到OAuth,很多人自然而然的就会想起SSO,还有些人会想起REST。其实,OAuth与SSO和REST并没有太深的关系,它们分别有其不同的适用场景。接下来,我们就看看它们之间的区别与联系是什么? OAuth与SSO的区别? OAuth是一种授权协议,只是为用户资源的授权提供了一个安全的、开放而又简易的标准。OAuth 2.0为客户端开发者开发Web应用,桌面端应用程序,移动应用及客厅设备提供特定的授权流程。 SSO是在多个应用系统中,用户只需要登录一次就可以访问所有相互信任的应用系统。 通俗的讲,OAuth是为解决不同公司的不同产品实现登陆的一种简便授权方案,通常这些授权服务都是由大客户网站提供的,如QQ,新浪微博,人人网等。而使用这些服务的客户可能是大客户网站,也可能是小客户网站。使用OAuth授权的好处是,在为用户提供某些服务时,可减少或避免因用户懒于注册而导致的用户流失问题。 SSO通常处理的是一个公司的不同应用间的访问登陆问题。如企业应用有很多业务子系统,只需登陆一个系统,就可以实现不同子系统间的跳转,而避免了登陆操作。 OAuth与SSO的应用场景不同,虽然可以使用OAuth实现SSO,但并不建议这么做。不过,如果SSO和OAuth结合起来的话,理论上是可以打通各个公司的各个不同应用间的登陆问题,但现实往往是残酷的。 OAuth与REST的关系? 谈到REST的安全性问题时,很多人容易联想到使用OAuth来解决这个难题。其实,REST与OAuth有着天壤之别。 OAuth为网站(系统)用户授权第三方应用(网站、系统)访问自己在网站(系统)中的隐私数据提供的一种规范。 REST初期理念是“每个不同的子资源都有一个绝对唯一且不重复的URI地址”。它仅仅是一个URI资源而已,而且是无状态的,因此REST并不适合做需要授权的应用。恰恰相反的是,在使用OAuth授权时,通常会使用REST API来完成授权操作。

wiloon, 9/2/2017 9:18

https://linux.cn/article-8590-1.html 在本篇中,我们会解释 cron 和 anacron,并向你展示如何在 Linux 中设置 anacron。我们也会比较这两个工具。 要在一个给定时间或者稍后安排一个任务,你可以使用 at 或者 batch 命令,要使命令能够重复运行,你可以使用 cron 以及 anacron 工具。 cron – 是一个用于运行计划任务如系统备份、更新等的守护进程。它适合在那些 24X7 不间断运行的机器如服务器上运行的计划任务。 命令/脚本被写在 cron 任务脚本中,它是在 crontab 文件中被安排的。系统默认的 crontab 文件是 /etc/crontab,但是每个用户也可以创建自己的 crontab 文件来在特定时间运行用户定义的命令。 要创建一份个人 crontab 文件,只要输入: $ crontab -e 如何在 Linux … Continue reading

wiloon, 9/1/2017 13:13

inux文件分割与合并:split & cat Linux下文件分割可以通过split命令来实现,而用cat进行文件合并。而分割可以指定按行数分割和安大小分割两种模式。Linux下文件合并可以通过cat命令来实现,非常简单。 在Linux下用split进行文件分割: 模式一:指定分割后文件行数 对与txt文本文件,可以通过指定分割后文件的行数来进行文件分割。 命令: split -l 300 large_file.txt new_file_prefix 模式二:指定分割后文件大小 对于可执行文件等二进制文件,则不能通过文件行数来进行文件分割,此时我们可以指定分割大小来分隔文件。 命令: split -b 10m large_file.bin new_file_prefix 对二进制文件我们同样也可以按文件大小来分隔。 在Linux下用cat进行文件合并: 命令: cat small_files* > large_file Linx文件分割命令英文释义: -, read standard input. Mandatory arguments to long options are mandatory … Continue reading

next page
辽ICP备14012896