w1100n
This site is best viewed in Google Chrome
wiloon, 11/28/2016 10:24

http://www.cnblogs.com/xuanzhi201111/p/4175635.html   在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。(QEP:sql生成一个执行计划query Execution plan) mysql> explain select * from servers; +—-+————-+———+——+—————+——+———+——+——+——-+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +—-+————-+———+——+—————+——+———+——+——+——-+ | 1 | SIMPLE | servers … Continue reading

wiloon, 11/24/2016 15:29

https://github.com/acaudwell/Gource/wiki https://linuxtoy.org/archives/gource.html Gource, 可以在版本控制系统上轻松实现现在流行的数据可视化。 Gource 将整个项目代码当作一个树来呈现,将代码提交、分支及贡献者等信息和可视化的方式表现出来。内置对 Git, Mercurial, Bazaar 和 SVN 版本控制系统的支持。Gource 支持 Linux、OS X 及 Win 系统

wiloon, 11/24/2016 9:41

https://blog.go-zh.org/go-slices-usage-and-internals 引言 Go的切片类型为处理同类型数据序列提供一个方便而高效的方式。 切片有些类似于其他语言中的数组,但是有一些不同寻常的特性。 本文将深入切片的本质,并讲解它的用法。 数组 Go的切片是在数组之上的抽象数据类型,因此在了解切片之前必须要先理解数组。 数组类型定义了长度和元素类型。例如, [4]int 类型表示一个四个整数的数组。 数组的长度是固定的,长度是数组类型的一部分( [4]int 和 [5]int 是完全不同的类型)。 数组可以以常规的索引方式访问,表达式 s[n] 访问数组的第 n 个元素。 var a [4]int a[0] = 1 i := a[0] // i == 1 数组不需要显式的初始化;数组的零值是可以直接使用的,数组元素会自动初始化为其对应类型的零值: // a[2] == 0, int 类型的零值 … Continue reading

wiloon, 11/24/2016 8:20

https://godoc.org/golang.org/x/crypto/ssh

wiloon, 11/23/2016 15:14

遍历 基本语法 定义hashmap变量 由于go语言是一个强类型的语言,因此hashmap也是有类型的,具体体现在key和value都必须指定类型,比如声明一个key为string,value也是string的map, 需要这样做 var m map[string]string // 声明一个hashmap,还不能直接使用,必须使用make来初始化 m = make(map[string]string) // 初始化一个map m = make(map[string]string, 3) // 初始化一个map并附带一个可选的初始bucket(非准确值,只是有提示意义) m := map[string]string{} // 声明并初始化 m := make(map[string]string) // 使用make来初始化 大部分类型都能做key,某些类型是不能的,共同的特点是:不能使用==来比较,包括: slice, map, function get,set,delete m := map[string]int m[“a”] … Continue reading

wiloon, 11/23/2016 15:03

http://www.cnblogs.com/hupengcool/p/4143238.html Golang操作数据库 基本概念 Open() – creates a DB Close() – closes the DB Query() – 查询 QueryRow() -查询行 Exec() -执行操作,update,insert,delete Row – A row is not a hash map, but an abstraction of a cursor Next() Scan() 注意:DB并不是指的一个connection 连接到数据库 我们以mysql为例,使用github.com/go-sql-driver/mysql,首先我们需要导入我们需要的包 … Continue reading

wiloon, 11/22/2016 12:11

https://moonlet.gitbooks.io/cython-document-zh_cn/content/ch1-basic_tutorial.html Cython 的本质可以总结如下:Cython 是包含 C 数据类型的 Python。 Cython 是 Python:几乎所有 Python 代码都是合法的 Cython 代码。 (存在一些限制,但是差不多也可以。) Cython 的编译器会转化 Python 代码为 C 代码,这些 C 代码均可以调用 Python/C 的 API。 Cython 可不仅仅包含这些,Cython 中的参数和变量还可以以 C 数据类型来声明。代码中的 Python 值和 C 的值可以自由地交叉混合(intermixed)使用, 所有的转化都是自动进行。Python 中的引用计数维护(Reference count maintenance)和错误检查(error checking)操作同样是自动进行的,并且全面支持 … Continue reading

