随笔分类 - Java
摘要:1、JDK和JRE有什么区别 JDK:java development kit 的简称,java开发工具包,提供了java的开发环境和运行环境。 JRE: java runtime environment 的简称,java运行环境,为java的运行提供所需环境。 具体来说JDK其实包含了JRE,同时
阅读全文
摘要:JVM 内存模型图 方法区域存放了所加载的类的信息(名称、修饰符等)、类中的静态变量、类中定义为final类型的常量、类中的Field信息、类中的方法信息,当开发人员在程序中通过Class对象中的getName、isInterface等方法来获取信息时,这些数据都来源于方法区域,同时方法区域也是全局
阅读全文
摘要:1.堆大小设置 JVM 中最大堆大小有三方面限制:相关操作系统的数据模型(32-bt还是64-bit)限制;系统的可用虚拟内存限制;系统的可用物理内存限制。32位系统下,一般限制在1.5G~2G;64为操作系统对内存无限制。我在Windows Server 2003 系统,3.5G物理内存,JDK5
阅读全文
摘要:1、什么是幂等性 HTTP 幂等方法,是指无论调用多少次都不会有不同结果的 HTTP 方法。不管你调用一次,还是调用一百次,一千次,结果都是相同的。 GET /tickets # 获取ticket列表 GET /tickets/12 # 查看某个具体的ticket POST /tickets # 新
阅读全文
摘要:1、Jackson 简介 Jackson 是一个简单基于 Java 应用库,Jackson 可以轻松的将 Java 对象转换成 json 对象和 xml 文档,同样也可以将 json、xml 转换成 Java 对象。Jackson 所依赖的 jar 包较少,简单易用并且性能也要相对高些,并且 Jac
阅读全文
摘要:1、概述 2000 年,Roy Thomas Fielding 博士在他那篇著名的博士论文《Architectural Styles and the Design of Network-based Software Architectures》中提出了几种软件应用的架构风格,REST 作为其中的一种
阅读全文
摘要:Apache HttpClient 1、简易架构图 2、Apache HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。H
阅读全文
摘要:(一)概述 一个完整的软件,日志是必不可少的。程序从开发、测试、维护、运行等环节,都需要向控制台或文件等位置输出大量信息。这些信息的输出, 在很多时候是使用 System.out.println() 无法完成的。 日志信息根据用途与记录内容的不同,分为 调试日志、运行日志、异常日志 等。 Log4j
阅读全文
摘要:为什么要用线程池 使用线程池管理线程有如下优点: 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗。 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以
阅读全文
摘要:当程序更新一个变量时,如果多线程同时更新这个变量,可能得到期望之外的值,比如变量i=1,A线程更新i+1,B线程也更新i+1,经过两个线程操作之后可能i不等于3,而是等于2。因为A和B线程在更新变量i的时候拿到的i都是1,这就是线程不安全的更新操作,通常我们会使用synchronized来解决这个问
阅读全文
摘要:在JDK的并发包里提供了几个非常有用的并发工具类。CountDownLatch、CyclicBarrier和Semaphore工具类提供了一种并发流程控制的手段,Exchanger工具类则提供了在线程间交换数据的一种手段。本章会配合一些应用场景来介绍如何使用这些工具类。 1、等待多线程完成的Coun
阅读全文
摘要:Java中的线程池 Java中的线程池是运用场景最多的并发框架,几乎所有需要异步或并发执行任务的程序都可以使用线程池。在开发过程中,合理地使用线程池能够带来3个好处。第一:降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。第二:提高响应速度。当任务到达时,任务可以不需要等到线程创建
阅读全文
摘要:在并发程序中使用和共享对象时,可以使用一些实用的策略,包括: 线程封闭 只读共享。共享的只读对象可以由多个线程并发访问,但任何线程都不能修改它。共享的只读对象包括不可变对象和事实不可变对象 线程安全共享。线程安全地对象在器内部实现同步。 保护对象。被保护的对象只能通过持有特定的锁来方访问。 1、线程
阅读全文
摘要:(一)创建线程的方式及实现 (1)继承 Thread 类创建线程类 定义 Thread 类的子类,并重写该类的 run 方法,该 run 方法的方法体就代表了线程要完成的任务。因此把 run() 方法称为执行体。 创建 Thread 子类的实例,即创建了线程对象。 调用线程对象的 start() 方
阅读全文
摘要:(一)线程安全问题 线程安全是多线程领域的问题,线程安全可以简单理解为一个方法或者一个实例可以在多线程环境中使用而不会出现问题。 在 Java 多线程编程当中,提供了多种实现 Java 线程安全的方式: 1、最简单的方式,使用 Synchronization 关键字 2、使用 java.util.c
阅读全文
摘要:(一)List 和 Set 区别 List, Set 都是继承自 Collection 接口 List 特点:元素有放入顺序,元素可重复。Set 特点:元素无放入顺序,元素不可重复(注意:元素虽然无放入顺序,但是元素在 set 中的位置是有该元素的 HashCode 决定的,其位置其实是固定的) L
阅读全文
摘要:(一)面向对象的特征 面向对象的三个基本特征是:封装、继承、多态。 封装 封装最好理解了。封装是面向对象的特征之一,是对象和类概念的主要特性。 封装,也就是把客观事物封装成抽象的类,并且类可以把自己的数据和方法只让可信的类或者对象操作,对不可信的进行信息隐藏。 继承 面向对象编程 (OOP) 语言的
阅读全文
摘要:(一)Lambda表达式(匿名函数) (二)Stream多线程并行数据处理 新特性: 1、接口的默认方法只需要使用 default 关键字即可,这个特征又叫 扩展方法 2、Lambda表达式 3、Functional 接口 函数式接口 是指仅仅只包含一个抽象方法的接口,每个该类型的Lambda表达式
阅读全文
浙公网安备 33010602011771号