keepass keeCloud DropBox实时同步密码数据库

keepass 和 dropbox实时管理账号密码信息

本文主要是介绍如何使用开源 keepass 结合插件 keeCloud 使用 dropBox 云存储实时同步管理账号密码信息,在不同机器上进行数据的同步,减少记忆账号密码的负担及密码都一样的问题,保证数据的安全性。

keepass 和 LastPassword,1password等众多密码管理工具一样,是便于日常密码管理的工具,它是开源的密码管理工具,使用起来很方便,关键自动生成密码相对来说,比我各种账号都用那一个密码要安全的多,(不要试图破解哦)。不过无论如何是好工具,还是开源的,很赞同国外的开源精神,目前keepass中文没有。

工具的准备:

1、KeePass 2.39 (2.39.1) released

2、KeeCloud 

3、dropBoxs申请地址

如果需要gcp,如何申请,可以参考<免费获得google cloud云存储文章>

安装介绍:

1、打开下面页面,界面如下

keepass

2、创建一个数据库

keepass

3、选择存储路径

将其存储到指定路径,如果已经安装dropBox,安装到dropBox

4、设置当前keepass的管理密码

5、设置keepass db的基本(基本、安全、压缩、回收站、高级等)属性

6、右键>>Add Entity 新增用户名和密码信息

7、输入用户名、密码、URL等信息

8、右键点击此Entity,可以粘贴、复制用户名和密码

安装插件keecloud

1、先保存并关闭keepass

2、复制 KeeCloud.1.2.1.11.plgx 到 keepass 的plugin目录下:

3、启动keepass并启动keepass

4、打开keepass

设置URL 同步参数

1、打开dropBox客户端

2、先创建一个keepassSync文件夹,名字可以任意起等。

3、然后进入那个文件夹,并把刚保存的keepass的数据库文件拖进来

4、回到keepass,tools>URL Credential Wizard

5、选择dropBox并NEXT,你的浏览器会打开一个Dropbox OAuth的页面点击Allow

6、回到keepass界面,点击NEXT

7、点击Save As Entry,这时候keepass会保存dropBox到keepass Entity,然后点击Done

设置触发器Trigger

目的:每次保存Entity到keepass数据库时,我们要保存dropBox上的密码保持同步

1、找到keecloud Dropbox credentials 的 entry

将username和password粘贴出来,新版的只有password

2、点击tools>triggers

3、点击Add

4、在Name 为 triggers 里取名字Sync,然后点击Next

5、点击Add,选择Saved database file 点击OK,再点击Next

6、在Actions标签内点击Add

7、选择Change trigger on/off state 在 Trigger name 输入为trigger取的名字 (这里是Sync)
New state 输入off,点击OK

8、再点Add

9、选择Synchronize active database with a file/URL
File/URL 填入 dropbox:///{FolderName}/{DatabaseName}
其中的{FolderName}是之前在Dropbox 创建的 folder 名字,这里是“KeePassSync”
{DatabaseName}就是密码库的名称,这里是“Testing.kdbx”

IO Connection – User Name 填入之前复制下来的 username(新版默认为空)
IO Connection – Password 也是填入之前复制的 password(需要输入)

点击OK

10、再点击Add

选择Change trigger on/off state
Trigger Name 填入trigger name,这里是Sync
New State 是选择 On ,点击OK,点击Finish

11、点击OK,返回Triggers主界面,点击OK

12、现在添加一个新的entry,然后点击save (或 Ctrl + S),查看 triggers 是否生效

有不懂的欢迎留言。

SpringCloud 笔记 –1– 简单搭建服务注册中心与服务,实现高可用

此spring cloud笔记系列都来源于翟永超的spring cloud微服务实战一书,可以自行下载。


此文档有关于服务注册中心。

[AdSense-A]

快速构建一个服务注册中心项目

Pom

<parent>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-parent</artifactId>         <version>1.5.6.RELEASE</version>         <relativePath/> <!-- lookup parent from repository -->     </parent>  <!-- spring cloud -->         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-eureka-server</artifactId>         </dependency>  <dependencyManagement>         <dependencies>             <dependency>                 <groupId>org.springframework.cloud</groupId>                 <artifactId>spring-cloud-dependencies</artifactId>                 <!-- 此版本和springboot版本有关,可查官网,我这里用的springboot1.5,所以用了Dalston -->                 <version>Dalston.SR3</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>         </dependencies>     </dependencyManagement> 

