Pistachio's Blog

Later equals never.

MySQL事务

事务事务是由一组SQL语句组成的一个执行单元,该执行单元要么全部执行或全部不执行 事务四大特质(ACID) 原子性(Atomicity):指事务包含的所有操作(sql)要么全部成功,要么全部失败回滚。事务是最小单位,不可再分。 回滚通过undo log实现,回滚行记录到某个特定版本 undo log 记录的是逻辑操作日志(如对某行数据进行insert操作,那么undo log会记录一条与之......

斐波那契数列

斐波那契一个重要性质:斐波那契数列的相邻每个数的最大公约数gcd(n-2,n-1)是相同的。 ...

Trie树

Trie树Trie树,又称字典树、前缀树,是一种树形结构,它是一种专门处理字符串匹配的数据结构,用来解决在一组字符串集合中快速查找某个字符串的问题。 Trie树的特点 根节点不包含字符,根节点外的每一个结点表示一个字母 从根节点到某一个结点连起来的路径,成为有一个字符串 每个节点的子节点所包含的字符不相同 插入&查找12345678910111213141516171819202......

树状数组

对于长度为n的数组进行修改和查询 如果对1~m个数进行求前缀和,复杂度为O(n)。如果n很大效率会非常低。而树状数组只用O(logn) A是原数组,C是新开辟的数组,C[i]的意思是求前**lowbit(i)**个元素的前缀和,同时也是下标i管辖的元素个数2^k,k是i二进制末尾0的个数 例如C[8] lowbit(8) = 1000 & 1000 = 1 ......

合并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) 垂直分表......