Awezome

  • 主页
  • 随笔
所有文章 友链 关于我

Awezome

  • 主页
  • 随笔

WordPress 编译安装 PHP 7.0.4 及优化配置

2016-03-20

好长时间没有理自己的博客了,今天正好有时间,把PHP升级到最新版本PHP 7.0.4。

还是选择编译安装,PHP7 推荐 gcc 4.8以上,gcc -v 看了一下VPS才4.4,所以第一步先升级一下 gcc,这个过程比较长,可以先下部电影等着~~

因为VPS配置太low,所以先准备一些,搞个临时swap

1
2
3
4
5
6
$ SWAP=/tmp/swap
$ dd if=/dev/zero of=$SWAP bs=1M count=1000
$ mkswap $SWAP
$ swapon $SWAP
#最后记得关上
$ swapoff -a

ok , 开始······

1
2
3
4
5
6
7
$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.gz
$ tar -xf gcc-5.3.0.tar.gz
$ cd gcc-5.3.0
$ ./contrib/download_prerequisites
$ mkdir gcc_temp && cd gcc_temp
$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib
$ make && make install

当然再装gcc时有一些小问题,大多可以google到,这里记一点,如果出现 *** [stage1-bubble] 错误 2

1
2
$ export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/usr/lib64
$ source /etc/profile
  • php
  • PHP

阅读全文

Lavarel 增加全局函数文件

2015-09-03

1.生成文件 app\Helpers\helper.php

2.在composer.json 增加

1
2
3
4
5
autoload": {
"files": [
"app/Helpoers/helper.php"
]
}

3.运行 composer dump-autoload
这样就可以在 helper.php 里写函数,整个project都可以调用了。

  • lavarel
  • PHP

阅读全文

MySQL复习笔记:连接

2015-05-15

SQL连接
基于 ANSI 标准的 SQL 列出了五种 JOIN 方式:
内连接(INNER JOIN)
全外连接(FULL OUTER JOIN)
左外连接(LEFT OUTER JOIN)
右外连接(RIGHT OUTER JOIN)
交叉连接(CROSS JOIN)
在特定的情况下, 一张表(基本表, 视图, 或连接表)可以和自身进行连接, 成为自连接(self-join)。

MySQL 内连接

连接产生的结果集,可以定义为首先对两张表做笛卡尔积(交叉连接)——将 A 中的每一行和 B 中的每一行组合,然后返回满足连接谓词的记录。实际上 SQL 产品会尽可能用其他方式去实现连接,笛卡尔积运算是非常没效率的。
程序要应该特别注意连接依据的列可能包含 NULL 值,NULL 值不与任何值匹配(甚至和它本身) – 除非连接条件中显式地使用 IS NULL 或 IS NOT NULL 等谓词。

1
select a.*,b.* from tb_person as a inner join tb_order as b;

等价于

1
select * from tb_person a,tb_order b where a.personId=b.personId;

相等链接

1
select * from course c inner join student_course sc on c.cid = sc.cid;
  • MySQL
  • MySQL

阅读全文

MySQL复习笔记:锁

2015-05-15

MySQL的锁系统:shared lock和exclusive lock(共享锁和排他锁,也叫读锁和写锁,即read lock和write lock)

表上的write lock会阻塞其他会话中write lock 和 read lock
表上的read lock只会阻塞其他会话中write lock,而不会阻塞read lock

MySQL有三种锁的级别:页级、表级、行级。

MyISAM和MEMORY存储引擎采用的是表级锁(table-level locking);BDB存储引擎采用的是页面锁(page-level locking),但也支持表级锁;InnoDB存储引擎既支持行级锁(row-level locking),也支持表级锁,但默认情况下是采用行级锁。

MySQL这3种锁的特性可大致归纳如下:
表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。
行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般。

快照读:简单的select操作,属于快照读,不加锁。(当然,也有例外,下面会分析)

1
select * from table where ?;

当前读:特殊的读操作,插入/更新/删除操作,属于当前读,需要加锁。

  • MySQL
  • MySQL

阅读全文

MySQL复习笔记:索引

2015-05-15

MySQL 索引:索引(Index)是帮助MySQL高效获取数据的数据结构

主键列(PRIMARY KEY)
表的外键列(FOREIGN KEY)
唯一索引(UNIQUE INDEX || UNIQUE KEY)
普通索引(INDEX || KEY)
全文索引(FULLTEXT)
索引时指定前缀

