0%

1.protobuf简介

  Protobuf是一个灵活的、高效的用于序列化数据的协议。相比较XML和JSON格式,protobuf更小、更快、更便捷。Protobuf是跨语言的,并且自带了一个编译器(protoc),只需要用它进行编译,可以编译成Java、python、C++等代码,然后就可以直接使用,不需要再写其他代码,自带有解析的代码。一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一。   

2.安装插件

在idea里安装插件Protobuf Support

3.配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-netty</artifactId>
<version>${grpc.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-protobuf</artifactId>
<version>${grpc.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>io.grpc</groupId>
<artifactId>grpc-stub</artifactId>
<version>${grpc.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>${protobuf.version}</version>
</dependency>
1
2
3
4
5
6
7
<extensions>
<extension>
<groupId>kr.motd.maven</groupId>
<artifactId>os-maven-plugin</artifactId>
<version>1.5.0.Final</version>
</extension>
</extensions>
阅读全文 »

1.背景

  近期公司源代码管理工具从svn转向git,因此要在服务器上部署gitlab,总共部署了两台服务器,一台是Ubuntu server 17.04,一台是Centos7。在部署的过程中遇到不少问题,发现Linux里通过命令直接去Gitlab官网上下载程序根本不能成功,不管是在Ubuntu还是Centos上。后来只能去Gitlab官网手动下载安装包,然后再去Linux里通过命令去执行才能安装。

2.软件下载

2.1 Gitlab官网

  官网地址:https://about.gitlab.com/downloads/

2.2 镜像站

  软件地址:https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/ubuntu/pool/xenial/main/g/gitlab-ce/
但是有时候镜像站也会打不开,但是速度肯定要比官网快多了。

阅读全文 »

1.背景

服务器:ubuntu server 17.04

安装方式:apt-get

2.实现

  • 执行命令:
1
$ apt-get update
  • 执行命令:
阅读全文 »

1.背景

  服务器上安装了最新的Ubuntu Server 17.04,代号为zesty。使用apt-get命令安装软件时,有时候速度比较慢,有时候会失败。因此考虑用国内的镜像源更换下apt-get的默认源。

2.实现

  • 编辑源文件,vim /etc/apt/sources.list

  • 使用网易apt-get源,将原来的源地址,替换为如下,由于服务器的版本是17.04,因此源地址的代号部分都是zesty,如果是其他版本,可以替换为对应的版本,具体版本代号可以网上查找。

1
2
3
4
5
6
7
8
9
10
deb http://mirrors.163.com/ubuntu/ zesty main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-security main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-updates main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-proposed main restricted universe multiverse
deb http://mirrors.163.com/ubuntu/ zesty-backports main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-security main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-updates main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-proposed main restricted universe multiverse
deb-src http://mirrors.163.com/ubuntu/ zesty-backports main restricted universe multiverse
  • 执行apt-get update,apt-get upgrade,会发现会报错,apt-get: Could not resolve ‘mirrors.163.com’的错误,这种原因其实是因为还缺少一个步骤,就是将添加的网址和IP进行映射,修改/etc/目录下的host文件。

  • 通过ip.chinaz.com进行查询网址“mirrors.163.com”,对应的ip地址如下所示,然后将其添加到hosts文件里。

1
2
123.58.190.228     mirrors.163.com
123.58.190.236 mirrors.163.com
阅读全文 »

1.常用指令

(1)切换用户: su 用户名

(2)默认切换到root用户: su

(3)回到根目录:cd /

(4)进入某个目录:cd /usr/

(5)回到上级目录:cd ..

(6)自动补齐目录文件名 Tab键

阅读全文 »

1.背景

近期在本地的虚拟机VMware上安装了Ubuntu Server 17.04,由于系统是无界面的,所有操作都需要通过Linux命令进行操作。后来不想直接在服务器上操作,想通过远程工具Xshell去访问Linux系统。却发现根本连接不上。后来查资料,原来需要在Ubuntu上安装SSH协议软件,因为Ubuntu默认是不安装SSH服务的。安装了SSH服务后发现其他用户可以通过Xshell远程访问了,root用户访问会报密码被拒绝的错误,上网查资料,发现Ubuntu默认是不开启root远程登录的,需要设置一下。

2.实现

2.1 检查是否开启SSH服务

命令:

1
ps -e|grep ssh

查看SSH服务是否开启,或者通过命令:

阅读全文 »

1.devtools

spring为开发者提供了一个名为spring-boot-devtools的模块来使Spring Boot应用支持热部署,提高开发者的开发效率,无需手动重启Spring Boot应用。

2.项目搭建

本文是采用IDEA搭建的Spring Boot应用,通过spring-boot-devtools配置,可以支持修改java文件会自动重启程序,一些资源无需触发重启,例如thymeleaf模板文件就可以实时编辑。默认情况下,更改/META-INF/maven,/META-INF/resources ,/resources ,/static ,/public 或/templates下的资源不会触发重启,而是触发livereload。devtools模块包含一个嵌入的livereload服务器,可以在资源变化时用来触发浏览器刷新。浏览器需要在livereload.com下载安装扩展。 例如Chrome浏览器在应用商店安装livereload插件后,在要自动刷新的页面点击对应的图标,启动应用后更新页面内容或者css等都会触发页面自动刷新。

3.livereload

livereload 通过引入的脚本livereload.js在 livereload 服务和浏览器之间建立了一个 WebSocket 连接。每当监测到文件的变动,livereload 服务就会向浏览器发送一个信号,浏览器收到信号后就刷新页面,实现了实时刷新的效果。每次启动时,需要点击对应的图标,如下图所示。

clipboard.png

阅读全文 »

1.JMS简介

Java消息服务(Java Message Service)即JMS,是一个Java平台中关于面向消息中间件的API,用于两个程序之间,或分布式系统中发送消息,进行异步通信。
JMS包括队列与主题两种模式,一种是点对点的Queue,还有一个是发布订阅的Topic方式。区别在于:

  1. 对于Queue模式,一个发布者发布消息,下面的接收者按队列顺序接收,比如发布了10个消息,两个接收者A,B那就是A,B总共会收到10条消息,不重复。
  2. 对于Topic模式,一个发布者发布消息,有两个接收者A,B来订阅,那么发布了10条消息,A,B各收到10条消息。
  3. 消息中间件

2.消息中间件的用途和优点

  1. 将数据从一个应用程序传送到另一个应用程序,或者从软件的一个模块传送到另外一个模块;
  2. 负责建立网络通信的通道,进行数据的可靠传送;
  3. 保证数据不重发,不丢失 ;
  4. 能够实现跨平台操作,能够为不同操作系统上的软件集成技工数据传送服务。

3.ActiveMQ

ActiveMQ 是Apache出品,最流行的,能力强劲的开源消息总线。ActiveMQ 是一个完全支持JMS1.1和J2EE 1.4规范的 JMS Provider实现,尽管JMS规范出台已经是很久的事情了,但是JMS在当今的J2EE应用中间仍然扮演着特殊的地位。

阅读全文 »

1.JPA

JPA(Java Persistence API)是Sun官方提出的Java持久化规范。它为Java开发人员提供了一种对象/关联映射工具来管理Java应用中的关系数据。他的出现主要是为了简化现有的持久化开发工作和整合ORM技术,结束现在Hibernate,TopLink,JDO等ORM框架各自为营的局面。值得注意的是,JPA是在充分吸收了现有Hibernate,TopLink,JDO等ORM框架的基础上发展而来的,具有易于使用,伸缩性强等优点。JPA是一套规范,不是一套产品,那么像Hibernate,TopLink,JDO他们是一套产品,如果说这些产品实现了这个JPA规范,那么我们就可以叫他们为JPA的实现产品。

2.项目搭建

本文采用IDEA搭建Spring Boot的JPA应用,Demo结构图如下:

jpa-1.png

3.具体实现

3.1 配置文件

阅读全文 »

一、项目打包

项目开发结束后,需要打包部署到外部服务器的Tomcat上,主要有几种方式。

1.1 生成jar包

  • cd 项目跟目录(和pom.xml同级)
1
mvn clean package

排除测试代码后进行打包

1
mvn clean package  -Dmaven.test.skip=true
阅读全文 »