解决Firefox不信任StartSSL证书问题

Startssl 注册好证书 nginx 下配置好生效后,firefox出现 对等端的证书已被废除。 (错误代码:sec_error_revoked_certificate)。其实并不是火狐不支持,而是自己没有配置好。

解决方法:

1
wget https://startssl.com/certs/ca.crt

Description: This root CA is the root used for all Certificates and must be included in root stores. ↑

1
wget https://startssl.com/certs/sca.server1.crt

下载Startssl Class 1的根证书 ↑

1
cat server.crt ca.crt sca.server1.crt > servernew.crt

server.crt 是域名的证书,后面合并的俩文件是下载的Startssl根证书和Startssl Class1根证书

现在可以正常访问了。

https://daily.81810999.com/

Read More

elasticsearch写入数据存储过程

es建索引写入数据,数据最先是存在内存buffer里的,然后再刷入到lucene的底层文件segment中;写入segment完毕后再执行refresh操作,refresh操作后,数据将commit到磁盘中。数据刷入到了磁盘,就可以执行查询操作了。

过程简单描述如下:内存buffer–>segment–>refresh–>磁盘

注意,这些过程,会有translog记录;translog存在的意义就是保证数据刷入的可靠性;因为我们刚才说过,es建索引写入数据的过程是内存到磁盘的过程,这个过程有日志的记录,那就是translog,当数据还在内存里没刷到磁盘中时,如果服务器down了又没translog机制的话,那么数据就会丢失,有了translog,服务器down机后再起来,就能很快恢复写入的过程。

这里要注意的是,translog也是先存在内存里的,然后默认5秒刷一次写到硬盘里

前端优化系列之一:DNS预获取 DNS Prefetch 提升页面载入速度

DNS Prefetch,即DNS预获取,是前端优化的一部分。一般来说,在前端优化中与 DNS 有关的有两点:一个是减少DNS的请求次数,另一个就是进行DNS预获取。

DNS 作为互联网的基础协议,其解析的速度似乎很容易被网站优化人员忽视。现在大多数新浏览器已经针对DNS解析进行了优化,典型的一次DNS解析需要耗费 20-120 毫秒,减少DNS解析时间和次数是个很好的优化方式。DNS Prefetching 是让具有此属性的域名不需要用户点击链接就在后台解析,而域名解析和内容载入是串行的网络操作,所以这个方式能减少用户的等待时间,提升用户体验。

默认情况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,这就是隐式的 DNS Prefetch。如果想对页面中没有出现的域进行预获取,那么就要使用显示的 DNS Prefetch 了。

目前大多数浏览器已经支持此属性,支持版本如下:

  • Safari: 5+
  • Chrome: All
  • Firefox: 3.5+
  • Opera: Unknown
  • IE: 9+ (called “Pre-resolution” on blogs.msdn.com)

其中 ChromeFirefox 3.5+ 内置了 DNS Prefetching 技术并对DNS预解析做了相应优化设置。所以即使不设置此属性,ChromeFirefox 3.5+ 也能自动在后台进行预解析。

DNS Prefetch 应该尽量的放在网页的前面,推荐放在<meta charset="UTF-8">后面。具体使用方法如下:

1
2
3
4
<meta http-equiv="x-dns-prefetch-control" content="on">
<link rel="dns-prefetch" href="//www.techzero.cn">
<link rel="dns-prefetch" href="//api.share.baidu.com">
<link rel="dns-prefetch" href="//bdimg.share.baidu.com">

需要注意的是,虽然使用 DNS Prefetch 能够加快页面的解析速度,但是也不能滥用,因为有开发者指出 禁用DNS 预读取能节省每月100亿的DNS查询。

如果需要禁止隐式的 DNS Prefetch,可以使用以下的标签:

1
<meta http-equiv="x-dns-prefetch-control" content="off">

facebook登录 在 php 框架 slim里的实现

首先使用composer 安装 facebook的php SDK
composer require facebook/graph-sdk

使用了Slim框架,登录也是调用的接口,总共定义了两个链接(或者路由)facebookLoginfacebookCallback . 一个入口链接:负责处理跳转到facebook登录并跳回的功能。另一个是处理回调的:获取facebook的用户基本信息并登录。

Read More

spring jdbc 操作 mysql

build.gradle

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
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:1.4.1.RELEASE")
}
}
apply plugin: 'java'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'spring-boot'
jar {
baseName = 'gs-serving-web-content'
version = '0.1.0'
}
repositories {
mavenCentral()
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
dependencies {
compile("org.springframework.boot:spring-boot-starter-thymeleaf")
compile("org.springframework:spring-jdbc")
compile("mysql:mysql-connector-java:5.1.24")
compile("org.springframework.boot:spring-boot-devtools")
testCompile("junit:junit")
}

Read More

Serving Web Content with Spring MVC

https://spring.io/guides/gs/serving-web-content/

gradle用着确实比maven6很多,该demo主要使用spring bootthymeleaf.本人系统环境 win7

  • IntelliJ IDEA
  • JDK 1.8
  • Gradle3.1

代码效果预览

  • 使用git下载源码:git clone https://github.com/spring-guides/gs-serving-web-content.git
  • cd gs-serving-web-content\complete
  • gradle bootRungradle build之后运行java -jar build/libs/gs-serving-web-content-0.1.0.jar皆可

    Read More

99%的人都理解错了http的get和post的区别

GET和POST是HTTP请求的两种基本方法,要说它们的区别,接触过WEB开发的人都能说出一二。

最直观的区别就是GET把参数包含在URL中,POST通过request body传递参数。

你可能自己写过无数个GET和POST请求,或者已经看过很多权威网站总结出的他们的区别,你非常清楚知道什么时候该用什么。

当你在面试中被问到这个问题,你的内心充满了自信和喜悦。

so easy

你轻轻松松的给出了一个“标准答案”:

GET在浏览器回退时是无害的,而POST会再次提交请求。
GET产生的URL地址可以被Bookmark,而POST不可以。
GET请求会被浏览器主动cache,而POST不会,除非手动设置。
GET请求只能进行url编码,而POST支持多种编码方式。
GET请求参数会被完整保留在浏览器历史记录里,而POST中的参数不会被保留。
GET请求在URL中传送的参数是有长度限制的,而POST么有。
对参数的数据类型,GET只接受ASCII字符,而POST没有限制。
GET比POST更不安全,因为参数直接暴露在URL上,所以不能用来传递敏感信息。
GET参数通过URL传递,POST放在Request body中。

(本标准答案参考自w3schools)

“很遗憾,这不是我们要的回答!”

我的内心是崩溃的

请告诉我真相。。。

Read More