个人日常api-project使用样例
meavn仓库地址
api-project-mvn-rep
https://raw.github.com/ccycc88/mvn-repo/master/
true
always
meavn依赖
com.api
api-project
0.0.1-SNAPSHOT
接口签名主要用于服务对外提供接口的一种安全认证。服务端为需要接口访问应用提供唯一的appId与appId对应的keyt。
应用请求服务端接口需要依据约定算法协议生成对应的签名串。服务端接收到请求参数,依据appId及对应的keyt和参与签名的参数进行认定。
Map<String, String> m = Maps.newHashMap();
m.put("34567", "345");
m.put("fh", "2345");
m.put("kl", "457");
String keyt = "keyt23";
String sign = ApiSignUtil.buildSign(m, keyt);
Map<String, String> m = Maps.newHashMap();
m.put("34567", "345");
m.put("fh", "2345");
m.put("kl", "457");
m.put("sign", "3529D3639A445BBC9A7EFCC30543F5F5");
String keyt = "keyt23";
boolean succ = ApiSignUtil.validateSign(m,keyt);
为了应用执行效率,及缓存不可缺少的业务场景。缓存工厂通用管理缓存工具,使代码整洁易懂。在缓存的实现中你可以使用redis,memorycache或集合等待。
当然缺少不了他的老朋友自动更新。
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.locks.ReentrantLock;
import com.google.common.collect.Maps;
public class RuleCache extends Cache{
private static final String CACHE_PREFIX = "rule";
//保存的缓存
private Map<String, Map<String, String[]>> rcache = Maps.newHashMap();
private ReentrantLock lock = new ReentrantLock();
//初始化缓存
@Override
public void init() {
// TODO Auto-generated method stub
rcache.put("",null);
}
//用于周期性刷新缓存
@Override
public void refresh() {
// TODO Auto-generated method stub
lock.lock();
try {
rcache.clear();
rcache.put("ddd", null)
} finally {
// TODO: handle finally clause
lock.unlock();
}
}
//重写该方法用于判断是否存在
@Override
public boolean exist(String... key) throws Exception {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean exist(String hkey, String... key) throws Exception {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean exist(String[] hkeys, String... key) throws Exception {
// TODO Auto-generated method stub
return false;
}
//重写该方法用于判断是否存在某值
@Override
public boolean existObject(String obj, String... key) throws Exception {
// TODO Auto-generated method stub
return false;
}
@Override
public boolean existObject(String[] objs, String... key) throws Exception {
// TODO Auto-generated method stub
return false;
}
//查询某key对应的值
@Override
public <T> T get(Class<T> clz, String... key) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public <T> T get(Class<T> clz, String hkey, String... key) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public <T> T get(Class<T> clz, int index, String... key) throws Exception {
// TODO Auto-generated method stub
return null;
}
//删除key对应的缓存
@Override
public void delete(String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void delete(String hkey, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void delete(String[] hkeys, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void deleteObject(String obj, String... key) throws Exception {
// TODO Auto-generated method stub
}
//删除缓存中的某数据
@Override
public void deleteObject(String[] objs, String... key) throws Exception {
// TODO Auto-generated method stub
}
//向缓存中插入数据
@Override
public void put(String value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(TimeUnit unit, long expire_in, String value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(Map<String, String> value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(String hkey, String value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(TimeUnit unit, long expire_in, String hkey, String value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(TimeUnit unit, long expire_in, Map<String, String> value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(List<String> value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(TimeUnit unit, long expire_in, List<String> value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(Set<String> value, String... key) throws Exception {
// TODO Auto-generated method stub
}
@Override
public void put(TimeUnit unit, long expire_in, Set<String> value, String... key) throws Exception {
// TODO Auto-generated method stub
}
//通过正则匹配对应key
@Override
public String[] keys(String pattern) throws Exception {
// TODO Auto-generated method stub
return null;
}
public String buildkey(String... key) {
return CACHE_PREFIX.concat(":").concat(key[0]);
}
}
Cache cache = CacheFactory.getInstance(RuleCache.class).getCache();
//为缓存设置自动刷新周期(单位秒)
CacheFactory.getInstance(RuleCache.class).setDelay(20l);
//开启缓存自动刷新
AutoUpdater.getInstance().automaticUpdate();
Ctrl + B
Ctrl + I
Ctrl + Q
Ctrl + L
Ctrl + K
Ctrl + G
Ctrl + H
Ctrl + O
Ctrl + U
Ctrl + R
Ctrl + Z
Ctrl + Y
Markdown 是一种轻量级标记语言,它允许人们使用易读易写的纯文本格式编写文档,然后转换成格式丰富的HTML页面。 —— [ 维基百科 ]
使用简单的符号标识不同的标题,将某些文字标记为粗体或者斜体,创建一个链接等,详细语法参考帮助?。
本编辑器支持 Markdown Extra , 扩展了很多好用的功能。具体请参考Github.
Markdown Extra 表格语法:
项目 | 价格 |
---|---|
Computer | $1600 |
Phone | $12 |
Pipe | $1 |
可以使用冒号来定义对齐方式:
项目 | 价格 | 数量 |
---|---|---|
Computer | 1600 元 | 5 |
Phone | 12 元 | 12 |
Pipe | 1 元 | 234 |
###定义列表
Markdown Extra 定义列表语法:
项目1
项目2
: 定义 A
: 定义 B
定义 C
定义 D
定义D内容
代码块语法遵循标准markdown代码,例如:
@requires_authorization
def somefunc(param1='', param2=0):
'''A docstring'''
if param1 > param2: # interesting
print 'Greater'
return (param2 - param1 + 1) or None
class SomeClass:
pass
>>> message = '''interpreter
... prompt'''
###脚注
生成一个脚注1.
用 [TOC]
来生成目录:
使用MathJax渲染LaTex 数学公式,详见math.stackexchange.com.
x = − b ± b 2 − 4 a c 2 a x = \dfrac{-b \pm \sqrt{b^2 - 4ac}}{2a} x=2a−b±b2−4ac
更多LaTex语法请参考 这儿.
可以渲染序列图:
或者流程图:
即使用户在没有网络的情况下,也可以通过本编辑器离线写博客(直接在曾经使用过的浏览器中输入write.blog.csdn.net/mdeditor即可。Markdown编辑器使用浏览器离线存储将内容保存在本地。
用户写博客的过程中,内容实时保存在浏览器缓存中,在用户关闭浏览器或者其它异常情况下,内容不会丢失。用户再次打开浏览器时,会显示上次用户正在编辑的没有发表的内容。
博客发表后,本地缓存将被删除。
用户可以选择 把正在写的博客保存到服务器草稿箱,即使换浏览器或者清除缓存,内容也不会丢失。
**注意:**虽然浏览器存储大部分时候都比较可靠,但为了您的数据安全,在联网后,请务必及时发表或者保存到服务器草稿箱。
##浏览器兼容
这里是 脚注 的 内容. ↩︎