w1100n
This site is best viewed in Google Chrome
wiloon, 10/31/2016 14:32

https://wiki.archlinux.org/index.php/software_access_point#Wi-Fi_device_must_support_AP_mode http://os.51cto.com/art/201311/415573.htm

wiloon, 10/28/2016 12:34

https://www.oschina.net/news/78491/linux-unix-login-script   不知道你有没有遇到过这样的场景,当你需要设置一个环境变量,或者运行一个程序设置你的shell或桌面环境,但是不知道在哪里是最方便设置的位置。 有一些常见的情况,例如从Debian的包管理程序到Iaas的管理中,很多任务需要设置环境变量才能正常运行。 有时,程序通常只需要在首次登陆时运行一次,例如xrandr命令。 此外,有的程序偶尔会被注入到shell中,例如rbenv,rvn或 SitePoint’s自己的 envswith 程序。 让我们来看看在Debian GNU/Linux Jessie安装中出现的一些常见选项,并尝试理解这一切。 /etc/profile 默认情况下,Debian提供/etc/profile文件,这个文件用来设置$PATH变量($PATH通常用来声明命令的搜索路径),可以立即生效。下面的代码是/etc/profile的一部分。 ? 1 2 3 4 5 6 if [ “`id -u`” -eq 0 ]; then PATH=”/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin” else PATH=”/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games” fi export PATH 为了方便,root用户(ID为0)和其他任何用户的路径都不同。这是因为系统二进制目录(sbin目录)位置传统上是作为系统管理程序、或必须以root身份运行的程序存放的保留位置。而games路径对于root用户来说是省略的,因为不到非必要的时候,绝不可能使用root用户来运行游戏程序。 接下来,/etc/profile处理$PS1变量的设置,$PS1变量是用来设置主提示字符串(即用户登陆时显示的字符)。除了系统的shell是Bash以外,系统$PS1变量默认设置的是$ (root用户默认是#)。如果系统的shell使用的是Bash,则/etc/bash.bashrc 文件会替代$PS变量来处理主提示字符串(特殊情况除外)。后面我们会简短地说一下/etc/bash.bashrc。 所以从这一点上,我们可以推断/etc/profile在登陆期间(例如使用login命令)会被所有的shell读取。/etc/profile调用id命令来读取用户ID,而不是使用更高效的Bash内置变量${UID}。Bash使用特定来源的配置,而不是定义一个花哨的shell提示符,因为Bash支持反斜杠转义的特殊字符,例如\u(用户名) 和 \h (主机名),许多其他的shell都不支持这样定义。/etc/profile应该尝试和POSIX兼容,以便与用户可能自己安装的任何shell兼容。 Debian GNU/linux通常预装Dash,Dash是一个仅仅旨在实现POSIX(和一些伯克利)扩展的基本shell。如果我们修改/etc/profile(修改之前先备份)让PS1=’$ ‘这一行设置不同的值,然后模拟一个Dash登录(通过dash -l命令),我们可以看到Dash会使用我们自定义的提示。但是,如果我们调用不带-l参数的dash命令,dash将不会读取/etc/profile。此时Dash会使用默认值(这意味着此时PS1的值是我们修改之前的值)。 最后一点和/etc/profile相关的趣事是下面的代码片段: ? 1 2 … Continue reading

wiloon, 10/26/2016 9:28

