Month: December 2015

Wiki markup help

Wiki markup help =Heading1= ==Heading2== ===Heading3=== *bold*     _italic_ `inline code` escape: `*` Indent lists 2 spaces:   * bullet item   # numbered list {{{ verbatim code block }}} Horizontal rule —-  WikiWordLink [http://domain/page label] http://domain/page || table || cells || More examples 

Read More »

Linux下利用nc命令来监控检测服务器的端口使用情况

前端用apache htttpd进行发布(80端口),通过双机负载均衡转发到后端的两个tomcat进行处理(8081和8082端口),现在需要随时监控这三个端口的情况,一旦down掉需要能够立即告警处理。批量的系统监控比较好的是用nagios软件来实现,这样小项目专门装一个nagios软件,有点繁琐了。在网上查了一些资料,总结实验了一下,可以用简单的nc命令来实现。 一、nc命令检测端口的用法 # nc  -v  -w 10 %IP%   -z  %PORT% -v  显示指令执行过程。 -w  <超时秒数>   设置等待连线的时间。 -u  表示使用UDP协议 -z  使用0输入/输出模式,只在扫描通信端口时使用。 例1:扫描指定的8080端口 # nc -v -w 10 -z 192.168.0.100 8080 Connection to 192.168.0.100 8080 port [tcp/http] succeeded! 例2:扫描20到25的端口范围,并详细输出。 # nc -v -w 2 -z 192.168.0.100 20-25 nc: connect to 192.168.0.100 port 20 (tcp) failed: Connection refused nc: connect to 192.168.0.100 port 21 (tcp) failed: Connection refused Connection to 192.168.0.100 22 port [tcp/ssh] succeeded! nc: connect to 192.168.0.100 port 23 (tcp) failed: Connection refused…

Read More »

linux awk 内置函数详细介绍(实例)

这节详细介绍awk内置函数,主要分以下3种类似:算数函数、字符串函数、其它一般函数、时间函数 一、算术函数: 以下算术函数执行与 C 语言中名称相同的子例程相同的操作: 函数名 说明 atan2( y, x ) 返回 y/x 的反正切。 cos( x ) 返回 x 的余弦;x 是弧度。 sin( x ) 返回 x 的正弦;x 是弧度。 exp( x ) 返回 x 幂函数。 log( x ) 返回 x 的自然对数。 sqrt( x ) 返回 x 平方根。 int( x ) 返回 x 的截断至整数的值。 rand( ) 返回任意数字 n,其中 0 <= n < 1。 srand( [Expr] ) 将 rand 函数的种子值设置为 Expr 参数的值,或如果省略 Expr 参数则使用某天的时间。返回先前的种子值。   举例说明: [chengmo@centos5 ~]$ awk ‘BEGIN{OFMT=”%.3f”;fs=sin(1);fe=exp(10);fl=log(10);fi=int(3.1415);print fs,fe,fl,fi;}’ 0.841 22026.466…

Read More »

maven 如何为开发和生产环境建立不同的配置文件

src/main目录下原来有 java, resources, 新建环境相关的配置文件目录: resources : 一些共享的配置文件 environment/dev : 开发环境下用的配置文件, 打包时会覆盖resources目录下的同名文件. environment/test : 测试环境下用的配置文件, 打包时会覆盖resources目录下的同名文件. environment/prod : 生产环境下用的配置文件, 打包时会覆盖resources目录下的同名文件. 本机开发时设置源码目录为 java, resources, 可直接开发调试. 编译的时候希望maven根据不同环境, 打包不同目录下的文件, 我们利用maven的profile和maven-resources-plugin插件来实现这个目标. 运行 mvn clean package -P test 打包. pom.xml相关配置如下: <!– == 配置开发/测试/生产环境 == –> <properties> <package.target>prod</package.target> </properties> <profiles> <profile> <id>dev</id> <properties> <package.target>dev</package.target> </properties> </profile> <profile> <id>test</id> <properties> <package.target>test</package.target> </properties> </profile> <profile> <id>prod</id> <properties> <package.target>prod</package.target> </properties> </profile> </profiles> <!– == 使用maven-resources-plugin拷贝不同环境下的资源 == –> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.1</version> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> </configuration> </plugin> <plugin> <artifactId>maven-resources-plugin</artifactId>…

Read More »

jquery表单验证validate插件全攻略

