自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(100)
  • 资源 (1)
  • 论坛 (1)

原创 JQuery操作DOM

一、插入节点1、内部尾部插入,返回父节点对象jQuery append( ):作用:向每个匹配的元素内部追加尾部内容,返回的是一个包装父节点的jQuery 对象($(selector).)语法:$(selector).append(content | fn)content 是一个String, Element, jQuery,表示要追加到目标中的内容,能是现有元素 fnfunction(index, html)返回一个HTML字符串,用于追加到每一个匹配元素的里边。接受两个参数,index参

2020-07-12 23:22:43 23

原创 JQuery标签选择器

一、基本选择器1、id选择器语法:$(" #id值 ")根据给定的ID匹配一个元素2、class选择器语法:$(" .class值 ")根据给定的类匹配元素。3、标签选择器语法:$(" 标签名 ")根据给定的元素名匹配所有元素4、通配符选择器语法:$(" * ")匹配所有元素5、并集选择器语法:$(" selector1,selector2,selectorN ")将每一个选择器匹配到的元素合并后一起返回。6、交集选择器语法:$(" selector1

2020-07-12 23:22:31 19

原创 JQuery函数选择器

一、查找父节点1、parent([expr])取得一个包含着所有匹配元素的唯一父元素的元素集合案例无参<ul> <li id="li1"><p id="p1"></p></li> <li id="li2"></li> <li id="li3"></li> <li id="li4"><p id="p2"></p>&l

2020-07-12 23:22:08 32

原创 Spring事件监听模式

前言在GUI程序设计中,在设计时通常不会知道用户的动作什么时候会发生,如用户可能点击某一个按钮,也可能不点击,而且点击按钮的时机在运行时才可能知道。如果用传统的程序控制方式,则很难做到准确的响应。通常这种情况或者类似的情况下,我们可以使用事件/监听器模式。将一个监听器(listener)与特定的控件(如按钮等)绑定起来,当发生用户点击等事件(Event)时,调用监听器的处理方法,从而响应用户的动作。是为事件/监听器模式。一、案例跟观察者模式类似,事件监听模式包括一个EventLister(看成是观察

2020-06-18 15:13:10 82

原创 观察者模式

观察者模式应用场景实例一个典型的购票网站,以购票为核心业务(此模式不限于该业务),但围绕购票会产生不同的其他逻辑,如:1、购票后记录文本日志2、购票后记录数据库日志3、购票后发送短信4、购票送抵扣卷、兑换卷、积分5、其他各类活动传统的解决方案:在购票逻辑等类内部增加相关代码,完成各种逻辑。存在问题:1、一旦某个业务逻辑发生改变,如购票业务中增加其他业务逻辑,需要修改购票核心文件、甚至购票流程。2、日积月累后,文件冗长,导致后续维护困难。原因主要是程序的”紧密耦合”,使用观察模式将目

2020-06-16 17:00:28 50

原创 springBean注册之@PropertySource和@ImportResource注解解析

原文地址: Spring中@PropertySource和@ImportResource的区别,以及各自的实现原理解析前言@PropertySource和@ImportResource或许很多人都用过,并且都还没有用错。但是若真把他俩拿过来一起的时候,却有点傻傻分不清楚了是的,他俩都是向容器中导入Bean/属性信息,但是使用起来还是有很大的区别的,因此本文主要针对于他俩的区别,顺便从一定的原理的角度做一个解释,希望大家以后能区分开来。在讲解之前,可以记住一个通用的的结论:@PropertySo.

2020-06-14 18:55:57 68

原创 SpringBean注册之@Conditional注解解析

前言@Conditional是Spring4新提供的注解,它的作用是按照一定的条件进行判断,满足条件给容器注册bean。@Conditional的定义://此注解可以标注在类和方法上@Target({ElementType.TYPE, ElementType.METHOD})@Retention(RetentionPolicy.RUNTIME) @Documentedpublic @interface Conditional { Class<? extends Condition

2020-06-14 17:25:16 32

原创 static关键字解除Bean对象间的依赖

前言本文基本上是借鉴于YourBatman的这篇文章 static关键字真能提高Bean的优先级吗?答:真能,只是在原理分析部分加入了自己的理解我认为static关键字是解除Bean对象间的依赖,而不是提高Bean的优先级警告一:来自BeanPostProcessorChecker这是最为常见的一种警告,特别当你的工程使用了shiro做鉴权框架的时候。在我记忆中这一年来有N多位小伙伴问过我此问题,可见一斑。@Configurationclass RootConfig { RootC

2020-06-14 16:48:58 102

原创 SpringMVC参数解析器HandlerMethodArgumentResolver

前言在享受Spring MVC带给你便捷的时候,你是否曾经这样疑问过:Controller的handler方法参数能够自动完成参数封装(有时即使没有@PathVariable、@RequestParam、@RequestBody等注解都可),甚至在方法参数任意位置写HttpServletRequest、HttpSession、Writer…等类型的参数,它自动就有值了便可直接使用。对此你是否想问一句:Spring MVC它是怎么办到的?那么本文就揭开它的神秘面纱,还你一片"清白"。一、HandlerMe

2020-06-08 16:12:13 24

原创 Spring基础

SpringBean注册之BeanFactory的介绍SpringBean注册之容器环境的初始化Spring IOC容器启动流程refresh()方法源码分析SpringBean注册之@Configuration配置类解析过程SpringBean注册之@Import注解解析SpringBean注册之@Bean注解解析SpringBean注册之@ComponentScan注解解析SpringBean注册之后置处理器BeanFactoryPostProcessor和BeanDefinitionRe

2020-06-03 21:51:28 70

原创 java字符流

前言输入流:把数据(键盘输入、鼠标、扫描仪等等外设设备)读入到内存(程序)中输出流:把内存(程序)中的数据输出到外设或其他地方,从文件角度简单总结就是,输入流就是读数据,输出流就是写数据。在这个过程中,始终把内存作为参考点。在JAVA语言中,定义了专门的类用来表示输入和输出,这些类放在java.io包中。按数据传输单位划分,可以分为字节流和字符流。本文重点介绍字符流Reader:输入流、继承自Reader的流都是用于向程序中输入数据的,且数据单位都是字符16位Writer:输出流、继承自Wr

2020-05-31 21:36:53 137

原创 JavaIO文件File

前言File 类的实例是不可变的;也就是说,一旦创建,File 对象表示的抽象路径名将永不改变。1、构造器File(File parent, String child) 根据 parent 抽象路径名和 child 路径名字符串创建一个新 File 实例。File(String pathname) 通过将给定路径名字符串转换为抽象路径名来创建一个新 File 实例。File(String parent, String child) 根据 parent 路径名字符串和 child 路径名字符串创建一

2020-05-31 21:36:20 66

原创 java字节流

前言输入流:把数据(键盘输入、鼠标、扫描仪等等外设设备)读入到内存(程序)中输出流:把内存(程序)中的数据输出到外设或其他地方,从文件角度简单总结就是,输入流就是读数据,输出流就是写数据。在这个过程中,始终把内存作为参考点。在JAVA语言中,定义了专门的类用来表示输入和输出,这些类放在java.io包中。按数据传输单位划分,可以分为字节流和字符流。本文重点介绍字节流InputStream:继承自InputStream的流都是用于向程序中输入数据的,且数据单位都是字节8位,类图如下Output

2020-05-31 21:35:45 110

原创 java序列化

1.为什么需要序列化?第一种情况是:一般情况下Java对象的声明周期都比Java虚拟机的要短,实际应用中我们希望在JVM停止运行之后能够持久化指定的对象,这时候就需要把对象进行序列化之后保存。第二种情况是:需要把Java对象通过网络进行传输的时候。因为数据只能够以二进制的形式在网络中进行传输,因此当把对象通过网络发送出去之前需要先序列化成二进制数据,在接收端读到二进制数据之后反序列化成Java对象。2.什么是序列化序列化(serialization)是把一个对象的状态写入 一个字节流的过

2020-05-31 21:34:58 64

原创 java迭代器

前言迭代器是一种模式、详细可见其设计模式,可以使得序列类型的数据结构的遍历行为与被遍历的对象分离,即我们无需关心该序列的底层结构是什么样子的。只要拿到这个对象,使用迭代器就可以遍历这个对象的内部一、Iterablepublic interface Iterable实现这个接口允许一个对象成为“For-each”语句的目标。//执行特定动作的每一个元素的 Iterable直到所有元素都被处理或操作抛出异常。default void forEach(Consumer<? super T&g

2020-05-31 18:03:29 74

原创 java集合工具类Collections

前言java.util.Collections 是一个包装类。它包含有各种有关集合操作的静态多态方法。此类不能实例化,就像一个工具类,服务于Java的Collection框架。他提供一系列静态方法实现对各种集合的搜索、排序、线程安全化等操作一、元素操作1、增加值static <T> boolean addAll(Collection<? super T> c, T... elements) 将所有指定的元素添加到指定的集合中。 案例ArrayList<Number

2020-05-31 17:48:05 67

原创 java集合Collection及其子接口简述

前言Java 的集合主要按两种接口分类:Collection, Map。本文重点介绍:Collection,下图是其常用子接口一、Collectionpublic interface Collection<E> extends Iterable<E>集合的特点:1、集合中存储的元素是对象。2、集合的长度是可变的;3、集合是不可以存储基本数据类型的1、添加boolean add(E e)//确保此集合包含指定的元素(可选操作)。 boolean addAll(C

2020-05-31 16:49:46 99

原创 java集合LinkedList

LinkedList概述public class LinkedList<E> extends AbstractSequentialList<E> implements List<E>, Deque<E>, Cloneable, java.io.SerializableList 接口的链接列表实现。实现所有可选的列表操作,并且允许所有元素(包括 null)。除了实现 List 接口外,LinkedList 类还为在列表的开头及结尾 get、remove

2020-05-31 16:43:20 59

原创 java集合ArrayList

ArrayList概述ArrayList是集合的一种实现,实现了接口List,List接口继承了Collection接口。Collection是所有集合类的父类。ArrayList使用非常广泛,不论是数据库表查询,excel导入解析,还是网站数据爬取都需要使用到,了解ArrayList原理及使用方法显得非常重要。每个 ArrayList 实例都有一个容量。该容量是指用来存储列表元素的数组的大小。它总是至少等于列表的大小。随着向 ArrayList 中不断添加元素,其容量也自动增长。并未指定增长策略的细

2020-05-31 16:16:06 45

原创 java集合Map及其子接口简述

一、Mappublic interface Map<K,V>1、增加V put(K key, V value)void putAll(Map<? extends K,? extends V> m)2、删除void clear()V remove(Object key)default boolean remove(Object key, Object value)3、替换default V replace(K key, VnewValue)default.

2020-05-31 01:55:38 88

原创 java并发集合ConcurrentHashMap

前言HashMap是我们最常用的数据结构之一,它方便高效,但遗憾的是,HashMap是线程不安全的,在并发环境下,在HashMap的扩容过程中,可能造成散列表的循环锁死。而线程安全的HashTable使用了大量Synchronized锁,导致了效率非常低下。幸运的是,并发编程大师Doug Lea为我们提供了ConcurrentHashMap,它是线程安全版的HashMap。一、源码分析基础知识//Node数组的最多长度private static final int MAXIMUM_CAPACIT

2020-05-31 01:54:25 80

原创 java集合TreeMap

TreeMap概述public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable一个红黑树基于NavigableMap实现。 该地图是根据排序natural ordering其密钥,或通过Comparator在地图创建时提供,这取决于所使用的构造方法。请注意,如果这个排序的映射要正确地实现Map接口,那

2020-05-31 01:34:41 61

原创 java集合LinkedHashMap

1111

2020-05-30 23:06:38 65 2

原创 java集合HashMap

HashMap概述哈希表(hash table)也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中HashMap的实现原理进行讲解,并对JDK7的HashMap源码进行分析。什么是哈希表在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对

2020-05-30 23:03:47 35

原创 java格式化字符串Formatter

前言在java中我们格式化一个字符串的方法有很多,最基本的就是不断地用+号来加出一个String但是这样的操作有很多的问题,而且有的时候也非常的不方便,这个时候我们就要用到其他的工具。类似C的printf的格式方法,在java中也是有的,写成System.out.printf();还有另外一种方法就是使用Formatter类,这个类可以说是功能强大,能格式化任何信息。在学习Formatter之前,我们先学习下格式化符号一、格式化符号1、标识1、-将是左对齐的。(默认是右对齐),不可以与“用0

2020-05-22 01:11:39 146

原创 java工具类UUID、Math、Random、StringJoiner

一、UUIDUID全局唯一标识符,是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址、纳秒级时间、芯片ID码和许多可能的数字。由以下几部分的组合:当前日期和时间(UUID的第一个部分与时间有关,如果你在生成一个UUID之后,过几秒又生成一个UUID,则第一个部分不同,其余相同),时钟序列,全局唯一的IEEE机器识别号(如果有网卡,从网卡获得,没有网卡以其他方式获得),UUID的唯一缺陷在于生成的结果串会比较长。UUID的应

2020-05-22 01:09:40 34

原创 java非空检查工具类Objects,Optional

一、ObjectsJDK7里面新增的Objects类,本类由一些操作对象的静态工具方法构成,这些工具方法包括了非空检查、方法的非空参数检查、 比较对象的hashCode、为对象返回一个字符串表示、比较两个对象等。 本文是以java8版本介绍Objects类1、判断对象是否为null//判断一个对象是否为空,如果为空返回truestatic boolean isNull(Object obj); //判断一个对象是否为空,如果不为空返回truestatic boolean

2020-05-22 01:06:17 82

原创 java-Base64编码工具类

一、什么是Base64?百度百科中对Base64有一个很好的解释:“Base64是网络上最常见的用于传输8Bit字节码的编码方式之一,Base64就是一种基于64个可打印字符来表示二进制数据的方法”。什么是“可打印字符”呢?为什么要用它来传输8Bit字节码呢?在回答这两个问题之前我们有必要来思考一下什么情况下需要使用Base64?Base64一般用于在HTTP协议下传输二进制数据,由于HTTP协议是文本协议,所以在HTTP协议下传输二进制数据需要将二进制数据转换为字符数据。然而直接转换是不行的。因

2020-05-21 21:34:30 96

原创 java字符串String

前言String类代表字符串。 Java程序中的所有字符串文字(例如"abc" )都被实现为此类的实例。字符串不变; 它们的值在创建后不能被更改。 字符串缓冲区支持可变字符串。 因为String对象是不可变的,它们可以被共享1、构造器参数是字节数组bytes - 要解码为字符的 byteoffset - 要解码的第一个 byte 的索引(包括)length - 要解码的 byte 数String(byte[] bytes)String(byte[] bytes, Charset cha

2020-05-21 21:32:45 104

原创 java正则表达式

一、PatternPattern是正则表达式的编译表示形式。指定为字符串的正则表达式必须首先被编译为此类的实例。然后,可将得到的模式用于创建 Matcher 对象1、字段摘要1、获取Pattern对象static Pattern compile(String regex)//将给定的正则表达式编译到模式中。 static Pattern compile(String regex, int flags)//将给定的正则表达式编译到具有给定标志的模式中。2、创建匹配器Matcher match

2020-05-21 16:34:53 37

原创 Java异常

一、异常机制概述异常机制是指当程序出现错误后,程序如何处理。具体来说,异常机制提供了程序退出的安全通道。当出现错误后,程序执行的流程发生改变,程序的控制权转移到异常处理器。异常处理的流程当程序中抛出一个异常后,程序从程序中导致异常的代码处跳出,java虚拟机检测寻找和try关键字匹配的处理该异常的catch块,如果找到,将控制权交到catch块中的代码,然后继续往下执行程序,try块中发生异常的代码不会被重新执行。如果没有找到处理该异常的catch块,在所有的finally块代码被执行和当前线程的所属

2020-05-21 15:19:19 65

原创 java反射框架总结

概述JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。下图是java反射框架简述1、接口 AnnotatedElement表示目前正在此 VM 中运行的程序的一个已注释元素。该接口允许反射性地读取注释。由此接口中的方法返回的所有注释都是不可变并且可序列化的。调用者可以修改已赋值数组枚举成员的访问器返回的数组;这不会对其他调用者返回的数组产生任何影响。

2020-05-19 16:14:54 71

原创 Java时间戳Instant和时钟Clock

一、Instant我们已经知道,计算机存储的当前时间,本质上只是一个不断递增的整数。Java提供的System.currentTimeMillis()返回的就是以毫秒表示的当前时间戳。这个当前时间戳在java.time中以Instant类型表示,我们用Instant.now()获取当前时间戳,效果和System.currentTimeMillis()1、静态方法,获取对象其实我们还可以通过Date的Instant toInstant()方法获取Instant对象static Instant o

2020-05-19 15:20:09 187

原创 java时间区间类

Period一、字段static Period ZERO二、获取对象static Period between(LocalDate startDateInclusive, LocalDate endDateExclusive)static Period from(TemporalAmount amount)static Period of(int years, int months, int days)static Period ofDays(int days)stati

2020-05-19 15:01:08 86

原创 java时区时间ZoneOffset, ZoneId,OffsetTime,OffsetDateTime,ZonedDateTime

ZoneOffsetpublic final class ZoneOffsetextends ZoneIdimplements TemporalAccessor, TemporalAdjuster, Comparable, Serializable时区偏移量1、获取static ZoneOffset of(String offsetId)使用ID获取 ZoneOffset的实例。static ZoneOffset ofHours(int hours)获得 ZoneOffset的实例

2020-05-19 14:52:53 343

原创 java日期类LocalDate,LocalDateTime,LocalTime, YearMonth, Year, MonthDay

前言LocalDate,LocalDateTime,LocalTime, YearMonth, Year, MonthDay,它们代表与上下文相结合的本地日期/时间。这些类主要用于不需要在上下文中明确指定时区的情况,他们是线程安全的类 格式LocalDate yyyy-MM-DDLocalDateTimeLocalTimeYearMonthYearMonthDay一、LocalDate1、静态方法,获取对象static Loc

2020-05-19 14:20:38 225

原创 JAVA基础

Java内置函数式接口和Lambda表达式java接口比较器Comparator与Comparable.java流Streamjava泛型的使用java内部类Java注解.java枚举java数组.java二进制运算符java基本数据类型java数值包装类

2020-05-19 00:34:32 58

原创 java日期格式化DateTimeFormatter

前言使用旧的Date对象时,我们用SimpleDateFormat进行格式化显示。使用新的LocalDateTime或ZonedLocalDateTime时,我们要进行格式化显示,就要使用DateTimeFormatter。和SimpleDateFormat不同的是,DateTimeFormatter不但是不变对象,它还是线程安全的。线程的概念我们会在后面涉及到。现在我们只需要记住:因为SimpleDateFormat不是线程安全的,使用的时候,只能在方法内部创建新的局部变量。而DateTimeForm

2020-05-18 00:02:59 55

原创 java大数据类型BigDecimal和BigInteger

一、BigDecimal在实际应用中,需要对更大或者更小的数进行运算和处理。float和double只能用来做科学计算或者是工程计算,在商业计算中要用java.math.BigDecimal。BigDecimal所创建的是对象,我们不能使用传统的+、-、*、/等算术运算符直接对其对象进行数学运算,而必须调用其相对应的方法1.构造函数BigDecimal(BigInteger val)BigDecimal(BigInteger unscaledVal, int scale)BigDecimal(

2020-05-17 17:04:58 80

原创 java数值包装类

一、Numberjava中的数值类都继承了java.lang.Numberbyte byteValue() //返回指定号码作为值 byte ,这可能涉及舍入或截断。abstract double doubleValue()//返回指定数字的值为 double ,可能涉及四舍五入。abstract float floatValue()//返回指定数字的值为 float ,可能涉及四舍五入。abstract int intValue()//返回指定号码作为值 int ,这可能涉及舍入或截断。a

2020-05-17 15:59:29 35

java System源码

java System源码 system类代表系统,系统级的很多属性和控制方法都放置在该类的内部。该类位于java.lang包。 由于该类的构造方法是private的,所以无法创建该类的对象,也就是无法实例化该类。其内部的成员变量和成员方法都是static的,所以也可以很方便的进行调用

2018-03-21

Git密钥

发表于 2019-03-12 最后回复 2020-03-26

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