摘要: 一 写在前面 这是自己实现一个简单的具有SpringMVC功能的小Demo,主要实现效果是; 自己定义的实现效果是通过浏览器地址传一个name参数,打印“my name is”+name参数。不使用SpringMVC,自己定义部分注解,实现DispatcherServlet核心功能,通过这个demo 阅读全文
posted @ 2020-08-24 14:31 橘子洲头。 阅读(310) 评论(0) 推荐(0) 编辑
摘要: 一、什么是事务传播机制 事务传播机制是当一个事务方法被另一个事务方法调用时,这个事务方法应该如何去执行,例如method1方法添加了事务,去调用了method2事务方法,那么method2是继续在method1的事务中执行,还是新开一个事务时执行,这就需要method2的事务传播机制来决定。 在Sp 阅读全文
posted @ 2020-08-17 14:52 橘子洲头。 阅读(542) 评论(0) 推荐(0) 编辑
摘要: 1. 为什么要使用线程池 线程是很占用系统资源的,对线程管理不善很容易导致系统问题。因此,我们最好使用线程池来管理线程,使用线程池主要有如下好处: 降低资源消耗。通过复用线程可以降低线程关闭的次数,从而尽可能降低系统性能损耗; 提升系统响应速度。通过复用线程,省去创建线程的过程,从而提升系统的响应速 阅读全文
posted @ 2020-08-06 21:19 橘子洲头。 阅读(211) 评论(0) 推荐(0) 编辑
摘要: 锁的状态 锁一共有四种状态(由低到高的次序):无锁状态,偏向锁状态,轻量级锁状态,重量级锁状态锁的等级只可以升级,不可以降级。这种锁升级却不能降级的策略,目的是为了提高获得锁和释放锁的效率。 偏向锁 大多数情况下,锁不仅不存在多线程竞争,而且总是由同一个线程多次获得,为了让线程获得所得代价更低,引入 阅读全文
posted @ 2020-08-06 16:22 橘子洲头。 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 锁削除 锁削除是指虚拟机即时编译器在运行时,对一些代码上要求同步,但是被检测到不可能存在共享数据竞争的锁进行削除。锁削除的主要判定依据来源于逃逸分析的数据支持,如果判断到一段代码中,在堆上的所有数据都不会逃逸出去被其他线程访问到,那就可以把它们当作栈上数据对待, 认为它们是线程私有的,同步加锁自然就 阅读全文
posted @ 2020-08-06 16:15 橘子洲头。 阅读(264) 评论(0) 推荐(0) 编辑
摘要: 多线程对性能最大的影响是阻塞,挂起线程和恢复线程的操作都需要转入内核态中完成,这个过程时需要消耗系统资源的。实际上,许多应用的共享数据的锁定状态只会持续很短的时间,为了这段时间去挂起和恢复线程并不值得。于是,我们可以让后面请求锁的线程“稍等一会”,等待持有锁的线程会不会很快就释放了锁。为了让线程在原 阅读全文
posted @ 2020-08-06 15:34 橘子洲头。 阅读(195) 评论(0) 推荐(0) 编辑
摘要: synchronized是一种独占式的重量级锁,在运行到同步方法或者同步代码块的时候,让程序的运行级别由用户态切换到内核态,把所有线程挂起,通过操作系统的指令,去调度线程。这样会频繁出现程序运行状态的切换,会消耗系统资源。 synchronized实现原理 synchronized是在jvm中实现的 阅读全文
posted @ 2020-08-06 15:08 橘子洲头。 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 一、AQS介绍 AQS,即AbstractQueuedSynchronizer, 抽象队列同步器,它是Java多线程模块用来构建锁和其他同步组件的基础框架。来看下同步组件对AQS的使用: AQS是一个抽象类,主是是以继承的方式使用。AQS本身是没有实现任何同步接口的,它仅仅只是定义了同步状态的获取和 阅读全文
posted @ 2020-08-06 13:48 橘子洲头。 阅读(1972) 评论(0) 推荐(0) 编辑
摘要: 把 JSON 文本转换为 JavaScript 对象JSON 最常见的用法之一,是从 web 服务器上读取 JSON 数据(作为文件或作为 HttpRequest),将 JSON 数据转换为 JavaScript 对象,然后在网页中使用该数据。为了更简单地为您讲解,我们使用字符串作为输入进行演示(而 阅读全文
posted @ 2020-04-14 14:43 橘子洲头。 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 首先说明,Json语法是JavaScript语法的子集 JSON语法规则 数据在名称/值对中 数据由逗号分隔 花括号保存对象 方括号保存数组 JSON 名称/值对JSON 数据的书写格式是:名称/值对。名称/值对包括字段名称(在双引号中),后面写一个冒号,然后是值: "firstName" : "J 阅读全文
posted @ 2020-04-14 14:39 橘子洲头。 阅读(147) 评论(0) 推荐(0) 编辑