自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

微信公众号《后端学长》

欢迎关注微信公众号《后端学长》

  • 博客(82)
  • 资源 (1)
  • 收藏
  • 关注

原创 解决Mac Docker 下载镜像速度太慢

步骤登录阿里云 : 阿里云x选择镜像加速器,选择对应的系统按照本地Docker的按照方式选择对应不同的处理方法以Docker for Mac为例:将如下参数加入到Json配置文件中{ "registry-mirrors":[ "https://giy692jx.mirror.aliyuncs.com"]}...

2020-11-29 22:50:23 1140

原创 一文帮你理解如何正确的使用缓存

欢迎关注个人公众号《后端学长》,文末有图示。一起学习交流每周通俗易懂的给大家带来精品的原创文章程序员的内功系列- 操作系统 ,算法等 后端精品系列 -Jvm,并发,Redis等1.1 概述 - 性能之上缓存为王在很久很久以前人类和洪水作斗争的过程中,水库的作用很重要: 在发洪水时可以蓄水,缓解洪水对下游的冲击;在干旱时可以把库存的水释放出来以供人们使用。这里的水库就起着缓存的作用。在如今互联网的世界里随着互联网的普及,内容信息越来越复杂,用户数和访问量越来越大,我们的应用需要支撑更多的并发量,.

2020-05-21 23:01:56 592

原创 程序员必须清楚的进程和线程都在这里了

进程当我们打开我们的电脑控制面板的时候就会看到进程的存在,我们日常所用的软件就是以进程的形式活动在我们的电脑中,如下图所示:为什么要有进程这里需要对操作系统的历史有所了解,在计算机发展的早期阶段操作系统只能支持跑一个程序,随着计算机的发展cpu的能力越来越强,内存越来越大可以存放更多的运行程序。必然要在内存中装入多个程序,如何处理呢?多个程序使用的数据如何辨别?当一个程序暂停后,随后怎么恢复到它之前执行的状态呢?这时候,人们就发明了进程,用进程来对应一个程序,每个进程来对应一定的内存

2020-05-10 18:19:16 477 2

原创 抛开Spring去理解IOC思想 - 原来IOC容器这么简单

很多小伙伴们看到标题可能就会想到抛开Spring就不会存在IOC思想了,其实不然在接下来的文章中就会讲述到。很多小伙伴在理解IOC的时候通常会和Spring放到一起去学习,首先呢Spring设计的非常之巧妙而且里面包含了很多除去IOC的其他功能。这样会导致我们在Spring的基础去理解IOC就变得很困难。很难抓住其核心思想。所以本文的标题的含义就是单纯的去理解IOC思想,然后通过自定义的IO...

2020-05-03 19:05:25 405

原创 2020 给准备离职或者想离职的人一条真诚的建议

个人情况本人在上海一家创业型公司,事情不多但是就是不喜欢公司的管理。一心想换个环境,因为一直处于学习的状态不担心后续因为技术问题找不到工作。所以四月份中旬就毅然决然的提出了离职申请。至于管理问题估计大家都会遇到,一些无能的领导瞎指挥,公司的里面最大的混子,在这里就不吐槽了。第一家公司因为微信上有一家做教育的公司,本人对在线教育也比较感兴趣,所以就投了简历,也进行了一面和后续的复试。...

2020-04-21 09:51:06 712 3

原创 一文帮你清理:如何正确的停止线程!

如何正确的停止线程?一个线程一般都是正常的运行直到执行任务完毕而结束。那什么时候我们需要对线程进行停止的动作呢?例如用户行为的一个取消动作,运行超时或者运行过程中出现错误也是需要停止当前线程,应用程序需要进行重启等都需要我们主动的停止正在运行的线程,如何安全可靠的停止线程并不是一件简单的事情。java语言并没有一种机制可以安全可靠的去停止一个线程,但是提供了一个中断(interrupt)机制...

2020-03-24 22:41:55 233

原创 一文帮你理清Zookeeper的基本信息

