Uncategorized

Wiki List of HTTP Response Header Fields

Posted on

Response fields Field name Description Example Status Access-Control-Allow-Origin, Access-Control-Allow-Credentials, Access-Control-Expose-Headers, Access-Control-Max-Age, Access-Control-Allow-Methods, Access-Control-Allow-Headers[7] Specifying which web sites can participate in cross-origin resource sharing Access-Control-Allow-Origin: * Permanent: standard Accept-Patch[34] Specifies which patch document formats this server supports Accept-Patch: text/example;charset=utf-8 Permanent Accept-Ranges What partial content range types this server supports via byte serving Accept-Ranges: bytes Permanent Age […]

Uncategorized

Wiki List of HTTP Request Header Fields

Posted on

Request fields Header field name Description Example Status Accept Media type(s) that is(/are) acceptable for the response. See Content negotiation. Accept: text/plain Permanent Accept-Charset Character sets that are acceptable. Accept-Charset: utf-8 Permanent Accept-Encoding List of acceptable encodings. See HTTP compression. Accept-Encoding: gzip, deflate Permanent Accept-Language List of acceptable human languages for response. See Content negotiation. […]

Uncategorized

Object Relational Mapping

Posted on

一、ORM简介 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。那么,到底如何实现持久化呢?一种简单的方案是采用硬编码方式,为每一种可能的数据库访问操作提供单独的方法。 这种方案存在以下不足: 1.持久化层缺乏弹性。一旦出现业务需求的变更,就必须修改持久化层的接口 2.持久化层同时与域模型与关系数据库模型绑定,不管域模型还是关系数据库模型发生变化,毒药修改持久化曾的相关程序代码,增加了软件的维护难度。 ORM提供了实现持久化层的另一种模式,它采用映射元数据来描述对象关系的映射,使得ORM中间件能在任何一个应用的业务逻辑层和数据库层之间充当桥梁。Java典型的ORM中间件有:Hibernate,ibatis,speedframework。 ORM的方法论基于三个核心原则:   · 简单:以最基本的形式建模数据。   · 传达性:数据库结构被任何人都能理解的语言文档化。   · 精确性:基于数据模型创建正确标准化了的结构。 二、ORM的概念 让我们从O/R开始。字母O起源于”对象”(Object),而R则来自于”关系”(Relational)。几乎所有的程序里面,都存在对象和关系数据库。在业务逻辑层和用户界面层中,我们是面向对象的。当对象信息发生变化的时候,我们需要把对象的信息保存在关系数据库中。 当你开发一个应用程序的时候(不使用O/R Mapping),你可能会写不少数据访问层的代码,用来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的方法来读取对象数据,改变状态对象等等任务。而这些代码写起来总是重复的。 ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建立在概念模型的基础上的。域模型是面向对象的,而关系模型是面向关系的。一般情况下,一个持久化类和一个表对应,类的每个实例对应表中的一条记录,类的每个属性对应表的每个字段。 ORM技术特点: 1.提高了开发效率。由于ORM可以自动对Entity对象与数据库中的Table进行字段与属性的映射,所以我们实际可能已经不需要一个专用的、庞大的数据访问层。 2.ORM提供了对数据库的映射,不用sql直接编码,能够像操作对象一样从数据库获取数据。 三、ORM的优缺点 ORM的缺点是会牺牲程序的执行效率和会固定思维模式。 从系统结构上来看,采用ORM的系统一般都是多层系统,系统的层次多了,效率就会降低。ORM是一种完全的面向对象的做法,而面向对象的做法也会对性能产生一定的影响。 在我们开发系统时,一般都有性能问题。性能问题主要产生在算法不正确和与数据库不正确的使用上。ORM所生成的代码一般不太可能写出很高效的算法,在数据库应用上更有可能会被误用,主要体现在对持久对象的提取和和数据的加工处理上,如果用上了ORM,程序员很有可能将全部的数据提取到内存对象中,然后再进行过滤和加工处理,这样就容易产生性能问题。 在对对象做持久化时,ORM一般会持久化所有的属性,有时,这是不希望的。 但ORM是一种工具,工具确实能解决一些重复,简单的劳动。这是不可否认的。但我们不能指望工具能一劳永逸的解决所有问题,有些问题还是需要特殊处理的,但需要特殊处理的部分对绝大多数的系统,应该是很少的。

