centos7 搭建 openvpn 服务器(使用账号和密码方式)

openvpn是一款提供与企业与个人之间创建虚拟专用网络安全数据传输通道的软件,可以搭建类似局域网的专用通道

有感

打开博客,发现好久没有写过博客了,本来有很多东西在脑海里的,但有很多事整理起来费劲,有些是知识点流程需要搭建环境繁杂渐渐地就懒得写了,但慢慢的这些记忆在某一天就消失了,只记得曾经知道过那么个东西,如果后面遇到问题了,也同样能通过google再次找回来,但当别人问我某个问题的时候,我才发现,没有深深巩固的记忆,那种知道他,但脑海里实在很模糊的感觉真的很难受,所以以后还是坚持把写博客的习惯找回来

Hexo简洁主题推荐分享

Maupassant是Cho为typecho平台设计的一套响应式模板,其简洁的风格让很多人喜爱,在没有被扩展其他功能的情况下整个模板本身小巧到只有几十KB,因此访问速度也可观

Hexo Maupassant博客主题

Integer与int的种种比较

如果别人问Integer和int的区别是什么?
可能很多人很自然的就想到了以下两点:
1、Integer是int的包装类
2、int的初始值为0,Integer的初始值为null

但是,如果别人在问一下
Integer i1 = 1;
int i2 = 1;
i1==i2 为true还是false?

Integer i3 = 1;
Integer i4 = 1;
i3==i4 为true还是false?

要求解释一下,为什么会是这个结果,可能会有一些人脑袋就有点懵,虽说这很基础,但很多人没有这么深入研究过,这里对他进行一下总结;

理解clone()方法如何使用

在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的

于是,在这种情况下,clone就可以派的上用场了

将静态文件缓存到html5的localStorage,给网站加速

html5中的Web Storage包括了两种存储方式:sessionStorage和localStorage。sessionStorage用于本地存储一个会话(session)中的数据,这些数据只有在同一个会话中的页面才能访问并且当会话结束后数据也随之销毁

本文要说的是html5的localStorage本地储存方式,localStorag可以说是cookie的一个加强版,相比localStorag来说,cookie的限制太多,限制大小4K,并在某些浏览器下还有域名限制;好的是现在html5提供的localStorag比较牛*,有5M的大小,因此爱折腾的小伙伴可以用它来做一些有意思东西

使用localStorage(本地缓存)的优缺点:
优点:

  • 用于持久化的本地存储,除非主动删除数据,否则数据是永远不会过期的
  • 可以通过chrome浏览器Resources/Local Storage来查看
  • 容量大,易用,原生支持

缺点:

  • 兼容性问题(IE8以下的版本不支持)
  • 安全性问题,不适用于保存敏感的数据

对于本文要做的事情就是把js和css静态文件保存到本地储存,所以在我们眼里,缺点基本上可以忽略不计

使用token实现在有效期内APP自动登录功能

实现此功能的场景是在当下用户对手机APP体验要求高,并且相对安全前提的推动下诞生;当你下载了一个QQ,微信第一次进行了账号和密码的登录,你从此以后打开应用免去了你每日打开应用都要输入账号跟密码的痛苦过程,在产品体验方面来讲,这种体验更为让用户容易接受。那么,这种自动登录如何实现;

Java设计模式之 - 单例模式

单例模式(Singleton Pattern)是Java中最简单的设计模式之一,这种类型的设计模式属于“创建者”模式

介绍

概述:单例模式的意思就是只有一个实例。单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类
作用:Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在
注意点:构造函数是私有的,避免外界利用构造方法直接创建出实例
使用场景:

  • 1、要求生成唯一的序列号
  • 2、web中的计数器,不用常去数据库更新,可以先用单例缓存起来
  • 3、创建对象比较耗资源的操作,比如 I/O 与数据库的连接
  • 4、web中的共享的资源配置对象读取也可以用单例
    等等……

构造器Constructor是否可被Override?

构造器Constructor不能被继承,所以不能被重写,不过他可以被重载Overload

钻了一个牛角尖,构造器为什么不能被继承呢?
在解释构造器Constructor为什么不能被继承和重写之前,我们先来了解构造器的概念。构造器在程序语言中是为了创建一个类的实例,如:Student stu1= new Student(),这就是创建了一个类的实例,同时也生成了一个构造器。构造器也分为有参数的和无参数的,上面的例子是无参的,Student stu2 = new Student(“李四”,28),这是有参的构造器。

Java三大特性之多态

面向对象编程有三大特性:封装、继承、多态。

封装隐藏了类的内部实现机制,可以在不影响使用情况下改变类的内部结构,同时也保护了数据,对于外界而言他的内部细节是隐藏的,暴露给外界的只是他的访问方法

继承所描述的是“is-a”(是一个,说明该类是某类的一个特殊例子)的关系,如果有两个对象A和B,若可以描述为“A是B”,则可以表示 A 继承 B,其中 B 是被继承者称之为父类或者超类,A 是继承者称之为子类或者派生类。

多态成立的三个条件
1.继承
2.子类重写父类方法
3.父类引用指向子类对象
用简述的话说就是:继承、重写、向上转型

从某一个角度来讲,封装和继承都相当于是为多态而做准备
多态应用的一大前提是继承,以及继承里面的重写方法;继承的一大前提是封装,及封装里面涉及到重要知识点方法重载