主类

package com.example.eurekaserver;  import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; /*  * 启动一个服务注册中心提供给其他应用进行对话  */ @EnableEurekaServer @SpringBootApplication public class EurekaServerApplication {      public static void main(String[] args) {         SpringApplication.run(EurekaServerApplication.class, args);     } }  

默认设置下,该服务注册中心也会将自己作为客户端来尝试注册它自己
所以我们需要禁用它的客户端注册行为

Application.properties

server.port = 1111  eureka.instance.hostname = localhost # don't register selt in eureka eureka.client.register-with-eureka = false # don't search service,only Maintain  service instance eureka.client.fetch-registry = false eureka.client.serviceUrl.defaultZone = http://${eureka.instance.hostname}:${server.port}/eureka/

启动并访问http://localhost:1111/
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用

可以发现现在注册中心还没有注册任何服务,现在我们来把一个已有的springboot应用加入到eureka服务治理中。

注册服务提供者

如果你本地有一个springboot的普通应用,这就再好不过了,改造即可。当然重新构建一个也没问题。

添加Pom

<dependencies>         <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-web</artifactId>         </dependency>          <dependency>             <groupId>org.springframework.boot</groupId>             <artifactId>spring-boot-starter-test</artifactId>             <scope>test</scope>         </dependency>          <!-- eureka -->         <dependency>             <groupId>org.springframework.cloud</groupId>             <artifactId>spring-cloud-starter-eureka</artifactId>         </dependency>     </dependencies>      <dependencyManagement>         <dependencies>             <dependency>                 <groupId>org.springframework.cloud</groupId>                 <artifactId>spring-cloud-dependencies</artifactId>                 <!-- 此版本和springboot版本有关,可查官网,我这里用的springboot1.5,所以用了Dalston -->                 <version>Dalston.SR3</version>                 <type>pom</type>                 <scope>import</scope>             </dependency>         </dependencies>     </dependencyManagement> 

改造Controller