一、准备工作 需要JQuery版本:1.2.6+, 兼容 1.3.2 <script src=”jquery.js” type=”text/javascript”></script> <script src=”jquery.validate.js” type=”text/javascript”></script> 二、默认校验规则 (1)required:true               必输字段 (2)remote:”check.php”          使用ajax方法调用check.php验证输入值 (3)email:true                  必须输入正确格式的电子邮件 (4)url:true                    必须输入正确格式的网址 (5)date:true                   必须输入正确格式的日期 (6)dateISO:true                必须输入正确格式的日期(ISO),例如:2009-06-23,1998/01/22 只验证格式,不验证有效性 (7)number:true                 必须输入合法的数字(负数,小数) (8)digits:true                 必须输入整数 (9)creditcard:                 必须输入合法的信用卡号 (10)equalTo:”#field”           输入值必须和#field相同 (11)accept:                    输入拥有合法后缀名的字符串(上传文件的后缀) (12)maxlength:5                输入长度最多是5的字符串(汉字算一个字符) (13)minlength:10               输入长度最小是10的字符串(汉字算一个字符) (14)rangelength:[5,10]         输入长度必须介于 5 和 10 之间的字符串”)(汉字算一个字符) (15)range:[5,10]               输入值必须介于 5 和 10 之间 (16)max:5                      输入值不能大于5 (17)min:10                     输入值不能小于10 三、默认的提示 messages: { required: “This field is required.”, remote: “Please fix this field.”, email: “Please enter a valid email address.”, url: “Please enter a valid URL.”,…

Read More »

web.xml 中的listener、 filter、servlet 加载顺序极其详解

在项目中总会遇到一些关于加载的优先级问题,近期也同样遇到过类似的,所以自己查找资料总结了下,下面有些是转载其他人的,毕竟人家写的不错,自己也就不重复造轮子了,只是略加点了自己的修饰。         首先可以肯定的是,加载顺序与它们在 web.xml 文件中的先后顺序无关。即不会因为 filter 写在 listener 的前面而会先加载 filter。最终得出的结论是:listener -> filter -> servlet         同时还存在着这样一种配置节:context-param,它用于向 ServletContext 提供键值对,即应用程序上下文信息。我们的 listener, filter 等在初始化时会用到这些上下文中的信息,那么 context-param 配置节是不是应该写在 listener 配置节前呢?实际上 context-param 配置节可写在任意位置,因此真正的加载顺序为:context-param -> listener -> filter -> servlet         对于某类配置节而言,与它们出现的顺序是有关的。以 filter 为例,web.xml 中当然可以定义多个 filter,与 filter 相关的一个配置节是 filter-mapping,这里一定要注意,对于拥有相同 filter-name 的 filter 和 filter-mapping 配置节而言,filter-mapping 必须出现在 filter 之后,否则当解析到 filter-mapping 时,它所对应的 filter-name 还未定义。web 容器启动时初始化每个 filter 时,是按照 filter 配置节出现的顺序来初始化的,当请求资源匹配多个 filter-mapping 时,filter 拦截资源是按照 filter-mapping 配置节出现的顺序来依次调用 doFilter() 方法的。         servlet 同 filter 类似 ,此处不再赘述。        由此,可以看出,web.xml 的加载顺序是:context-param -> listener -> filter…

Read More »

MySQL transaction-isolation参数的设置

1.在my.cnf中的【mysqld】部分添加: [mysqld] transaction-isolation = read-committed 2.重启mysql数据库 mysql> show variables like ‘tx%’; +—————+—————-+ | Variable_name | Value          | +—————+—————-+ | tx_isolation  | READ-COMMITTED | +—————+—————-+ 摘自『https://anmh.wordpress.com/2010/06/30/mysql%EF%BC%9Atransaction-isolation%E5%8F%82%E6%95%B0%E7%9A%84%E8%AE%BE%E7%BD%AE/』

Read More »

ASCII码对照表

ASCII控制字符 二进制 十进制 十六进制 缩写 可以显示的表示法 名称/意义 0000 0000 0 00 NUL ␀ 空字符(Null) 0000 0001 1 01 SOH ␁ 标题开始 0000 0010 2 02 STX ␂ 本文开始 0000 0011 3 03 ETX ␃ 本文结束 0000 0100 4 04 EOT ␄ 传输结束 0000 0101 5 05 ENQ ␅ 请求 0000 0110 6 06 ACK ␆ 确认回应 0000 0111 7 07 BEL ␇ 响铃 0000 1000 8 08 BS ␈ 退格 0000 1001 9 09 HT ␉ 水平定位符号 0000 1010 10 0A LF ␊ 换行键 0000 1011 11 0B VT ␋ 垂直定位符号 0000 1100…

Read More »

grep命令的or,and,not操作示例

