golang fmt/Println

golang fmt/Println fmt.Printf("ab %d %d %d cd\n", 1, 2, 3) fmt包实现了格式化的I/O函数,这点类似C语言中的printf和scanf,但是更加简单. 占位符: The format/fmt ‘verbs’, 占位符 %v 值的默认格式。当打印结构体时,“加号"标记 (%+v) 会添加字段名 %#v 相应值的 Go 语法表示, 打印结构体名, 类 json 格式 %+v 打印键值对 %T 相应值的类型的 Go 语法表示 %% 字面上的百分号, 并非值的占位符 %d 十进制表示 %c the character represented by the corresponding Unicode code point %x base 16, with lower-case letters for a-f %X base 16, with upper-case letters for A-F %p address of 0th element in base 16 notation, with leading 0x %t the word true or false, (bool) https://pkg.go.dev/fmt ...

2016-10-14 · 7 min · 1324 words · -

golang 控制语句/control, foreach, loop, switch, 循环

golang 控制语句 control, foreach, loop, switch, 循环 Go 中的控制语句较精简, 只有很少的几个控制结构, 仅有 if、for、select 和 switch, 没有 while 或者 do-while 循环。 multiple initialisation and increment package main import ( "fmt" ) func main() { // multiple initialisation and increment for no, i := 10, 1; i <= 10 && no <= 19; i, no = i+1, no+1 { fmt.Printf("%d * %d = %d\n", no, i, no*i) } } range for index,element := range someSlice { // index is the index where we are // element is the element from someSlice for where we are } //If you don't care about the index, you can use _: for _,element := range someSlice { // element is the element from someSlice for where we are } for 循环 Go语言的For循环有3中形式, 只有其中的一种使用分号。 ...

2016-10-12 · 4 min · 745 words · -

堡垒机

堡垒机 http://www.cnblogs.com/0201zcr/p/4718082.html 堡垒机,即在一个特定的网络环境下,为了保障网络和数据不受来自外部和内部用户的入侵和破坏,而运用各种技术手段实时收集和监控网络环境中每一个组成部分的系统状态、安全事件、网络活动,以便集中报警、记录、分析、处理的一种技术手段。 其从功能上讲,它综合了核心系统运维和安全审计管控两大主干功能,从技术实现上讲,通过切断终端计算机对网络和服务器资源的直接访问,而采用协议代理的方式,接管了终端计算机对网络和服务器的访问。形象地说,终端计算机对目标的访问,均需要经过运维安全审计的翻译。打一个比方,运维安全审计扮演着看门者的工作,所有对网络设备和服务器的请求都要从这扇大门经过。因此运维安全审计能够拦截非法访问,和恶意攻击,对不合法命令进行命令阻断,过滤掉所有对目标设备的非法访问行为,并对内部人员误操作和非法操作进行审计监控,以便事后责任追踪。 安全审计作为企业信息安全建设不可缺少的组成部分,逐渐受到用户的关注,是企业安全体系中的重要环节。同时,安全审计是事前预防、事中预警的有效风险控制手段,也是事后追溯的可靠证据来源。 原理: “堡垒机"实际上是旁路在网络交换机节点上的硬件设备,实现运维人员远程访问维护服务器的跳板,即物理上并联,逻辑上串联。简单的说,就是服务器运维管理人员原先是直接通过远程访问技术进行服务器维护和操作,这期间不免有一些误操作或者越权操作,而"堡垒机"作为远程运维的跳板,使运维人员间接通过堡垒机进行对远程服务的的运维操作。如原来使用微软的远程桌面RDP进行windows服务器的远程运维,现在先访问到堡垒机,再由堡垒机访问远程windows服务器。这期间,运维人员的所有操作都被记录下来,可以以屏幕录像、字符操作日志等形式长久保存。在服务器发生故障时,就可以通过保存的记录查看到以前进行的任何操作。 堡垒机的核心技术实际上就是微软的RDP协议,通过对RDP协议的解析,实现远程运维操作的图形审计。 以windows远程运维操作为例,客户端通过RDP协议访问"堡垒机”,再由堡垒机内置的远程访问客户端访问远程windows服务器,即RDP+RDP。 那么图形界面的操作是如何记录下来的呢?实际上堡垒机内部也是Windows操作系统 (不一定,有时候是Windows+Linux) ,客户端RDP到堡垒机后,又再一次启动了新的RDP,这时堡垒机的windows桌面就是远程访问到远程服务器时的桌面,只需要把这时的桌面情况记录下来就可以了。 由于微软的RDP协议内置了远程访问的屏幕信息,所以只需要正确的解析RDP协议的内容,并且把其中包含的视频信息抽取出来,再进行重组、压缩,就实现了图形操作的审计。 至于字符操作的审计,如FTP,实际上堡垒机内部内置了FTP客户端程序,也是客户端主机先RDP到堡垒机,再由堡垒机启动FTP客户端程序访问远程服务器,这样还是由堡垒机作为跳板,间接地把FTP命令传送到服务器,并把服务器的响应信息反馈给客户端主机,中间的操作过程全都被记录了下来。 远程视频访问的协议还有VNC,但由于VNC是一对一的访问,即同一时间一个客户端主机只能访问一台远程服务器,而RDP协议允许多个客户端同时访问同一个远程服务器,所以一般市场上的堡垒机厂商都是通过解析RDP协议实现运维审计的。 核心功能: 单点登录功能 支持对X11、linux、unix、数据库、网络设备、安全设备等一系列授权账号进行密码的自动化周期更改,简化密码管理,让使用者无需记忆众多系统密码,即可实现自动登录目标设备,便捷安全。 账号管理 设备支持统一账户管理策略,能够实现对所有服务器、网络设备、安全设备等账号进行集中管理,完成对账号整个生命周期的监控,并且可以对设备进行特殊角色设置如: 审计巡检员、运维操作员、设备管理员等自定义设置,以满足审计需求 身份认证 设备提供统一的认证接口,对用户进行认证,支持身份认证模式包括 动态口令、静态密码、硬件key 、生物特征等多种认证方式,设备具有灵活的定制接口,可以与其他第三方认证服务器之间结合;安全的认证模式,有效提高了认证的安全性和可靠性。 资源授权 设备提供基于用户、目标设备、时间、协议类型IP、行为等要素实现细粒度的操作授权,最大限度保护用户资源的安全 访问控制 设备支持对不同用户进行不同策略的制定,细粒度的访问控制能够最大限度的保护用户资源的安全,严防非法、越权访问事件的发生。 操作审计 设备能够对字符串、图形、文件传输、数据库等全程操作行为审计;通过设备录像方式实时监控运维人员对操作系统、安全设备、网络设备、数据库等进行的各种操作,对违规行为进行事中控制。对终端指令信息能够进行精确搜索,进行录像精确定位。

2016-09-30 · 1 min · 31 words · -

Linux 服务器性能 命令

Linux 服务器性能 命令 https://www.oschina.net/news/77545/check-linux-server-performance-in-one-minutes 通过执行以下命令,可以在1分钟内对系统资源使用情况有个大致的了解。 uptime dmesg | tail vmstat 1 mpstat -P ALL 1 pidstat 1 iostat -xz 1 free -m sar -n DEV 1 sar -n TCP,ETCP 1 top 其中一些命令需要安装sysstat包,有一些由procps包提供。这些命令的输出,有助于快速定位性能瓶颈,检查出所有资源 (CPU、内存、磁盘IO等) 的利用率 (utilization) 、饱和度 (saturation) 和错误 (error) 度量,也就是所谓的USE方法。 下面我们来逐一介绍下这些命令,有关这些命令更多的参数和说明,请参照命令的手册。 uptime ? $ uptime 23:51:26 up 21:31, 1 user, load average: 30.02, 26.43, 19.02 这个命令可以快速查看机器的负载情况。在Linux系统中,这些数据表示等待CPU资源的进程和阻塞在不可中断IO进程 (进程状态为D) 的数量。这些数据可以让我们对系统资源使用有一个宏观的了解。 命令的输出分别表示1分钟、5分钟、15分钟的平均负载情况。通过这三个数据,可以了解服务器负载是在趋于紧张还是趋于缓解。如果1分钟平均负载很高,而15分钟平均负载很低,说明服务器正在命令高负载情况,需要进一步排查CPU资源都消耗在了哪里。反之,如果15分钟平均负载很高,1分钟平均负载较低,则有可能是CPU资源紧张时刻已经过去。 上面例子中的输出,可以看见最近1分钟的平均负载非常高,且远高于最近15分钟负载,因此我们需要继续排查当前系统中有什么进程消耗了大量的资源。可以通过下文将会介绍的vmstat、mpstat等命令进一步排查。 dmesg丨tail ? $ dmesg | tail [1880957.563150] perl invoked oom-killer: gfp_mask=0x280da, order=0, oom_score_adj=0 [1880957.563400] Out of memory: Kill process 18694 (perl) score 246 or sacrifice child ...

2016-09-28 · 5 min · 1048 words · -

线程通信

线程通信 http://wiki.jikexueyuan.com/project/java-concurrent/thread-communication.html 线程通信的目标是使线程间能够互相发送信号。另一方面,线程通信使线程能够等待其他线程的信号。 通过共享对象通信 忙等待 wait(),notify()和 notifyAll() 丢失的信号 假唤醒 多线程等待相同信号 不要对常量字符串或全局对象调用 wait() 通过共享对象通信 线程间发送信号的一个简单方式是在共享对象的变量里设置信号值。线程 A 在一个同步块里设置 boolean 型成员变量 hasDataToProcess 为 true,线程 B 也在同步块里读取 hasDataToProcess 这个成员变量。这个简单的例子使用了一个持有信号的对象,并提供了 set 和 check 方法: public class MySignal{ protected boolean hasDataToProcess = false; public synchronized boolean hasDataToProcess(){ return this.hasDataToProcess; } public synchronized void setHasDataToProcess(boolean hasData){ this.hasDataToProcess = hasData; } } 线程 A 和 B 必须获得指向一个 MySignal 共享实例的引用,以便进行通信。如果它们持有的引用指向不同的 MySingal 实例,那么彼此将不能检测到对方的信号。需要处理的数据可以存放在一个共享缓存区里,它和 MySignal 实例是分开存放的。 忙等待(Busy Wait) 准备处理数据的线程 B 正在等待数据变为可用。换句话说,它在等待线程 A 的一个信号,这个信号使 hasDataToProcess()返回 true。线程 B 运行在一个循环里,以等待这个信号: ...

2016-09-23 · 3 min · 504 words · -

PreparedStatementCache

PreparedStatementCache http://www.cnblogs.com/alipayhutu/archive/2013/04/18/3029171.html 如何理解PreparedStatementCache,以及如何使用 为节约键盘敲击次数,记PreparedStatement为PS, PreparedStatementCache为PSCache,并且所有的SQL使用的绑定变量。 原理: http://www.dbafree.net/?p=287 http://agapple.iteye.com/blog/838286 http://singleant.iteye.com/blog/1298837 使用: 使用ps. sql里用?占位,等待被替换。例如,select * from table1 where user_name = ? and age > ? 启用pscache。 …. …. 解析后的PS缓存,与重复利用。 sql语句,被发送到DB server端,经一系列处理 (语法解析、语义解析、结构优化) ,转化为一个树型结构 (sql, string -> tree) 。 3.1 sql解析后 (string -> tree) ,如何将ps放到pscache里? 首先,澄清个概念。执行树这个不是在应用客户端的,是在oracle服务器那边,server中也有pscache. 再者是说,只要客户端开启了PSCache,那么CS端都会缓存住这些个树 (尽管C端维护的结构可能简单一点) 。 底层会缓存 (LRU替换) ,用户不用关心。 3.2 假如pscache中,有一棵树是select * from table1 where user_name = ? and age > ? ,现在并发来了50个线程,都要用这棵树,如何复用? ...

2016-09-22 · 1 min · 72 words · -

druid

druid maxWait 默认值是无限大,当连接池中连接已经用完了,等待建立一个新连接的最大毫秒数 ( 在抛异常之前 ) 获取连接时最大等待时间,单位毫秒。配置了maxWait之后,缺省启用公平锁,并发效率会有所下降,如果需要可以通过配置useUnfairLock属性为true使用非公平锁。 poolPreparedStatements 是否缓存preparedStatement,也就是PSCache。PSCache对支持游标的数据库性能提升巨大,比如说oracle。 在MySQL5.5以下的版本中没有PSCache功能,建议关闭掉。5.5及以上版本有PSCache,建议开启。 maxOpenPreparedStatements 要启用PSCache,必须配置大于0,当大于0时,poolPreparedStatements自动触发修改为true。 在Druid中,不会存在Oracle下PSCache占用内存过多的问题,可以把这个数值配置大一些,比如说100 maxOpenPreparedStatements statement cache的大小,默认为-1,也就是不限制 http://www.oschina.net/question/563890_2151605 https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8

2016-09-22 · 1 min · 18 words · -

MP4

MP4 MP4(MPEG-4 Part 14)是一种常见的多媒体容器格式,它是在"ISO/IEC 14496-14"标准文件中定义的,属于MPEG-4的一部分,是"ISO/IEC 14496-12(MPEG-4 Part 12 ISO base media file format)“标准中所定义的媒体格式的一种实现,后者定义了一种通用的媒体文件结构标准。MP4是一种描述较为全面的容器格式,被认为可以在其中嵌入任何形式的数据,各种编码的视频、音频等都不在话下,不过我们常见的大部分的MP4文件存放的AVC(H.264)或MPEG-4(Part 2)编码的视频和AAC编码的音频。MP4格式的官方文件后缀名是”.mp4",还有其他的以mp4为基础进行的扩展或者是缩水版本的格式,包括: M4V, 3GP, F4V等。 mp4是由一个个"box"组成的,大box中存放小box,一级嵌套一级来存放媒体信息。 http://www.cnblogs.com/haibindev/archive/2011/10/17/2214518.html

2016-09-11 · 1 min · 19 words · -

JAX-RS

JAX-RS JAX-RS - Java API for RESTful Web Services Java EE 6 引入了对 JSR-311 的支持。JSR-311 (JAX-RS: Java API for RESTful Web Services) 旨在定义一个统一的规范,使得 Java 程序员可以使用一套固定的接口来开发 REST 应用,避免了依赖于第三方框架。同时,JAX-RS 使用 POJO 编程模型和基于标注的配置,并集成了 JAXB,从而可以有效缩短 REST 应用的开发周期。 JAX-RS 定义的 API 位于 javax.ws.rs 包中,其中一些主要的接口、标注和抽象类 https://www.ibm.com/developerworks/cn/java/j-lo-jaxrs/

2016-09-07 · 1 min · 40 words · -

mt4 nj4xx, ask bid sl tp …

mt4 nj4xx, ask bid sl tp … ASK/OFFER: 卖出价 BID: 买入价 美元兑日元 买入/卖出(BID/ASK) 109.30/109.60 美元兑日元买入,卖出价分别为 109.30/109.60 在国际市场上,买入价与卖出价表示的含义是指银行准备从对手 (通常指客户) 那里的买入 (BID) 价、卖出 (ASK/OFFER) 价,买入价 (BID) 在左,卖出价 (ASK/OFFER) 价在右。 对于买入价与卖出价实际应用中的说明: 银行所标示的买入价均是对基础货币而言的买入价格,银行所标示的卖出价均是对基础货币而言的卖出价格。 例如: 工商银行的美元兑日元买入、卖出价分别为109.30/109.60;即表明工商银行从客户处买入美元卖出日元使用的牌价为109.30,则客户卖出美元买入日元就要使用109.30的牌价,反之亦然。 银行的卖出价均要高于银行的买入价,也就是客户在与银行进行交易的时候,客户的买入价高于客户的卖出价;原因有二: (1) 客户不论何时均可与银行进行交易,银行要无条件的买入或卖出,这样就要求银行必须要用这样的价差来保证自己的利益。 (2) 对于投资者而言,只有市场发生变化时,才有可能获利,如果市场没有任何变动,投资者在汇率静止的情况下,进行一买一卖是要赔钱的。而投资者的投资的目的是为了获利,获利的要素就是要求我们看准汇率走势方向,待汇市变化的时候,才有获利的可能,汇市汇率静止,客户将不可能获利。 外汇交易当中的买价和卖价是相对银行或者外汇交易商而言的,如果投资者想要买入就只能以高价买入,对应的也就是银行的卖家;投资者想要卖出就只能以低价卖给交易商或者银行,对应的也就是银行或者交易商的买价。这个中间的差价也就是给你提供买价和卖价的经纪商的收入。 (主要看买卖面向的双方是谁) MetaTrader平台中的柱状线 (bar) 是如何形成的: High (bar的最顶端) 是指特定时间段内出现的最高Bid价格 。 Low (bar的最底端) 是指特定时间段内出现的最低Bid价格 。 最低的Ask价格等于Low加点差,最高Ask价格等于High加点差。 挂单: Stop Loss和Take Profit买入订单,当市场的 Bid价格达到订单水平时开始执行。 Stop Loss和Take Profit卖出订单,当市场的 Ask价格达到订单水平时开始执行。 Buy Limit和Buy Stop挂单,当市场的 Ask价格达到订单水平时开始执行。 Sell Limit和Sell Stop挂单,当市场的 Bid价格达到订单水平时开始执行。 例如: 您在1.2250的位置开设了卖出EURUSD货币对的订单,并设置Stop Loss位置1.2340,Take Profit位置1.2190。EURUSD的点差为2点。 根据上述情况,Stop Loss卖出订单在市场的Ask价格达到订单水平时开始执行。这意味着当市场的Ask价格达到1.2340或更高时,订单开始执行。由于MT4图表显示的是Bid价格,因此当High达到1.2338 (1.2340-2点点差) 或更高时,订单开始执行。 ...

2016-09-03 · 1 min · 86 words · -

MySQL中日期函数和日期的加减运算

MySQL中日期函数和日期的加减运算 字符串转为日期格式 SELECT DATE('2017-02-11') SELECT DATE('2017/02/11') SELECT STR_TO_DATE('2015/02/25','%Y/%m/%d') SELECT STR_TO_DATE('2015-02-25','%Y-%m-%d') select count(*)/60 from xxx where st>=now() - INTERVAL 2 minute and st<=now() - INTERVAL 1 minute date_sub() 为日期减去一个时间间隔 select DATE_SUB(NOW(),INTERVAL 10 SECOND) SELECT DATE_SUB("1998-01-01 00:00:00",INTERVAL "1 1:1:1" DAY_SECOND); MySQL日期运算,日期函数 DAYOFWEEK(date) 返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。 MySQL> select DAYOFWEEK(‘1998-02-03’); -> 3 WEEKDAY(date) 返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。 MySQL> select WEEKDAY(‘1997-10-04 22:23:00’); -> 5 MySQL> select WEEKDAY(‘1997-11-05’); -> 2 DAYOFMONTH(date) 返回date的月份中日期,在1到31范围内。 MySQL> select DAYOFMONTH(‘1998-02-03’); -> 3 DAYOFYEAR(date) 返回date在一年中的日数, 在1到366范围内。 MySQL> select DAYOFYEAR(‘1998-02-03’); ...

2016-08-13 · 3 min · 636 words · -

golang manul

golang manul git clone -branch pkg-archlinux git://github.com/kovetskiy/manul /tmp/manul cd /tmp/manul makepkg pacman -U *.xz

2016-07-25 · 1 min · 14 words · -

ipset

ipset # install ipset pacman -S ipset apt-get install ipset # 查看集合 ipset list ipset create vlist hash:net ipset add myset 14.144.0.0/12 ipset -A vlist 172.217.24.14 ipset del yoda x.x.x.x # 从 yoda 集合中删除内容 ipset list yoda # 查看 yoda 集合内容 ipset list # 查看所有集合的内容 ipset flush yoda # 清空 yoda 集合 ipset flush # 清空所有集合 ipset destroy yoda # 销毁 yoda 集合 ipset destroy # 销毁所有集合 ipset save > /etc/ipset.up.rules # 输出所有集合内容到标准输出 ipset restore -! < /etc/ipset.up.rules # 根据输入内容恢复集合内容 启动时创建ipset vim /etc/systemd/system/ipset-persistent.service [Unit] Description=ipset persistancy service DefaultDependencies=no Requires=netfilter-persistent.service Requires=ufw.service Before=network.target Before=netfilter-persistent.service Before=ufw.service ConditionFileNotEmpty=/etc/ipsets.conf [Service] Type=oneshot RemainAfterExit=yes ExecStart=/sbin/ipset restore -f -! /etc/ipsets.conf # save on service stop, system shutdown etc. ExecStop=/sbin/ipset save blacklist -f /etc/ipsets.conf [Install] WantedBy=multi-user.target RequiredBy=netfilter-persistent.service RequiredBy=ufw.service https://confluence.jaytaala.com/pages/viewpage.action?pageId=11763750#UsingipsettoblockIPaddresses-firewall-Settingipsettobepersistent(notloselistsonreboot) ...

2016-07-23 · 4 min · 719 words · -

DNS劫持 DNS污染

DNS劫持 DNS污染 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之类网站等出现的状况。

2016-07-23 · 1 min · 32 words · -

golang strconv

golang strconv 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. type NumError struct { Func string // the failing function (ParseBool, ParseInt, ParseUint, ParseFloat) Num string // the input Err error // the reason the conversion failed (ErrRange, ErrSyntax) ...

2016-07-19 · 4 min · 685 words · -

Debian安装FTP服务器,使用vsftpd简单实现

Debian安装FTP服务器,使用vsftpd简单实现 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更改密码 passwd user 输入两次后就改好了! 重启vsftpd服务,让配置生效 invoke-rc.d vsftpd restart 为了让设定的/var/www可读写,我们还要设定下目录权限 chmod -R 777 /var/www/ 大功告成,这时候可以使用类似flashFXP这种FTP客户端登陆测试看看!

2016-07-17 · 1 min · 55 words · -

私有地址

私有地址 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

2016-07-12 · 1 min · 20 words · -

maven 依赖 继承

maven 依赖 继承 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中央仓库。 二: 依赖的传递 A->B(compile) 第一关系: a依赖b compile B->C(compile) 第二关系: b依赖c compile 当在A中配置 com.B B 1.0 ...

2016-07-05 · 1 min · 107 words · -

linux mount, invalid argument, no such device

linux mount, invalid argument, no such device http://blog.sina.com.cn/s/blog_b71132f0010148kk.html

2016-07-02 · 1 min · 8 words · -

golang io

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

2016-07-01 · 1 min · 3 words · -