- 博客(126)
- 收藏
- 关注
原创 Logback中文网:Logback学习笔记(五)Logback-core中的Appenders
一、什么是Appenderlogback将写入日志事件的任务委托给一个名为 appender 的组件,Appender 必须实现 ch.qos.logback.core.Appender接口。Appender接口的源码:package ch.qos.logback.core;import ch.qos.logback.core.spi.ContextAware;import...
2019-08-22 21:24:08
1720
原创 Lombok学习笔记(二)Lombok对slf4j的简化开发(@Slf4j)
导入Jar文件:slf4j-api-1.7.25.jarlombok-1.18.0.jarlogback-core-1.2.3.jarlogback-classic-1.2.3.jarlogback-access-1.2.3.jar我们在使用日志门面 slf4j 进行日志处理时,对于需要进行日志输出的类都需要使用LoggerFactory去获取一个Logger实例,这样做很是麻烦...
2019-08-22 16:28:37
879
原创 Logback中文网:Logback学习笔记(二)Logback的架构
1、Logger, Appender 和 LayoutsLogback 构建在三个主要的类上:Logger,Appender 和 Layouts。这三个不同类型的组件一起作用能够让开发者根据消息的类型以及日志的级别来打印日志。Logger类作为 logback-classic 模块的一部分。Appender与Layouts接口作为 logback-core 的一部分。作为一个通用的模块,l...
2019-08-22 15:57:47
401
原创 Logback中文网:Logback学习笔记(四)配置Logback(2)
一、指定logback加载配置文件的路径前文讲到,logback在启动时会自动加载放在类路径下的配置文件,那么有没有一种配置,让Logback在启动时加载我们指定位置的配置文件呢,答案是肯定的。我们通过系统属性 logback.configurationFile 可以指定默认的配置文件的路径。它的值可以是 URL,类路径下的文件或者是应用外部的文件。通过命令行配置:java ...
2019-08-22 14:51:31
739
原创 Logback中文网:Logback学习笔记(三)配置Logback(1)
一、配置Logback可以通过以下三种方式配置Logback:编程方式 配置 XML 脚本 配置Groovy 格式logback 的初始化步骤:logback 会在类路径下寻找名为 logback-test.xml 的文件。 如果没有找到,logback 会继续寻找名为 logback.groovy 的文件。 如果没有找到,logback 会继续寻找名为 logbac...
2019-08-22 12:20:08
630
原创 Lombok学习笔记(一)Lombok及其注解
初识Lombok一、Lombok简介Lombok是一个可以通过简单的注解形式来帮助我们简化消除一些必须有但显得很臃肿的Java代码的工具,通过使用对应的注解,可以在编译源码的时候生成对应的方法。使用Lombok前需要在idea上安装Lombok插件,如图:然后需要在我们的项目中导入Lombok的jar文件:lombok-1.18.0.jar然后我们创建一个Java...
2019-08-22 09:14:07
491
原创 Jackson学习笔记(三)常用注解的使用
Jackson常用注解的使用一、常用注解介绍和用法1、@JsonIgnoreProperties此注解为类注解,作用是json在序列化时将POJO中的一些属性忽略掉,序列化和反序列化都受影响。忽略掉Studen类的 id 和 name 属性:@JsonIgnoreProperties(value = {"id","name"})public class Student ...
2019-08-21 19:04:06
442
原创 Jackson学习笔记(二)Jackson解析xml
Jackson解析xmlJackson解析xml并不常用,推荐使用Dom4j导入jar文件://基本jackson-annotations-2.9.9.jarjackson-core-2.9.9.jarjackson-databind-2.9.9.jar//支持XMLjackson-dataformat-xml-2.9.8.jarjackson-module-jaxb-a...
2019-08-21 16:15:05
4280
原创 Junit 4学习笔记(二)打包、参数化、规则、超时和异常等测试
导入jar文件junit-4.12.jar//junit-4.11之后需要自己导入该包hamcrest-core-1.3.jar一、套件测试(打包测试)测试套件意味着捆绑几个单元测试用例并且一起执行他们。在 JUnit 中,@RunWith和@Suite注释用来运行套件测试。当一个类被注解为@RunWith时, JUnit 将调用注解中的Suite,以便运行测试类,...
2019-08-21 12:01:54
417
原创 Junit 4学习笔记(一)简介、注解和断言
Junit导入jar文件:junit-4.12.jar//junit-4.11之后需要自己导入该包hamcrest-core-1.3.jar一、简介JUnit是一个Java编程语言编写的单元测试框架。是xUnit测试框架家族中最为成功的一个。JUnit是用于编写和运行可重复的自动化测试的开源测试框架, 这样可以保证我们的代码按预期工作。JUnit为我们提供了如下功能...
2019-08-21 09:30:44
457
原创 Jackson学习笔记(一)Jackson解析Json
初识Jackson导入jar文件:jackson-annotations-2.9.9.jarjackson-core-2.9.9.jarjackson-databind-2.9.9.jar一、Jackson简介1、JacksonJackson是一个简单基于Java应用库,Jackson可以轻松的将Java对象转换成json对象和xml文档,同样也可以将json、xml...
2019-08-20 22:26:00
2725
原创 W3CSChool:Json学习笔记(一)简介和基础语法
一、JSON简介1、什么是JSONJSON:JavaScript 对象表示法(JavaScript Object Notation)。 JSON 是存储和交换文本信息的语法。类似 XML。 JSON 比 XML 更小、更快,更易解析。JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。它基于ECMAScript的一个子集(或者说,JSON ...
2019-08-20 17:00:54
293
原创 Java基础学习总结:使用Calendar实现一个万年历
1、题目:使用Calendar完成一个万年历 要求:键盘输入一个年份和月份,控制台输出当月的日历刚开始没什么思路,在网上看了别人的代码,都感觉实现很麻烦。读完别人的代码后找到了自己的思路,于是就开始自己试着写一个。2、自己动手首先,我们需要定义一个 MyCalendar 类,该类中有两个方法,calender(int year,month) 和 display(int []) ...
2019-08-20 11:21:30
1059
转载 XML学习笔记(三)XML文件在浏览器的格式化显示(转)
菜鸟教程:www.runoob.com一、使用CSS文件格式化XML文件使用CSS文件对XML文件进行格式化显示:CD列表的XML文件件:<?xml version="1.0" encoding="ISO-8859-1"?><?xml-stylesheet type="text/css" href="https://www.w3cschool.cn/xml/c...
2019-08-20 10:47:14
1097
转载 XML学习笔记(二)XML的元素、属性和验证(转)
菜鸟教程:www.runoob.com一、XML元素XML 元素是 XML 文档中必不可缺的部分,我们可以将 XML 元素看成一个容器,其中存放了文本,元素,属性,媒体对象或所有的这些。XML 文档包含 XML 元素。每个 XML 文档包含一个或多个元素,其范围是任一分隔的由开始和结束标记,或者为空元素,用一个空元素标签。XML 元素指的是从(且包括)开始标签直到(且包括)结束标签的部...
2019-08-20 10:46:45
321
转载 XML学习笔记(一)XML介绍、用途、文档结构和基础语法(转)
菜鸟教程:www.runoob.com一、什么是XMLXML指可扩展标记语言(Extensible Markup Language),被设计用来传输和存储数据。XML文档实例:<?xml version="1.0"?><note> <to>Tove</to> <from>Jani</from>...
2019-08-20 10:14:39
358
原创 XML学习笔记(四)使用Dom4j解析XML
使用Dom4j解析XML一、解析XML的几种方式1、简介XML是一种通用的数据交换格式,它的平台无关性、语言无关性、系统无关性、给数据集成与交互带来了极大的方便。XML在不同的语言环境中解析方式都是一样的,只不过实现的语法不同而已。XML的解析方式分为四种:DOM解析; SAX解析; JDOM解析; DOM4J解析;其中前两种属于基础方法,是官方提供的平台无关的解析...
2019-08-20 10:11:59
291
转载 Java基础扩展提升总结:类加载机制(转)
Java类的加载机制1、什么是类的加载类的加载指的是将类的 .class 文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后再堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的 Class 对象,Class 对象封装了类在方法区内的数据结构,并且向 Java 程序员提供了访问方法区内的数据结构的接口。类...
2019-08-19 22:01:28
174
原创 Java基础扩展提升总结:Java 8 新特性之(五)新日期时间API
新日期时间API一、旧的日期时间API存在的问题在旧版的 Java 中,日期时间 API 存在诸多问题,其中有:非线程安全 − java.util.Date 是非线程安全的,所有的日期类都是可变的,这是Java日期类最大的问题之一。 设计很差 − Java的日期/时间类的定义并不一致,在java.util和java.sql的包中都有日期类,此外用于格式化和解析的类在java.te...
2019-08-19 18:02:03
150
原创 Java基础扩展提升总结:Java 8 新特性之(四)Stream API
Sream API1、什么是Stream API 及其作用(1)简介Stream是Java8中处理数组、集合的抽象概念,它可以指定你希望对集合进行的操作,可以执行非常复杂的查找、过滤和映射数据等操作。它与 java.io 包里的 InputStream 和 OutputStream 是完全不同的概念。使用Stream API对集合数据进行操作,就类似于使用SQL执行的数据库查询。...
2019-08-18 15:17:51
430
原创 Java基础扩展提升总结:Java 8 新特性之(三)方法引用
方法引用1、什么是方法引用方法引用是用来直接访问类或者实例的已经存在的方法或者构造方法。方法引用提供了一种引用而不执行方法的方式,它需要由兼容的函数式接口构成的目标类型上下文。计算时,方法引用会创建函数式接口的一个实例。当Lambda表达式中只是执行一个方法调用时,不用Lambda表达式,直接通过方法引用的形式可读性更高一些。方法引用是一种更简洁易懂的Lambda表达式,是lamb...
2019-08-18 15:03:34
203
原创 Java基础扩展提升总结:Java 8 新特性之(二)函数式接口
函数式接口一、什么是函数式接口(1)函数式接口定义如果一个接口只有一个抽象方法,则该接口称之为函数式接口。函数式接口可以使用Lambda表达式,lambda表达式会被匹配到这个抽象方法上 。通过Lambda表达式来创建该接口的对象,若Lambda表达式抛出一个受检异常,那么该异常需要在目标接口的抽象方法上进行声明。 为了确保你的接口一定达到这个要求,你只需要给你的接口添加...
2019-08-18 12:02:15
1517
原创 Java基础扩展提升总结:Java 8 新特性之(一)Lambda表达式
Lambda表达式Java 8 (又称为 jdk 1.8) 是 Java 语言开发的一个主要版本。 Oracle 公司于 2014 年 3 月 18 日发布 Java 8 ,它支持函数式编程,新的 JavaScript 引擎,新的日期 API,新的Stream API 等。一、Java 8新特性简介(1)Lambda表达式Lambda允许把函数作为一个方法的参数(函数作为一个...
2019-08-17 21:32:55
209
原创 Java基础扩展提升总结:内省机制
内省机制一、什么是内省1、内省和反射有什么区别?反射是在运行状态把Java类中的各种成分映射成相应的Java类,可以动态的获取所有的属性以及动态调用任意一个方法,强调的是运行状态。内省(IntroSpector)是Java 语言对 Bean 类属性、事件的一种缺省处理方法。 JavaBean是一种特殊的类,主要用于传递数据信息,这种类中的方法主要用于访问私有的字段,且方法名符合...
2019-08-17 20:06:31
203
原创 Java基础扩展提升总结:反射机制
反射机制1、简介Java反射机制指的是在Java程序运行状态中,对于任何一个类,都可以获得这个类的所有属性和方法;对于给定的一个对象,都能够调用它的任意一个属性和方法。这种动态获取类的内容以及动态调用对象的方法称为反射机制。Java的反射机制允许编程人员在对类未知的情况下,获取类相关信息的方式变得更加多样灵活,调用类中相应方法,是Java增加其灵活性与动态性的一种机制。反射就是...
2019-08-17 10:53:45
181
转载 Java基础学习总结:网络编程之(四)TCP与UDP的区别及常见的网络协议(转)
TCP和UDP的区别原文:https://blog.csdn.net/li_ning_/article/details/521174631、TCP与UDP基本区别基于连接与无连接 TCP要求系统资源较多,UDP较少; UDP程序结构较简单 流模式(TCP)与数据报模式(UDP); TCP保证数据正确性,UDP可能丢包 TCP保证数据顺序,U...
2019-08-17 08:18:06
1347
原创 Java基础学习总结:网络编程之(三)UDP编程
一、UDP编程1、UDP简介在 TCP/IP 协议的传输层除了一个 TCP 协议之外,还有一个 UDP 协议。UDP (User Datagram Protocol)协议是用户数据报协议的简称,也用于网络数据的传输。虽然 UDP 协议是一种不太可靠的协议,但有时在需要较快地接收数据并且可以忍受较小错误的情况下,UDP 就会表现出更大的优势。UDP的特点:不安全 无连接 效率...
2019-08-16 20:02:19
210
原创 Java基础学习总结:网络编程之(二)TCP编程
TCP编程一、TCP概念TCP,Transmission Control Protocol,传输控制协议,基于字节流的传输层通信协议。特点: 安全、可靠 面向连接 传输数据大小限制,一旦连接建立,双方可以按统一的格式传输大的数据 效率低TCP的三次握手客户端向服务端发送一个请求 服务端收到请求后,回客户端一个响应 客户端向收到服务端的响应后,回服务端一个确认信息...
2019-08-16 19:05:35
225
原创 Java基础学习总结:网络编程之(一)基础
网络编程基础一、基础知识1.1、计算机网络 所谓计算机网络,就是把分布在不同区域的计算机与专门的外部设备用通信线路相互连接成一个规模大,而且功能强的网络系统,从而使得计算机之间可以相互传递信息,共享数据、软件等资源。网络分类 :按照地理范围:广域网( Internet) ,城域网( 一个城市、多个城市,长城宽带),局域网(机房)。1.2 网络编程 所谓网络编程(不是网站...
2019-08-15 22:02:16
155
原创 Java基础学习总结:JUC之(五)Lock接口
JUC.locks包中的Lock接口中的内容,比较常用的我在之前的博客中已经介绍的不少了,所以此篇博客仅仅是为了提醒自己Lock接口也是JUC中非常重要的一块内容,别被自己遗忘了。locks包中,重要接口:Lock Condition ReadWriteLock重要类:ReentrantLock ReentrantReadWriteLock关于ReentrantLock:...
2019-08-15 19:34:02
158
原创 Java基础学习总结:JUC之(四)并发集合
一、并发集合1、普通集合的并发问题前面学习了List(ArrayList|LinkedList)、Set(HashSet|TreeSet)、Map(HashMap|TreeMap)集合,这些集合只适合在单线程情况下使用。如果在多线程环境中,多个线程操作一个集合会出现问题:代码示例:package basis.stuJUC.stuSyncCollection;import ...
2019-08-15 19:22:50
512
原创 Java基础学习总结:JUC之(三)同步工具类
在JUC包中为我们提供了一个很有用的同步工具类:CountDownLatch:闭锁 CyclicBarrier:屏障 Semaphore:信号量1、CountDownLatch(闭锁)(1)简介CountDownLatch(闭锁)是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。闭锁可以延迟线程的进度,直到其到达终止状态,闭锁可以用来确保...
2019-08-15 15:51:26
178
原创 Java基础学习总结:JUC之(二)原子变量和CAS算法
一、原子变量1、i++的原子性什么是原子性:简单的可以理解为:操作是不可再分割的,比如:int i=0;但是 i++ 却是可以再分的。i++的操作实际上分为三个步骤: "读-改-写",i++可拆分为:int temp1=i;int temp2=temp+1;i=temp2;测试:代码:package basis.stuJUC.stuAto...
2019-08-15 14:20:03
180
原创 Java基础学习总结:JUC之(一)volatile关键字
参考博文:https://www.hollischuang.com/archives/2648一、volatile简介Java语言为了解决并发编程中存在的原子性、可见性和有序性问题,提供了一系列和并发处理相关的关键字,比如synchronized、volatile、final、以及JUC包等。volatile这个关键字,不仅仅在Java语言中有,在很多语言中都有的,而且其用法和...
2019-08-15 10:34:47
153
原创 Java基础学习总结:NIO之(四)IO总结:BIO、NIO、AIO
一、IO 介绍我们通常所说的 BIO 是相对于 NIO 来说的,BIO 也就是 Java 开始之初推出的 IO 操作模块,BIO 是 BlockingIO 的缩写,顾名思义就是阻塞 IO 的意思。1.1 BIO、NIO、AIO的区别BIO 就是传统的 java.io 包,它是基于流模型实现的,交互的方式是同步、阻塞方式,也就是说在读入输入流或者输出流时,在读写动作完成之前,线程会一直阻...
2019-08-15 09:00:41
462
原创 Java基础学习总结:NIO之(三)NIO网络编程与Selector
一、使用NIO实现阻塞式网络编程java.nio中与网络编程(TCP、UDP)相关的类有 ServerSocketChannel、SocketChannel 和 DatagramChannel。1、ServerSocketChannel和SocketChannel(1)ServerSocketChannel:Java NIO 中的 ServerSocketChannel 是一个...
2019-08-15 08:45:24
168
原创 Java基础学习总结:NIO之(二)Channel
Channel(管道)1、简介基本上,所有的 IO 在NIO 中都从一个Channel 开始。Channel 有点象流。 数据可以从Channel读到Buffer中,也可以从Buffer 写到Channel中。这里有个图示:JAVA NIO中的一些主要Channel的实现:FileChannel DatagramChannel SocketChannel Server...
2019-08-14 20:22:44
252
原创 Java基础学习总结:NIO之(一)初识NIO和Buffer
一、NIO1、简介java.nio全称Java non-blocking IO或Java New IO,是从jdk1.4 开始引入的一套新的 IO api(New IO) ,为所有的原始类型(boolean类型除外)提供缓存支持的数据容器,使用它可以提供非阻塞式的高伸缩性网络。(1)IO操作的模式:PIO(Programing IO): 所有的IO操作由CPU处理,CPU占用率比较...
2019-08-14 08:10:25
188
原创 Java基础学习总结:多线程之(八)读写锁
读写锁参考博文:https://www.jianshu.com/p/ab836f5e501e一、引言锁(Lock)是java一个很重要的同步组件,Lock提供了跟 synchronized 关键字一样的功能,相比synchronized更加灵活,但是实现也更加复杂。锁的分类:锁主要分为排他锁和读写锁。排他锁:在同一时刻只允许一个线程进行访问,其他线程等待; 读写锁:在同...
2019-08-13 19:19:22
190
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人