http://blog.csdn.net/dc_726/article/details/45399371 当我们实现一种语言时,我们需要构建读取句子(sentence)的应用,并对输入中的元素做出反应。如果应用计算或执行句子,我们就叫它解释器(interpreter),包括计算器、配置文件读取器、Python解释器都属于解释器。如果我们将句子转换成另一种语言,我们就叫它翻译器(translator),像Java到C#的翻译器和编译器都属于翻译器。不管是解释器还是翻译器,应用首先都要识别出所有有效的句子、词组、字词组等,识别语言的程序就叫解析器(parser)或语法分析器(syntax analyzer)。我们学习的重点就是如何实现自己的解析器,去解析我们的目标语言,像DSL语言、配置文件、自定义SQL等等。 1.2 元编程 手动编写解析器是非常繁琐的,所以我们有了ANTLR。只需编写ANTLR的语法文件,描述我们要解析的语言的语法,之后ANTLR就会自动生成能解析这种语言的解析器。也就是说,ANTLR是一种能写出程序的程序。在学习LISP或Ruby的宏时,我们经常能接触到元编程的概念。而用来声明我们语言的ANTLR语言的语法,就是元语言(meta-language)。 1.3 解析过程 为了简单起见,我们将解析分为两个阶段,对应我们的大脑读取文字时的过程。当我们读到一个句子时,在第一阶段,大脑会下意识地将字符组成单词,然后像查词典一样识别出它们的意思。在第二阶段,大脑会根据已识别的单词去识别句子的结构。第一阶段的过程叫词法分析(lexical analysis),对应的分析程序叫做lexer,负责将符号(token)分组成符号类(token class or token type)。而第二阶段就是真正的parser,默认ANTLR会构建出一棵分析树(parse tree)或叫语法树(syntax tree)。如下图,就是简单的赋值表达式的解析过程: 语法树的叶子是输入token,而上级结点时包含其孩子结点的词组名(phase),线性的句子其实是语法树的序列化。最终生成语法树的好处是: 1) 树形结构易于遍历和处理,并且易被程序员理解,方便了应用代码做进一步处理。 2) 多种解释或翻译的应用代码都可以重用一个解析器。但ANTLR也支持像传统解析器生成器那样,将应用处理代码嵌入到语法中。 3) 对于因为计算依赖而需要多趟处理的翻译器来说,语法树非常有用!我们不用多次调用解析器去解析,只需高效地遍历语法树多次。

wiloon, 10/26/2016 8:53

http://www.qttc.net/201208175.html MySQL默认操作模式就是autocommit自动提交模式。这就表示除非显式地开始一个事务,否则每个查询都被当做一个单独的事务自动执行。我们可以通过设置autocommit的值改变是否是自动提交autocommit模式。 通过以下命令可以查看当前autocommit模式 mysql> show variables like ‘autocommit’; +—————+——-+ | Variable_name | Value | +—————+——-+ | autocommit    | ON    | +—————+——-+ 1 row in set (0.04 sec) 从查询结果中,我们发现Value的值是ON,表示autocommit开启。我们可以通过以下SQL语句改变这个模式 1 mysql> set autocommit = 0; 值0和OFF都是一样的,当然,1也就表示ON。通过以上设置autocommit=0,则用户将一直处于某个事务中,直到执行一条commit提交或rollback语句才会结束当前事务重新开始一个新的事务。 举个例子: 张三给李四转账500元。那么在数据库中应该是以下操作: 1,先查询张三的账户余额是否足够 2,张三的账户上减去500元 3,李四的账户上加上500元 … Continue reading

wiloon, 10/24/2016 19:42

default-time-zone = ‘+8:00’ http://blog.csdn.net/mchdba/article/details/9763521

wiloon, 10/19/2016 19:42

https://my.oschina.net/goberl/blog/85816   1.CPU占用最多的前10个进程: ps auxw|head -1;ps auxw|sort -rn -k3|head -10 2.内存消耗最多的前10个进程 ps auxw|head -1;ps auxw|sort -rn -k4|head -10 3.虚拟内存使用最多的前10个进程 ps auxw|head -1;ps auxw|sort -rn -k5|head -10 4.也可以试试 ps auxw –sort=rss ps auxw –sort=%cpu 5.看看几个参数含义 %MEM 进程的内存占用率 MAJFL is the major … Continue reading

wiloon, 10/19/2016 13:19

https://wrapper.tanukisoftware.com/doc/english/prop-ping-alert-x.html The Wrapper uses a ping system as one of its methods of monitoring the JVM. The Wrapper will send a ping to the JVM and then wait for a ping response. If a response has not been received for … Continue reading

wiloon, 10/18/2016 17:02

