自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

yonggang7的专栏

web service相关

  • 博客(131)
  • 资源 (3)
  • 收藏
  • 关注

原创 JAVA类加载机制与反射-PPT

JAVA类加载机制与反射,类加载流程。PPT下载地址:https://download.csdn.net/download/u014285882/10870732

2018-12-23 16:04:21 541

原创 源码解析(三):MyBatis如何选择数据源

MyBatis如何选择数据源简介Mybatis调用数据源时序图主流程SimpleExecutorSpringManagedTransactionDataSourceUtils简介当我们自定义数据源 DynamicDataSource, 时, MyBatis是如何使用这个数据源, 并且建立连接的Mybatis调用数据源时序图绿色部分为我们业务实现代码。主流程在执行器 Executor中生成 Statement, 首先建立连接, 事务管理器中生成连接, 通过事务管理器检查是否为事务,Simple

2022-01-18 15:14:00 2538

原创 源码解析(二):多数据源的实现

多数据源实现继承实现 AbstractRoutingDataSource 类线程本地变量 DataSourceHolder数据源配置类数据源的设置与使用继承实现 AbstractRoutingDataSource 类AbstractRoutingDataSource类介绍见前一篇创建 DynamicDataSource 类,继承 AbstractRoutingDataSource , 实现了 determineCurrentLookupKey() 方法, 返回当前数据源的key/** * Dyna

2022-01-18 15:08:23 793

原创 源码解析(一):Spring JDBC如何实现多数据源

Spring JDBC如何实现多数据源背景类介绍bean初始化设置属性(1)AbstractRoutingDataSource 属性(2)初始化设置设置当前lookupKey(1)获取 lookupKey(2) 找到目标数据源获取连接背景为了实现多数据源需求, 每个用户连接不同的数据源,需要按照用户信息,动态切换数据源, 同一套代码,不同的线程执行,使用不同的数据源使用 spring jdbc中 AbstractRoutingDataSource 来实现类介绍AbstractDataSource

2022-01-18 15:01:00 1355

原创 Java日志框架(八):Springboot中日志

Springboot日志简介Maven依赖依赖图日志实现使用Maven依赖代码配置修改默认配置指定配置文件使用SpringBoot解析日志配置日志切换到log4j2简介Springboot中默认使用slf4j日志门面+logback日志实现Maven依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-star

2020-11-24 01:09:49 198

原创 Java日志框架(七):log4j2

log4j2简介官网地址使用Maven代码slf4j + log4j2配置文件log4j2异步日志AsyncLogger性能无垃圾模式log4j2.5log4j2.6简介Apache Log4j 2是对Log4j的升级版,参考了logback的一些优秀的设计,并且修复了一些问题,因此带来了一些重大的提升,主要有:异常处理,在logback中,Appender中的异常不会被应用感知到,但是在log4j2中,提供了一些异常处理机制。性能提升, log4j2相较于log4j 和logback都具有很明显

2020-11-22 23:14:40 286

原创 Java日志框架(六):logback

logback简介官网地址手册地址模块使用Maven依赖代码配置文件配置文件加载顺序配置文件log4j.properties转换成logback.xml简介Logback是由log4j创始人设计的另一个开源日志组件, 性能好于log4j官网地址http://logback.qos.ch/手册地址http://logback.qos.ch/manual/index.html模块Logback主要分为三个模块:logback-core:其它两个模块的基础模块logback-classic:

2020-11-22 20:02:57 179

原创 Java日志框架(五):SLF4J

SLF4J简介官方网址手册地址slf4j使用Maven依赖Java代码日志绑定使用slf4j的日志绑定流程引入Maven依赖绑定桥接旧的日志框架官网介绍桥接问题迁移方式注意事项slf4j原理解析简介简单日志门面(Simple Logging Facade For Java) SLF4J主要是为了给Java日志访问提供一套标准、规范的API框架,其主要意义在于提供接口,具体的实现可以交由其他日志框架,例如log4j和logback等。当然slf4j自己也提供了功能较为简单的实现,但是一般很少用到。对于一

2020-11-22 16:48:58 350

原创 Java日志框架(四):日志门面

日志门面简介常用门面框架常用日志实现日志门面和日志实现的关系日志框架出现时间顺序推荐使用简介门面模式(Facade Pattern),也称之为外观模式,其核心为:外部与一个子系统的通信必须通过一个统一的外观对象进行,使得子系统更易于使用。就像前面介绍的几种日志框架一样,每一种日志框架都有自己单独的API,要使用对应的框架就要使用其对应的API,这就大大的增加应用程序代码对于日志框架的耦合性。为了解决这个问题,就是在日志框架和应用程序之间架设一个沟通的桥梁,对于应用程序来说,无论底层的日志框架如何变,

2020-11-22 10:58:47 533 1

原创 Java日志框架(三):JCL

JCL简介官方网址手册地址使用maven依赖java使用原理Log类的实现实现流程LogFactory简介JCL(Jakarta Commons Logging)是Apache提供的一个通用日志API。它提供给中间件/日志工具开发者一个简单的日志操作抽象,允许程序开发人员使用不同的具体日志实现工具: Log4j, Jdk自带的日志(JUL)官方网址http://commons.apache.org/proper/commons-logging/index.html手册地址http://com

2020-11-21 17:32:28 272

原创 Java日志框架(二):log4j

log4j简介官方网址手册地址使用maven依赖Java使用代码log4j日志级别打开日志调试信息log4j组件LoggersAppendersLayouts配置文件文件目录Layout的格式Appender的输出自定义Logger简介Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能

2020-11-21 13:15:40 139

原创 Java日志(一):JUL

JULJava日志框架日志框架需要解决的问题:现有日志框架日志门面日志实现JUL简介JUL使用日志框架原理JUL配置自定义日志级别Logger之间的父子关系日志配置文件Java日志框架日志框架需要解决的问题:控制日志输出的内容和格式控制日志输出的位置日志优化:异步日志,日志文件的归档和压缩日志系统的维护面向接口开发 – 日志的门面现有日志框架JUL(java util logging)、logback、log4j、log4j2JCL(Jakarta Commons Logging)、

2020-11-17 00:37:55 338

原创 基于UDP协议的网络编程

UDP协议网络编程UDP协议DatagramSocketMulticastSocketUDP协议UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。UDP协议是面向非连接的协议,没有建立连接的过程, 因...

2019-05-03 20:31:32 456

原创 基于TCP协议的网络编程

TCP网络编程TCP/IP协议使用Socket通信服务端客户端多线程聊天半关闭Socket使用NIO实现非阻塞式通信使用AIOTCP/IP协议TCP/IP 协议是一种可靠的网络协议, 它在通信的两端各建立一个Socket,从而在通信的两端形成网络虚拟链路。从协议分层模型方面来讲,TCP/IP由四个层次组成:网络接口层、网络层、传输层、应用层。IP互联网协议(英语:Internet Pro...

2019-05-03 17:55:38 1125

原创 Java网络支持

网络支持网络支持使用 InetAddressURLEncoderURL网络支持Java为网络支持提供了 java.net 包。包括 URL和 URLConnection等类。使用 InetAddressInetAddress类代表 IP 地址, 包含2个子类:Inet4Address : 代表 IPv4, Internet Protocol version 4Inet6Address...

2019-05-02 21:56:42 304

原创 Java线程池

线程池线程池ExecutorsFolkJoinPoolThreadLocal类线程池系统启动一个线程的成本是比较高的,涉及与操作系统的交互。使用线程池可以很好的提高性能。线程池在系统启动时创建大量空闲线程,程序将Runnable或Callable对象传给线程池,线程池会启动一个线程执行他们的run()或call() 方法, 执行结束后,线程不会死亡, 而是回到线程池中进入空闲状态。使用线程...

2019-04-21 21:19:28 200

原创 Java线程同步

线程同步线程同步同步代码块同步方法释放同步监视器的锁定同步锁Lock死锁线程通信wait(), notify()使用Condition控制线程BlockingQueue线程同步多个线程操作一个资源的情况下,导致资源数据前后不一致。这样就需要协调线程的调度,即线程同步。 解决多个线程使用共通资源的方法是:线程操作资源时独占资源,其他线程不能访问资源。使用锁可以保证在某一代码段上只有一条线程访问共...

2019-04-21 14:09:35 131

原创 Java线程控制

线程控制线程的生命周期新建和就绪运行和阻塞状态线程死亡控制线程join线程后台线程sleep()yield()线程的生命周期线程的生命周期:新建(NEW),就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)5种状态。新建和就绪当使用 new关键字创建一个线程时,线程处于新建状态。Java虚拟机为其分配内存。并初始化其成员变量的值。当线程对象调用 s...

2019-04-07 16:55:03 129

原创 Java多线程

多线程进程与线程线程的创建与启动继承Thread类创建线程类使用 RunnableCallable 和 Future三种方式对比进程与线程当一个程序进入内存运行时,变成一个进程(Process)。进程的特征:独立性: 进程是系统中独立存在的实体,拥有独立的资源,每一个进程都拥有自己私有的地址空间。在没有进程本身允许下,一个用户进程不可用直接访问其他进程的地址空间。动态性: 程序是静态的...

2019-04-07 11:54:21 157

原创 Java注解Annotation

注解Java注解基本Annotation@Override@Deprecated@SuppressWarnings@SafeVarargs@FunctionalInterface元Annotation@Retention@Target@Documented@Inherited@Repeatable自定义注解提取Annotation信息APTJava注解Java注解(Annotation)提供了...

2019-03-10 21:49:09 443

原创 Java异常处理Exception

Java ExceptionJava 异常机制异常类Exception捕获多异常访问异常信息finallytry关闭资源Checked 和 Runtime 异常throwsthrow自定义异常类Java 异常机制Java异常机制主要依赖 try, catch, finally, throw, throws 五个关键字。使用 try catch捕获异常。try块中业务代码出现异常, 系统自动...

2019-03-03 21:02:15 264

原创 Java泛型

Java泛型泛型集合菱形语法泛型接口、类派生子类静态变量类型通配符类型通配符上限类型形参上限泛型方法泛型方法和通配符泛型构造器泛型泛型,Generic。允许在定义类,接口,方法时使用类型形参。这个类型形参在声明变量,创建对象,调用方法时动态指定,传入类型实参。集合集合框架中接口和类增加了泛型支持。Java集合对元素类型没有限制,在编译时不检查类型。 对象加入后,取出会变成 Object...

2019-02-24 20:53:32 116

原创 Java NIO.2

Java NIO.2NIO.2Path, Paths, FilesFileVisitorWatchService文件属性NIO.2Java7 对NIO进行了改进:新增java.nio.file 包,提供全面的文件IO和文件系统访问;基于异步Channel的IO,在java.nio.channels下增加 Asynchronous开头的Channel接口和类。Path, Paths, ...

2019-02-24 11:12:01 579

原创 Java NIO

Java NIOJava NIOBufferChannelCharset文件锁Java NIOJava 新IO New IO, 简称NIO。NIO和传统IO都用于进行输入/输出。NIO采用内存映射文件的方式处理IO,面向缓冲区的。将文件或文件的一段区域映射到内存中,像访问内存一样访问文件。传统IO是面向流的处理, NIO是面向块的处理。NIO相关包:java.nio : 与 Bu...

2019-02-23 23:45:03 129

原创 Java对象序列化

对象序列化对象序列化使用对象流实现序列化对象引用的序列化自定义序列化transient自定义控制各实例对象替换readResolve()Externalizable版本对象序列化Java的对象序列化是将Java对象转换成字节序列,二进制流。这些字节序列可以保存在磁盘,或通过网络传输。并且可以将这种二进制流恢复成原来的Java对象。对象的序列化(Serialize)是将JAVA对象写入IO流...

2019-02-17 15:43:48 642

原创 Java RandomAccessFile

RandomAccessFileRandomAccessFile方法RandomAccessFileRandomAccessFile 类是JAVA IO流体系中功能最丰富的文件内容访问类。可以读取文件内容,也可以写入,支持随机访问, 跳转到任意位置读写数据。与 OutputStream , Writer 输出流不通,允许自由定位文件记录指针。RandomAccessFile 只能读写文件...

2019-02-08 22:08:58 1161

原创 Java重定向标准输入/输出

重定向IO重定向IO读取其他进程的数据重定向IOJava标准输入是 System.in, 代表键盘标准输出是 System.out, 代表显示器。System类提供下面重定向标准IO。setErr(PrintStream err): 重定向标准错误setIn(InputStream in): 重定向标准输入setOut(PrintStream out): 重定向标准输出下面将...

2019-02-08 21:00:30 1231

原创 Java IO流

IO流IO流流的分类输入输出流字节流和字符流节点流和处理流InputStream和ReaderOutputStream 和 Writer处理流用法IO流转换流推回输入流IO流Java IO流是实现输入/输出的基础。Java把不通的输入/输出源(键盘,文件,网络连接等)抽象为&amp;quot;流&amp;quot;,Stream。通过流的方式使用相同的方式来访问不同的输入/输出源。stream是从起源(source)到接收...

2019-02-08 19:40:28 201

原创 Java文件File类

File类是 java.io 包下代表与平台无关的文件和目录。不管是文件,还是目录都可以使用File来操作。可以用来新建,重命名,删除文件和目录。但是不能访问文件内容本身。访问文件本身需要输入/输出流。 - getName(): 返回文件名或路径名 - getPath(): 返回路径 - getAbsoluteFile(): 绝对路径 - getAbsolutePath(): 绝对路径名 - getParent(): 父目录名 - renameTo(): 重命名

2019-02-07 20:58:41 282

原创 Java集合工具类Collections

集合工具类Java提供一个操作Set, List和Map等集合的工具类:Collections。提供大量方法对集合进行排序,查询,修改等操作。实现集合对象的线程安全。Collections提供了多个 synchronizedXxx()方法, 将指定集合包装成线程同步的集合。Collections提供了不可变集合。集合是&quot;只读&quot;, 不能修改。

2019-02-07 11:19:32 290

原创 Java Map集合

Map集合用于保存映射关系的数据,Map集合中保存了两组值,一组是 key, 一组是 value。Map的key不能重复。key和value之间存在单向一对一的关系, 通过key,能找到唯一的,确定的value。HashMap和Hashtable是Map接口的实现类。LinkedHashMap 是 HashMap的子类。LinkedHashMap使用双向链表维护key-value的次序。使迭代顺序和插入顺序一致。

2019-02-07 10:00:39 2912

原创 Java Queue集合

Queue用于模拟队列数据结构。通常指先进先出(FIFO)的容器。新元素插入到队尾, 获取元素会返回队头的元素, 通常,不允许随机访问队列中的元素。Queue 是继承于 Collection接口。LinkedList 是 List接口的实现类,可以根据索引随机访问, LinkedList还是实现类 Deque的接口。可以当做双端队列,即可以当 栈, 也可以当 队列

2019-02-03 21:02:58 695

原创 Java List集合

List集合是有序,可重复的集合。每个元素都有其对应的顺序索引。List 是 Collection 的子接口。ArrayList 和 Vector 是 List的两个实现类, 都是基于数组实现的List。封装了一个动态的,允许再分配的 Object[]数组。使用 initialCapacity 参数设置数组的长度。当添加的元素超过数组长度时,它们的 initialCapacity 会自动增加。当一次添加大量元素时, 可以使用 ensureCapacity() 方法一次性增加initialCapac

2019-02-02 20:59:40 2103

原创 Java Set集合

Set集合Set接口是 Collection 的子接口。Set集合不允许包含相同的元素。如果添加相同的元素, add()返回返回FALSE, 新元素不会加入。HashSet, TreeSet, EnumSet 是 Set 集合的三个实现类。HashSet 的性能好于 TreeSet, 因为 TreeSet使用红黑树维护顺序。LinkedHashSet比 HashSet略慢一点, 因为维护链表带来了额外开销。但是遍历会更快。EnumSet是所有Set实现类中性能最好的。

2019-02-02 14:50:42 3048

原创 Java集合类

Java集合类JAVA集合Collection与Iterator接口使用 Lambda表达式遍历集合Iteratorforeach循环使用 PredicateStream操作集合JAVA集合Java集合分为 Set, List, Queue, Map四种体系。Set : 无序,不可重复的集合;List: 有序,可以重复的集合;Queue: 队列集合;Map: 有映射关系的集合。集合类...

2019-02-01 22:57:41 193

原创 Java枚举类

枚举类枚举类枚举类成员变量,方法,构造器实现接口包含抽象方法的枚举类枚举类枚举类的对象是有限而且固定的。使用enum 关键词定义。枚举类是一种特殊的类枚举类可以实现一个或多个接口,不能显式的继承其他父类。 因为使用 enum 定义的枚举类默认继承了java.lang.Enum 类, java.lang.Enum 实现了 Comparable, Serializable 两个接口pu...

2019-01-31 21:12:15 2030

原创 Java的Lambda表达式

Lambda表达式支持将代码块作为方法参数。使用简洁的代码创建只有一个抽象方法的接口实例。这种接口称为函数式接口。Lambda可用于简化匿名内部类对象的创建。Lambda表达式的代码块将会代替实现抽象方法的方法体。相当于一个匿名内部类。省略了匿名内部类的 `new Xxx(){}` 代码。规则:1. 形参列表: 形参列表允许省略形参类型, 如果只有一个参数,可以省略形参列表的圆括号。2. -&gt; : 3. 代码块: 如果只包含一条语句,允许省略花括号{}。

2019-01-31 17:34:36 178

原创 Java内部类

将一个类放在另一个类内部,这个在其他类内部的类称为内部类, 或嵌套类。包含内部类的类称为外部类,或宿主类。成员内部类分为两种:静态内部类非静态内部类使用 `static` 修饰的内部类为 静态内部类。一个Java源文件中定义多个类,不属于内部类。外部类有默认和 public两种权限:默认为包, public为任何位置内部类由4个访问权限: private : 同一个类 默认: 同一个包 protected : 父子类 public类: 任何位置

2019-01-30 22:55:04 217

原创 Java抽象类和接口

Java抽象类和接口抽象类抽象方法abstract 和 finalabstract 和 staticabstract 和 private接口接口实现抽象类和接口的区别抽象类抽象类是一种模板模式的涉及,抽象类作为多个子类的通用模板。子类在抽象类的基础上进行扩展,改造, 但子类总体上保留了抽象类的行为方式。抽象类只能被继承,不能实例化。抽象方法抽象方法和抽象类由 abstract 修饰符定义...

2019-01-22 19:34:48 325

原创 JAVA的final修饰符

finalfinal可用于修饰类, 变量和方法。用于表示它修饰的类,方法,变量不可改变。final成员变量final修饰的成员变量必须由程序员显式的指定初始值。类变量: 只能在 静态初始化块 或 声明类变量 时指定初始值。实例变量: 只能在 非静态初始化块, 声明该实例变量 或 构造器中 指定。初始化之前不能使用变量。public class FinalVarTest { f...

2019-01-19 20:29:51 316

Java类加载机制与反射-PPT

Java的类加载机制:加载,连接,初始化。JAVA类加载器: Bootstrap ClassLoader : 根类加载器, Extension ClassLoader: 扩展类加载器, System ClassLoader : 系统类加载器, Java反射

2018-12-23

Mongodb使用和部署ppt

什么是Mongodb Mongodb的优势 CRUD 索引 Mongodb管理 安装部署

2014-08-23

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除