伯纳乌球场的格局,是和别处不同的:都是当中一个圆形的大球场,球场里面预备着禁区,可以随时跳水。做工的球迷,傍午傍晚散了工,每每花四欧元,买一张票,——这是二十多年前的事,现在每张要涨到十欧元,——靠球场里坐着,热热的看了跳水;倘肯多花一欧元,便可以买一身7号孝服,或者皇马围巾,做支持物了,如果出到十几欧元,那就能买一条CR7内裤,但这些球迷,多是后援会,大抵没有这样阔绰。只有穿CR7内裤的,才踱进球场顶层的包间里,要酒要烟,慢慢地看球。

我从十二岁起,便在曼联的老特拉福德球场当球童,爵爷说,我年纪太小,怕侍候不了CR7内裤主顾,就在马德里做点事罢。马德里的孝衣主顾,虽然容易说话,但抱怨八年无冠四大皆空的也很不少。他们往往要亲眼看着红牌从裁判口袋里掏出,看过禁区里有水没有,又亲看将对手无辜罚下判罚点球,然后放心:在这严重监督下,不作假也很为难。所以过了几天,老佛爷又说球童看不了这事。幸亏爵爷的情面大,辞退不得,便改为专管捡球的一种无聊职务了。

我从此便整天的站在球场外,专管我的职务。虽然没有什么失职,但总觉得有些单调,有些无聊。老佛爷是一副凶脸孔,球员也没有好声气,教人活泼不得;只有罗乙己上场,才可以笑几声,所以至今还记得。

罗乙己是体壮如牛而一碰就倒的唯一的人。他身材很高大;黝黑脸色,左眼旁时常夹些伤口;一头油腻腻的光滑的头发。穿的虽然是7号孝服,可是又脏又破,似乎十多年没有拿冠军,也没有金球。他对裁判说话,总是满口红点者也,叫人半懂不懂的。因为他姓罗,别人便从首发名单上的“屎上最佳罗乙己”这半懂不懂的话里,替他取下一个绰号,叫作罗乙己。罗乙己一上场,所有看球的人便都看着他笑,有的叫道,“罗乙己,你脸上又添上新伤口了!”他不回答,对裁判说,“跳两次水,判一个点球。”便跳出9.9分动作。他们又故意的高声嚷道,“你一定又骗了人家的点球了!”罗乙己睁大眼睛说,“你怎么这样凭空污人清白……”“什么清白?我前天亲眼见你骗了瓦伦的点球,被莱加内斯吊着打。”罗乙己便涨红了脸,额上的青筋条条绽出,争辩道,“跳水不能算骗……点球!……屎上最佳的点球,能算骗么?”接连便是难懂的话,什么“懂球帝MVP”,什么“梅西最差”之类,引得众人都哄笑起来:球场内外充满了快活的空气。

听人家背地里谈论,罗乙己原来也拿过欧冠,但终于没有进步,又不会过人;于是愈射愈飞,弄到将要被卖了。幸而跳得一手好水,便替皇马跳跳水,换一个点球踢。可惜他又有一样坏脾气,便是好决赛躺冠。踢不到几分钟,便连人和孝服球鞋CR7内裤,一齐失踪。如是几次,叫他跳水的人也没有了。罗乙己没有法,便免不了偶然拿些干爹送的金球。但他在我们队里,进球却比别人都多,就是从不靠个人能力;虽然间或没有进球,暂时记在射手榜上,但不出一月,定然进点球,从射手榜上写上了罗乙己的名字。

罗乙己进了两个点球,涨红的脸色渐渐复了原,队友便又问道,“罗乙己,你当真是屎上最佳么?”罗乙己看着问他的人,显出不屑置辩的神气。他们便接着说道,“你怎的连半个球王也捞不到呢?”罗乙己立刻显出颓唐不安模样,眼皮上停了一只蛾子,嘴里说些话;这回可是全是屎上最佳之类,一些不懂了。在这时候,众人也都哄笑起来:球场内外充满了快活的空气。

