Awezome

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

Awezome

  • 主页
  • 随笔

MySQL 默认字符集设置

2014-04-07

在 Fedora 安装完 MySQL 后编字符编码可能是非 utf8的,这样以来像 Review Board 没设置默认的就会按非 utf8 默认字符集来安装,就不能很好的显示中文,所以安装完 MySQL 后要进行相应的编码设置。

命令行模式进入MySQL,敲入status命令:

1
2
3
4
Server characterset:	latin1
Db characterset: latin1
Client characterset: utf8
Conn. characterset: utf8

有两个latin1 ,我们要把它干掉:
停止
MySQL Server
打开
/etc/my.cnf.d/ 有的是(/etc/mysql/my.cnf)
设置如下:

1
2
3
4
5
[client]
default-character-set = utf8
[mysqld]
character_set_server = utf8
init_connect='SET NAMES utf8'

保存后退出
如果启动失败,用 character_set_server = utf8 这个试试

重启mysql再status

1
2
3
4
Server characterset:	utf8
Db characterset: utf8
Client characterset: utf8
Conn. characterset: utf8
  • MySQL
  • MySQL

阅读全文

PHPStorm 常用快捷键使用技巧整理

2014-04-02

PHPStorm 就是一神器,jetbrains 一家都牛,下面是日常的一些快捷键,掌握了基本就不用鼠标了。

Key Explain
CTRL+ALT+L 格式化
CTRL+B 进入类,函数,变里等最原始的位置
CTRL+N 快速进入类,MenuClass:16 ,进入MenuClass第16行
CTRL+SHIFT+N 快速进入文件
CTRL+SHIFT+V 多次复制
CTRL+SHIFT+A 命令行
Ctrl + G 转到行
Tap 模板
CTRL+W 逐级选择块
鼠标中键 纵向块选择
SHIFT+F6 重构,文件名,变量名(我的已改成F2了)
双击shift 快速搜索
Ctrl+E 可以快速打开最近编辑的文件列表
CTRL+ALT+←/→ 返回上次编辑的位置
ALT+ ←/→ 标签切换
ALT+ ↑/↓ 在方法间快速移动
Alt键+[0-9] 打开相应的工具窗口,1 是project, 2是收藏
F12 回到刚才打开的工具窗口
Ctrl+F12 打开当前文件的成员结构框
F11 做标记,Alt+2 可以查看
  • phpstorm
  • PHP

阅读全文

PHP 零碎知识总结

2014-03-25

1. 8%(-2)=0 , 8%(-3.1)=2 ,8%(-3.9)=2
php在模运算时会先对除数取整,3.1为3,3.9也为3. 8=(-2)*(-4),所以为0
2. 用PHP打印出前一天的时间格式是2006-5-10 22:21:21
echo date(‘Y-m-d H:i:s’,strtotime(‘-1 day’));

  • PHP

阅读全文

rsync 用法总结

2014-03-25

语法:
rsync options source destination -z is to enable compression -v verbose -r indicates recursive -W transfer the whole files -a Recursive mode Preserves symbolic links Preserves permissions Preserves timestamp Preserves owner and group --progress show progress --delete delete the unuseful files --include --exclude --max-size='100K' no large files

1.同步两个本地目录
rsync -zvr /var/opt/installation/inventory/ /root/temp
2.同步一个文件
rsync -v /var/lib/rpm/Pubkeys /root/temp/
3.从本地同步到服务器
rsync -avz /root/temp/ thegeekstuff@192.168.200.10:/home/thegeekstuff/temp/
4.从服务器同步到本地
rsync -avz thegeekstuff@192.168.200.10:/var/lib/rpm /root/temp
5.仅同步目录结构
rsync -v -d thegeekstuff@192.168.200.10:/var/lib/ .
6.查看改变的文件
rsync -avzi thegeekstuff@192.168.200.10:/var/lib/rpm/ /root/temp/

实例
rsync -r --del --exclude="abc/config" --exclude=".idea/*" rsync://192.168.1.5/all /opt/web/htdocs/

