说明
原文链接
翻译:@adolphlwq
项目地址
翻译/校对:3.5h
资源是任何RESTful API中的基本概念。资源是对象,包括类型、关联的数据、资源间的关系以及资源上的操作集合。它和面向对象编程语言中的对象类似,不同点在于资源 只定义了有限的标准方法(对应HTTP协议中标准的GET,POST,PUT,DELETE方法),而对象实例可以有很多方法。
资源可以被分类到不同的集合中。每个集合都包含一种类型的资源,因此集合都是均匀(homogeneous
)的。资源也可以不分到集合里,这些资源我们称为singleton resources
。
集合可以全局存在,即API顶层(译者注:原文at the top level of an API),也可以包含在single resource中。后文中,我们把这种集合称为sub-collections ,子集通常用来表达“包含于”的关系。我会在Relationships详细介绍。
下图描述了RESTful API的关键概念:
[外链图片转存失败(img-GIYk9Zmi-1566044023916)(http://restful-api-design.readthedocs.io/en/latest/_images/concepts.png)]
我们把描述资源的类型、行为和关系的信息称为API的资源模型 。RESTful中的资源模型可以视为到应用数据模型的映射。
资源数据
资源关联数据。API的资源模型还包括关联数据的丰富性。比如,它定义了哪些可用的数据类型和行为。
就我个人经验,我坚信JSON这种数据模型完美满足API的丰富性要求,它是RESTful资源的理想数据模型。我会推荐给每个人。
JSON中已经存在三种类型数据:
scalar(标量:number, string, boolean, nul)
array
object
标量类型只有一个值。数组包含任意类型值的有序列表。对象是无序的key/value(键/值对)
集合(亦称为属性,但是不要和XML中的属性概念搞混),key是字符串,value可以是任意类型。更多JSON细节请参考JSON web site。
为什么如此偏爱JSON?以我个人观点,JSON在表达性和广泛应用上拥有良好的平衡。scalars、arrays和objects这三种类型足够强大,能够以自然的方式描述资源中暴露的数据,同时JSON足够小巧,几乎任何现代语言都可以内置支持JSON。
XML也是以为有力的竞争者(contender)。实际上,RHEV-M(译者注:红帽的一款产品)最终API中就使用XMLSchema来描述资源。事后来看(With hindsight),RESTful API使用XML模型是个糟糕的选择。一方面,它过于丰富;另一方面,它又缺少一些特性。XML作为标准通用标记语言的一个分支(SGML off-shoot),我认为它在表示结构化文档
是伟大的,但是不适合表示结构化数据
。
XML一些过于丰富的特性有:
Attributes vs elements(属性与元素)。XML可以既有属性,也包含子元素。包含数据项的资源可以被编码成任意一种。这导致客户端或者服务端事先不清楚该使用哪一个。
Relevance of order(顺序相关性)。子元素间的顺序也会关联到XML中,我认为对象间的属性就不是自然的有序了 。
XML数据模型的缺点有:
没有类型。XML文档中的元素没有类型,为了使用类型需要引入XMLSchema,不幸的是XMLSchema规范非常复杂。
没有列表。XML不能原生表达列表。这可能导致问题:不清楚某个元素是列表还是对象,或者两者都是。
应用数据
我们使用以下规则定义可以与JSON数据模型映射的资源数据:
资源被建模为JSON对象。资源的类型存储在特殊的键值对_type
中。
资源中的数据表示为JSON对象中的键值对。为了避免和JSON对象内部键值对冲突,键不能以“_”开头 。
键值对中的值可以是JSON中任意原生类型: string、number、boolean、null或者arrays。值还可以是对象,这种情况下值表示嵌套的资源。
集合表示成对象数组。
我们也会把键值对认为JSON对象中的属性,这里不详细描述区别,都使用统一的术语。这样JSON中的属性就不会和XML中的属性冲突了。
REST元数据
除了暴露应用数据,资源中还有RESTful API相关特殊的数据。这些信息包括URLs和relationships。
下表列出了所有资源中定义的,通用、有特殊含义的属性:
Attribute
Type
Meaning
id
String
Identifies the unique ID of a resource
href
String
Identifies the URL of the current resource
link
object
Identifies a relationship for a resource. This attribute is itself an object and has “rel” “href” attributes
其它数据
通常,除了应用数据、REST元数据外,我们还需要一些数据。这通常是“类RPC”数据,其中需要设置操作,但是设置最终不会作为资源本身一部分。
这里我能列举的例子是,创建新资源过程中需要引用另一个资源,但是被引用的资源最终不会成为创建资源的一部分。
将应用数据、REST元数据和其它数据合并到资源中是API代码的职责,有可能要解决可能出现的名称冲突的问题。
表示
我们已经定义了资源,同时也介绍了资源数据和JSON数据模型间的映射关系。但是,这些资源仍然是抽象的实体。在它们通过HTTP链接和客户端通信前,它们需要被序列化 成文本表现形示。然后这种文本表示就可以作为实体包含在HTTP消息体中。
以下表示类型是资源常用的,该表还可使用的内容类型:
Type
Content-Type
JSON
application/x-resource+json application/x-collection+json
YAML
application/x-resource+yaml application/x-collection+yaml
XML
application/x-resource+xml application/x-collection+xml
HTML
text/html
注意:所有使用x-
前缀的内容类型都是实验阶段,RFC2046也是认可的。
JSON格式
将资源序列化为JSON格式很简单,因为资源的数据模型是根据JSON模型定义的。下面我们给出一个虚拟机JSON序列化的例子:
{
"_type": "vm",
"name": "A virtual machine",
"memory": 1024,
"cpu": {
"cores": 4,
"speed": 3600
},
"boot": {
"devices": ["cdrom", "harddisk"]
}
}
YAML格式
YAML格式和JSON稍微不同,JSON中键值对里的“_type”在YAML中替换为“!type”注解。上面的虚拟机实例的YAML格式为:
!vm
name: A virtual machine
memory: 1024
cpu:
cores: 4
speed: 3600
boot:
devices:
- cdrom
- harddisk
XML格式
由于XML的复杂性和限制,XML表示法是最复杂的。我推荐下面的规则:
资源映射到XML元素,加上标签名表示资源类型。
资源属性映射到XML子元素,标签名表示属性名。
标量表示成文本节点。标量元素中关键字“type”表示标量类型,这种映射要遵守XML Schema Part 2。
列表要存储为单个的容器元素,其中每个列表项都有子元素。容器元素的标签应当是属性名称英文复数,item标签应该是属性名称的英文单数。列表应该具有“xd:list”类型注释。
相同的虚拟机资源的XML表示格式为:
My VM
1024
4
3600
cdrom
harddisk
HTML格式
HTML响应的精确格式应该是API相关的。HTML是为人类使用设计的,因此唯一要求是易于理解。一个简单实现可以是下面的表示法:
对于集合,使用标签表示,每一列表示一个属性,每一行表示一个对象。
对于资源,使用标签和两列表示,一列表示所有的属性名,一列表示属性对应的值。
Content-Types
根据上文内容,我主张使用的通用内容类型是“application/x-resource+format”和“application/x-collection+format”。在我看来,它们代表了RESTful API中常见的两个极端情形的中间情形:
一类RESTful API只使用“空的”(译者注:bare)XML、JSON或者YAML内容类型。这种情况下,内容类型只表示实体的类型是XML、JSON或者YAML。在我看来,这依然不够。因为资源和集合会有一些特定的语义,例如“href”属性,“link”属性和type。Therefore, these are a specialization of XML, JSON and YAML and should be defined as such(译者注:这里不翻译是因为没看懂)。
另一类RESTful API会为资源模型中的每个资源类型都定义内容类型。一个例子是vSphere Director API。在我看来这也不妥。指定详细的内容类型会导致API方和客户端方认为这些类型有特定的接口。我认为所有的资源应该共享那些相同的、基本的接口,这些基本接口是符合RESTful设计原则,内容类型表示为“application/x-resource”。
一个原因是,通过 有利于内容类型 细节定义 的方法,内容类型可以和某些类型定义语言
(如XMLSchema)中的属性相关连。据推测,这有利于客户端自动发现,因为客户端知道某种类型的可用属性。我在Forms讨论(go into)了很多这个主题的细节,但总结下来我并不统一这个论点。
选择表式格式
客户端可以通过HTTP“Accept”头表示客户端使用哪种合适。HTTP RFC声明了详尽的规则,规则中可以请求多种格式,没中格式都有自己的优先级。下面的例子中客户端告诉API它只接受YAML格式:
GET /api/collection
Accept: application/x-collection+yaml
译者说
本文在HTTP协议的背景下,介绍了RESTful中的资源包含那些类型的数据;资源与JSON、XML、YAML等格式间的映射规则。作者支持将资源映射称JSON格式。 阅读本文还需要了解HTTP协议,否则很多属于很难理解。
公众号[QuanTalk],专注于计算机科学与技术、独立思考、阅读分享。欢迎关注交流
你可能感兴趣的:(api,http协议)
利用Google GCM发送push通知到Android客户端
weixin_34050389
移动开发
//这个可以需要在google账号中申请,勾选gcm服务选项$apiKey='AIzaSyC6h3ysrn2HDCBqONTo2vKIVVuktIFoxxx';$headers=array("Content-Type:"."application/json","Authorization:"."key=".$apiKey);$messageData=array('type'=>1,'msg'=>'
【来来来,我看看是谁不点我】Nuxt3入坑记--JS版
Bug从此不上门
javascript 开发语言 ecmascript
为什么选择Nuxt3呢?老板说要上SSR紧跟潮流Nuxt3对于没有SSR经验的同学来说,是一个不错的选择,简单易用上手轻松。Nuxt3官方地址Nuxt3生态圈Nuxt3官方案例Nuxt3具有什么优势呢?开发更快打包更小支持vite支持vue3支持自动引入支持文件路由支持布局系统支持多种渲染模式支持typescript支持composition-apiNuxt3目录结构#目錄說明#.nuxt本地运行
超视网络视频中间件:H5视频API接口简介
超视网络
安防软件 流媒体视频平台 视频中间件 中间件 大数据 安全 区块链 linux
序在上篇博文我们简单介绍了视频中间件产品,今天让大家进一步了解我们的视频中间件产品具体有哪些API接口能力,话不多说,直接上视频中间件H5接口整体流程调用流程图:视频中间件产品接口调用流程是从平台登录验证接口为调用入口,获得登录令牌Token,再调用设备树列表接口,获得摄像机ID。通过Token及摄像机ID(cid)两个参数,即可完成后续各项功能接口调用操作。接口可适配各类跨系统、跨终端、跨开发语
React 入门第七天:探索状态管理与Context API
Caleb-niu
React‘s family html 前端
在React学习的第七天,我深入了解了React的状态管理机制,特别是如何通过ContextAPI来实现跨组件的状态共享。React的状态管理是组件交互的核心,而ContextAPI则为全局状态的共享提供了一个简洁而强大的解决方案。1.React中的状态管理React中的状态管理分为组件内部状态管理和跨组件状态管理。组件内部的状态管理相对简单,可以通过useState和useReducer来处理。
如何通过关键词搜索API接口,淘宝商品关键词搜索电商API接口揭秘
luck626Y
大数据 python
对于商家而言,掌握淘宝等电商平台的核心数据和商机至关重要。今天,我们将深入探讨淘宝商品关键词搜索的电商API接口,解析如何轻松获取商机。一、电商API接口的重要性在电商领域,API接口是连接平台与第三方服务的关键桥梁。通过API接口,商家可以实时获取商品信息、交易数据、用户行为等关键数据,为运营决策提供有力支持。特别是淘宝等大型电商平台,其API接口更是为商家提供了强大的数据分析能力和便捷的运营管
推荐:Zustand——简单高效的React状态管理库
杭臣磊Sibley
推荐:Zustand——简单高效的React状态管理库zustandpmndrs/zustand:Zustand是一个轻量级的状态管理库,适用于React应用。它提供简单直观的API来创建和访问全局状态存储,并且鼓励简洁、灵活和可组合的状态解决方案。项目地址:https://gitcode.com/gh_mirrors/zu/zustand项目简介遇见Zustand,一个轻量级、快速且可扩展的Re
探索Zustand:简洁高效的状态管理新星
邹卿雅
探索Zustand:简洁高效的状态管理新星zustandpmndrs/zustand:Zustand是一个轻量级的状态管理库,适用于React应用。它提供简单直观的API来创建和访问全局状态存储,并且鼓励简洁、灵活和可组合的状态解决方案。项目地址:https://gitcode.com/gh_mirrors/zu/zustand在JavaScript的前端世界中,状态管理一直是应用开发的核心话题。
element-plus下拉框select-popup在组建中不显示问题
黄安树_
vue.js
在自定义modal中,使用element-plus的select,第一次总是不显示popup弹窗,查阅相关文档有说是权级问题,修改权级之后,确实可以显示,但是还是会有很多奇奇怪怪的bug!目前总结了两种方法,如下:方法1:使用select自带的apipopper-class,在操作时给popup的权级设置到最大constselectPopperShow=(e)=>{if(e){setTimeout
【k8s】Kubernetes初步
划过手的泪滴t
云计算运维 docker Kubernetes kubernetes 容器 云原生 运维 linux
1、k8s架构图绘制2、k8s工作流程图绘制为了帮助您绘制Pod创建过程的时序图,我将使用Markdown语法来描述这个过程。由于Markdown本身并不直接支持时序图的绘制,我们可以使用简单的文本和列表来模拟时序图的结构。下面是一个简化版的Pod创建过程的Markdown描述:Pod创建的时序图用户发起创建Pod请求kubectlcreatepodAPIServer接收请求验证请求将Pod定义存
教你“偷偷”的获取微信小游戏好友关系链数据
星星之Coder
小游戏开发 小游戏开发 微信小游戏 好友关系链 排行榜
好友是是很多游戏都有的功能,原因在于好友玩法可以提升用户间的互动性,增加产品和用户的黏性、对提升留存率有重要帮助。很多游戏策划和产品经理都喜欢在游戏中加入这个设定,在腾讯开发平台、空间玩吧平台也都提供获取QQ好友关系链的API,供开发者开发更丰富更好玩的游戏产品。但是,微信平台基于用户数据隐私性的考虑,并不提供直接的api来获取好友关系链。而是设计了一套开放数据域的api机制来供开发者使用,游戏“
【python】如何通过Python中的http.server搭建文件上传下载服务
景天科技苑
python轻松入门 基础语法到高阶实战教学 python http 开发语言 python文件上传下载 http.server
✨✨欢迎大家来到景天科技苑✨✨养成好习惯,先赞后看哦~作者简介:景天科技苑《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。《博客》:Python全栈,PyQt5和Tkinter桌面开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生K
使用 Express 写接口
過尽千帆_YL
1.创建基本的服务器//导入expressconstexpress=require('express')//创建服务器实例constapp=express()//配置解析表单数据的中间件app.use(express.urlencoded({extended:false}))//必须在配置cors中间件之前,配置JSONP的接口app.get('/api/jsonp',(req,res)=>{//
如何查看kafka消息消费进度以及是否有未消费的消息
小手追梦
hadoop实战
查询是否有未消费的消息的方式有三种:第一种,kafka自带命令kafka的bin目录下,执行命令:kafka-consumer-groups.sh--bootstrap-servernode1:9092--describe--groupmylcy可以看到当前的消费进度(CURRENT-OFFSET)、消息进度(LOG-END-OFFSET)、落后量(LAG):第二种:JAVAAPIpublicst
API接口的安全性分类及其对开发的影响
2401_86932795
职场发展 职场和发展 求职招聘 单一职责原则
API接口的分类:按照访问权限分公开APIs:对所有用户开放的API。私有APIs:只对特定用户或组织开放的API。内部API:仅供组织内部使用的API,用于连接组织内部的不同系统或服务。第三方APIs:由第三方开发并提供的API。API接口的分类:按照安全分非安全API:这些API可能不提供或仅提供有限的安全措施。安全API:这些API设计有安全措施,如HTTPS、OAuth认证、访问控制列表(
微信小程序常见问题汇总
一月清辉
面试常见问题 小程序
1、如何避免微信小程序中app.js中onshow事件的n次触发的问题?问题在开发中,遇到了一个小难题,就是app.js中onshow事件总是会因调用其它API而触发,例如:wx.chooseImage,wx.makephonecall、wx.previewImage等。解决办法目前比较好的办法就是onshow中,通过首个参数option下的scene判断进入的场景,根据场景处理相关逻辑。2、简单
一款好看的EMlog系统博客网站微信小程序源码v1.1
dddaaxx
程序源码
介绍:这是一个简洁的程序,所以给它取了个英文名叫Brief,需要配合EMlog后端,所以EMlog附带了一款非常好看的大前端模板。Brief使用emlog(6.0.1)系统强力驱动后端API使用张子恒接口文档开发本程序仍有诸多bug未修复由于开发时修改过很多emlog原有功能及数据库所以使用该程序需要重新安装emlog和数据库1、配置ssl宝塔可免费申请2、安装后端上传源码-导入数据库-修改con
vue3 集成天地图,完美实例
cesske
vue
在Vue3中,你可以使用天地图JavaScriptAPI进行集成。以下是一个基本的例子,展示了如何在Vue3组件中集成天地图并添加一个地图实例:1、首先,确保你已经在你的项目中包含了天地图的JavaScriptAPI。你可以通过以下方式添加:2、创建一个Vue3组件,并在组件中添加地图的初始化逻辑,先上代码,代码中实现了部分功能。如果需要详细,可以联系我。constdataMap=ref({})/
springboot集成 AI 实现图片辅助设计功能
cesske
spring boot 人工智能 后端
springboot集成AI实现图片辅助设计功能在SpringBoot中实现一个图片辅助设计功能,通常会涉及到图像处理、计算机视觉以及机器学习(AI)技术的应用。这样的系统可以帮助用户进行图像编辑、风格转换、自动设计布局等。以下是一个基本步骤和技术栈建议,用于在SpringBoot中构建图片辅助设计功能的系统。1.技术栈选择SpringBoot:作为后端框架,提供RESTfulAPI。图像处理库:
k8s必知必会
小卒曹阿瞒
八股文 分布式 网络 big data
目录1、简述etcd及其特点etcd是CoreOS团队发起的开源项目,是一个管理配置信息和服务发现(servicediscovery)的项目,它的目标是构建一个高可用的分布式键值(key-value)数据库,基于Go语言实现。特点:简单:支持REST风格的HTTP+JSONAPI安全:支持HTTPS方式的访问快速:支持并发1k/s的写操作可靠:支持分布式结构,基于Raft的一致性算法,Raft是一
使用Python进行Mock测试详解(含Web API接口Mock)
知识的宝藏
Python python mock Python Mock 单元测试
使用Python进行Mock测试详解(含WebAPI接口Mock)在软件开发过程中,单元测试是非常重要的一部分。为了确保代码的质量和可靠性,开发者需要编写测试用例来检查代码的行为是否符合预期。然而,在测试中有时会遇到一些难以直接测试的情况,例如依赖外部系统、数据库或网络服务等。在这种情况下,Mock测试就显得尤为重要。本文将详细介绍如何使用Python标准库中的unittest.mock模块来进行
如何使用Vue 3和Type Script进行组件化设计
yang295242361
vue.js javascript ecmascript
在Vue3中,CompositionAPI是一种全新的逻辑复用和代码组织方式,它允许你将组件的逻辑(如响应式状态、计算属性、方法、生命周期钩子等)封装到单独的函数中,从而提高了代码的可复用性和可维护性。以下是如何在Vue3中使用CompositionAPI的基本步骤:1.引入必要的函数首先,你需要从vue包中引入defineComponent和CompositionAPI的其他函数(如ref,re
Exploiting server-side parameter pollution in a query string
Zkaisen
Burpsuit burpsuit web安全
Target:loginastheadministratoranddeletecarlos.1、防止API漏洞在设计API时,确保在一开始就考虑到安全性要确保:保护API文档如果你的API文档不打算公开的话确保文档及时更新以便于合法的测试者能够充分进行API攻击面测试设置HTTP方法的允许列表验证每个请求或响应所期望的内容类型使用通用错误消息来避免泄露可能对攻击者有用的信息。对API的所有版本使用
SparkSql
李思缘的大数据之路
spark sparksql
SparkSQL基本介绍什么是SparkSQL?用于处理结构化数据的Spark模块。可以通过DataFrame和DataSet处理数据。SparkSQL特点1、易整合可以使用java、scala、python、R等语言的API操作。2、统一的数据访问连接到任何数据源的方式相同。3、兼容Hive4、标准的数据连接(JDBC/ODBC)SQL优缺点优点:表达非常清晰,难度低、易学习。缺点:复杂的业务需
Uvicorn running on http://0.0.0.0:8000 如何在本地访问
Wanderer X
配置 前端 fastapi
用uvicorn+fastapi到本地需要添加ssh隧道ssh-L8080:127.0.0.1:8000服务器地址之后就可以使用本地浏览器打开了其中8080是本地的端口号,8000是远程服务器的端口号如果需要再本地访问,则使用端口8080要在服务器访问,则使用端口8000如果定义了类似这样的函数@app.get("/clean_cache")asyncdefclean_cache():....re
ASP.NET Core 入门教程一 创建最小 API
充值内卷
asp.net 后端
构建最小API,以创建具有最小依赖项的HTTPAPI。它们非常适合需要在ASP.NETCore中仅包括最少文件、功能和依赖项的微服务和应用。本教程介绍使用ASP.NETCore生成最小API的基础知识。启动VisualStudio2022并选择“创建新项目”。在“创建新项目”对话框中:在“搜索模板”搜索框中输入Empty。选择“ASP.NETCore空”模板,然后选择“下一步”检查代码Progra
ASP.NET Core 入门教程二 实现基本 GET 和 POST 接口
充值内卷
asp.net 后端
ASP.NETCore是一个开源的Web框架,它允许开发者轻松地构建现代、高性能的Web应用程序。在本篇文章中,我们将学习如何使用ASP.NETCore实现基本的GET和POST接口。1.创建一个新的ASP.NETCoreWebAPI项目首先,我们需要创建一个新的ASP.NETCoreWebAPI项目。在VisualStudio中,选择"创建新项目",然后选择"ASP.NETCoreWeb应用程序
第4章 .NET 8.0 ASP.NET Core图书管理系统 :项目布局
代数狂人
ASP.NET Core 框架之旅 .net asp.net 后端 ASP.NET Core
第1章框架学习的基石与实战策略第2章大话ASP.NETCore入门第3章创建最小(MinimalAPIs)API应用程序第4章.NET8.0ASP.NETCore图书管理系统:项目布局</
零基础5分钟上手亚马逊云科技 - AI模型内容安全过滤
佛州小李哥
AWS技术 科技 云计算 aws 亚马逊云科技 人工智能 语言模型 安全
在上一篇文章中,小李哥带大家深入调研亚马逊云科技AI模型平台AmazonBedrock热门开发功能,了解了模型平台的文字/图片生成、模型表现评估和模型内容安全审核的实践操作。这次我们将继续介绍如何利用API的形式,利用Python代码的形式对AI模型内容安全过滤,阻止输入、输出中有危害的内容,提升模型在用户使用过程中的安全性。方案所需基础知识什么是AmazonBedrockGuardrails?A
毕业第638天分享
河南师范大学文学院王程颢
第638天锻炼,今天上班,看《罗素自传》(第二、三卷)。——每天一荐:“我最喜欢的公众号汇总:‘①王左中右、QQ音乐、胥渡吧、papi、腾讯娱乐;②澎湃新闻、、大唐雷音寺、道教、仲易说;③warfalcon、罗辑思维、樊登读书、魏小河流域、书单来了、知乎日报、丁香医生、学者方刚’。”图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片发自App图片
机器人流程自动化 (RPA)简介
lin_xi_xi
RPA 机器人 自动化 rpa
什么是机器人流程自动化(RPA)?机器人流程自动化(RPA)又称软件机器人,它使用自动化技术模拟人类的后台任务,如提取数据、填写表单和移动文件等等。它结合了API和用户界面(UI)互动,整合并执行企业与生产力应用之间的重复性任务。通过部署用于模拟人工流程的脚本,RPA工具可以在各个不相关的软件系统中自动执行各项活动和事务。这种形式的自动化使用基于规则的软件,大规模执行业务流程活动,从而将人力资源解
Java实现的简单双向Map,支持重复Value
superlxw1234
java 双向map
关键字:Java双向Map、DualHashBidiMap
有个需求,需要根据即时修改Map结构中的Value值,比如,将Map中所有value=V1的记录改成value=V2,key保持不变。
数据量比较大,遍历Map性能太差,这就需要根据Value先找到Key,然后去修改。
即:既要根据Key找Value,又要根据Value
PL/SQL触发器基础及例子
百合不是茶
oracle数据库 触发器 PL/SQL编程
触发器的简介;
触发器的定义就是说某个条件成立的时候,触发器里面所定义的语句就会被自动的执行。因此触发器不需要人为的去调用,也不能调用。触发器和过程函数类似 过程函数必须要调用,
一个表中最多只能有12个触发器类型的,触发器和过程函数相似 触发器不需要调用直接执行,
触发时间:指明触发器何时执行,该值可取:
before:表示在数据库动作之前触发
[时空与探索]穿越时空的一些问题
comsci
问题
我们还没有进行过任何数学形式上的证明,仅仅是一个猜想.....
这个猜想就是; 任何有质量的物体(哪怕只有一微克)都不可能穿越时空,该物体强行穿越时空的时候,物体的质量会与时空粒子产生反应,物体会变成暗物质,也就是说,任何物体穿越时空会变成暗物质..(暗物质就我的理
easy ui datagrid上移下移一行
商人shang
js 上移下移 easyui datagrid
/**
* 向上移动一行
*
* @param dg
* @param row
*/
function moveupRow(dg, row) {
var datagrid = $(dg);
var index = datagrid.datagrid("getRowIndex", row);
if (isFirstRow(dg, row)) {
Java反射
oloz
反射
本人菜鸟,今天恰好有时间,写写博客,总结复习一下java反射方面的知识,欢迎大家探讨交流学习指教
首先看看java中的Class
package demo;
public class ClassTest {
/*先了解java中的Class*/
public static void main(String[] args) {
//任何一个类都
springMVC 使用JSR-303 Validation验证
杨白白
spring mvc
JSR-303是一个数据验证的规范,但是spring并没有对其进行实现,Hibernate Validator是实现了这一规范的,通过此这个实现来讲SpringMVC对JSR-303的支持。
JSR-303的校验是基于注解的,首先要把这些注解标记在需要验证的实体类的属性上或是其对应的get方法上。
登录需要验证类
public class Login {
@NotEmpty
log4j
香水浓
log4j
log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, HTML, DATABASE
#log4j.rootCategory=DEBUG, STDOUT, DAILYFILE, ROLLINGFILE, HTML
#console
log4j.appender.STDOUT=org.apache.log4j.ConsoleAppender
log4
使用ajax和history.pushState无刷新改变页面URL
agevs
jquery 框架 Ajax html5 chrome
表现
如果你使用chrome或者firefox等浏览器访问本博客、github.com、plus.google.com等网站时,细心的你会发现页面之间的点击是通过ajax异步请求的,同时页面的URL发生了了改变。并且能够很好的支持浏览器前进和后退。
是什么有这么强大的功能呢?
HTML5里引用了新的API,history.pushState和history.replaceState,就是通过
centos中文乱码
AILIKES
centos OS ssh
一、CentOS系统访问 g.cn ,发现中文乱码。
于是用以前的方式:yum -y install fonts-chinese
CentOS系统安装后,还是不能显示中文字体。我使用 gedit 编辑源码,其中文注释也为乱码。
后来,终于找到以下方法可以解决,需要两个中文支持的包:
fonts-chinese-3.02-12.
触发器
baalwolf
触发器
触发器(trigger):监视某种情况,并触发某种操作。
触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)
语法:
create trigger triggerName
after/before 
JS正则表达式的i m g
bijian1013
JavaScript 正则表达式
g:表示全局(global)模式,即模式将被应用于所有字符串,而非在发现第一个匹配项时立即停止。 i:表示不区分大小写(case-insensitive)模式,即在确定匹配项时忽略模式与字符串的大小写。 m:表示
HTML5模式和Hashbang模式
bijian1013
JavaScript AngularJS Hashbang模式 HTML5模式
我们可以用$locationProvider来配置$location服务(可以采用注入的方式,就像AngularJS中其他所有东西一样)。这里provider的两个参数很有意思,介绍如下。
html5Mode
一个布尔值,标识$location服务是否运行在HTML5模式下。
ha
[Maven学习笔记六]Maven生命周期
bit1129
maven
从mvn test的输出开始说起
当我们在user-core中执行mvn test时,执行的输出如下:
/software/devsoftware/jdk1.7.0_55/bin/java -Dmaven.home=/software/devsoftware/apache-maven-3.2.1 -Dclassworlds.conf=/software/devs
【Hadoop七】基于Yarn的Hadoop Map Reduce容错
bit1129
hadoop
运行于Yarn的Map Reduce作业,可能发生失败的点包括
Task Failure
Application Master Failure
Node Manager Failure
Resource Manager Failure
1. Task Failure
任务执行过程中产生的异常和JVM的意外终止会汇报给Application Master。僵死的任务也会被A
记一次数据推送的异常解决端口解决
ronin47
记一次数据推送的异常解决
需求:从db获取数据然后推送到B
程序开发完成,上jboss,刚开始报了很多错,逐一解决,可最后显示连接不到数据库。机房的同事说可以ping 通。
自已画了个图,逐一排除,把linux 防火墙 和 setenforce 设置最低。
service iptables stop
巧用视错觉-UI更有趣
brotherlamp
UI ui视频 ui教程 ui自学 ui资料
我们每个人在生活中都曾感受过视错觉(optical illusion)的魅力。
视错觉现象是双眼跟我们开的一个玩笑,而我们往往还心甘情愿地接受我们看到的假象。其实不止如此,视觉错现象的背后还有一个重要的科学原理——格式塔原理。
格式塔原理解释了人们如何以视觉方式感觉物体,以及图像的结构,视角,大小等要素是如何影响我们的视觉的。
在下面这篇文章中,我们首先会简单介绍一下格式塔原理中的基本概念,
线段树-poj1177-N个矩形求边长(离散化+扫描线)
bylijinnan
数据结构 算法 线段树
package com.ljn.base;
import java.util.Arrays;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;
/**
* POJ 1177 (线段树+离散化+扫描线),题目链接为http://poj.org/problem?id=1177
HTTP协议详解
chicony
http协议
引言
Scala设计模式
chenchao051
设计模式 scala
Scala设计模式
我的话: 在国外网站上看到一篇文章,里面详细描述了很多设计模式,并且用Java及Scala两种语言描述,清晰的让我们看到各种常规的设计模式,在Scala中是如何在语言特性层面直接支持的。基于文章很nice,我利用今天的空闲时间将其翻译,希望大家能一起学习,讨论。翻译
安装mysql
daizj
mysql 安装
安装mysql
(1)删除linux上已经安装的mysql相关库信息。rpm -e xxxxxxx --nodeps (强制删除)
执行命令rpm -qa |grep mysql 检查是否删除干净
(2)执行命令 rpm -i MySQL-server-5.5.31-2.el
HTTP状态码大全
dcj3sjt126com
http状态码
完整的 HTTP 1.1规范说明书来自于RFC 2616,你可以在http://www.talentdigger.cn/home/link.php?url=d3d3LnJmYy1lZGl0b3Iub3JnLw%3D%3D在线查阅。HTTP 1.1的状态码被标记为新特性,因为许多浏览器只支持 HTTP 1.0。你应只把状态码发送给支持 HTTP 1.1的客户端,支持协议版本可以通过调用request
asihttprequest上传图片
dcj3sjt126com
ASIHTTPRequest
NSURL *url =@"yourURL";
ASIFormDataRequest*currentRequest =[ASIFormDataRequest requestWithURL:url];
[currentRequest setPostFormat:ASIMultipartFormDataPostFormat];[currentRequest se
C语言中,关键字static的作用
e200702084
C++ c C#
在C语言中,关键字static有三个明显的作用:
1)在函数体,局部的static变量。生存期为程序的整个生命周期,(它存活多长时间);作用域却在函数体内(它在什么地方能被访问(空间))。
一个被声明为静态的变量在这一函数被调用过程中维持其值不变。因为它分配在静态存储区,函数调用结束后并不释放单元,但是在其它的作用域的无法访问。当再次调用这个函数时,这个局部的静态变量还存活,而且用在它的访
win7/8使用curl
geeksun
win7
1. WIN7/8下要使用curl,需要下载curl-7.20.0-win64-ssl-sspi.zip和Win64OpenSSL_Light-1_0_2d.exe。 下载地址:
http://curl.haxx.se/download.html 请选择不带SSL的版本,否则还需要安装SSL的支持包 2. 可以给Windows增加c
Creating a Shared Repository; Users Sharing The Repository
hongtoushizi
git
转载自:
http://www.gitguys.com/topics/creating-a-shared-repository-users-sharing-the-repository/ Commands discussed in this section:
git init –bare
git clone
git remote
git pull
git p
Java实现字符串反转的8种或9种方法
Josh_Persistence
异或反转 递归反转 二分交换反转 java字符串反转 栈反转
注:对于第7种使用异或的方式来实现字符串的反转,如果不太看得明白的,可以参照另一篇博客:
http://josh-persistence.iteye.com/blog/2205768
/**
*
*/
package com.wsheng.aggregator.algorithm.string;
import java.util.Stack;
/**
代码实现任意容量倒水问题
home198979
PHP 算法 倒水
形象化设计模式实战 HELLO!架构 redis命令源码解析
倒水问题:有两个杯子,一个A升,一个B升,水有无限多,现要求利用这两杯子装C
Druid datasource
zhb8015
druid
推荐大家使用数据库连接池 DruidDataSource. http://code.alibabatech.com/wiki/display/Druid/DruidDataSource DruidDataSource经过阿里巴巴数百个应用一年多生产环境运行验证,稳定可靠。 它最重要的特点是:监控、扩展和性能。 下载和Maven配置看这里: http
两种启动监听器ApplicationListener和ServletContextListener
spjich
java spring 框架
引言:有时候需要在项目初始化的时候进行一系列工作,比如初始化一个线程池,初始化配置文件,初始化缓存等等,这时候就需要用到启动监听器,下面分别介绍一下两种常用的项目启动监听器
ServletContextListener
特点: 依赖于sevlet容器,需要配置web.xml
使用方法:
public class StartListener implements
JavaScript Rounding Methods of the Math object
何不笑
JavaScript Math
The next group of methods has to do with rounding decimal values into integers. Three methods — Math.ceil(), Math.floor(), and Math.round() — handle rounding in differen