在这些时候,我可以附和着笑,老佛爷是决不责备的。而且老佛爷见了罗乙己,也每每这样问他,引人发笑。罗乙己自己知道不能和他们谈天,便只好向孩子炫耀。有一回对我说道,“你踢过球么?”我略略点一点头。他说,“踢过球,……我便考你一考。踢瓦伦的两个点球,怎样骗的?”我想,联赛半程4球的人,也配考我么?便回过脸去,不再理会。罗乙己等了许久,很恳切的说道,“不能说罢?……我教给你,记着!这些水花应该压住。将来做屎上最佳的时候,骗点球要用。”我暗想我和屎上最佳的等级还很远呢,而且我们佛爷也从不给屎上最佳涨薪,还想卖掉他;又好笑,又不耐烦,懒懒的答他道,“谁要你教,不是一碰就倒举手投诉干爹么?”罗乙己显出极高兴的样子,将两个脚指头染的黑指甲敲着点球点,点头说,“对呀对呀!……水花有四样压法,你知道么?”我愈不耐烦了,努着嘴走远。罗乙己刚用球鞋试了水,想在禁区里跳水,见我毫不热心,便又叹一口气,显出极惋惜的样子。

“射乎哉?不进也。”

有几回,瓦伦球员听得笑声,也赶热闹,围住了罗乙己。裁判便判他们一人一点球。瓦伦球员被判点球,仍然不散,眼睛都望着裁判。罗乙己着了慌,伸开五指将足球罩住,弯腰下去说道,“不高了,水花我已经压住了。”直起身又看一看射手榜,自己摇头说,“不进不进!射乎哉?不进也。”于是这一群瓦伦球员都在笑声里走散了。

罗乙己是这样的使人快活,可是没有他,别人也便这么过。

有一天,大约是国王杯淘汰赛前的两三天,佛爷正在慢慢的烧钱,取下射手榜,忽然说,“罗乙己长久没有进球了。联赛还落后十九个积分呢!”我才也觉得他的确长久没有进球了。一个穿孝服的人说道,“他怎么会进球?……他破了相了。”掌柜说,“哦!”“他总仍旧是跳。这一回,是自己发昏,竟跳到拉科的禁区里去了。拉科的点球,骗得的吗?”“后来怎么样?”“怎么样?先跳了出去,后来被鞋钉踹破了脸,进了个头球,再拿手机自拍。”“后来呢?”“后来破了相了。”“破相了怎样呢?”“怎样?……谁晓得?许是领懂球帝MVP去了。”佛爷也不再问,仍然慢慢的烧他的钱。

国王杯出局过后,赛程是一天累比一天,看看将近欧冠;我整天的靠着球场,也须穿上棉袄了。一场比赛的下半场,没有一个进球,我正合了眼坐着。忽然间听得一个声音,“判一个点球。”这声音虽然极低,却很耳熟。看时又全没有人。站起来向禁区一望,那罗乙己便在球门下对了门柱坐着。他脸上黑而且瘦,已经不成样子;穿一件破7号孝服,盘着两腿,下面垫一双溜冰鞋,用鞋带在肩上挂住;见了我,又说道,“判一个点球。”佛爷也伸出头去,一面说,“罗乙己么?皇马还落后十九个积分呢!”罗乙己很颓唐的仰面答道,“这……下赛季重来罢。这一回是真犯规,点球要给得果断。”佛爷仍然同平常一样,笑着对他说,“罗乙己,你又骗了点球了!”但他这回却不十分分辩,单说了一句“不要声张!”“声张?要是不跳,怎么会破了相?”罗乙己低声说道,“跌破,跌,跌……”他的眼色,很像恳求佛爷,不要再提。此时已经聚集了几个队友,便和佛爷都笑了。裁判掏了红牌,罚下对手,把球放在点球点上。他从7号孝服里摸出四瓶清扬,放在裁判手里,见他满手是草,原来他便用这手压水花的。不一会,他踢完点球,便又在队友的说笑声中,跳着空中旋转180度张开O型嘴自己庆祝去了。

自此以后,又长久没有看见罗乙己进球。到了欧冠,佛爷取下积分榜说,“皇马还落后十九个积分呢!”到二月初踢联赛,又说“皇马还落后十九个积分呢!”到踢巴黎可是没有说,再到年关也没有追上。

我到现在终于没有见——大约罗乙己的确破相了。

修改ssh配置

vi /etc/ssh/sshd_config

找到 #Port 22 取消该行的注释。改为想要使用的端口,如:Port 12306

重启服务

systemctl restart sshd

配置selinux

安装 semanage 工具

yum provides semanage
yum -y install policycoreutils-python

打开端口

semanage port -a -t ssh_port_t -p tcp 12306

查看当前 SELinux 允许的端口

semanage port -l | grep ssh

错误处理

当 SELINUX 配置为禁用状态时,使用 semanage 会报错提示无法读取 policy 文件:

