摘要: 进程 当我们打开我们的电脑控制面板的时候就会看到进程的存在,我们日常所用的软件就是以进程的形式活动在我们的电脑中,如下图所示: 为什么要有进程 这里需要对操作系统的历史有所了解,在计算机发展的早期阶段操作系统只能支持跑一个程序,随着计算机的发展cpu的能力越来越强,内存越来越大可以存放更多的运行程序 阅读全文
posted @ 2020-05-10 18:05 微信公众号-后端学长 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 很多小伙伴们看到标题可能就会想到抛开Spring就不会存在IOC思想了,其实不然在接下来的文章中就会讲述到。 很多小伙伴在理解IOC的时候通常会和Spring放到一起去学习,首先呢Spring设计的非常之巧妙而且里面包含了很多除去IOC的其他功能。这样会导致我们在Spring的基础去理解IOC就变得 阅读全文
posted @ 2020-05-03 19:24 微信公众号-后端学长 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 锁消除和锁粗化案例分析 锁消除 直接上代码 上述是一个简单的同步代码块的案例,在并发的情况下多个线程是共享MySynchronizedTest07 的成员变量 object所以才达到了锁的效果。 我们再看下面一个案例代码: 上述代码我们可知将object变成了局部变量,在方法中,方法的的局部变量时线 阅读全文
posted @ 2020-02-11 15:28 微信公众号-后端学长 阅读(518) 评论(0) 推荐(0) 编辑
摘要: 在JDK1.5之前,我们要想实现线程同步,只能通过synchronized关键字这一种方式达成。synchronized关键字是JVM实现的一种内置锁。从底层角度来说,这种锁释放和获取都是jVM帮我们隐式实现的。 从JDK1.5开始并发包引入了Lock锁,Lock锁是基于Java实现的。因此锁的获取 阅读全文
posted @ 2020-02-09 14:25 微信公众号-后端学长 阅读(551) 评论(0) 推荐(0) 编辑
摘要: 概述 分层: 经典的四层 链路层: 处理与电缆(或其他任何传输媒介的 物理 接口细节)例如设备驱动等 网络层:处理分组在网络中的活动。例如分组选路,IP 运输层:为两台主机上的应用程序提供端到端的通讯。TCP/UDP 应用层:处理特定的应用程序细节。 四层网络模型具体实例 大多数的网络应用程序都被设 阅读全文
posted @ 2020-02-08 13:22 微信公众号-后端学长 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 通过openjdk源码分析ObjectMonitor底层实现 Hotspot JDK只是部分开源,将底层的调用C++的native方法的具体实现屏蔽了,而openjdk则将这部分也开源了,接下来我们通过openjdk源码分析ObjectMonitor底层实现。 openjdk 的官方地址为: htt 阅读全文
posted @ 2020-02-07 18:23 微信公众号-后端学长 阅读(910) 评论(0) 推荐(2) 编辑
摘要: 类加载器深入理解和双亲委托模型的案例分析 我们知道类必须通过类加载器加载后,我们程序才可以使用。接下来我们就对类加载器进行分析,Java虚拟机的类加载器是如何加载类的。首先我们可以从ClassLoader的源码分析入手。 ClassLoader 的源码分析 ClassLoader 的javadoc文 阅读全文
posted @ 2019-12-19 15:12 微信公众号-后端学长 阅读(312) 评论(0) 推荐(0) 编辑
摘要: 在设置线程池线程个数的时候,经常会想到这个问题,是不是设置的线程数越多越好?理解这个问题之前我们要先清楚的知道我们为什么使用多线程。 为什么会使用多线程 使用多线程的主要目的我们应该都能回答的出来就是提高程序的性能,这个提高性能其实是指, 降低延迟 指发送请求到接收到数据的时间,和 提搞吞吐量 :单 阅读全文
posted @ 2019-08-15 09:38 微信公众号-后端学长 阅读(745) 评论(2) 推荐(0) 编辑
摘要: 说明 在实际的开发过程中,很多时候要定义符合自己业务的错误码和错误信息,而不是统一的而不是统一的下面这种格式返回到调用端 下面我们来看看如何将我们自定义的错误码和错误信息返回到调用端。 1 自定义错误码 首先我们要定义一个枚举类 2 定义一个异常类 定义一个异常类继承RuntimeException 阅读全文
posted @ 2019-08-13 09:14 微信公众号-后端学长 阅读(1657) 评论(0) 推荐(1) 编辑
摘要: 延迟队列DelayQueue take() 源码分析 在工作中使用了延迟队列,对其内部的实现很好奇,于是就研究了一下其运行原理,在这里就介绍一下take()方法的源码 1 take()源码 如下所示 public E take() throws InterruptedException { // 加 阅读全文
posted @ 2019-08-07 09:49 微信公众号-后端学长 阅读(748) 评论(0) 推荐(0) 编辑
点击关注不迷路~