使用moco搭建mockserver

下载 moco-runner-standalone
http://central.maven.org/maven2/com/github/dreamhead/moco-runner/0.12.0/moco-runner-0.12.0-standalone.jar

如果我们想实现如下的情况,

1. 请求http://localhost:port/we/bobemockedapi 时 我们自定义mock 返回数据

2. 如果请求http://localhost:port/we/* (* 除了 /we/bobemockedapi ) 其他的均自动反向代理到 另外一个服务器 http://realserver/

3. 如果没有匹配到任何规则, 则走默认的mock数据返回。 返回 {“mockserver”:”this is the default response by mock server”}
更多…

git撤回一个merge提交

git撤回一个merge提交的时候, git revert [commit-id] 有时提示如下错误

fatal: Commit is a merge but no -m option was given

git 撤销一个merge操作的提交时,会拒绝,并提示如上的错误提示。 因为merge操作是将revisionA merge revisionB, 如果我们revert这个合并操作, 那么我们将当前的版本是恢复到 revisionA 还是 revisionB呢? 这里有歧义,所以git是不允许操作,需要提供-m 参数。
-m的参数含义是,指定我们要撤回后回到merge提交的父版本?


#d636d92037f7c0e12b7c0b798837dafe5037818e 是我们要撤销的某个提交id。
$git cat-file -p d636d92037f7c0e12b7c0b798837dafe5037818e
tree cc10a8c72d0af9ea545a0a68d6d47814e9f7fdf8
parent 2042d9ae223635ea26fb99579b7461e984e3d8cd #如果我们要回到此parent版本,则-m 1
parent fb05c12ba11962421a6be93cf6fcfc4b7758302b #如果我们要回到此parent版本, 则-m 2
author unknown 1536663870 +0800
committer unknown 1536663870 +0800
encoding GB2312

Merge branch 'master' of http://x.x.x.x:port/scm/ibg/ibg_test

#假设我们要回到fb05c12ba11962421a6be93cf6fcfc4b7758302b 此版本。
$git revert d636d92037f7c0e12b7c0b798837dafe5037818e -m 2
[master 67ca87f] Revert "Merge branch 'master' of http://x.x.x.x:port/scm/ibg/ibg_test"
2 files changed, 1 insertion(+), 10243 deletions(-)

利用Kong(api网关)打造mock服务器和反向代理服务器于一体

Kong 是一个http api网关,基于openresty。
kong 官网地址: https://konghq.com/

首先我们先安装Kong,为了快速的开始,使用docker来进行安装。 (如果没有安装docker,请先搜索并安装docker 引擎)
更多…

https ssl证书是如何工作的

今日通过cloudflare将www.hissummer.com下网站全部配置加载了https证书,保证了用户访问的安全性。

浏览器是如何检查https ssl证书是否有效呢?

我们可以使用如下在线工具来查看工作过程。 https://www.sslshopper.com/ssl-checker.html

打开后,输入www.hissummer.com

  • www.hissummer.com resolves to 104.31.74.1  解析ip地址
  • Server Type: cloudflare  服务的类型,是谁提供的服务。 我们使用了cloudflare的cdn服务,所以这里返回的是cloudflare
  • The certificate should be trusted by all major web browsers (all the correct intermediate certificates are installed).  检查证书的证书链是否都是授信的。(发现均已安装)
  • The certificate was issued by Comodo.   证书的发行方
  • The certificate will expire in 174 days.  证书的有效期
  • The hostname (www.hissummer.com) is correctly listed in the certificate.   www.hissummer.com 是在证书里所列出的有效域名。

所以这时候我们的浏览器的地址栏上,就会有一把绿色的锁标志,代表着我们的网站是安全的。

备注: 关于混合内容的问题,如果我们的https 的网站里面又请求了http的一些资源,那么浏览器仍然会认为是不完全安全的。

https访问网站浏览器取消谷歌广告联盟请求问题解决