wiloon, 11/18/2016 14:28

原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://lixcto.blog.51cto.com/4834175/1431659 这篇总结一下Inventory,变量,目标匹配,及/usr/bin/ansible 命令行常用的模块 上一篇也说过Inventory的默认路径是在/etc/ansible/hosts,当然这个东西可以说是静态的,为啥是静态呢,你要手工的把你的要管理的主机写进去。 当然还有一种动态的Inventory,这个其实也简单,就是如果你已经有了一个资源管理系统,里面有你们的所有主机信息。然后咱们写个脚本程序,把你们资源管理系统里面的这些信息给拉过来,以json格式呈现就OK了。 其实ansible还有一种管理主机的方法,我们随便把主机定义到一个文件里,然后 用ansible或ansible-playbook的 -i参数去调用就OK了。不过这个要建立个目录结构,后面写playbook的时候再总结一下。 楼主这里没权限,还看不到资源管理系统,就不搞动态Inventory OK,先看看静态的Inventory lixc@ansible:~$ cat -n /etc/ansible/hosts 1 [alltest:children] 2 salt 3 leihuo 4 5 [salt] 6 salt-master  ansible_ssh_user=lixc ansible_ssh_pass=123456 7 10.240.162.112  ansible_connection=paramiko 8 9 [leihuo] 10  lixc ansible_ssh_host=192.168.131.203 ansible_ssh_port=21100 11  10.240.162.11[1:9]:22 楼主这个简单的小例子,第1行,alltest这个组包含俩子组分别是下面的salt,和leihuo 第6行可以设置主机的默认连接用户,及密码 第7行可以设置ssh的连接方式,默认是openssh,我这里用paramiko,不用官网推荐用openssh,因为paramiko查询key的时候,很耗时,效率不高。 第10行,可以给主机随便取个别名,这里的“lixc”就是一个别名,如果ssh默认端口不是22,这里可以 指定特定的端口 指定ssh端口也可以像第11行,这么指定。 不过以上两种指定ssh端口方法,只针对我们有少部分的主机是特殊端口,如果我们所以主机都是指定的端口,不可能每个主机都这么弄一下吧。 … Continue reading

wiloon, 11/18/2016 9:23

CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 Java的concurrent包里面的CountDownLatch其实可以把它看作一个计数器,只不过这个计数器的操作是原子操作,同时只能有一个线程去操作这个计数器,也就是同时只能有一个线程去减这个计数器里面的值。 你可以向CountDownLatch对象设置一个初始的数字作为计数值,任何调用这个对象上的await()方法都会阻塞,直到这个计数器的计数值被其他的线程减为0为止。 CountDownLatch的一个非常典型的应用场景是:有一个任务想要往下执行,但必须要等到其他的任务执行完毕后才可以继续往下执行。假如我们这个想要继续往下执行的任务调用一个CountDownLatch对象的await()方法,其他的任务执行完自己的任务后调用同一个CountDownLatch对象上的countDown()方法,这个调用await()方法的任务将一直阻塞等待,直到这个CountDownLatch对象的计数值减到0为止。 CyclicBarrier CyclicBarrier是一个同步辅助类,它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等待线程后可以重用,所以称它为循环 的 barrier。   CyclicBarrier类似于CountDownLatch也是个计数器, 不同的是CyclicBarrier数的是调用了CyclicBarrier.await()进入等待的线程数, 当线程数达到了CyclicBarrier初始时规定的数目时,所有进入等待状态的线程被唤醒并继续。 CyclicBarrier就象它名字的意思一样,可看成是个障碍, 所有的线程必须到齐后才能一起通过这个障碍。 CyclicBarrier初始时还可带一个Runnable的参数,此Runnable任务在CyclicBarrier的数目达到后,所有其它线程被唤醒前被执行。 Semaphore   一个计数信号量。从概念上讲,信号量维护了一个许可集。如有必要,在许可可用前会阻塞每一个 acquire(),然后再获取该许可。每个 release() 添加一个许可,从而可能释放一个正在阻塞的获取者。但是,不使用实际的许可对象,Semaphore 只对可用许可的号码进行计数,并采取相应的行动。拿到信号量的线程可以进入代码,否则就等待。通过acquire()和release()获取和释放访问许可。 Juc中的同步辅助类 2.1 Semaphore 信号量是一类经典的同步工具. 信号量通常用来限制线程可以同时访问的(物理或逻辑)资源数量. 2.2 CountDownLatch 一种非常简单, 但很常用的同步辅助类. 其作用是在完成一组正在其他线程中执行的操作之前,允许一个或多个线程一直阻塞. 2.3 CyclicBarrier … Continue reading