@RestController @RequestMapping(value="/user") public class UserController {     private final Logger logger = Logger.getLogger(getClass());      @Autowired     private DiscoveryClient client;      @RequestMapping("/hello")     public String greet() {         ServiceInstance instance = client.getLocalServiceInstance(); //打印服务相关内容         logger.info("/hello,host:"+instance.getHost()+", service_id:"+instance.getServiceId());         return "Hello";     } }  

主类

@EnableDiscoveryClient @SpringBootApplication public class ClientServiceApplication {      public static void main(String[] args) {         SpringApplication.run(ClientServiceApplication.class, args);     } } 

主类中加上此注解@EnableDiscoveryClient,激活Eureka中的DiscoveryClient实现(自动化配置,创建DiscoveryClient接口针对Eureka客户端的EnableDiscoveryClient实例),才能实现Controller中对服务信息的输出。

Application.properties:

# name the service spring.application.name = hello-service # define the register url eureka.client.serviceUrl.defaultZone = http://localhost:1111/eureka/

启动此项目(此时注册中心eruka-server应该启动着),在此访问注册中心
http://localhost:1111/
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用
标明服务注册到其中。
访问刚才的controller:http://localhost:8080/user/hello
控制台打印了:
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用

高可用注册中心

Eureka Server的高可用实际上就是将自己作为服务向其他服务注册中心注册自己,这样就可以形成一组互相注册的服务注册中心,以实现服务清单的互相同步,达到高可用的效果。下面我们来尝试搭建高可用的服务注册中心集群。

在eureka-server服务注册中心的基础之上进行扩展,构建一个双节点的服务注册中心集群。

Application.properties:

# don't register selt in eureka eureka.client.register-with-eureka = false # don't search service,only Maintain  service instance eureka.client.fetch-registry = false

创建application-peer1.properties与application-peer2.properties
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用

Application-peer1.properties:

spring.application.name=eureka-server server.port=1111  # double nodes : first--peer1,that directs peer2 eureka.instance.hostname=peer1  eureka.client.serviceUrl.defaultZone=http://peer2:1112/eureka/

Application-peer2.properties:

server.port = 1112 spring.application.name = eureka-server  # double nodes : second--peer2,that directs peer1 eureka.instance.hostname = peer2  eureka.client.serviceUrl.defaultZone = http://peer1:1111/eureka/

clean项目然后maven clean-maven install
target下此时jar包最新

hosts文件

需要在本机系统中配置peer1,peer2使系统能通过他们找到ip
windows文件位置:
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用
打开此文件配置如下:
127.0.0.1 peer1
127.0.0.1 peer2

我们通过jar命令与profile配置分别启动peer1与peer2,实际中也可以两个注册中心项目,application.properties中分别指向彼此,启动。
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用
访问如下即配置完成:
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用

现在我们来实验一下注册服务,启动之前需要把注册地址都填上:
之前的client-service的application.properties中修改注册地址如下:

# define the register url eureka.client.serviceUrl.defaultZone = http://peer1:1111/eureka/,http://peer2:1112/eureka/ 

启动此服务,重新访问两个注册节点:
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用
SpringCloud 笔记 (一)---- 简单搭建服务注册中心与服务,实现服务注册中心高可用

这样我们两个注册中心彼此都有注册,其中一个dang,另一个仍然可以工作。服务依然可访问。

如果我们不想使用主机名来定义注册中心的地址,也可以使用IP地址的形式,但是需要配置文件中增加配置参数eureka.instance.prefer-ip-address=true,该默认为false。然后当应用程序向eureka注册时,它将使用IP地址而不是主机名

SpringCloud–Maven打包–难题解惑

1.项目在webapp下的web-inf下引入了依赖包,run as?maven install报错:
找不到符号。

[AdSense-A]

右键项目->MAVEN->Update Project Configuration
然后clean相关项目
再打包

依赖包就在maven里面了

2.spring-boot-maven-plugin 打包后class path resource [mybatis-config.xml ] cannot be opened because it do
本地启动没问题,打成jar包后找不到xml文件:

<build>         <plugins>             <!-- 支持maven war/jar打包 -->             <plugin>                 <groupId>org.springframework.boot</groupId>                 <artifactId>spring-boot-maven-plugin</artifactId>                 <configuration>                     <source>1.8</source>                     <target>1.8</target>                     <encoding>UTF-8</encoding>                 </configuration>             </plugin>         </plugins> </build>

原因主要是mapping目录里面的文件都是xml文件并不是.java文件,而maven打包默认的src/main/java的是Java文件,它不会打包里面的xml文件,所以在打包之后里面不会有mapping。https://blog.csdn.net/jgj0129/article/details/53112738

<!-- maven默认不打*.xml的文件,所以需要特殊标明出来 --> <!-- maven默认不打*.xml的文件,所以需要特殊标明出来 --> <resources> <resource> <directory>${project.basedir}/src/main/resources</directory> <includes> <include>**/*.*</include> <include>*.xml</include> </includes> </resource> </resources> </build>

3.If you want an embedded database please put a supported one on the classpath.
说是数据库连不上,可是我改了好多次jdbc和驱动,都不可以!!!!!原来是mybatis问题,错误提示过于坑。

因为是properties不支持:虽然本地没问题可是打包后jar命令运行就是报错:

mybatis.mapperLocations:classpath:mappers/*.xml   mybatis.configLocation:classpath:mybatis-config.xml

改成

mybatis.mapperLocations=classpath:mappers/*.xml   mybatis.configLocation=classpath:mybatis-config.xml

这个配置错了报的还挺多的,不过一改成这样就全好了

4.spring-boot-maven-plugin打第三方jar包

网上有两个方法:
第一个就是,全部把第三方jar包全部放在maven库里面加上依赖,和其他jar一样从库里找
这个感觉太麻烦了没有用

第二个是,在pom文件中配置一个项目中依赖,

<dependency>     <groupId>com.cc.cqp</groupId>     <artifactId>cqp-riskpremium-commons-codec</artifactId>     <version>1.1.0</version>     <scope>system</scope>     <systemPath>${project.basedir}/src/main/webapp/WEB-INF/lib/commons-codec-1.3.jar</systemPath> </dependency>

主要是<scope>system</scope>,意思是这个jar包从项目路径里面找而不是从maven库里找,<systemPath>配置的项目查找路径
剩下的

<groupId>com.cc.cqp</groupId>     <artifactId>cqp-riskpremium-commons-codec</artifactId>     <version>1.1.0</version>

随便编写就好了,不和其他重合即可

然后在

<plugin>     <groupId>org.springframework.boot</groupId>     <artifactId>spring-boot-maven-plugin</artifactId>     <configuration>         <source>1.8</source>         <target>1.8</target>         <includeSystemScope>true</includeSystemScope>     </configuration>  </plugin>

加上<includeSystemScope>true</includeSystemScope>,意思代表会把刚才的本项目中的本地jar打进最后的包里面

5.打成jar后老是启动不了服务
No active profile set, falling back to default profiles: default
Starting service [Tomcat]
Starting Servlet Engine: Apache Tomcat/8.5.16
Initializing Spring embedded WebApplicationContext

就停止了

配置文件的问题

服务停止一般都是配置文件惹的祸,发现

spring.datasource.tomcat.max-wait=1000 spring.datasource.tomcat.max-active=30 spring.datasource.tomcat.test-on-borrow=false

改为

spring.datasource.max-wait=1000 spring.datasource.max-active=30 spring.datasource.test-on-borrow=false

即可

[AdSense-B]

苹果在全球范围内阻止Telegram消息应用更新

天健厚德:苹果在全球范围内阻止Telegram消息应用更新

新浪科技讯 北京时间5月31日晚间消息,加密聊天应用Telegram创始人兼CEO帕维尔·杜罗夫(Pavel Durov)今日称,在俄罗斯政府要求苹果公司(以下简称“苹果”)下架Telegram应用后,苹果已在全球范围内阻止Telegram应用的更新。

[AdSense-A]

Telegram总部位于莫斯科,为用户提供端到端的加密通信服务,在俄罗斯非常受欢迎。Telegram曾拒绝为俄罗斯联邦安全局提供后门程序,该机构宣称Telegram的加密聊天服务给犯罪分子、极端和恐怖主义分子提供了便利。

在请求被拒绝后,俄罗斯今年4月开始全国性地屏蔽Telegram。4月17日,俄罗斯政府还向App Store和Google Play Store这两家应用商店发出了下架Telegram的请求。[AdSense-B]

在实施屏蔽Telegram计划6周后,俄罗斯政府似乎并没有取得实质性进展。为此,俄罗斯电信监管机构昨日与苹果公司取得联系,要求停止在App Store内向俄罗斯用户提供Telegram应用,同时还要求苹果停止向俄罗斯Telegram用户推送消息通知。

杜罗夫今日称,俄罗斯用户仅占Telegram全球用户数量的7%。而这一次,苹果限制了Telegram全球用户的更新。为此,Telegram未能在5月25日的最终期限内遵守欧盟新的数据隐私法规《通用数据保护条例》(GDPR)。(李明)

Spring Boot 2.0(二):Spring Boot 2.0 动态Banner

Spring Boot 2.0 提供了很多新特性,动态 Banner。

[AdSense-A]
配置依赖

使用 Spring Boot 2.0 首先需要将项目依赖包替换为刚刚发布的 2.0 RELEASE,现在网站https://start.spring.io/也将 Spring Boot2.0 设置为默认版本。
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.0.RELEASE</version>
</parent>

设置完毕后,dependencies中没有指明版本的依赖包,将自动使用2.0.0.RELEASE依赖的版本。

<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
</dependencies>

Spring Boot 2.0 刚刚发布,一些 Maven 仓库还没更新,可以手动添加 Spring Boot 官方 Maven 仓库。

<repositories>
<repository>
<id>spring-milestones</id>
<name>Spring Milestones</name>
<url>https://repo.spring.io/libs-milestone</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>

第一次使用 Spring Boot 2.0 ,完整依赖包需要下载半小时左右。

Spring Boot 更换 Banner

在 Spring Boot 1.0 中如何更换启动 Banner,其实都很简单,只需要在src/main/resources路径下新建一个banner.txt文件,banner.txt中填写好需要打印的字符串内容即可。

一般情况下,我们会借助第三方工具帮忙转化内容,如网站http://www.network-science.de/ascii/将文字转化成字符串,

网站:http://www.degraeve.com/img2txt.php可以将图片转化成字符串。

在 Spring Boot 2.0 项目src/main/resources路径下新建一个banner.txt文件,粘贴上述字符串,启动 Spring Boot 项目观察启动日志,发现 Spring Boot 2.0 已经将默认的 Spring 字符串替换为 hello world。说明 Spring Boot 2.0 也支持1.0更换 Banner 的方法。

接下来在Spring Boot 2.0 项目中测试打印动态Banner 。

同样我们将 banner.gif 文件放到项目的src/main/resources路径下,启动项目进行测试,输出栏打印信息如下:

通过上述输出我们发现 Spring Boot 在启动的时候,会将 gif 图片的每一个画面,按照顺序打印在日志中,所有的画面打印完毕后,才会启动 Spring Boot 项目。

如果目录src/main/resources下同时存在banner.txt和banner.gif,项目会先将banner.gif每一个画面打印完毕之后,再打印banner.txt中的内容。

项目的启动 Banner 有什么用呢,在一些大的组织或者公司中,可以利用这个特性定制自己专属的启动画面,增加团队对品牌的认同感。

参考源码

WP Super Cache缓存插件和七牛云存储CDN实现整站静态文件加速

WordPress作为全球使用用户最多的CMS程序,唯一的弊端就是随着网站的使用以及用户量、文件数的增多会增加数据库的检索,进而占用很大的网络访问资源,甚至有些几百IP的个人博客,1GB内存的VPS都撑不住。作为一款高端的CMS,我们不仅需要学会如何运营网站,而且还需要学会如何提高WordPress程序的网站访问速度。在众多插件中,我们基本上都会使用WP Super Cache 缓存插件。每天不到100的访问量,也有一种力不从心的感觉,随着网站访问量的增多,肯定会选择镜像CDN存储,那么首先想到的就是七牛,毕竟免费用户每月赠送的10G的访问流量还是够用的。
但是,发现七牛镜像存储 WordPress 插件比较难设置,而且还有付费版本功能,本文主要应用七牛云存储和常用的WP Super Cache也可以兼容CDN缓存,而且效果还更好,不需要额外多安装插件。

第一、申请七牛云存储账户
注册七牛云存储

根据七牛云官方的奖励,默认每月有10GB免费流量,如果能邀请其他用户成为标准用户,最多可以得到免费40GB的流量;注册七牛需要审核通过,身份证照片拍照,当时半个小时就通过了(当时上班时间下午3点左右)。

第二、设置七牛存储空间和域名
登陆七牛账户后台,设置一个专属网站的存储空间,我们会看到一个免费域名,也可以自定义专属的二级域名,但必须有BA号的域名才可以申请绑定。

甚至二级域名之后需要等到大约2-3天审核通过,因为我之前预先有准备,所以直接可以看到已经审核通过。
第三、设置七牛云存储空间
在空间设置中,找到一键加速网站按钮,然后设置我们的数据源网站。


这里根据我们网站的目录填写,然后确定加速之后就可以添加完毕。
第四、设置WP Super Cache
我们在WORDPRESS安装有WP Super Cache插件之后,启动CDN选项,然后输入我们在七牛云存储网址,保存之后就可以把定义的目录文件中静态页面JS、CSS以及图片缓存存储到七牛云存储,提高网站的访问速度。
这里需要注意,我们需要在绑定域名之后,二级域名也要别名解析生效才可以添加。


总结,通过这篇文章基本可以实现利用我们常用的WP Super Cache插件结合七牛云存储实现WORDPRESS静态文件的加速,比再安装一个七牛镜像存储 WordPress 插件节省资源,提高效率。

Spring Boot 2.0(一):Spring Boot 2.0发布

就在上个月Spring Boot2.0.0 release正式发布,在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误,然后Spring Boot官方又赶紧把 GitHub 上发布的 v2.0.0.RELEASE 版本进行了撤回。到了下午将问题修复后,又重新进行了上传,至此Spring Boot2.0正式推出!

要知道这是Spring Boot1.0发布4年之后第一次重大修订,因此有多的新功能和特性值得大家期待!在Spring Boot官方博客中我们了解到:Spring Boot2.0版本经历了 17 个月的开发,有 215 个不同的使用者提供了超过 6800 次的提交,并表示非常感谢提供贡献的每一位用户,和所有对这些里程碑版本提供重要反馈的早期采用者。

熟悉Spring Boot/Cloud的技术者们都知道,Spring Boot依赖于Spring,而Spring Cloud又依赖于Spring Boot,因此Spring Boot2.0的发布正式整合了Spring5.0的很多特性,同样后面Spring Cloud最新版本的发布也需要整合最新的Spring Boot2.0内容。

新版本特性

新版本值得关注的亮点有哪些:

基于 Java 8,支持 Java 9

也就是说Spring Boot2.0的最低版本要求为JDK8,据了解国内大部分的互联网公司系统都还跑在JDK1.6/7上,因此想要升级到Spring Boot2.0的同学们注意啦,同时支持了Java9,也仅仅是支持而已。

响应式编程

使用 Spring WebFlux/WebFlux.fn提供响应式 Web 编程支持, Webflux 是一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好,此功能来源于Spring5.0。

Spring Boot2.0也提供对响应式编程的自动化配置,如:Reactive Spring Data、Reactive Spring Security 等

HTTP/2支持

在Tomcat, Undertow 和 Jetty 中均已支持 HTTP/2

对Kotlin支持

引入对 Kotlin 1.2.x 的支持,并提供了一个 runApplication 函数,让你通过惯用的 Kotlin 来运行 Spring Boot 应用程序。

全新的执行器架构

全新的执行器架构,支持 Spring MVC, WebFlux 和 Jersey

支持 Quartz

Spring Boot1.0并没有提供对 Quartz 的支持,之前出现了各种集成方案,Spring Boot2.0给出了最简单的集成方式。

Security

大大的简化了安全自动配置

Metrics

Metrics方面,Spring Boot 2引入了Micrometer,来统一metrics的规范,使得开发人员更好的理解和使用metrics的模块,而不需要关心对接的具体存储是什么。

监控方面

Spring Boot 2 增强了对 Micrometer 的集成。RabbitMQ、JVM 线程和垃圾收集指标会自动进行 instrument 监控,异步控制器(controller)也会自动添加到监控里。通过集成,还可以对 InfluxDB 服务器进行监控。

数据方面

  • db方面,默认引入了HikariCP,替代了之前的tomcat-pool作为底层的数据库连接池, 对比于tomcat-pool, HikariCP拥有更好的性能,总而言之就是提高了db的访问速度
  • JOOQ的支持
  • Redis方面, 默认引入了Lettuce, 替代了之前的jedis作为底层的redis链接方式
  • MongoDB\Hibernate优化

Thymeleaf 3

Spring Boot 2支持了Thymeleaf 3,Thymeleaf 3相对于Thymeleaf 2性能提升可不是一点点,因为2.0的性能确实不咋地,同时也使用了新的页面解析系统。

OAuth 2.0

同时也加入了 对于OAuth 2.0的支持, 使得开发人员更加友好的使用spring-security来完成权限模块的开发

依赖组件的更新

  • Jetty 9.4
  • Tomcat 8.5
  • Flyway 5
  • Hibernate 5.2
  • Gradle 3.4
  • Thymeleaf 3。0

最后还有一个小彩蛋,Spring Boot2.0支持了动态gif的启动logo打印.

技术名词解释

Spring 现在作为Java开源界的老大,它的一举一动都影响着行业的技术方向,在这次发布的 Release Notes中发现有很多的技术都还没有了解过,也分享出来:

WebFlux 是什么?

WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于 Reactor 中的类 Flux。Spring webflux 有一个全新的非堵塞的函数式 Reactive Web 框架,可以用来构建异步的、非堵塞的、事件驱动的服务,在伸缩性方面表现非常好。

非阻塞的关键预期好处是能够以小的固定数量的线程和较少的内存进行扩展。在服务器端 WebFlux 支持2种不同的编程模型:

  • 基于注解的 @Controller 和其他注解也支持 Spring MVC
  • Functional 、Java 8 lambda 风格的路由和处理

默认情况下,Spring Boot 2使用Netty WebFlux,因为Netty在异步非阻塞空间中被广泛使用,异步非阻塞连接可以节省更多的资源,提供更高的响应度。通过比较Servlet 3.1非阻塞I / O没有太多的使用,因为使用它的成本比较高,Spring WebFlux打开了一条实用的通路。

值得注意的是:支持reactive编程的数据库只有MongoDB, redis, Cassandra, Couchbase

HTTP/2

相比 HTTP/1.x,HTTP/2 在底层传输做了很大的改动和优化:

  • HTTP/2 采用二进制格式传输数据,而非 HTTP/1.x 的文本格式。二进制格式在协议的解析和优化扩展上带来更多的优势和可能。
  • HTTP/2 对消息头采用 HPACK 进行压缩传输,能够节省消息头占用的网络的流量。而 HTTP/1.x 每次请求,都会携带大量冗余头信息,浪费了很多带宽资源。头压缩能够很好的解决该问题。
  • 多路复用,直白的说就是所有的请求都是通过一个 TCP 连接并发完成。HTTP/1.x 虽然通过 pipeline 也能并发请求,但是多个请求之间的响应会被阻塞的,所以 pipeline 至今也没有被普及应用,而 HTTP/2 做到了真正的并发请求。同时,流还支持优先级和流量控制。
  • Server Push:服务端能够更快的把资源推送给客户端。例如服务端可以主动把 JS 和 CSS 文件推送给客户端,而不需要客户端解析 HTML 再发送这些请求。当客户端需要的时候,它已经在客户端了。

JOOQ

JOOQ 是基于Java访问关系型数据库的工具包。JOOQ 既吸取了传统ORM操作数据的简单性和安全性,又保留了原生sql的灵活性,它更像是介于 ORMS和JDBC的中间层。对于喜欢写sql的码农来说,JOOQ可以完全满足你控制欲,可以是用Java代码写出sql的感觉来。

Lettuce

Lettuce是一个可伸缩的线程安全的Redis客户端,用于同步,异步和反应使用。 多个线程可以共享同一个RedisConnection。它利用优秀netty NIO框架来高效地管理多个连接。 支持先进的Redis功能,如Sentinel,集群,流水线,自动重新连接和Redis数据模型。

国内使用Jedis的居多,看来以后要多研究研究Lettuce了。

HikariCP

HikariCP是一个高性能的JDBC连接池。Hikari是日语“光”的意思。可能是目前java业界最快的数据库连接池。

Flyway

Flyway是独立于数据库的应用、管理并跟踪数据库变更的数据库版本管理工具。用通俗的话讲,Flyway可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。

Gson

Gson 是google解析Json的一个开源框架,同类的框架fastJson,JackJson等等

是否选择升级

通过以上内容可以看出Spring Boot2.0相对于1.0增加了很多新特性,并且最重要的是Spring Boot2.0依赖的JDK最低版本是1.8,估计国内大多互联网公司还么这么激进。另外一个新的重大版本更新之后,难免会有一些小Bug什么的,往往需要再发布几个小版本之后,才会慢慢稳定下来。

因此我的建议是,如果不是特别想使用Spring Boot2.0上面提到的新特性,就尽量不要着急进行升级,等Spring Boot2.0彻底稳定下来后再使用。如果想要升级也请先从早期的版本升级到Spring Boot1.5X系列之后,再升级到Spring Boot2.0版本,Spring Boot2.0的很多配置内容和Spring Boot1.0不一致需要注意。

Spring Boot1.0发布之后给我们带来了全新的开发模式,Spring Boot2.0发布标志着Spring Boot已经走向成熟,对Java界带来的变革已经开启!

云主机部署web环境并安装wp

准备LNMP环境并创建支持PHP的web环境,这里介绍两种方式:

第一种定制化的安装方式,就是自己安装(可参考);

一 准备LNMP环境
LNMP是Linux,Nginx,Mysql和PHP的缩写,是WordPress依赖的基础运行环境,我们先来准备LNMP环境。
安装Nginx
yum install nginx -y
修改 /etc/nginx/conf.d/default.conf,去除对 IPv6 地址的监听
,可参考下面的示例:
server {
listen 80 default_server;
# listen [::]:80 default_server;
server_name _;
root /usr/share/nginx/html;

# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;

location / {
}

error_page 404 /404.html;
location = /40x.html {
}

error_page 500 502 503 504 /50x.html;
location = /50x.html {
}

}
修改后启动Nginx
nginx

此时,可访问实验机器外网 HTTP 服务(http://139.199.167.67)来确认是否已经安装成功。
将 Nginx 设置为开机自动启动:
chkconfig nginx on

安装MySql数据库
yum install mysql-server -y
完成后启动MySql服务器
service mysqld restart
设置MySql账号root密码:
/usr/bin/mysqladmin -u root password ‘your password’
将MySql设置为开机自动启动
chkconfig mysqld on

安装PHP
yum install php-fpm php-mysql -y
安装之后,启动PHP-FPM进程
service php-fpm start
启动之后,可以使用下面的命令查看PHP-FPM进程监听哪个端口
netstat -nlpt | grep php-fpm
把PHP-FPM也设置成开机自动启动
chkconfig php-fpm on

二 安装并配置WordPress
1、安装WordPress
配置好LNMP环境后,安装WP
yum install wordpress -y
安装完成后,可以在/usr/share/wordpress 看到WP的源代码了。
2、配置数据库
进入MySQL:
mysql -uroot –password=’your password’
为WordPress创建一个数据库:
CREATE DATABASE wordpress;
MySQL部分设置完了,我们退出MySQL环境:
exit
把上述刚配置的mysql账号密码,数据库名称同步到WordPress的wp-config.php文件中。

配置Nginx
WordPress已经安装完成,我们来配置Nginx把请求转发给PHP-FPM来处理
首先,重命名默认的配置文件:
cd /etc/nginx/conf.d/
mv default.conf defaut.conf.bak

在/etc/nginx/conf.d 创建wordpress.conf 配置文件,参考以下内容
server {
listen 80;
root /usr/share/wordpress;
location / {
index index.php index.html index.htm;
try_files $uri $uri/ /index.php index.php;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ .php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}

配置后,通知Nginx进程重新加载:
nginx -s reload。

第二种自动LNMP的安装方式,就是自动安装;

具体安装步骤参考LNMP软件包官网

LNMP添加、删除虚拟主机及伪静态使用教程

vps云主机搭建网站环境(201805)

最近再捣鼓云服务器vps上搭建apache web服务器,Mysql数据库,操作系统环境是Debian9。
因为没有截图,大家只要按照操作步骤进行安装即可。
首先选中计算引擎->vm实例->创建实例,具体可以参考《免费获得GOOGLE CLOUD云计算服务,300刀12个月》 

创建完实例,开始安装apache(或者nginx)和mysql数据库

1、安装web服务器(以下a b二选一)

a).apache服务器并且支持php语法

sudo su
cd /
apt-get install apache2
apt-get update
cd var
cd www
nano index.html

sudo chmod 766 html -R  后面xftp上传文件时候,需要用到的。

apt-get install php
apt-get install php-pear
service apache2 restart

新建一个index.php ,里面是phpinfo();

打开:  IP/index.php

b).nginx服务器

sudo apt-get install nginx
sudo service nginx restart
sudo apt-get install php-fpm
sudo vim /etc/php/7.0/fpm/php.ini
修改 cgi.fix_pathinfo=0
sudo vim /etc/php/7.0/fpm/pool.d/www.conf
sudo vim /etc/nginx/sites-available/default

nginx参数大致调整至此,具体根据需要进行调整。

2、安装mysql

sudo apt-get install mysql-server
sudo apt-get install php-mysql
sudo /usr/bin/mysql_secure_installation
输入密码
sudo service mysql restart
 3、通过xshell连接google cloud
首先用xshell生成公钥

4、将生成的公钥复制到google cloud 元数据里

注:记得在这个公钥的== 后面加上  空格 密钥名称

比如:ssh-rsa AAAB3NzaC1yc2EAAAA…oQ== 密钥名称

5、连接xshell 不需要密码,选择密钥

即可连上云服务器vps,整个建站和连接vps服务器完结,如果哪里不清楚,请留言。

 

processon是免费在线作图,实时协作的在线工具

这个工具是同事推荐我用的,感觉很方便,应该属于saas架构应用,平时打开类似visio,电脑很卡,processon可以直接在线新建编辑。
应该是用的js类库(mxgraph)拖动,所见即所得。

processon的外观:

[AdSense-A]


那么processon优势在于:
1、提供很多在线模板,可以copy后直接编辑使用;
2、ProcessOn 支持流程图、思维导图、原型图、UML、网络拓扑图等;
3、提供在线相互协作,头脑风暴的功能;
4、支持跨平台的使用,不管mac还是windows平台;
5、支持分享作品给团队成员或好友,无论何时何地都可以对作品进行编辑、阅读和评论;

用过这个作图之后,感觉不错,很方便。
拿出我做的图欣赏一下

注册地址:www.processon.com

刚注册只能在线保存9张图,可以通过推荐注册,增加一定的保存量,希望有所帮助。