http://glances.readthedocs.io/en/latest/index.html Glances 还是有些值得关注的,和那些常用的老牌监控工具比起来,比如 top/vmstat/iostat 只能监控本机系统,Glances 可以监控本机也可以通过客户端服务器模式监控其他机器;Glances 提供了基于 XML/RPC 的 API 便于其他程序调用,可编程;Glances 可以将数据输出保存到 csv 或 html 格式的文件方便其他程序处理(报告或绘制图形)。 Glances 是用 Python 开发的,使用 psutil 库来采集系统数据,在用户的终端上实时动态的显示重要的系统数据和变化。显示的数据包括:CPU、内存、磁盘、网络等使用情况,内核、运行队列、负载、I/O 状态、消耗资源最多的进程等等。 安装 Glance 支持 Linux, Mac OS X, FreeBSD, Windows 等多个系统,安装也很方便。在 Ubuntu 上安装: $ sudo apt-get update $ … Continue reading

wiloon, 10/18/2016 16:39

http://www.cnblogs.com/magicboy110/archive/2010/12/12/1903927.html   AGPS定位基本原理浅析 2010-12-12 21:03 by MagicBoy110, 34759 阅读, 18 评论, 收藏, 编辑位置服务已经成为越来越热的一门技术,也将成为以后所有移动设备(智能手机、掌上电脑等)的标配。随着人们对BLS(Based Location Serices,基于位置的服务)需求的飞速增长,无线定位技术也越来越得到重视。AGPS(Assisted GPS,A-GPS,网络辅助GPS)定位技术结合了GPS定位和蜂窝基站定位的优势,借助蜂窝网络的数据传输功能,可以达到很高的定位精度和很快的定位速度,在移动设备尤其是手机中被越来越广泛的使用。本文以GSM网络辅助GPS定位为例对AGPS的定位原理进行简单介绍。 AGPS定位基本机制 根据定位媒介来分,定位技术基本包含基于GPS的定位和基于蜂窝基站的定位两类(阅读本文前,建议先阅读《GPS定位基本原理浅析》和《GSM蜂窝基站定位基本原理浅析》两篇文章)。GPS定位以其高精度得到更多的关注,但是其弱点也很明显:一是硬件初始化(首次搜索卫星)时间较长,需要几分钟至十几分钟;二是GPS卫星信号穿透力若,容易受到建筑物、树木等的阻挡而影响定位精度。AGPS定位技术通过网络的辅助,成功的解决或缓解了这两个问题。对于辅助网络,有多种可能性,以GSM蜂窝网络为例,一般是通过GPRS网络进行辅助。 如上图所示,直接通过GPS信号从GPS获取定位所需的信息,这是传统GPS定位的基本机制。AGPS中,通过蜂窝基站的辅助来解决或缓解上文提到的两个问题: 对于第一个问题,首次搜星慢的问题,根据《GPS定位基本原理浅析》一文的介绍,我们知道是因为GPS卫星接收器需要进行全频段搜索以寻找GPS卫星而导致的。在AGPS中,通过从蜂窝网络下载当前地区的可用卫星信息(包含当地区可用的卫星频段、方位、仰角等信息),从而避免了全频段大范围搜索,使首次搜星速度大大提高,时间由原来的几分钟减小到几秒钟。 对于第二个问题,GPS卫星信号易受干扰的问题,这是由GPS卫星信号本身的性质决定的,我们无法改变。但是APGS中,通过蜂窝基站参考GPS的辅助,或是借助GSM定位中Cell-ID定位(COO定位)方法的辅助,缓解了在GPS信号不良的情况下定位的问题,有效提高了在此情况下的定位精度。 AGPS定位基本流程 1.搜索卫星 AGPS定位仍然是基于GPS的,因此定位的首要步骤还是先搜索到当前地区的可用GPS卫星。在传统GPS定位中需要全频段搜索以找到可用卫星因而耗时较长,而AGPS通过网络直接下载当前地区的可用卫星信息,从而提高了搜星速度。同时,也减小了设备的电量消耗。 如上图所示,AGPS中从定位启动到GPS接收器找到可用卫星的基本流程如下: (1)设备从蜂窝基站获取到当前所在的小区位置(即一次COO定位) (2)设备通过蜂窝网络将当前蜂窝小区位置传送给网络中的AGPS位置服务器 (3)APGS位置服务器根据当前小区位置查询该区域当前可用的卫星信息(包括卫星的频段、方位、仰角等相关信息),并返回给设备 (4)GPS接收器根据得到的可用卫星信息,可以快速找到当前可用的GPS卫星 至此,GPS接收器已经可正常接收GPS信号,GPS初始化过程结束。AGPS对定位速度的提高就主要体现在此过程中。 2.计算位置 GPS接收器一旦找到四颗以上的可用卫星,就可以开始接收卫星信号实现定位。接下来的过程根据位置计算所在端的不同,通常有两种方案:在移动设备端进行计算的MS-Based方式和在网络端进行计算的MS-Assisted方式。 MS-Based方式中,接下来过程与传统GPS定位完全相同,GPS接收器接收原始GPS信号,解调并进行一定处理,根据处理后的信息进行位置计算,得到最终的位置坐标。 MS-Assisted方式中,解调并处理后,接下来的过程如下图所示: (5)设备将处理后的GPS信息(伪距信息)通过蜂窝网络传输给AGPS位置服务器 (6)AGPS服务器根据伪距信息,并结合其他途径(蜂窝基站定位、参考GPS定位等)得到的辅助定位信息,计算出最终的位置坐标,返回给设备。 在此过程中可以看到,在使用MS-Assisted方式时,由于辅助定位信息的加入,可以取得更高的定位精度;同时,可以很大程度上克服弱GPS信号情况下的无法定位或精度降低的问题;将复杂计算转移到网络端,也可以很大程度上减小设备的电量消耗。 AGPS定位优劣分析 与传统GPS定位相比,APGS定位有如下的优势: 首次搜星速度快 … Continue reading

