魏长东

weichangdong

正在查看: linux 分类下的文章(第 4 页 / 共 76 篇)

perl的sort函数

perl的sort函数

一) sort函数

sort LIST
sort BLOCK LIST
sort SUBNAME LIST

sort的用法有如上3种形式。它对LIST进行排序,并返回排序后的列表。假如忽略了SUBNAME或BLOCK,sort按标准字串比较顺序来进行(例如ASCII顺序)。如果指定了SUBNAME,它实际上是个子函数的名字,该子函数对比2个列表元素,并返回一个小于,等于,或大于0的整数,这依赖于元素以何种顺序来sort(升序,恒等,或降序)。也可提供一个BLOCK作为匿名子函数来代替SUBNAME,效果是一样的。

被比较的2个元素,会被临时赋值给变量$a和$b。它们以引用传递,所以不要修改$a或$b。假如使用子函数,它不能是递归函数。

 

(二) 用法示例

1. 以数字顺序sort

@array = (8, 2, 32, 1, 4, 16);
print join(' ', sort { $a <=>; $b } @array), "\n";

打印结果是:
1 2 4 8 16 32

与之一样的是:

sub numerically { $a <=>; $b };
print join(' ', sort numerically @array), "\n";

这个很容易理解哦,它只是按自然数的顺序进行sort,偶就不细讲了。

2.1 以ASCII顺序(非字典顺序)进行sort

@languages = qw(fortran lisp c c++ Perl python java);
print join(' ', sort @languages), "\n";

打印结果:
Perl c c++ fortran java lisp python

这等同于:
print join(' ', sort { $a cmp $b } @languages), "\n";

按ASCII的顺序进行排序,也没什么说的哦。

»»阅读全文

nginx保存post数据到access日志

user  www www;
worker_processes  4;
worker_cpu_affinity 01 10 01 10;
worker_rlimit_nofile 51200;

error_log  /data/logs/nginx/error.log error;
#error_log  /var/log/nginx/error.log  notice;
#error_log  /var/log/nginx/error.log  info;

pid        /var/run/nginx.pid;

events {
    use epoll;
    worker_connections  51200;
}


