显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

悠闲の架构师

 
 
 
 
 
 

北京市 海淀区 天蝎座

 发消息  写留言

 
博客等级加载中...
今日访问加载中...
总访问量加载中...
最后登录加载中...
 
 
 
 
 

我的开源项目

 
 
模块内容加载中...
 
 
 
 
 

可爱的小鼠

 
 
模块内容加载中...
 
 
 
 
 

日志分类

 
 
日志分类列表加载中...
 
 
 
 
 

摄影组图

 
 
数据加载中...
 
 
 
 
 
 

小铺子

 
 
模块内容加载中...
 
 
 
 
 
 
 

[软件结构]一种使用 JSON 描述接口参数的方法

2018-5-18 18:00:12 阅读43 评论0 182018/05 May18

接口参数本质上可以描述成K-V的Map结构,其中Key是参数的名称,V是参数的值。

参数值可以分为三种:基本值(value)、数组值(array)、Map值(map)。

基本值指的是 int,string 等;Map指的是 object 等;

一般情况下数组元素值的类型只有一种,但当数组元素值的类型是 object 的时候很有可能包含多种。

参数值为基本值时可以用如下结构描述:

"param1": {

"tip": "参数1",

"type": "value"

}

参数值为Map值时可以用如下结构描述:

"param2": {

"tip": "参数2",

"type": "map",

"child": {

"param2_1": {

"tip": "参数2_1",

"type": "value"

}

}

}

参数值为数组值时可以用如下结构描述:

当数组元素的类型为基本值时

"param4": {

"tip": "参数4",

"type": "array",

"child_type": "value"

}

当数组元素的类型为Map值时

"param5": {

"tip": "参数5",

作者  | 2018-5-18 18:00:12 | 阅读(43) |评论(0) | 阅读全文>>

[软件架构]基于角色的链式调用流设计

2018-5-4 18:30:29 阅读27 评论0 42018/05 May4

将http调用封装成一个个python函数,并按照功能和模块将这些python函数划分为不同的角色,然后用户可以创建相同或不同角色的多个对象,并组合这些对象的动作构成一条调用链。

为了使数据可以在调用链上流转,每个角色对象都包含了一个变量池,这个变量池可以保存用户从当前角色对象的动作结果中提取的值,同时也可供其他角色对象查询当前变量池下的值。

作者  | 2018-5-4 18:30:29 | 阅读(27) |评论(0) | 阅读全文>>

最近遇到了一个非常恶心的问题,"IDEA 只能将 pCancelOrderFromArk.php 使用文本格式打开,不能显示语法高亮和代码格式化等,但是其他的 php 文件可以,而且将此文件重命名为 PCancelOrderFromArk.php 也可以"。一开始以为是 .idea 目录下的文件在搞鬼,然后查看了 .idea 目录下的所有文件,没有找到可能引起这个问题的原因。然后同事也 checkout 了这个文件,在他的 IDEA 下没有问题,然后我删除了整个项目目录,重新加载项目,问题仍然存在。最后只能怀疑我本机的 IDEA 配置出了问题,但是为了找到 IDEA 的配置目录仍然花费了很长时间。

解决方案:

1. 找到 mac 系统下 IntelliJ Idea 的配置目录,使用搜索命令 "sudo find / -name "*IntelliJ*" > ~/a.txt",搜索结果如下:

    /Users/didi/Library/Application Support/IntelliJIdea2017.3

    /Users/didi/Library/Application Support/IntelliJ IDEA

    /Users/didi/Library/Preferences/IntelliJIdea2017.3

    /Users/didi/Library/Logs/IntelliJIdea2017.3

作者  | 2018-3-29 14:32:19 | 阅读(56) |评论(0) | 阅读全文>>

[Python]类装饰器和类函数装饰器

2018-3-26 16:55:35 阅读39 评论0 262018/03 Mar26

类装饰器比类函数装饰器执行要晚,而且本质上类函数就是一个固定了第一个参数的普通函数,所以装饰器获得的类函数类型不包含类的信息。

@role("司机")

class Driver(DiConfig):

@action('司机登录', ['ticket'])

def login(self, phone):

return passport.login(phone, 2)

作者  | 2018-3-26 16:55:35 | 阅读(39) |评论(0) | 阅读全文>>

[JS/React]JS循环 for … of 和 for … in 的区别

2018-3-19 14:19:38 阅读22 评论0 192018/03 Mar19

在JS中,for … in 循环遍历的是对象的属性名称,当遍历数组时则是数组索引。而 for … of 循环遍历数组时会输出数组内容。

var arr=[1,2,3,4,5,6]; for(var value of Arr){ console.log(value); }

//输出 1 2 3 4 5 6

var arr=[1,2,3,4,5,6]; for(var i in arr){ console.log(arr[i]); }

//输出 1 2 3 4 5 6

作者  | 2018-3-19 14:19:38 | 阅读(22) |评论(0) | 阅读全文>>

[Python]巧用装饰器解决跨域问题

2018-3-16 14:28:53 阅读23 评论0 162018/03 Mar16

废话不多说,直接上代码:

# 解决跨域问题的装饰器,装饰器函数的定义和普通函数无甚区别,只是仅有一个表示被装饰方法的参数而已。 # 装饰器函数的返回值必须是一个和被装饰函数类型相同(放宽一点的话也可以是兼容)的函数,也可以返回自身。

def allow_cross_domain(fun):

@wraps(fun)

def wrapper_fun(*args, **kwargs):

result = fun(*args, **kwargs)

resp = make_response(json.dumps(result))

resp.headers['Access-Control-Allow-Origin'] = '*'

resp.headers['Access-Control-Allow-Methods'] = 'PUT,GET,POST,DELETE'

allow_headers = "Referer,Accept,Origin,User-Agent"

resp.headers['Access-Control-Allow-Headers'] = allow_headers

return resp

return wrapper_fun

# 使用@符号可以调用装饰器函数,装饰器函数是在这段代码被解释的时候自动执行的。

作者  | 2018-3-16 14:28:53 | 阅读(23) |评论(0) | 阅读全文>>

[Java/Web]前端跨域问题解决方案

2018-3-16 14:09:52 阅读16 评论0 162018/03 Mar16

不知道是第几次遇到前端跨域的问题了,每次都要折腾一阵子才找到解决方案,是时候记录一下了!!解决这个问题其实很简单,只需要服务器在每条请求的response的header里面加入跨域控制选项。常见的有下面三项:

Access-Control-Allow-Origin: * Access-Control-Allow-Methods: PUT,GET,POST,DELETE Access-Control-Allow-Headers: Referer,Accept,Origin,User-Agent

务必要记住的是,浏览器的错误提示并不能指示解决方案,而且可能有误导的嫌疑!记住,只需要修改服务器即可!!

典型的跨域错误信息如下:

No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'http://localhost:3000' is therefore not allowed access.

作者  | 2018-3-16 14:09:52 | 阅读(16) |评论(0) | 阅读全文>>

查看所有日志>>

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018

注册 登录  
 加关注