为您找到搜索结果:1775个
企业DevOps研发模式下CI/CD实践详解指南
阅读全文大概需要10分钟。 借着公司今年新组建的中台研发部东风,我作为其中的主要负责人,在研发中心主导推行DevOps研发管理模式转变及质量管理创新建设,本篇文章摘取自今年9月底,笔者在公司内部针对全体研发人员的一次DevOps培训PPT中的部分内容,涉及公司敏感信息和部分章节内容顺序已经作过处理。 相信大部分读者此前,对DevOps没并有过多或全面的接触,为了回馈读者,因此将此次公司内训其中涉及DevOps一些核心理念和实践经验抽取出来,分享给大家。(如有不正确的,欢迎纠正) 最近几年,相信大家经常会看到DevOps这个词,也有很多专门以DevOps为主题的大型行业技术峰会。虽然DevOps最近几年才在国内公司流行,但实际上DevOps早在2009年就已经被提出来了。 那经常一直说DevOps,DevOps到底是个什么东西? DevOps目前其实并没有一个权威的定义,即便一些在DevOps领域耕耘很久的大师,对DevOps也无法给出一个统一的定义,久而久之,行业也有这样的一个说法:“如果有1000个人在说Dev...
自动化测试框架比较
编辑器加载中...最近在研究自动化测试框架,也和网上的很多朋友聊了很多各种自动化框架的实现,我对其总结归纳比较下。当然,一家之言,仅供参考: 1、以QTP为核心的框架 QTP是大家最常用的测试工具。而现在很多公司用的自动化测试框架都是以此为核心的。我在触自动化测试之初最先上手的也是QTP。 以QTP为核心的自动化测试框架优点在于:适用性好,很多人都已经会用或者至少说可以简单应用,脚本也简单易懂,大多数无任何代码基础的测试人员都可以加入脚本录制和调试。 我本人一直对QTP不太感冒的原因也就是它的缺点:对象库。这个词对自动化测试的tester们实在是个巨大的打击。我不去一一细数其罪行,但是,关键字的框架,灵活度实在不敢恭维。再加上QTP在对flex等的支持上实在是也让人欲哭无泪。如果说还有其他的,就是一旦应用于企业自动化测试框架,必然需要购买正版,价格的问题。。。 2、RFT RationalFunctionalTester,IBM的产品。我一直对ibm产品颇具好感,不知道是不是由于第一台笔记本就买了IBM的缘故。跑题了,回来说这个框架。 优点:其一是相比起QTP框架,灵活度...
深入理解java:4.3. 框架编程之MyBatis原理深入解析
本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤:/加载JDBC驱动;建立并获取数据库连接;创建JDBCStatements对象;设置SQL语句的传入参数;执行SQL语句并获得查询结果;对查询结果进行转换处理并将处理结果返回;释放相关资源(关闭Connection,关闭Statement,关闭ResultSet);以下是具体的实现代码:publicstaticList<Map<String,Object>>queryForList(){Connectionconnection=null;ResultSetrs=null;PreparedStatementstmt=null;List<Map<String,Object>>resultList=newArrayList<Map<String,Object>&g...
深入理解java:4.2. 框架编程之Spring框架的设计理念
什么是Spring呢?Spring是为了解决企业应用开发的复杂性而创建的一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架。 简单了解Spring之后,我们看一下Spring的优点。1、方便解耦,简化开发。2、AOP编程的支持。3、声明式事务的支持。4、方便程序的测试。。5、方便集成各种优秀框架。6、降低JavaEEAPI的使用难度。Spring的骨骼架构Spring总共有十几个组件,但是真正核心组件只有三个:Core、Context和Beans。没有它们就不可能有AOP、Web、ORM等上层的扩展的特性功能。Spring的设计理念Spring的三个核心组件,Bean比作一场演出中的演员的话,那Context就是这场演出的舞台背景,而Core应该就是演出的道具了。三个核心组件中最核心那就非Beans组件莫属了,因为Spring就是面向Bean的编程(BOP,BeanOrientedProgramming),Bean在Spring中才是真正的主角。Bean在Spring中作用就像Object对OOP的意义一样。Bean包装的是Obj...
深入理解java:4.1. 框架编程之Spring MVC
说到java的mvc框架,struts2和springmvc想必大家都知道,SpringMVC是当前最优秀的MVC框架,自从Spring2.5版本发布后,由于支持注解配置,易用性有了大幅度的提高。springmvc是依托着Servlet容器元素来设计的,同时springmvc基于Spring框架。struts2的设计基本上完全脱离了Servlet容器,Struts2由于采用了值栈、OGNL表达式、struts2标签库等,会导致应用的性能下降,应避免使用这些功能。spring可以让我们构造简单的、便携的、又快又易于扩展的基于jvm的系统和应用程序。 DispatcherServlet是SpringMVC的灵魂和心脏,它负责接收HTTP请求并协调SpringMVC的各个组件完成请求处理的工作。和任何Servlet一样,用户必须在web.xml中配置好DispatcherServlet,并且让其接受一切HTTP请求。当用户的请求被截获时,DispatcherServlet通过HandlerMapping定位到特定的Controller(使用@Controller注解的普通Java类...
深入理解java:4. 框架编程
了解Servlet和FilterServlet(即servlet-api.jar)是J2EE最重要的一部分,有了Servlet你就是J2EE了,J2EE的其他方面的内容择需采用。而Servlet规范你需要掌握的就是servlet和filter这两项技术。绝大多数框架不是基于servlet就是基于filter,如果它要在Servlet容器上运行,就永远也脱离不开这个模型。Servlet容器,大一点就是应用服务器,推荐Tomcat、或者Jetty这些轻量级的产品。SpringMVC的入口是servlet:servlet是一种运行服务器端的java应用程序,具有独立于平台和协议的特性,并且可以动态的生成web页面,它工作在客户端请求与服务器响应的中间层。Struts2的入口是filter:filter是一个可以复用的代码片段,可以用来转换HTTP请求、响应和头信息。Filter不像Servlet,它不能产生一个请求或者响应,它只是修改对某一资源的请求,或者修改从某一的响应。filter能够在一个请求到达servlet之前预处理用户请求,也可以在离开servlet时处理http响应。 ...
花了快2个月!自己动手写了一个简单的RPC框架
大概2个月前,我说过要利用业余时间写一个简单的RPC框架,今天总算将其开源出来,希望对小伙伴们有帮助。虽说RPC的原理实际不难,但是,自己在实现的过程中自己也遇到了很多问题。Guide-rpc-framework目前只实现了RPC框架最基本的功能,一些可优化点都在下面提到了,有兴趣的小伙伴可以自行完善。Guide-rpc-framework是一款基于Netty+Kyro+Zookeeper实现的RPC框架。代码注释详细,结构清晰,并且集成了CheckStyle规范代码结构,非常适合阅读和学习。由于Guide哥自身精力和能力有限,如果大家觉得有需要改进和完善的地方的话,欢迎将本项目clone到自己本地,在本地修改后提交PR给我,我会在第一时间Review你的代码。我们先从一个基本的RPC框架设计思路说起!一个典型的使用RPC的场景如下,一般情况下RPC框架不仅要提供服务发现功能,还要提供负载均衡、容错等功能,这个的RPC框架才算真正合格。 一个完整的RPC框架使用示意图简单说一下设计一个最基本的RPC框架的思路:注册中心 :注册中心首先是要有的,推荐使用Zookeep...
还在手写任务调度代码?试试这款可视化分布式调度框架
转载:https://mp.weixin.qq.com/s/CgKdYNvj7NrxE-0WFCH5yg在微服务系统中,经常会有用到任务调度的场景。比如每天定时同步数据、定时生成业务报表、定期清理日志等。今天给大家推荐一个分布式调度框架,助你你轻松完成任务调度工作!PowerJob是全新一代分布式调度与计算框架,能让你轻松完成任务的调度与繁杂任务的分布式计算。主要特性:使用简单:提供前端Web界面,允许开发者可视化完成调度任务的管理及查看任务运行状态和日志。定时策略完善:支持CRON表达式、固定频率、固定延迟和API四种定时调度策略。执行模式丰富:支持单机、广播、Map、MapReduce四种执行模式。依赖精简:最小仅依赖关系型数据库(MySQL等),扩展依赖为MongoDB(用于存储庞大的在线日志)。一般情况下我们会使用QuartZ或SpringTask这些框架在应用中实现定时任务来进行任务调度,但是在微服务架构下,如果很多应用都充斥着这种任务调度代码就显得有些不合适。合理的方案应该是这样的,任务的执行方法存在于应用中,而我们有一个调度中心,调度中心负责调度这些方法,我们只需在调度中...
要想精通Mybatis?从手写Mybatis框架开始吧!
1、Mybatis组成动态SQLConfig配置Mapper配置2、核心源码分析Configuration源码解析SqlSessionFactory源码解析SqlSession源码解析SqlSessionManager源码解析3、手写Mybatis框架Mybatis是什么?Mybatis是一种半自动ORM框架,前身是iBatis,源于“Internet”和“abatis”的组合,除了POJO和映射关系之外,还需要编写SQL语句; Mybatis映射三要素:POJO映射规则SQL Mybatis快速入门:加入mybatis的依赖添加mybatis的配置文件场景介绍编写实体类、mapper接口以及mapperxml文件;编写测试代码 MyBatis核心流程三大阶段: 1.初始化阶段 读取XML配置文件和数据库配置文件中的信息加载到configuration对象中; 2.动态代理阶段3.数据读写阶段 话说SqlSession Sqlsession意味着创建数据库会话...
老司机教你用原生JDK 撸一个 MVC 框架!!!
其实 Spring MVC 是一个基于请求驱动的 Web 框架,并且也使用了前端控制器模式来进行设计,再根据请求映射规则分发给相应的页面控制器进行处理,具体工作原理见下图。 在这里,就不详细谈相关的原理和实现细节了,感兴趣的话,可以读一下这方面的书籍。我在网上看到一篇不错的关于讲述怎么实现一个 MVC 框架的文章,在此,分享给各位读者,也许能帮助到你。原文内容如下。我今天主要带大家实现一个迷你版的 Spring MVC ,本项目将在一个干净的 web 工程开发,不引入 Spring,完全通过原生 JDK 来实现。具体的工程代码结构如下图。相关代码说明:在 annotation 包下,我将提供自定义的注解,为了方便理解,会与 Spring MVC 保持一致。为了模拟 Spring MVC 的方法调用链,我这里提供 Controller/Ser...
来,带你鸟瞰 Java 中4款常用的并发框架!
1.为什么要写这篇文章几年前NoSQL开始流行的时候,像其他团队一样,我们的团队也热衷于令人兴奋的新东西,并且计划替换一个应用程序的数据库。但是,当深入实现细节时,我们想起了一位智者曾经说过的话:“细节决定成败”。最终我们意识到NoSQL不是解决所有问题的银弹,而NoSQLvsRDMS的答案是:“视情况而定”。 类似地,去年RxJava和SpringReactor这样的并发库加入了让人充满激情的语句,如异步非阻塞方法等。为了避免再犯同样的错误,我们尝试评估诸如ExecutorService、RxJava、Disruptor和Akka这些并发框架彼此之间的差异,以及如何确定各自框架的正确用法。本文中用到的术语在这里有更详细的描述。2.分析并发框架的示例用例 3.快速更新线程配置在开始比较并发框架的之前,让我们快速复习一下如何配置最佳线程数以提高并行任务的性能。这个理论适用于所有框架,并且在所有框架中使用相同的线程配置来度量性能。对于内存任务,线程的数量大约等于具有最佳性能的内核的数量,尽管它可以根据各自处理器中的超线程特性进行一些更改。例如,在8核机器中,如果对应用程...
.NET平台常见技术框架整理汇总
使用.NET平台开发有段时间了,在网上资料的基础上做了进一步整理,汇集了.NET平台常见的技术框架。参考资料:/基于.NET平台常用的框架整理.NET开源框架列表2.1.分布式缓存框架名称说明地址WindowsServerAppFabric微软自家分布式缓存服务框架,扩展了WindowsServer为Web应用程序和中间层服务提供增强的托管、管理和缓存功能https://www.microsoft.com/en-us/download/details.aspx?id=27115Memcahed高性能的分布式内存对象缓存系统。它基于一个存储键/值对的hashmap,通过在内存中缓存数据和对象来减少读取数据库的次数,从而提高动态、数据库驱动网站的速度。http://memcached.org/Redis使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的APIhttps://redis.io/NCache基于NGINX的Web服务器构建起来的缓存系统,适用于需要快速部署、大并发量、大存储量的需求http://www.alachisoft...
OUTLOOK添加企业邮箱
1、添加中南大学邮箱:(1)选择【添加账户】,打开【高级选项】,勾选【让我手动设置我的账户】。(2)选择POP,然后配置信息:接受邮件:pop3.csu.edu.cn,发送邮件:smtp.csu.edu.cn。(3)输入密码,即可连接。2、添加QQ企业邮箱:(1)选择【添加账户】,打开【高级选项】,勾选【让我手动设置我的账户】。(2)选择IMAP,然后配置信息:接受邮件:imap.exmail.qq.com,端口为993,发送邮件:smtp.exmail.qq.com,端口为465,加密方法都选择【SSL/TLS】。(3)输入密码,即可连接。...
mina框架详解
ApacheMinaServer是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA对象的序列化服务、虚拟机管道通信服务等),Mina可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina提供了事件驱动、异步(Mina的异步IO默认使用的是JAVANIO作为底层支持)操作的编程模型。Mina主要有1.x和2.x两个分支,这里我们讲解最新版本2.0,如果你使用的是Mina1.x,那么可能会有一些功能并不适用。学习本文档,需要你已掌握JAVAIO、JAVANIO、JAVASocket、JAVA线程及并发库(java.util.concurrent.*)的知识。Mina同时提供了网络通信的Server端、Client端的封装,无论是哪端,Mina在整个网通通信结构中都处于如下的位置:可见Mina的API将真正的网络通信与我们的应用程序隔离开来,你只需要关心你要发送、接收的数据以及你的业务逻辑即可。同样的,无论是哪端,Mina的执行流程如下所示:Mina的底层依赖的主要是JavaNIO库,上层提供的是基于事件的异步接口。其整...
Laravel框架定时任务2种实现方式示例
本文实例讲述了Laravel框架定时任务2种实现方式。分享给大家供大家参考,具体如下:第一种1、生成一个commands文件>phpartisanmake:commandtest2、打开文件进行修改laravelAppConsoleCommandsest.php<?phpnamespaceAppConsoleCommands;useIlluminateConsoleCommand;useIlluminateSupportFacadesLog;classtestextendsCommand{/***Thenameandsignatureoftheconsolecommand.**@varstring*/protected$signature='test:insert';//phpartisanlist中将会生成"phpartisantest:insert"指令/***Theconsolecommanddescription.**@varstring*/protected$description='insertTesttablesometestdata';//对上面指令的描述/...