Pistachio's Blog

Later equals never.

GC算法

一、背景知识 bbs数据段:全局变量、静态数据 函数栈帧(栈):函数的局部变量、参数、返回值。栈是系统自动分配空间的,例如定义一个var a string;系统会自动在栈上为其开辟空间。 堆:函数内部动态分配的内存,由程序员申请分配和释放。在编译阶段不能确定数据对象的大小、或者对象的生命周期超出了当前所在函数,则不适合分配在栈上,要分配在堆。 分配在堆上的数据需要程序主动释放才可以重新使用......

channel

一、定义Channel 是 goroutine 之间的通信方式,Go语言的并发模型是CSP(Communicating Sequential Processes),提倡通信来共享内存,而不是共享内存来通信。 gorotine由 runtime来管理 二、创建创建有缓冲的缓存 1ch := make(chan int, 2) //创建channel,类型为char, buffer大小是2 ......

Redis持久化机制

Redis除了可以保存在内存中,但是内存的数据容易丢失,因此有两种持久化策略:快照RDB(Redis Database Backup file)和追加式文件AOF机制(Append Only File)。  RDB机制(默认)定义在指定的时间间隔内将内存中的数据集以快照文件的形式写入磁盘。当Redis实例故障重启后,从磁盘读取快照文件,恢复数据。默认使用这种方式。 工作原理 Redis调用f......

解决系统并发问题

前言之前开发了办公室预约系统,功能上基本实现了,现在需要提升性能问题,比如考虑并发情况,在多个人同时预约的时候,怎样解决并发问题呢?其实本质是要对事务上锁。 1. 在MySQL方面提升MySQL的性能分析 MySQL Query Optimizer(自带的优化器) MySQL常见的瓶颈 CPU饱和:通常发生在数据装入内存或者从磁盘中读数据 磁盘IO饱和:载入的数据远大于内存的容量 服务器性......

C++常用函数

1、string substr(int pos, int len) 从第pos开始,截取长度为len的字符串 2、随机函数 1rand() % n // 表示随机返回[0 ~ n-1] 的数 LC384. 打乱数组 ...

对RESTful_API的理解

RESTful API的理解REST表示Representational State Transfer(表现状态转移),是一种设计风格,加ful转成形容词,以形容这种设计规范的API,故为RESTful API 1.资源与URI任何事物都是资源,要想事物被唯一识别,在web中设置了URI。URI既可以看成是资源的地址,也可以看成是资源的名称。在实际开发中,资源可理解为数据库中的数据。 URI......

PHP几个判断变量为空的函数

isset()、is_null()、empty()isset()判断变量一个变量是否设置,变量存在返回true,不存在则返回false 12345<?php$a = 0;var_dump(isset($a))?>//bool(true) is_null()查看变量是否为空。以下三种情况返回true: 如果一个变量没有赋值 变量赋值为NULL 变量还没定义,或者变量被销......

UNIX下的IO模型

前言做一个网络服务器,若使用多线程,每一个请求都是一个线程,但会有CPU上下文切换,代价比较高,因此考虑用单线程处理并发问题,这时候需要网络模型。 Unix的IO读写过程 等待数据准备 把数据从系统内核拷贝到用户进程中 Unix下网络的IO模型(五种)同步IO 阻塞式IO (Blocking IO) 同步阻塞 非阻塞式IO (NonBlocking IO) 同步非阻塞(就是IO复......

配置nginx

php-fpm.conf和nginx.conf(以及其下vhost中的虚拟主机配置文件)的配置要对应,否则会出现502的报错 https://www.jianshu.com/p/15fa13a1d6f4 ...

前序与中序遍历构造二叉树

通过刷题学习,现在对二叉树递归遍历有新的认识。 前序遍历:根节点,左子树,右子树 中序遍历:左子树,根节点,右子树 由此可见,前序遍历的第一个节点就是中序遍历的根节点 此处设前序遍历中,左子树的右边界为x,由于左子树结点的个数在前序和中序遍历中相同,即x -(pl+1)=(inroot-1) - il,故推出 x = inroot - il + pl,求出左子树右边界的下标。 求......