随笔分类 -  Java

摘要:一.Spring MVC原理图: ps: springmvc的运行流程为图中数字序号 二.springmvc的重要组件:1)前端控制器:DispatchServlet(不需要程序员开发)接收请求,响应结果,相当于转发器2)处理映射器:HandlerMapping(不需要程序员开发)根据请求的URL查找Handler3)处理器Handler(需要程序员开发)注意编写Handler时按照Handle... 阅读全文
posted @ 2019-07-11 15:35 西*风 阅读(463) 评论(0) 推荐(0) 编辑
摘要:列举一下我所知道的一些学习资源,希望能对大家有所帮助 Java学习资源资源: 1.尚学堂 Java300集 链接:https://study.163.com/course/introduction.htm?courseId=343001&_trace_c_p_k2_=b37d4aec7322441e 阅读全文
posted @ 2019-06-30 22:13 西*风 阅读(406) 评论(0) 推荐(0) 编辑
摘要:经典类概念性问题 1.java支持的数据类型有哪些?什么是自动拆装箱? 12.Java有哪些特性,举个多态的例子。 14.请列举你所知道的Object类的方法。 15.重载和重写的区别?相同参数不同返回值能重载吗? 23.接口和抽象类的区别是什么? 13.String为啥不可变?不可变的优势在哪里? 阅读全文
posted @ 2019-05-11 08:05 西*风 阅读(1033) 评论(0) 推荐(0) 编辑
摘要:一.ThreadLoacl的理解: 官方的讲: ThreadLocal是一个本地线程副本变量工具类,主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰 通俗的讲: ThreadLocal也叫做线程本地变量,ThreadLoacl为变量在每个线程中的都创建了副本,每个线程可 阅读全文
posted @ 2019-04-18 12:35 西*风 阅读(10498) 评论(3) 推荐(3) 编辑
摘要:问题背景:曾经做过一个项目,医院预约挂号系统,挂号的话专家号很多人抢,这是一个高并发的问题,我以前针对专家号系统的解决方案就是直接在数据库MySQL上面加锁,简单有效,完美完成任务,但是这是针对并发量很少的情况,最近在思考,如果并发量很大的话,我的专家号系统模块应该怎么办呢?专家号系统模块需要解决的问题:1.瞬间高并发(很多人在同一时间抢购专家号)2.超卖问题(防止出售超过库存数量的专家号)高并发... 阅读全文
posted @ 2019-04-10 11:47 西*风 阅读(733) 评论(0) 推荐(0) 编辑
摘要:线程安全的严谨定义: 当多个线程访问一个对象时,如果不用考虑这些线程在运行时环境下的调度和交题执行,也不需要进行额外的同步,或者调用方法进行其他任何操作,调用这个对象的行为都可以或者正确的结果,那么这个对象是线程安全的! java共享数据分类(5类) 1)不可变 2)绝对线程安全:不管运行环境如何, 阅读全文
posted @ 2019-04-03 10:18 西*风 阅读(538) 评论(0) 推荐(0) 编辑
摘要:java体系中线程的实现1.使用内核线程实现内核线程就是直接由操作系统内核支持的线程,这种线程由内核来完成线程切换,内核通过操作调度器对线程进行调度,并负责将线程的任务映射到各个处理器上,每个内核线程可以视作内核的一个分身,这样操作系统就有能力处理多件事情,支持多线程的内核就叫做多线程内核,程序一般不会其使用内核线程,而是去使用内核线程的一种高级接口:轻量级进程,轻量级进程就是我们通常意义上的线程... 阅读全文
posted @ 2019-04-02 18:40 西*风 阅读(485) 评论(0) 推荐(0) 编辑
摘要:什么叫Java内存模型? 现代计算机通过指令的重排序来提升计算机的性能,而没有限制条件的指令重排序会使得程序的行为不可预测,JMM就是通过一系列的操作规则限制指令重排序的方式使得指令重排序不会破坏JMM提供的可见性,同时JMM通过让JVM在适当的位置插入内存栅栏来屏蔽JMM与底层平台内存模型之间的差 阅读全文
posted @ 2019-04-02 18:15 西*风 阅读(808) 评论(0) 推荐(0) 编辑
摘要:垃圾收集器需要解决的三个问题: 1)哪些内存需要回收 2)什么时候回收 3)如何回收 背景:程序计数器,虚拟机栈,本地方法栈3个区域随线程而生,随线程而灭,在这几个区域内不需要过多的考虑回收的问题,因为方法结束或者线程结束时,内存自然就跟着回收了,所以我们着重需要探究的是堆和方法区,因为他们是线程共 阅读全文
posted @ 2019-03-29 11:55 西*风 阅读(360) 评论(0) 推荐(0) 编辑
摘要:OOM异常:OutOfMemoryError1.JAVA堆溢出JAVA堆用于存储对象实例,只要不断的创建对象,并且保证GC Roots到这些对象之间有路径可以来避免垃圾回收机制清除这些对象,那么在对象数量达到最大堆的容量限制之后就会产生OOM异常解决方案:先分析到底是出现了内存泄漏(无法释放已申请的内存空间)还是内存溢出(没有足够的内存空间使用)内存泄漏:通过工具查看泄漏对象到GC Roots的引... 阅读全文
posted @ 2019-03-28 11:02 西*风 阅读(1630) 评论(0) 推荐(0) 编辑
摘要:以常用的HotSpot虚拟机和JAVA内存区域堆为例,探讨对象的创建,对象的内存布局以及对象的访问定位 一.对象的创建 1)类加载:虚拟机遇到一条new指令时,先检测这个指令的参数能否在常量池中定位到一个类的符号的引用,并检查这个符号代表的类否收以及被加载,解析和初始化,如果没有那么就必须执行相应的 阅读全文
posted @ 2019-03-28 10:20 西*风 阅读(361) 评论(0) 推荐(0) 编辑
摘要:背景介绍:假设现在有一个线程共享的变量c=0,让两个线程分别对c进行c++操作100次,那么我们最后得到的结果是200吗? 1.在线程不安全的方式下:结果可能小于200,比如当前线程A取得c的值为3,然后线程A阻塞了,线程B取得的c的值也是3,然后线程B也阻塞了,现在线程A被唤醒执行了++操作使得c 阅读全文
posted @ 2019-03-25 20:36 西*风 阅读(4731) 评论(0) 推荐(2) 编辑
摘要:JVM的分区可以分为两种:线程私有的内存区和线程共享的内存区 一.JVM中线程私有的内存区: 1.程序计数器:当前线程所执行的字节码行号计数指示器,是线程私有的,即每个线程都有自己的程序计数器,需要注意的是,如果当前JVM执行的是Native代码(即非JAVA代码),那么程序计数器值为空 2.JAV 阅读全文
posted @ 2019-03-24 19:37 西*风 阅读(4941) 评论(0) 推荐(1) 编辑
摘要:java为数据结构中的映射定义了一个接口java.util.Map,他实现了四个类,分别是:HashMap,HashTable,LinkedHashMapTreeMapMap不允许键重复,但允许值重复1.HashMap:最常用的Map,根据键的hashcode值来存储数据,根据键可以直接获得他的值(因为相同的键hashcode值相同,在地址为hashcode值的地方存储的就是值,所以根据键可以直接... 阅读全文
posted @ 2019-03-16 17:03 西*风 阅读(4316) 评论(0) 推荐(1) 编辑
摘要:equals和hashcode是object类下一个重要的方法,而object类是所有类的父类,所以所有的类都有这两个方法equals和hashcode间的关系:1.如果两个对象相同(即equals比较返回true),那么他们的hashcode一定要相等2.如果他们的hashcode相等,他们的equals不一定相等假设两个对象,重写了其equals方法,其相等条件是属性相等,equals比较之后... 阅读全文
posted @ 2019-03-15 21:02 西*风 阅读(1880) 评论(0) 推荐(2) 编辑
摘要:implements:接口1.实现一个接口就是要实现该接口中的所有方法(抽象类除外)2)接口中的方法都是抽象的多个无关的类可以实现同一个接口,一个类可以实现多个无关的接口extends:继承父类,只要那个类不是声明为final或者定义为abstract抽象类就都可以继承,java中不支持多重继承,多重继承的实现采用的是接口来实现的,这样就用到了implements,implements可以实现多个... 阅读全文
posted @ 2018-12-26 17:06 西*风 阅读(509) 评论(0) 推荐(1) 编辑
摘要:1.线程的状态图需要注意的是:线程调用start方法是使得线程到达就绪状态而不是运行状态2.停止线程的两种方法1)自然停止:线程体自然执行完毕2)外部干涉:通过线程体标识 1.线程类中定义线程体能够使用的标识 2.线程体使用该标识 3.提供对外的方法改变该标识 4.外部根据条件调用该方法即可ThreadStop.java:package 多线程;public class ThreadSto... 阅读全文
posted @ 2018-12-26 16:43 西*风 阅读(1640) 评论(0) 推荐(0) 编辑
摘要:Thread.sleep(3000);就是指让当前正在运行的占用cpu时间片的线程挂起3000ms,把cpu的时间片交给其他线程,但是并没有指定把CPU的时间片接下来到底交给哪个线程,而是让这些线程自己去竞争(一般操作系统会根据优先级调度)所以说让当线程睡眠,是帮助所有线程获得运行时间的最佳方法需要的注意的是就算线程的睡眠时间到了,他也不是立即会被运行,只是从睡眠状态变为了可运行状态,是不会由睡眠... 阅读全文
posted @ 2018-12-26 15:50 西*风 阅读(14921) 评论(0) 推荐(2) 编辑
摘要:1. 多线程 程序:指令集,静态的概念 进程:操作系统调动程序,是程序的一次动态执行过程,动态的概念 线程:在进程内的多条执行路径 Ps:单核的话进程都是虚拟模拟出来的,多核处理器才可以执行真正的多线程 单核通过CPU调度时间片实现虚拟模拟的多线程,比如执行main函数和GC在底层就是多线程,你执行 阅读全文
posted @ 2018-12-25 19:30 西*风 阅读(610) 评论(0) 推荐(0) 编辑
摘要:类Object是类层次结构的根类,是每一个类的父类,所有的对象包括数组,String,Integer等包装类,所以了解Object是很有必要的,话不多说,我们直接来看jdk的源码,开始我们的分析之路 1.hashcode() public native int hashCode();//native 阅读全文
posted @ 2017-12-28 18:02 西*风 阅读(4796) 评论(0) 推荐(2) 编辑

点击右上角即可分享
微信分享提示