8 wangxiaoming

尚未进行身份认证

我要认证

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

等级
TA的排名 2k+

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

面向对象、设计原则、设计模式、编程规范、重构面向对象主流的三个编程风格有:面向对象,面向过程,函数式编程。面向对象是最主流的风格,面向对象具有丰富的特性(封装,抽象,继承,多态)。面向对象面向对象的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

系统设计:如何让系统容易扩展?

系统设计:如何让系统容易扩展?一个高可扩展性指标,表示可以通过增加机器的方式来线性提高系统的处理能力,从而承担更高的流量或者并发数。在单机系统中通过增加处理核心数来增加系统的并行处理能力,但是这个方法并不总生效,随着并行的任务增多,系统会因为争夺资源而达到性能上的拐点。系统性能会不升反降。多台机器组成的机器系统也类似,在集群系统中,不同的分层也存在一些瓶颈。制约横向扩展能力。举个例子,系统的流量是每秒1000次请求,对数据库请求也是 1000次/s ,单独如果流量增加10倍,系统可以扩容,正常提供服

2020-07-15 09:06:38

数据库原理: Change Buffer 是干什么的?

数据库原理: Change Buffer 是干什么的?redo log 主要节省的是随机写磁盘的 IO 消耗(转成顺序写),而 change buffer 主要节省的是随机读磁盘的IO消耗。实例:插入过程插入语句insert into t(id,k) values(id1,k1),(id2,k2);假设当前 k 索引树的状态,查找到位置后,K1 所在的数据页在内存(InnoDB buffer pool)中,K2 所在的数据页不在内存中。包含 几个部分:内存、redo log(ib_log

2020-07-12 11:44:14

公钥 私钥 签名 验签 说的啥?

公钥 私钥 签名 验签 说的啥?公钥加密,私钥解密 私钥签名,公钥验签散列算法散列算法,也叫做哈希函数,是从一个任何一种数据中创建小的数字方法,散列函数把消息或者数据压缩成摘要,有时候也叫做摘要算法。 把数据量变小,将数据的格式固定下来。常用的算法有:MD5 SHA1MD5MD5 不是一种加密算法,是一种摘要算法,无论多长的输入, MD5 都会输出长度为 128bits 的一个串。public static final byte[] computeMD5(byte[] content) {

2020-07-11 15:28:02

MySQL 普通索引和唯一索引该如何选择?

MySQL 普通索引和唯一索引该如何选择?普通索引和唯一索引在查询能力上没啥差别,主要考虑对更新性能的影响,要尽量选择普通索引。接下来分析两种索引在查询语句和更新语句对性能的影响。查询过程MySQL InnoDB 是采用 B+ 树实现其索引结构。B+ 树的查找过程如上图所示:现在需要查找 29 这个值。将磁盘块1从磁盘加载到内存,发生一次IO ,在内存中使用二分查找方式找到 29在17和35 之间,锁定磁盘块1的P2 指针。通过磁盘块1 的 P2 指针地址把磁盘块3 加载到内存,发生第二

2020-07-09 21:58:46

SQL 中的聚集函数?

SQL 中的聚集函数?SQL 函数包含了算术函数,字符串函数,日期函数,转换函数。还有一函数,叫做聚集函数。SQL 聚集函数是对一组数据进行汇总的函数,输入是一组数据的集合,输出是单个值。有哪些聚集函数SQL 中的聚集函数,有最大值,最小值,平均值。Count 使用例子:查询heros 中hp_max 大于6000 的英雄。SELECT COUNT(*) FROM heros WHERE hp_max > 6000运⾏结果为41。想要查询最⼤⽣命值⼤于6000,且有次要定位的英雄数量

2020-07-06 21:08:09

Java 中 Hashtable 、HashMap 、TreeMap 有什么不同?

Java 中 Hashtable 、HashMap 、TreeMap 有什么不同?HashTable 最早期的 Java 类库提供的一个 Hash表实现,本身是同步的,不支持 null 键和值,对同步有导致性能开销,很少被推荐使用。HashMap 是应该更加广泛的哈希表实现,行为上与 hashtable 一致,主要区别是 Hashmap 不是同步的,支持null 建和值。 HashMap 进行 put 或者 get 操作,可以达到常熟时间的性能,所以绝大多数场景都使用 HashMap。TreeMap

2020-07-05 16:00:16

数据库分类

数据库分类DB DBS DBMS区别是什么?DBMS 的英文全称是 DataBase Management System 数据库管理系统。DBMS = 多个数据库(DB) + 管理程序DB(DataBase)数据库,数据库是存储数据的集合。DBS 的英文是 DataBase System 数据库系统,包含了数据库,数据库管理系统+数据库管理人员(DBA)常见的 DBMS数据库分类关系型数据库(RDBMS)关系型数据库建立在关系模型的基础上,SQL就是关系型数据库的查询语言。非关系型数据

2020-07-04 13:47:55

数据库锁分类

数据库锁分类锁和索引是数据库两大核心概念,了解索引,可以从 B+ 树,Hash 索引,页结构,缓存池,索引原则等方面理解。理解锁,要从哪些方面入手?为什么要加锁加锁的目的,其实是为了保证数据的一致性。 当多个线程并发访问某个数据时,加锁,可以保证这个数据在任何时刻最多只有一个线程在访问,保证数据的完整性和一致性。锁的分类锁可以按照锁粒度划分,可以按照数据库管理角度划分。按照锁粒度划分按照锁粒度划分,可以将锁划分成 行锁,页锁和表锁。快速回忆一遍 InnoDB 存储引擎的逻辑结构:所有数据都被

2020-07-02 23:13:51

[DUBBO] disconnected from 问题

Dubbo [DUBBO] disconnected from 问题重启 Dubbo provider(生产者) 服务,出现如下异常日志:[INFO ] 2017-11-15 10:50:07,790--DubboServerHandler-10.255.242.97:20990-thread-517--[com.alibaba.dubbo.rpc.protocol.dubbo.DubboProtocol] [DUBBO] disconected from /10.255.242.96:11582,

2020-06-29 17:42:53

Java 异常处理机制

Java 异常处理机制Exception 和 Error 有什么区别?Exception 和Error 都是继承 Throwable 类,在 java 只有 Throwable 类型的实例才可以被抛出(throw)或者捕获(catch),它是异常处理机制的基本组成类型。Exception 和 Error 提现了 Java 平台设计者不同异常情况的类,Exception 在程序运行中,可预料的意外情况,并且可能被捕获,进行相应处理。Error 是指在正常情况下,不大可能出现的情况,可能是因为JVM自

2020-06-26 22:46:28

LeetCode 3 题解

LeetCode 3 题解滑动窗口的方式求解public class LeetCode3 { public int lengthOfLongestSubstring(String s) { if(s == null || "".equals(s)) return 0; char[] chars = s.toCharArray(); int i = 0; int j = 0; int len = chars

2020-06-26 12:58:48

Apacche Dubbo 反序列化漏洞

Apacche Dubbo 反序列化漏洞早在2019年开发者社区就有谈到这个 http 协议漏洞问题,近期360灵腾安全实验室判断漏洞等级为高,利用难度低,威胁程度高。 建议升级 dubbo 版本,避免遭受黑客攻击。漏洞描述Unsafe deserialization occurs within a Dubbo application which has HTTP remoting enabled. An attacker may submit a POST request with a Java

2020-06-25 23:40:38

查看更多

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