wiloon, 11/17/2016 18:27

http://blog.csdn.net/reille/article/details/7010503 Xshell对于嵌入式开发来说,是个非常不错的工具。但或许都有过被中文显示为乱码的问题感觉有点不爽。解决方法其实很简单的,即把xshell编码方式改成UTF-8即可。 [文件]–>[打开]–>在打开的session中选择连接的那个,点击[属性] -> [终端], 编码选择为:Unicode(UTF-8),然后重新连接服务器即可。也可以在Xshell的工具栏里面点击“编码 ”按钮,选择Unicode(UTF-8)编码即可。

wiloon, 11/16/2016 15:09

create file main.c     http://world77.blog.51cto.com/414605/328263  

wiloon, 11/14/2016 16:58

http://blog.csdn.net/scucj/article/details/4385630 CUnit下载地址: http://sourceforge.net/projects/cunit/ CUnit 在线文档帮助:http://cunit.sourceforge.net/doc/index.html   关于CUnit, 本文主要从介绍三方面的内容: 1.CUnit的介绍。 1.1 介绍如何使用CUnit。 CUnit是一个对C语言编写的程序进行单元测试的框架,在线文档说它作为一个静态链接库被链接到用户的测试代码中。它提供了一种简洁的框架来建立测试架构,并提供丰富的断言(Assertion)来测试通用数据类型。除此之外,它还提供了许多不同的结构来运行测试用例和报告测试结果。

wiloon, 11/9/2016 10:11

在远程仓库一节中,我们讲了远程仓库实际上和本地仓库没啥不同,纯粹为了7×24小时开机并交换大家的修改。 GitHub就是一个免费托管开源代码的远程仓库。但是对于某些视源代码如生命的商业公司来说,既不想公开源代码,又舍不得给GitHub交保护费,那就只能自己搭建一台Git服务器作为私有仓库使用。 搭建Git服务器需要准备一台运行Linux的机器,强烈推荐用Ubuntu或Debian,这样,通过几条简单的apt命令就可以完成安装。 假设你已经有sudo权限的用户账号,下面,正式开始安装。 第一步,安装git: $ sudo pacman -S git 第二步,创建一个git用户,用来运行git服务: sudo useradd git 第三步,创建证书登录: 收集所有需要登录的用户的公钥,就是他们自己的id_rsa.pub文件,把所有公钥导入到/home/git/.ssh/authorized_keys文件里,一行一个。 第四步,初始化Git仓库: 先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令: $ sudo git init –bare sample.git Git就会创建一个裸仓库,裸仓库没有工作区,因为服务器上的Git仓库纯粹是为了共享,所以不让用户直接登录到服务器上去改工作区,并且服务器上的Git仓库通常都以.git结尾。然后,把owner改为git: $ sudo chown -R git:git sample.git 第五步,禁用shell登录: 出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行: git:x:1001:1001:,,,:/home/git:/bin/bash 改为: git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell 这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。 第六步,克隆远程仓库: 现在,可以通过git clone命令克隆远程仓库了,在各自的电脑上运行: … Continue reading

wiloon, 11/9/2016 7:59