http {
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;
    charset utf-8;

    log_format  main  '$remote_addr "$http_host" $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    log_format  testlog  '$http_x_forwarded_for - $remote_user [$time_local] '
                          '"$request" $status $body_bytes_sent '
                          '"$http_referer" "$http_user_agent" $request_length $request_time';

    log_format  postlog  '$http_x_forwarded_for $remote_addr "$http_host" [$time_local] '
                          '"$request" $status $body_bytes_sent '
                          '"$http_referer" "$http_user_agent" $request_length $request_time "$request_body"';

    #access_log  /var/log/nginx/access.log  main;
    access_log  /data/logs/nginx/access.log main;

    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_body_buffer_size 1m;
    client_max_body_size 4m;

    sendfile on;
    tcp_nopush     on;
    keepalive_timeout 60;
    tcp_nodelay on;

    #gzip  on;
    include /etc/nginx/conf.d/*.conf;
}

linux查看并发

netstat -n | awk '/^tcp/ {++S[$NF]} END {for(a in S) print a, S[a]}'
TIME_WAIT 60903
CLOSE_WAIT 116
FIN_WAIT1 4564
FIN_WAIT2 429
ESTABLISHED 2394
SYN_RECV 510
CLOSING 53
LAST_ACK 885

其实这么个结果,我也不确定并发多少。我的理解是 把这些数加起来。

nginx常见问题处理

nginx配置中各个作用域
nginx.conf主要且常用的四个作用域http,server,location,if。
……
http {
…..
include       mime.types; 
client_max_body_size 25600k;
client_body_buffer_size 25600k;
fastcgi_buffer_size 25600k;
fastcgi_buffers 4 25600k;
fastcgi_busy_buffers_size 51200k;
fastcgi_temp_file_write_size 51200k;
 
#后端负载均衡配置
#include upstream.conf
upstreamserver_xxx_backends { 
server 10.26.101.142:8080 max_fails=2 fail_timeout=1s;
server 10.26.101.143:8080 max_fails=2 fail_timeout=10s;
…...
}
 
#pc虚拟机配置
#include conf/vhost/xxx.yyy.com
server {
listen 8080;
server_name  xxx.yyy.com;
 
if ($request_uri ~ "xxx") {
rewrite "xxx" "yyy" break;
}
 
location ~ "^/taskui/" {
proxy_passhttp://server_xxx_backends;
 
}
location ~ "^/static/" {
root '/root/nginx/webroot';
indexindex.php
}
location ~ / {
access_log  logs/access_log;
fastcgi_pass 127.0.0.1:6666
 
if ($request_uri ~ "xxx") {
rewrite "xxx" "yyy" break;
}
}
…..
}
 
#wap虚拟机配置
#include conf/vhost/xxxwap.yyy.com
server {
listen 8080;
server_namexxxwap.yyy.com;
…..
}
…...
}

»»阅读全文

redis-cli的一些有趣也很有用的功能

redis-cli我们最常用的两个参数就是-h、-p、-a选项,分配用来指定连接的redis-server的host和port。

通过redis-cli –help发现,redis-cli还提供了其他很多的参数和功能。

-x-x选项从标准输入(stdin)读取最后一个参数。 比如从管道中读取输入:

»»阅读全文

Predis

之前一致以为,php使用reids,就一定需要安装php的redis扩展,就是通过php -m|grep redis可以看到,但是原来不用安装,使用predis也可以的。

Predis 适用于 PHP 5.3 以上版本在 Redis 使用,其中包括了集群的使用。

主要功能

支持各个版本的 Redis (从 2.0 到 3.0 以及 unstable)
使用哈希方式或用户自定义方式进行集群中节点的客户端分片
支持 Redis-cluster(集群) (Redis >= 3.0).
支持主/从结构的读写分离
支持已知的所有 Redis 客户端命令
使用方式

»»阅读全文

gitlab 'origin master' does not appear

git 无论git pull 还是git push老是出现这个错误。

fatal: 'origin master' does not appear to be a git repository fatal: Could not read from remote repository. 
 
按照这么搞,就ok了。

git branch --set-upstream-to=origin/master master

git push origin master

git pull origin master

Linux下Rsync+sersync实现数据实时同步

前言:

一、为什么要用Rsync+sersync架构?

1、sersync是基于Inotify开发的,类似于Inotify-tools的工具

2、sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字,然后使用rsync同步的时候,只同步发生变化的这个文件或者这个目录。

二、Rsync+Inotify-tools与Rsync+sersync这两种架构有什么区别?

1、Rsync+Inotify-tools

(1):Inotify-tools只能记录下被监听的目录发生了变化(包括增加、删除、修改),并没有把具体是哪个文件或者哪个目录发生了变化记录下来;

(2):rsync在同步的时候,并不知道具体是哪个文件或者哪个目录发生了变化,每次都是对整个目录进行同步,当数据量很大时,整个目录同步非常耗时(rsync要对整个目录遍历查找对比文件),因此,效率很低。

2、Rsync+sersync

(1):sersync可以记录下被监听目录中发生变化的(包括增加、删除、修改)具体某一个文件或某一个目录的名字

(2):rsync在同步的时候,只同步发生变化的这个文件或者这个目录每次发生变化的数据相对整个同步目录数据来说是很小的,rsync在遍历查找比对文件时,速度很快),因此,效率很高。

小结:当同步的目录数据量不大时,建议使用Rsync+Inotify-tools;当数据量很大(几百G甚至1T以上)、文件很多时,建议使用Rsync+sersync

说明:

操作系统:CentOS 5.X

源服务器:192.168.21.129

目标服务器:192.168.21.127,192.168.21.128

目的:把源服务器上/home/www.test.com目录实时同步到目标服务器的/home/www.test.com下

»»阅读全文

Nginx常用日志分割方法

方式一:
nginx cronolog日志分割配置文档,根据下面方法,每分钟分割一次NGINX访问日志。

1.nginx日志配置
 access_log access_log /data/access_log_pipe main;
2.先创建一个命名管道
mkfifo /www/log/access_log_pipe
3.配置cronolog:
nohup cat /data/access_log_pipe | /usr/local/sbin/cronolog /data/log/domain.access_%Y%m%d%H%M.log &
4.启动Nginx
/usr/local/nginx/sbin/nginx

»»阅读全文

hadoop压缩格式

其中 打开方式 可用 

hadoop dfs -text output5/part-r-00000.deflate
hdfs dfs -text output5/part-r-00000.deflate
 
用 -text 可以查看数据
 

我们可以把数据文件压缩后再存入HDFS,以节省存储空间。但是,在使用MapReduce处理压缩文件时,必须考虑压缩文件的可分割性。目前,Hadoop支持以下几种压缩格式

 

压缩格式 UNIX工具 算       文件扩展名 支持多文件 可分割
DEFLATE DEFLATE .deflate No No
gzip gzip DEFLATE .gz No No
zip zip DEFLATE .zip YES YES
bzip bzip2 bzip2 .bz2 No YES
LZO lzop LZO .lzo No No

 

 
 
为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器,如下表所示
压缩格式 对应的编码/解码器
DEFLATE org.apache.hadoop.io.compress.DefaultCodec
gzip org.apache.hadoop.io.compress.GzipCodec
bzip org.apache.hadoop.io.compress.BZipCodec
Snappy org.apache.hadoop.io.compress.SnappyCodec