[http://www.thegeekstuff.com/2010/09/rsync-command-examples/]

  • rsync
  • Linux

阅读全文

设计模式学习简单总结

2014-03-25

最近又把设计模式看了看,总感觉用上这东西设计类有着非常强大的作用,更加灵活。总结一下。

创建型
工厂模式(Factory):switch
单例模式(Singleton):只有一个
建造者模式(Builder):多个方法的执行顺序
原型模式(Prototype):clone

结构型
桥接模式(Bridge):
适配器模式(Adapter):新建一个子类,继承原有类,重写原有方法,在方法里实现新方法。用实现的子类替代父类做接口。
装饰模式(Decorator):新建一个类,继承原有类或原有类父类,重写原有方法,在方法里增加相应的新方法,参数为原有类
外观模式(Facade):相当于一个中介,把不同类的相同意义上的方法再封装到一个方法里,这样客户端调用时就不用考虑具体有哪些子类,直接调用中介就可以。就是作个接口,在接口里调用具体类的复杂方法,使用时直接调用接口的简单的方法。
组合模式(Composite):树的叶子与结点的组合
享元模式(FlyWeight):先把公共资源存起来,后期根据需要提取。
代理模式 (Proxy):在具体类和客户端之间又加了一层中介来保存具体类不让客户端知道,中介应和具体类有着相同的接口,并在内部调用具体类的相同的方法,还可以加入一些其它的如权限判断的特性。

行为型
模版模式(Template):公共父类为模板,子类继承
策略模式(Strategy):决策做什么
状态模式(State):改变一个状态时触发另一个状态
观察模式(Observer):被观察的东西变化时,通知所有观察者
备忘模式(Memento):备份还原
中介模式(Mediator):把不同的类联系起来,这些样有着相同的父类。
命令模式(Command):发命令指挥
访问者模式(Visitor):
职责链模式(Chain of Responsibility):越级调用别的级别的方法
迭代模式(Iterator):List
解释器模式(Interpreter):解释一个对象

区别与联系:
Strategy & Factory
工厂相当于黑盒,策略相当于白盒
Adapter & Decorator
Decorator 一般接口不变或增加,Adapter 用子类代替父类做接口,接口改变了。

  • 设计模式
  • Java

阅读全文

[转] PHP对象在内存中的分配说明

2014-03-21

最近小组分享了php内存方面的知识,前几篇也转载了别人的讲得很好的文章,下面是关于对象在内存的分配情况。
from : http://www.cnblogs.com/mo-beifeng/archive/2011/10/08/2201685.html

对象在PHP 里面和整型、浮点型一样,也是一种数据类,都是存储不同类型数据用的, 在运行的时候都要加载到内存中去用,那么对象在内存里面是怎么体现的呢?内存从逻辑上 说大体上是分为4 段,栈空间段、堆空间段、代码段、初始化静态段,程序里面不同的声明 放在不同的内存段里面,数据段(data segment)通常是指用来存放程序中已初始化且不为0的全局变量如:静态变量和常量;代码段(code segment / text segment)通常是指用来存放程序执行代码的一块内存区域,比如函数和方法;栈空间段是存储占用相同空间长度并且占用空间小的数据类型的地方,比如说整型1,10,100,1000,10000,100000 等等,在内存里面占用空间是等长的,都是64 位4 个字节。那么数据长度不定长,而且占有空间很大的数据类型的数据放在那内存 的那个段里面呢?这样的数据是放在堆内存里面的。如下图:

栈内存是可以直接存取的,而堆内存是 不可以直接存取的内存。对于我们的对象来数就是一种大的数据类型而且是占用空间不定长的类型,所以说对象是放在堆里面的,但对象名称是放在栈里面的,这样通过对象名称就可 以使用对象了。$p1 就是我们实例出来的对象名称,同理,$p2,$p3 也是我们实例出来的对象名称,一个类可以实例出多个对象,每个对象都是独立的,上面的代码相当于实例出来3 个人来,每个人之间是没有联系的,只能说明他们都是人类,每 个人都有自己的姓名,性别和年龄的属性,每个人都有说话和走路的方法,只要是类里面体 现出来的成员属性和成员方法,实例化出来的对象里面就包含了这些属性和方法。

1
$p1=new Person();

对于这个条代码,$p1 是对象名称在栈内存里面new Person()是真正的对象是在堆内存 里面的,具体的请看下图:

从上图可以看出$p1=new Person();等号右边是真正的对象实例,在堆内存里面的实体, 上图一共有3 次new Person(),所以会在堆里面开辟3 个空间,产生3 个实例对象,每个对象之间都是相互独立的,使用自己的空间,在PHP 里面,只要有一个new 这个关键字出现就会 实例化出来一个对象,在堆里面开辟一块自己的空间。 每个在堆里面的实例对象是存储属性的,比如说,现在堆里面的实例对象里面都存有姓 名、性别和年龄。每个属性又都有一个地址。 $p1=new Person();等号的右边$p1 是一个引用变量,通过赋值运算符“=”把对象的首地址 赋给“$p1”这个引用变量,所以$p1 是存储对象首地址的变量,$p1 放在栈内存里边,$p1 相当 于一个指针指向堆里面的对象,所以我们可以通过$p1 这个引用变量来操作对象,通常我们也 称对象引用为对象。

  • 内存
  • PHP

阅读全文

博客优化设置记录

2014-03-19

本来空间响应不够快,又加上之前没有很好的设置,网站打开的速度都过了1s。主要是把前端的代码减少了体积,库更少的引用。

  1. 去掉了无用的js库
  2. 精简了php的逻辑
  3. 关掉了七牛cdn, 只保留图片存储功能
  4. 去掉了代码高亮,简单重写了<code>
  5. 使用 Gravatar缓存
  6. 使用WP Super Cache大牛插件
  7. 加上了*.eot的缓存时间
  8. 侧边栏Recent, Popular, Comment, Tag 在ie下不在一行
  9. 顶部菜单栏的固定
  10. 背景的固定
  11. 去掉了tweet
  12. 试试百度加速乐。。。
  • Other

阅读全文

Java栈与堆

2013-09-29

1. 栈(stack)与堆(heap)都是Java用来在Ram中存放数据的地方。与C++不同,Java自动管理栈和堆,程序员不能直接地设置栈或堆。

2. 栈的优势是,存取速度比堆要快,仅次于直接位于CPU中的寄存器。但缺点是,存在栈中的数据大小与生存期必须是确定的,缺乏灵活性。另外,栈数据可以共享,详见第3点。堆的优势是可以动态地分配内存大小,生存期也不必事先告诉编译器,Java的垃圾收集器会自动收走这些不再使用的数据。但缺点是,由于要在运行时动态分配内存,存取速度较慢。

3. Java中的数据类型有两种。

一种是基本类型(primitive types), 共有8种,即int, short, long, byte, float, double, boolean, char(注意,并没有string的基本类型)。这种类型的定义是通过诸如int a = 3; long b = 255L;的形式来定义的,称为自动变量。值得注意的是,自动变量存的是字面值,不是类的实例,即不是类的引用,这里并没有类的存在。如int a = 3; 这里的a是一个指向int类型的引用,指向3这个字面值。这些字面值的数据,由于大小可知,生存期可知(这些字面值固定定义在某个程序块里面,程序块退出后,字段值就消失了),出于追求速度的原因,就存在于栈中。

另外,栈有一个很重要的特殊性,就是存在栈中的数据可以共享。假设我们同时定义:
复制内容到剪贴板代码:
int a = 3;
int b = 3;
编译器先处理int a = 3;首先它会在栈中创建一个变量为a的引用,然后查找有没有字面值为3的地址,没找到,就开辟一个存放3这个字面值的地址,然后将a指向3的地址。接着处理int b = 3;在创建完b的引用变量后,由于在栈中已经有3这个字面值,便将b直接指向3的地址。这样,就出现了a与b同时均指向3的情况。

特别注意的是,这种字面值的引用与类对象的引用不同。假定两个类对象的引用同时指向一个对象,如果一个对象引用变量修改了这个对象的内部状态,那么另一个对象引用变量也即刻反映出这个变化。相反,通过字面值的引用来修改其值,不会导致另一个指向此字面值的引用的值也跟着改变的情况。如上例,我们定义完a与b的值后,再令a=4;那么,b不会等于4,还是等于3。在编译器内部,遇到a=4;时,它就会重新搜索栈中是否有4的字面值,如果没有,重新开辟地址存放4的值;如果已经有了,则直接将a指向这个地址。因此a值的改变不会影响到b的值。

另一种是包装类数据,如Integer, String, Double等将相应的基本数据类型包装起来的类。这些类数据全部存在于堆中,Java用new()语句来显示地告诉编译器,在运行时才根据需要动态创建,因此比较灵活,但缺点是要占用更多的时间。 4. String是一个特殊的包装类数据。即可以用String str = new String(“abc”);的形式来创建,也可以用String str = “abc”;的形式来创建(作为对比,在JDK 5.0之前,你从未见过Integer i = 3;的表达式,因为类与字面值是不能通用的,除了String。而在JDK 5.0中,这种表达式是可以的!因为编译器在后台进行Integer i = new Integer(3)的转换)。前者是规范的类的创建过程,即在Java中,一切都是对象,而对象是类的实例,全部通过new()的形式来创建。Java中的有些类,如DateFormat类,可以通过该类的getInstance()方法来返回一个新创建的类,似乎违反了此原则。其实不然。该类运用了单例模式来返回类的实例,只不过这个实例是在该类内部通过new()来创建的,而getInstance()向外部隐藏了此细节。那为什么在String str = “abc”;中,并没有通过new()来创建实例,是不是违反了上述原则?其实没有。

5. 关于String str = “abc”的内部工作。Java内部将此语句转化为以下几个步骤:

  • Java

阅读全文

android cpu调节模式和io调度模式详解

2012-11-16

CPU模式:

ondemand
【按需模式】
官方及xray内核默认为此项调节模式,顾名思义,按需调节cpu频率,不操作手机的时候控制在最低频率,滑屏或进入应用后会迅速提升至最高频率,当空闲时迅速降低频率,性能较稳定,但因频率变化幅度过大,省电方面只有一般的水平。

powersave
【省电模式】
按设定最低频率运行,日常没有使用价值,除非配合setcpu情景模式,关屏睡眠时使用此调节模式

performance
【高性能模式】
和省电模式相反,始终按设定最高频率运行,此模式亦无任何日常使用价值,果断pass

userspace
【用户隔离】
严格来说它并不是一个模式,是允许非内核进程控制cpu频率的设置,现在已经不需要它了,setcpu官方的建议是,“不要使用此选项”。

conservative
【保守模式】
和ondemand模式的调频设定类似,不过有操作时提升cpu频率的速度较慢,空闲时迅速降频,所以名字叫保守模式,性能较低,省电程度略好于ondemand,总体不推荐

interactive
【交互模式】
相对于保守模式,这个模式算是高性能版的ondemand,开始操作手机后,频率升至最高,可以带来更好的响应速度,空闲时缓慢降至设定最低频率。电量自然也是要多费一点。

interactivex
交互模式的修改优化版,开屏后进入更好的频率管理方式,比交互模式略省电。

  • Other

阅读全文

PHP时间戳

2012-11-06
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
26
27
28
29
$t = time();
$t1 = mktime(0,0,0,date(“m”,$t),date(“d”,$t),date(“Y”,$t));
$t2 = mktime(0,0,0,date(“m”,$t),1,date(“Y”,$t));
$t3 = mktime(0,0,0,date(“m”,$t)-1,1,date(“Y”,$t));
$t4 = mktime(0,0,0,1,1,date(“Y”,$t));
$e1 = mktime(23,59,59,date(“m”,$t),date(“d”,$t),date(“Y”,$t));
$e2 = mktime(23,59,59,date(“m”,$t),date(“t”),date(“Y”,$t));
$e3 = mktime(23,59,59,date(“m”,$t)-1,date(“t”,$t3),date(“Y”,$t));
$e4 = mktime(23,59,59,12,31,date(“Y”,$t));
//测试
echo date(“当前 Y-m-d H:i:s”,$t).” $t
”;
echo date(“今天起点 Y-m-d H:i:s”,$t1).” $t1
”;
echo date(“今月起点 Y-m-d H:i:s”,$t2).” $t2
”;
echo date(“上月起点 Y-m-d H:i:s”,$t3).” $t3
”;
echo date(“今年起点 Y-m-d H:i:s”,$t4).” $t4
”;
//测试
echo date(“今天终点 Y-m-d H:i:s”,$e1).” $e1
”;
echo date(“今月终点 Y-m-d H:i:s”,$e2).” $e2
”;
echo date(“上月终点 Y-m-d H:i:s”,$e3).” $e3
”;
echo date(“今年终点 Y-m-d H:i:s”,$e4).” $e4
”;

结果:
当前 2011-05-24 15:42:55 1306222975
今天起点 2011-05-24 00:00:00 1306166400
今月起点 2011-05-01 00:00:00 1304179200
上月起点 2011-04-01 00:00:00 1301587200
今年起点 2011-01-01 00:00:00 1293811200
今天终点 2011-05-24 23:59:59 1306252799
今月终点 2011-05-31 23:59:59 1306857599
上月终点 2011-04-30 23:59:59 1304179199
今年终点 2011-12-31 23:59:59 1325347199

1
2
3
4
5
6
7
8
9
10
echo "今天:".date("Y-m-d")."";
echo "昨天:".date("Y-m-d",strtotime("-1 day")), "";
echo "明天:".date("Y-m-d",strtotime("+1 day")). "";
echo "一周后:".date("Y-m-d",strtotime("+1 week")). "";
echo "一周零两天四小时两秒后:".date("Y-m-d G:H:s",strtotime("+1 week 2 days 4 hours 2 seconds")). "";
echo "下个星期四:".date("Y-m-d",strtotime("next Thursday")). "";
echo "上个周一:".date("Y-m-d",strtotime("last Monday"))."";
echo "一个月前:".date("Y-m-d",strtotime("last month"))."";
echo "一个月后:".date("Y-m-d",strtotime("+1 month"))."";
echo "十年后:".date("Y-m-d",strtotime("+10 year"))."";
  • PHP

阅读全文

« Prev1…3456Next »
© 2014-2019 Awezome
Hexo Theme Zilia by Awezome