SELinux:  Could not downgrade policy file /etc/selinux/targeted/policy/policy.30, searching for an older version.  
SELinux:  Could not open policy file <= /etc/selinux/targeted/policy/policy.30:  No such file or directory  
/sbin/load_policy:  Can't load policy:  No such file or directory
libsemanage.semanage_reload_policy: load_policy returned error code 2. (No such file or directory).  
FileNotFoundError: [Errno 2] No such file or directory 

启用 SELinux:

vi /etc/selinux/config

修改 SELINUX=permissive 以后重启服务器:

init 6

重启后查看 SELinux 状态:

sestatus

如果显示 disabled,执行:

load_policy -qi

检查配置:

semanage port -a -t ssh_port_t -p tcp 12306
semanage port -l | grep ssh

重启sshd服务:

systemctl restart sshd

说明

mariadb是mysql的一个开源分支。由原mysql的创始人Michael Widenius带领的团队主导着维护工作。相对于已被Oracle收购的mysql而言,mariadb不会有闭源和法律风险,同时又兼容现有那些旧的基于mysql开发的应用程序。业界巨头包括Google和阿里在内都先后迁移到了mariadb,因此适时了解学习它是非常有必要的。

安装依赖

yum install perl
yum install rsync
yum install lsof
yum install libaio
yum install galera
yum install perl-DBI

删除冲突库

rpm -qa | grep mariadb-libs
rpm -ev --nodeps mariadb-libs-5.5.56-2.el7.x86_64

下载rpm包

wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.10/yum/centos7-amd64/rpms/MariaDB-10.2.10-centos7-x86_64-server.rpm
wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.10/yum/centos7-amd64/rpms/MariaDB-10.2.10-centos7-x86_64-shared.rpm
wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.10/yum/centos7-amd64/rpms/MariaDB-10.2.10-centos7-x86_64-client.rpm
wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.10/yum/centos7-amd64/rpms/MariaDB-10.2.10-centos7-x86_64-common.rpm
wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.10/yum/centos7-amd64/rpms/MariaDB-10.2.10-centos7-x86_64-compat.rpm
wget http://mirrors.neusoft.edu.cn/mariadb//mariadb-10.2.10/yum/centos7-amd64/rpms/MariaDB-10.2.10-centos7-x86_64-devel.rpm

安装

rpm -ivh *.rpm

启动

service mysql start

设置root密码

先无密码登录

mysql -uroot

再设置root密码

set password for `root`@`localhost`=password('123456');

创建所需数据库

create database `devdb` default character set utf8 collate utf8_general_ci;

创建远程用户

create user `remote_user`@`%` identified by '987654';

给远程用户授权

根据不同的数据库单独授权:

grant all privileges on `devdb`.* to `remote_user`@`%`;

刷新权限

flush privileges;

设置表名不区分大小写

vi /etc/my.cnf.d/server.cnf

在[mysqld]段落下加入:

lower_case_table_names=1

然后重启服务:

service mysql restart

启动

#!/bin/bash
LOG_FILE=console.log
JAR_NAME=myapp.jar
if [ ! -f "$LOG_FILE" ]; then
    touch "$LOG_FILE"
fi
nohup java -Djava.net.preferIPv4Stack=true -server -Xmx1024m -Xms512m -XX:PermSize=128m -XX:MaxPermSize=256m -jar $JAR_NAME > $LOG_FILE &
tail -f $LOG_FILE

停止

#!/bin/bash
JAR_NAME=myapp.jar
PID=$(ps -ef | grep $JAR_NAME | grep -v grep | awk '{ print $2 }')
if [ -z "$PID" ]
then
    echo 服务已关闭
else
    echo 关闭服务中 $PID
    kill $PID
fi

例如:学生类
public class Student{

private List<Boy> boys;
private List<Girl> girls;
//getter,setter 方法略

}
引用的对象定义:
public class Girl{

private Integer age;
private Double weight;
//getter,setter方法略

}
如果某些属性(如 age,weight 不需要输出),那么需要定义一个MixIn对象:
@JsonIgnoreProperties({"age", "weight"})
public class MixInGirl extends Girl{
}
通过注解忽略这两个字段。然后在输出时进行处理:
Student result = new Student();
//... 取值
ObjectMapper mapper = new ObjectMapper();

    try {            
        mapper.addMixIn(Girl.class, MixInGirl.class);
        System.out.println(mapper.writeValueAsString(result));
    } catch (JsonProcessingException e) {
        e.printStackTrace();
    }

这样得到的序列化结果中就不会包含 age 和 weight 字段了。