索引的存储分类
B-Tree 索引:最常见的索引类型,大部分引擎都支持B树索引。B-Tree索引能够加快访问数据的速度,因为存储引擎不再需要进行全表扫描来获取需要的数据,取而代之的是从索引的根节点开始进行搜索。根节点的槽中存放了指向子节点的指针,存储引擎根据这些指针向下层查找。通过比较节点页的值和要查找的值可以找到合适的指针进入下层子节点,这些指针实际上定义了子节点页中值的上限和下限。最终存储引擎要么是找到对应的值,要么该记录不存在。
HASH 索引:只有Memory引擎支持,使用场景简单。
R-Tree 索引(空间索引):空间索引是MyISAM的一种特殊索引类型,主要用于地理空间数据类型。
Full-text (全文索引):全文索引也是MyISAM的一种特殊索引类型,主要用于全文索引,InnoDB从MYSQL5.6版本提供对全文索引的支持。全文索引是一种特殊类型的索引,他查找的是文本中的关键词,而不是直接比较索引中的值。全文索引和其他几类索引的匹配方式完全不一样。他有许多需要注意的细节,如停用词、词干和复数、布尔搜索等。全文索引更类似与搜索引擎做的事情,而不是简单的where条件匹配。
在相同的列上同时创建全文索引和基于值的B-Tree索引不会有冲突,全文索引适用于MATCH AGAINST操作,而不是普通的where条件操作

MySQL高性能的索引策
独立的列作为索引

如果查询中的列不是独立的,则mysql就不会使用索引,独立的列是指列不能是表达式的一部分,也不能是函数的参数。

选择合适的索引列顺序只是用于B-Tree索引。
索引列的顺序意味着索引首先按照最左列进行排序,其次是第二列,将选择性最高的列放到索引最前列

前缀索引和索引选择性

有时候需要索引很长的字符串,这会让索引变的大且慢。一个策略是前面提到过的模拟哈希索引。通常可以索引开始的部分字符,这样可以大大节约索引空间,从而提高索引效率。但是这样也会降低索引的选择性。索引的选择性是指,不重复的索引值。
一般情况下,某个列前缀的选择性也是足够高的,足以满足查询性能。对于Blob,Text或者很长的VARCHAR类型的列,必须使用前缀索引,因为mysql不允许这些列的完整长度。诀窍在于要选择足够长的前缀以保证较高的选择性,同时又不能太长(以便节约空间)。前缀应该足够长,以便使得前缀索引的选择性接近于索引整个列。

  • MySQL
  • MySQL

阅读全文

CSV 在 UTF 8 编码下 Excel 2007 打开乱码的解决方法

2015-03-08

首先说这个问题太变态了,Office自己都和自己不兼容,正常的utf8编码下 07 局然打开中文乱乱码。当然首选想到是转成gbk这样中文系编码,这样中文没有了问题,但是对于其它小语种也是有同样乱码的问题。最后的最后还是Google到了解决方法。

先下这个网页,CSV tests encoding and column separator
上面对比测试了csv不同编码不同头不同分隔符在 excel 2003 和 excel 2007 乱码情况,也就是说在unicode系下,要保证没有乱码要做到3点:utf16le编码,tab分隔,加bom 。

下面是PHP版的最终代码,参考这里 excel mangles diacritics in csv

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
/**
* Export an array as downladable Excel CSV
* @param array $header
* @param array $data
* @param string $filename
*/
function toCSV($header, $data, $filename) {
$sep = "\t";
$eol = "\n";
$csv = count($header) ? '"'. implode('"'.$sep.'"', $header).'"'.$eol : '';
foreach($data as $line) {
$csv .= '"'. implode('"'.$sep.'"', $line).'"'.$eol;
}
$encoded_csv = mb_convert_encoding($csv, 'UTF-16LE', 'UTF-8');
header('Content-Description: File Transfer');
header('Content-Type: application/vnd.ms-excel');
header('Content-Disposition: attachment; filename="'.$filename.'.csv"');
header('Content-Transfer-Encoding: binary');
header('Expires: 0');
header('Cache-Control: must-revalidate, post-check=0, pre-check=0');
header('Pragma: public');
header('Content-Length: '. strlen($encoded_csv));
echo chr(255) . chr(254) . $encoded_csv;
exit;
}
  • PHP

阅读全文

快速幂取模算法 A^B Mod C

2015-03-08

先说题目:
给出3个正整数A B C,求A^B Mod C。(1 <= A,B,C <= 10^9)。例如,3 5 8,3^5 Mod 8 = 3。

立马想到的解决方法是

1
2
3
4
5
int ans=1;
for(int i=1;i<b;i++){
ans=ans*a;
}
ans = ans % c;

但是这里有个很明显的问题,如果a和b过大,就很容易溢出。

这里我们可以对mod进行优化,因子取余相乘后取余最终余数不变,即公式:
a^b mod c = (a mod c)^b mod c

那么上面算法可优化为

1
2
3
4
5
6
int ans=1;
a = a % c;
for(int i=1;i<b;i++){
ans=ans*a%c; //这里再取了一次余
}
ans = ans % c;

mod优化完后再看一下幂的优化:

  • Algorithm

阅读全文

迁移网站到 Vultr VPS

2015-01-17