http://blog.csdn.net/cszhouwei/article/details/38374603 Raft一致性算法 Why Not Paxos Paxos算法是莱斯利·兰伯特(LeslieLamport,就是 LaTeX 中的”La”,此人现在在微软研究院)于1990年提出的一种基于消息传递的一致性算法。由于算法难以理解起初并没有引起人们的重视,使Lamport在八年后1998年重新发表到ACM Transactions on Computer Systems上(The Part-TimeParliament)。即便如此paxos算法还是没有得到重视,2001年Lamport 觉得同行无法接受他的幽默感,于是用容易接受的方法重新表述了一遍(Paxos MadeSimple)。可见Lamport对Paxos算法情有独钟。近几年Paxos算法的普遍使用也证明它在分布式一致性算法中的重要地位。2006年Google的三篇论文初现“云”的端倪,其中的Chubby Lock服务使用Paxos作为Chubby Cell中的一致性算法,Paxos的人气从此一路狂飙。Lamport 本人在 他的blog 中描写了他用9年时间发表这个算法的前前后后。 “There is only one consensus protocol, and that’sPaxos-all other approaches are just broken versions of Paxos.” –Chubby authors “The dirtylittle secret of the … Continue reading

wiloon, 11/8/2016 12:58

DevOps(英文Development和Operations的组合)是一组过程、方法与系统的统称,用于促进开发(应用程序/软件工程)、技术运营和质量保障(QA)部门之间的沟通、协作与整合。它的出现是由于软件行业日益清晰地认识到:为了按时交付软件产品和服务,开发和运营工作必须紧密合作。[1]

wiloon, 11/8/2016 9:28

https://linux.cn/article-5957-1.html   很多计算机系统包含无线电传输,其中包括Wi-Fi、蓝牙和3G设备。这些设备消耗电源,在不使用这些设备时是一种能源浪费。 RFKill 是Linux内核中的一个子系统,它可提供一个接口,在此接口中可查询、激活并取消激活计算机系统中的无线电传输。当取消激活传输时,可使其处于可被软件重新激活的状态( 软锁定 )或软件无法重新激活的位置( 硬锁定 )。 RFKill 为内核子系统提供应用程序编程界面(API)。内核驱动程序被设计为支持RFKill使用这个API注册内核,并包含启用和禁用这个设备的方法。另外,RFKill提供用户程序可解读的通知以及用户程序查询传输状态的方法。 RFKill接口位于 /dev/rfkill,其中包含系统中所有无线电传输的当前状态。每个设备都在 sysfs 中注册当前RFKill状态。另外,在启用了RFKill的设备中每当状态更改时,RFKill会发出 uevents。 rfkill 是一个命令行工具,您可使用它查询和更改系统中启用了RFKill的设备。要获得这个工具,请安装 rfkill 软件包。 如果开机时在可以搜索到无线网络且输入密码正确但仍然无法接入的情况下,就可能是rfkill这个程序阻拦了接入,它是个用来控制无线网络及蓝牙的使用的软开关。 使用命令 rfkill list 获得设备列表,每个都包含与之关联的索引号 ,从 0 开始。 rfkill list 您可以使用这个索引号让 rfkill 停使或者使用某个设备,例如: rfkill block 0 停用系统中第一个启用RFKill的设备。 您还可以使用 rfkill 阻断某一类设备,或者所有启用了RFKill的设备。例如: rfkill block wifi 停用系统中的所有Wi-Fi设备。要停用所有启用了RFKill的设备,请运行: rfkill block all 要重新使用设备,请运行 rfkill unblock。要获得 rfkill 可停用的完整设备类别列表,请运行 rfkill help。

wiloon, 11/6/2016 12:07

maven { url ‘http://repo.grails.org/grails/repo’ } maven { url ‘http://repo.grails.org/grails/plugins’ } http://maven.aliyun.com/nexus/content/groups/public/

wiloon, 11/6/2016 11:54

configurations.all { // check for updates every build resolutionStrategy.cacheChangingModulesFor 0, ‘seconds’ } dependencies { compile group: “group”, name: “projectA”, version: “1.1-SNAPSHOT”, changing: true }   https://discuss.gradle.org/t/how-to-get-gradle-to-download-newer-snapshots-to-gradle-cache-when-using-an-ivy-repository/7344

next page
辽ICP备14012896