- 博客(120)
- 收藏
- 关注
原创 Log4j,Log4j2,logback,slf4j日志框架比较
常用日志框架简介Log4jLog4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、数据库等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。Log4j有7种不同的log级别,按照等级从低到高依次为:TRACE、DEBUG、INFO、WARN、ERROR、FATAL、OFF。如果配置为OFF级别,表示关闭log。Log4j支持两种格式的配置文件:properties和xml。包含三个主要的
2020-05-21 10:03:58 632
原创 Java中异常处理最佳实践
1. 在 finally 块中清理资源或者使用 try-with-resource 语句当使用类似InputStream这种需要使用后关闭的资源时,一个常见的错误就是在try块的最后关闭资源。public void doNotCloseResourceInTry() { FileInputStream inputStream = null; try { File file = new File("./tmp.txt"); inputStream = new
2020-05-20 17:37:38 467
原创 Spring常用校验API
从Spring 3.0开始,在Spring MVC中提供了对Java校验API的支持。在Spring MVC中要使用它的话,只要保证在类路径下包含这个Java API的实现即可,比如Hibernate Validator。Java校验API定义了多个注解,这些注解可以放到属性上,从而限制这些属性的值。所有注解都位于javax.validation.constraints包中。下表列出了这些校验注解package spittr.model;import javax.validation.constr
2020-05-20 14:38:01 355 1
原创 Spring注解@ComponentScan
@ComponentScan常用参数basePackages:对basepackages()指定扫描注释组件包类型安全的替代。excludeFilters:指定不适合组件扫描的类型。includeFilters:指定哪些类型有资格用于组件扫描。lazyInit:指定是否应注册扫描的beans为lazy初始化。nameGenerator:用于在Spring容器中的检测到的组件命名。resourcePattern:控制可用于组件检测的类文件。scopedProxy:指出代理是否应该对检测元件产生,
2020-05-20 14:08:09 343
原创 Spring的面向切面编程
面向切面编程在使用面向切面编程时,我们仍然在一个地方定义通用功能,但是可以通过声明的方式定义这个功能要以何种方式在何处应用,而无需修改受影响的类。横切关注点可以被模块化为特殊的类,这些类被称为切面(aspect)。术语描述切面的常用术语有通知(advice)、切点(pointcut)和连接点(join point)。通知(Advice)在AOP术语中,切面的工作被称为通知。Spring切面可以应用5种类型的通知:前置通知(Before):在目标方法被调用之前调用通知功能;后置通知(After
2020-05-20 11:11:03 467
原创 Spring Bean的作用域
1.情况下,Spring应用上下文所有bean都是作为以单例的形式创建的。Spring定义了多种作用域,可以基于这些作用域创建bean,包括:单例(Singleton):在整个应用中,只创建bean的一个实例。原型(Prototype):每次注入或者通过Spring应用上下文获取的时候,都会创建一个新的bean实例。会话(Session):在Web应用中,为每个会话创建一个bean实例。请求(Request):在Web应用中,为每个请求创建一个bean实例。2.例如,如果你使用组件扫描,可以
2020-05-19 16:05:16 284
原创 pojo和javabean的比较
什么是POJO按照Martin Fowler的解释是“Plain Old Java Object”,从字面上翻译为“纯洁老式的Java对象”,但大家都使用“简单java对象”来称呼它。POJO的内在含义是指那些没有从任何类继承、也没有实现任何接口,更没有被其它框架侵入的java对象。JavaBean 是一种JAVA语言写成的可重用组件。它的方法命名,构造及行为必须符合特定的约定:1.这个类必须有一个公共的缺省构造函数。2.这个类的属性使用getter和setter来访问,其他方法遵从标准命名规范。
2020-05-19 13:44:28 277 1
原创 Mybatis中使用JDK8的日期API的配置
概述在使用Mybatis这种半自动化的框架中,我们都知道,实体Entity的属性与数据库中表的字段存在着一种映射关系,我们以MySql举例,比如表中varchar与java中String的映射,date与java.sql.Date,time与java.sql.Time,datetime与java.util.Date等之间的这种映射关系。而在JDK8中,目前是没有直接提供与LocalDate这种相关联的映射的。如果直接使用,会提示类似错误:No typehandler found for property
2020-05-19 10:27:00 299
原创 kafka知识点总结
1、什么是kafkaKafka是分布式发布-订阅消息系统,它最初是由LinkedIn公司开发的,之后成为Apache项目的一部分,Kafka是一个分布式,可划分的,冗余备份的持久性的日志服务,它主要用于处理流式数据。2 为什么要使用 kafka,为什么要使用消息队列缓冲和削峰:上游数据时有突发流量,下游可能扛不住,或者下游没有足够多的机器来保证冗余,kafka在中间可以起到一个缓冲的作用,把消息暂存在kafka中,下游服务就可以按照自己的节奏进行慢慢处理。解耦和扩展性:项目开始的时候,并不能确定具体
2020-05-18 16:47:52 258
原创 Tomcat知识点总结
Tomcat是什么?Tomcat 服务器Apache软件基金会项目中的一个核心项目,是一个免费的开放源代码的Web 应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP 程序的首选。Tomcat的缺省端口是多少,怎么修改找到Tomcat目录下的conf文件夹进入conf文件夹里面找到server.xml文件打开server.xml文件在server.xml文件里面找到下列信息把Connector标签的8080端口改成你想要的端口<S
2020-05-14 13:49:36 789
原创 MongoDB中GridFS简介
GridFS简介GridFS是Mongo的一个子模块,使用GridFS可以基于MongoDB来持久存储文件。并且支持分布式应用(文件分布存储和读取)。作为MongoDB中二进制数据存储在数据库中的解决方案,通常用来处理大文件,对于MongoDB的BSON格式的数据(文档)存储有尺寸限制,最大为16M。但是在实际系统开发中,上传的图片或者文件可能尺寸会很大,此时我们可以借用GridFS来辅助管理这些文件。GridFS不是MongoDB自身特性,只是一种将大型文件存储在MongoDB的文件规范,所有官方支持
2020-05-14 13:16:32 560
原创 springboot、spring与mongodb集成
springboot+jpa+mongodb开发实战1、新建maven工程,引入springboot和mongodb依赖。pom.xml<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId&
2020-05-14 13:03:31 315
原创 MongoDB知识点总结
MongoDB简介MongoDB数据库是一种可扩展的敏捷NoSQL数据库,它是基于文档存储模型。在这种模型下,数据会被存储为文档,而不是我们熟知的例如MySQL、Oracle等的行和列的存储。文档是以BSON对象的形式存储。MongoDB旨在实现一个高性能、高可用、可自动扩展的数据存储,MongoDB因为速度快、可扩展性强、易于实现、为需要存储用户评论、博客和其他内容的网站提供了极佳的后端存储解决方案:面向文档:MongoDB的数据存储是以文档存储的,其数据在数据库中的存储格式与服务器端脚本和客户端处
2020-05-14 10:10:45 785
原创 HTTP 、HTTPS 、TCP 和UDP
具体介绍IP (网际协议)在网络通信中,网络组件的寻址对信息的路由选择和传输来说是相当关键的。相同网络中的两台机器间的消息传输有各自的技术协定。LAN 是通过提供6字节的唯一标识符(“MAC”地址)在机器间发送消息的。SNA 网络中的每台机器都有一个逻辑单元及与其相应的网络地址。DECNET、AppleTalk 和 Novell IPX 均有一个用来分配编号到各个本地网和工作站的配置。HTTPHTTP协议是建立在请求/响应模型上的。首先由客户建立一条与服务器的TCP链接,并发送一个请求到服务器,请求
2020-05-11 17:47:27 668
原创 MySQL数据库SQL语句执行顺序及优化
一、sql执行顺序(1)from(3) join(2) on(4) where(5)group by(开始使用select中的别名,后面的语句中都可以使用)(6) avg,sum…(7)having(8) select(9) distinct(10) order by(11) limit从这个顺序中我们不难发现,所有的 查询语句都是从from开始执行的,在执行过程中,每个步骤都会为下一个步骤生成一个虚拟表,这个虚拟表将作为下一个执行步骤的输入。第一步:首先对from子句中的前两个表
2020-05-11 12:17:34 1060 1
原创 JDK7新特性
二进制字面量在JAVA SE 7,整数类型例如(byte,short,int,long)能够用二进制来表示了。通过在数字前面加入0b或者0B来标示一个二进制的字面量,看下面的例子://一个8位'byte'值:byte aByte = (byte)0b00100001;//一个16位'short'值:short aShort = (short)0b1010000101000101;//一些32位'int'值:int anInt1 = 0b101000010100010110100001010
2020-05-10 19:29:44 208
原创 JDK8新特性
一、Java 8 Lambda 表达式Lambda 表达式,也可称为闭包,它是推动 Java 8 发布的最重要新特性。Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)。使用Lambda 表达式可以使代码变的更加简洁紧凑。语法lambda 表达式的语法格式如下:(parameters) -> expression或(parameters) ->{statements; }以下是lambda表达式的重要特征:· 可选类型声明:不需要声明参数类型,编
2020-05-10 19:13:41 374
原创 Netty知识点总结
1.Netty 是什么?Netty是 一个异步事件驱动的网络应用程序框架,用于快速开发可维护的高性能协议服务器和客户端。Netty是基于nio的,它封装了jdk的nio,让我们使用起来更加方法灵活。2.Netty 的特点是什么?高并发:Netty 是一款基于 NIO(Nonblocking IO,非阻塞IO)开发的网络通信框架,对比于 BIO(Blocking I/O,阻塞IO),他的并发性能得到了很大提高。传输快:Netty 的传输依赖于零拷贝特性,尽量减少不必要的内存拷贝,实现了更高效率的传输。
2020-05-09 12:55:09 429
原创 MySQL数据库知识点总结
数据库基础知识为什么要使用数据库数据保存在内存优点: 存取速度快缺点: 数据不能永久保存数据保存在文件优点: 数据永久保存缺点:1)速度比内存操作慢,频繁的IO操作。2)查询数据不方便数据保存在数据库1)数据永久保存2)使用SQL语句,查询方便效率高。3)管理数据方便什么是SQL?结构化查询语言(Structured Query Language)简称SQL,是一种数据库...
2020-05-08 11:45:21 1608
原创 RabbitMQ知识点总结
1、为什么使用MQ?MQ的优点简答异步处理 - 相比于传统的串行、并行方式,提高了系统吞吐量。应用解耦 - 系统间通过消息通信,不用关心其他系统的处理。流量削锋 - 可以通过消息队列长度控制请求量;可以缓解短时间内的高并发请求。日志处理 - 解决大量日志传输。消息通讯 - 消息队列一般都内置了高效的通信机制,因此也可以用在纯的消息通讯。比如实现点对点消息队列,或者聊天室等。详答主要...
2020-05-06 20:32:50 1133
原创 Nginx知识点总结
1、 请解释一下什么是Nginx?NNginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,用于HTTP、HTTPS、 SMTP、POP3 和 IMAP 协议。2、 请列举Nginx的一些特性。Nginx 是一个高性能的 Web 和反向代理服务器, 它具有有很多非常优越的特性:作为 Web 服务器:相比 Apache,Nginx 使用更少的资源,支...
2020-05-06 12:49:30 896
原创 cookie和session
Session 是客户端与服务器通讯会话技术, 比如浏览器登陆、记录整个浏览会话信息一、cookie机制和session机制的区别具体来说cookie机制采用的是在客户端保持状态的方案,而session机制采用的是在服务器端保持状态的方案。同时我们也看到,由于才服务器端保持状态的方案在客户端也需要保存一个标识,所以session机制可能需要借助于cookie机制来达到保存标识的目的,但...
2020-05-06 10:58:23 847
原创 分布式事务
1、什么是分布式事务分布式事务就是指事务的参与者、支持事务的服务器、资源服务器以及事务管理器分别位于不同的分布式系统的不同节点之上。以上是百度百科的解释,简单的说,就是一次大的操作由不同的小操作组成,这些小的操作分布在不同的服务器上,且属于不同的应用,分布式事务需要保证这些小操作要么全部成功,要么全部失败。本质上来说,分布式事务就是为了保证不同数据库的数据一致性。2、分布式事务的产生的原因2...
2020-05-06 10:19:38 459
原创 ZooKeeper知识点总结
1. ZooKeeper 是什么?ZooKeeper 是一个开源的分布式协调服务。它是一个为分布式应用提供一致性服务的软件,分布式应用程序可以基于 Zookeeper 实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列等功能。ZooKeeper 的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用...
2020-05-05 23:02:33 211
原创 Redis知识点总结
1、什么是RedisRedis(Remote Dictionary Server) 是一个使用 C 语言编写的,开源的(BSD许可)高性能非关系型(NoSQL)的键值对数据库。Redis 可以存储键和五种不同类型的值之间的映射。键的类型只能为字符串,值支持五种数据类型:字符串、列表、集合、散列表、有序集合。String(字符串)List(列表)Hash(字典)Set(集合)Sorte...
2020-05-05 22:37:52 450
原创 Dubbo知识点总结
1、为什么要用 Dubbo?随着服务化的进一步发展,服务越来越多,服务之间的调用和依赖关系也越来越复杂,诞生了面向服务的架构体系(SOA),也因此衍生出了一系列相应的技术,如对服务提供、服务调用、连接处理、通信协议、序列化方式、服务发现、服务路由、日志输出等行为进行封装的服务框架。就这样为分布式系统的服务治理框架就出现了,Dubbo 也就这样产生了。2、Dubbo 是什么?Dubbo 是一款...
2020-05-05 19:07:37 300
原创 RPC简介
RPC为什么要有RPChttp接口是在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便。利用现成的http协议进行传输。但是如果是一个大型的网站,内部子系统较多、接口非常多的情况下,RPC框架的好处就显示出来了,首先就是长链接,不必每次通信都要像http一样去3次握手什么的,减少了网络开销;其次就是RPC框架一般都有注册中心,有丰富的监控...
2020-05-05 19:07:21 260
原创 SpringCloud知识点总结
1、什么是Spring CloudSpring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、智能路由、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring Cloud并没有重复制造轮子,它只是将各家公司开发的比较成熟、经得起实际考验的服务框架组...
2020-05-05 17:33:29 1318
原创 SpringCloud注册中心Eureka、Consul、Zookeeper比较
Eureka获取服务服务消费者模式消费者启动的时候,使用服务别名,会发送一个rest请求到服务注册中心获取对应的服务信息,让后会缓存到本地jvm客户端中,同时客户端每隔30秒从服务器上更新一次。可以通过 fetch-interval-seconds=30参数进行修以通过eureka.client .registry该参数默认值为30, 单位为秒。eureka.client.registr...
2020-05-05 12:09:47 853
原创 SpringBoot知识点总结
1、SpringBoot 简介及优点Spring Boot 是 Spring 开源组织下的子项目,SpringBoot 是一个快速开发的框架,能够快速的整合第三方框架,简化XML配置,全部采用注解形式,内置Tomcat容器,帮助开发者能够实现快速开发,SpringBoot的Web组件 默认集成的是SpringMVC框架。Spring Boot的主要优点:独立运行为所有Spring开发者更快...
2020-05-04 16:11:21 619
原创 Mybatis多表高级查询
需求说明:一对一关联映射需求:查询订单信息,关联查询创建订单的用户信息方式一:resultType第一步:创建pojo—->OrdersCustom/ * 作用:将sql查询的 订单orders和用户user结果集 全部成功映射到 pojo中, 但是Orders.java中属性包含不全,因此在写一个pojo类在继承Orders基础上,补充添加其它属性信息, 注意让此类继承...
2020-05-03 14:16:31 295
原创 Mybatis常用标签
概述:Mapper映射文件是一个xml格式文件,必须遵循相应的dtd文件规范,如:“http://mybatis.org/dtd/mybatis-3-mapper.dtd”映射文件是以<mapper>作为根节点,在根节点中支持9个元素,分别为insert、update、delete、select(增删改查);cache、cache-ref、resultMap、parameterMa...
2020-05-03 11:48:57 670
原创 Mybatis中#{}和${}的区别
1、场景:数据库有两个一模一样的表。历史表,当前表 查询表中的信息,有时候从历史表中去查询数据,有时候需要去新的表去查询数据。 希望使用1个方法来完成操作。<select id="queryUserByTableName" resultType="com.zpc.mybatis.pojo.User"> select * from #{tableName}</selec...
2020-05-03 11:14:18 266
原创 MyBatis中查询结果resultType返回值类型
常见的MyBatis中查询结果resultType返回值类型1、基本类型 :resultType=基本类型2、List类型:resultType=List中元素的类型即泛型类型多条记录,需要返回List<Map<String,Object>>,可以自定义一个<resultMap>3、Map类型单条记录,{表字段名, 对应的值}方式存入到Map:r...
2020-05-02 14:44:30 2516
原创 MyBatis知识点总结
1、什么是MyBatis(1)Mybatis是一个半ORM(对象关系映射)框架(Mybatis在查询关联对象或关联集合对象时,需要手动编写sql来完 成,所以,称之为半自动ORM映射工具。Hiber nate属于全自动ORM映射工具,使用Hiber nate查询关联对象或者 关联集合对象时,可以根据对象关系模型直接获取,所以它是全自动的。),它内部封装了JDBC,开发时只需要关注SQL语句本身,...
2020-05-01 20:46:00 812
原创 SpringMVC常用注解标签
1、@RequestMappingRequestMapping是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为父路径。RequestMapping注解有六个属性,下面我们把她分成三类进行说明。1、 value, method;value: 指定请求的实际地址,指定的地址可以是URI Template 模式;method: ...
2020-05-01 16:54:06 174
原创 SpringMVC中的异常处理
SpringMVC提供了两种方式1)使用 SpringMVC提供的简单异常处理器 SimpleMapperingExceptionResolver (需要配合 .xml 文件来配置)2)使用注解@ExceptionHandler( 用在方法上) 实现局部异常处理或使用注解@ControllerAdvice(类)实现全局统一处理异常***注意:不建议在请求处理方法中写异常处理块(catch),...
2020-05-01 15:17:46 243
原创 SpringMVC知识点总结
1、什么是 SpringMvc? Spring MVC 的优点?SpringMvc是spring的一个模块,基于MVC的一个框架,无需中间整合层来整合。MVC框架就是一个分离了控制器,模型对象、分派器以及处理程序的各个角色,这种分离让它们更容易进行定制。功能类似于Servlet,springmvc的核心控制器dispatcherServlet是继承自framworkerSevlet来看看继承...
2020-05-01 13:21:29 552
原创 Spring知识点总结
1、 什么是Spring框架?使用Spring框架能带来哪些好处?Spring框架有哪些主要模块?Spring是一个分层的JavaSE/EEfull-stack(一站式)轻量级开源框架。为什么说Spring是一个一站式的轻量级开源框架呢?JavaEE开发可分成三层架构,针对JavaEE的三层结构,每一层Spring都提供了不同的解决技术。• WEB层:SpringMVC• 业务层:S...
2020-04-30 22:54:00 579
原创 Spring事物传播行为
概述事务传播行为(propagation behavior)指的就是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何进行。1.PROPAGATION_REQUIRED我们为User1Service和User2Service相应方法加上Propagation.REQUIRED属性。User1Service方法:@Servicepublic class User1Service...
2020-04-30 19:29:54 141
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人