Object Oriented

POP VS OOP

Posted on

Procedure Oriented Programming Object Oriented Programming Divided Into In POP, program is divided into small parts called functions. In OOP, program is divided into parts called objects. Importance In POP,Importance is not given to data but to functions as well as sequence of actions to be done. In OOP, Importance is given to the data […]

Uncategorized

Java Technologies Stack

Posted on

1 java基础: 1.1 算法 1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题 1.2 基本 2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode 2.4 泛型、异常、反射 2.5 string的hash算法 2.6 hash冲突的解决办法:拉链法 2.7 foreach循环的原理 2.8 static、final、transient等关键字的作用 2.9 volatile关键字的底层实现原理 2.10 Collections.sort方法使用的是哪种排序方法 2.11 Future接口,常见的线程池中的FutureTask实现等 2.12 string的intern方法的内部细节,jdk1.6和jdk1.7的变化以及内部cpp代码StringTable的实现 1.3 设计模式 单例模式 工厂模式 装饰者模式 观察者设计模式 ThreadLocal设计模式 。。。 1.4 正则表达式 4.1 捕获组和非捕获组 4.2 贪婪,勉强,独占模式 1.5 java内存模型以及垃圾回收算法 5.1 类加载机制,也就是双亲委派模型 5.2 […]

Docker

RESTful API Designing Memos

Posted on

1、Protocol HTTPs is the protocal that governs the communication between APIs and the user. 2、Domain Name A dedicated domain name should be reserved for the deployment of APIs. https://api.example.com APIs can be placed under the primary domain name if not to be further scaleable. https://example.org/api/ 3、Versioning URLs that direct to the APIs should include version […]

Uncategorized

API 设计风格

Posted on

