8 wangxiaoming

尚未进行身份认证

我要认证

博客是很好的总结和记录工具,如果有问题,来不及回复,关注微信公众号:程序员开发者社区,获取我的联系方式,向我提问,也可以给我发送邮件,联系 1275801617@qq.com

等级
TA的排名 2k+

数据库的存储结构

数据库的存储结构数据库的存储结构是怎样的?记录是按照行存储的,但是数据库的读取不是以行为单位,否则一次读取只能处理一行,效率很低。因此数据库,无论是读一行,还是读取多行,都是将这些行所在的页进行加载。数据管理存储空间的基本单位是页(Page)快速回顾一遍数据库存储结构:一页可以存储多个行记录(Row) ,先是表空间(Tablespace),表空间包含段(segement),还存在区(Extent),其关系如下图所示:段(Segment)段里面有多个区,区在文件系统是一个连续的分片空间,不过在段

2020-10-24 22:49:40

Java8 HashMap 源码分析

Java8 HashMap 源码分析JDK 1.6 1.7 HashMap 采用的是 数组+链表的形式, 每个桶对应不同的 hash 值,根据 key 计算得到的 hash,将键值对存放到对于的位置。hashMap 的键值都可以为 null ,每个桶又是链表的形式是存放的。但是当一个桶中链表的元素变多,通过 key 值依次查找的效率会变低,因此 HashMap 采用的是 桶+链表/红黑树的方式实现。 当链表长度超过 8 时,将链表转换为红黑树,大大减少查找时间。HashMap 结构底层实现Ha

2020-10-08 14:21:39

Java ArrayList 源码

Java ArrayList 源码ArrayList 概述ArrayList 是基于数组实现,是一个动态数组,容量可以自动增长,动态增加内存。ArrayList 不是线程安全的,只能用在单线程,多线程换成环境下可以考虑 Collections.synchronizedList(List l) 函数返回一个线程安全的 ArrayList 类,也可以在 concurrent 并发包下的 CopyOnWriteArrayList 类。ArrayList 实现了Serializable 接口,支持序列化传输

2020-10-04 21:01:43

Java String 源码分析

Java String 源码分析定义Java 8 中 String 源码public final class String implements java.io.Serializable, Comparable<String>, CharSequence {...}String 是final 类型不能被继承,同时实现了 java.io.serializable Comparable charSequence 三个接口。String类 官方的说法是:String 字符串常量

2020-10-02 12:43:13

HTTP SSL TCP TLS 说的啥

