接口

一句话设计模式

别等时光非礼了梦想. 提交于 2020-03-14 02:55:07
创建型 1.抽象工厂模式(AbstractFactory)   提供一个创建一系列或相关依赖对象的接口,而无需指定它们具体的类 2.创建者模式(Builder)   将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 3.工厂方法模式(FactoryMethod)   定义一个用于创建对象的接口,让子类决定实例化哪一个类,使得一个类的实例化延迟到其子类 4.原型模式(Prototype)   用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象 5.单例模式(Singleton)   保证一个类仅有一个实例,并提供它的一个全局访问点 结构型 6.适配器模式(Adapter)   将一个类的接口转换成客户希望的另一个接口,使得原本由于接口不兼容而不能在一起工作的类一起工作 7.桥接模式(Bridge)   将抽象部分与它的实现部分分离,使它们都可以独立地变化 8.组合模式(Composite)   将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性 9.装饰模式(Decorator)   动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更为灵活 10.外观模式(Facade)   为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更加容易使用 11

近期项目整理

拈花ヽ惹草 提交于 2020-03-13 19:41:52
一、项目介绍 首先介绍下这个项目的大体流程,这是个接口程序,接收北向给的xml文件,然后转换为Document对象,然后把参数部分,按照指定的格式传递给南向接口。南向接口接收到消息以后,会做出处理,处理完以后,需要把返回的信息进行解析,解析后,在转换为Xml格式的文件,传递给北向接口。 需要做两个接口,一个接口是同步接口,另外一个接口是异步接口。同步接口接收信息后直接返回。异步接口需要回调北向给的接口方法,需要把参数先放到ActiveMQ中,然后再从MQ中取参数。 二、代码调试 最先使用myeclipse从SVN上下载代码,然后就直接开始使用了,发现好多jar包没有下载下来,然后就把maven引用删了,直接引入了所有的包。最后的结果告诉我,最好还是使用maven管理包,这样不会出现后期引用导致的包冲突。 因为程序是中间接口,首先要发布的webService可以连接北向。然后连接北向之后需要做的事情就是处理南向。其实现在调试通以后,觉得代码也比较熟悉。没有最开始那么费劲。 三、调试感受 其实代码量很小,但是调试两个周,主要原因是,调试前,业务不了解。代码比较混乱,看不清结构。 调试过后,重新整理了代码结构,感觉代码比较清晰,去掉了无用代码,感觉代码量少了很多。很多方法都没有使用,我都删了。。 感觉还是要静下心来做,不要觉得没啥意义,其实调试结束后,自己还是挺开心的,虽然过程很痛苦。

记一次忘记释放资源导致连接池满了的坑

爷,独闯天下 提交于 2020-03-13 16:51:18
spring ssm项目 ,部署在tomcat上,最近发现项目过一段时间,访问的接口就没有任何响应。 先ping服务器,没问题。telnet应用端口,发现telnet不上,tomcat主页偶尔可以偶尔不可以。 把tomcat下的日志拷贝下来,观察了从上一次重启到服务宕掉的日志,发现日志中并没有异常,比如说内存溢出,程序异常报错等等 初步认为是因为服务是通过手动开启的,而我以远程登录服务器的方式,导致进程坑能被系统关掉或者停掉. 那我通过类似console口连接的方式连接到服务器上,把服务注册为守护进程,这样子应该可以解决掉了,当时觉得问题解决掉了。 很快的,过了一段时间,出现了同样得问题了,因为当时应用程序并没有任何异常日志,所以暂时没有了思路。 尝试着在这段时间访问tomcat主页,tomcat正常访问。 连接到服务器,查看服务端口的情况,服务端口大部分情况都是close_wait,这让我觉得不太对劲。访问taomcat主页登录到管理界面,应用显示正常运行状态。 打开项目代码,用本机测试本地项目接口的运行情况,测试了一会儿,访问一个最近因为业务改变而做了修改的接口发现,这个接口多次被访问后,所有接口都没有任何响应了。当时没有注意到是这一个接口,开始怀疑数据库连接池配置出现问题,认真查看了数据库连接池配置,配置了连接最大最小连接数,空闲连接数,数据库连接最大空闲等待时间等等

linux网络体系架构

旧巷老猫 提交于 2020-03-13 09:25:51
原创kylin_zeng: http://blog.csdn.net/kylin_fire_zeng 本文参考国嵌视频教程,再此感谢国嵌教育。 一、协议栈层次对比: 1)网络接口层把数据链路层和物理层合并在了一起,提供访问物理设备的驱动程序,对应的网络协议主要是以太网协议。 2)网络层协议管理离散的计算机间的数据传输,如IP协议为用户和远程计算机提供了信息包的传输方法,确保信息包能正确地到达目的机器。重要的网络层协议包括ARP(地址解析协议)、ICMP(Internet控制消息协议)和IP协议(网际协议)等 3)传输层的功能包括:格式化信息流、提供可靠传输。传输层包括TCP(Transmission Control Protocol,传输控制协议)和UDP(User Datagram Protocol,用户数据报协议),它们是传输层中最主要的协议 4)应用层位于协议栈的顶端,它的主要任务是服务于应用,如利用FTP(文件传输协议)传输一个文件。常见的应用层协议有:HTTP,FTP,Telnet等。应用层是Linux网络设定很关键的一层,Linux服务器的配置文档主要针对应用层中的协议 二、linux网络子系统 1) 2)Linux 网络子系统的顶部是系统调用接口层。它为用户空间的应用程序提供了一种访问内核网络子系 统的方法。位于其下面的是一个协议无关层

如何建立架构师所需的立体化思维?【1】