wiloon, 10/18/2016 16:23

http://www.cnblogs.com/hobinly/archive/2012/09/20/2694708.htmlT2001V00000087FG3 这几天遇到远程桌面控制服务器时,无法剪切、粘贴一些东西,上网搜了一下,原来是rdpclip.exe(remote desktop clipboard)不起作用了。此程序负责管理本地机与远程服务器之间共享剪切板,它运行在远程服务器上。 解决方法: 1、打开任务管理器-〉结束此进程(rdpclip.exe) 2、点击任务管理器菜单“文件-〉新建任务”,在输入框中输入“rdpclip”,确定

wiloon, 10/14/2016 18:21

http://blog.itpub.net/17203031/viewspace-694383/ Select … for update语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。   借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。本篇我们就来介绍一下这个子句的用法和功能。   下面是采自Oracle官方文档《SQL Language Reference》中关于for update子句的说明:(请双击点开图片查看)       从for update子句的语法状态图中,我们可以看出该子句分为两个部分:加锁范围子句和加锁行为子句。下面我们分别针对两个方面的进行介绍。   加锁范围子句   在select…for update之后,可以使用of子句选择对select的特定数据表进行加锁操作。默认情况下,不使用of子句表示在select所有的数据表中加锁。   //采用默认格式for update SQL> select * from emp where rownum<2 for update;   EMPNO ENAME      JOB         MGR … Continue reading

wiloon, 10/14/2016 8:15

GOROOT=/usr/lib/go GOPATH: linux: windows: GOPATH=C:\workspace\myproject\golang\lib;C:\workspace\myproject\golang\gox

wiloon, 10/14/2016 8:09

fmt包实现了格式化的I/O函数,这点类似C语言中的printf和scanf,但是更加简单. 占位符: 通用占位符: %v 值的默认格式。当打印结构体时,“加号”标记(%+v)会添加字段名 %#v 相应值的Go语法表示 %T 相应值的类型的Go语法表示 %% 字面上的百分号,并非值的占位符 用法如下: view plain copy package main import ( “fmt” ) type Sample struct { a int str string } func main() { s := new(Sample) s.a = 1 s.str = … Continue reading

wiloon, 10/12/2016 15:10

http://www.cnblogs.com/cobbliu/p/4461866.html   Table of Contents 1. 通过Channel传递退出信号 2. 使用waitgroup goroutine和channel是Go语言非常棒的特色,它们提供了一种非常轻便易用的并发能力。但是当您的应用进程中有很多goroutine的时候,如何在主流程中等待所有的goroutine 退出呢? 1 通过Channel传递退出信号 Go的一大设计哲学就是:通过Channel共享数据,而不是通过共享内存共享数据。主流程可以通过channel向任何goroutine发送停止信号,就像下面这样: 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 … Continue reading