Zookeeper的简介起源Zookeeper最早起源于雅虎研究院的一个研究小组,在当时研究人员发现在雅虎内部很多软件都依赖一个系统进行协调。但是这样的协调系统往往都存在单点问题。所以雅虎开发人员开发了一个通用的无单点问题的分布式协同服务系统,这就是Zookeeper。所有的框架理念的出现都是源于解决现有系统的不足。什么是Zookeeper?Zookeeper是一个开源的分布式协...

2020-03-19 22:23:49 179

原创 TCP滑动窗口的原理 - 清楚TCP的三次握手和四次挥手,在配上TCP的滑动窗口的原理更有说服力哦!

TCP的滑动窗口概要我们了解滑动窗口之前先了解一下两个概念。RTT : 发送一个数据包到收到对应ACK所消耗的时间。换句话说就是从发送数据到收到数据确认的时间差。RTO: 重传时间间隔。TCP在发送数据包之后会启动一个重传定时器。而这个RTO就是这个重传的时间。在RTO的时间到达后还没收到来之对方的一个ACK确认,则会重新发送该数据包。这个RTO不是固定写死的配置,而是根据RTT这个时间...

2020-03-15 15:07:57 257

原创 双亲委托模型的弊端以及线程上下文类加载器详解!

线程上下文类加载器的分析双亲委托模型的弊端我们先看一段我们非常熟悉的数据库连接相关的代码片段。Class.forName("com.mysql.jdbc.Driver");Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/RUNOOB","root","123456");Stateme...

2020-03-14 18:21:02 1633

原创 Charles cannot configure your proxy settings while it is on a read-only volume

错误报错Charles cannot configure your proxy settings while it is on a read-only volume. Perhaps you are running Charles from the disk image? If so, please copy Charles to the Applications folder and run...

2020-03-09 08:40:58 12312 6

原创 白话文图解 - TCP的三次握手

TCP的三次握手TCP报文在学习本文可以先把TCP、IP 详解 02 先大致的看一下。我们要想很好的理解三次握手的过程,我们要对TCP报文头有一个很清晰的理解,在这个理解的基础上在去学习我们的三次握手就很轻松了。TCP的报文信息如下所示:源端口和目的端口为了区分某台主机上具体某个应用 ip层的ip可以标识具体哪个主机,tcp的端口号标识具体哪个应用序列号(SeqNum)...

2020-03-08 21:30:55 550

原创 设计模式 - 单例模式(肯定有你不知道的创建方式!!!)

单例模式概述保证一个类仅有一个实例,并提供一个全局的访问点类型: 创建型场景: 想确保任何情况下都绝对只有一个实例优点:在内存中只有一个实例,减少了内存的开销,避免了对资源的多重占用,设置全局的访问点,严格控制访问。缺点:扩展比较困难注意点:私有构造器 - 防止被主动创建线程安全 - 这个很好理解,所有线程共享一个对象,就会存在线程安全的问题。延迟加载...

2020-03-08 13:36:18 175

原创 白话文学习设计模式 - 建造者模式

建造者模式概述定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。用户只需要指定需要建造的类型就可以得到它们,建造过程以及细节不需要知道。类型:创建型通俗的理解:建造者就是如何一步一步构建多个组件的对象,相同的构建过程可以创建不同的产品。适用场景适用那些流程固定但是顺序不固定的。如果一个对象有非常复杂的内部结构(很多属性)想把复杂对象的创建和适用...

2020-03-07 16:45:01 186

原创 白话文学习设计模式 - 抽象工厂

抽象工厂定义 :抽象工厂模式提供了一个创建一系列相关/相互依赖对象的接口无须制定他们具体类类型:创建型应用场景客户端不依赖于产品类实例如何被创建,实现等细节强调一系列相关的产品对象(属于同一产品族)一起使用创建对象需要大量的重复代码提供一个产品类的库,所有的产品以同样的接口出现从而是客户端不依赖于具体的实现产品族和产品等级如下图所示抽象工厂和工厂方法了解了上述...

2020-03-07 15:10:09 255

原创 白话文学习设计模式 - 工厂方法