Mixed Content: The page at 'https://blog.hissummer.com/2017/12/%e8%8e%b7%e5%8f%96spring%e6%89%80%e6%9c%89propertysources%e5%92%8ckey-value/'
 was loaded over HTTPS, but requested an insecure resource 'http://www.hissummer.com/images/adshtml/ads-do.html'. This request has been blocked;
 the content must be served over HTTPS.

更多…

如何加快maven编译速度

随着项目代码越来越多, 编译的速度也越来越慢。 为了提高编译效率,如何加快maven编译速度呢?

1) 并发编译

mvn -T 4 install  
mvn -T 1C install

-T 4 的含义是指定4个线程

-T 1C 的含义是一个cpu 内核开启一个线程 (如果我们有8核cpu可用,1个core一个线程, 则使用8个线程)

2)增加maven执行时的java 可使用内存大小

 

export MAVEN_OPTS="-Xmx3000m"

然后再执行mvn clean install 开始编译。

 

关于启动服务端口被占用但是查看该端口并没有被监听的情况

今天重新启动mysql服务的时候,提示3306端口被占用. 通过如下命令查看,发现并没有程序占用3306端口.

netstat -lnp | grep 3306  #通过netstat 命令查看

lsof -i:3306  通过lsof命令也可以查看使用3306 端口的句柄

但是都没有发现什么有用线索, 但是实际上重启mysql就是提示端口被占用

于是乎, 放大查找范围.  netstat -anp | grep 3306.  发现有一个tcp链接, 是established状态.  从本机的某个端口链接到了本地的3306端口.

更多…

前段跨域请求springboot application后台解决

当前端程序(js)跨域请求restful api 或者 资源时, 会先进行options请求,查看是否有权限。 如果有权限则会继续请求并获得服务器资源。
例如开发的vue spa, npm run dev后, 程序默认部署到了localhost(本地) 8080 端口下。 这时候我们调试前端程序访问一个其他的服务器资源,例如http://otherip/api, 因为otherip 不是localhost:8080 则浏览器会先进行一个options 方法的请求。 更多…

tomcat启动springboot application提示“LoggerFactory is not a Logback LoggerContext but Logback is on the classpath”

tomcat 部署springboot application后(打包成war包部署),提示如上错误。根据下面的堆栈错误原因, 可知slf4j 提供的LoggerFactory 并没有使用Logback 上下文, 但是logback的库被引入到了我们的工程里。 这时候springboot 应用启动的时候, spring框架广播了一个事件, LoggingApplicationListener 侦听到了该事件后,启动了检查工作,发现logback并没有启用, 报了如上错误。 查看如此解决办法可以想到有2个办法。 1)  移除logback 包 , 错误里也提示的比较明确, 使用默认的 log4j 管理日志打印。(因为错误已经明确提示告诉我们,org.apache.logging.slf4j.Log4jLoggerFactory 被默认加载了。 ) 2) 移除log4j , 让slf4j 使用logback 上下文。
更多…

vue iview ui 实现左侧menu菜单和tabs联动

想实现左侧menu菜单和tabs 联动, 因为对vue是初学不是特别熟悉, 还是折腾了好几天.   前些日期发现了iview ui, 感觉不错, 并不必bootstrap 差, 所以用iview 重新写了一个demo.  iview 貌似还是国人开发的, 值得推荐.

menu菜单和tabs的联动是指, 我在左侧点击某个菜单时, 右侧的tab页自动创建一个tab标签, 如果点击的该菜单已经存在于tab标签下, 则自动激活该标签显示该标签下内容.    标签下 面需要动态加载dynamic vue component 的内容.   单独的tab页,增加tab和移除tab 标签中并不复杂, 因为iview的tab 组件默认已经支持了.  所以我这里仅是实现menu和tab的联动.  menu 菜单点击后,  触发一个 select 操作,  那么我们需要获取tabs的component 设计activeKey即可实现.

更多…