在Linux的grep命令中如何使用OR,AND,NOT操作符呢? 其实,在grep命令中,有OR和NOT操作符的等价选项,但是并没有grep AND这种操作符。不过呢,可以使用patterns来模拟AND操作的。下面会举一些例子来说明在Linux的grep命令中如何使用OR,AND,NOT。 在下面的例子中,会用到这个employee.txt文件,如下: [plain] view plaincopy $ cat employee.txt 100  Thomas  Manager    Sales       $5,000 200  Jason   Developer  Technology  $5,500 300  Raj     Sysadmin   Technology  $7,000 400  Nisha   Manager    Marketing   $9,500 500  Randy   Manager    Sales       $6,000 (一)Grep OR 操作符 以下四种方法均能实现grep OR的操作。个人推荐方法3. 1.使用 \| 如果不使用grep命令的任何选项,可以通过使用 ‘\|’ 来分割多个pattern,以此实现OR的操作。 [plain] view plaincopy grep ‘pattern1\|pattern2’ filename 例子如下: [plain] view plaincopy $ grep ‘Tech\|Sales’ employee.txt 100  Thomas  Manager    Sales       $5,000 200  Jason   Developer  Technology  $5,500 300  Raj     Sysadmin   Technology  $7,000 500  Randy   Manager    Sales       $6,000 2.使用选项 -E grep -E 选项可以用来扩展选项为正则表达式。 如果使用了grep 命令的选项-E,则应该使用 | 来分割多个pattern,以此实现OR操作。 [plain] view plaincopy <span style=”font-family:’Microsoft YaHei’;font-size:16px;”>grep -E ‘pattern1|pattern2’ filename</span> 例子如下: [plain] view plaincopy $ grep -E ‘Tech|Sales’ employee.txt 100  Thomas  Manager    Sales       $5,000 200  Jason   Developer  Technology  $5,500 300  Raj     Sysadmin   Technology  $7,000 500  Randy   Manager    Sales       $6,000 3. 使用 egrep egrep 命令等同于‘grep -E’。因此,使用egrep (不带任何选项)命令,以此根据分割的多个Pattern来实现OR操作. [plain] view plaincopy egrep ‘pattern1|pattern2’ filename 例子如下: [plain] view plaincopy $ egrep ‘Tech|Sales’ employee.txt 100  Thomas  Manager    Sales       $5,000 200  Jason   Developer  Technology  $5,500 300  Raj     Sysadmin   Technology  $7,000 500  Randy   Manager    Sales       $6,000 4. 使用选项…

Read More »

MySQL 事务以及加锁机制

事务的特征ACID,即原子性、一致性、隔离性、持久性。 原子性保证一个事务为一个最小的单元,内部不可分割; 一致性保证事务中的每个操作线程不可单独提交,成功则一起提交,不成功则事务回滚; 隔离性保证不同事务间看到的数据视图相互独立,相互隔离(隔离级别可设置); 持久性保证事务提交后数据会持久的保存下来; sql规范定义的事务的隔离级别: 1.READ UNCOMMITTED(读取未提交内容)     所有事务可以看到未提交事务的执行结果,本隔离级别很少用到实际应用中,读取未提交的数据,又称为“脏读”。 2.READ COMMITTED(读取提交内容)     大多数数据库的默认隔离级别是此级别,但不是mysql默认的。一个事务在开始的时候只能看见已提交事务所做的改变。一个事务从开始到提交前所做的任何改变都是不可见的,除非提交。这种隔离级别也称为不可重复读。 3.REPEATABLE READ(可重复读)     此隔离级别是为了解决可重复读隔离级别导致的问题即一个事务多个实例并发读取数据时会看到不同的结果。此隔离级别不会看到其他事务提交后的结果,即事务即使提交了我也看不到。此级别也称为“幻读”。 4.SERIALIZABLE(可串行化)     可串行化是最高的隔离级别,它通过强制事务排序,使之不可重读,解决了幻读的问题。此隔离级别会在每个读的数据行上加共享锁,使用这种隔离级别会产生大量的超时现象,一般实际开发中不会用到。 mysql加锁机制 : 根据类型可分为共享锁(SHARED LOCK)和排他锁(EXCLUSIVE LOCK)或者叫读锁(READ LOCK)和写锁(WRITE LOCK)。 根据粒度划分又分表锁和行锁。表锁由数据库服务器实现,行锁由存储引擎实现。 mysql提供了3种事务型存储引擎,InnDB、NDB Cluster和Falcon。 一个事务执行的任何过程中都可以获得锁,但是只有事务提交或回滚的时候才释放这些锁。这些都是隐式锁定,也可以显式锁定,InnoDB支持显式锁定,例如: SELECT …. LOCK IN SHARE MODE (加共享锁) SELECT …..FOR UPDATE(加排他锁) 多版本并发控制(重要): Mysql的事务存储引擎不是简单实用行加锁机制,而是叫多版本并发控制(MVCC)技术,和行加锁机制关联实用。以便应对更高的并发,当然是以消耗性能作为代价。 每种存储引擎对MVCC的实现方式不同,InnoDB引擎的简单实现方式如下: InnoDB通过为每个数据航增加两个隐含值的方式来实现。这两个隐含值记录了行的创建时间,以及过期时间。每一行存储事件发生时的系统版本号。每一次开始一个新事务时版本号会自动加1,每个事务都会保存开始时的版本号,每个查询根据事务的版本号来查询结果。 摘自『http://www.php1.cn/Content/Mysql_ShiWuYiJiJiaSuoJiZhi.html』

Read More »