辉

今天所有的辛酸和努力都会在不经意间闪耀


  • 首页

  • 标签

  • 分类

  • 归档

  • 站点地图

  • 搜索

深入理解Java内存模型(JMM)及Volatile关键字

发表于 2019-10-18 更新于 2019-10-28 评论数:
本文字数: 13k 阅读时长 ≈ 12 分钟

分享目标

本文通过Java volatile探讨以下问题

  • Volatile多线程引发的缓存一致性问题
  • Volatile多线程引发的不可见问题
  • Volatile多线程引发的原子性问题
  • 指令重排序含义及相关语义和规则
  • 内存屏障的分类和使用
  • 源码跟踪
阅读全文 »

Spring IOC 容器源码分析(转载)

发表于 2019-10-08 分类于 open-source 评论数:
本文字数: 93k 阅读时长 ≈ 1:24

[TOC]

Spring 最重要的概念是 IOC 和 AOP,本篇文章其实就是要带领大家来分析下 Spring 的 IOC 容器。既然大家平时都要用到 Spring,怎么可以不好好了解 Spring 呢?阅读本文并不能让你成为 Spring 专家,不过一定有助于大家理解 Spring 的很多概念,帮助大家排查应用中和 Spring 相关的一些问题。

阅读全文 »

Nginx概述

发表于 2019-08-24 更新于 2019-08-26 分类于 Nginx 评论数:
本文字数: 1.4k 阅读时长 ≈ 1 分钟

1.Nginx简介

Nginx (engine x) 是一个轻量级的、高性能的、基于Http的、反向代理服务器,静态web服务器。
Nginx最初是由俄罗斯人Igor Sysoev(伊戈尔·赛索耶夫)使用C语言为俄罗斯访问量第二的Rambler.ru站点开发的一款服务器。2004年10月发布第一个版本。
Nginx的官网: http://nginx.org
国内大型的站点,例如百度、京东、新浪、网易、腾讯、淘宝等,都使用了Nginx。
https://www.netcraft.com/

阅读全文 »

IO模型-同步IO、异步IO、阻塞IO、非阻塞IO

发表于 2019-08-13 更新于 2019-08-15 分类于 Linux 评论数:
本文字数: 776 阅读时长 ≈ 1 分钟

同步I/O与异步I/O

同步和异步是针对应用程序和内核的交互而言的,同步指的是用户进程触发IO操作并等待或者轮询的去查看IO操作是否就绪,而异步是指用户进程触发IO操作以后便开始做自己的事情,而当IO操作已经完成的时候会得到IO完成的通知。

1
指的是用户空间和内核空间数据交互的方式
阅读全文 »

IO模型-网络IO与零拷贝

发表于 2019-08-13 分类于 Linux 评论数:
本文字数: 984 阅读时长 ≈ 1 分钟

网络I/O与零拷贝

普通的网络传输步骤如下

  • 操作系统将数据从磁盘复制到操作系统内核的页缓存中
  • 应用将数据从内核缓存复制到应用的缓存中
  • 应用将数据写回内核的Socket缓存中
  • 操作系统将数据从Socket缓存区复制到网卡缓存,然后将其通过网络发出
阅读全文 »

IO模型-缓存IO与直接IO

发表于 2019-08-13 分类于 Linux 评论数:
本文字数: 1.6k 阅读时长 ≈ 1 分钟

PIO与DMA

在介绍 I/O 模型之前,有必要简单地说说慢速 I/O 设备和内存之间的数据传输方式。

  • PIO的英文拼写是“Programming Input/Output Model”,PIO模式是一种通过CPU执行I/O端口指令来进行数据的读写的数据交换模式。是最早先的硬盘数据传输模式,数据传输速率低下,CPU占有率也很高,大量传输数据时会因为占用过多的CPU资源而导致系统停顿,无法进行其它的操作。
  • DMA的英文拼写是“Direct Memory Access”,汉语的意思就是直接内存访问,是一种不经过CPU而直接从内存了存取数据的数据交换模式。PIO模式下硬盘和内存之间的数据传输是由CPU来控制的;而在DMA模式下,CPU只须向DMA控制器下达指令,让DMA控制器来处理数的传送,数据传送完毕再把信息反馈给CPU,这样就很大程度上减轻了CPU资源占有率。
阅读全文 »

MySQL之explain

发表于 2019-08-05 分类于 Mysql 评论数:
本文字数: 29k 阅读时长 ≈ 26 分钟

分享主题

mysql explain查询计划

分享目标

  1. 掌握最左前缀原则
  2. 掌握explain查询计划显示索引是否被使用到
  3. 掌握如何正确使用索引,才不会引起索引失效

查看执行计划

介绍

MySQL 提供了一个 EXPLAIN 命令, 它可以对 SELECT 语句的执行计划进行分析, 并输出 SELECT 执行的详细信息, 以供开发人员针对性优化.使用explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。可以通过explain命令深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细节,以及当运行SQL语句时哪种策略预计会被优化器采用。

阅读全文 »

MySQL索引之谜

发表于 2019-08-05 分类于 Mysql 评论数:
本文字数: 5.9k 阅读时长 ≈ 5 分钟

分享主题

MSQL架构、索引介绍及原理

分享目标

  1. 理解MySQL架构组件及功能
  2. 理解MySQL执行流程
  3. 掌握MySQL中的表数据和索引在底层是如何被存储
  4. 掌握聚集索引(IOT索引组织表)和非聚集索引(堆组织表)的存储方式
  5. 掌握索引覆盖和回表概念
阅读全文 »

微服务注册中心 Eureka 架构深入解读(转载)

发表于 2019-07-20 更新于 2019-07-29 分类于 微服务 评论数:
本文字数: 5.9k 阅读时长 ≈ 5 分钟

微服务架构中最核心的部分是服务治理,服务治理最基础的组件是注册中心。随着微服务架构的发展,出现了很多微服务架构的解决方案,其中包括我们熟知的 Dubbo 和 Spring Cloud。

关于注册中心的解决方案,dubbo 支持了 Zookeeper、Redis、Multicast 和 Simple,官方推荐 Zookeeper。Spring Cloud 支持了 Zookeeper、Consul 和 Eureka,官方推荐 Eureka。

阅读全文 »

ArrayList与LinkedList

发表于 2019-07-20 更新于 2019-07-29 评论数:
本文字数: 977 阅读时长 ≈ 1 分钟

数组

以下是数组在内存中存储结构和扩容过程。

array数组长度为4,现在需要放入第五个值,需要先扩容,在后边找到能容下新数组长度的连续空间

阅读全文 »
12
辉

辉

做个靠谱的人
11 日志
5 分类
7 标签
RSS
GitHub E-Mail
Links
  • Keanu
0%
© 2019 辉 | 154k | 2:20