wiloon, 10/12/2016 12:22

http://www.infoq.com/cn/articles/what-agile-mindset?utm_campaign=infoq_content&utm_source=infoq&utm_medium=feed&utm_term=global   敏捷心态是支持敏捷工作环境的态度。这些包括尊重、协作、改进和学习周期、为所有权自豪、专注于交付价值,以及有能力适应改变。这种心态是培养高性能团队所必需的,他们进而能为客户交付令人惊讶的价值。 尊重——大多数团队工作需要从尊重与你共事的伙伴开始。在组织层面,尊重组织各级同事、客户以及产品本身也是维系恰当工作环境的关键。 协作——随着待建系统越来越复杂,待处理的问题也随之更为复杂,没有一个人能在完成一项任务时掌握所有所需的信息。此外,与组织其他部分的同事以协作的方式一起工作将降低“手递手”交付的需求。通过工具、办公空间和行为规范对协作的促进,能提升协作讨论的质量和数量。 改进环——没有刻在石头上一成不变的过程,总有改进的空间。一个支持这种行为的组织将迎着这束光不断向前。 学习环——允许个人去尝试新鲜事物,成功也好,失败也罢,贵在为员工提供了学习和自我提升的机会。不应总向个人碎碎念失败,而应支持他们冒险,从而增长组织的知识水平。 为所有权自豪——即使没人为特定代码块负责,也应为预期交付高品质工作的增量交付物而自豪。 专注于交付价值——敏捷团队的主要目的是为客户交付价值。团队应该能够随时关注什么是最大的价值,并把这些传递给组织中的其他人(例如管理人员和scrum master),这有助于消除任何障碍。 有能力适应改变——如果客户在会后两个小时给你打电话,说想要改改,组织随之而动。任何应对这种变化的处理过程都不应该成为这种变化的障碍。

wiloon, 10/12/2016 10:24

https://linuxtoy.org/archives/xclip.html 在 X 系统里面,从一个窗口复制一段文字到另一个窗口,有两套机制,分别是 Selections 和 cut buffers。 常用的 copy & paste 是利用的 cut buffers 机制;另外用鼠标选中一段文字,然后在另一个窗口按鼠标中键实现复制,利用的是 selections 机制。selection 又可以分为 master 和 slave selection。 当用鼠标选中一段文件,这段文字就自动被复制到 master selection。然后在另一个地方按鼠标中键,就自动把 master selection 的内容粘贴出来。 当你想复制少量文字的时候,两种方法都是很方便的。但是当复制大段文字的时候就挺麻烦。另外就是你可能会频繁的执行一些复制粘贴工作,不停的用鼠标选中文字,然后再粘贴。这是对手指的折磨。 我忍受不了这种折磨,所以发现了 xclip, 方便的管理 X selections 里面内容的工具。 比如如下命令就把文件 /etc/passwd 的内容复制到 X … Continue reading

wiloon, 10/12/2016 8:12

Go语言保留着C中值和指针的区别,但是对于指针繁琐用法进行了大量的简化,引入引用的概念。所以在Go语言中,你几乎不用担心会因为直接操作内寸而引起各式各样的错误。Go语言的指针,基本上只剩下用于区分 byref 和 byval 语义。 &: 取地址 *: 解析地址 这段代码执行结果: i=1;p=0x4212f100;p=1 i=2;p=0x4212f100;p=2 i=3;p=0x4212f100;*p=3 函数的参数传递可以看下面例子: package main import “fmt” type abc struct{ v int } func (a abc)aaaa(){ //传入的是值,而不是引用 a.v=1 fmt.Printf(“1:%d\n”,a.v) } func (a *abc)bbbb(){ //传入的是引用,而不是值 fmt.Printf(“2:%d\n”,a.v) a.v=2 fmt.Printf(“3:%d\n”,a.v) } func … Continue reading

next page
辽ICP备14012896