11 2020 档案

摘要:Spring的WEB模块是构建在application context 模块基础之上,提供一个适合web应用的上下文。这个模块也包括支持多种面向web的任务,如透明地处理多个文件上传请求和程序级请求参数的绑定到你的业 务对象。它也有对Jakarta Struts的支持。 阅读全文
posted @ 2020-11-30 17:06 咔啡 阅读(142) 评论(0) 推荐(0)
摘要:当定义一个<bean> 在Spring里,我们还能给这个bean声明一个作用域。它可以通过bean 定义中的scope属性来定义。如,当Spring要在需要的时候每次生产一个新的bean实例,bean的scope属性被指定为prototype。 另一方面,一个bean每次使用的时候必须返回同一个实例 阅读全文
posted @ 2020-11-30 17:05 咔啡 阅读(120) 评论(0) 推荐(0)
摘要:AOP核心就是切面,它将多个类的通用行为封装成可重用的模块,该模块含有一组API提供横切功能。比如,一个日志模块可以被称作日志的AOP切面。根据需求的不同,一个应用程序可以有若干切面。在Spring AOP中,切面通过带有@Aspect注解的类实现。 阅读全文
posted @ 2020-11-30 17:02 咔啡 阅读(87) 评论(0) 推荐(0)
摘要:当一个bean仅被用作另一个bean的属性时,它能被声明为一个内部bean,为了定义inner bean,在Spring 的 基于XML的 配置元数据中,可以在 <property/>或 <constructor-arg/> 元素内使用<bean/> 元素,内部bean通常是匿名的,它们的Scope 阅读全文
posted @ 2020-11-30 16:54 咔啡 阅读(475) 评论(0) 推荐(0)
摘要:Volatile 变量可以确保先行关系,即写操作会发生在后续的读操作之前, 但它并不 能保证原子性。例如用 volatile 修饰 count 变量那么 count++ 操作就不是原子 性的。 而 AtomicInteger 类提供的 atomic 方法可以让这种操作具有原子性如 getAndInc 阅读全文
posted @ 2020-11-30 16:52 咔啡 阅读(163) 评论(0) 推荐(0)
摘要:在这种情况下(基于@AspectJ的实现),涉及到的切面声明的风格与带有java5标注的普通java类一致。 阅读全文
posted @ 2020-11-30 16:51 咔啡 阅读(72) 评论(0) 推荐(0)
摘要:该注解表明该类扮演控制器的角色,Spring不需要你继承任何其他控制器基类或引用Servlet API。 阅读全文
posted @ 2020-11-30 16:49 咔啡 阅读(108) 评论(0) 推荐(0)
摘要:以下是Spring 框架的基本模块: Core module Bean module Context module Expression Language module JDBC module ORM module OXM module Java Messaging Service(JMS) mod 阅读全文
posted @ 2020-11-30 16:48 咔啡 阅读(225) 评论(0) 推荐(0)
摘要:AOP模块用于发给我们的Spring应用做面向切面的开发, 很多支持由AOP联盟提供,这样就确保了Spring和其他AOP框架的共通性。这个模块将元数据编程引入Spring。 阅读全文
posted @ 2020-11-30 16:45 咔啡 阅读(130) 评论(0) 推荐(0)
摘要:依赖注入,是IOC的一个方面,是个通常的概念,它有多种解释。这概念是说你不用创建对象,而只需要描述它如何被创建。你不在代码里直接组装你的组件和服务,但是要在配置文件里描述哪些组件需要哪些服务,之后一个容器(IOC容器)负责把他们组装起来。 阅读全文
posted @ 2020-11-30 16:43 咔啡 阅读(236) 评论(0) 推荐(0)
摘要:自动装配的局限性是: 重写: 你仍需用 和 配置来定义依赖,意味着总要重写自动装配。 基本数据类型:你不能自动装配简单的属性,如基本数据类型,String字符串,和类。 模糊特性:自动装配不如显式装配精确,如果有可能,建议使用显式装配。 阅读全文
posted @ 2020-11-30 16:42 咔啡 阅读(327) 评论(0) 推荐(0)
摘要:使用SpringJDBC 框架,资源管理和错误处理的代价都会被减轻。所以开发者只需写statements 和 queries从数据存取数据,JDBC也可以在Spring框架提供的模板类的帮助下更有效地被使用,这个模板叫JdbcTemplate (例子见这里here) 阅读全文
posted @ 2020-11-30 16:40 咔啡 阅读(317) 评论(0) 推荐(0)
摘要:@Autowired 注解提供了更细粒度的控制,包括在何处以及如何完成自动装配。它的用法和@Required一样,修饰setter方法、构造器、属性或者具有任意名称和/或多个参数的PN方法。 阅读全文
posted @ 2020-11-30 16:36 咔啡 阅读(73) 评论(0) 推荐(0)
摘要:这个注解表明bean的属性必须在配置的时候设置,通过一个bean定义的显式的属性值或通过自动装配,若@Required注解的bean属性未被设置,容器将抛出BeanInitializationException。 阅读全文
posted @ 2020-11-30 16:35 咔啡 阅读(102) 评论(0) 推荐(0)
摘要:面向切面的编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。 阅读全文
posted @ 2020-11-30 16:32 咔啡 阅读(82) 评论(0) 推荐(0)
摘要:切入点是一个或一组连接点,通知将在这些位置执行。可以通过表达式或匹配的方式指明切入点。 阅读全文
posted @ 2020-11-30 16:30 咔啡 阅读(71) 评论(0) 推荐(0)
摘要:通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。 Spring切面可以应用五种类型的通知: before:前置通知,在一个方法执行前被调用。 after:在方法执行之后调用的通知,无论方法执行是否成功。 after-returning:仅当方法成功 阅读全文
posted @ 2020-11-30 16:24 咔啡 阅读(61) 评论(0) 推荐(0)
摘要:BeanNameAutoProxyCreator DefaultAdvisorAutoProxyCreator Metadata autoproxying 阅读全文
posted @ 2020-11-30 16:22 咔啡 阅读(116) 评论(0) 推荐(0)
摘要:代理是通知目标对象后创建的对象。从客户端的角度看,代理对象和目标对象是一样的。 阅读全文
posted @ 2020-11-30 16:18 咔啡 阅读(280) 评论(0) 推荐(0)
摘要:被一个或者多个切面所通知的对象。它通常是一个代理对象。也指被通知(advised)对象。 阅读全文
posted @ 2020-11-30 16:15 咔啡 阅读(172) 评论(0) 推荐(0)
摘要:在这种情况下(基于@AspectJ的实现),涉及到的切面声明的风格与带有java5标注的普通java类一致。 阅读全文
posted @ 2020-11-30 16:13 咔啡 阅读(60) 评论(0) 推荐(0)
摘要:该注解是用来映射一个URL到一个类或一个特定的方处理法上。 阅读全文
posted @ 2020-11-30 16:09 咔啡 阅读(94) 评论(0) 推荐(0)
摘要:该注解表明该类扮演控制器的角色,Spring不需要你继承任何其他控制器基类或引用Servlet API。 阅读全文
posted @ 2020-11-30 16:06 咔啡 阅读(115) 评论(0) 推荐(0)
摘要:实现:抽象类的子类使用 extends 来继承;接口必须使用 implements 来实现接口。构造函数:抽象类可以有构造函数;接口不能有。实现数量:类可以实现很多个接口;但只能继承一个抽象类【java只支持单继承】。访问修饰符:接口中的方法默认使用 public 修饰;抽象类中的抽象方法可以使用P 阅读全文
posted @ 2020-11-30 16:01 咔啡 阅读(104) 评论(0) 推荐(0)
摘要:BIO:Block IO 同步阻塞式 IO,就是我们平常使用的传统 IO,它的特点是模式简单使用方便,并发处理能力低。NIO:New IO 同步非阻塞 IO,是传统 IO 的升级,客户端和服务器端通过 Channel(通道)通讯,实现了多路复用。AIO:Asynchronous IO 是 NIO 的 阅读全文
posted @ 2020-11-30 15:57 咔啡 阅读(185) 评论(0) 推荐(0)
摘要:&和&&都可以用作逻辑与的运算符,表示逻辑与(and),当运算符两边的表达式的结果都为true时,整个运算结果才为true,否则,只要有一方为false,则结果为false。 阅读全文
posted @ 2020-11-30 15:56 咔啡 阅读(163) 评论(0) 推荐(0)
摘要:java中的保留字,现在没有在java中使用。 阅读全文
posted @ 2020-11-30 15:55 咔啡 阅读(58) 评论(0) 推荐(0)
摘要:在switch(expr1)中,expr1只能是一个整数表达式或者枚举常量(更大字体),整数表达式可以是int基本类型或Integer包装类型,由于,byte,short,char都可以隐含转换为int,所以,这些类型以及这些类型的包装类型也是可以的。显然,long和String类型都不符合swit 阅读全文
posted @ 2020-11-30 15:54 咔啡 阅读(136) 评论(0) 推荐(0)
摘要:内部类就是在一个类的内部定义的类,内部类中不能定义静态成员,内部类可以直接访问外部类中的成员变量,内部类可以定义在外部类的方法外面,也可以定义在外部类的方法体中。在方法外部定义的内部类前面可以加上static关键字,从而成为Static Nested Class,它不再具有内部类的特性,所有,从狭义 阅读全文
posted @ 2020-11-30 15:53 咔啡 阅读(353) 评论(0) 推荐(0)
摘要:完全可以。如果不是静态内部类,那没有什么限制!如果你把静态嵌套类当作内部类的一种特例,那在这种情况下不可以访问外部类的普通成员变量,而只能访问外部类中的静态成员 阅读全文
posted @ 2020-11-30 15:52 咔啡 阅读(141) 评论(0) 推荐(0)
摘要:所谓系统异常,就是…..,它们都是RuntimeException的子类,在jdk doc中查RuntimeException类,就可以看到其所有的子类列表,也就是看到了所有的系统异常。我比较有印象的系统异常有:NullPointerException、ArrayIndexOutOfBoundsEx 阅读全文
posted @ 2020-11-30 15:51 咔啡 阅读(406) 评论(0) 推荐(0)
摘要:数组没有length()这个方法,有length的属性。String有有length()这个方法。 阅读全文
posted @ 2020-11-30 15:50 咔啡 阅读(273) 评论(0) 推荐(0)
摘要:结论:finally中的代码比return和break语句后执行 阅读全文
posted @ 2020-11-30 14:40 咔啡 阅读(100) 评论(0) 推荐(0)
摘要:error 表示恢复不是不可能但很困难的情况下的一种严重问题。比如说内存溢出。不可能指望程序能处理这样的情况。 exception表示一种设计或实现问题。也就是说,它表示如果程序运行正常,从不会发生的情况。 阅读全文
posted @ 2020-11-30 14:26 咔啡 阅读(124) 评论(0) 推荐(0)
摘要:多线程有两种实现方法,分别是继承Thread类与实现Runnable接口同步的实现方面有两种,分别是synchronized,wait与notifywait():使一个线程处于等待状态,并且释放所持有的对象的lock。sleep():使一个正在运行的线程处于睡眠状态,是一个静态方法,调用此方法要捕捉 阅读全文
posted @ 2020-11-30 14:21 咔啡 阅读(405) 评论(1) 推荐(0)
摘要:如果数据将在线程间共享。例如正在写的数据以后可能被另一个线程读到,或者正在读的数据可能已经被另一个线程写过了,那么这些数据就是共享数据,必须进行同步存取。当应用程序在对象上调用了一个需要花费很长时间来执行的方法,并且不希望让程序等待方法的返回时,就应该使用异步编程,在很多情况下采用异步途径往往更有效 阅读全文
posted @ 2020-11-30 14:20 咔啡 阅读(102) 评论(0) 推荐(0)
摘要:comparable/comparator 阅读全文
posted @ 2020-11-30 14:18 咔啡 阅读(152) 评论(0) 推荐(0)
摘要:随意发挥题,天南海北谁便谈,只要让别觉得你知识渊博,理解透彻即可。 阅读全文
posted @ 2020-11-30 14:15 咔啡 阅读(74) 评论(0) 推荐(0)
摘要:这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我们以后可以按位置索引号取出某个元素,,并且其中的数据是允许重复的,这是HashSet之类的集合的最大不同处,HashSet之类的集合不可 阅读全文
posted @ 2020-11-30 14:14 咔啡 阅读(342) 评论(0) 推荐(0)
摘要:字节流,字符流。字节流继承于InputStream OutputStream,字符流继承于InputStreamReaderOutputStreamWriter。在java.io包中还有许多其他的流,主要是为了提高性能和使用方便。 阅读全文
posted @ 2020-11-30 14:11 咔啡 阅读(81) 评论(0) 推荐(0)
摘要:java的内存分为两类,一类是栈内存,一类是堆内存。栈内存是指程序进入一个方法时,会为这个方法单独分配一块私属存储空间,用于存储这个方法内部的局部变量,当这个方法结束时,分配给这个方法的栈会释放,这个栈中的变量也将随之释放。堆是与栈作用不同的内存,一般用于存放不放在当前方法栈中的那些数据,例如,使用 阅读全文
posted @ 2020-11-30 14:10 咔啡 阅读(164) 评论(0) 推荐(0)
摘要:所谓内存泄露就是指一个不再被程序使用的对象或变量一直被占据在内存中。java中有垃圾回收机制,它可以保证一对象不再被引用的时候,即对象编程了孤儿的时候,对象将自动被垃圾回收器从内存中清除掉。由于Java使用有向图的方式进行垃圾回收管理,可以消除引用循环的问题,例如有两个对象,相互引用,只要它们和根进 阅读全文
posted @ 2020-11-30 14:06 咔啡 阅读(143) 评论(0) 推荐(0)
摘要:对于GC来说,当程序员创建对象时,GC就开始监控这个对象的地址、大小以及使用情况。通常,GC采用有向图的方式记录和管理堆(heap)中的所有对象。通过这种方式确定哪些对象是"可达的",哪些对象是"不可达的"。当GC确定一些对象为"不可达"时,GC就有责任回收这些内存空间。可以。程序员可以手动执行Sy 阅读全文
posted @ 2020-11-30 14:03 咔啡 阅读(94) 评论(0) 推荐(0)
摘要:是单例模式,所以在多线程访问的时候有线程安全问题,不要用同步,会影响性能的 阅读全文
posted @ 2020-11-30 14:01 咔啡 阅读(191) 评论(0) 推荐(0)
摘要:(1)转发:在返回值前面加"forward:",譬如"forward:user.do?name=method4" (2)重定向:在返回值前面加"redirect:",譬如"redirect:http://www.baidu.com" 阅读全文
posted @ 2020-11-30 13:58 咔啡 阅读(611) 评论(0) 推荐(0)
摘要:可以将异常抛给Spring框架,由Spring框架来处理;我们只需要配置简单的异常处理器,在异常处理器中添视图页面即可。 阅读全文
posted @ 2020-11-30 13:56 咔啡 阅读(90) 评论(0) 推荐(0)
摘要:直接在方法中声明这个对象,SpringMvc就自动会把属性赋值到这个对象里面。 阅读全文
posted @ 2020-11-30 13:54 咔啡 阅读(909) 评论(0) 推荐(0)
摘要:Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。 主要由以下几个模块组成: Spring Core:核心类库, 阅读全文
posted @ 2020-11-30 13:53 咔啡 阅读(775) 评论(0) 推荐(0)
摘要:通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到。 阅读全文
posted @ 2020-11-30 13:50 咔啡 阅读(1072) 评论(0) 推荐(0)
摘要:返回值可以有很多类型,有String, ModelAndView。ModelAndView类把视图和数据都合并的一起的,但一般用String比较好。 阅读全文
posted @ 2020-11-30 13:49 咔啡 阅读(1126) 评论(0) 推荐(0)
摘要:BeanFactory和ApplicationContext是Spring的两大核心接口,都可以当做Spring的容器。其中ApplicationContext是BeanFactory的子接口。 (1)BeanFactory:是Spring里面最底层的接口,包含了各种Bean的定义,读取bean配置 阅读全文
posted @ 2020-11-30 13:48 咔啡 阅读(1113) 评论(0) 推荐(0)
摘要:(1)spring属于低侵入式设计,代码的污染极低; (2)spring的DI机制将对象之间的依赖关系交由框架处理,减低组件的耦合性; (3)Spring提供了AOP技术,支持将一些通用任务,如安全、事务、日志、权限等进行集中式管理,从而提供更好的复用。 (4)spring对于主流的应用框架提供了集 阅读全文
posted @ 2020-11-30 13:42 咔啡 阅读(228) 评论(0) 推荐(0)
摘要:(1)切面(Aspect):被抽取的公共模块,可能会横切多个对象。在Spring AOP中,切面可以使用通用类(基于模式的风格)或者在普通类中以@AspectJ注解来实现。 (2)连接点(Join point):指方法,在Spring AOP中,一个连接点总是代表一个方法的执行。 (3)通知(Adv 阅读全文
posted @ 2020-11-30 13:41 咔啡 阅读(695) 评论(0) 推荐(0)
摘要:(1)工厂模式:BeanFactory就是简单工厂模式的体现,用来创建对象的实例; (2)单例模式:Bean默认为单例模式。 (3)代理模式:Spring的AOP功能用到了JDK的动态代理和CGLIB字节码生成技术; (4)模板方法:用来解决代码重复的问题。比如.RestTemplate,JmsTe 阅读全文
posted @ 2020-11-30 13:39 咔啡 阅读(406) 评论(0) 推荐(0)
摘要:(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,开发时只需要关注SQL语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement等繁杂的过程。程序员直接编写原生态sql,可以严格控制sql执行性能,灵活度高。 (2)MyBatis 可以使用XML 或注解来 阅读全文
posted @ 2020-11-30 13:38 咔啡 阅读(164) 评论(0) 推荐(0)
摘要:Dao接口即Mapper接口。接口的全限名,就是映射文件中的namespace的值;接口的方法名,就是映射文件中Mapper的Statement的id值;接口方法内的参数,就是传递给sql的参数。 Mapper接口里的方法,是不能重载的,因为是使用 全限名+方法名 的保存和寻找策略。Mapper接口 阅读全文
posted @ 2020-11-30 13:37 咔啡 阅读(601) 评论(0) 推荐(0)
摘要:第1种:在Java代码中添加sql通配符。 string wildcardname = “%smi%”; list<name> names = mapper.selectlike(wildcardname); <select id=”selectlike”> select * from foo wh 阅读全文
posted @ 2020-11-30 13:36 咔啡 阅读(412) 评论(0) 推荐(0)
摘要:快速失败的Java迭代器可能会引发ConcurrentModifcationException在底层集合迭代过程中被修改。故障安全作为发生在实例中的一个副本迭代是不会抛出任何异常的。快速失败的故障安全范例定义了当遭遇故障时系统是如何反应的。例如,用于失败的快速迭代器ArrayList和用于故障安全的 阅读全文
posted @ 2020-11-30 13:30 咔啡 阅读(162) 评论(0) 推荐(0)
摘要:CopyOnWriteArrayList是ArrayList的一个线程安全的变体,其中所有可变操作(add、set等等)都是通过对底层数组进行一次新的复制来实现的。相比较于ArrayList它的写操作要慢一些,因为它需要实例的快照。 CopyOnWriteArrayList中写操作需要大面积复制数组 阅读全文
posted @ 2020-11-30 13:17 咔啡 阅读(1370) 评论(0) 推荐(0)
摘要:面向对象的特征主要有以下几个方面: 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面。抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类 阅读全文
posted @ 2020-11-30 12:31 咔啡 阅读(171) 评论(0) 推荐(0)
摘要:不是。 Java中基本数据类型只有8个:byte、short、int、long、float、double、char、boolean;除了基本类型(primitive type),剩下都是引用类型(reference type),Java5以后引入的枚举类型也算是一种比较特殊的引用类型。 阅读全文
posted @ 2020-11-30 12:25 咔啡 阅读(162) 评论(0) 推荐(0)
摘要:goto 是Java中的保留字,在目前版本的Java中没有使用。(根据James Gosling(Java之父)编写的《The Java Programming Language》一书的附录中给出了一个Java关键字列表,其中有goto和const,但是这两个是目前无法使用的关键字,因此有些地方将其 阅读全文
posted @ 2020-11-30 12:14 咔啡 阅读(207) 评论(0) 推荐(0)
摘要:对于short s1 = 1; s1 = s1 + 1;由于1是int类型,因此s1+1运算结果也是int 型,需要强制转换类型才能赋值给short型。而short s1 = 1; s1 += 1;可以正确编译,因为s1+= 1;相当于s1 = (short)(s1 + 1);其中有隐含的强制类型转 阅读全文
posted @ 2020-11-30 12:09 咔啡 阅读(108) 评论(0) 推荐(0)
摘要:2 << 3(左移3位相当于乘以2的3次方,右移3位相当于除以2的3次方)。 补充:我们为编写的类重写hashCode方法时,可能会看到如下所示的代码,其实我们不太理解为什么要使用这样的乘法运算来产生哈希码(散列码),而且为什么这个数是个素数,为什么通常选择31这个数?前两个问题的答案你可以自己百度 阅读全文
posted @ 2020-11-30 12:07 咔啡 阅读(251) 评论(0) 推荐(0)
摘要:构造器不能被继承,因此不能被重写,但可以被重载。 阅读全文
posted @ 2020-11-30 11:52 咔啡 阅读(359) 评论(0) 推荐(0)
摘要:不对,如果两个对象x和y满足x.equals(y) == true,它们的哈希码(hash code)应当相同。Java对于eqauls方法和hashCode方法是这样规定的:(1)如果两个对象相同(equals方法返回true),那么它们的hashCode值一定要相同;(2)如果两个对象的hash 阅读全文
posted @ 2020-11-30 11:50 咔啡 阅读(209) 评论(0) 推荐(0)
摘要:String 类是final类,不可以被继承。 补充:继承String本身就是一个错误的行为,对String类型最好的重用方式是关联关系(Has-A)和依赖关系(Use-A)而不是继承关系(Is-A)。 阅读全文
posted @ 2020-11-30 11:44 咔啡 阅读(215) 评论(0) 推荐(0)
摘要:方法的重载和重写都是实现多态的方式,区别在于前者实现的是编译时的多态性,而后者实现的是运行时的多态性。重载发生在一个类中,同名的方法如果有不同的参数列表(参数类型不同、参数个数不同或者二者都不同)则视为重载;重写发生在子类与父类之间,重写要求子类被重写方法与父类被重写方法有相同的返回类型,比父类被重 阅读全文
posted @ 2020-11-29 16:11 咔啡 阅读(122) 评论(0) 推荐(0)
摘要:可以,但一个源文件中最多只能有一个公开类(public class)而且文件名必须和公开类的类名完全保持一致。 阅读全文
posted @ 2020-11-29 16:07 咔啡 阅读(348) 评论(0) 推荐(0)
摘要:接口可以继承接口,而且支持多重继承。抽象类可以实现(implements)接口,抽象类可继承具体类也可以继承抽象类。 阅读全文
posted @ 2020-11-29 16:03 咔啡 阅读(254) 评论(0) 推荐(0)
摘要:两个对象,一个是静态区的"xyz",一个是用new创建在堆上的对象。 阅读全文
posted @ 2020-11-29 16:00 咔啡 阅读(155) 评论(0) 推荐(0)
摘要:Error表示系统级的错误和程序不必处理的异常,是恢复不是不可能但很困难的情况下的一种严重问题;比如内存溢出,不可能指望程序能处理这样的情况;Exception表示需要捕捉或者需要程序进行处理的异常,是一种设计或实现问题;也就是说,它表示如果程序运行正常,从不会发生的情况。 阅读全文
posted @ 2020-11-29 15:57 咔啡 阅读(831) 评论(0) 推荐(0)
摘要:- 调用基本数据类型对应的包装类中的方法parseXXX(String)或valueOf(String)即可返回相应基本类型; - 一种方法是将基本数据类型与空字符串("")连接(+)即可获得其所对应的字符串;另一种方法是调用String 类中的valueOf()方法返回相应字符串。 阅读全文
posted @ 2020-11-29 15:54 咔啡 阅读(203) 评论(0) 推荐(0)
摘要:(1)修饰类:表示该类不能被继承;(2)修饰方法:表示方法不能被重写;(3)修饰变量:表示变量只能一次赋值以后值不能被修改(常量)。 阅读全文
posted @ 2020-11-29 15:52 咔啡 阅读(104) 评论(0) 推荐(0)
摘要:- ArithmeticException(算术异常) - ClassCastException (类转换异常) - IllegalArgumentException (非法参数异常) - IndexOutOfBoundsException (下标越界异常) - NullPointerExcepti 阅读全文
posted @ 2020-11-29 15:46 咔啡 阅读(170) 评论(0) 推荐(0)
摘要:异常表示程序运行过程中可能出现的非正常状态,运行时异常表示虚拟机的通常操作中可能遇到的异常,是一种常见运行错误,只要程序设计得没有问题通常就不会发生。受检异常跟程序运行的上下文环境有关,即使程序设计无误,仍然可能因使用的问题而引发。Java编译器要求方法必须声明抛出可能发生的受检异常,但是并不要求必 阅读全文
posted @ 2020-11-29 15:45 咔啡 阅读(232) 评论(0) 推荐(0)
摘要:在计算中,负载平衡可以改善跨计算机,计算机集群,网络链接,中央处理单元或磁盘驱动器等多种计算资源的工作负载分布。负载平衡旨在优化资源使用,最大化吞吐量,最小化响应时间并避免任何单一资源的过载。使用多个组件进行负载平衡而不是单个组件可能会通过冗余来提高可靠性和可用性。负载平衡通常涉及专用软件或硬件,例 阅读全文
posted @ 2020-11-29 15:42 咔啡 阅读(130) 评论(0) 推荐(0)
摘要:当我们开始一个项目时,我们通常在属性文件中进行所有的配置。随着越来越多的服务开发和部署,添加和修改这些属性变得更加复杂。有些服务可能会下降,而某些位置可能会发生变化。手动更改属性可能会产生问题。Eureka 服务注册和发现可以在这种情况下提供帮助。由于所有服务都在 Eureka 服务器上注册并通过调 阅读全文
posted @ 2020-11-29 15:40 咔啡 阅读(543) 评论(0) 推荐(0)
摘要:使用 Spring Boot 开发分布式微服务时,我们面临以下问题 (1)与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题,安全问题。 (2)服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。 阅读全文
posted @ 2020-11-29 15:38 咔啡 阅读(545) 评论(0) 推荐(0)
摘要:Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性。在 employee-consumer 的例子中,我们使用了 emplo e-producer 阅读全文
posted @ 2020-11-29 15:37 咔啡 阅读(395) 评论(0) 推荐(0)
摘要:Hystrix 是一个延迟和容错库,旨在隔离远程系统,服务和第三方库的访问点,当出现故障是不可避免的故障时,停止级联故障并在复杂的分布式系统中实现弹性。通常对于使用微服 构开发的系统,涉及到许多微服务。这些微服务彼此协作。思考以下微服务 假设如果上图中的微服务 9 失败了,那么使用传统方法我们将传播 阅读全文
posted @ 2020-11-29 15:36 咔啡 阅读(513) 评论(0) 推荐(0)
摘要:考虑以下情况:我们有多个应用程序使用 Spr ng Cloud Config 读取属性,而S ring Cloud Config 从GIT 读取这些属性。 下面的例子中多个员工生产者模块从 Employee Config Module 获取 Eureka 注册的财产 如果假设 GIT 中的 Eureka 阅读全文
posted @ 2020-11-29 15:35 咔啡 阅读(496) 评论(0) 推荐(0)
摘要:SpringBoot专注于快速方便的开发单个个体微服务。 SpringCloud是关注全局的微服务协调整理治理框架,它将SpringBoot开发的一个个单体微服务整合并管理起来,为各个微服务之间提供,配置管理、服务发现、断路器、路由、微代理、事件总线、全局锁、决策竞选、分布式会话等等集成服务Spri 阅读全文
posted @ 2020-11-29 15:33 咔啡 阅读(203) 评论(0) 推荐(0)
摘要:Zookeeper保证了CP(C:一致性,P:分区容错性),Eureka保证了AP(A:高可用) (1)当向注册中心查询服务列表时,我们可以容忍注册中心返回的是几分钟以前的信息,但不能容忍直接down掉不可用。也就是说,服务注册功能对高可用性要求比较高,但zk会出现这样一种情况,当master节点因 阅读全文
posted @ 2020-11-29 15:32 咔啡 阅读(88) 评论(0) 推荐(0)
摘要:(1)RPC主要的缺陷是服务提供方和调用方式之间的依赖太强,需要对每一个微服务进行接口的定义,并通过持续继承发布,严格版本控制才不会出现冲突。 (2)REST是轻量级的接口,服务的提供和调用不存在代码之间的耦合,只需要一个约定进行规范。 阅读全文
posted @ 2020-11-29 15:30 咔啡 阅读(167) 评论(0) 推荐(0)
摘要:XML技术用于数据存储、信息配置、数据交换三方面。 可以将数据存储在XML中,通过节点、元素内容、属性标示数据内容及关系。 可以使用XML很方便的做信息配置,软件的各种配置参数和对象关系都存贮在XML文件中。 在做数据交换平台时,将数据组装成XML文件,然后将XML文件压缩打包加密后通过网络传送给接 阅读全文
posted @ 2020-11-29 15:29 咔啡 阅读(76) 评论(0) 推荐(0)
摘要:<input type="text" id="d1" onblur=" chkNumber (this)"/> <script type=”text/javascript” /> function chkNumber(eleText) { var value = eleText.value; var 阅读全文
posted @ 2020-11-29 15:28 咔啡 阅读(88) 评论(0) 推荐(0)
摘要:XML常用解析API有JAXP、JDOM、Dom4j等。 JAXP是Java API for XML Processing的英文字头缩写,中文含义是:用于XML文档处理的使用Java语言编写的编程接口。由于问题太多,从JDK1.7开始删除该功能。不推荐使用。 JDOM是最早期很多人使用的一个第三方工 阅读全文
posted @ 2020-11-29 15:26 咔啡 阅读(477) 评论(0) 推荐(0)
摘要:有DOM、SAX等。 DOM:(Document Object Model, 即文档对象模型) 是 W3C 组织推荐的处理 XML 的一种标准方式。 DOM中的核心概念就是节点。DOM在分析XML文档时,将组成XML文档的各个部分(元素、属性、文本、注释和处理指令等)映射成一个对象,这个对象就叫做节 阅读全文
posted @ 2020-11-29 15:25 咔啡 阅读(135) 评论(0) 推荐(0)
摘要:XML DTD(功能有限) XML Schema (功能强大) Schema本身是XML的,可以被XML解析器解析(这也是从DTD上发展schema的根本目的),Schema支持命名空间,Schema支持数据类型,并且支持自定义数据类型,功能更完善,更强大,提供了无限的可扩展性。而且Schema是W 阅读全文
posted @ 2020-11-29 15:23 咔啡 阅读(83) 评论(0) 推荐(0)
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 它基于JavaScript(Standard ECMA-262 3rd Edition - December 1999)的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习 阅读全文
posted @ 2020-11-29 15:21 咔啡 阅读(1271) 评论(0) 推荐(0)
摘要:Javascript是使用UTF-8国际编码,即每个汉字用4个字节来存储,这就造成了用AJAX来send数据的时候出现会乱码。 Ajax乱码产生主要有2个原因 1. XMLHttpRequest返回的数据默认的字符编码是UTF-8,如果前台页面是gb2312或者其它编码数据就会产生乱码。 2. po 阅读全文
posted @ 2020-11-29 15:19 咔啡 阅读(115) 评论(0) 推荐(0)
摘要:Ajax的核心对象是XMLXMLHttpRequest 对象。 XMLHttpRequest提供不重新加载页面的情况下更新网页,在页面加载后在客户端向服务器请求数据,在页面加载后在服务器端接受数据,在后台向客户端发送数据。XMLHttpRequest 对象提供了对 HTTP 协议的完全的访问,包括做 阅读全文
posted @ 2020-11-29 15:18 咔啡 阅读(566) 评论(0) 推荐(0)
摘要:Ajax 是 Asynchronous JavaScript and XML(以及 DHTML 等)的缩写。 Ajax 尝试建立桌面应用程序的功能和交互性,与不断更新的 Web 应用程序之间的桥梁。不需要刷新页面就可以将请求提交到后台,用户根本感觉不到页面在发送请求或是交换数据. Ajax 提供将笨 阅读全文
posted @ 2020-11-29 15:16 咔啡 阅读(205) 评论(0) 推荐(0)
摘要:1. forward服务器内部跳转(在当前webapp中跳转),地址栏不显示跳转后的url, sendRedirect是地址栏重新发请求,地址栏显示的是跳转后的url 2. forward跳转时可以通过request共享数据,而sendRedirect不能通过request共享数据。 3. forw 阅读全文
posted @ 2020-11-29 15:15 咔啡 阅读(93) 评论(0) 推荐(0)
摘要:servlet有良好的生存期的定义,包括加载和实例化、初始化、处理请求以及服务结束。这个生存期由javax.servlet.Servlet接口的init,service和destroy方法表达。 Servlet被服务器实例化后,容器运行其init方法,该方法在整个生命周期中只运行一次,用于做一些准备 阅读全文
posted @ 2020-11-29 15:12 咔啡 阅读(85) 评论(0) 推荐(0)
摘要:Servlet是sun公司提供的一门用于开发动态web资源的技术,是Java语言中编写Web服务器扩展功能的重要技术,同时它也是JSP技术的底层运行基础。 Servlet是平台独立的Java类,编写一个Servlet,实际上就是按照Servlet规范编写一个Java类.Servlet被编译为平台中立 阅读全文
posted @ 2020-11-29 15:10 咔啡 阅读(82) 评论(0) 推荐(0)
摘要:1. get从地址栏以明文的方式提交请求信息内容?username=admin&password=123,用户可见, 而post从请求正文提交请求信息内容,用户不可见。 2. get提交因为是从地址栏传递,而浏览器的地址栏长度有限制,不能提交大数据 post从请求正文传递信息内容,对文件大小无限制, 阅读全文
posted @ 2020-11-29 15:08 咔啡 阅读(73) 评论(0) 推荐(0)
摘要:JSP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术。在Servlet当中开发嵌入html的脚本,会非常的繁琐。JSP支持在html中直接嵌入java脚本,JSP是Servlet的简化设计,通常在开发中用来做展示数据。在实际开 阅读全文
posted @ 2020-11-29 15:03 咔啡 阅读(196) 评论(0) 推荐(0)
摘要:Filter是过滤器,在请求到达Servlet之前或者响应到达客户端之前截获请求或者响应,对之进行相应的处理。Struts2的控制器就是使用一个Filter实现的。 阅读全文
posted @ 2020-11-29 15:01 咔啡 阅读(700) 评论(0) 推荐(0)
摘要:因为http协议是无状态协议,又称为一次性连接,所以webapp必须有一种机制 能够记住用户的一系列操作,并且唯一标示一个用户。 Cookie: 又称为小饼干,实际就是使用一个短文本保存用户信息, 在页面加载完毕是通过响应写回客户端进行保存。 Session: 在服务器保存数据,Session就是单 阅读全文
posted @ 2020-11-29 15:00 咔啡 阅读(51) 评论(0) 推荐(0)
摘要:一个Servlet对应有一个ServletConfig对象,可以用来读取初始化参数。 一个webapp对应一个ServletContext对象。 ServletContext对象获取初始化定义的参数。 ServletContext对象可以通过context.getResourceAsStream(" 阅读全文
posted @ 2020-11-29 14:59 咔啡 阅读(111) 评论(0) 推荐(0)
摘要:JSP是Servlet技术的扩展,本质上是Servlet的简易方式,更强调应用的外表表达。JSP编译后是"类servlet"。 Servlet和JSP最主要的不同点在于,Servlet的应用逻辑是在Java文件中,并且完全从表示层中的HTML里分离开来。 而JSP的情况是Java和HTML可以组合成 阅读全文
posted @ 2020-11-29 14:58 咔啡 阅读(70) 评论(0) 推荐(0)
摘要:动态INCLUDE用jsp:include动作实现 <jsp:include page=included.jsp />它总是会检查所含文件中的变化,适合用于包含动态页面,并且可以带参数. 用于动态引入一个 JSP 页面,是编译后的页面,只要编译后的结果 静态INCLUDE用<%@ include f 阅读全文
posted @ 2020-11-29 14:57 咔啡 阅读(66) 评论(0) 推荐(0)
摘要:<% @ page %> <% @ include %> <% @ taglib %> 阅读全文
posted @ 2020-11-29 14:55 咔啡 阅读(59) 评论(0) 推荐(0)
摘要:delete 属于DML语句,删除数据,保留表结构,需要commit,可以回滚,如果数据量大,很慢。 truncate 属于DDL语句,删除所有数据,保留表结构,自动commit,不可以回滚,一次全部删除所有数据,速度相对较快。 Drop属于 DDL语句,删除数据和表结构,不需要commit,删除速 阅读全文
posted @ 2020-11-29 14:54 咔啡 阅读(377) 评论(0) 推荐(0)
摘要:从关系数据库的表中删除冗余信息的过程称为数据规范化,是得到高效的关系型数据库表的逻辑结构最好和最容易的方法。 规范化数据时应执行以下操作: 1.将数据库的结构精简为最简单的形式 2.从表中删除冗余值 3.标识所有依赖与其他数据的数据 规范化过程有几个阶段,分别称作第一范式(1NF)、第二范式(2NF 阅读全文
posted @ 2020-11-29 14:52 咔啡 阅读(159) 评论(0) 推荐(0)
摘要:事务是作为一个逻辑单元执行的一系列操作,要么一起成功,要么一起失败。 一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务。 原子性 :事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。 一致性 :事务在完成时,必须使所有 阅读全文
posted @ 2020-11-29 14:50 咔啡 阅读(144) 评论(0) 推荐(0)
摘要:1.首先检查表的结构是否合理,因为采用多表查询的时候,看主外键的引用关系是否适当.如果不适当则重新设置表结构.如果是应用中的系统,则不需要更改表的字段,只更改主外键关系.如果数据库中有较多的数据,还应采用索引提高查询效率. 2.利用索引(index)对查询进行优化,index可以避免对表数据的全面扫 阅读全文
posted @ 2020-11-29 14:48 咔啡 阅读(416) 评论(0) 推荐(0)
摘要:WHERE是在数据分组前进行条件过滤, HAVING子句是在数据分组后进行条件过滤,WHERE子句中不能使用聚合函数,HAVING子句可以使用聚合函数。 需要注意说明:当同时含有where子句、group by 子句 、having子句及聚集函数时,执行顺序如下: A、执行where子句查找符合条件 阅读全文
posted @ 2020-11-29 14:47 咔啡 阅读(251) 评论(0) 推荐(0)
摘要:oracle select rownum,bookId from [rownum是伪列名,bookId是列名] (select rownum row_id,bookId from xiaoWJ_books t) t where row_id between 10 and 20 [查10到20条记录] 阅读全文
posted @ 2020-11-29 14:46 咔啡 阅读(157) 评论(0) 推荐(0)
摘要:1.通过创建临时表 creat table tbl_tmp as select distinct * from tbl; truncate table tbl;//清空表记录 insert into tbl select * from tbl_tmp;//将临时表中的数据插回来。 2.利用rowid 阅读全文
posted @ 2020-11-29 14:44 咔啡 阅读(324) 评论(0) 推荐(0)
摘要:多个线程开启各自事务操作数据库中数据时,数据库系统要负责隔离操作,以保证各个线程在获取数据时的准确性。 数据库共定义了四种隔离级别: Serializable:可避免脏读、不可重复读、虚读情况的发生。(串行化) Repeatable read:可避免脏读、不可重复读情况的发生。(可重复读) Read 阅读全文
posted @ 2020-11-29 14:43 咔啡 阅读(81) 评论(0) 推荐(0)
摘要:在一个用户下,可以获取到另外的用户下的表的数据,通常在跨数据库时使用。 create database link link93 connect to scott identified by tiger using '(DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) 阅读全文
posted @ 2020-11-29 14:41 咔啡 阅读(282) 评论(0) 推荐(1)
摘要:以Oracle数据库举例:(a-G要求掌握,H一般为DBA操作,了解就可以了) a。 建库:已知将保存海量数据的时候,因为Oracle是通过用户来管理数据的, 第一步我们先建一个tableaspace(假设表空间名为TEST), 然后建立用户TEST(一般情况下用户名和表空间同名), 建立的用户TE 阅读全文
posted @ 2020-11-29 14:37 咔啡 阅读(139) 评论(0) 推荐(0)
摘要:Oracle的备份与恢复有三种标准的模式,大致分为两大类,备份恢复(物理上的)以及导入导出(逻辑上的),而备份恢复又可以根据数据库的工作模式分为非归档模式(Nonarchivelog-style)和归档模式(Archivelog-style),通常,我们把非归档模式称为冷备份,而相应的把归档模式称为 阅读全文
posted @ 2020-11-29 14:36 咔啡 阅读(89) 评论(0) 推荐(0)
摘要:最好的办法是利用sql语句进行分页,这样每次查询出的结果集中就只包含某页的数据内容。 sql语句分页,不同的数据库下的分页方案各不一样,下面是主流的三种数据库的分页sql: oracle: select * from (select *,rownum as tempid from student ) 阅读全文
posted @ 2020-11-29 14:35 咔啡 阅读(102) 评论(0) 推荐(0)
摘要:PreparedStatement是预编译的SQL语句,效率高于Statement。 PreparedStatement支持操作符,相对于Statement更加灵活。 PreparedStatement可以防止SQL注入,安全性高于Statement。 阅读全文
posted @ 2020-11-29 14:34 咔啡 阅读(65) 评论(0) 推荐(0)
摘要:1. 注册数据库驱动。 2. 建立数据库连接。 3. 创建一个Statement。 4. 执行SQL语句。 5. 处理结果集。 6. 关闭数据库连接。 阅读全文
posted @ 2020-11-29 14:32 咔啡 阅读(94) 评论(0) 推荐(0)
摘要:(1)过程作为独立的PL/SQL语句块来执行,完成特定的业务功能;而函数作为表达式的部分被调用,完成一次特定的计算。 (2) 过程不需返回类型声明,程序内不需RETURN语句;函数必须声明返回类型,程序内必须包含有效的RETURN语句。 (3)过程可以使用IN/OUT/IN OUT的传参模式;函数只 阅读全文
posted @ 2020-11-29 14:29 咔啡 阅读(181) 评论(0) 推荐(0)
摘要:MVC (Model View Controller) 是一个设计模式,使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。M是指数据模型,V是指用户界面,C则是控制器。使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以应用于不同的表现形式。 MODEL: 阅读全文
posted @ 2020-11-29 14:27 咔啡 阅读(384) 评论(0) 推荐(0)
摘要:流行框架部分的面试题,可能覆盖Struts、Hibernate、Spring等相关内容 阅读全文
posted @ 2020-11-29 14:24 咔啡 阅读(48) 评论(0) 推荐(0)
摘要:值栈 Value Stack 值栈是Struts2框架的核心概念。所有的核心组件都以某种方式与之进行交互,它提供对上下文信息和执行环境中元素的访问机制。值栈的内容由如下4个层级组成。 1.临时对象 这些对象在请求处理中需要临时保存,比如集合中当前正在被迭代的元素。 2.模型对象 当action实现了 阅读全文
posted @ 2020-11-29 14:23 咔啡 阅读(80) 评论(0) 推荐(0)
摘要:<action name="downFile" class="org.fkjava.hrm.action.document.DocumentAction" method="fileExist"> <result type="stream"> <!-- 下载的文件类型application/octet 阅读全文
posted @ 2020-11-29 14:22 咔啡 阅读(71) 评论(0) 推荐(0)
摘要:l Interceptor及其相关子类 l TypeConverter及其相关子类 l Validator及其相关子类 l Result及其相关子类 l ObjectFactory及其相关子类 阅读全文
posted @ 2020-11-29 14:20 咔啡 阅读(55) 评论(0) 推荐(0)
摘要:特性 Struts1 Struts2 Action Struts1.x要求Action类要扩展自一个抽象基类。Struts1.x的一个共有的问题是面向抽象类编程而不是面向接口编程。 Struts2的Action类实现了一个Action接口,连同其他接口一起来实现可选择 和自定义的服务。Struts2 阅读全文
posted @ 2020-11-29 14:19 咔啡 阅读(79) 评论(0) 推荐(0)
摘要:Struts2拦截器是在访问某个Action或Action的某个方法,字段之前或之后实施拦截,并且Struts2拦截器是可插拔的,拦截器是AOP的一种实现. 拦截器栈(Interceptor Stack)类似于过滤器链。拦截器栈就是将拦截器按一定的顺序联结成一条链。在访问被拦截的方法或字段时,拦截器 阅读全文
posted @ 2020-11-29 14:16 咔啡 阅读(65) 评论(0) 推荐(0)
摘要:Struts 2.1 的隐式对象 (这些隐式对象都是Map类型) parameters 用于访问请求参数 request 用于访问HttpServletRequest的属性 session 用于访问HttpSession的属性 application 用于访问ServletContext的属性 at 阅读全文
posted @ 2020-11-29 14:15 咔啡 阅读(59) 评论(0) 推荐(0)
摘要:Hibernate是一个轻量级的持久层开源框架,它是连接Java应用程序和关系数据库的中间件,负责Java对象和关系数据之间的映射.Hibernate内部对JDBC API进行了封装,负责Java对象的持久化.因为它封装了所有的数据访问细节,使得业务逻辑层可以专注于实现业务逻辑. 它是一种优秀的OR 阅读全文
posted @ 2020-11-29 14:13 咔啡 阅读(103) 评论(0) 推荐(0)
摘要:ORM的全称是Object-Relational Mapping,即对象关系映射。ORM思想的提出来源于对象与关系之间相悖的特性。我们很难通过对象的继承与聚合关系来描述数据表中一对一、一对多以及多对多的关系。而面向对象思想中有关抽象与多态的原理,也无法通过关系数据库的SQL语句得以彰显。因此,我们需 阅读全文
posted @ 2020-11-29 14:11 咔啡 阅读(430) 评论(0) 推荐(0)
摘要:已配置结果类型名 类 名 描 述 dispatcher org.apache.struts2.dispatcher.ServletDispatcherResult 默认结果类型,用来呈现JSP页面 chain com.opensymphony.xwork2.ActionChainResult 将ac 阅读全文
posted @ 2020-11-29 14:07 咔啡 阅读(46) 评论(0) 推荐(0)
摘要:<action name="updateDocument" class="org.fkjava.hrm.action.document.DocumentAction" method="updateDocument"> <interceptor-ref name="token"></intercept 阅读全文
posted @ 2020-11-29 14:05 咔啡 阅读(69) 评论(0) 推荐(0)
摘要:HQL功能很强大,适合各种情况,但是动态条件查询构造起来很不方便; Criteria 最适合动态查询,但不太适合统计查询,QBE还不够强大.只适合简单的查询; Native-SQL可以实现特定的数据库的SQL,但是可移植性并不好。 如大部分查询都是动态条件查询,首先criteria,甚至使用Hibe 阅读全文
posted @ 2020-11-29 14:04 咔啡 阅读(119) 评论(0) 推荐(0)
摘要:体上,对于HIBERNATE性能调优的主要考虑点如下: l 数据库设计调整 l HQL优化 l API的正确使用(如根据不同的业务类型选用不同的集合及查询API) l 主配置参数(日志,查询缓存,fetch_size, batch_size等) l 映射文件优化(ID生成策略,二级缓存,延迟加载,关 阅读全文
posted @ 2020-11-29 14:03 咔啡 阅读(105) 评论(0) 推荐(0)
摘要:瞬时态(Transient)、 持久态(Persistent)、脱管态(Detached)。处于持久态的对象也称为PO(Persistence Object),瞬时对象和脱管对象也称为VO(Value Object)。 瞬时态:没有持久化标示符,数据库中无对应记录。当执行save和persist方法 阅读全文
posted @ 2020-11-29 14:02 咔啡 阅读(83) 评论(0) 推荐(0)
摘要:Get会发送查询语句提取数据,而load方法当对象使用时才去数据库查询。如果未能发现符合条件的记录,get方法返回null,而load方法会抛出一个ObjectNotFoundException。Load方法可返回实体的代理类实例,而get方法永远直接返回实体类。load方法可以充分利用内部缓存和二 阅读全文
posted @ 2020-11-29 14:01 咔啡 阅读(74) 评论(0) 推荐(0)
摘要:Hibernate的核心接口一共有5个,分别为:Session、SessionFactory、Transaction、Query和 Configuration。这5个核心接口在任何开发中都会用到。通过这些接口,不仅可以对持久化对象进行存取,还能够进行事务控制。下面对这五的核心接口分别加以介绍。 Se 阅读全文
posted @ 2020-11-29 13:59 咔啡 阅读(98) 评论(0) 推荐(0)
摘要:AOP为Aspect Oriented Programming的缩写,意为:面向切面编程(也叫面向方面),可以通过预编译方式和运行期动态代理实现在不修改源代码的情况下给程序动态统一添加功能的一种技术。 AOP是目前软件开发中的一个热点,也是Spring框架中的一个重要内容。利用AOP可以对业务逻辑的 阅读全文
posted @ 2020-11-29 13:57 咔啡 阅读(297) 评论(0) 推荐(0)
摘要:Spring是一个轻量级的容器,非侵入性的框架.最重要的核心概念是IOC,并提供AOP概念的实现方式,提供对持久层,事务的支持,对当前流行的一些框架(Struts,Hibernate,MVC),Sping也提供了与它们的相整合的方案.使用Spring,我们能够减少类之间的依赖性和程序之间的耦合度,最 阅读全文
posted @ 2020-11-29 13:55 咔啡 阅读(143) 评论(0) 推荐(0)
摘要:第一级缓存由Session实例维护,它是必选的,其中保持了Session当前所有关联实体的数据,也称为内部缓存。而第二级缓存则存在于SessionFactory层次,它是可选的。一级缓存只能为当前线程的会话缓存,无法给整个应用共享;二级缓存可为整个应用提供缓存支持。二级缓存可以开启查询缓存,而一级缓 阅读全文
posted @ 2020-11-29 13:53 咔啡 阅读(140) 评论(0) 推荐(0)
摘要:Required 如果当前存在一个事务,则加入当前事务。如果不存在任何事务,则创建一个新的事务。总之,要至少保证在一个事务中运行。PROPAGATION_REQUIRED通常作为默认的事务传播行为。propagtion RequiresNew 不管当前是否存在事务,都会创建新的事务。如果当前存在事务 阅读全文
posted @ 2020-11-29 13:51 咔啡 阅读(443) 评论(0) 推荐(0)
摘要:将 auto.commit.offset 设为 false,然后在处理一批消息后 commitSync() 或者 异步提交 commitAsync() 即: ConsumerRecords<> records = consumer.poll(); for (ConsumerRecord<> reco 阅读全文
posted @ 2020-11-29 13:50 咔啡 阅读(189) 评论(0) 推荐(0)
摘要:request.required.acks 有三个值 0 1 -1(all) 0:生产者不会等待 broker 的 ack,这个延迟最低但是存储的保证最弱当 server 挂 掉的时候就会丢数据。 1:服务端会等待 ack 值 leader 副本确认接收到消息后发送 ack 但是如果 leader 阅读全文
posted @ 2020-11-29 13:48 咔啡 阅读(1368) 评论(0) 推荐(0)
摘要:出现“活锁”的情况,是它持续的发送心跳,但是没有处理。为了预防消费者在 这种情况下一直持有分区,我们使用 max.poll.interval.ms 活跃检测机制。 在此 基础上,如果你调用的 poll 的频率大于最大间隔,则客户端将主动地离开组,以 便其他消费者接管该分区。 发生这种情况时,你会看到 阅读全文
posted @ 2020-11-29 13:47 咔啡 阅读(588) 评论(0) 推荐(0)
摘要:Kafka 分布式的单位是 partition,同一个 partition 用一个 write ahead log 组织, 所以可以保证 FIFO 的顺序。不同 partition 之间不能保证顺序。但是绝大多数用 户都可以通过 message key 来定义,因为同一个 key 的 message 阅读全文
posted @ 2020-11-29 13:32 咔啡 阅读(1353) 评论(0) 推荐(0)
摘要:Zookeeper 是一个开放源码的、高性能的协调服务,它用于 Kafka 的分布式应用。 Zookeeper 主要用于在集群中不同节点之间进行通信 在 Kafka 中,它被用于提交偏移量,因此如果节点在任何情况下都失败了,它都 可以从之前提交的偏移量中获取 除此之外,它还执行其他活动,如: lea 阅读全文
posted @ 2020-11-29 13:31 咔啡 阅读(893) 评论(0) 推荐(0)
摘要:生产者在主题上发布消息: bin/kafka-console-producer.sh --broker-list 192.168.43.49:9092 --topic Hello-Kafka 注意这里的 IP 是 server.properties 中的 listeners 的配置。接下来每个新行就 阅读全文
posted @ 2020-11-29 13:29 咔啡 阅读(207) 评论(0) 推荐(0)
摘要:消息持久化,当然前提是队列必须持久化 RabbitMQ 确保持久性消息能从服务器重启中恢复的方式是,将它们写入磁盘上 的一个持久化日志文件,当发布一条持久性消息到持久交换器上时,Rabbit 会在 消息提交到日志文件后才发送响应。 一旦消费者从持久队列中消费了一条持久化消息,RabbitMQ 会在持 阅读全文
posted @ 2020-11-29 13:28 咔啡 阅读(146) 评论(0) 推荐(0)
摘要:在消息生产时,MQ 内部针对每条生产者发送的消息生成一个 inner-msg-id,作 为去重的依据(消息投递失败并重传),避免重复的消息进入队列; 在消息消费时,要求消息体中必须要有一个 bizId(对于同一业务全局唯一,如支 付 ID、订单 ID、帖子 ID 等)作为去重的依据,避免同一条消息被 阅读全文
posted @ 2020-11-29 13:27 咔啡 阅读(569) 评论(0) 推荐(0)
摘要:若该队列至少有一个消费者订阅,消息将以循环(round-robin)的方式发送给消 费者。每条消息只会分发给一个订阅的消费者(前提是消费者能够正常处理消息 并进行确认)。 通过路由可实现多消费的功能 阅读全文
posted @ 2020-11-29 13:24 咔啡 阅读(269) 评论(0) 推荐(0)
摘要:1、服务间异步通信 2、顺序消费 3、定时任务 4、请求削峰 阅读全文
posted @ 2020-11-29 13:23 咔啡 阅读(60) 评论(0) 推荐(0)
摘要:考虑以下情况:我们有多个应用程序使用 Spring Cloud Config 读取属性,而 Spring Cloud Config 从 GIT 读取这些属性。 下面的例子中多个员工生产者模块从 Employee Config Module 获取 Eureka 注 册的财产。 第 468 页 共 48 阅读全文
posted @ 2020-11-29 13:22 咔啡 阅读(368) 评论(0) 推荐(0)
摘要:使用 Spring Boot 开发分布式微服务时,我们面临以下问题 1、与分布式系统相关的复杂性-这种开销包括网络问题,延迟开销,带宽问题, 安全问题。 2、服务发现-服务发现工具管理群集中的流程和服务如何查找和互相交谈。它涉 及一个服务目录,在该目录中注册服务,然后能够查找并连接到该目录中的服务。 阅读全文
posted @ 2020-11-29 13:20 咔啡 阅读(482) 评论(0) 推荐(0)
摘要:Spring Boot 提供监视器端点以监控各个微服务的度量。这些端点对于获取有关应 用程序的信息(如它们是否已启动)以及它们的组件(如数据库等)是否正常运 行很有帮助。但是,使用监视器的一个主要缺点或困难是,我们必须单独打开应 用程序的知识点以了解其状态或健康状况。想象一下涉及 50 个应用程序的 阅读全文
posted @ 2020-11-29 13:16 咔啡 阅读(424) 评论(0) 推荐(0)
摘要:YAML 是一种人类可读的数据序列化语言。它通常用于配置文件。 与属性文件相比,如果我们想要在配置文件中添加复杂的属性,YAML 文件就更加 结构化,而且更少混淆。可以看出 YAML 具有分层配置数据。 阅读全文
posted @ 2020-11-29 13:13 咔啡 阅读(535) 评论(0) 推荐(0)
摘要:对于集成 Spring Boot 和 ActiveMQ,我们使用依赖关系。 它只需要很少的配置,并且不需要样板代码。 阅读全文
posted @ 2020-11-29 13:12 咔啡 阅读(104) 评论(0) 推荐(0)
摘要:Spring JavaConfig 是 Spring 社区的产品,它提供了配置 Spring IoC 容器的纯 Java 方法。因此它有助于避免使用 XML 配置。使用 JavaConfig 的优点在于: 1、面向对象的配置。由于配置被定义为 JavaConfig 中的类,因此用户可以充分 利用 J 阅读全文
posted @ 2020-11-29 13:10 咔啡 阅读(350) 评论(0) 推荐(0)
摘要:数据字典是属于’SYS’用户的,用户‘SYS’ 和 ’SYSEM’是由系统默认自动创建的 阅读全文
posted @ 2020-11-29 13:09 咔啡 阅读(110) 评论(0) 推荐(0)
摘要:alias la='ls -a' 阅读全文
posted @ 2020-11-29 13:07 咔啡 阅读(180) 评论(0) 推荐(0)
摘要:netstat 阅读全文
posted @ 2020-11-29 12:36 咔啡 阅读(183) 评论(0) 推荐(0)
摘要:whereis [-bfmsu][-B <目录>...][-M <目录>...][-S <目录>...][文件...] 补充说明:whereis 指令会在特定目录中查找符合条件的文件。这些文件的烈性 应属于原始代码,二进制文件,或是帮助文件。 -b 只查找二进制文件。 -B <目录> 只在设置的目录 阅读全文
posted @ 2020-11-29 12:34 咔啡 阅读(342) 评论(0) 推荐(0)
摘要:首先,创建一个简单的 insert 语句: <insert id=”insertname”> insert into names (name) values (#{value}) </insert> 然后在 java 代码中像下面这样执行批处理插入: list < string > names = 阅读全文
posted @ 2020-11-29 12:33 咔啡 阅读(226) 评论(0) 推荐(0)
摘要:您不应该这样做!Memcached 是一个非阻塞的服务器。任何可能导致 memcached 暂停或瞬时拒绝服务的操作都应该值得深思熟虑。向 memcached 中批量导入数据往往不是您真正想要的!想象看,如果缓存数据在导出导入之间 发生了变化,您就需要处理脏数据了; 阅读全文
posted @ 2020-11-29 12:30 咔啡 阅读(122) 评论(0) 推荐(0)
摘要:推荐使用 Hessian 序列化,还有 Duddo、FastJson、Java 自带序列化。 阅读全文
posted @ 2020-11-29 12:29 咔啡 阅读(93) 评论(0) 推荐(0)
摘要:Mybatis 使用 RowBounds 对象进行分页,它是针对 ResultSet 结果集执行的内 存分页,而非物理分页。可以在 sql 内直接书写带有物理分页的参数来完成物理分 页功能,也可以使用分页插件来完成物理分页。 分页插件的基本原理是使用 Mybatis 提供的插件接口,实现自定义插件, 阅读全文
posted @ 2020-11-29 12:28 咔啡 阅读(571) 评论(0) 推荐(0)
摘要:使用SpringJDBC 框架,资源管理和错误处理的代价都会被减轻。 所以开发者只需写statements 和 queries从数据存取数据,JDBC也可以在Spring框架提供的模板类的帮助下更有效地被使用,这个模板叫JdbcTemplate (例子见这里 here ) 阅读全文
posted @ 2020-11-29 12:16 咔啡 阅读(199) 评论(0) 推荐(0)
摘要:(1)过程作为独立的PL/SQL语句块来执行,完成特定的业务功能;而函数作为表达式的部分被调用,完成一次特定的计算。 (2) 过程不需返回类型声明,程序内不需RETURN语句;函数必须声明返回类型,程序内必须包含有效的RETURN语句。 (3)过程可以使用IN/OUT/IN OUT的传参模式;函数只 阅读全文
posted @ 2020-11-29 12:12 咔啡 阅读(172) 评论(0) 推荐(0)
摘要:DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。 它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。 阅读全文
posted @ 2020-11-29 12:10 咔啡 阅读(433) 评论(0) 推荐(0)
摘要:当有多个相同类型的bean却只有一个需要自动装配时,将@Qualifier 注解和@Autowire 注解结合使用以消除这种混淆,指定需要装配的确切的bean。 Spring数据访问 阅读全文
posted @ 2020-11-28 17:16 咔啡 阅读(91) 评论(0) 推荐(0)
摘要:Spring对数据访问对象(DAO)的支持旨在简化它和数据访问技术如JDBC,Hibernate or JDO 结合使用。这使我们可以方便切换持久层。编码时也不用担心会捕获每种技术特有的异常。 阅读全文
posted @ 2020-11-28 17:14 咔啡 阅读(49) 评论(0) 推荐(0)
摘要:有五种自动装配的方式,可以用来指导Spring容器用自动装配方式来进行依赖注入。 no:默认的方式是不进行自动装配,通过显式设置ref 属性来进行装配。 byName:通过参数名 自动装配,Spring容器在配置文件中发现bean的autowire属性被设置成byname,之后容器试图匹配、装配和该 阅读全文
posted @ 2020-11-28 17:12 咔啡 阅读(126) 评论(0) 推荐(0)
摘要:以通过 dubbo:reference 中设置 mock="return null"。mock 的值也可以修改 为 true,然后再跟接口同一个路径下实现一个 Mock 类,命名规则是 “接口名 称+Mock” 后缀。然后在 Mock 类里实现自己的降级逻辑 阅读全文
posted @ 2020-11-28 17:09 咔啡 阅读(66) 评论(0) 推荐(0)
摘要:Spring 容器在启动的时候,会读取到 Spring 默认的一些 schema 以及 Dubbo 自 定义的 schema,每个 schema 都会对应一个自己的 NamespaceHandler, NamespaceHandler 里面通过 BeanDefinitionParser 来解析配置信 阅读全文
posted @ 2020-11-28 17:07 咔啡 阅读(461) 评论(0) 推荐(0)
摘要:kill -3 [java pid] 不会在当前终端输出,它会输出到代码执行的或指定的地方去。比如,kill -3 tomcat pid, 输出堆栈到 log 目录下。 Jstack [java pid] 这个比较简单,在当前终端显示,也可以重定向到指定文件中。 -JvisualVM:Thread 阅读全文
posted @ 2020-11-28 17:04 咔啡 阅读(252) 评论(0) 推荐(0)
摘要:使当前线程从执行状态(运行状态)变为可执行态(就绪状态)。 当前线程到了就绪状态,那么接下来哪个线程会从就绪状态变成执行状态呢?可 能是当前线程,也可能是其他线程,看系统的分配了。 阅读全文
posted @ 2020-11-28 17:02 咔啡 阅读(196) 评论(0) 推荐(0)
摘要:面向切面的编程,或AOP, 是一种编程技术,允许程序模块化横向切割关注点,或横切典型的责任划分,如日志和事务管理。 阅读全文
posted @ 2020-11-28 17:01 咔啡 阅读(74) 评论(0) 推荐(0)
摘要:其实还是得结合业务来思考,我这里给几个思路: 比如你拿个数据要写库,你先根据主键查一下,如果这数据都有了,你就别插入 了,update 一下好吧。 比如你是写 Redis,那没问题了,反正每次都是 set,天然幂等性。 比如你不是上面两个场景,那做的稍微复杂一点,你需要让生产者发送每条数据 的时候, 阅读全文
posted @ 2020-11-28 17:00 咔啡 阅读(385) 评论(0) 推荐(0)
摘要:随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越 复杂,诞生了面向服务的架构体系(SOA), 也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信 协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。 就这样为分布式系统的服务治理框架就出现 阅读全文
posted @ 2020-11-28 16:59 咔啡 阅读(386) 评论(0) 推荐(0)
摘要:(1).Kafka 持久化日志,这些日志可以被重复读取和无限期保留 (2).Kafka 是一个分布式系统:它以集群的方式运行,可以灵活伸缩,在内部通过 复制数据提升容错能力和高可用性 (3).Kafka 支持实时的流式处理 阅读全文
posted @ 2020-11-28 16:57 咔啡 阅读(970) 评论(0) 推荐(0)
摘要:使用final关键字修饰一个变量时,是指引用变量不能变,引用变量所指向的对象中的内容还是可以改变的。 阅读全文
posted @ 2020-11-28 16:56 咔啡 阅读(109) 评论(0) 推荐(0)
摘要:可以继承其他类或实现其他接口,在 Swing 编程和 Android 开发中常用此方式来 实现事件监听和回调。 阅读全文
posted @ 2020-11-28 16:53 咔啡 阅读(291) 评论(0) 推荐(0)
摘要:IOC 或 依赖注入把应用的代码量降到最低。它使应用容易测试,单元测试不再需要单例和JNDI查找机制。最小的代价和最小的侵入性使松散耦合得以实现。IOC容器支持加载服务时的饿汉式初始化和懒加载。 阅读全文
posted @ 2020-11-28 16:51 咔啡 阅读(180) 评论(0) 推荐(0)
摘要:kafka 使用 seek(TopicPartition, long)指定新的消费位置。用于查找服务器保留 的最早和最新的 offset 的特殊的方法也可用(seekToBeginning(Collection) 和 seekToEnd(Collection)) 阅读全文
posted @ 2020-11-28 16:48 咔啡 阅读(232) 评论(0) 推荐(0)
摘要:delete 属于DML语句,删除数据,保留表结构,需要commit,可以回滚,如果数据量大,很慢。 truncate 属于DDL语句,删除所有数据,保留表结构,自动commit,不可以回滚,一次全部删除所有数据,速度相对较快。 Drop属于 DDL语句,删除数据和表结构,不需要commit,删除速 阅读全文
posted @ 2020-11-28 16:46 咔啡 阅读(301) 评论(0) 推荐(0)
摘要:抽象类和接口都不能够实例化,但可以定义抽象类和接口类型的引用。一个类如果继承了某个抽象类或者实现了某个接口都需要对其中的抽象方法全部进行实现,否则该类仍然需要被声明为抽象类。接口比抽象类更加抽象,因为抽象类中可以定义构造器,可以有抽象方法和具体方法,而接口中不能定义构造器而且其中的方法全部都是抽象方 阅读全文
posted @ 2020-11-28 16:45 咔啡 阅读(297) 评论(0) 推荐(0)
摘要:Spring的MVC框架是围绕DispatcherServlet来设计的,它用来处理所有的HTTP请求和响应。 阅读全文
posted @ 2020-11-28 16:43 咔啡 阅读(67) 评论(0) 推荐(0)
摘要:通常我们定义一个基本数据类型的变量,一个对象的引用,还有就是函数调用的现场保存都使用JVM中的栈空间;而通过new关键字和构造器创建的对象则放在堆空间,堆是垃圾收集器管理的主要区域,由于现在的垃圾收集器都采用分代收集算法,所以堆空间还可以细分为新生代和老生代,再具体一点可以分为Eden、Surviv 阅读全文
posted @ 2020-11-28 16:41 咔啡 阅读(184) 评论(0) 推荐(0)
摘要:面向对象的编程语言有4个主要的特征。封装:封装是保证软件部件具有优良的模块性的基础,封装的目标就是要实现软件部件的“高内聚、低耦合”,防止程序相互依赖性而带来的变动影响。把握一个原则:把对同一事物进行操作的方法和相关的方法放在同一个类中,把方法和它操作的数据放在同一个类中。抽象:抽象就是找出一些事物 阅读全文
posted @ 2020-11-28 16:40 咔啡 阅读(184) 评论(0) 推荐(0)
摘要:默认是阻塞的,可以异步调用,没有返回值的可以这么做。 Dubbo 是基于 NIO 的非阻塞实现并行调用,客户端不需要启动多线程即可完成 并行调用多个远程服务,相对多线程开销较小,异步调用会返回一个 Future 对 象。 阅读全文
posted @ 2020-11-28 16:39 咔啡 阅读(147) 评论(0) 推荐(0)
摘要:构造器Constructor不能被继承,因此不能重写Override,但可以被重载Overload。 阅读全文
posted @ 2020-11-28 16:38 咔啡 阅读(90) 评论(0) 推荐(0)
摘要:如果面试官问这个问题,那么他的意图一定是让你区分Iterator不同于Enumeration的两个方面: ●Iterator允许移除从底层集合的元素。 ●Iterator的方法名是标准化的。 阅读全文
posted @ 2020-11-28 16:37 咔啡 阅读(241) 评论(0) 推荐(0)
摘要:(1)节点必须可以维护和 ZooKeeper 的连接,Zookeeper 通过心跳机制检查每 个节点的连接 (2)如果节点是个 follower,他必须能及时的同步 leader 的写操作,延时不能太 久 阅读全文
posted @ 2020-11-28 16:35 咔啡 阅读(1363) 评论(0) 推荐(0)
摘要:和 MQTT 的事务定义一样都是 3 种。 (1)最多一次: 消息不会被重复发送,最多被传输一次,但也有可能一次不传输 (2)最少一次: 消息不会被漏发送,最少被传输一次,但也有可能被重复传输. (3)精确的一次(Exactly once): 不会漏传输也不会重复传输,每个消息都传输 被一次而且仅仅 阅读全文
posted @ 2020-11-28 16:32 咔啡 阅读(413) 评论(0) 推荐(0)
摘要:系统可用性降低 系统引入的外部依赖越多,越容易挂掉,本来你就是 A 系统调用 BCD 三个系统的 接口就好了,人 ABCD 四个系统好好的,没啥问题,你偏加个 MQ 进来,万一 MQ 挂了咋整?MQ 挂了,整套系统崩溃了,你不就完了么。 系统复杂性提高 硬生生加个 MQ 进来,你怎么保证消息没有重复 阅读全文
posted @ 2020-11-28 16:29 咔啡 阅读(149) 评论(0) 推荐(0)
摘要:bin/kafka-topics.sh --list --zookeeper localhost:2181 阅读全文
posted @ 2020-11-28 16:27 咔啡 阅读(471) 评论(0) 推荐(0)
摘要:大部分消息系统在 broker 端的维护消息被消费的记录:一个消息被分发到 consumer 后 broker 就马上进行标记或者等待 customer 的通知后进行标记。这 样也可以在消息在消费后立马就删除以减少空间占用。 但是这样会不会有什么问题呢?如果一条消息发送出去之后就立即被标记为消费 过 阅读全文
posted @ 2020-11-28 16:26 咔啡 阅读(669) 评论(0) 推荐(0)
摘要:int是java提供的8种原始数据类型之一。Java为每个原始类型提供了封装类,Integer是java为int提供的封装类。int的默认值为0,而Integer的默认值为null,即Integer可以区分出未赋值和值为0的区别,int则无法表达出未赋值的情况。例如,要想表达出没有参加考试和考试成绩 阅读全文
posted @ 2020-11-28 16:24 咔啡 阅读(328) 评论(0) 推荐(0)
摘要:1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束。 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据 丢失风险。许多消息队列所采用的”插入-获取-删除”范式中,在把一个消息从队 列中删除之前,需要你的处理系统明确的指出该消息已经被处理 阅读全文
posted @ 2020-11-28 16:21 咔啡 阅读(225) 评论(0) 推荐(0)
摘要:FreeMarker 是一个基于 Java 的模板引擎,最初专注于使用 MVC 软件架构进行动 态网页生成。使用 Freemarker 的主要优点是表示层和业务层的完全分离。程序员 可以处理应用程序代码,而设计人员可以处理 html 页面设计。最后使用 freemarker 可以将这些结合起来,给出 阅读全文
posted @ 2020-11-28 16:20 咔啡 阅读(223) 评论(0) 推荐(0)
摘要:Feign 是受到 Retrofit,JAXRS-2.0 和 WebSocket 启发的 java 客户端联编程序。 Feign 的第一个目标是将约束分母的复杂性统一到 http apis,而不考虑其稳定性。 在 employee-consumer 的例子中,我们使用了 employee-produ 阅读全文
posted @ 2020-11-28 16:16 咔啡 阅读(494) 评论(0) 推荐(0)