自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(35)
  • 收藏
  • 关注

原创 Python for Data Analysis 笔记

利用Python 进行数据分析 徐敬一 译。

2023-04-07 10:25:09 173

原创 Centos搭建Asterisk+Freepbx电话系统

搭建Asterisk+Freepbx

2023-02-13 22:24:25 1924 1

转载 Kafka(四)Kafka设计原理详解

Kafka设计原理详解

2022-10-07 19:50:18 175

原创 Kafka(三)Java操作Kafka

Java操作Kafka的两种方式

2022-10-07 19:43:23 192

原创 设计模式(一)

文章目录前言及工厂模式七大原则开闭原则单一职责原则依赖倒置原则接口隔离原则迪米特法则里式替换原则合成复用原则目标Spring 中用到的设计模式Spring 设计思路参考资料设计模式分类工厂模式简单工厂模式定义优化类图源码应用适用场景优点缺点工厂方法模式定义实现类图应用适用场景优点缺点抽象工厂模式定义产品等级结构与产品族需求实现类图适用场景优点缺点PoolDBConnectionPoolConManagerDataBaseCmd总结Spring作业单例模式课程目标定义为什么需要适用场景常见写法优点缺点饿汉式单

2022-03-12 18:15:39 209

原创 Redis(四)分布式锁

分布式锁这次我们来谈一下redis在分布式场景下的一个重要作用,那就是分布式锁。我们之前的单体架构中,实现锁可以用synchronized关键字,但是他只是针对本地jvm加锁,但是当分布式时,多台的机器提供同一个服务,在不同机器之间,是无法用synchronized进行加锁的,就会出现超卖问题。当然玩具分布式项目是很难出现超卖的,所以可以用jmeter来模拟高并发的场景,他的功能包括例如5秒内进行200次请求,可以设置持续压测,可以获得压测报告。有了jmeter之后,我们就能观察到超卖的问题出现了,接下来

2022-03-10 15:32:56 899

原创 Redis(三)集群架构和分布式寻址

集群架构,分布式寻址之前说了Redis的主从架构和哨兵架构,他们之间存在演进的过程,即哨兵解决了主从架构的主从无法切换的问题,但没有完全解决,会出现访问瞬断的问题,访问瞬断的原因就是我们把slaver变成master时,需要修改slaver的配置文件(zookeeper不需要改配置文件),且为了让配置文件生效,还必须要重启slaver,这需要很长的时间,而这个时间redis因为没有master,所以服务是停止的,用户的体验十分不好。除了这个问题外,哨兵模式还有一个很大的问题,那就是他的sentinel是一

2022-03-10 15:31:46 2670

原创 Redis(二)持久化和集群选举机制

持久化,主从,哨兵架构,内存淘汰机制这次来介绍redis持久化,主从,哨兵架构。对于持久化而言,除非是那种数据无关紧要,数据量少,说明是当纯内存在做缓存。其他情况下一般是开启持久化,因为如果不开启持久化,当redis宕机时,缓存被击穿,大量请求落到mysql上,mysql会撑不住的,redis的持久化方式分为三种,包括rdb,aof和混合模式。RDB所谓的rdb就是一个快照机制,是对redis中的数据执行周期性的持久化。可以在conf文件下设置多少秒内改动多少次数据会触发rdb快照机制,他会将内存中的

2022-03-10 15:30:52 662

原创 Redis(一)核心数据结构与高性能

核心数据结构,高性能先来说说redis的核心数据结构,总得来说,他是一个key.value类型,他的key是统一类型,但redis可以有很多不同的value,总的来说有string类型,hash类型,list类型,set类型和zset类型。他的这些类型都提供了操作的api。特殊的还有bitmap类型,String先来说string类型吧,他是我们最常用的类型,他的value就是普通的字符串类型,他提供的基本api有普通的set,get方法,还有批量操作的mset,mget方法,还有判空的setnx,还

2022-03-10 15:29:02 747

原创 Kafka(二)配置,offset维护,消息索引和选举

