自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 浏览器的访问过程

访问网站流程:B站up主视频链接 在浏览器输入域名时,浏览器首先连接DNS服务器,获取到该域名的IP地址后,浏览器再连接该IP的服务器。 使用应用层的HTTP协议获取指定的文本,转换成数据包,通过应用层进入传输控制层,每个数据包都会分配一个端口号,端口号用来确定目标计算机的哪一个应用进程来接受并使用该数据包。 进入IP层后,每个数据包将会赋予目标计算机的IP地址,链路层将数据包的文本信息转换成电子信号, 然后通过电缆(媒介)传输,电缆的另...

2020-10-31 22:50:19 590

原创 服务器中的性能指标解释

速率:数据在每秒传输比特的多少 1kb/s 1MB/s带宽:网络的通信线路传输数据的能力,通常指的是单位时间内从网络中某一点到另一点所能通过的 “最高数据率”,也就是在单位时间内传输的数据更多吞吐量:单位时间内通过某个网络或接口的数据量 吞吐量受网络的带宽和网络额定速率的限制时延:指数据从网络的一段传送到另一端所需的时间。也叫延迟传播时延:电磁波在信道上传播一定距离所花费的时间时延带宽积: = 传播时延 * 带宽。也用来描述链路上的 容量往返时延(RTT...

2020-10-31 00:16:06 412

原创 设计模式

1.单例模式:全局唯一 确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例 要求这个类的构造方法不能是公开的,即不能够外界实例化,并且拥有一个当前类的静态成员变量饿汉式:在类加载的时候就进行实例化懒汉式:在第一次调用的时候实例化2.简单工厂模式(静态工厂方法模式) 属于类创建模式,在简单工厂模式中可以根据参数的不同返回返回不同类的实例,简单工厂模式专门定义一个类来负责创建其他类的实例。被创建的实例通常都具有共同的父类优点:对象的创建和使用分离缺点:不够...

2020-10-30 19:28:29 187

原创 计算机体系结构和内存分布

计算机体系结构示意图:内存结构和访问速度

2020-10-29 09:49:55 481

原创 操作系统简介

操作系统内部组件1.CPU 调度器2.物理内存管理3.文件系统管理4.中断处理与设备驱动操作系统内核特征1.并发:在一段时间中,多个程序可以运行2.并行:在一个时间点上,多个程序同时执行(需要多个CPU)3.共享:同时访问4.虚拟:利用多管道程序设计技术5.异步:并不是一个程序执行到底,而是可能中断,去执行其他程序,最终的结果相同...

2020-10-29 08:16:00 164

原创 TCP分段和IP分片

TCP报文段如果很长的话,会在发送时发生分段,在接受时进行重组 同样IP数据报在长度超过一定值时也会发生分片,在接收端再将分片重组MTU(最大传输单元) MTU,是链路层中的网络对数据帧的一个限制,以太网为例。MTU为1500个字节。一个IP数据报在以太网中 传输,假设它的长度大于该MTU值,就要进行分片传输,使得每片数据报的长度小于MTU。MSS(最大分段大小) MSS是TCP里的一个概念(首部的选项字段中)。MSS是T...

2020-10-27 15:55:00 937

原创 IO五大模型

IO:Input, output本地IO网络IOIO过程 等待,数据传输(1)阻塞型IO单机版: scanf cin 等待输入,然后输出网络版(2)非阻塞型IO频繁轮询,查看是否有输入,没有的话,做其他的事,有输入的话再输出(3)信号驱动型IO先建立信号和处理程序,当收到信号,立刻处理程序(4)IO多路复用同时监控多个通道...

2020-10-27 00:23:33 234

原创 字节序

字节序: 字节序是指多字节数据在计算机内存中存储或者网络传输时各字节的存储顺序。存储数据的方式: (1) 大端字节序:高位字节在前,低位字节在后 (2)小端字节序:低位字节在后,高位字节在前...

2020-10-26 23:15:34 215

原创 哈希冲突和解决办法

哈希冲突 哈希是对数据压缩,提高效率的一种方法。 但通过哈希函数产生的哈希值是有限的,而数据可能比较多,导致哈希处理后仍然有不同数据产生相同的值,这就是哈希冲突解决哈希冲突的方法1.开放地址法 (1)线性探测 按顺序往后探测,如果某数据值存在,就在当前位置向后加一,直至不发生冲突 (2)再平方探测   按顺序决定值时,如果某数据的值已经存在,则在原来值的基础上先加1的平方个单位,若仍然存在则减1的平方个单位。随...

2020-10-26 22:27:33 461

原创 Redis如何处理过期数据 和 内存不够用怎么办?

为什么处理过期数据? 如果一直不处理,那么Redis占用内存会一直增加,损耗服务器性能处理方法 惰性删除 :当访问键值时,再检查当前的数据是否过期,如果过期则执行删除并返回 null,如果没有过期则正常 返回值信息给客户端 优点:不需要对过期数据进行额外处理 缺点:删除过期不及时,会造成一定空间浪费 定期删除 : Redis会周期醒的随机测试一批设置了过期时间的键值, 测试到已过期的key将被删除...

2020-10-23 17:29:00 550

原创 Redis中的hashtable底层数据结构

SDS(简单动态字符串类型)文件源码:sds.hstruct __attribute__ ((__packed__)) sdshdr5 { unsigned char flags; /* 3 lsb of type, and 5 msb of string length */ // 类型 char buf[]; // 实际存储数据};struct __attribute__ ((__packed__)) sdshdr8 { uint8_t len; /.

2020-10-23 09:35:50 1587

原创 PHP之单线程和多进程的理解(CGI,FastCGI,php-cgi,php-fpm)

先说结论:PHP单进程(不是单进程的话,面试官说的)PHP是单进程,为何有人说PHP多进程,PHP处理多并发主要是依赖服务器或PHP-FPM的多进程及它们进程的复用,

2020-10-22 11:34:54 1163

原创 Redis处理实际问题

现在系统有千万级的活跃用户,如何实现日活跃量统计?为了增强用户粘性,上线一个连续打卡,发放积分的功能,怎么实现连续打卡用户统计

2020-10-21 21:41:56 116

原创 瑛太莱PHP岗面试

一面: 介绍项目 都学习过什么语言,我说PHP和C++, PHP底层是C/C++写的。 那么让你用C++实现一下PHP中的数组,你会怎么实现? 由于PHP数组可以左边删除,左边插入,右边删除,右边插入,那么应该是个双向队列 那么让你用C++实现一下PHP中的key-value结构,你怎么实现? ........PHP是否需要编译? 我说需要交给zend引擎编译。(其实脚本之类的并不需要编译)了解PHP垃圾回收机制吗?PHP的循环引用...

2020-10-21 08:16:05 917 2

原创 MySQL表优化

优化MySQL的方式(1)读写分离,主数据库负责写,多个从数据库负责读(2)限制查询。每条sql语句需要加限制条件,避免全表扫描(3)使用MySQL缓存(针对更新少,查询多,重量级的数据表)(4)垂直分区:将一个数据表拆分成多个数据表(对字段进行拆分) 优点:可以使得行数据变小,在查询时减少读取的Block数,减少I/O次数。此外,垂直分区可以简化表的结构,易于维护。 缺点:主键会出现冗余,需要管理冗余列,并会引起Join操作,可以通过在应用层进行Joi...

2020-10-20 23:57:50 672

原创 cookie和session

会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话。确定用户身份常用的会话跟踪技术是Cookie与Session。Cookie通过在客户端记录信息确定用户身份,Session通过在服务器端记录信息确定用户身份。什么是cookie? Cookie实际上是一小段的文本信息。客户端请求服务器,如果服务器需要记录该用户状态,就使用response向客户端浏览器颁发一个Cookie。客户端浏览器会把Cookie保存起来。当浏览器再请求该网站时,浏览器把请求的网...

2020-10-20 22:22:39 103

原创 MySQL外键

外键的使用条件:1.两个表必须是InnoDB表,MyISAM表暂时不支持外键(据说以后的版本有可能支持,但至少目前不支持);2.外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立;3.外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;在外键表中,如果关联了主键,那么需要删除外键表.

2020-10-20 22:05:20 98

原创 TCP协议之 长连接和短连接

HTTP1.0 默认为 短连接HTTP1.1 默认为 长连接而长短连接是针对TCP连接的,因为只有发送数据时,才需要进行连接长连接: 在第一次请求成功后,持续保持对方的连接优点: 长连接可以省去较多的TCP建立和关闭的操作,减少浪费,节约时间。 对于频繁请求资源的客户来说,较适用长连接 缺点: client与server之间的连接如果一直不关闭的话,会存在一个问题, 随着客户端连接越来越多,server早晚有扛不住的时候,这时候server端需要采...

2020-10-18 16:47:45 312

原创 数组和链表的对比

数组: 优点: 元素在内存中连续存储,查找效率高。 缺点: 在存储之前,需要预先申请内存空间。 在运行过程中,无法动态申请空间。如果数据量小,造成内存浪费。如果数据量大,造成内存溢出 在修改和删除操作时,效率低 应用场景: 数据量可控。偏向查询操作。构建线性表稳定链表: 优点: 内存动态分配。 数据类型多样化 修改和删除操作灵活 ...

2020-10-17 17:40:03 96

原创 Go语言字符串

字符串中中文占3个字节字符串底层是个数组,也可以进行切片处理string本身不可变,不能通过下标来修改如果需要修改,需要先将字符串改为切片再修改,然后改回字符串package mainimport ( "fmt")func main() { str := "helloworld" arr := []byte(str) // 处理英文和数字,如果有汉字,需要将byte改为rune arr[0] = 'A' str = string(arr) fmt.Println(st.

2020-10-16 00:31:59 100

原创 Go语言切片操作

1.slice 是一个引用类型,也是一个结构体两种方法创建(1)直接引用存在的数组,(2)make是创建的数组,由切片在底层维护2.append底层操作slice append底层操作: (1)先创建一个新数组,进行扩容,初始化为默认值(2)不能在先前的数组上操作,将之前切片的值复制过来。(3)如果将append之后的返回值赋值给之前的变量,那么指针指向新的地址,之前的切片将会被当成垃圾进行回收(4)否则,两个内存共存。package mainimpo...

2020-10-16 00:05:43 139

原创 LeetCode 1590. 使数组和能被 P 整除

题目链接:LeetCode 1590. 使数组和能被 P 整除题意:给你一个正整数数组nums,请你移除最短子数组(可以为空),使得剩余元素的和能被p整除。不允许将整个数组都移除。请你返回你需要移除的最短子数组的长度,如果无法满足题目要求,返回-1。子数组定义为原数组中连续的一组元素。解题思路: 用到取余的思想const int maxn = 1e5+5;class Solution {private: long long pre...

2020-10-11 19:22:22 356

原创 MySQL锁机制

Mysql中的锁可以分为共享锁/读锁(Shared Locks)、排他锁/写锁(Exclusive Locks)、间隙锁、行锁(Record Locks)、表锁。从操作上来说分为:共享锁/读锁 , 排它锁/写锁,从粒度上来说分为:行锁, 表锁...

2020-10-09 22:09:09 183

原创 MySQL事务实际操作之深度理解 事务隔离级别

既然前面已经学了MySQL的事务,这篇文章就来进行实际的操作首先的首先:对于MySQL 中的MyISAM引擎是不支持事务的。所以一切事务操作要对应InnoDB引擎新建一个user表进行测试 : 注意设置默认引擎为 InnoDBcreate table user( id int auto_increment, username varchar(10), password varchar(10), primary key (id) )ENGINE=I..

2020-10-09 17:47:00 177 1

原创 PHP中的COW机制

COW机制(copy-on-write)是一种内存优化手段,在php中也采用了这种方式来优化内存。COW:写时复制,即只有当对其中一个或多个普通变量进行写操作的时候,才会复制一份内存,对其内容进行修改。普通变量:就是除了数组和对象之外的变量<?phpecho '程序开始时内存的使用情况:';var_dump(memory_get_usage());//定义一个变量a$a = range(0, 9);echo '定义变量a后内存的使用情况:';var_dump(memor.

2020-10-08 21:03:33 284

原创 PHP 的调试Xdebug下载

新建php文件测试 phpinfo 是否存在xdebug扩展如果不存在,那么需要安装php的xdebug扩展安装网址 :Xdebug官网这里面会有指示如何操作重启web服务器,然后查看phpinfo 中已经出现xdebug

2020-10-08 19:58:46 203

原创 MySQL的四种事务隔离级别

事务的四大特性1.原子性:即一个事务是一个整体,不可分割。2.一致性:事务在开始和结束后,能保证数据库完整性约束的正确性即数据的完整性。3.隔离性:事务之间完全隔离。不能同一时间操作同一数据表4.持久性:一旦事务完成,无法回滚,对数据操作是永久性的事务的并发问题1.脏读:一个事务读取另一个事务还没有提交的数据称为脏读。也就是B事务还没有提交,A事务已经读取B修改的数据。如果B事务因为某种原因造成回滚,那么A读取的数据完全无效2.不可...

2020-10-07 17:21:21 364 2

原创 Redis持久化

什么是持久化? 持久化就是将数据从容易丢失的内存同步到能够永久存储的设备上的过程Redis为何需要持久化? 由于 Redis做中间缓存,将数据存储在内存中容易丢失(服务器异常宕机,停电,redis服务异常停止)。造成数据丢失。如果将数据备份保存在磁盘上,那么可以快速将数据恢复到redis中Redis的两种持久化方法: 1.RDB(Redis Database)持久化 RDB持久化是指在指定的时间间隔内将内存中的数据集快照写入磁盘,实际操作过程是fork一个子...

2020-10-06 21:01:26 189

原创 Redis优化

Pipeline:(管道,通道) redis执行一次命令需要 1次网络时间 + 1次命令时间执行 n 次命令需要 n次网络时间 + n 次命令时间由于命令时间非常短,影响时间开销的主要是网络时间,所以我们可以把一组命令打包,然后一次发送过去1 次 pipeline(n条命令) = 1 次网络时间 + n 次命令时间可以看出pipeline可以大大减少网络时间注意事项: 1.不能携带大量信息,容易对网络及客户端造成很大影响,使效果适得其反 2.pi...

2020-10-06 19:30:25 173

原创 Redis之有序集合

sorted set 类型1.zadd :添加2.zscore: 查看某个值的分数3.zrange : key start end withscores 按照分数排序

2020-10-06 18:06:35 254

原创 Redis之集合类型

set操作命令【无序,不重复】1.sadd:set中加入元素2.srem:set中删除指定元素3.scard :查看set集合长度4.sismember: 查看指定元素是否存在5.smembers : 查看某个集合的所有元素6.spop:随机推出一个元素集合间操作1.sdiff 差集2.sinter 并集3.sunion 交集...

2020-10-06 17:54:10 250

原创 Redis之列表类型

list操作命令(可以往list中添加相同元素)1.lpush: 往list最左边添加元素2.rpush:往list最右边添加元素3.lpop:推出最左边的元素4.rpop:推出最右边元素5.llen:查看list长度6.linsert key before value newValue: 在list指定的值前插入newValue7.linsert key after value newValue: 在list指定的值后插入newValue...

2020-10-06 17:47:14 141

原创 Redis之哈希类型

哈希类型类似一个对象 key相当于对象 field相当于属性 value相当于值操作hash命令1.hget key field: 获取hash key对应的field的value 2.hset key field value :设置hash key对应的field的value3.hdel key field: 删除hash key对应的field的value4.hgetall key : 获取key的所有 field5.hexists key fiel...

2020-10-06 17:35:03 222

原创 Redis之字符串类型

Redis字符串的数据结构字符串的实现代码在sds.c和sds.h文件中。SDS:简单动态字符串在Redis之前的版本中,是如下存储字符串的/* * 类型别名,用于指向 sdshdr 的 buf 属性 */typedef char *sds;/* * 保存字符串对象的结构 */struct sdshdr { int len; // buf 中已占用空间的长度 int free; // buf 中剩余可用空间的长度 c

2020-10-06 16:08:30 225

空空如也

空空如也

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

TA关注的人

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