![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 83
jeanheo
这个作者很懒,什么都没留下…
展开
-
groovy/java自实现json解析器(2)JsonObject
底层数据结构实现本对象的底层数据结构是一个Map(映射),我们用def private jsonMap将其定义为对象变量。我们在构造函数中对其进行初始化,它以键值对的形式存储数据,其中键必须为字符串,值可以为字符串、Boolean、Integer、JsonArray、JsonObject,从最后两个可存储对象,我们或多或少地已能看出JsonObject是如何达成普通json对象里的无限嵌套了。 下原创 2016-03-13 02:03:43 · 3381 阅读 · 0 评论 -
Quartz任务调度(6)schedulerListener分版本超详细解析
schedulerListener在我们的监听器实现类中,这个类中需实现的方法很多,不需要的可以给出空实现,下面是一些常用的用法: 方法 说明 jobScheduled() Scheduler 在有新的 JobDetail 部署时调用此方法。 jobUnscheduled() Scheduler 在有新的 JobDetail卸载时调用此方法 t原创 2016-03-27 14:11:47 · 4934 阅读 · 1 评论 -
Quartz任务调度(1)概念例析快速入门
Quartz框架需求引入在现实开发中,我们常常会遇到需要系统在特定时刻完成特定任务的需求,在《spring学习笔记(14)引介增强详解:定时器实例:无侵入式动态增强类功能》,我们通过引介增强来简单地模拟实现了一个定时器。它可能只需要我们自己维护一条线程就足以实现定时监控。但在实际开发中,我们遇到的需求会复杂很多,可能涉及多点任务调度,需要我们多线程并发协作、线程池的维护、对运行时间规则进行更细原创 2016-03-27 14:14:15 · 7052 阅读 · 9 评论 -
Quartz任务调度(2)CronTrigger定制个性化调度方案
Cron表达式1. 时间字段与基本格式Cron表达式有6或7个空格分割的时间字段组成: 位置 时间域名 允许值 允许的特殊字符 1 秒 0-59 ,-*/ 2 分支 0-59 ,-*?/ 3 小时 0-23 ,-*/ 4 日期 1-31 ,-*/LWC 5 月份 1原创 2016-03-26 22:51:04 · 2890 阅读 · 2 评论 -
设计模式全面摘录笔记
本篇文章参考自http://www.runoob.com/design-pattern/design-pattern-intro.html,主要是对里面提到的各种设计模式介绍的提取设计模式的类型创建型模式这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用新的运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Patter原创 2017-04-28 12:02:11 · 558 阅读 · 0 评论 -
JVM类加载机制学习记录
加载机制描述虚拟机把描述类的数据从CLass文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型。类加载的时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括: 1. 加载(loading) 2. 验证(Verification) 3. 准备(Preparation) 4. 解析(Resolution) 5. 初始化(Initi原创 2017-04-27 16:57:35 · 428 阅读 · 0 评论 -
Volatile关键字深入解析
Volatile关键字volatile 是轻量级的synchronized,在多处理器开发中保证了共享变量的“可见性”,即当一个线程修改共享变量时,另外一个线程能读到这个修改的值,和Synchronized区别在于,它的使用的执行成本更低,它不会引起线程上下文的切换和调度。如果一个字段被声明为bolatile,Java线程内存模型确保所有线程看到这个变量的值是一致的原创 2017-04-21 14:38:51 · 439 阅读 · 0 评论 -
JVM相关类文件结构
平台无关性“与平台无关”实现在操作系统的应用层上,通过实现可以运行在各种不同平台上的虚拟机,而这些虚拟机都可以载入和执行同一种平台无关的字节码,从而实现程序的“一次编写,到处运行”。 各种不同平台的虚拟机与所有平台都统一是使用的程序存储格式:字节码(ByteCode)是构成平台无关性的基石语言无关性现在有很多语言都可以运行在Java虚拟机之上,比如Clojure、Groovy、JRuby、Jyth原创 2017-04-27 13:59:03 · 349 阅读 · 0 评论 -
Spring研磨分析、Quartz任务调度、Hibernate深入浅出系列文章笔记汇总
这系列文章主要是对Spring、Quartz、Hibernate等JavaWeb相关框架学习、并用于实践开发相当一段时间后,进行回顾总结的一系列笔记记录,对其中重点难点如IOC、AOP、数据库连接等进行了分析。主要是基于一些经典书籍文档讲解的基础上,融入自己实践的感悟,,基本文章中提到的实例都是经过实际代码测试的,也力求讲得通俗易懂。Spring基础部分下面是Spring基础部分的访问链接,供大家方原创 2017-04-27 10:46:45 · 1969 阅读 · 0 评论 -
Tomcat和SpringMVC结果梳理和请求处理流程小结
顶层结构最顶层是Server,由Catalina管理,包含load,start,stop用来管理整个服务器的生命周期一个Server包含多个ServiceService主要包含两部分:Connector和Container,一个Service只有一个Container,但可以又多个Connector,用于提供不同的连接请求(如http和https) Connector处理连接相关,提供Soc原创 2017-08-24 15:57:10 · 1519 阅读 · 0 评论 -
Quartz任务调度(5)TriggerListener分版本超详细解析
TriggerListener在我们的触发器监听器中,也包含了一系列监听方法 方法 说明 getName() 定义并返回监听器的名字 triggerFired() 当与监听器相关联的 Trigger 被触发,Job 上的 execute() 方法将要被执行时,Scheduler 就调用这个方法。在全局 TriggerListener 情况下,这个方法为原创 2016-03-27 14:11:10 · 6545 阅读 · 4 评论 -
Quartz任务调度(4)JobListener分版本超详细解析
在《spring学习笔记(15)趣谈spring 事件:实现业务逻辑解耦,异步调用提升用户体验》我们通过实例分析讲解了spring的事件机制,或许你会觉得其中的配置略显繁琐,而在Quartz框架中,它为我们集成了强大的事件机制,轻松地帮助我们在任务调度中完成各类辅佐操作,高内聚而耦合。 相对spring的事件实现,quartz这边简化了许多,我们只需: 1. 自定义监听器接口实现类 2. 向原创 2016-03-27 14:09:41 · 11587 阅读 · 6 评论 -
Java基本注解分析,为什么要使用@Override
@Override标注在子类方法中,表示此方法是覆盖父类的重载方法,具有强制性,即如果父类没有此方法,则会编译出错。那它到底有什么用呢?让我们来看这一需求场景:假如我们利用面向对象的多态特性特性编程,有子类Sa,Sb继承自父类S.我们需要在子类Sa,Sb各自拓展父类S的speak方法,然后根据业务逻辑,通过A的引用来调用Sa,Sb的重载方法speak。示例代码如下所示:/*-----------原创 2016-03-21 19:04:35 · 3295 阅读 · 1 评论 -
Java自定义注解和元注解
自定义annotation先看一个注解实例:import java.lang.annotation.Documented;import java.lang.annotation.ElementType;import java.lang.annotation.Retention;import java.lang.annotation.RetentionPolicy;import java.la原创 2016-03-21 19:52:48 · 3647 阅读 · 0 评论 -
groovy/java自实现json解析器(1)绪论
groovy是一门以java为基础的动态语言,它强大地动态特性为我们的敏捷开发带来了极大的便利,下面是一个由grovvy(完美兼容嵌套java实现的json)解析器的部分代码展示,我们都知道,json字符串只要满足格式要求,那么它是可以无限循环嵌套的,而本解析器的核心实现就是大量的递归函数运用,将json字符串一层层地解析开,并拼装成我们相应的数组或对象。它主要由以下五个类组成: ——JsonO原创 2016-03-13 00:48:56 · 827 阅读 · 0 评论 -
groovy/java自实现json解析器(3)JsonArray
底层数据结构实现jsonArray的底层数据结构有列表(list)来维护。它的定义和构造函数初始化工作如下图所示。一般创建对象时默认不传参来构造一个空的列表。 “`groovy def jsonList //底层数据存储结构 /** * 构造函数,若不传参数,默认初始一个 */ def JsonArray( jsonList =原创 2016-03-13 19:27:50 · 2192 阅读 · 0 评论 -
spring学习笔记(6)AOP前夕[1]jdk动态代理实例解析
JDK动态代理技术动态代理最常见应用是AOP(面向切面编程)。通过AOP,我们能够地拿到我们的程序运行到某个节点时的方法、对象、入参、返回参数,并动态地在方法调用前后新添一些新的方法逻辑,来满足我们的新需求,比如日志记录等。 动态代理常见有两种方式:基于JDK的反射技术的动态代理和基于CGLib的动态代理。使用反射技术创建动态代理JDK创建动态代理的核心是java.lang.reflect.Inv原创 2016-03-24 16:40:54 · 1455 阅读 · 0 评论 -
spring学习笔记(7)AOP前夕[2]CGLib动态代理实例解析
CGLib动态代理基本原理CGLib——Code Generation Library,它是一个动态字节代码生成库,基于asm。使用CGLib时需要导入asm相关的jar包。而asm又是何方神圣? asm是一个java字节码操纵框架,它能被用来动态生成类或者增强既有类的功能。ASM 可以直接产生二进制 class 文件,也可以在类被加载入 Java 虚拟机之前动态改变类行为。Java class原创 2016-03-24 18:51:39 · 2218 阅读 · 2 评论 -
Quartz任务调度(3)存储与持久化操作配置详细解析
内存存储RAMJobStoreQuartz默认使用RAMJobStore,它的优点是速度。因为所有的 Scheduler 信息都保存在计算机内存中,访问这些数据随着电脑而变快。而无须访问数据库或IO等操作,但它的缺点是将 Job 和 Trigger 信息存储在内存中的。因而我们每次重启程序,Scheduler 的状态,包括 Job 和 Trigger 信息都丢失了。 Quartz 的内存 J原创 2016-03-26 22:06:00 · 13985 阅读 · 1 评论 -
JVM杂记
文章目录内存模型引用类型安全点安全区域垃圾回收垃圾回收器serialParNew收集器Parallel Scavenge(吞吐量优先)Serial Old 单线程收集,使用标记整理算法,可以与Parallel Scavenge搭配,或作为CMS收集器的后备预案Parallel Oldcmscms和full gcg1内存分配和回收策略永久代垃圾回收类加载机制加载验证文件格式验证元数据验证字节码验证符...原创 2019-01-28 19:00:47 · 348 阅读 · 0 评论