生产者配置首先我来说一下Kafka在Java代码中的配置,通过这些配置就能够更好得理解Kafka的原理。我们在使用是需要对Producer和Consumer添加Properties配置。对于Producer,最开始当然是我们要连接的Kafka的IP了,这个IP其实无所谓是否是自己今天的主题的那台,因为最终都是要找zk要topic的分区信息的,但在集群下,最好还是把所有IP都写进去,防止挂了。然后是设置消费者的ACK机制,他有4个选项,分别是0,1,-1,all。他的含义是等待几台Kafka将消息持久化完写

2022-03-09 16:15:34 457

原创 Kafka(一)概念,无状态和集群

概念首先来说一下Kafka的基本大概念,分别有Broker,Topic,Partition,Producer,Consumer,ConsumerGroup。最简单的是Broker和Producer,一个Kafka节点就是一个Broker,多个Broker可以组成集群。然后是Topic和Partition,Topic是一个逻辑概念,Topic名相同就认为是同一个Topic,不用管是不是在同一个Broker下,而Partition是真正存消息地方,可以认为是传统MQ中队列的概念,注意,只是存消息,而非Brok

2022-03-09 16:13:05 911

原创 Zookeeper(一)

关于Zookpper,他是一个管家一样的角色,起协调作用。我们先来说一下他的产生背景,当我们的单体架构转变到分布式架构的时候,多个服务之间是怎么协调的呢?这里的协调包括了服务的上线和宕机,应用如何知道多个服务的ip地址以及ip地址的实时更新?如何保证并发请求的幂等性?还有每天的定时任务分配给那一个结点来执行?RPC远程调用的时候,怎么样发现服务的ip?这些都是Zookeeper要解决的问题。Zookeeper可以实现的功能包括了分布式配置,分布式锁,分布式服务发现,心跳检测等等,在实现这些之前,我们先来说

2022-03-08 15:57:24 1935

原创 Netty(二)核心组件与使用

前言上一次只是知道了BIO到NIO和AIO。他们有一个共同的缺点就是代码量太大了,而且NIO提供的那个ByteBuffer有很多BUG,并且开发工作量大,很多问题都要自己处理,比如客户端面临断连重连,网络闪断心跳处理,半包读写,网路拥塞和异常流的处理等等。所以现在的网络开发主要使用的是netty,他其实和AIO一样,是对NIO的API的封装,但他的性能很高,源自于他的线程模型很优秀。Netty的应用场景很多,包括作为RPC框架的网络通信工具,即时通讯系统,消息推送系统。Netty核心组件先来说一下Ne

2022-03-06 16:13:14 269

原创 Netty原理(一)BIO,NIO,AIO

同步和异步Java提供了三种IO模型,分别是BIO,NIO和AIO。所谓的IO就是选择用什么样的通道进行数据的收发。在这三种IO之前需要弄清楚阻塞和异步的概念。阻塞和异步描述的对象是不一样的,前者描述的是一行代码,后者描述的是多行代码。阻塞就是某行代码的特性,核心是等不等待这行代码执行完,显然如果等待则必然是同步,而不等待不一定是异步。异步就是描述多行代码的执行顺序,核心是按不按顺序来执行这多行代码,按顺序则是前面代码执行完再执行接下来的代码,而不按顺序是不管前面任务是否执行完,都走接下来的代码,当前面执

2022-03-06 15:53:49 757

原创 计算机网络(六)物理层_数据链路层

物理层,数据链路层首先来说一种情况,就是不同网段主机进行第一次通信时,第一个包会丢失,ping出25%的丢包率,原因就在于第一次通信时Router接收到ICMP的包后,找不到目的MAC,所以会丢包转而是发ARP去找MAC地址,所以此包会丢。接下来说说物理层,物理层没啥别的,就是定义了接口和线缆标准,需要提一嘴的是局域网和广域网的通信模型的不同,后者因为距离长,会涉及到不同的传输介质,从而信号可能是模拟信号,也可能是数字信号,也可能是光信号,从而需要调制解调器和光线转换器。物理层上是有信道的,所谓的信道就是

2021-03-16 14:23:49 326

原创 计算机网络(五)局域网,NAT

