
●架构设计
Mr小林
软件工程师的成才之路。
展开
-
RPC 的超时设置,一不小心就是线上事故!
上面这张监控图,对于服务端的研发同学来说再熟悉不过了。在日常的系统维护中,『服务超时』应该属于监控报警最多的一类问题。尤其在微服务架构下,一次请求可能要经过一条很长的链路,跨多个服务调用后才能返回结果。当服务超时发生时,研发同学往往要抽丝剥茧般去分析自身系统的性能以及依赖服务的性能,这也是为什么服务超时相对于服务出错和服务调用量异常更难调查的原因。这篇文章将通过一个真实的线...转载 2020-04-30 17:47:06 · 608 阅读 · 0 评论 -
Hibernate的dynamic-insert和dynamic-update的使用
hibernate在初始化的时候,默认按照配置为表预定义insert,delete,update,select(by id)的SQL语句放在session中,其中insert,update,select操作都是对表的所有字段操作.如果在一个表有很多字段的时候,在做初次inser的时候有比较多的字段为空值,或者经常update某少部分字段,应该在配置文件的元素上将dynamic-insert和dyn原创 2016-12-03 15:08:09 · 396 阅读 · 0 评论 -
递归删除——项目实战篇
需求分析:Dept是一个自关联表,子部门和父部门是同一张表。删除一个部门的信息时,首先确定它的有没有子部门,如果有子部门就先将其子部门都删除然后再删除父部门。这里就用到了递归删除的方案:js页面: 序号 编号 上级 名称 ${links }进行了封装的 --> ${st.cou原创 2016-12-03 22:07:59 · 1437 阅读 · 1 评论 -
Quartz框架——实现定时任务调度
什么是Quartz框架?Quartz是一个开源的作业调度框架,它完全由Java写成,并设计用J2SE和J2EE应用中。它提供了巨大的 灵活性而不牺牲简单性。你能够用它来执行一个作业而创建简单的或复杂的调度。 1.Job 表示一个任务(工作),要执行的具体内容。 2.JobDetail JobDetail表示一个具体的可执行的调度程序,Job是这个是这个可执行调度程序要执行的内容,另外JobD原创 2016-12-12 23:33:21 · 763 阅读 · 1 评论 -
权限控制器——Shiro安全框架
【Shiro框架】它是一种安全框架,用于解决系统认证和授权问题,同时提供了会化管理,数据加密机制。传统的登录:Shiro安全框架实现登录:什么情况下使用Shiro框架:用户登录时:检测用户是否登录正确、如登录错误或未登录状态、直接跳转到登录页面并给出提示。如果用户未登录直接访问后台,Shiro框架可以根据用户的请求给出相应的拦截, 并进行跳转到登录页原创 2016-12-05 00:21:02 · 5125 阅读 · 1 评论 -
Struts2的异常处理框架
Struts提供了一个更简单的方式来处理未捕获的异常,并将用户重定向到一个专门的错误页面。您可以轻松地Struts配置到不同的异常有不同的错误页面。Struts异常处理实在web层进行的。步骤:1.自定义一个相关的异常类:package cn.itoo.jk.exception;public class SysException extends Exception { p原创 2016-12-05 23:36:56 · 453 阅读 · 0 评论 -
JavaMail与Spring整合
简介javaMail与spring整合完成后,可大大加大邮件发送效率。当服务器一启动,配置文件就已加载。直接保存用户信息时,邮件可直接发送,大大提高了效率。1.引入坐标<!-- Javamail --> <dependency> <groupId>javax.mail</groupId> <artifactId>mail</artifactId原创 2016-12-07 00:44:43 · 8795 阅读 · 0 评论 -
【设计模式】单例模式
【概念】单例模式是一种常用的软件设计模式。在它的核心结构中只包含一个被称为单例的特殊类。通过单例模式可以保证系统中一个类只有一个实例。单例模式是设计模式中最简单的形式之一。这一模式的目的是使得类的一个对象成为系统中的唯一实例。要实现这一点,可以从客户端对其进行实例化开始。因此需要用一种只允许生成对象类的唯一实例的机制,“阻止”所有想要生成对象的访问。使用工厂方法来限制实例化过程。这个方法应原创 2016-09-11 09:11:09 · 506 阅读 · 1 评论 -
Solr的简单部署
1、配置好jdk环境变量, 准备好一个干净的tomcat,保证tomcat可以在windows下运行2、将solr/example/solr.war复制到tomcat/webapps下3、运行tomcat(点击apache-tomcat-7.0.42 -test\bin下的startup.bat),目的是解压,因为solr还没有配置会报error4、关闭tomcat, 删除tomcat原创 2017-01-02 22:47:48 · 363 阅读 · 4 评论 -
Solr的使用
1、 schema.xmlschema.xml文件在SolrCore的conf目录下,在此配置文件中定义了域以及域的类型等一些配置。在solr中域必须先定义后使用。1.1filedName:域的名称Type:域的类型Indexed:是否索引Stored:是否存储Required:是否必须multiValued:是否是多值,存储多个值时设置为true,so原创 2017-01-06 11:21:03 · 2522 阅读 · 3 评论 -
SpringMvc的执行流程
1、 用户发送请求至前端控制器DispatcherServlet2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、 处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器原创 2016-12-29 23:28:11 · 418 阅读 · 3 评论 -
Struts2和SpringMvc的区别
本质区别:1、 springMVC基于方法的开发,我们可以通过我们的代码中,我们没有所谓的数据域对象,除了引用的service就只有方法,而Struts2是基于类的开发,该类中有各种各样的全局变量,因此我们说Struts2基于类的开发。2、 springMVC可以单例开发,并且建议单例开发,因为springMVC通过controller的形参接收数据,方法结束后形参数据销毁;而Stru原创 2016-12-30 16:33:36 · 905 阅读 · 4 评论 -
如何一启动web程序,直接访问某个controller里的方法进而跳转页面
随便写一个JSP页面 在页面里面在转发到你要的Action web.xml 里面添加 jump.jsp jump.jsp里通过这段代码访问action': meta标签是位于body和title之间即可。action是不能放在web.xml中,只能放在struts.xml中原创 2017-04-24 16:49:18 · 7547 阅读 · 4 评论 -
Redis之我见
【定义】Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通过提供多种键值数据类型来适应不同场景下的存储需求,目前为止Redis支持的键值数据类型有:字符串类型、散列类型、列表类型、集合类型、有序集合类型。由于0%的用户请求都集中在20%的热门数据上,所以我们要将这20%的数据放在缓存里。redis可原创 2016-09-16 22:39:17 · 458 阅读 · 4 评论 -
使用Springmvc @requestBody注解接收不到用实体类接收的json数据,http 415错误
servlet.xml文件中加入<!-- 启动SpringMVC的注解功能,完成请求和注解POJO的映射 --> <context:annotation-config /><mvc:annotation-driven> <mvc:message-converters> <bean class="org.spri...原创 2019-04-18 17:04:02 · 2423 阅读 · 0 评论 -
【UML】UML之类图
【类图定义】类图(Class diagram)主要用于描述系统的结构化设计。类图也是最常用的UML图,用类图可以显示出类、接口以及它们之间的静态结构和关系。【类图作用】类图一般在详细设计过程中出现,主要用来描述系统中各个模块中类之间的关系,包括类或者类与接口的继承关系,类之间的依赖、聚合等关系。它还描述每一个类的详细信息,包括变量,和方法。通过类图,就能实际的把系统中的各个类,即对象描述清楚,原创 2015-09-02 10:53:55 · 1241 阅读 · 21 评论 -
【UML】UML之用例图
用例图定义:由参与者(Actor)、用例(Use Case)以及它们之间关系构成的用于描述系统功能的动态视图,称之为用例图。 作用:用例图是需求分析中的产物,主要描述参与者和用例之间的关系,帮助开发人员可视化了解系统功能。 用例图组成:参与者、用例、系统边界及关系。用例图中的四中关系: a、关联关系:当参与者与用例之间进行交互时,用例与参与者之间拥有关联关原创 2015-08-31 10:38:06 · 1130 阅读 · 17 评论 -
Rational Rose画序列图
引用于 http://blog.youkuaiyun.com/chenyujing1234 欢迎大家拍砖一、1. 序列图的定义在UML的表示中,序列图将交互关系表示为一个二维图。其中,纵向是时间轴,时间沿竖线向下延伸。横向代表了在协作中各独立对象的角色。角色使用生命线进行表示,当对象存在时,生命线用一条虚线表示,此时对象不处于激活状态,当对象的过程处于激活状态时,生命线是一个双道线。序列图转载 2015-08-24 11:28:45 · 19110 阅读 · 23 评论 -
【UML】菜鸟之见—UML
【背景】经过一段时间的UML视频学习,鄙人对UML有了些许的认识。下面我要对我本阶段UML视频学习的内容做下简短的的总结。如有不妥之处。敬请指正。 首先,什么叫UML,UML是一个什么样的学科呢?请看简介: UML简介:UML全称Unified Modeling Language ,又称统一建模语言或标准建模语言。统一建模语言(UML)是面对对象软件的标准化建模语言。原创 2015-08-22 17:51:26 · 1913 阅读 · 23 评论 -
【设计模式】抽象工厂模式
抽象工厂模式为创建一组对象提供了一种解决方案。与工厂方法模式相比,抽象工厂模式中的具体工厂不只是创建一种产品,它负责创建一个产品族。抽象工厂模式提供一个创建一系列相关或相互依赖对象的接口,而无须指定它们具体的类。抽象工厂模式又称为Kit模式,其属于对象创建型模式。 抽象工厂模式中包含四个角色:抽象工厂用于声明生成抽象产品的方法;具体工厂实现了抽象工厂声明的生成抽象产品的方法,生成一组具体产品原创 2016-09-11 00:54:10 · 658 阅读 · 1 评论 -
【设计模式】模板方法模式
【什么是设计模式】 官方解释:定义一个操作中算法的框架,而将一些步骤延迟到子类中。模板方法模式使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 设计模式大咖闫宏解释:模板方法模式是类的行为型模式。准备一个抽象类,将部分逻辑以具体方法以及具体构造函数的形式实现,然后声明一些抽象方法来迫使子类实现剩余的逻辑。不同的子类可以以不同的方式实现这些抽象方法,从而对剩余的逻辑原创 2016-09-11 09:59:15 · 522 阅读 · 1 评论 -
【设计模式】装饰模式
【概念】装饰者模式:动态地将责任附加到对象上,若要扩展对象,装饰者模式提供了比继承更弹性的替代方案 要点:装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为装饰者包含一个超类的对象,这样,可以在被装饰者行为前或者行为后加上新的行为,甚至取代原有的行为装饰者会使程序中出现很多小类,增加使用难度使用场景:对象由主体+许多可选的部件或者功能构成,使用继承或者原创 2016-09-18 00:42:16 · 631 阅读 · 2 评论 -
【设计模式】适配器模式
【概述】适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。【适配器模式的用途】 用电器做例子,笔记本电脑的插头一般都是三相的,即除了阳极、阴极外,还有一个地极。而有些地方的电源插座却只有两极,没有地极。电源插座与笔记本电脑的电源插头不匹配使得笔记本电脑无法使用。这时候一个三相到两相的转换器(适配器)就能解决此原创 2016-09-11 23:19:19 · 380 阅读 · 3 评论 -
【Struts2】Struts2中拦截器
【拦截器】拦截器是Struts2中的核心。其实就是一个类对Action的访问进行拦截。【拦截器与过滤器的区别】过滤器过滤的是从客户端向服务器发送的请求。过滤器是可以过滤到Html,JSP…拦截器拦截的是从客户端向Action发送的请求。拦截器只能拦截Action,拦截器更细粒度的实施拦截。拦截到Action中具体的方法。【Struts2的执行流程】请求访问服务器Action原创 2016-11-10 13:30:23 · 371 阅读 · 2 评论 -
struts.xml文件中添加input逻辑视图
为啥要给input增加视图呢?不增加的话可能会报错、程序无法继续运行。加上的话就算图片格式不正确、大小超过限制。一样跳到原来的页面、不会终止程序运行。 话说在Struts中类型转换的错误需要有一个名叫conversionError的拦截器来做,这个拦截器被注册在默认的拦截器栈中。Struts框架中的默认配置文件struts-default.xml文件。在默认的拦截器中已经包括了原创 2016-11-20 23:31:41 · 937 阅读 · 1 评论 -
The requested list key 'deptList' could not be resolved as a collection/array/map/enumeration/iterat
错误信息分析:tag 'select', field 'list', name 'dept.id': The requested list key 'deptList' could not be resolved as a collection/array/map/enumeration/iterator type. Example: people or people.{name} - [un原创 2016-12-03 09:58:05 · 5112 阅读 · 0 评论 -
【Hibernate】OpenSession和getCurrentSession的区别
1 getCurrentSession创建的session会和绑定到当前线程,而openSession不会。2 getCurrentSession创建的线程会在事务回滚或事物提交后自动关闭,而openSession必须手动关闭这里getCurrentSession本地事务(本地事务:jdbc)时 要在配置文件里进行如下设置 * 如果使用的是本地事务(jdbc事务) hiber转载 2016-11-13 13:13:27 · 368 阅读 · 1 评论 -
【Spring】Spring的AOP编程
【概念】AOP:面向切面编程,是OOP扩展和延伸,解决OOP中一些问题而出现。AOP采用叫做横向抽取机制取代传统方式纵向继承体系对程序扩展和延伸。可以不修改程序源代码,对程序进行扩展,主流应用:权限校验,日志记录,事务管理,性能检测。【Spring底层原理】Jdk动态代理:对实现了接口的类才可以产生代理。public class JdkProxy { private Us原创 2016-11-05 23:16:38 · 424 阅读 · 1 评论 -
【Hibernate】lazy的三种属性
懒加载:Hibernate的懒加载属性,很大程度上提高了了Hibernate框架的查询效率。lazy有三个属性:true、false、extra【true】:默认取值,它的意思是只有在调用这个集合获取里面的元素对象时,才发出查询语句,加载其 集合元素的数据 【false】:取消懒加载特性,即在加载对象的同时,就发出第二条查询语句加载其关联集合的数据 【extr原创 2016-11-01 23:58:48 · 3210 阅读 · 1 评论 -
【Spring】Spring之我见
【导图俯瞰全篇】 一,框架介绍: 1,先看一下帮助文档的这张图,里边主要包括了Spring自身的功能,还有可以和其框架结合的一些框架,通过这张图可以看出,Spring框架和其他框架的集成能力是非常强的2,Spring是一个轻量级的IOC和AOP容器框架: a,轻量级:程序实现不是很复杂,代码不是很多,占用资源原创 2016-09-25 13:14:26 · 563 阅读 · 3 评论 -
三层架构
【概念】三层架构(3-tier architecture) 通常意义上的三层架构就是将整个业务应用划分为:表现层(Presentation layer)、业务逻辑层(Business Logic Layer)、数据访问层(Data access layer)。【分层目的】为了"高内聚低耦合"的思想。【详细介绍】1、表现层(UI):通俗讲就是展现给用户原创 2015-10-20 20:36:03 · 794 阅读 · 20 评论