- 博客(30)
- 收藏
- 关注
原创 导购场景下的Groovy脚本引擎实战
因为在项目中使用了Groovy对业务能力进行一些扩展,效果比较好,所以记录分享一下,这里你可以了解:为什么使用脚本语言为什么选择Groovy如何在项目中集成GroovyGroovy的原理是什么和性能优化实际使用的一些建议Groovy是构建在JVM上的一个轻量级却强大的动态语言, 它结合了Python、Ruby和Smalltalk的许多强大的特性.
2022-10-09 11:45:30
1656
1
转载 Spring(七):Spring常用注解及SpringBoot相关依赖
Spring常用注解@SpringBootApplication:包含了@ComponentScan、@Configuration和@EnableAutoConfiguration注解。其中@ComponentScan让pringBoot扫描到Configuration类并把它加入到程序上下文。@Configuration:指出该类是 Bean 配置的信息源,相当于XML中的<...
2019-03-04 17:31:37
1111
转载 Spring(六):SpringBoot执行流程及源码解析
SpringBoot启动流程主要分为三个部分,第一部分进行SpringApplication的初始化模块,配置一些基本的环境变量、资源、构造器、监听器,第二部分实现了应用具体的启动方案,包括启动流程的监听模块、加载配置环境模块、及核心的创建上下文环境模块,第三部分是自动化配置模块,该模块作为springboot自动配置核心每个SpringBoot程序都有一个主入口,也就是main方法,ma...
2019-03-04 17:27:50
8042
3
转载 Spring(五):SpringMVC执行流程及源码解析
在SpringMVC中主要是围绕着DispatcherServlet来设计,可以把它当做指挥中心。这里先说明一下SpringMVC文档给出的执行流程,然后是我们稍微具体的执行流程,最后是流程大致的源码跟踪。关于很很很详细的源码解析,这里暂先不做。spring请求移动: 用户发送请求到DispatcherServlet(前端控制器) DispatcherServlet查询一个或多个...
2019-02-26 17:25:28
367
转载 Spring(四):SpringAOP原理和源码解析
AOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。OOP允许你定义从上到下的关系,但并不适合定义从左到右的关系。例如日志功能...
2019-02-26 15:23:47
814
原创 Spring学习(三):Spring源码解读启动过程及IOC原理
在Web容器中启动Spring IOCContextLoaderListener实现ServletContextListener,这个接口里面的函数会结合web容器的生命周期被调用。因为ServletContextListener是ServletContext的监听者,如果ServletContext发生变化,会触发相应的事件,而监听者一直对这些事件进行监听,如果接受到了监听的事件,就会作出预...
2018-11-21 19:16:33
840
转载 Spring学习(二):Spring xml文件格式、加载上下文六种方式及作用域
Bean的XML文件可扩展标记语言(标准通用标记语言的子集)是一种简单的数据存储语言。<?xml version="1.0" encoding="UTF-8"?><beans <!--标准命名空间 --> xmlns="http://www.springframework.org/schema/beans" <!--自定义命名空..
2018-09-29 17:39:46
278
转载 Spring学习(一):Spring的整体架构与容器的核心类
Spring的整体架构Spring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块,如下图所示Core ContainerCore Container(核心容器)包含有Core、Beans、Context和Expression Language模块 Core和Beans模块是框架的基础部分,提供IoC(转控制)和依赖注入特性。这里的基础概念是BeanFacto...
2018-09-29 17:34:16
1200
转载 Java学习(二十):JUC包
java集合包大多是“非线程安全的”,虽然可以通过Collections工具类中的方法获取java集合包对应的同步类,但是这些同步类的并发效率并不是很高。为了更好的支持高并发任务,并发大师Doug Lea在JUC(java.util.concurrent)包中添加了java集合包中单线程类的对应的支持高并发的类。例如,ArrayList对应的高并发类是CopyOnWriteArrayList,Ha...
2018-09-29 17:23:29
2656
转载 Java学习(十九):多线程编程
Java 给多线程编程提供了内置的支持。 一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。多线程是多任务的一种特别的形式,但多线程使用了更小的资源开销。这里定义和线程相关的另一个术语 - 进程:一个进程包括由操作系统分配的内存空间,包含一个或多个线程。一个线程不能独立的存在,它必须是进程的一部分。一个进程一直运行,直到所有的非守护线程都结束...
2018-09-28 16:28:51
196
转载 Java学习(十八):Java Socket通讯
网络编程是指编写运行在多个设备(计算机)的程序,这些设备都通过网络连接起来。java.net 包中 J2SE 的 API 包含有类和接口,它们提供低层次的通信细节。你可以直接使用这些类和接口,来专注于解决问题,而不用关注通信细节。java.net 包中提供了两种常见的网络协议的支持:TCP:TCP 是传输控制协议的缩写,它保障了两个应用程序之间的可靠通信。通常用于互联网协议,被称 TC...
2018-09-28 13:46:45
567
1
转载 Java学习(十七):Java常量池和枚举
常量池Java的常量池通常分为两种:静态常量池和运行时常量池静态常量池:class文件中的常量池,class文件中的常量池包括了字符串(数字)字面值,类和方法的信息,占用了class文件的大部分空间。运行时常量池:JVM在完成加载类之后将class文件中常量池载入到内存中,并保存在方法区中。平时我们所讲的常量池就是指方法区中的运行时常量池。其相对于CLass文件常量池的另外一个重要特征...
2018-09-26 20:22:34
887
转载 Java学习(十六):Java序列化和克隆
Serializable接口序列化:对象的寿命通常随着生成该对象的程序的终止而终止,有时候需要把在内存中的各种对象的状态(也就是实例变量,不是方法)保存下来,并且可以在需要时再将对象恢复。虽然你可以用你自己的各种各样的方法来保存对象的状态。Java 提供了一种对象序列化的机制,该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类...
2018-09-21 11:26:08
350
转载 Java学习(十四):ConcurrentHashMap的原理和特性
Java7 中实现的 ConcurrentHashMap 说实话还是比较复杂的,Java8 对 ConcurrentHashMap 进行了比较大的改动。建议可以参考 Java8 中 HashMap 相对于 Java7 HashMap 的改动,对于 ConcurrentHashMap,Java8 也引入了红黑树。Java8 ConcurrentHashMap 源码不简单,最难的在于扩容,数据...
2018-09-20 21:57:42
845
转载 Java学习(十五):Java泛型
Java 泛型(generics)是 JDK 5 中引入的一个新特性, 泛型提供了编译时类型安全检测机制,该机制允许程序员在编译时检测到非法的类型。泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。假定我们有这样一个需求:写一个排序方法,能够对整型数组、字符串数组甚至其他任何类型的数组进行排序,该如何实现?答案是可以使用 Java 泛型。使用 Java 泛型的概念,...
2018-09-13 22:29:18
213
1
转载 Java学习(十三):LinkedHashMap的原理和特性
前面我们已经分析了HashMap的源码,已经知道了HashMap可以用在哪种场合,如果这样一种情形,我们需要按照元素插入的顺序来访问元素,此时,LinkedHashMap就派上用场了,它保存着元素插入的顺序,并且可以按照我们插入的顺序进行访问。LinkedHashMap用法import java.util.Map;import java.util.LinkedHashMap;...
2018-09-11 22:37:17
352
转载 Java学习(十二):HashMap的原理和特性
在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 数组:采用一段连续的存储单元来存储数据。对于指定下标的查找,时间复杂度为O(1);通过给定值进行查找,需要遍历数组,逐一比对给定关键字和数组元素,时间复杂度为O(n),当然,对于有序数组,则可采用二分查找,插值查找,斐波那契查找等方式,可将查找复杂度提高为O(logn);对于一般的插入删除操作,涉及到数组元素的移动...
2018-09-10 21:59:20
3673
转载 Java学习(十一):LinkedList的原理和特性
在分析了ArrayList了之后,紧接着必须要分析它的同胞兄弟:LinkedList,LinkedList与ArrayList在底层的实现上有所不同,其实,只要我们有数据结构的基础,在分析源码的时候就会很简单,下面进入正题,LinkedList源码分析。LinkedList数据结构LinkedList的核心部分:数据结构,其数据结构如下说明:如上图所示,LinkedList底层...
2018-09-08 22:38:18
633
原创 Java学习(十):常用框架ArrayList的原理和特性
Collection下面几种常见的类,如ArrayList、LinkedList、HashSet、TreeSet等。下面通过JDK源码来一起分析ArrayList底层是如何实现的。ArrayList数据结构 分析一个类的时候,数据结构往往是它的灵魂所在,理解底层的数据结构其实就理解了该类的实现思路,具体的实现细节再具体分析。 ArrayList的数据结构如下: 说明:底...
2018-09-06 22:33:43
140
原创 Java学习(九):集合框架
Java 数据结构Java工具包提供了强大的数据结构。在Java中的数据结构主要包括以下几种接口和类:枚举(Enumeration) 位集合(BitSet) 向量(Vector) 栈(Stack) 字典(Dictionary) 哈希表(Hashtable) 属性(Properties)以上这些类是传统遗留的,在Java2中引入了一种新的框架-集合框架(Collection)...
2018-09-04 22:53:52
148
转载 Java学习(八):面向对象
Java 继承继承的概念继承是java面向对象编程技术的一块基石,因为它允许创建分等级层次的类。继承就是子类继承父类的特征和行为,使得子类对象(实例)具有父类的实例域和方法,或子类从父类继承方法,使得子类具有父类相同的行为。生活中的继承: 兔子和羊属于食草动物类,狮子和豹属于食肉动物类。食草动物和食肉动物又是属于动物类。所以继承需要符合的关系是:is-a,父类更...
2018-09-04 22:40:41
106
转载 Java学习(七):Java流(Stream)、文件(File)、IO、 Scanner类和异常处理
Java 流(Stream)、文件(File)和IOJava.io 包几乎包含了所有操作输入、输出需要的类。所有这些流类代表了输入源和输出目标。Java.io 包中的流支持很多种格式,比如:基本类型、对象、本地化字符集等等。一个流可以理解为一个数据的序列。输入流表示从一个源读取数据,输出流表示向一个目标写数据。Java 为 I/O 提供了强大的而灵活的支持,使其更广泛地应用到文件传...
2018-09-04 22:17:45
336
转载 Java学习(六):Java正则表达式和方法
Java 正则表达式正则表达式定义了字符串的模式。正则表达式可以用来搜索、编辑或处理文本。正则表达式并不仅限于某一种语言,但是在每种语言中有细微的差别。正则表达式实例一个字符串其实就是一个简单的正则表达式,例如 Hello World 正则表达式匹配 "Hello World" 字符串。.(点号)也是一个正则表达式,它匹配任何一个字符如:"a" 或 "1"。下表列出了一...
2018-09-04 21:49:59
207
转载 Java学习(五):Java字符串和日期类
Java String 类字符串广泛应用 在Java 编程中,在 Java 中字符串属于对象,Java 提供了 String 类来创建和操作字符串。创建字符串创建字符串最简单的方式如下:String greeting = "菜鸟教程";在代码中遇到字符串常量时,这里的值是 "菜鸟教程"",编译器会使用该值创建一个 String 对象。和其它对象一样,可以使用关键字和构造方法...
2018-09-03 22:20:22
317
转载 Java学习(四):Java Number & Math 类
Java Number & Math 类一般地,当需要使用数字的时候,我们通常使用内置数据类型,如:byte、int、long、double 等。实例int a = 5000; float b = 13.65f; byte c = 0x4a;然而,在实际开发过程中,我们经常会遇到需要使用对象,而不是内置数据类型的情形。为了解决这个问题,Java 语言为每一个内置数据类型提供...
2018-09-03 21:50:07
126
转载 Java学习(三):Java语句结构
Java 循环结构顺序结构的程序语句只能被执行一次。如果您想要同样的操作执行多次,,就需要使用循环结构。Java中有三种主要的循环结构:while 循环 do…while 循环 for 循环在Java5中引入了一种主要用于数组的增强型for循环。while 循环while是最基本的循环,它的结构为:while( 布尔表达式 ) { //循环内容 }只要布尔表达式为...
2018-09-03 21:39:23
419
原创 Java学习(二):Java类型及运算符
Java 基本数据类型变量就是申请内存来存储值。也就是说,当创建变量的时候,需要在内存中申请空间。内存管理系统根据变量的类型为变量分配存储空间,分配的空间只能用来储存该类型数据。因此,通过定义不同类型的变量,可以在内存中储存整数、小数或者字符。Java 的两大数据类型:内置数据类型 引用数据类型内置数据类型Java语言提供了八种基本类型。六种数字类型(四个整数...
2018-09-02 23:07:48
178
转载 Java学习(一):Java简介总结
Java主要特性 对于语言本身来说Java语言是简单的Java语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,而是引用。并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 Java语言是动态的Java...
2018-09-02 11:14:22
587
转载 Java对象名称解释
一、PO:persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。 二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数
2017-11-29 09:52:14
2041
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人