摘要:IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查结果表明,JSON与XML可谓两分天下,50.5%的投票给予了JSON,47.8%的票数落在了XML。 日前,全球领先的IT咨询管理公司CA Technologies对API产业做了个问卷调查,问卷内容涉及API设计风格以及管理部署的新动向。调查对象是CA的客户,截至目前,共计收到180份来自API管理领域的专家或相关企业的回复 调查结果表明,JSON与XML可谓两分天下,50.5%的投票给予了JSON,47.8%的票数落在了XML。 在Web技术服务方面: 43.5%的产品支持CRUD,18.8%的受访者会考虑增添该支援; 41.9%的产品支持SOAP;19.1%的受访者会考虑增添该支援; 26.3%的产品支持Hypermedia(超媒体);28%的受访者会考虑增添该支援。 其中,有以下四种最为开发者熟悉和使用的风格: 一、Tunneling Style(隧道式风格) 隧道式设计之前一直是最广泛采用的方案,与之对接的Web服务的技术通常是SAOP。而从近10年的情况来看,SOAP APIs的采用率出现了下滑,以下给出了导致该状况的几点分析: SOAP对于开发者来说较复杂且难掌握; SOAP对基础架构要求较高,在移动端的使用更是寥寥可数,因为过于庞大; SOAP有极其严格的格式要求,因此开发者的自由与创新受到限制。 隧道式APIs的典型用户有eBay和PayPal。其特性包括: 提供组件级别的接口; 在域中对对象组件进行绑定; 发布和确保终端的安全; 以XML为中心的信息格式。 尽管SOAP的采用每况愈下,但对端对端通信安全性以及第三方认证有特殊需求的企业来说,SOAP仍占一席之地。 二、URI Style(通用资源标识符风格) 由于原生的网络属性,通用资源标识符风格可能是目前最广为人知而使用又最为广泛的设计样式了;相对于隧道式,它就显得平易近人多了。 采用URI的代表作有,Box(网盘) API以及StackMob(云后端服务) API。如果对Box API感兴趣,可以参阅ProgrammableWeb一篇对其深度剖析文章,链接请点击这里。 其特性包括: 基于对象级别的接口; 在域中对对象进行绑定; 对URIs和查询参数进行预定义; 执行CRUD(增加、查询、更新、删除)操作。 在公共APIs、移动端和网络应用程式中,URI风格被广泛使用,同时可用于访问以SOAP为后台的旧系统数据以及网络服务。 三、Hypermedia Style(超媒体风格) 超媒体风格API以图形、声音、动画等超媒体元素为设计之本,建基于REST风格,REST是由Adobe高级技术专家、Apache联合创始人Roy Fielding提出的。 应用超媒体风格的例子有PayPal REST APIs以及Elastic Path(电商平台)Cortex Hypermedia API。 其特性包括: 基于消息级别的接口; 对消息进行绑定; 与REST相结合; 拥有属于自己的URIs; HATEOAS(Hypermedia As The Engine […]

Uncategorized

Java Collection Traversal

Posted on

集合类的通用遍历方式, 用迭代器迭代: Iterator it = list.iterator(); while(it.hasNext()) {   Object obj = it.next(); } Map遍历方式 1. 通过获取所有的key按照key来遍历 //Set<Integer> set = map.keySet(); //得到所有key的集合 for (Integer in : map.keySet()) { String str = map.get(in);//得到每个key多对用value的值 } 2. 通过Map.entrySet使用iterator遍历key和value Iterator<Map.Entry<Integer, String>> it = map.entrySet().iterator(); while (it.hasNext()) { Map.Entry<Integer, String> entry = it.next(); System.out.println(“key= ” + entry.getKey() + ” and value= […]

Uncategorized

rsync命令常用工具命令

Posted on

rsync命令是一个远程数据同步工具,可通过LAN/WAN快速同步多台主机间的文件。rsync使用所谓的“rsync算法”来使本地和远程两个主机之间的文件达到同步,这个算法只传送两个文件的不同部分,而不是每次都整份传送,因此速度相当快。 rsync是一个功能非常强大的工具,其命令也有很多功能特色选项,我们下面就对它的选项一一进行分析说明。 语法 rsync [OPTION]… SRC DEST rsync [OPTION]… SRC [USER@]host:DEST rsync [OPTION]… [USER@]HOST:SRC DEST rsync [OPTION]… [USER@]HOST::SRC DEST rsync [OPTION]… SRC [USER@]HOST::DEST rsync [OPTION]… rsync://[USER@]HOST[:PORT]/SRC [DEST] 对应于以上六种命令格式,rsync有六种不同的工作模式: 1.拷贝本地文件。当SRC和DES路径信息都不包含有单个冒号”:”分隔符时就启动这种工作模式。如:rsync -a /data /backup 2.使用一个远程shell程序(如rsh、ssh)来实现将本地机器的内容拷贝到远程机器。当DST路径地址包含单个冒号”:”分隔符时启动该模式。如:rsync -avz *.c foo:src 3.使用一个远程shell程序(如rsh、ssh)来实现将远程机器的内容拷贝到本地机器。当SRC地址路径包含单个冒号”:”分隔符时启动该模式。如:rsync -avz foo:src/bar /data 4.从远程rsync服务器中拷贝文件到本地机。当SRC路径信息包含”::”分隔符时启动该模式。如:rsync -av root@192.168.78.192::www /databack 5.从本地机器拷贝文件到远程rsync服务器中。当DST路径信息包含”::”分隔符时启动该模式。如:rsync -av /databack root@192.168.78.192::www 6.列远程机的文件列表。这类似于rsync传输,不过只要在命令中省略掉本地机信息即可。如:rsync -v rsync://192.168.78.192/www 选项 -v, –verbose 详细模式输出。 […]