工厂方法定义:定义一个创建对象的接口,但让实现中国接口的类来决定实例化哪个类工厂方法让类的实例化推迟到子类中进行。 — 这个是核心思想类型: 创建型适用场景创建对象需要大量的重复的代码客户端不依赖于产品类的实例如何被创建,实现等细节一个类通过其子类来制定创建哪个对象原则java的多态性和里氏替换原则在程序运行的时候,子类对象将覆盖父类的对象从而使系统更加容易扩展。...

2020-03-07 12:29:45 320

原创 白话文学习设计模式 - 简单工厂

01 简单工厂定义: 由一个工厂对象决定创建出哪一种产品类的实例。类型:创建型,但不属于GOF23种设计模式中的一个。后续的工厂方法,抽象工厂都是由简单工厂来演变不依赖对应的实现类应用场景工厂类负责创建的对象比较少客户端只知道传入工厂类的参数对于如何创建对象具体逻辑不关心。优点:只需要传入一个正确的参数,就可以获取你所需要的对象,无需知道其创建的细节。缺点:工程类职责相对过...

2020-03-07 11:15:06 267

原创 SpringBoot源码分析 - 监听器的实现

监听器模式我们要先了解监听器的设计模式的要素:1. 事件2. 监听器3. 广播器4. 触发机制图解:SpringBoot 系统监听器的实现系统监听器 - ApplicationListener其主要作用是监听事件源码如下所示@FunctionalInterfacepublic interface ApplicationListener<E extends A...

2020-03-01 12:34:01 330

原创 Springboot 源码分析: 工厂加载机制以及如何加载系统初始化器

Springboot 源码分析: 工厂加载机制概述工厂加载机制是Spring内部提供的一个约定俗成的加载方式。从classpath下多个jar包特定的位置(META-INF目录下定义Properties格式的spring.factories文件)读取文件并初始化类文件内容必须以kv形式。即propertie类型key是类/接口的全名,value是实现多个以逗号分隔。Springbo...

2020-02-23 15:06:13 457 3

原创 SpringBoot 系统初始化器 - ApplicationContextInitializer 三种实现方式

SpringBoot 系统初始化器 - ApplicationContextInitializer类名: ApplicationContextInitializer。介绍: Spring容器刷新(reflash)之前执行的一个回调函数。作用: 主要是向SpringBoot容器中注册属性。使用方式: 继承接口自定义实现。总结:系统初始化器就是SpringBoot预留的一个扩展点,通过这个...

2020-02-23 13:11:47 811

原创 一文帮你理解Spring Boot 启动原理

00 源码@SpringBootApplicationpublic class SbApplication { public static void main(String[] args) { SpringApplication.run(SbApplication.class, args); }}学习内容SpringBoot的启动流程全局概述学习笔记要想全面的了解Sp...

2020-02-23 12:01:28 426

原创 死锁分析以及检测工具详解

锁的状态死锁:线程1等待线程2的互斥持有资源,而线程2等着线程1的互斥持有资源,两个线程都无法进行执行。活锁:线程持续重试一个总是失败的操作,导致无法继续执行。(不是本文的重点)饿死:线程一直被调度器延迟访问其赖以执行的资源,也许是调度器先于低优先级的线程而执行高优先级的线程,同时总是会有一个高优先级的线程可以执行,饿死也叫做无限延迟。死锁的案例代码如下所示:package ...

2020-02-11 18:24:56 765

原创 JIT对锁的优化- 锁消除和锁粗化案例分析

