Bean的冒险船


  • 首页

  • 归档

  • 标签

  • 公益404

  • 搜索

Centos网络时间同步

发表于 2017-07-30

场景

系统为Centos6或7, 多个服务器之间存在时间合法性验证,由于各服务器时间不统一,验证不通过。

解决方法

执行如下命令矫正本地时间,网络同步

1
2
3
4
5
6
7
8
# 安装网络时间协议
yum install ntp
# 开启ntp daemon,开机自启动
chkconfig ntpd on
# 同步系统时间,可选任意可靠的时间服务器,这里用的是pool.ntp.org
ntpdate pool.ntp.org
# 启动时间同步协议
service ntpd start

Https简介及配置

发表于 2017-07-30

简介

Https(Secure Hypertext Transfer Protocol)相比Http(Hypertext Transfer Protocol Vertion),字面意思,更安全。Https是在Http协议基础上增加了SSL加密传送信息的协议, 传输加密,保证通信过程数据不会被泄露或窜改,防信息泄露如钓鱼网站。

为保障传输安全, 后端接口可优先考虑使用post方法, 传输时,https将请求头及body参数等加密, url参数不会被加密(url如果被加密, 就找不到资源了, 显而易见, url不做加密处理)。

Https连接过程:

  • 客户端发送请求到服务器端
  • 服务端返回证书和公钥(公钥作为证书的一部分)
  • 客户端验证证书和公钥的有效性,若有效,则生成共享密钥并使用公钥加密发送到服务器端
  • 服务端使用私钥解密数据,并使用收到的共享密钥加密数据,发送给客户端
  • 客户端使用共享密钥解密数据
  • SSL连接建立

Https需配置第三方签发的证书,配置过程如下.

SSL证书申请及配置

申请

个人使用,免费SSL证书即可,签发速度快,可保护完整域名,不支持通配符。这里使用的是阿里云域名服务,进入域名基本信息,选择免费开启SSL证书,按照引导操作配置,最终如下
https_analyze

配置

https_nginx_config

java解析xml

发表于 2017-07-08

如下xml为例:

1
2
3
4
5
6
7
8
9
<?xml version="1.0" encoding="UTF-8" ?>
<datasoruce>
<property name="driver">com.mysql.jdbc.Driver</property>
<property name="url">
jdbc:mysql://127.0.0.1:3306/poker?useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=true
</property>
<property name="username">root</property>
<property name="password">root</property>
</datasoruce>

解析引入dom4j,这里使用的为2.0.0版本,具体文档到社区查看,github已有最新2.0.1版本,dom4j更新很慢,也可以说比较稳定。
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
日志输出使用:
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

阅读全文 »

js解析xml

发表于 2017-07-06

js解析xml字符串

示例为DOMParser.parseFromString()的简单使用。
以下用到ES6的多行字符串,注意包含str值的两个点是Tab键上面、数字键1左边的按键,而不是单引号。

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
28
29
30
31
32
33
34
35
function testXmlStr(){
var str = `<?xml version="1.0" encoding="utf-8"?><root>
<province name="北京直辖市">
<city>昌平区</city>
<city>朝阳区</city>
<city>崇文区</city>
<city>大兴区</city>
<city>东城区</city>
<city>房山区</city>
<city>丰台区</city>
<city>海淀区</city>
<city>怀柔区</city>
<city>门头沟区</city>
<city>密云区</city>
<city>平谷区</city>
<city>石景山区</city>
<city>顺义区</city>
<city>通州区</city>
<city>西城区</city>
<city>宣武区</city>
<city>延庆区</city>
</province></root>`;
//创建文档对象
var parser=new DOMParser();
var xmlDoc=parser.parseFromString(str,"text/xml");
//提取数据
var countrys = xmlDoc.getElementsByTagName('city');
var arr = [];
//输出数据
for (var i = 0; i < countrys.length; i++) {
arr.push(countrys[i].textContent);
};
console.log(arr);
}

js解析本地xml文件

要解析的xml文件部分数据如下:

阅读全文 »

Spring-boot集成Swagger2

发表于 2017-07-05

Swagger用于定义API文档,实现前后端开发分离,测试时不再需要浏览器输入URL访问Controller。对于post请求,无需使用postman模拟,在接口文档中填参数,可直接模拟发请求。本文介绍Swagger2的引入及常用注解。

pom.xml中添加依赖

1
2
3
4
5
6
7
8
9
10
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.6.1</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.6.1</version>
</dependency>

引入Swagger2

新建类,注解方式引入Swagger2

阅读全文 »

Spring-boot打包

发表于 2017-07-02

Spring-boot相比SpringMVC,基本干掉了繁琐的配置文件,Spring-boot自动完成默认配置。若有自定义配置,在application.properties配置文件覆盖即可。
Spring-boot内置tomcat,部署时打成jar包,放到线上启动即可,但独立服务,包文件较大。若多个Spring-boot想使用同一个tomcat或者运维要求Spring-boot项目同其他web项目放到同一容器里,则要考虑打成war包。
使用Maven进行项目管理及构建,打包类型配置在依赖文件pom.xml指明。

打成jar包

1.声明打包类型为jar

1
<packaging>jar</packaging>

