- 多智能体强化学习--理论与算法
还有你Y
机器学习深度学习强化学习算法
目录标题基础概念MADDPG的actor和critic网络actor网络:**critic网络:**MAPPO的actor和critic网络actor网络:critic网络:QMix(QMIX)VDN(ValueDecompositionNetworks)参考博士论文:基于强化学习的多智能体协同关键技术及应用研究基础概念在单个智能体与部分可观测环境的交互过程一般使用部分可观测马尔可夫决策过程(pa
- QTRAN算法总结
神奇的托尔巴拉德
论文原文:QTRAN:LearningtoFactorizewithTransformationforCooperativeMulti-AgentReinforcementlearning参考文章:(35条消息)多智能体强化学习(一)IQL、VDN、QMIX、QTRAN算法详解_小小何先生的博客-CSDN博客_iql算法QTRAN算法详解(VDN和QMIX的升级版本)-知乎(zhihu.com)到
- VDN
shuff1e
转载自:http://www.wangchao.net.cn/bbsdetail_1887550.html对于很多公司来说,他们都很希望可以对他们以安装在客户端的产品进行远程配置,以提高售后服务的效果,然而,客户端的防火墙往往不容许他们可以达到这个目标,致使这些公司流失不小的商机。这中间包含公司和客户之间的矛盾:公司需要客户开放防火墙以提供售后服务;客户希望拿到所后服务而不愿意打开防火墙,最后的结
- 协同多智能体学习的价值分解网络的原理与代码复现
丰。。
神经网络论文研读神经网络深度强化学习学习python开发语言
概念引入强化学习马尔可夫决策过程算法思想VDN可以说是QMIX算法的前身主要思想是把总的Q分解为多个Q之和,Q即对应智能体的动作价值即:视多为一但是也有副作用,那就是,累计出来的Q并不是针对具体情况,具体条件的Q,并没有具体意义。算法复现首先定义每个智能体的QLearner类,将默认参数初始化后,判断为VDN网络,则将self.mixer初始化为VDNMixer(),并将网络参数复制给self.o
- 多智能体强化学习之值函数分解:VDN、QMIX、QTRAN系列优缺点分析(转载)
难受啊!马飞...
强化学习人工智能强化学习
这个博客是转载网易伏羲实验室的博客,为了让自己能更详细的记住这个博客的内容,所以决定手动抄写一遍。考虑到一些道友的爱好,我会用一些比较诙谐的语言来形象的解释一些枯燥的学术定理。写在前面的个人总结一下:所谓的值函数分解,其实就是寻找到一个合理的方法来合理的,精确的表示每个独立agent的动作值QiQ_{i}Qi与中心网络中的QtotQ_{tot}Qtot之间的关系。因为多智能体强化学习模型训练参数是
- 从 VDN 到 QMIX的学习笔记
hehedadaq
论文阅读笔记DRLRL多智能体MARLRL强化学习深度强化学习
从VDN到QMIX的学习笔记文章目录从VDN到QMIX的学习笔记前言:参考链接:VDN的简介:1.研究背景2.MARL中的难点:2.1.部分可观察2.2.不稳定性3.为什么要进行值函数分解4.VDN算法的提出:5.VDN的总结:6.QMIX算法:6.1重新认识值函数分解6.2VDN的缺点6.3QMIX的思想6.4使用hypernetworks去利用全局状态s关于这段网络结构的分析:最后的总结:联系
- 【论文解读】VDN( Variational Denoising Network )变分去噪网络
G. Albert
CV机器学习计算机视觉
之前一直对各种机器学习算法的推导比较感兴趣,又希望了解一些机器学习和深度学习模型相结合的处理方法,最近看到的这篇文章就是一个比较好的例子。文章名为VariationalDenoisingNetwork:TowardBlindNoiseModelingandRemoval可从arXiv:1908.11314获取。一、背景知识介绍文章目的是图像盲去噪,首先进行了领域相关工作的总结,认为主要存在两种主流
- [经典论文分享]QMIX: 基于值学习的多智能体强化学习协作算法
普通攻击往后拉
RL-based文献阅读神经网络基础模型关键点强化学习导论
1背景在多智能体强化学习中有两个重要的问题,一是如何学习联合动作值函数,因为该函数的参数会随着智能体数量的增多而成指数增长;二就是学习到了联合动作值函数后,如何提取出一个合适的分布式的策略。这两个问题导致单智能体强化学习算法,如Q-learning,难以直接应用到多智能体系统中。Rashid提出了QMIX多智能体算法,基于Q-learning和VDN的启发,从上述两个问题角度提升marl算法的准确
- 多智能体强化学习入门QMIX
有一个进大厂的梦想
强化学习强化学习人工智能算法
多智能体强化学习入门QMIX引言Qmix是多智能体强化学习中比较经典的算法之一,在VDN的基础上做了一些改进,与VDN相比,在各个agent之间有着较大差异的环境中,表现的更好。1.IQL与VDNIQL(IndependentQ_Learning),是一种比较暴力的解决问题的方法,每个agent都各自为政,自己学习自己的,没有一个共同的目标。导致算法最终很难收敛。但是在实际一些问题中有不错的表现。
- 玩转星际争霸局部战斗 —— QMIX
ZiSeoi
强化学习整活小项目
这里写自定义目录标题写在前面QMIX论文解读多智能体的相关工作Dec-POMDPDRQNIQL(IndependentQ-Learning)VDN(ValueDecompositionNetworks)QMIXQMIX结构核心——单调性约束在aistudio上运行QMIX环境准备测试游戏环境QMIX代码部分执行部分定义agent网络结构Mixing网络定义策略与训练部分主函数部分(负责定义与调度)
- 多智能体强化学习——值分解方法理论及代码组件
qq_40831388
人工智能强化学习深度学习pythonpytorch
1.理论值分解方法是一种主流的多智能体强化学习解决方案。它使用集中式训练、分布式执行(CTDE)架构(在训练时能得到全局信息,在执行时只需要局部观测),解决部分可观测问题;使用局部动作值函数以一定规则约束(一般为IGM)来拟合全局动作值函数,解决信度分配问题。2.常见算法①VDN直接把局部值函数直接相加得到全局值函数[1706.05296]Value-DecompositionNetworksFo
- 多智能体强化学习—QMIX
Spgroc
强化学习python机器学习人工智能pytorch
多智能体强化学习—QMIX论文地址:https://arxiv.org/pdf/1803.11485.pdf1介绍 首先介绍一下VDN(valuedecompositionnetworks)顾名思义,VDN是一种价值分解的网络,采用对每个智能体的值函数进行整合,得到一个联合动作值函数。为了简单阐述考虑两个智能体:(o-observations,a-actions,Q-action-valuefu
- 多智能体强化学习算法整理
strawberry47
强化学习论文阅读人工智能深度学习机器学习
目录1.Policy-based:1.1MADDPG(NIPS2017):1.2COMA(AAAI2018):1.3MAPPO2.Value-based2.1VDN(AAMAS2018)2.2QMIX(ICML2018)模拟环境1.Policy-based:1.1MADDPG(NIPS2017):参考博客:多智能体强化学习算法【二】【MADDPG、QMIX、MAPPO】超级经典,是基于DDPG算法
- 【论文笔记】多智能体强化学习值分解基础论文5篇
邵政道
知识笔记论文笔记强化学习算法
文章目录引子IQLCOMAVDNQMIXQTRAN总结引子值分解可以说是解决多智能体强化学习的重要手段之一,本文主要涉及IQL、COMA、VDN、QMIX、QTRAN这五篇最经典的论文。本文大致介绍每种方法最核心的思想,具体细节请读原文。IQLMultiagentCooperationandCompetitionwithDeepReinforcementLearning,2015本文主要是基于Po
- 强化学习 | COMA
有一个进大厂的梦想
强化学习强化学习算法人工智能
强化学习|COMA引言在多agent的强化学习算法中,前面我们讲了QMIX,其实VDN是QMIX的一个特例,当求导都为1的时候,QMIX就变成了VDN。QTRAN也是一种关于值分解的问题,在实际的问题中QTRAN效果没有QMIX效果好,主要是QTRAN的约束条件太过于松散,导致实际没有理论效果好。但是QTRAN有两个版本,QTRAN_BASE和QTRAN_ALT,第二版本效果比第一要好,在大部分实
- 多智能体强化学习入门Qmix
行者AI
本文首发于:行者AIQmix是多智能体强化学习中比较经典的算法之一,在VDN的基础上做了一些改进,与VDN相比,在各个agent之间有着较大差异的环境中,表现的更好。1.IQL与VDNIQL(IndependentQ_Learning),是一种比较暴力的解决问题的方法,每个agent都各自为政,自己学习自己的,没有一个共同的目标。导致算法最终很难收敛。但是在实际一些问题中有不错的表现。VDN(Va
- 详解iOS11、iPhone X、Xcode9 适配指南
武小寺
作者:si1ence地址:https://mp.weixin.qq.com/s/g6MI7109vDN-11EO7cwza更新iOS11后,发现有些地方需要做适配,整理后按照优先级分为以下三类:单纯升级iOS11后造成的变化;Xcode9打包后造成的变化;iPhoneX的适配一、单纯升级iOS11后造成的变化升级后,发现某个拥有tableView的界面错乱,组间距和contentInset错乱,因
- 使用go读取gzip格式的压缩包的操作
我就废话不多说了,大家还是直接看代码吧~packagemain//引入所需包import("os""compress/gzip""io/ioutil""fmt")//gzip文件varfn="./113.200.251.66_1510825558_A6D39783B05943D8ACA64F397748CF1B_vdn.gz"funcmain(){println(fn)//打开本地gz格式压缩包f
- golang文件读取-按指定BUFF大小读取方式
a.txt文件内容:ABCDEFGHIHELLOGOLANGpackagemainimport("fmt""os""io")funcmain(){fileName:="C:\\Robert\\日志分析\\tools_go\\vdn_sqlInterface\\a.txt"file,err:=os.OpenFile(fileName,os.O_RDWR,0666)iferr!=nil{fmt.Pri
- Office2013秘钥
别逗了好么
随笔
9RN4T-JPBQV-XQMC9-PM9FP-PGWP9TKX7J-VDN26-Y2WKQ-7MG8R-X2CC9N9M8X-QDKGK-W27Q6-2GQYT-TJC9K4VNXV-F7PBY-GY8WK-2KYDD-B96YQHDN2D-VJPHH-D4P4K-BQ27R-BY28KOffice2013ProPlusMSDNRetailKeys:NFFT2-HWVWR-C934T-YM2VJ
- 使用go读取gzip格式的压缩包
robertkun
golang
go读取gzip格式的压缩包packagemain//引入所需包import("os""compress/gzip""io/ioutil""fmt")//gzip文件varfn="./113.200.251.66_1510825558_A6D39783B05943D8ACA64F397748CF1B_vdn.gz"funcmain(){println(fn)//打开本地gz格式压缩包fr,err:
- AVAYA基本命令
leovlys1
网络AVAYA基本命令服务器
AVAYA常用命令集(2007-05-1116:22:20)转载▼分类:其他知识常用操作动作:add添加change更改remove删除list列表status查看状态monitor监控常用操作对象:station分机agent-loginID座席工号hunt-group寻线组或技能组trunk-group中继组VDN虚拟引导号码vector虚拟引导路径编辑器ars设置外呼限制时使用例如:char
- golang文件读取-按指定BUFF大小读取
robertkun
golang
golang文件读取-按指定BUFF大小读取a.txt文件内容:ABCDEFGHIHELLOGOLANGpackagemainimport("fmt""os""io")funcmain(){fileName:="C:\\Robert\\日志分析\\tools_go\\vdn_sqlInterface\\a.txt"file,err:=os.OpenFile(fileName,os.O_RDWR,0
- golang文件读取-按行读取
robertkun
golang
golang文件读取-按行读取a.txt文件内容:ABCDEFGHIHELLOGOLANGpackagemainimport("fmt""os""io""bufio""strings")funcmain(){fileName:="C:\\Robert\\日志分析\\tools_go\\vdn_sqlInterface\\a.txt"file,err:=os.OpenFile(fileName,os
- huawei--创建视图,用到union和union all
today1858
数据库-视图
CREATEORREPLACEVIEWvwAgentInfoasselect*fromtAgentInfowhere(SubCCNo,VDN)=(selectSubCCNO,VDNfromtUserInfowhereUsername=user)withreadonly/CREATEORREPLACEVIEWvwRecordInfoasselect*fromtRecordInfo1where(Cal
- QMIX: Monotonic Value Function Factorisation for Deep Multi-Agent Reinforcement Learning笔记
Melody1211
论文阅读笔记
QMIX:MonotonicValueFunctionFactorisationforDeepMulti-AgentReinforcementLearning1.论文讲了什么/主要贡献是什么在多代理强化学习中,存在代理单独计算价值函数和完全集中计算价值函数两种方式,前者存在不稳定的问题,后者存在可扩展性差的问题(维度灾难)。作者在介于两者之前的VDN算法的基础上,对从单代理价值函数到中心价值函数之
- VDN智能升级的设置及原理
softvery
VDNVDNPB框架
系统文件通过VDN(VesnDataNet)项目发布之后,就可以使用VDN的智能升级功能了,不需要在程序里在编写复杂的升级代码了。一、智能升级调用形式1、通过IE运行,由IE插件自动实现只能升级1.1升级界面2、通过桌面运行程序则可以通过调用VDN组件的升级函数或者在SQLCA的连接参数里直接加上升级参数来调用VDN的升级程序来实现。1.2通过调用VDN组件函数来实现1.3通过连接阐述指定升级二、
- VDN互联网数据驱动 FOR PB
softvery
VesnData.Net(简称VDN)是一套互联网数据库驱动系统,利用VDN系统PB程序可以像操作局域网数据库一样操作互联网数据库,开发过程同普通的C/SPB程序开发,旧的PB系统无需代码迁移,修改一下数据库连接就可以高速连接互联网数据库。一套代码可以无缝在局域网和互联网之间切换,大大的缩短了系统的开发周期,减少企业的开发成本,降低系统迁移的风险。高速的数据处理,很大程度的提高了用户体验,增强了系
- PB DES、3DES加密解密(简单便捷)
softvery
VDN
PBDES\3DES加密解密通过VDN的uo_vdncore组件快速简单实现PB的DES、3DES、AES、RSA、Base64、Hex、SHA、MD5、HMac等类型的加密解密,本章我们主要讲解一下PB的DES及3DES加解密QQ技术交流群:130377874获取最新版本VDN组件一、导入组件1.1、首先将Example\IE运行导入组件\导入组件\PB*\uo_vdncore.sru组件导入到
- VDN平台各种数据库连接设置
softvery
VDN
VDN(VesnDataNet)平台是一套互联网数据库驱动为核心的系统,是继PB.NET之后另一互联网数据高速传输系统,VDN的最大特性简单、高速、安全、丰富。目前为止VDN支持SQLSERVER(2000-2008),ORACLE(9I及以上),及通过ODBC可以实现连接的数据(例如:MySQL),以下通过示例演示PB程序如何通过VDN连接到各种数据库,更多详细的参数请见附录参数说明。首先通过后
- xml解析
小猪猪08
xml
1、DOM解析的步奏
准备工作:
1.创建DocumentBuilderFactory的对象
2.创建DocumentBuilder对象
3.通过DocumentBuilder对象的parse(String fileName)方法解析xml文件
4.通过Document的getElem
- 每个开发人员都需要了解的一个SQL技巧
brotherlamp
linuxlinux视频linux教程linux自学linux资料
对于数据过滤而言CHECK约束已经算是相当不错了。然而它仍存在一些缺陷,比如说它们是应用到表上面的,但有的时候你可能希望指定一条约束,而它只在特定条件下才生效。
使用SQL标准的WITH CHECK OPTION子句就能完成这点,至少Oracle和SQL Server都实现了这个功能。下面是实现方式:
CREATE TABLE books (
id &
- Quartz——CronTrigger触发器
eksliang
quartzCronTrigger
转载请出自出处:http://eksliang.iteye.com/blog/2208295 一.概述
CronTrigger 能够提供比 SimpleTrigger 更有具体实际意义的调度方案,调度规则基于 Cron 表达式,CronTrigger 支持日历相关的重复时间间隔(比如每月第一个周一执行),而不是简单的周期时间间隔。 二.Cron表达式介绍 1)Cron表达式规则表
Quartz
- Informatica基础
18289753290
InformaticaMonitormanagerworkflowDesigner
1.
1)PowerCenter Designer:设计开发环境,定义源及目标数据结构;设计转换规则,生成ETL映射。
2)Workflow Manager:合理地实现复杂的ETL工作流,基于时间,事件的作业调度
3)Workflow Monitor:监控Workflow和Session运行情况,生成日志和报告
4)Repository Manager:
- linux下为程序创建启动和关闭的的sh文件,scrapyd为例
酷的飞上天空
scrapy
对于一些未提供service管理的程序 每次启动和关闭都要加上全部路径,想到可以做一个简单的启动和关闭控制的文件
下面以scrapy启动server为例,文件名为run.sh:
#端口号,根据此端口号确定PID
PORT=6800
#启动命令所在目录
HOME='/home/jmscra/scrapy/'
#查询出监听了PORT端口
- 人--自私与无私
永夜-极光
今天上毛概课,老师提出一个问题--人是自私的还是无私的,根源是什么?
从客观的角度来看,人有自私的行为,也有无私的
- Ubuntu安装NS-3 环境脚本
随便小屋
ubuntu
将附件下载下来之后解压,将解压后的文件ns3environment.sh复制到下载目录下(其实放在哪里都可以,就是为了和我下面的命令相统一)。输入命令:
sudo ./ns3environment.sh >>result
这样系统就自动安装ns3的环境,运行的结果在result文件中,如果提示
com
- 创业的简单感受
aijuans
创业的简单感受
2009年11月9日我进入a公司实习,2012年4月26日,我离开a公司,开始自己的创业之旅。
今天是2012年5月30日,我忽然很想谈谈自己创业一个月的感受。
当初离开边锋时,我就对自己说:“自己选择的路,就是跪着也要把他走完”,我也做好了心理准备,准备迎接一次次的困难。我这次走出来,不管成败
- 如何经营自己的独立人脉
aoyouzi
如何经营自己的独立人脉
独立人脉不是父母、亲戚的人脉,而是自己主动投入构造的人脉圈。“放长线,钓大鱼”,先行投入才能产生后续产出。 现在几乎做所有的事情都需要人脉。以银行柜员为例,需要拉储户,而其本质就是社会人脉,就是社交!很多人都说,人脉我不行,因为我爸不行、我妈不行、我姨不行、我舅不行……我谁谁谁都不行,怎么能建立人脉?我这里说的人脉,是你的独立人脉。 以一个普通的银行柜员
- JSP基础
百合不是茶
jsp注释隐式对象
1,JSP语句的声明
<%! 声明 %> 声明:这个就是提供java代码声明变量、方法等的场所。
表达式 <%= 表达式 %> 这个相当于赋值,可以在页面上显示表达式的结果,
程序代码段/小型指令 <% 程序代码片段 %>
2,JSP的注释
<!-- -->
- web.xml之session-config、mime-mapping
bijian1013
javaweb.xmlservletsession-configmime-mapping
session-config
1.定义:
<session-config>
<session-timeout>20</session-timeout>
</session-config>
2.作用:用于定义整个WEB站点session的有效期限,单位是分钟。
mime-mapping
1.定义:
<mime-m
- 互联网开放平台(1)
Bill_chen
互联网qq新浪微博百度腾讯
现在各互联网公司都推出了自己的开放平台供用户创造自己的应用,互联网的开放技术欣欣向荣,自己总结如下:
1.淘宝开放平台(TOP)
网址:http://open.taobao.com/
依赖淘宝强大的电子商务数据,将淘宝内部业务数据作为API开放出去,同时将外部ISV的应用引入进来。
目前TOP的三条主线:
TOP访问网站:open.taobao.com
ISV后台:my.open.ta
- 【MongoDB学习笔记九】MongoDB索引
bit1129
mongodb
索引
可以在任意列上建立索引
索引的构造和使用与传统关系型数据库几乎一样,适用于Oracle的索引优化技巧也适用于Mongodb
使用索引可以加快查询,但同时会降低修改,插入等的性能
内嵌文档照样可以建立使用索引
测试数据
var p1 = {
"name":"Jack",
"age&q
- JDBC常用API之外的总结
白糖_
jdbc
做JAVA的人玩JDBC肯定已经很熟练了,像DriverManager、Connection、ResultSet、Statement这些基本类大家肯定很常用啦,我不赘述那些诸如注册JDBC驱动、创建连接、获取数据集的API了,在这我介绍一些写框架时常用的API,大家共同学习吧。
ResultSetMetaData获取ResultSet对象的元数据信息
- apache VelocityEngine使用记录
bozch
VelocityEngine
VelocityEngine是一个模板引擎,能够基于模板生成指定的文件代码。
使用方法如下:
VelocityEngine engine = new VelocityEngine();// 定义模板引擎
Properties properties = new Properties();// 模板引擎属
- 编程之美-快速找出故障机器
bylijinnan
编程之美
package beautyOfCoding;
import java.util.Arrays;
public class TheLostID {
/*编程之美
假设一个机器仅存储一个标号为ID的记录,假设机器总量在10亿以下且ID是小于10亿的整数,假设每份数据保存两个备份,这样就有两个机器存储了同样的数据。
1.假设在某个时间得到一个数据文件ID的列表,是
- 关于Java中redirect与forward的区别
chenbowen00
javaservlet
在Servlet中两种实现:
forward方式:request.getRequestDispatcher(“/somePage.jsp”).forward(request, response);
redirect方式:response.sendRedirect(“/somePage.jsp”);
forward是服务器内部重定向,程序收到请求后重新定向到另一个程序,客户机并不知
- [信号与系统]人体最关键的两个信号节点
comsci
系统
如果把人体看做是一个带生物磁场的导体,那么这个导体有两个很重要的节点,第一个在头部,中医的名称叫做 百汇穴, 另外一个节点在腰部,中医的名称叫做 命门
如果要保护自己的脑部磁场不受到外界有害信号的攻击,最简单的
- oracle 存储过程执行权限
daizj
oracle存储过程权限执行者调用者
在数据库系统中存储过程是必不可少的利器,存储过程是预先编译好的为实现一个复杂功能的一段Sql语句集合。它的优点我就不多说了,说一下我碰到的问题吧。我在项目开发的过程中需要用存储过程来实现一个功能,其中涉及到判断一张表是否已经建立,没有建立就由存储过程来建立这张表。
CREATE OR REPLACE PROCEDURE TestProc
IS
fla
- 为mysql数据库建立索引
dengkane
mysql性能索引
前些时候,一位颇高级的程序员居然问我什么叫做索引,令我感到十分的惊奇,我想这绝不会是沧海一粟,因为有成千上万的开发者(可能大部分是使用MySQL的)都没有受过有关数据库的正规培训,尽管他们都为客户做过一些开发,但却对如何为数据库建立适当的索引所知较少,因此我起了写一篇相关文章的念头。 最普通的情况,是为出现在where子句的字段建一个索引。为方便讲述,我们先建立一个如下的表。
- 学习C语言常见误区 如何看懂一个程序 如何掌握一个程序以及几个小题目示例
dcj3sjt126com
c算法
如果看懂一个程序,分三步
1、流程
2、每个语句的功能
3、试数
如何学习一些小算法的程序
尝试自己去编程解决它,大部分人都自己无法解决
如果解决不了就看答案
关键是把答案看懂,这个是要花很大的精力,也是我们学习的重点
看懂之后尝试自己去修改程序,并且知道修改之后程序的不同输出结果的含义
照着答案去敲
调试错误
- centos6.3安装php5.4报错
dcj3sjt126com
centos6
报错内容如下:
Resolving Dependencies
--> Running transaction check
---> Package php54w.x86_64 0:5.4.38-1.w6 will be installed
--> Processing Dependency: php54w-common(x86-64) = 5.4.38-1.w6 for
- JSONP请求
flyer0126
jsonp
使用jsonp不能发起POST请求。
It is not possible to make a JSONP POST request.
JSONP works by creating a <script> tag that executes Javascript from a different domain; it is not pos
- Spring Security(03)——核心类简介
234390216
Authentication
核心类简介
目录
1.1 Authentication
1.2 SecurityContextHolder
1.3 AuthenticationManager和AuthenticationProvider
1.3.1 &nb
- 在CentOS上部署JAVA服务
java--hhf
javajdkcentosJava服务
本文将介绍如何在CentOS上运行Java Web服务,其中将包括如何搭建JAVA运行环境、如何开启端口号、如何使得服务在命令执行窗口关闭后依旧运行
第一步:卸载旧Linux自带的JDK
①查看本机JDK版本
java -version
结果如下
java version "1.6.0"
- oracle、sqlserver、mysql常用函数对比[to_char、to_number、to_date]
ldzyz007
oraclemysqlSQL Server
oracle &n
- 记Protocol Oriented Programming in Swift of WWDC 2015
ningandjin
protocolWWDC 2015Swift2.0
其实最先朋友让我就这个题目写篇文章的时候,我是拒绝的,因为觉得苹果就是在炒冷饭, 把已经流行了数十年的OOP中的“面向接口编程”还拿来讲,看完整个Session之后呢,虽然还是觉得在炒冷饭,但是毕竟还是加了蛋的,有些东西还是值得说说的。
通常谈到面向接口编程,其主要作用是把系统设计和具体实现分离开,让系统的每个部分都可以在不影响别的部分的情况下,改变自身的具体实现。接口的设计就反映了系统
- 搭建 CentOS 6 服务器(15) - Keepalived、HAProxy、LVS
rensanning
keepalived
(一)Keepalived
(1)安装
# cd /usr/local/src
# wget http://www.keepalived.org/software/keepalived-1.2.15.tar.gz
# tar zxvf keepalived-1.2.15.tar.gz
# cd keepalived-1.2.15
# ./configure
# make &a
- ORACLE数据库SCN和时间的互相转换
tomcat_oracle
oraclesql
SCN(System Change Number 简称 SCN)是当Oracle数据库更新后,由DBMS自动维护去累积递增的一个数字,可以理解成ORACLE数据库的时间戳,从ORACLE 10G开始,提供了函数可以实现SCN和时间进行相互转换;
用途:在进行数据库的还原和利用数据库的闪回功能时,进行SCN和时间的转换就变的非常必要了;
操作方法: 1、通过dbms_f
- Spring MVC 方法注解拦截器
xp9802
spring mvc
应用场景,在方法级别对本次调用进行鉴权,如api接口中有个用户唯一标示accessToken,对于有accessToken的每次请求可以在方法加一个拦截器,获得本次请求的用户,存放到request或者session域。
python中,之前在python flask中可以使用装饰器来对方法进行预处理,进行权限处理
先看一个实例,使用@access_required拦截:
?