锁消除和锁粗化案例分析锁消除直接上代码/** * 描述: 锁粒度演示 * @author karl * @create 2020-02-11 14:38 */public class MySynchronizedTest07 { private Object object = new Object(); public void method() { ...

2020-02-11 15:26:23 397

原创 TCP、IP 详解 02

TCP/IP协议族中的不同层次的协议如下图所示:TCP使用不可靠的IP服务,并提供可靠的传输层服务。UDP为应用程序发送和接受数据报,和TCP不同,UDP是不可靠的。(后续详解)是存在丢包的,没有重传,例如语言/视频功能用的就是UDP,丢了就丢了不需要在重传。IP是网络层上的主要协议,同时被TCP和UDP使用,IP往上的协议只有TCP和UDPICMP是IP的协议的附属协议。当ip...

2020-02-09 18:04:46 637

原创 synchronized锁升级详解

synchronized锁升级在JDK1.5之前,我们要想实现线程同步,只能通过synchronized关键字这一种方式达成。synchronized关键字是JVM实现的一种内置锁。从底层角度来说,这种锁释放和获取都是jVM帮我们隐式实现的。从JDK1.5开始并发包引入了Lock锁,Lock锁是基于Java实现的。因此锁的获取和释放都是由java代码实现的。然而synchronized是基于...

2020-02-09 14:20:47 1124

原创 网络编程 - TCP、IP 详解

TCP、IP 详解概述分层: 经典的四层链路层: 处理与电缆(或其他任何传输媒介的物理接口细节)例如设备驱动等网络层:处理分组在网络中的活动。例如分组选路,IP运输层:为两台主机上的应用程序提供端到端的通讯。TCP/UDP应用层:处理特定的应用程序细节。四层网络模型具体实例大多数的网络应用程序都被设计成客户端-服务器模式。双方都有对应的一个/多个协议进行通讯应用程序...

2020-02-08 13:26:38 215

原创 通过openjdk源码ObjectMonitor底层实现分析wait/notify

通过openjdk源码分析ObjectMonitor底层实现Hotspot JDK只是部分开源,将底层的调用C++的native方法的具体实现屏蔽了,而openjdk则将这部分也开源了,接下来我们通过openjdk源码分析ObjectMonitor底层实现。openjdk 的官方地址为: https://openjdk.java.net/源码地址: https://hg.openjdk.j...

2020-02-07 16:57:53 1251 1

原创 通过字节码去理解synchronized关键字

通过字节码去理解synchronized 关键字我们都知道synchronized是java提供一个关键字,这个关键字可以实现线程的同步保护共享资源。这个保护归根结底是由谁来实现呢?大家应该都知道是jvm,那jvm是如何确保线程安全的呢?本文的重点就是来学习这一块的知识点。下面我们通过几个简单的代码从字节码的角度分析synchronized的原理。synchronized修饰代码块代码...

2020-01-30 19:35:58 208

原创 类加载器深入理解和双亲委托模型的案例分析

类加载器深入理解和双亲委托模型的案例分析我们知道类必须通过类加载器加载后,我们程序才可以使用。接下来我们就对类加载器进行分析,Java虚拟机的类加载器是如何加载类的。首先我们可以从ClassLoader的源码分析入手。ClassLoader 的源码分析ClassLoader 的javadoc文档javadoc文档是最权威的官方讲解,可以对ClassLoader有一个比较全面且正确的一...

2019-12-19 14:39:13 384

原创 java虚拟机类加载深入理解和阶段分析

类加载深入解析和阶段分解01 类加载深入解析和阶段分解01 加载02 连接03 初始化04 使用05 卸载java虚拟机与程序的生命周期Coding01 类加载深入解析和阶段分解java代码中,类型的加载,连接与初始化过程都是在程序运行期间完成的。类型:指的是我们在程序中定义的一个class,interface,enum等。注意这里的类型并不是对象(new)。举例子:这里的类型是指...

2019-11-22 09:14:31 262

原创 Golang 学习笔记02 --- 变量,常量的定义

02 变量,常量变量的声明方式赋值可以进行自动的类型判断在一个赋值语句中可以对多个变量进行同时赋值需要注意的点:如果声明了变量代码中没有用到在编译阶段就会提示报错,代码无法运行。这个和java是不同的,设计的更加合理一下。下面是变量声明的几种方式。package mainimport "fmt"func main() { //变量声明方式 01 var a int = ...

2019-10-20 16:37:36 160

转载 挑战10个最难的Java面试题(附答案)【下】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-10-20 12:22:23 238

转载 挑战10个最难的Java面试题(附答案)【上】

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 ...

2019-10-20 12:20:13 264 1

原创 Golang 学习笔记01 第一个go程序

01 GO 开发笔记01 应用程序入口必须是main包:package main必须是main方法: func main()文件名不一定是main.goGO 语言开发注意事项package 名字和路径的名字不一定要一致 这一点和java是不同的应用程序的入口必须是package main 不然就运行不了如图:02 main 退出返回值与其他主要编程语言的差异Go中的...

2019-10-19 13:20:39 201

原创 深入理解java虚拟机学习笔记 - 程序如何访问内存中的对象示例

程序如何访问内存中的对象示例程序通过栈上的reference 数据来操作堆上的具体的实例对象,如何操作呢?一般分两个操作方式 句柄 和 直接指针的方式。句柄句柄本质是一个唯一的整数,可以作为对象的身份Id来识别不同的对象/同一类型的对象不同的示例。句柄访问堆上的实例数据如果通过句柄的方式访问对象,首先在堆中会分配一小块内存作为句柄池,顾名思义存放不同的句柄。程序访问堆上的具体过...

2019-09-04 16:57:04 160

原创 深入理解java虚拟机学习笔记 - java 虚拟机判断一个对象是否存活

java 虚拟机判断一个对象是否存活判断一个对象是否存活依赖就是该对象是否被引用,下面主要介绍两种方法。引用计数算法给对象添加一个引用计数器,当对象被引用的时候计数器加1,当引用失效的时候计数器减1,当计数器为0的时候说明该对象没有被引用。优点实现起来比较简单缺点无法解决循环依赖的问题,A a = b; B b = a;可达性分析算法为了解决上述的遗留问题,即解...

2019-09-04 16:54:57 151

原创 java8新特性- 默认方法 在接口中有具体的实现

java8新特性- 默认方法 在接口中有具体的实现案例分析在java8中在对list循环的时候,我们可以使用forEach这个方法对list进行遍历,具体代码如下demo所示public static void main(String[] args) { List<String> stringList = new ArrayList<String&gt...

2019-08-06 14:18:04 203

原创 什么是函数式接口 @FunctionalInterface??

什么时候函数式接口 @FunctionalInterface什么时候函数式接口 @FunctionalInterface源码定义翻译示例正确定义错误定义什么时候函数式接口 @FunctionalInterface源码定义/** * An informative annotation type used to indicate that an interface * type declar...

2019-08-05 17:15:31 850

原创 图解链表反转的过程 -- leetCode 题号:206

这里写自定义目录标题图解链表反转的过程 -- leetCode 题号:206概述题目描述官方答案图解过程第一次迭代:第二次迭代总结图解链表反转的过程 – leetCode 题号:206概述本人算法小白,在遇到单链表反转的这道题目的时候,很是不理解为什么这么写,经过画图一步一步的走,可算是理解这个整体的过程了。题目描述题目描述:反转一个单链表。示例:输入: 1->2-&gt...

2019-07-19 09:04:52 219

原创 算法和数据结构的关系?

算法和数据结构的关系概述很多场景或者书籍都会讲算法和数据结构捆绑在一起进行讲解,那为什么算法和数据结构密不可分呢?概念数据结构: 是指一组数据的存储结构。举个例子:电影院里面的座位是按照几排几号进行"存储"观影者。这里的几排几号就是一种数据结构。算法: 操作数据的一组方法。举个例子:我们拿到电影票通过电影票上的几排几号就能定位到我们的具体位置,这个找位置的方法就是一种算...

2019-07-16 16:11:41 3869

原创 Spring Boot 如何配置Consul作为服务治理的组件

Spring Boot 如何配置Consul作为服务治理的组件Spring Boot 如何配置Consul背景本地安装consulpom依赖启动类yml配置信息演示Spring Boot 如何配置Consul背景由于eureka闭源所以很多公司都会选择consul作为服务治理。本地安装consulmac版本 请参考 – https://blog.csdn.net/BigBingta...

2019-07-16 11:22:20 1421

学习资料大全v3.8.docx

java学习的相关资料,内部有某云的连接。学习资料应有尽有。如果侵犯版本请私信。有过期或者失效的,也请小伙伴私信。

2020-04-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除