2.使用命令 mvn clean package打包部署后,执行

1
nohup java -jar PokerAgentServer.jar >/dev/null 2>&1 &

阅读全文 »

Spring-boot 定时任务

发表于 2017-06-25

定时任务在开发中很常见,最近在清理数据库过期数据时用到定时任务,定时任务简单使用如下。

修改入口程序

启动类中使用注解@EnableScheduling

1
2
3
4
5
6
7
@SpringBootApplication
@EnableScheduling
public class MainApplication {
public static void main(String[] args) {
SpringApplication.run(MainApplication.class, args);
}
}

阅读全文 »

客户端内嵌WebView与浏览器访问页面的安全机制

发表于 2017-06-24

近期新增代理商系统,游戏内加入webview以及从浏览器登录系统两种方式。作为服务端开发,与主管讨论之后,不同已有基于netty开发的多个服务器,服务端新增基于Spring-boot开发的服务器提供微服务。本文介绍安全机制设计与实现。

客户端内嵌WebView与服务器通信的加密方案

安全验证采用token做密钥,摘要算法保证内容正确。摘要算法采用最常见的MD5即可。
加密过程是服务端生成token,并把这个token发给客户端,客户端(这里包括WebView内页面)每次请求都附带stime以及token, 对这个字符串做计算形成摘要(sign)。
客户端调用WebView之前,通过protobuffer协议获取token。

阅读全文 »

SpringBoot项目创建及配置参数简介

发表于 2017-06-10

项目搭建

多种方式可选。
1.在线创建:https://start.spring.io/ 下载生成压缩包导入IDE即可
2.IDE创建(idea为例,两种方式):

  • New Project -> Spring Initializr -> Choose Version And Dependency (推荐)
  • New Project -> Maven -> Finish -> Change parent to Spring-boot-starter-parent

3.Spring Boot CLI
下载后,解压,将bin目录添加至系统变量Path中,打开cmd, 运行spring –version验证是否安装成功

运行如下命令创建简单项目(本质与在线创建方式相同,连接start.spring.io并下载zip包)

1
spring init --build=maven --java-version=1.8 --dependencies=web --packaging=jar --boot-version=1.5.1.RELEASE

官方文档

配置参数

阅读全文 »

常见正则合法性校验

发表于 2017-05-24

正则表达式用于各个情形的数据校验,用于匹配字符串。例如对请求参数的校验,客户端给服务器发送数据前,需初步对数据进行合法性校验;由于客户端数据不可信,服务器要对数据进行严格的合法性校验。
本文记录的是常用的身份证及手机号等合法性正则校验,以Java编程为例。

正则基本语法

^ 匹配字符串的起始位置,如果将 ^ 用作括号表达式中的第一个字符,则会对字符集求反,[^abc] 与除 a、b 和 c 以外的任何字符匹配

$ 匹配字符串的结束位置

* 任意次(零次或多次)匹配前面的字符或子表达式,等效于 {0,}

+ 至少一次(一次或多次)匹配前面的字符或子表达式,等效于 {1,}

? 零次或一次匹配前面的字符或子表达式,等效于 {0,1}

. 匹配单个字符, a.c 与“abc”、“a1c”和“a-c”匹配

| 或,z|food 与“z”或“food”匹配。(z|f)ood 与“zood”或“food”匹配

( ) 小括号表示匹配括号中全部字符

[] 中括号表示匹配括号中一个字符 范围描述 如[0-9 a-z A-Z]

{} 大括号用于限定匹配次数,如{n}表示匹配n次;{n,}表示至少匹配n次;{n,m}表示至少匹配n次,最多匹配m次

\ 转义字符,如上基本符号匹配都需要转义字符,如 * 表示匹配*号。\f 为换页符,\n 为换行符,\r 为回车符,\t 为Tab 字符,\v 为垂直制表符

\w 表示英文字母和数字以及下划线,等效于 [A-Za-z0-9_]

\W 英文字母,数字,下滑线以外的字符,等效于 [^A-Za-z0-9_]

\d 表示数字,等效于 [0-9]

\D 非数字,等效于 [^0-9]

\s 任何空白字符。其中包括空格、制表符和换页符,[\f\n\r\t\v]

\S 任何非空白字符,[^\f\n\r\t\v]

exp1(?=exp2) 前瞻(look ahead),查找exp2前面的exp1,如 a(?=b) 匹配ab但不匹配ac

(?<=exp2)exp1 后顾(look behind),查找exp2后面的exp1,如 (?<=b)a 匹配ba但不匹配bc

exp1(?!exp2) 负前瞻,查找后面不是exp2的exp1, 如 a(?!b) 匹配ac但不匹配ab

(?<!=exp2)exp1 负后顾,查找前面不是exp2的exp1, 如 (?<!b)a 匹配ca但不匹配ba

常见正则校验

手机号合法性校验

阅读全文 »
1…4567
MonkeyBean

MonkeyBean

行云流水 天马行空

62 日志
16 标签
GitHub 微博
友情链接
  • 耀耀的博客
  • 7nocturnal的博客
  • xiaofeng的博客
  • Angus的博客
© 2016 - 2022 MonkeyBean
由 Hexo 强力驱动
主题 - NexT.Pisces