设计模式:装饰器模式

装饰器模式主要解决要动态的给一个类添加一些新功能,而又不想让这个类变得庞大。 这种模式需要创建一个装饰类来包装扩展原有的类,并且在保证原有的类保持结构一致的前提下,提供额外的功能。 下面是给一个人装饰衣服…

设计模式:策略模式

在策略模式中,我们需要创建一系列策略对象和一个能随策略对象改变而改变的Context对象,策略对象改变Context的执行方法。 仍以两个数字的加减乘除操作作为示例 package strategy import "fmt" // Context 类 type Context struct { strategy Strategy } func NewContext(strategy Strategy) *Context {…

设计模式:简单工厂模式

这个系列是《大话设计模式》的读后感,将书中的设计模式用golang实现。 第一个设计模式是简单工厂模式,主要用到的知识点是类的多态。 多态表示不同的类可以执行相同的方法,但要通过它们自己的实现代码来执行。…

计算密集型 vs. IO密集型

计算密集型任务 计算密集型任务主要消耗CPU资源,需要进行大量的计算,如计算圆周率或对视频进行高清的解码等,全靠CPU的运算能力。 这种任务虽然可以利用多任务去完成,但是任务越多,花在任务切换上的时间就会…

去除CKFinder版权信息以及启用文件移动功能

最近在做毕业设计,使用到了CkEditor和CkFinder来做富文本编辑框以及文件管理。 因为CkFinder只能下载使用Demo版本,会有一些版权信息。 我不是用做商业目的,仅仅为了学习,所以想把版权信息去掉。 看了几篇博客,都是教你把alert框加上display:none,我考虑到这样并不好,因为如果有其他正常的信息也不能显示了,所以花了些时间改了下ckfinder.js,既去掉了版权信息,又不会影响其他信息的提示。

下文提供了两种方法,建议使用第二种。

如果你是用于商业目的,请到官网购买使用的License使用。

Shiro清除更新缓存的用户权限

Apache Shiro用于权限管理十分方便,但存在一个问题,就是当用户的权限发生变化的时候,就需要用户重新登录,重新缓存用户的权限信息。
现在想要在改变用户的权限的时候,清理用户的权限。
在写的过程中查找了一些资料,但是并没有成功实现权限的清理,所以我进行了一些修改,并实现了Helper类。

Grep, Sed, Awk 日常使用

grep

概述

在给出文件列表或标准输入后, grep会对匹配一个或多个正则表达式的文本进行搜索, 并输出匹配(或者不匹配)的行或文本.

使用格式

grep [options] PATTERN [FILE...]

常用选项

  • -i 忽略字符大小写
  • -v 显示未被模式匹配到的行或串
  • -o 只显示匹配到的串而不是整行
  • -n 显示匹配的行及行号
  • -E 使用扩展的正则表达式
  • -A n 显示出匹配到的行和后n行
  • -B n 显示出匹配到的行和前n行
  • -C n 显示出匹配到的行和前后各n行

扩展的正则表达式

扩展正则表达式与基础正则表达式的唯一区别在于: () {} ? + 这几个字符.

基础正则表达式中, () {} ? + 表示特殊含义,使用时需要将他们转义

而扩展正则表达式中, () {} ? + 不表示特殊含义, 你需要将他们转义.

转义符号, 都是一样的: 反斜线 \ .

所谓特殊含义, 就是正则表达式中的含义. 非特殊含义, 就是这个符号本身.