局域网,NAT局域网就是LAN,而无线局域网就是WLAN,是范围比较小的计算机网络,常用于公司,家庭,学校,医院,机关等等。如果我们平时想要上网,有三种方式,分别是电话线入户,光纤入户,网线入户。首先来说电话线入户,他就是我们平时说的电话拨号上网,用到的是路由器加猫,也就是调制解调器。路由器的LAN口连接电脑,路由器的WAN广域网口连接猫的网线接口,猫的电话线口连接电话线。猫是用来进行数字信号和模拟信号的转换,往往是打电话就上不了网,他提供的是非对称数字用户线路,提供上下行不对称的传输带宽,下载快,上传慢

2021-03-16 14:22:59 498

原创 计算机网络(四)超网_静态路由

超网,静态路由既然有了网络的拆分,那么必然有网络的合并,那就是超网,超网就是把两个网络不同的部分变成主机位,相同的部分变成网络位,重写定义子网掩码。那么如何判断一个网段是子网还是超网呢?可以通过网络的类型得到默认子网掩码,如果该网段的子网掩码比默认的长,则是子网,反之是超网。既然有了子网掩码,那么就不能单凭IP地址就来决定局域网了,也就是说如果子网掩码不同,即使算出来的网络号相同,也是无法ping通的,因为算目标IP时用的是本地的子网掩码,此时也是要依靠路由器的,所以路由器不光是不同网段要用,而且同网段不

2021-03-16 14:21:57 535

原创 计算机网络(三) MAC地址_IP地址_子网掩码

MAC地址,IP地址,子网掩码这次来说两个地址,MAC地址和IP地址。每个网卡都有一个6字节的MAC地址,全球唯一固定在网卡的ROM中,也叫物理地址,前三字节是厂商好,后三字节厂商自己分配。虽然固件的MAC唯一,但是操作系统可以不同此MAC,而可以自己编一个,改MAC可以蹭网,但是两个相同的MAC不能同时上网。主机获取MAC后,会缓存IP地址和MAC地址之间的映射信息,俗称ARP缓存,但换网卡会过期,超时也会过期。与一台PC有多个MAC地址不同,每台PC只能由一个IP地址,IP地址分为网络位和主机位。对于

2021-03-16 14:20:40 516

原创 计算机网络(二)集线器_网桥交换机_路由器

集线器,网桥,交换机,路由器这节课说一下计算机之间的连接方式,从初级到高级分别是交叉线网线直连,同轴电缆,集线器,网桥,交换机,路由器。所谓的网线直连是最简单的,直接用交叉线而非直通线来连接两台计算机,但只能连接两台计算机。当有多台计算机想要相连时,就要用到同轴电缆了,用一根主电缆连着多台计算机,坏处在于半双工通信,容易冲突,不安全,中间断开则整个瘫痪。所谓的半双工通信就是一个通道在同一时间内只允许向一边发送数据,比如对讲机,也就是容易冲突,而且同轴电缆没有智商,信号到处钻,每个PC都能收到,只不过会因为

2021-03-16 14:19:47 426

原创 计算机网络(一)基本概念

基本概念首先先几个面试题,说一下TCP和UDP的区别?说一下他们的报文格式?TCP的流量控制和拥塞控制?TCP如何实现可靠性传输?为什么连接是3次握手关闭是4次挥手?7层模型与4层模型的区别?每一层的作用是什么?5层呢?交换机与路由器的区别?所谓的协议就是约束,目的是减少沟通成本。总体上来说网络的分层有3种,一是OSI参考模型7层,是最细的一层,从上到下分别是应用层表示层会话层运输层网络层数据链路层物理层,二是TCP/IP协议层4层,从上到下分别是应用层传输层网络层网络接口次,三是最常用的用于学术的5层模

2021-03-16 14:17:33 55

原创 垃圾回收算法和垃圾回收器