HTTP SSL TCP TLS 说的啥TCP 建立连接过程HTTPS 的连接建立过程HTTPS 是啥HTTP 是明文传输,意味着端到端之间的任意节点都知道内容是消息传输内容是啥,这些节点可以是 路由器,代理等。HTTPS 就是来解决这个问题的,以安全为目的的 HTTP 通道,全称是 Hyper Text Transfer ProtocolSSL TLS 是啥SSL (secure Sockets Layer 安全套接字)TLS(Transport Layer security,

2020-09-30 20:41:49

怎么给字符串加索引

怎么给字符串加索引比如说,要给邮箱这样的字段加索引,这样长字符串加索引会有什么样的问题?前缀索引,如果长度长,会浪费大量的空间,同时增加额外的查询成本。create table SUser(ID bigint unsigned primary key, email varchar (64)...)Engine=innodb;如果使用邮箱登录,这样会出现这样的语句:select f1 ,f2 from Suser Where emial='xxx';如果 email 不建索引,那么就

2020-09-20 10:37:35

Redis 为什么这么快?

Redis 为什么这么快?Redis 是 NoSQL 数据库,key-Value 数据库,键值数据库会使用 hash 表存储值和数据。 Redis 全称是 Remote Dictionary Server ,是用字典存储数据,也就是 key-value 类型的数据。Redis 查询效率很高,为什么这么快?Redis 采用的是 ANSI C 语言编写,采用 C 语言编写的好处是底层代码执行效率高。依赖性低,使用 C 语言开发的库没有太多运行时(Runtime)依赖,并且系统兼容性好,稳定性高。Re

2020-09-19 14:54:25

Kafka 原理简介

Kafka 原理简介Kafka 是一种高吞吐的分布式发布订阅的消息系统,可以处理消费者规模的网站中的动作流数据,具有高性能的,持久化,多副本,横向扩展能力。https://www.cnblogs.com/sujing/p/10960832.htmlKafka 的组成结构Kafka 的基础架构图:Producer Producer 生产者,消息的生产者。kafka clusterBroker : Broker 是 kafka 的实例,每个服务器有一个或者多个 Kafka实例。Kaf

2020-09-01 10:55:43

阿里巴巴开发手册为啥推荐: 若是 static 成员变量,必须考虑是否为 final ?

阿里巴巴开发手册为啥推荐: 若是 static 成员变量,必须考虑是否为 final ?18. 【推荐】final 可以声明类、成员变量、方法、以及本地变量,下列情况使用 final 关键字: 1. 不允许被继承的类,如:String 类。 2. 不允许修改引用的域对象,如:POJO 类的域变量。 3. 不允许被重写的方法,如:POJO 类的 setter 方法。 4. 不允许运行过程中重新赋值的局部变量。 5. 避免上下文重复使用一个变量,使用 final 描述可以强制重新定义一个变量

2020-08-19 09:54:53

康托展开公式与在全排列中应用

康托展开公式X=an*(n-1)!+an-1*(n-2)!+...+ai*(i-1)!+...+a2*1!+a1*0!怎样知道其中一种排列是有序序列中的第几个?康托展开. {1…n}的全排列由小到大有序,s[]为第几个数{1,2,3,4,…,n}的排列总共有n!种,将它们从小到大排序,怎样知道其中一种排列是有序序列中的第几个?如 {1,2,3} 按从小到大排列一共6个:123 132 213 231 312 321。想知道321是{1,2,3}中第几个大的数。这样考虑:第一位是3,小于3的

2020-08-18 15:38:24

LeetCode 5 题解

LeetCode 5 题解给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。示例 1:输入: "babad"输出: "bab"注意: "aba" 也是一个有效答案。示例 2:输入: "cbbd"输出: "bb"思路: 动态规划动态转移方程dp[i][j] = dp[i+1][j-1] && (s[i]==s[j])边界条件:当只有一个字符时候dp[i][i+0] = true当有两个字符时:dp[i][i+1] =(s[i

2020-08-17 11:17:48

Spring 是如何解决循环依赖的?

Spring 是如何解决循环依赖的?循环依赖:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传Spring 循环依赖有三种情况:构造器的循环依赖,这种依赖 Spring 无法处理,直接抛出 BeanCurrentlyInCreationException 异常单例模式下的 setter 循环依赖,可以通过三级缓存处理非单例循环依赖,无法处理,BeanCurrentlyInCreationException 异常构造器循环依赖正要创建的 bean 记录在缓存中,Spr

2020-08-13 00:35:43

面向对象、设计原则、设计模式、编程规范、重构

面向对象、设计原则、设计模式、编程规范、重构面向对象主流的三个编程风格有:面向对象,面向过程,函数式编程。面向对象是最主流的风格,面向对象具有丰富的特性(封装,抽象,继承,多态)。面向对象面向对象的4大特性:封装、继承,抽象、多态。面向对象编程与面向过程的区别和联系面向对象分析,面向对象设计、面向对象编程接口和抽象类的区别与各自的应用场景基于接口实现的编程的设计思想多个组合少用继承的设计思想多面向过程的贫血模型和面向对象的充血模型设计原则设计原则是指导我们代码设计的一些总结,设

2020-08-10 21:42:02

布隆过滤器

布隆过滤器布隆过滤器拥有极高的性能,无论是写入操作还是读取操作,时间复杂度是O(1)。在空间上相对于其他数据结构,有很大优势, 20亿的数据需要 2000000000bit/8/1024/1024 = 238 M ,如果使用数组来存储,假设每个用户 ID 占用 4个字节的空间,存储20亿用户需要 2000000000byte/4/8/1024/1024 = 7600M 的空间,是布隆过滤器的32倍。布隆过滤器(Bloom Filter)hash 函数布隆过滤器的缺点在判断元素是否在集合中

2020-08-01 11:44:26

缓存穿透了怎么办?

缓存穿透了怎么办?对应缓存来说,命中率是它的生命线。在缓存命中率低的情况下,大量查询请求会穿透缓存到数据库,因为数据库对于并发的承受能力有限,一旦数据库承受不了大量查询任务,就会导致查询变慢,导致大量的请求阻塞在数据库查询上,造成应用服务器的连接和线程资源被占满,最终导致系统崩溃。什么是缓存穿透缓存穿透,其实是指从缓存中没有找到数据,不得已查询数据库的情况。少量的缓存穿透没问题,主要由如下几点原因:一方面,缓存系统在容量上有限,不可能所有的数据都存储在缓存中另外一方面,互联网系统遵守 8/2

2020-07-30 22:12:31

接口和抽象的使用场景

接口和抽象的使用场景抽象和接口的区别总的来说,是抽象是为了代码复用,接口是为了解耦。抽象抽象类不允许被实例化,只能被基础,也就是说,不能 new 一个抽象类抽象类可以包含方法和属性,方法可以包含实现,也可以不实现。不实现的方法叫做抽象方法子类继承抽象,必须实现抽象类中的方法。接口接口不能包含属性接口只能声明方法,方法不能包含代码实现类实现接口的时候,必须实现接口中声明的所有方法。抽象类说明的是 is-a 的关系,接口表示的是一种 Has-a 的关系。抽象类和接口能解决什么问题

2020-07-22 23:49:14

深入理解数据库原理

GitChat 10个免费名额 ,先到先得!

2020-07-22 15:08:42

软件设计思想:池化技术

软件设计思想:池化技术先举个例子一种简单的架构:前端一台 Web 服务器运行业务代码,后端一台数据库服务器存储业务数据。系统上线时,用户量不大,运行平稳,但是随着流量的提升,系统访问速度会变慢。分析日志后,发现系统慢的原因是出现在系统库的交互上,因为数据调用的方式是首先获取数据库的连接,然后依靠这个连接,查询数据库的数据,最后释放数据库资源。为什么频繁创建连接响应会变慢?整个 MySQL 创建连接过程主要分成两个部分:第一部分是采用建立 TCP 连接。通过三次握手 建立 TCP 连接。

2020-07-21 00:00:05

什么是事务隔离

什么是事务隔离事务简单的来说是保证一组数据库操作,要么全部成功,要么全部失败。MySQL 中事务支持是在引擎实现的, MySQL 原生的 MyISAM 引擎不支持事务,这也是 MyISAM 被 InnoDB 引擎取代的重要原因。隔离性与隔离级别提到事务, 数据库为了保证事务,必须具备四个特性:ACID,原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)事务的四个特性原子性 (Atomicity)事务操作,要么全部做完

2020-07-19 12:27:54

系统设计:如何让系统高可用?

系统设计:如何让系统高可用?系统的高可用性是指系统具备较高的无故障运行的能力。很多开源组件中可以看到 HA 方案就是提升组件的可用性,让系统免于宕机无法服务的方案。举个例子, Hadoop 1.0 中 NameNode 是单点的,一旦发生故障则整个集群不可用,Hadoop 2.0 时 ,采用的是两个 NameNode. 一个状态是Active,一个状态是 Standy 状态,两者共享存储。一旦 Active NameNode 发生故障,Standy NameNode 切换成 Active 状态继续提供

2020-07-16 19:30:33

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 领英
    领英
    绑定领英第三方账户获取
  • GitHub
    GitHub
    绑定GitHub第三方账户获取
  • 签到新秀
    签到新秀
    累计签到获取,不积跬步,无以至千里,继续坚持!
  • 技术圈认证(专家版)
    技术圈认证(专家版)
    博客专家完成年度认证,即可获得
  • 新人勋章
    新人勋章
    用户发布第一条blink获赞超过3个即可获得
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 1024勋章
    1024勋章
    #1024程序员节#活动勋章,当日发布原创博客即可获得
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 博客之星-入围
    博客之星-入围
    授予每年博客之星评选结果第21-200名的用户
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。
  • 原力探索 · S
    原力探索 · S
    在《原力计划【第二季】》打卡挑战活动中,发布 12 篇原创文章参与活动的博主,即可获得此勋章。(本次活动结束后统一统计发放)