醉酒当歌 提交于 2020-03-13 05:11:27
从程序员往架构师转型的路上,蔡学镛老师总结的“四维架构设计方法论”对我颇有帮助,让我对架构设计有了更立体化、系统化的认知,现将学习心得分享出来供需要的小伙伴参考。 这套方法论通过空间( X 、 Y 、 Z )三个维度及时间 T 维度将问题域解构成可以轻松应对的小方块,分而治之。同时,空间( X 、 Y 、 Z )三个维度联动,专门为单个维度解决不了的问题提供解决方案。时间 T 维度将问题分解到一个时间范围内,分步骤按节奏逐一解决。多维度、立体化、分层次、动态演进,这是我对这套方法论特点的总结。 接下来,让我们进入这个四维的架构时空一探究竟! 图 1 四维座标系统 前后端维度( X1 … X7 ) 前后端维度被分解为交互、业务、领域、资源四大层,其中业务可以细分为应用 X2 、框架 X3 ,领域可以细分为服务 X4 、核心 X5 ,资源也可以细分为代理 X6 、数据 X7 ,共分为七个层次。服务 X4 可以实现 API ,如果公开,就是开放接口,调用服务层的接口,通常需要授权。代理 X6 可以实现 SPI ,隔离耦合,避免核心 X5 依赖特定的外部系统或数据库。每个层次做到高内聚,层与层之间做到低耦合。 图 2 X 轴分层结构 在系统实现过程中,可以综合考虑现状, X2 应用和 X3 框架可以不分拆, X4 服务和 X5 核心可以不分拆,待后续时机成熟可以再重构分层

写代码的规范!!!!

旧街凉风 提交于 2020-03-13 04:35:40
代码规范 第一条:考虑用静态工厂方法代替构造器 原因:静态工厂方法第一大优势它们有名称,第二大优势,不必在每次调用时都创建一个新对象, 第三优势可以返回原返回类型的任何子类型的对象。 (冷不丁的想用枚举来做静态工厂实现) 第四优势在创建参数化类型实例的时候,他们使得代码变得更加简洁。 缺点当然也有:一:类如果不含共有或者受保护的构造器就不能被子类化,二:与其他静态方法没有区别。 遵守命名习惯可以弥补这一劣势,比如newtype创建新对象,gettype获取对象 所以,一般一个静态工厂方法需要有详细的注释,遵守标准的命名, 如使用getInstance、valueOf、newInstance等方法名; 第二条:遇到多个构造器参数时要考虑用构造器 第一中构造就是常见的重叠构造器,一个构造器中this(xxx)调用同名构造器,但是参数过多就容易懵了, 可以使用无参模式,build生成不可变对象。 第三条:用私有构造器或枚举类型强化Singleton属性(单例模式) 第四条:通过私有构造器强化不可实例化的能力 第五条:避免创建不必要的对象,重用不可变对象 小心自动拆装箱,要优先使用基本类型而不是装箱基本类型,要当心无意识的自动装箱。 第6条:消除过期对象的引用:下面例子引用了arraylist的remove方法, 如果没有将元素置为null的话,就会随着垃圾回收器活动的增加

JpaRepository 和JpaSpecificationExecutor

独自空忆成欢 提交于 2020-03-13 01:52:31
JpaRepository继承自PagingAndSortingRepository接口,JpaRepository基于JPA的Repository接口,极大减少了JPA作为数据访问的代码,JpaRepository是实现Spring Data JPA技术访问数据库的关键接口。 JpaSpecificationExecutor JpaSpecificationExecutor接口不能够单独使用,需要和其他接口一块使用 https://cloud.tencent.com/developer/article/1429349 来源: https://www.cnblogs.com/summerOnlyOne/p/12483722.html

0312 java接口测试三棱军刺rest-assured

安稳与你 提交于 2020-03-13 01:50:53
背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。 使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。 快速的来一个hello world吧! 假设你写了一个接口:lotto,访问路径是: http://localhost:8080/lotto 接口返回值是: { "lotto":{ "lottoId":5, "winning-numbers":[2,45,34,23,7,5,3], "winners":[{ "winnerId":23, "numbers":[2,45,34,23,3,5] },{ "winnerId":54, "numbers":[52,3,12,11,18,22] }] } } 如何快速的验证接口是否返回正常值呢? get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54)); 使用简单吧! 引入 不多说,直接maven的方式引入:注意,我直接按照默认的scope引入的,不是test;

0312 java接口测试三棱军刺rest-assured

|▌冷眼眸甩不掉的悲伤 提交于 2020-03-13 00:27:21
背景 java程序员一般写的是后端服务是JavaWeb类型的项目,主要包括Http接口和dubbo接口,Http接口一般采用的rest风格,那么如何快速的对rest接口在第三方的测试框架上进行测试呢? rest-assured框架是一个不错的工具。好比军人的三棱军刺,如上图。 使用之前,需要熟悉一下最基础的使用方法,在写完几个接口的测试用例之后,好比你可以使用你的三棱军刺熟练的进行基础的攻击了。 快速的来一个hello world吧!<br /> <br />假设你写了一个接口:lotto,访问路径是: http://localhost:8080/lotto <br /> <br />接口返回值是: { "lotto":{ "lottoId":5, "winning-numbers":[2,45,34,23,7,5,3], "winners":[{ "winnerId":23, "numbers":[2,45,34,23,3,5] },{ "winnerId":54, "numbers":[52,3,12,11,18,22] }] } } 如何快速的验证接口是否返回正常值呢? get("/lotto").then().body("lotto.winners.winnerId", hasItems(23, 54)); 使用简单吧! 引入 不多说,直接maven的方式引入:注意