摘要: 引言: 在Http请求中,我们每天都在使用Content-type来指定不同格式的请求信息,但是却很少有人去全面了解content-type中允许的值有多少,这里将讲解Content-Type的可用值,以及在Spring MVC中如何使用它们来映射请求信息。 1. Content-Type Medi 阅读全文
posted @ 2021-12-22 22:33 hanease 阅读(150) 评论(0) 推荐(0) 编辑
摘要: UDP传输:面向无连接的协议,不可靠,只是把应用程序传给IP层的数据报包发送出去,不保证发送出去的数据报包能到达目的地。不用再客户端和服务器端建立连接,没有超时重发等机制,传输速度快是它的优点。就像寄信,写好信放到邮箱桶里面,既不能保证信件在邮递过程中不丢失,也不能保证信件是按顺序寄到目的地的。 看 阅读全文
posted @ 2021-12-22 22:32 hanease 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 问题: 在运行时,对一个JAVA类,能否知道属性和方法;能否调用它的任意方法? 答案是可以的,JAVA提供一种反射机制可以实现。 目录 什么是JAVA的反射机制 JDK中提供的Reflection API JAVA反射机制提供了什么功能 获取类的Class对象 获取类的Fields 获取类的Meth 阅读全文
posted @ 2021-12-22 22:19 hanease 阅读(21) 评论(0) 推荐(0) 编辑
摘要: ConcurrentHashMap结构图如下: ConcurrentHashMap实现类图如下: segment的结构图如下: package concurrentMy.juc_collections.hashMap; import java.io.IOException; import java. 阅读全文
posted @ 2021-12-22 22:17 hanease 阅读(42) 评论(0) 推荐(0) 编辑
摘要: 深入理解Java的接口和抽象类 对于面向对象编程来说,抽象是它的一大特征之一。在Java中,可以通过两种形式来体现OOP的抽象:接口和抽象类。这两者有太多相似的地方,又有太多 不同的地方。很多人在初学的时候会以为它们可以随意互换使用,但是实际则不然。今天我们就一起来学习一下Java中的接口和抽象类。 阅读全文
posted @ 2021-12-22 22:05 hanease 阅读(38) 评论(0) 推荐(0) 编辑
摘要: 思考为什么要引入容器这个概念? Java有多种方式保存对象(应该是对象的引用),例如使用数组时保存一组对象中的最有效的方式,如果你想保存一组基本类型的数据,也推荐使用这种方式,但大家知道数组是具有固定尺寸的,你必须事先知道你要需要多少个对象。但是在一般的情况中,你在写程序中并不知道将需要多少个对象, 阅读全文
posted @ 2021-12-22 21:56 hanease 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 1.wait和notify,notifyAll: wait和notify,notifyAll是Object类方法,因为等待和唤醒必须是同一个锁,不可以对不同锁中的线程进行唤醒,而锁可以是任意对象,所以可以被任意对象调用的方法,定义在Object基类中。 wait()方法:对此对象调用wait方法导致 阅读全文
posted @ 2021-12-22 21:51 hanease 阅读(61) 评论(0) 推荐(0) 编辑
摘要: java基础知识回顾之java Thread类学习(十)--线程的状态以及转化使用的方法介绍 线程的概述: 线程是程序的多个执行路径,执行调度的单位,依托于进程存在。线程不仅可以共享进程的内存,而且还拥有一个属于自己的内存空间,这段内存空间叫做线程栈,是建立线程的时候由系统分配的,主要用来保存线程内 阅读全文
posted @ 2021-12-22 21:51 hanease 阅读(46) 评论(0) 推荐(0) 编辑
摘要: 上一节售票系统中我们发现,打印出了错票,0,-1,出现了多线程安全问题。我们分析为什么会发生多线程安全问题? 看下面线程的主要代码: @Override public void run() { // TODO Auto-generated method stub while(true){ if(ti 阅读全文
posted @ 2021-12-22 21:47 hanease 阅读(47) 评论(0) 推荐(0) 编辑
摘要: java基础知识回顾之java Thread类--java线程实现常见的两种方式(一) 创建线程的第一种方式: / * 步骤: * 1.继承Thread类 * 2. 重写Thread的run方法 * 目的:将自定义的代码存储在run方法中,运行自定义线程 * start 1.启动线程,2调用run方 阅读全文
posted @ 2021-12-22 21:44 hanease 阅读(52) 评论(0) 推荐(0) 编辑
摘要: 前言ThreadPoolExecutor在concurrent包下,是我们最常用的类之一。无论是做大数据的,还是写业务开发,对其透彻的理解以及如何发挥更好的性能,成为了我们在更好的coding道路上必不可少的基础。 为什么用线程池?如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创 阅读全文
posted @ 2021-12-22 21:36 hanease 阅读(827) 评论(0) 推荐(0) 编辑