知道了什么是垃圾对象,垃圾对象满足怎样的条件会进入老年代。现在说说垃圾对象是在几个区之间流转的具体算法,这就是垃圾回收算法和实现他的垃圾收集器。对于他采用的是分代收集机制,也就是说,年轻代和老年代用的垃圾收集算法可以不一样。大致上来说,年轻代的活对象少,适合用复制算法,老年代对象大,而且需要大量的连续空间,所以用的是标记整理算法。先来说最基础的标记清除算法,他是最基础得垃圾回收算法。他分为标记和清除两个阶段,所谓的标记就是标记需要清除得对象,然后一次性清除,很显然,他不适合年轻代,因为要标记的次数太多,而

2021-03-16 14:15:32 79

原创 JVM垃圾收集原则和调优

关于JVM的垃圾收集,首先应该明白对象在堆中的几个原则,之前说的那些是最基本的情况,现在来说的是特殊情况,有时产生莫名其妙的fullgc可能就是源于他们,弄清楚他们才能避免意料之外的fullgc。第一个原则是最基础的,对象优先会在eden区分配,当然会有特殊情况,比如大对象,比如逃逸分析,后面再展开说,因为这个原则,我们需要让年轻代尽可能得大,而老年代够用就行。第二个原则是有的对象会在一次gc后就进入老年代,原因就在于Eden区往往比from区和to区大很多,就会出现Eden区发生minorgc后对象比fr

2021-03-16 14:14:35 164

原创 白话JVM(二)内存区域

关于JVM的内存区域,按线程私有/共享分为:线程私有的栈,程序计数器,本地方法栈。线程共享的堆和方法区。其中方法区在1.8之后叫做元空间。先从简单的说起吧,栈时每个线程都有的,比如,main方法就会起一个主线程栈,或者,用Java提供的API,也会创建一个线程栈。线程栈内保存基本数据类型的变量和自定对象的引用而非实例,当然也有可能是逃逸分析后的实例。线程栈中还有更复杂的结构,他就是栈帧,每一个方法对应一个栈帧。总得来说线程栈是一个FIFO先入先出的结构,每当有线程调用一个方法时,就会压入一个栈帧,执行完的

2021-03-16 14:12:52 103 1

原创 白话JVM(一)整体介绍

提到JVM,先从大致上分为三个部分,即类加载子系统,内存区域,字节码执行引擎。先来说类加载子系统。类加载子系统的作用就是把java文件翻译成字节码文件,再加载到内存区域中去,且如果不使用则不加载,使用时才加载,所谓的使用是指main和new这两个关键字。其过程分为5个步骤,即加载,检查,准备,解析,初始化。其中,加载是指从硬盘中找到.java文件,将其翻译成二进制字节码文件。检查是指检查.class文件是否被修改,是否符合jvm指令的词法,语法。我打开过.class文件,发现里面都是4个组成的字符,他是能

2021-03-16 14:11:46 82

原创 HashMap白话总结

