GitLab Pages 搭建Hexo教程

大部分情况下,都是github pages与hexo组合搭建静态博客。但不可否认的是,这样存在一些问题。比如,每次文章写完都需要要编译,才能上传,如果我仅仅想写个博客,这样的操作显得繁琐。又比如,你拥有多台电脑的情况,你需要在每台电脑上都配置一样的环境。

所以通过持续集成CI/CD的方式,让编译自动化,是一种很不错的解决方案。这里将介绍gitlab-ci来简化环境的搭建与编译过程。当然静态资源将托管在gitlab-pages上。

There is also a tutorial in English

Dart之环境搭建

Dart 是一种易学习、易扩展、跨平台的编程语言。

  • 易学习:语法感觉很熟悉,语义是干净和一致的。是Java与Javascript的结合体。
  • 易扩展:仅谷歌就有超过200万行的生产Dart代码。应用程序可以达到数十万行代码。
  • 跨平台:Dart可以在每一个现代浏览器、命令行、服务器和移动设备上快速运行。

Google 在大型项目中部署使用 Dart。例如,下一代的AdWords (谷歌最重要的赚钱应用)运行在Dart上。

Java ProjectReactor框架之Flux篇

Spring5现处在第四个预发布版,正式版将要发布了,它带来的一大特性就是响应式框架Spring WebFlux。默认使用ProjectReactor框架。因此。本文通过ProjectReactor中的Flux,来学习使用该框架,以及了解其传递的思想。

本文基于Reactor3.1 rc1

Reactor官方地址http://projectreactor.io/,官方文档写的十分详细,如果您有不错的英文能力,建议直接阅读官方文档。

Spring Data Jpa与Mybatis的选择

看了会jpa的文档,感觉挺不错的,如果都是增删改和简单查询,那基本就不用写sql,同时数据库也交由jpa管理,省心。
当然jpa也绝对不全是优点,当默认的规范生成sql不能满足我们的业务的时候。mybatis直接写sql更简单,更易实现。而且,我们也可以更好的调整sql以提升性能(sql的调优后,性能成倍提高的)。

那么,他们之间改怎么选择呢

Shiro拦截器与过滤器

这篇是对 开涛的《跟我学shiro》 的部分章节补充,更详细的探讨shiro的过滤器和拦截器

拦截器与过滤器定义

  • 过滤器是一个程序,它先于与之相关的servlet或JSP页面运行在服务器上。它依赖于servlet容器。
  • 拦截器,在AOP(Aspect-Oriented Programming)中用于在某个方法或字段被访问之前,进行拦截然后在之前或之后加入某些操作。拦截是AOP的一种实现策略。

在shiro中存在下图关系
shiro

写给我的朋友,Java学习之路

最重要的

选择程序猿,便意味着你始终要学习。如果说想着看完这里的全部,就能靠这混吃一辈子,那还是放弃把。
这里是我的曾今学习的方式,但我的学习方法可能不是很适合你。所以我只当只领路羊,接下来的学习,都得靠你自己。
加油!

Git教程

先推荐三篇教程,帮助大家快速熟悉,最好按顺序学习~

廖雪峰老师的git教程

这篇教程,百度搜git教程第一篇就是,廖雪峰老师讲的很清楚,非常适合新人学习及了解概念

https://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/

idea里git实战

这篇讲idea中git的可视化操作。大部分时间,我们使用git都是可视化的,概念清楚的情况下,放心用

http://blog.csdn.net/autfish/article/details/52513465

Java设计模式之建筑者模式.

初看java设计模式-建造者模式时,肯定有和我一样有疑惑的。网上的例子几乎都一样,但是却没new xxx.Builder().buildxx().buildxx()…这样的。那么我今天来讲讲这种建造者模式的实现。

首先按照我的惯例,先给例子后解说

例子

Product.java

Java动态代理小例子.

例子

1,先创建teacher接口

1
2
3
public interface Teacher {
void manageWork(String s);
}

2,创建teacher实现类

1
2
3
4
5
6
7
8
9
public class TeacherA implements Teacher {

@Override
public void manageWork(String s) {
// TODO Auto-generated method stub
System.out.println(this.getClass().getSimpleName()+"开始布置作业:"+s);
}

}