Pistachio's Blog

Later equals never.

合并k个链表

在之前的文章中分析过合并两个有序的链表,今天遇到一道题就是合并多个链表,则有分治法和优先队列的解法。 分治法 分治法的思想是,把一个复杂问题分解成两个或者更多相同或相似的子问题,再把子问题分成更小的子问题,直到最后的子问题可以简单地直接求解,最后把子问题的解合并,就得到原问题的解啦。(昨天百度一面的时候问过这个问题) [ 1->4->5, 1->3->4, 2......

PHP垃圾回收机制

PHP5.3以前 引用计数机制PHP5.3之前使用过内存回收算法Reference Counting 引用计数。 其思想是,为内存对象分配一个计数器,当内存对象建立时计数器初始化为1。(如$a = "hello world") 以后每一个新变量引用该变量,(如赋值$a = $b),计数器加1;当减少引用次内存对象(unset($a)),计数器减1。 把一个变量赋值给另一变......

Nginx解析PHP的原理

Nginx是一个高性能的服务器,能处理HTTP请求,并能做反向代理。 Nginx本身不会对PHP进行解析,而是通过进程管理器php-fpm对其进行解析。 Nginx通过反向代理的功能将动态请求转向php-fpm。 CgiCgi是Common Gateway Interface的缩写。过去服务器只能处理静态语言,无法对动态语言(PHP)进行处理。Cgi协议是用于解决语言解释器(PHP、Pyth......

序列和

给出一个正整数N和长度L,找出一段长度大于等于L的连续非负整数,他们的和恰好为N。答案可能有多个,我我们需要找出长度最小的那个。 例如 N = 18 L = 2: 5 + 6 + 7 = 18 3 + 4 + 5 + 6 = 18 都是满足要求的,但是我们输出更短的 5 6 7 Sn = (a1 + an) * n / 2 &#......

Get和Post的区别

使用上的区别 GET通过URL或Cookie传参,而POST将数据放在BODY中(是HTTP的约定) GET方式提交的数据有长度限制,而POST的数据则可以非常大。HTTP协议对GET和POST长度没有限制,并且对HTTP头和Body都没有长度的要求。只是因为它们使用的操作系统和浏览器设置的不同引起的区别。 POST比GET安全,因为数据在地址栏上不可见。通过GET提交数据,用户名和密码将明......

MySQL的分库分表

对于MySQL的性能优化,可能会想到索引优化。但是如果在数据量很大的情况(100w以上),而且写操作比较多的情况下,优化索引性能提升不明显。传统的分库分表是通过应用层逻辑实现的 分库分表把单一的数据库拆分成若干的数据库,将原来数据大表分成若干数据表,使得单一数据库、单一数据表的数量变小(数据量也随着拆分而变少),从而解决数据库由于数据量过大而导致性能降低的问题。 分库分表的方式1) 垂直分表......

红黑树

红黑树(Red Black Tree)是对二叉搜索树的改进,解决二叉搜索树多次插入新节点导致的不平衡问题。对于搜索、插入和删除较多操作的情况下,通常使用红黑树。 红黑树的底层结构是二叉查找树。 其产生过程:链表->二叉树->二叉查找树->自平衡的二叉查找树 特性以下特性保证了红黑树的平衡特性,确保没有一条路径比其它路径长出两倍 是自平衡的二叉查找树 结点是红色或黑色 根......

Redis基础知识

一、简介Redis是一种高性能的NoSQL(not only sql)非关系型数据库,key-value存储。key可以是任意类型,redis底层会转换为string。而value可以是五种的基本类型。 二、启动、状态、结束123systemctl start redis-serversystemctl status redis-serversystemctl stop redis-serv......

操作系统的内存管理

操作系统加载进内存之后,要对内存进行管理 计算机基本硬件结构 操作系统管理内存的不同方法 程序重定位 分段 分页 虚拟内存(硬盘) 按需分页虚拟内存 ...

【结构型】装饰者模式

一、定义动态(组合)地给一个对象增加一些额外的指责。就增加功能而言,Decorator模式比生成子类(继承)更为灵活(消除重复代码 & 减少子类个数) 动态地把职责添加到对象上,若想添加功能,装饰者类提供了比继承更有弹性的方案。 二、结构 例子:很多中单品咖啡,很多种调料的不同组合 把被装饰着放到装饰者中管理,例如调料是装饰者,单品咖啡是被装饰者,则把单品咖啡放到调料中管理。 这种......