- 博客(24)
- 资源 (11)
- 收藏
- 关注
原创 JUC-007-同步锁Lock
解决多线程安全问题的方法同步代码块同步方法同步锁显示锁 Lock在 Java 5.0 之前,协调共享对象的访问时可以使用的机制只有 synchronized 和 volatile 。Java 5.0 后增加了一些新的机制,但并不是一种替代内置锁的方法,而是当内置锁不适用时,作为一种可选择的高级功能。ReentrantLock 实现了 Lock 接口,并提供了与synch
2018-01-30 12:09:27 2357
原创 JVM-004-Java发展史
1991年4月:Java语言前身Oak语言出现。1995年5与23日:Oak语言改名为Java语言。并在Sun World大会上发布了Java 1.0版本。第一次提出了“Write Once,Run Anywhere”。1996年1月23日:JDK 1.0发布,提供了一个纯解释执行的java虚拟机-Sun Classic VM。JDK 1.0的代表技术有-Java虚拟机、Applet、AWT等
2018-01-30 12:08:29 204
原创 Java8新特性-020-重复注解与类型注解
Java 8对注解处理提供了两点改进:可重复的注解及可用于类型的注解。 测试代码-重复注解MyAnnotation.javapackage java8.annotation.repeat;import static java.lang.annotation.ElementType.CONSTRUCTOR;import static java.lang.annotation.ElementType
2018-01-30 12:08:04 353
原创 Java8新特性-019-与传统日期处理的转换
类 To遗留类 From遗留类 java.time.Instant java.util.Date Date.from(instant) date.toInstant() java.time.Instant java.sql.Timestamp Timestamp.from(instant) timestamp.toInstant() java.time.ZonedD
2018-01-30 12:07:37 238
原创 Java8新特性-018-时区处理
时区的处理Java8 中加入了对时区的支持,带时区的时间为分别为:ZonedDate、ZonedTime、ZonedDateTime。其中每个时区都对应着 ID,地区ID都为 “{区域}/{城市}”的格式。例如 :Asia/Shanghai 等ZoneId:该类中包含了所有的时区信息getAvailableZoneIds() : 可以获取所有时区时区信息of(id) : 用指定的时区信息获
2018-01-30 12:07:05 813
原创 Java8新特性-017-时间格式化
解析与格式化java.time.format.DateTimeFormatter 类:该类提供了三种格式化方法: 1.预定义的标准格式 2.语言环境相关的格式 3.自定义的格式测试代码TimeFormatTest.javapackage java8.format;import java.time.LocalDateTime;import java.time.format.DateTimeFo
2018-01-30 12:06:30 174
原创 Java8新特性-016-时间矫正器
日期的操纵TemporalAdjuster : 时间校正器。有时我们可能需要获取例如:将日期调整到“下个周日”等操作。TemporalAdjusters : 该类通过静态方法提供了大量的常用TemporalAdjuster 的实现。 测试代码TestTimeAdjuster.javapackage java8.adjuster;import java.time.DayOfWeek;import
2018-01-30 12:05:52 406 1
原创 Java8新特性-015-本地时间与时间戳
概述LocalDate、LocalTime、LocalDateTime 类的实例是不可变的对象,分别表示使用ISO-8601日历系统的日期、时间、日期和时间。它们提供了简单的日期或时间,并不包含当前的时间信息。也不包含与时区相关的信息。注:ISO-8601日历系统是国际标准化组织制定的现代公民的日期和时间的表示法。 方法 描述 示例 now() 静态方
2018-01-24 13:04:27 452
原创 Java8新特性-014-传统时间API的线程安全问题
测试代码package java8.time;import java.text.SimpleDateFormat;import java.util.ArrayList;import java.util.Date;import java.util.List;import java.util.concurrent.Callable;import java.util.concurr
2018-01-24 13:03:11 566
原创 JVM-003-Java技术体系
Sun定义的Java技术体系的组成: - Java程序设计语言 - 各种硬件平台上的Java虚拟机 - Class文件格式 - Java API类库 - 第三方Java类库按功能划分 - 其中,Java程序设计语言、Java虚拟机、Java API类库三者组成了JDK(Java Development Kit)。JDK是用于支持Java程序开发的最小运行环境。Java AP
2018-01-24 13:02:24 184
原创 JVM-002-JVM监控工具
在我们安装的jdk的bin目录下有一个jconsole.exe程序,这就是一个JVM监控工具。我们可以直接在这里打开它,如果配置了环境变量也可以直接在控制台中输入jconsole命令来打开它。 这个jconsole.exe只有17k,它只是一个包装。真正的代码在lib目录下tools.jar包里,大小在17M左右。 在控制台输入jconsole,当我们打开jconsole之后,界面如下:
2018-01-24 13:01:46 149
原创 Java8新特性-013-Optional 容器类
概述Optional 类(java.util.Optional) 是一个容器类,代表一个值存在或不存在,原来用null 表示一个值不存在,现在Optional 可以更好的表达这个概念。并且可以避免空指针异常。常用方法: 1.Optional.of(T t) : 创建一个Optional 实例 2.Optional.empty() : 创建一个空的Optional 实例 3.Opti
2018-01-24 13:00:31 254
原创 JUC-006-创建线程的方式三-实现Callable接口
概述前面已经学习过两种创建线程的方式了:实现Runnable接口,实现其中run方法。继承Thread,重写其中run方法。 今天我们来认识第三种创建线程的方式,它具有返回值和可抛出异常。Java 5.0 在 java.util.concurrent 提供了一个新的创建执行线程的方式:Callable 接口Callable 接口类似于 Runnable,两者都是为那些其实例可能被另一个线程
2018-01-24 12:59:42 447
原创 JUC-005-CountDownLatch闭锁
概述Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某些活动直到其他活动都完成才继续执行: 确保某个计算在其需要的所有资源都被初始化之后才继续执行;确保某个
2018-01-24 12:58:49 8542
原创 JUC-004-同步容器类ConcurrentHashMap
Java 5.0 在java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。ConcurrentHashMap 同步容器类是Java 5 增加的一个线程安全的哈希表。对于多线程的操作,介于HashMap 与Hashtable 之间。内部采用“锁分段”机制替代Hashtable 的独占锁。进而提高性能。此包还提供了设计用于多线程上下文中的Collection 实现:
2018-01-24 12:58:03 640
原创 JUC-003-模拟CAS算法
测试代码TestCAS.javapackage juc.cas;import java.util.Random;public class TestCAS { public static void main(String[] args) { final CompareAndSwap cas = new CompareAndSwap(); for (int i =
2018-01-24 12:57:06 364
原创 Java8新特性-012-并行流与串行流
概述并行流就是把一个内容分成多个数据块,并用不同的线程分别处理每个数据块的流。Java 8 中将并行进行了优化,我们可以很容易的对数据进行并行操作。Stream API 可以声明性地通过parallel() 与sequential() 在并行流与顺序流之间进行切换。了解Fork/Join 框架Fork/Join 框架:就是在必要的情况下,将一个大任务,进行拆分(fork)成若干个小任务(拆到不
2018-01-06 13:58:59 386
原创 Java8新特性-011-Stream收集-终止操作
方法 描述 collect(Collector c) 将流转换为其他形式。接收一个Collector接口的实现,用于给Stream中元素做汇总的方法Collector 接口中方法的实现决定了如何对流执行收集操作(如收集到List、Set、Map)。但是Collectors 实用类提供了很多静态方法,可以方便地创建常见收集器实例,具体方法与实例如下表: 方法 返回类型 作用
2018-01-06 13:58:08 348
原创 Java8新特性-010-Stream规约-终止操作
方法名 描述 reduce(T iden, BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回T reduce(BinaryOperator b) 可以将流中元素反复结合起来,得到一个值。返回Optional备注:map 和reduce 的连接通常称为map-reduce 模式,因Google 用它来进行网络搜索而出名。测试代码TestReduce.
2018-01-06 13:57:05 804
原创 JUC-002-JUC原子变量与CAS算法
i++i++的执行步骤分析:“读-改-写”。 读:先把i的值交给一个临时变量。 改:i = i + 1; 写:返回temp值。 因为i++不是一个单一的操作,它由三步构成,所以i++不是一个原子操作。 CAS算法保证原子性CAS (Compare-And-Swap) 是一种硬件对并发的支持,针对多处理器操作而设计的处理器中的一种特殊指令,用于管理对共享数据的并发访问。 CAS 是一种无锁
2018-01-06 13:56:17 503
原创 JavaWeb-027-验证码
概述一次性验证码的主要目的就是为了限制人们利用工具软件来暴力猜测密码,其原理与利用Session防止表单重复提交的原理基本一样,只是将表单标识号变成了验证码的形式,并且要求用户将提示的验证码手工填写进一个表单字段中,而不是通过表单的隐藏字段自动回传给服务器。 服务器程序接收到表单数据后,首先判断用户是否填写了正确的验证码,只有该验证码与服务器端保存的验证码匹配时,服务器程序才开始正常的表单处理流
2018-01-06 13:55:25 213
原创 JavaWeb-026-避免表单的重复提交
说明调用 RequestDispatcher.forward() 方法,浏览器所保留的URL 是先前的表单提交的 URL,此时点击”刷新”, 浏览器将再次提交用户先前输入的数据,引起重复提交。如果采用 HttpServletResponse.sendRedirct() 方法将客户端重定向到成功页面,将不会出现重复一条问题。JS 客户端避免表单重复提交 不足:用户单击”刷新”,或单击”后退”再次提交
2018-01-06 13:54:38 190
原创 JavaWeb-025-路径问题
使用绝对路径:使用相对路径可能会有问题, 但使用绝对路径肯定没有问题。绝对路径: 相对于当前 WEB 应用的路径. 在当前 WEB 应用的所有的路径前都添加 contextPath 即可. http://localhost:8080/Course_025_ShoopingCar/step_1.jsp/ 的意义/ 代表站点目录:http://localhost:8080/超链接中的路径:连接
2018-01-06 13:53:15 178
操作系统-第二章-进程管理
2018-10-03
操作系统-第一章-绪论
2018-10-03
计算机网络-第二章.物理层
2018-10-03
计算机网络-第一章.计算机网络体系结构
2018-10-03
计算机网络-第二章-物理层
2018-04-11
计算机网络-思维导图-第一章
2018-04-08
操作系统-思维导图-第一章.mmap
2018-04-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人