在国内的虚拟空间快到期了,正好也发现了Vultr,一直观察了几天还不错,就入手。Plan是最低配的,内存768M,15G SSD ,1T带宽,就个人而言是够用了。

pingawezomenet

Vultr 的推广链接:http://www.vultr.com/?ref=6818817

  • vps
  • Linux

阅读全文

《星际穿越》与相对论中的时间空间

2014-11-23

p2209693526
首先必须承认《星际穿越》是部好电影,不单单是场面的真实感,同时也将相对论中四维空间和质量越大时间越慢的的概念用直白的方式表达了出来,当然也仅仅说明“是什么”,没有讲“为什么”,因为这其实就是一部科幻片,而不是一部科教片。电影的主线仍然是(爱+X)方式来表达,这个爱主要体现在对子女的爱与超级英雄拯救全人类大爱上,而X换成了与一往不大相同的相对论的时间与空间的概念,并且找了霍金的朋友Kip这位真正的物理学家来设计黑洞,当然是精彩。

说下库伯儿子的人物设定

关于人物的设定其他人不用多讲,一看就会明白,但是关于库伯儿子的设定好多人会认为这是多余的,或是感觉他好无能。其实我想这就是目的,通过对代表的传统人类和要拯救人类并且有着相信父亲会回来的妹妹作对比,可以很明显的感到那种踏实与规规矩矩,这个肯定是从侧面让他妹的人物更立体。还有一小点就是他一直和他父亲对话,20多年一如既往,一个很大的催泪弹。并且他妹开始时不跟库伯通话,不找个儿子来通话那还有人性么,这也是突出他妹的个性,其实从她的墨菲(墨菲定理)的名字就早已可以看出。不过要说对人类的贡献,那就是他把他妹的房间保护的很完整,如果他把那些书全仍了,也许就没有了后来。

** 个人理解下四维空间和时间越慢的问题**

四维空间可以理解为是三维空间的平移,而在四维空间的人是看不到时间量的,只有更高维度的五维空间才可以看到,这个在影片中的库伯在超立方体就是这样看,可以像播放器一样快进与后退看四维空间的变化。可以设想一下自己在二维空间中,看到的只是线和点,只有我们在三维里的人才可以看到这个面。其实这里隐含着一个有意思的问题,就是,我们可以把一张平面进行扭曲,这个是不是类似于更高维度的通某种方式把我们的时空也可以扭曲?这里当然有个疑问,更高维的库伯为什么没有用更高明的方法来传递信息?库伯在五维超立方体向身在四维空间的女儿传递信息时的方式感觉好费劲,也许正是这种费劲看起来对撕心裂肺与激动人心。库伯的五维超立方体是更高维的库伯建造,然后再从五维向四维传递信息,是不是可以理解维度的信息传递只能一次跨一维,如果想跨多维就要找介质(当前为库伯本身)?但是库伯说向低维传递信息是通过引力,而引力是由质量引起,这里就有些纠结。

要说一下为什么“海洋星球”上1个小时相当于7年。这个要看下狭义相对论的定义中的时问题间变慢(钟慢效应)问题。先来类似比下,举个不恰当的栗子(初学者~):一个旋转的陀螺(是不是想到了盗梦空间里的?)。它的角速度是不变的,但是半径的圆上的点在相同时间里经过的长度是不同的,越往外长度越长,对应的速度也就越快。假设不同半径上有不同的人,那么要想让俩人经过的角度相同,也就是时间相同,半径大的人就要走更多的路(步数)。反之,如果走相同的步数,外面的人花的时间更短。人的时间是相对自己来说,自己走一步的时间是相同的,也就是说外面的人花了更少的“时间”作了和里面的人相同的事情,所以自己“过的快”。

** 最后一定要吐槽下**
1.Prefix有点长,到了三分之二时候才猜出片头在女儿房间传递信息的是库伯本人。如果要问看电影前要准备些什么,我要说少喝水。。。
2.库伯同事死的时候我感觉他们都好淡定,难道这就是英雄们的气魄?还有就是片后的库伯的子子孙孙见了库伯本人后为什么没人喊爷爷?

  • Other

阅读全文

iFrame高度自适应内容

2014-10-16
1
2
3
4
5
6
7
8
9
10
11
12
13
function SetWinHeight(obj) {
var win = obj;
if (document.getElementById) {
if (win && !window.opera) {
if (win.contentDocument && win.contentDocument.body.offsetHeight)
win.height = win.contentDocument.body.offsetHeight;
else if (win.Document && win.Document.body.scrollHeight)
win.height = win.Document.body.scrollHeight;
}
}
}

<iframe src="backtop.html" frameborder="0" scrolling="no" id="external-frame" onload="SetWinHeight(this)"></iframe>
  • html
  • Html

阅读全文

« Prev1234…6Next »
© 2014-2019 Awezome
Hexo Theme Zilia by Awezome