文章目录HashMapHashCodeHashCode面试题HashCode作用链表红黑树基础参数参数原因(1.7)HashMap7缺点loadFactor阈值8转红黑树总结1补充1需求实现问题扰动函数初始化容量负载因子扩容方法补充2ConcurrentHashMapHashMap底层数据结构:数组+链表+红黑树(1.8才加入红黑树)Hash表=数组+线性链表+红黑树为什么用这些?:用数组来存取,在底层效率最高优先使用数组的,有数组就够了他优势在索引下标,找到要取的元素,时间复杂度O(

2020-12-07 23:43:47 83

原创 并发笔记

JMM&volatile现代计算机理论模型与工作原理什么是线程为什么用并发,并发产生的问题JMMvolatile计算机理论模型重点是运算器,(内)存储器,控制器。CPU->存储器缓存的必要性:IO总线太难了,每一个设备都需要用,靠不住寄存器>L1>L2>L3>内存条缓存绑定在CPU上,不用IO总线,其中L1甚至内嵌在CPU中CPU和内存其实操作的都是缓存。且L3不会立即同步到内存中,而是当L3满了之后,用FIFO的原则进行同步。想要强制

2020-12-07 23:41:07 113

原创 MySQL索引原理

文章目录MySQL索引数据结构索引数据结构B树B+树Hash表B+树优化存储引擎MyISAMInnoDB主键索引非主键索引联合索引总结ExplainExplain关键字段MySQL索引数据结构内容:索引数据结构:红黑树,B树,B+树,Hash表索引是怎么支撑千万级表的快速查找面试常问B+树索引面试题解析联合索引底层数据结构是怎样的索引数据结构二叉树,红黑树,B树,B+树,Hash表本质是帮助MySQL高效获取数据的排好序的数据结构大概是书的目录,但不够详细无索引时,查找是从上往下

2020-12-07 23:39:54 137

原创 JVM双亲委派和垃圾收集

文章目录类加载机制加载类加载器双亲委派机制打破双亲委派总结1JVM整体结构程序计数器字节码执行引擎栈栈帧栈大小方法区本地方法栈堆JVM参数设置调优总结2垃圾收集机制逃逸分析JVM垃圾收集算法如何判断对象可被回收引用类型如何判断类可被回收finalize方法总结(待)垃圾回收算法/收集器垃圾回收算法标记清除算法复制算法标记整理算法分代收集算法垃圾收集器Serial收集器ParNew收集器Parallel Scavenge收集器CMS收集器G1收集器实战调优(缺)类加载机制JVM是有3部分组成的:把类运行起

2020-12-07 23:38:42 160

原创 linux笔记

桥接模式:会遇到ip不够用(只有255-2个)不安全,同一网段的都能访问NAT网络转换模式:不会和主机在同一个网段,所以安全但可以通主机(产生了虚拟网卡)仅主机模式网络无法上网万物皆文件ext4理论无限创建文件切换用户 su -lewis查看当前所在目录 pwd文件目录[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UeUzakzw-1589472575984)(D:\文件_Typora\158927..

2020-05-15 00:12:10 127

原创 DQL 数据查询语言

DQL 数据查询语言select 查询查询多列select 列1,列2 from 表;查询全部列select * from 表;where子句where+ 条件SELECT * FROM student WHERE c_number<>1; SELECT * FROM student WHERE c_number BETWEEN 2 AND 3; # 查询2班 3...

2019-09-22 16:30:58 101

原创 算法:求最大公倍数和走迷宫

#include <iostream>#include <string>#include <vector>#include <queue>#include <utility>#include <cstdio>using namespace std;const int MAX_N = 100;const int ...

2019-09-21 16:19:22 300

原创 数据库数据完整性

为了保证在操作的始画数据库中的数据能够正确反映实情况,在表中会对数据做一些约束实体完整性如:一条学生信息必须包含学号(不可缺少)域完整性 名字 123 类型限制 取值范围限制 年龄0~150引用完整性 不能引用不存在的引用 不能插入一个不存在班级的同学自定义完整性 自己的规则1,非空约束 not null值不能为null 1,创建表的时候添加非空约束 INS...

2019-09-21 15:59:13 210

原创 DDL,DML和数据类型

数据库DDLData Definition Language 数据定义语言用来定义和管理数据对象(数据库中的对象包括 数据库,表,函数胡,索引等)创建库Create datebase +库名; 已存在的库会报错改善:CREATE DATABASE IF NOT EXISTS 库名;字符集的设置CREATE DATABASE IF NOT EXISTS 库名 CHARSE...

2019-09-21 15:55:16 265

原创 数据库设计步骤

设计步骤重点了解设计的步骤了解E-R图和范式对于文件 可以访问 效率不高 文件被访问 被占用数据库1. 需求分析从上往下 思考 需要做什么事情 用户需求# 需要查询学生需要查询教室需要知道班主任是谁....存放哪些重要数据 主体 学生 课程 教师 学生 (学号 名字 性别 出生日期 年龄 家庭住址...) 课程( ) ...

2019-09-21 15:47:34 125

原创 数据库基础

数据库基础基本概念数据库 存储 数据 仓库 Data Base --DBMySQL 开源免费 使用方便Sql Sever 微软 比较适合web存放 windows系统Oracle 收费,使用比较广泛数据库之一DB2 IBM适合处理海量数据SQL语言 数据化查询语言 绝大部分数据库系统支持安装过程下载连接 https://dev.mysql.com/downloads...

2019-09-21 15:46:01 81

空空如也

空空如也

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

TA关注的人

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