豪翔天下

Change My World by Program


  • Home

  • About

  • Archives

  • favorites

Apache手册

Posted on 2013-09-17 | In server | | Views:

Apache安装与配置

Apache 2.4与2.2配置上的区别见: Upgrading to 2.4 from 2.2

常用命令

1
httpd -v # 查看apache版本

配置虚拟目录/设置二级域名

Read more »

Linux 手册

Posted on 2013-09-08 | In system | | Views:

Linux手册

系统安装

CentOS版本说明

  • BinDVD: 最完整的版本,可以选择安装所有的软件
  • LiveDVD: 光盘安装版
  • LiveCD:比LiveDVD体积小而已
  • minimal: 精简版,连基本软件都没带,最好不要安装这个
  • netinstall: 网络安装版

基础安装

1
2
3
# CentOS
sudo yum install epel-release # 安装epel源
## vim /etc/sysconfig/network-scripts/ifcfg-eth0把ONBOOT=no改成yes即可让网卡开机自动启动

命令行Tips

Read more »

PHP 手册

Posted on 2013-08-07 | In php | | Views:

PHP

基本语法

  • 判断两个变量是否相等,如果==和===都能用的情况,那么尽量用===,因为它仅检查闭合范围。

数组

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
array_chunk($array, $size); // 将数组按size大小分为多个数组
array_column($array, $column_key); // 返回字典型数组里面指定key的那一列
array_diff($a, $b); // 比较数组的不同,可以用来判断两个数组是否相等,需要注意的是这里返回的是在array1中但是不在array2中的值,而不是两个的交集
array_key_exists("key",$a); # 查看key是否存在于某个字典
array_intersect($array1, $array2[,$array $...]); # 返回一个数组,该数组包含了所有在array1同时也出现在其他参数数组中的值
array_map($callback, $array); // 为数组中每一个元素应用回调函数
array_merge(); # 合并数组,相同的key直接覆盖(前面的被后面的覆盖)
array_merge_recursive(); # 合并数组,相同的key不覆盖
array_push($source, "red", "gree"); # 给数组添加元素
array_rand(); // 从数组中随机取出一个或多个元素
array_reverse();// 逆序数组
array_search(); // 搜索一个key的索引,如果是二维的数组,那么就是通过value搜索key
array_search(strtolower($search), array_map('strtolower', $array)); // array_search忽略大小写
array_slice($arr, 0, 1); # 数组分片
array_sum($arr); //计算数组中所有值的和
array_unique(); // 数组去重
array_values($arr); //获取数组所有的value值
array_walk(); // 利用回调函数对数组中每一个元素做回调处理
count()函数:输出数组的长度
empty()函数:判断数组是否为空
end() // 返回当前数组的最后一个值,需要注意的是这个函数不仅仅是返回最后一个值,还会把数组当前的指针指向最后一个数据
explode(',', $str) # 将字符串分割为数组
implode(',', $arr) # 将数组拼接成字符串
in_array('a', $a) # 查看数组是否存在某个元素
json_encode($arr) # 数组转换城字符串
list($a, $b) = [1, 2] # 分别赋值
rsort(): 以降序对数组排序
sort(); # 排序,可以给数组排序,会修改原来数组的值
uasort($array, $cmp_function) # 定义对比函数进行排序
unset(arr[1]); // 删除数组元素
# 数组遍历
foreach($array as $value); //数组遍历
foreach($array as $key => $value); // 数组(字典)遍历
# 数组用于函数
func(*list); // 将数组作为函数的输入
# 在数组里面添加数组元素,在不确定key的情况下
$arr = [];
$arr['a'][] = 'a';
$arr['a'][] = 'b';

字符串

PHP里面单引号和双引号确实有些地方的用法是不同的,比如匹配换行符的时候。我们应该尽量使用单引号,因为如果是双引号,那么程序会去检测其中的变量。

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
30
31
json_decode(string, $assoc=false); # 将字符串转换为json对象,$assoc=true时返回array而不是object
lcfirst($str) # 将字符串首字母转换为小写
mb_strlen($str, 'utf-8') # 求中文字符串长度
mb_substr($str, $start, $length, 'utf-8'): 字符串分割,可以分割中文哟,如果要获得所有右边的,那么$length不用填或者填上NULL,如果版本不行那就是用功能弱一点的substr
nl2br() # 将字符串中的\n转换成网页的换行符<br>
sprintf() # 字符串格式化,需要注意的是,它不是用\转义,而是用的%来转义
strlen() # 求字符串长度
strpos('abc', 'a'); # 在字符串中查找第一次出现位置,没找到返回false
str_repeat('abc', n) # 将字符串重复n次
str_replace(搜索值,替换值,目标) # 字符串替换
str_replace("\n", "", $content); # 去除换行符
substr_count($haystack, $needle, [$offset, $length]); # 计算子字符串needle在字符串haystack中出现的次数
trim($string); # 去除字符串前后的空白字符,如果要去除所有的字符只能使用preg_replace('/\s+/', '', $string),这是stackoverflow上面给出的答案
$a . $b . 'abc':字符串连接直接用点号
explode(',', $str, [$limit]) # 字符串分割,第三个参数大于0表示限制分组数量,limit规定所返回的数组元素的个数,小于0时,返回包含除了最后的-limit个元素以外的所有元素的数组;0表示返回包含一个元素的数组
array_map('strrev', explode('-', strrev($a), 2)) # 字符串分割,逆向
iconv('utf-8', 'GBK', $data): 将字符编码从utf-8转换为GBK
join("&", $arr) # 拼接字符串
parse_str('name=wang&age=18'): 从查询字符串中解析到变量,可以得到$name和$age两个变量
parse_url($url): 解析url成数组,与http_build_query()功能相反
preg_replace('/user_id=\d+&name=/', 'user_id=' . 1048 . '&name=', $code): 正则替换
preg_replace_callback('//', function($matches){return strtolower($matchs[0])}: 执行一个正则表达式搜索并且使用一个回调函数进行替换
preg_match('/Chongqing(?<right>.*)/', $string, $matches): 正则匹配,pattern参数前后必须加斜杠
sprintf("sahgoiahg%s", $a): 格式化输出
strtolower($str)/strtoupper($str): 大小写字符串
ucfirst($str): 将字符串首字母大写
ucwords($str): 将字符串每个单词首字母大写
str_replace(' ', '', lcfirst(ucwords(str_replace(['-', '_'], ' ', $str)))); # 字符串转换为驼峰命名法

数字

1
2
3
4
5
6
7
8
ceil()函数:向上取整
rand(min, max):产生随机数,不需要给初始值了现在
intval($val): 字符串转整数,如果不是数字型字符串,那么转换会失败,失败后返回0,没错是0,mmp
int ip2long(string $ip_address):IP转换成整数值
string long2ip(string $proper_address):整数值转换成IP
number_format(float $number) // 以千位分隔符方式格式化一个数字,返回字符串
sprintf('%04d', 2) // 数字前补零
10 % 3 = 1; // 求余操作

时间

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
time(): 获取当前时间戳
strtotime(''): 字符串转换为时间戳
gmdate("Y-m-d\TH:i:s\Z"): 获取GMT时区的时间
$beginToday=mktime(0,0,0,date('m'),date('d'),date('Y')):获取今天开始时的时间戳
$endToday=mktime(0,0,0,date('m'),date('d')+1,date('Y'))-1:获取今天结束时的时间戳
$beginYesterday=mktime(0,0,0,date('m'),date('d')-1,date('Y')):获取昨天开始时的时间戳
$endYesterday=mktime(0,0,0,date('m'),date('d'),date('Y'))-1:获取昨天结束时的时间戳
$beginLastweek=mktime(0,0,0,date('m'),date('d')-date('w')+1-7,date('Y')):获取上周开始时的时间戳
$endLastweek=mktime(23,59,59,date('m'),date('d')-date('w')+7-7,date('Y')):获取上周结束时的时间戳
$beginThismonth=mktime(0,0,0,date('m'),1,date('Y')):获取本月开始时的时间戳
$endThismonth=mktime(23,59,59,date('m'),date('t'),date('Y')):获取本月结束时的时间戳
# 单独获取当前的年、月、日、时、分、秒等
date('Y-m-d H:i:s'); // 如果要单独获取或者修改格式,那么直接按照里面的格式修改即可
# 输出指定格式
date('Y-m-d H:i', time())
# 时间的表示
d: 月份中的第几天,有前导零的2位数字,01到31
D: 星期中的第几天,文本表示,3个字母,Mon 到 Sun
j: 月份中的第几天,没有前导零,1 到 31
l:(“L”的小写字母),星期几,完整的文本格式 Sunday 到 Saturday
N: ISO-8601 格式数字表示的星期中的第几天(PHP 5.1.0 新加),1(表示星期一)到 7(表示星期天)
S: 每月天数后面的英文后缀,2 个字符,st,nd,rd 或者 th。可以和 j 一起用
w: 星期中的第几天,数字表示 0(表示星期天)到 6(表示星期六)
z: 年份中的第几天 0 到 365
星期 --- ---
W ISO-8601 格式年份中的第几周,每周从星期一开始(PHP 4.1.0 新加的) 例如:42(当年的第 42 周)
月 --- ---
F 月份,完整的文本格式,例如 January 或者 March January 到 December
m 数字表示的月份,有前导零 01 到 12
M 三个字母缩写表示的月份 Jan 到 Dec
n 数字表示的月份,没有前导零 1 到 12
t 指定的月份有几天 28 到 31
年 --- ---
L 是否为闰年 如果是闰年为 1,否则为 0
o ISO-8601 格式年份数字。这和 Y 的值相同,只除了如果 ISO 的星期数(W)属于前一年或下一年,则用那一年。(PHP 5.1.0 新加) Examples: 1999 or 2003
Y 4 位数字完整表示的年份 例如:1999 或 2003
y 2 位数字表示的年份 例如:99 或 03
时间 --- ---
a 小写的上午和下午值 am 或 pm
A 大写的上午和下午值 AM 或 PM
B Swatch Internet 标准时 000 到 999
g 小时,12 小时格式,没有前导零 1 到 12
G 小时,24 小时格式,没有前导零 0 到 23
h 小时,12 小时格式,有前导零 01 到 12
H 小时,24 小时格式,有前导零 00 到 23
i 有前导零的分钟数 00 到 59>
s 秒数,有前导零 00 到 59>
u 毫秒 (PHP 5.2.2 新加)。需要注意的是 date() 函数总是返回 000000 因为它只接受 integer 参数, 而 DateTime::format() 才支持毫秒。 示例: 654321
时区 --- ---
e 时区标识(PHP 5.1.0 新加) 例如:UTC,GMT,Atlantic/Azores
I 是否为夏令时 如果是夏令时为 1,否则为 0
O 与格林威治时间相差的小时数 例如:+0200
P 与格林威治时间(GMT)的差别,小时和分钟之间有冒号分隔(PHP 5.1.3 新加) 例如:+02:00
T 本机所在的时区 例如:EST,MDT(【译者注】在 Windows 下为完整文本格式,例如“Eastern Standard Time”,中文版会显示“中国标准时间”)。
Z 时差偏移量的秒数。UTC 西边的时区偏移量总是负的,UTC 东边的时区偏移量总是正的。 -43200 到 43200
完整的日期/时间 --- ---
c ISO 8601 格式的日期(PHP 5 新加) 2004-02-12T15:19:21+00:00
r RFC 822 格式的日期 例如:Thu, 21 Dec 2000 16:01:07 +0200
U 从 Unix 纪元(January 1 1970 00:00:00 GMT)开始至今的秒数 参见 time()
Carbon时间处理第三方库
1
2
3
4
Carbon::parse('2017-08-25 18:18:18'); # 不用指定格式即可将时间字符串自动转换为Carbon对象
Carbon::now()->subDays(24); # 计算24天前的时间
$now = Carbon::now(); // 获取当前时间
$now->addYears(n); // 当前时间加n年,直接用addYear表示加一年

文件操作

1
2
3
4
5
6
7
8
9
$fp = fopen("test", "r") or die("Unable to open file!"); # 打开文件
$fp = fopen('test', 'w') # 写入
fread($fp,filesize("webdictionary.txt")); # 读取指定大小的内容
fgetc($fp) # 读取一个字符
fgets($fp) # 读取一行
feof($fp) # 判断指针是否指向文件尾了
fwrite($fp, 'haofly') # 写入字符串到文件
fclose($fp); # 关闭文件
file_exists($filename); # 检查文件或目录是否存在

函数/类/对象

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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
# public, private, projtected的区别:
public # 权限最多,可以内部调用,实例调用
protected # 受保护类型,用于本类和继承类调用
private # 私有类型,只有在本类中使用
# 对象的序列化和反序列化
serialize()
unserialize()
# 一些自省(反射)方法
func_get_args() # 获取当前方法所有的参数
get_class(className) # 取得当前语句所在的类名
get_class_methods(className) # 取得相应class所包含的所有的方法名
get_class_vars(clasName) # 取得相应class所包含的所有的变量名
get_object_vars($object) # 获取类或者对象的属性,返回数组
property_exists($object, $key) # 类或者对象是否存在某个属性
setAttribute($name, $value) # 设置函数的属性或者直接设置函数的内部变量
$this->{$key} = $value # 给类动态添加属性
$this->{$key} # 返回对象指定的属性
# 根据类名知道类的定义文件
$reflector = new ReflectionClass('className');
echo $reflector->getFileName();
# 标准嘞StdClass
$obj->value # 直接获取其内部的变量
# trait: 一种代码复用机制,从基类继承的成员会被trait插入的成员所覆盖,优先顺序是来自当前类的成员覆盖了trait的方法,而trait则覆盖了被继承的方法。这是为了弥补PHP单继承的局限
# 例如可以写一个单例:
trait SingleInstance
{
static private $instance = null;
static public function getInstance(){
if (!self::$instance) {
self::$instance = new static();
}
return self::$instance;
}
}
# 在其他类里面只需要use SingleInstance就行了。再比如,文档里面的例子
<?php
class Base {
public function sayHello() {
echo 'Hello ';
}
}
trait SayWorld {
public function sayHello() {
parent::sayHello();
echo 'World!';
}
}
class MyHelloWorld extends Base {
use SayWorld;
}
$o = new MyHelloWorld();
$o->sayHello(); // 输出的是Hello World
?>

发送CURL请求

注意:使用CURL之前一定要先确定服务器是否已经安装php的curl扩展,如果没有,可能会报奇怪的错误,安装完扩展后记得重启php进程。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
$ch = curl_init(); // 初始化curl
curl_setopt(); // 设置参数
curl_setopt($ch, CURLOPT_URL, 'url'); // 设置URL
curl_setop($ch, CURLOPT_POST, true); // 发送POST请求
curl_setop($ch, CURL_POSTFIELDS, $data); // POST的数据
curl_setop($ch, CURLOPT_RETURNTRANSFER, true); // 获取返回结果,如果不加这个,那么$result=true
$result = curl_exec($ch); // 执行curl请求
curl_getinfo($ch, CURLINFO_HTTP_CODE) // 获取http_code
curl_setopt($curlHandle, CURLOPT_HTTPHEADER, ['Accept: application/json']); // 添加HTTP头
curl_close($ch); // 关闭连接
# 如果要通过CURL 上传文件,那么需要这样对$data进行处理
if (function_exists('curl_file_create')) { // php 5.6+
$cFile = curl_file_create($scriptPath);
} else { //
$cFile = '@' . realpath($scriptPath);
}
$data = ['file' => $cFile];
# 获取curl所有参数所代表的常量值
$arr = get_defined_constants(true);
var_dump($arr['curl']);

WEB程序

$_SERVER['REQUEST_METHOD']    # 返回数据提交的方式,GET、POST等
$_SERVER["SERVER_PORT"]     # 获取端口
$_SERVER['HTTP_HOST']        # 获取域名或主机地址
$_SERVER['SERVER_NAME']        # 获取域名或主机名
$_SERVER["REQUEST_URI"]        # 获取域名后的详细地址
$_SERVER['PHP_SELF']        # 获取PHP文件名
$_SERVER["QUERY_STRING"]    # 获取网址后的参数
$_SERVER['HTTP_REFERER']    # 获取来源url
parse_str(file_get_contents("php://input"),$post_vars); # 获取PUT数据
getallheaders        # 获取请求头
error_log('message')    # 把错误信息发送到web服务器的错误日志,或者到一个文件里,有长度限制

MySQL

mysql_errno():    # 打印SQL出错信息

异常处理

try{
    throw new Exception('soahg');
}catch(Exception $e){
    echo $e->getMessage();
}

PHP命令行

1
2
php --ini # 查看php的配置文件
php --ri xhprof # --ri可以显示php当前加载的扩展的信息

帮助函数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
gettype(): 获取变量类型
$obj instanceof A # 判断对象是否属于某个类,不过判断是不是数组只能用is_array() # 判断是否是数组
is_string() # 判断是否是字符串
is_object() # 判断是否是object
is_bool() # 是否是布尔值
is_int() # 是否是整数
is_integer()# 是否是整数
is_float() # 是否是浮点数
is_real() # 是否是实数
is_numeric # 是否是数字或者数字字符串
interface_exists() # 检查接口是否已经定义
class_exists() # 检查类是否已经定义
PHP_INT_MAX # 最大整数
PHP_INT_MIN # 最小整数
min($value1, $value2...) # 选出最小值,最大值max同理
min([$value1, $value2,...]) # 选出最小值,最大值max同理
hash_hmac(算法名, 明文, 盐) # hash加密函数,可以选定加密算法,例如hash_hmac('sha1', 'mingwen', 'salt')
  • @操作符: 错误控制运算符,写在一行的前面,可以控制改行不输出warning信息或错误信息
  • var_dump(变量名):打印变量,这个函数还会打印变量的类型可以把一个变量的各个部分全部信息输出,包括每个部分的数据类型和长度等信息,但是默认情况下,输出有限制,如果层数深了或者数据长了可能会表示成省略号,可以在C:\wamp\bin\apache\\apache2.4.9\bin\php.ini里面修改xdebug节点,添加如下内容

    xdebug.var_display_max_children=128

    xdebug.var_display_max_data=512
    xdebug.var_display_max_depth=5
    

    另外,将var_dump的输出转换为一个字符串以便web前端显示,可以这样用:

    ob_start();
    var_dump($data);
    $result = ob_get_clean();
    # 或者用另外的函数
    var_export: 输出或返回一个变量的字符串表示
    
  • file_get_contents:获取文件或http内容,如果要从http获得json数据可以直接使用它
  • isset():查看某个变量或者多个变量是否已经被定义,未赋值或赋NULL都会返回false。没错,可以直接检查多个变量,当所有变量都为true时返回true
  • @header(‘Content-type: text/html;charset=UTF-8’);PHP文件中添加中文支持,在脚本开始的地方添加给行即可
  • 多行输出:其中最后一个EOF必须写在一行的开头,且里面如果要用变量这样用{ $php_var }
    echo <<<EOF
    内容
    EOF;
    
  • print_r:打印关于变量的易于理解的信息。如果给出的是 string、integer 或 float,将打印变量值本身。如果给出的是 array,将会按照一定格式显示键和元素。这点在调试的时候很有用
  • 类的方法尽量写成static,速度比public快

composer包管理

require是指在生产环境中必须的包,而require-dev则是开发的时候要用而生产环境无需用的包,常用命令:

1
2
3
4
5
6
7
8
9
10
composer config --list # 列出当前所有的配置
composer show # 获取所有安装的包的列表
composer require package_name --dev # 安装包,并将其写入composer.json的require-dev中去
composer remove package_name # 移除包
composer config -g repo.packagist composer https://packagist.phpcomposer.com # 更换为国内的源
# 忽略ssl证书验证
composer config --global disable-tls true
composer config --global secure-http false
"package/ppkg": "2.7.*@beta" # 安装beta版

autoload

autoload,可以预加载类,自动索引所有的类,能够加快依赖的索引速度。但是autoload并不是实时更新的,如果发现vendor/composer/autoload_classmap.php中的类与你预想的有冲突,那么就需要更新一下了:composer dump-autoload。

在composer.json中有四种自动加载类型:

  • classmap: development相关的

    1
    2
    3
    {
    "classmap": ["src/"] # 这样composer就会读取这个文件夹下所有的文件,然后再vendor/composer/autoload_classmap.php中将所有的class的namespace+classname生成一个key=>value的数组
    }
  • psr-0: 已经被弃用

  • psr-4: 一般用于项目代码的自动加载

  • files: helper相关的

Extension扩展管理

1
2
var_dump(extension_loaded('curl')); // 查看是否安装某个模块
var_dump(get_loaded_extensions()); // 查看安装了哪些模块

非常好用的第三方库

TroubleShooting

  • Call to undefined function getallheaders()

    版本问题,如果是老版本可以使用如下代码代替

    if (!function_exists('getallheaders')) { 
        function getallheaders() { 
            foreach($_SERVER as $key=>$value) { 
                if (substr($key,0,5)=="HTTP_") { 
                    $key=str_replace(" ","-",ucwords(strtolower(str_replace("_"," ",substr($key,5))))); 
                    $out[$key]=$value; 
                }else{ 
                    $out[$key]=$value; 
                } 
            } 
            return $out; 
        } 
    }
    
  • 回掉函数中访问外部变量

    方法一:使用类的静态变量

    方法二:使用use语法

    1
    2
    3
    $dt->each(function() use($bianliang) {
    echo $bianliang;
    });
  • Error while reading line from server

    这是在使用predis时报的错误,原因是没有设置read_write_timeout=-1使redis保持永久连接,否则会在一定时间后断开连接

  • isset和empty判断变量是否存在的问题。都不能用于静态数组变量的判断,最好用array_key_exists

  • PHP调用Dubbo服务: 按照这个教程一步一步来http://www.huangxiaobai.com/archives/1437。

    ​

关于填志愿

Posted on 2013-06-22 | In 边走边想 | | Views:

啊,好像要快要知道成绩了,紧张吗 放松
上次年级集中上一位学长总结了大学的四种活法:

学习:考研,出国

技术:实验室,各种比赛

实践:各种社团,团队,兼职

迷茫:游戏,电影,愚爱

确实,这些都是你以后必须面对的选择,而且有可能不知不觉就走上了某一条路。其实,我都还在迷茫的阶段,所以也只能讲一些我自己在填志愿的时候的一些愚见。

我把所有的专业分为了技术和非技术两个方向。

技术篇:

技术方向主要包括:工学(建筑,机械,工程,材料,电气,电子,通信,计算机),农学,医学

很多人说在大学重要的是人际关系,上大学只是为了拿个毕业证,大学毕业几乎都找不到对口的工作,而且学技术的一抓一大把,根本就找不到工作。切,脏话我就不说了,他后
面两句话我还是承认的,以下就由我的计算机来举例子吧。

首先说刚才那种话的人他专业知识一定不好,我研究过很多技术牛人,很多都是大一大二就可以看得出来了,比如我们计院真正想学计算机的人不足40\%(开学典礼上院长说的
是好像60\%都是调配过来的,当然,这在我们学校算是特色了,谁让我们计算机在重邮排第二呢,不过我们重邮的计算机在全国还是拍在前面三四十名吧)我敢说我们院50\%
的人没有自学的想法和行动,我甚至敢说10\%的人在大四毕业的时候专业技术还赶不上现在的我(额。。。当然,我现只是学到点皮毛,比我强的人多了去了)应该说大学里面
的学习光靠老师讲那点儿你毕业也别想找个好工作,更别说老师的教育能力还是参差不齐的,而且大学的老师根本没有义务来单独帮助你,除非你主动去找他。其次,很多被迫来
计算机的人完全不想走这条路,也可以,要么转专业(劝大家别这么想,100个人里进大学时想转专业的之后真正转了的不会有10个人)要么就去提高自己其它方面能力,也
就是非技术能力,课堂上的东西拉着走进行了,一定要找各种机会和途径来提高自己其它能力,交际能力,口才什么的,这些在今后会非常非常有用的,有时候比专业知识还有用
。选择了自己的路就不要犹豫,要勇敢地走下去,要知道大学里更多的人是根本找不到自己的路。你也可以完全学技术,如果真的成为了高手,还需要去辛苦地维护人际关系拼命
地把脸皮脸厚吗?不用,到时候是公司追着要你,哪怕你是个哑巴。不是每个岗位都一定要能说会道的。当然要想成为高手绝不是一天两天的事情,而且绝不是轻轻松松就能成功
的。我认识一个学长,大二的,每天学习到一两点,现在大三大四能达到他那水平的人绝对没有多少。

建筑,医学什么的现在应该都是很热门的吧!去年这个时候家人都叫我要么学建筑里的工程造价要么学医学里的临床医学,呵呵!当然,至于热门和非热门,由于我是个感情用事
的人,所以并不会去在意这些,而只是根据自己的兴趣。总之,学技术一定要学到真材实料。

非技术篇:

非技术方向主要包括:哲学,经济学,法学,教育学,文学(艺术,音乐,美术,传媒,外语),历史学,理学(数学,物理,化学,天文,地理,生物),军事学,管理学(工
商,会计,企业)

如果你认为学技术出路窄,工作累,工资低,像书呆子,那么,恭喜你,你的想法很对,很符合社会的潮流,相信你也能在这一块儿做得很出色的。(额,非技术的东西,好像就
只有管理学和文学是正常人学的,其它的,呵呵。。。)

有许多同学在刚进大学的时候都去尝试过竞选学生会、各种社团的干事与干部。事后,有许多同学都发出了这样的感慨:不公平,做什么都要凭关系。没办法,学校尚且如此,社
会又怎样呢?社会上对权术、关系、金钱玩得更彻底,不学会这些凭什么在社会上立足,权利,关系,钞票总得要有一样。

既然选择非技术,那就不要去工科的大学,比如重庆邮电大学(这样说了我们学校的妹子又少了)去工科大学不会为你的人脉和能力增加多少筹码的,因为这类大学的人极少数会
成为精英,而且在这样的环境里锻炼不到你,就去非工科的大许多吧,去那里,以后你的朋友就遍布天下,而且都是管理什么的,到时候到哪里都会有人来帮你顺水推舟。

额。。。由于我学的是计算机专业,所以对于这块儿感受不深,大家一定要去虚心请教呀,呵呵。。

选学校:

学校,呵呵,或许专业每个学校都有高有低,但其实学校才是大人最在意的,额。。。好吧,既然是大人在意的,你就别管大人的愿望了(当然,大人们看问题的角度不一样,肯
定还是有参考价值的,别一味地拒绝)

所谓的名校(额,我这文章不是给600分以上的人看的哈,所以别去想了)顺便纠正一下211,985的认识,确实,他们会在很多方面获得国家的支持,但又怎样呢?其实
现在有很多学校的教学质量都或多或少地超过了这种院校,只不过国家的规定好像是不会再增加这类学校的名额了。再次,你们有木有发现有些省市的211,985很少,有的
却很多呢?其实吧,有些只有一所211,985的院校或许只是国家给他们省面子而扶持了一下,其教学质量或许根本不高,当然,从另一方面来讲,那所学校多半都是本省最
好的学校,也就是说至少是那一个省最重视的学校了。

总之,我个人认为选专业比选学校重要。引用一段话“每年高考出分的时候,哭一批笑一批,惨淡一批灿烂一批,那些难过的人以为自己下了地狱,那批高兴的人也以为自己真的
到了天堂。只有上过大学的才知道,再SB的大学一样可以努力,再NB的大学也充斥着堕落。谁也别哭闹,四年后的风骚,谁的天下,都别说得太早。阴差阳错也许比如愿以偿
更让人成长。”

其次,对于走得远还是就在本地,这个就不好说了,因人而异,可以去问问过来人的体会。我先说说,其实,最初我的想法是想去外省的,走得越远越好,像龚卫那样,但家长那
个固执呀,懒得和他们争了(当时也最反对我读计算机,到最后的决定是我选专业,他们选学校)其实他们也不完全是担心我,确实如他们所说,在重庆读大学无论我学得怎样,
找工作都比在外面好找点。也不想在外面读了四年连当地的口音都学不会,最后还回来重庆,一个同龄的熟人都认求不到,当然考研回来还是不错的,至少研究生的很多工作可以
帮助你迅速地在本地认识很多人(但,或许这些人永远不可能像同学那样和你密切了)。至于别人的感受去问问@龚卫 (要说点积极的哈)

还有,很多人说有些大学通宵不断网,不上早晚自习,食堂好吃,消费低,额,其实这都是人家的调侃,这些就不用考虑了(当然,或许是因为我在重邮12个平方的寝室住过,
7:10的早自习都山谷go,我肯定很乐观的)还有就是重庆热,MLGB,好吧,重庆确实热,还TM没什么空调,但其实吧,我们是来学习的,不是来享受的,孩子们,先
苦后甜呀。

以下是李开复的建议:

1\. 不要只看学校不看专业,进了名校但是学一个你痛恨的专业是不值得的

2\. 花一些时间咨询你可能有兴趣的专业,如果比较确定,可以把这些专业填在前面

3\. 在报考大学专业时,千万不要选择自己一定不会感谢兴趣的专业。就算你不知道自己对什么有兴趣,你至少应该知道自己对什么没有兴趣吧?如果你不确定,做一些简单
的咨询,就会很清晰了。

4\. 选择一些相对广阔、选择度较大的系,因为知识面广的专业在今后使你会有更多的职业选择,例如:计算机系、化学系、中文系等等。

5\. 对于领域相对比较狭窄的科系,除非你非常确定这就是你的志向,否则千万不要浪费四年的光阴去学习。

6\. 如果有些学校看起来差不多,把那些可以让学生转系的学校填在最前面,这样万一你发现了新的兴趣,入学后还有机会转系。还有些学校允许一个学院里面的学生在大二
后挑选读任何一个学院里的系,这种学校也应该优先考虑。

7\. 把不随便调剂学生志愿专业的学校填在较前面,尽量避免填那些随便调剂学生志愿专业的学校。

顺便把我填的志愿贴上(注:虽然这确实是当年我填的志愿,不过纯属娱乐哈,其实吧,我也挺后悔的,应该把清华填在第一的,不然就不会先被重邮录取了,唉)




致高考的朋友们

Posted on 2013-06-11 | In 边走边想 | | Views:

或许我的年龄比你们还小,或许我的阅历并不丰富,或许我对大学还了解得不深,但毕竟我已经真真切切地从高考走到了现在,经验也好,吐槽也罢,不求为你们的人生引路,但
求能为你们拨开一些前面的迷雾,对以后能有更清晰的认识。 其实,很早就想先把这些体会给写上来,不过我是明日复明日的,所以现在才写,唉,偏偏四级考试和期末考试马
上就要来了,这几天天天泡图书馆,这几篇日志都是在匆忙中完成的,所以写得不怎么好,都很平淡的,你们反正也没事,就当茶余闲谈吧。 在高考结束到知道成绩前这段时间
真的不要想着去打工,该玩就玩呗,本地的玩完了就去外面旅游去,有什么聚会也尽量地去,你们应该都还没意识到你们离开了天堂吧,高考只是痛苦人生的一个开始,不要想着
所谓的以后常联系,不要以为大学比高中更闲,无数的论文、无数的活动、无数的不得不给上级看的成绩会压得你喘不过气来,那时候,你连给家里打电话都会觉得忙不过来,那
时候你才会发现,除了最好的几个朋友之外,其他的朋友后根本不会主动联系你(额。。。好像透露了很多大学的真相,就此打住一下,以免打破你们对大学的憧憬)反正好好玩
吧!不过,别玩过头了,不要喝太多,不要上通宵,不要做过激的事情,不想让你的人生定格在高考结束,呵呵!珍惜友谊吧,在我看来,友谊这东西从初中到大学,感情会越来
越淡的,大学或许没什么友谊可言。 还有,有喜欢的人就去表白吧,这时候的爱情真的很美,以后。。。(额,就不说反面的东西了),反正如果暗恋了人家那么久到最后她却
不知道你会后悔的,不过这也是很多人必须走过路。还有曾经因为学习而分手的恋人,主动去找ta和好吧,所谓的“应该学习的时间”已经过去了,不要等着对方主动来找自己
,有些人有些事错过了就是一辈子,为什么不坦然面对,缘分有时候也要靠争取。

然后就是有空想想以后自己想学什么专业,在还不知道分的情况下,就有空想想想读什么专业吧,如果没有确定的目标,那就先想想是工科还是理科,是学技术还是学管理等。(
这里我也写了些东西的,不过这几天都在复习呀,等几天再打上来吧)无论怎样,在这阶段应该好好剖析一下自己,了解自己对什么感兴趣,以后想成为什么人,是否会一直走在
追求梦想路上,高考,不是梦想的结束,而是梦想真正的开始。
额。。。其实@龚卫也是要写的,哲学家兼心理学家肯定比我讲得好,期待呀

——本文最早发表于QQ空间

Vim 教程

Posted on 2013-06-06 | In tools | | Views:

VIM

在编辑界一直有两大传说:Vim——编辑器之神,Emacs——神之编辑器。而我是坚定的VIM党,至今都没用过emacs,垃圾nano倒是用过。我平时用vim的功能用得不多,其实我只是初学者,基本入门而已。这里不列举太多功能,用到的时候再说吧。

常用快捷键

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
30
31
32
# 插入
o # 在下面添加一行,并进入编辑模式
# 查找替换
:%s/源字符串/目的字符串/g # 全局替换
:%s/^/呵呵 # 在每行行首添加字符串
:%s/$/呵呵 # 在每行行尾添加字符串
# 复制粘贴
## 复制所选择的字段
1. 在要复制的地方,按"v"进入可是模式
2. 移动到最后,按"y"复制选中的文本
3. 按"p"粘贴
## 复制整行
1. 按yy复制当前行
2. 命令行模式按p粘贴
# 快速跳跃
$: 快速跳到行尾
0: 快速跳到行首
# 删除
22 40 dd # 删除指定行范围的行
gg然后dG # 清空文件内容(先跳到第一行)
## 纵向删除
ctrl + v 进入选择模式
d 删除选择的地方
# 纵向编辑列
ctrl + v 进入选择模式,选择要编辑的行
shift + i 执行编辑操作,这时候只会在一行上编辑
两次ESC 所有行都和那一行一样了

动态配置

1
2
3
:set nu # 显示行号
:set nonu # 取消显示行号
:set paste # 设置为粘贴模式,这样在粘贴的时候tab和空格才能正确。。。

配置文件/etc/vim/vimrc

# 可添加如下这些选项
set autoindent      ; 自动缩进
set number          ; 显示行号
set nonumber        ; 取消显示行号
set smartindent     ; 智能对齐
set tabstop=4       ; tab键设置为4个空格宽度
set background=dark ; 如果感觉太暗可以使用这个(比如deepin默认的那个主题)
添加自动缩进: set autoindent

Chrome教程,谷歌浏览器插件推荐

Posted on 2013-01-01 | In tools | | Views:

作为一个谷歌的”中毒”用户,用五年的使用经验告诉大家,谷歌浏览器真的是世界上最好的浏览器。该有的插件都有,该有 的调试功能都有,开源的不开源的也都有。至于很多人吐槽谷歌的唯一缺点: 内存占用大的问题,当我切换到Mac上以后就不再关心这个问题了,因为在mac上,内存占用越大,基本上可以保证程序运行越快,谷歌有理由占用大内存。 用过这么多年的谷歌浏览器,已经向多人安利了它,使得他们纷纷放弃原来的浏览器,毕竟,每次他们问我问题的时候,我基本上用谷歌都能快速地调试出来。谷歌浏览器也一次又一次地让我有互联网的未来入口都在浏览器的错觉,直到后来,微信出现了。。。

谷歌插件推荐

  • Adblock Plus:屏蔽广告插件,真的不是有意的,确实有些网站做得有点过分了,看一分钟视频得先看一分钟广告,有些网站不登陆还不准看,更有甚者看到一半给你插一段广告。。。

  • EditThisCookie: 快速查看与编辑Cookie,web站点调试利器

  • JSON Editor:JSON编辑器,可快速格式化Json字符串

  • JSONView: 如果web内容是纯json字符串,那么会被自动格式化为友好的Json格式

  • LastPass:值得信赖的保存和生成网站密码的插件,只要一个主密码,可以保存所有其它的密码,而且能记住你输入的密码,这样在新打开网页的时候可以直接选择,而且还有安全日记功能,可以保存其它一些重要的信息

  • Nimbus Screenshot and Screencast: 网页截图工具,可实现浏览器内部的滚动截图

  • Octotree:可以在浏览Github的时候在左边显示目录树

  • OneTab:不用在关闭的时候把打开的标签保存成书签了,一键把当前打开的所有网页变成稍后阅读

  • Postman:谷歌上非常好用的调试工具,可以模拟各种GET和POST等操作,调试利器

  • Proxy SwitchyOmega:谷歌上的代理软件,你懂的

  • Requestly:重定向HTTP请求,不仅可以重定向到不同的host(很多情况改hosts就够了),而且能够将一个url重定向到另外一个url,使得结果完全和另外一个url相同

  • Tampermonkey: 油猴脚本,可以设定在适当的情况下在当前的网页执行某段js代码,例如自动登录、自动抢票等,简直太方便了

  • Text Mode:将当前网页以黑白文本方式显示,不显示图片

  • Vimium:用vim的方式浏览网页,炫酷,按下f键即可选择当前网页的链接

  • Vysor:在PC端浏览手机,Mac无法使用

  • Wappalyzer:可以查看当前浏览的网站所采用的框架,前端后端都能识别,比如bootstrap、wordpress等

  • 惠惠购物助手:在网购浏览商品的同时,自动对比其它优质电商同款商品价格,并提供商品价格历史,防止被坑

  • 眼不见心不烦:微博插件,屏蔽了一些神烦的东西

常用快捷键(Mac)

  • Ctrl + F:查找网页内容
  • Ctrl + N: 新打开标签页
  • Ctro + w: 关闭当前标签页
  • ⌘-Option-U: 查看网页源代码

奇淫技巧

  • 调试的时候保留浏览器请求:
    调试的时候保留浏览器请求

  • 直接复制请求的cURL: cURL能做到一切你想要的,有了cURL就可以方便地写爬虫代码了

    ![从Chrome复制cURL](http://ojccjqhmb.bkt.clouddn.com/chrome-1.jpg)
    
  • 直接在搜索框使用多个搜索引擎: 众所周知,Chrome顶部最方便的搜索框只能有一个默认的搜索引擎,就是谷歌自带的,但是如果你要查找什么无聊的东西需要用到百度,这里有个比直接到百度网站更方便的方法: Chrome设置->搜索->管理搜索引擎,这里可以设置默认的搜索引擎也可以增加其他的搜索引擎,例如我这里的设置,g表示用google搜索,b表示用百度搜索:

    ![Chrome设置搜索引擎](http://ojccjqhmb.bkt.clouddn.com/chrome_3.jpg)
    
    这样如果我想在顶部搜索框直接使用百度搜索就可以这样:
    ![谷歌浏览器里面使用百度搜索](http://ojccjqhmb.bkt.clouddn.com/chrome_2.jpg)
    

高端操作

chrome://net-internals

查看浏览器的网络相关设置,例如Proxy,DNS、Sockets等,在这里可以查看谷歌加载的nameservers,以及域名解析的缓存,可以在这里清除host缓存。

浏览器管理

  • chrome://dns/ :显示DNS状态
  • chrome://cache/:查看缓存状态
  • chrome://flags/#enable-tab-audio-muting: 设置是否开启网页标签的静音功能,这样可以针对单独的标签设置静音
  • chrome://memory-redirect/ :查看内存信息

TroubleShooting

  • 谷歌浏览器提示输入密钥环: 其实在装完系统第一次打开谷歌浏览器的时候会提示设置密码的,只是当时我们不知道是什么密码,就把管理员密码输进去了,导致每次打开浏览器都得再输入一次。
    方法一:取消开机自动登录
    方法二:在终端输入seahorse(如果未安装就安装),打开该软件后,点击菜单栏的视图——根据密钥环——默认密钥点右键,然后把该密码设置为空。seahorse是一个GNOME程序,用于管理加密密钥,主要功能有创建和管理PGP keys、SSH keys,在密钥服务器发布及获取密钥,缓存密钥密码(这个功能使得我们在使用浏览器登陆某些网站时不用每次都输入密码)、备份密钥及密钥环

那一年的梦想

Posted on 2012-06-08 | In 边走边想 | | Views:

那一年我们的梦想,梦想当画家、科学家或者宇航员
那时候,我们在幼儿园的图书室向老师畅谈
那一年我们的梦想,梦想住高楼 开汽车
或者想妈妈一样穿着高跟鞋 或者想爸爸一样夹着公文包
那时候,我们在小学的校门前向爸妈分享
那一年,我们的梦想,梦想着不做值日生 多节体育课
或者永远没有补习班
那时候,我们在中学的课后向朋友诉说
那一年,我们的梦想,梦想着考大学,谈恋爱
或者在流浪中享受自由
那一年,我们在高中的课桌旁向同桌闲扯
那一年,我们的梦想,梦想着有一份工作,一个爱人
或者在陌生的城市建一个自己的家
那时候,我们在大学的操场上向天空呐喊

那一年我们的梦想离我们这么近,却又那么遥远
那一年我们的梦想被多少人忘却
又被多少人埋在心底
那一年我们的梦想承受着多少无从选择
又经受着哪些无奈彷徨
那一年我们的梦想几分孤独伴着几分落寞的凄凉
那一年我们的梦想在离我们多远的地方独自流浪

曾经梦想当作家的你,可能毕业就没再摸过那只爸爸送给你的钢笔
曾经梦想当记者的你,可能毕业就没再主动和人倾诉过你心里的话语
曾经梦想当设计师的你,可能毕业就没再关注过那些生活中创意的点点滴滴
曾经梦想当教师的你,可能毕业就没再碰过黑板和雪白的粉笔
曾经梦想当军人的你,可能毕业就没在任何地方站过一分钟军姿

你是否记得我们曾为了梦想和别人争执不休
你是否记得我们曾为了梦想寒窗苦读十几年
你是否记得我们曾为了梦想背着行囊离开自己的家乡
真想知道现在有多少人还抓着梦想不肯放手
真想知道现在有多少人运气好能朝着梦想的地方走

今年,我和很多朋友毕业了慨叹昔日光阴似箭日月如梭
今年,我和很多朋友毕业了恍惚中聊起这么多年被遗忘的那些儿时的梦想
今年,我和很多朋友毕业了才发现都没能如愿踏上梦想的路
今年,我和很多朋友毕业了磕磕绊绊中我们连自己的梦想都快日渐模糊
今年,我和很多朋友毕业了责备自己大学的时候究竟为了什么而忽略那些繁华的梦想
今年,我和很多朋友毕业了那些梦想让我们沉默的哭了

不知道有多少人在这个城市忘记了自己最初的梦想
不知道有多少人如我们一样记起梦想的时候会泪流满面

其实,有的时候我们的梦想很简单
梦想有稳定的收入
梦想过简单的生活
梦想靠自己的双手为自己爱的人打造一个未来
梦想在陌生的城市有一个家
梦想那位我们忙活了大半辈子的父母过上好一点的生活
只有我们知道,在面对很多困难和挑战的时候
我们咬着牙坚韧生活的时候
我们所做的一切并不仅仅是为了我们自己
而更多的是为了我们的父母为了我们的爱人
为了他们 我们起早他黑
为了他们 我们省吃俭用
为了他们 我们从不提一个苦字
为了他们 我们背负了一切责任和使命

其实,有的时候,我们的梦想很伟大
梦想拥有一段不平凡的人生辉煌
梦想缔造行业的一个奇迹
梦想引领正义是那些困苦中的人们冲破黑暗
梦想帮助更多的人实现他们的梦想
但是无论怎样,只要我们还记得自己的梦想,就不要放弃对他的追逐
我相信 不管经历多少磨难,我们终究可以实现自己的梦想
因为,他就在不远的地方观望着我们
想他勇敢的飞奔过去

加油吧,不要因为昨天的沮丧而令今天的梦想黯然失色
也不要因短暂的忙碌奔波而忘了我们来时的路

本文内容来自于一个叫《那一年的梦想》的视频,是我在高考前摘录的,在2012年6月8日下午三点半发表于QQ空间,那时候我正坐在高考最后一堂的考场里,其实是定时发送的。现在看来,这篇文章依然是那么的让人热血沸腾!

等了好久终于等到今天

Posted on 2012-02-07 | In 那时年少 | | Views:

十几年的风风雨雨,坚持到底,终于让我们看到的底底了!很快了! 还有四个月,没错,刚好是四个月!
我们不用再唱”梦想总是遥不可及”了,如今他离我们就这么近,我们从来没有离他这么近过!
虽然六百分怎么算都不难,但我们都没有实现过,不过没事,还早着呢!实力,运气,人品,我哪样会比别人差? 等了好久终于等到今天,梦了好久终于要把梦实现
那些冷漠的人,谢谢你们曾经看轻我,让我不低头,更精彩的活 2012,如果考撇了,就让我伴随着地球一起毁灭吧!哈哈哈哈哈!
为了我们爱的人,为了爱我们的人,也为了那些曾经有梦想而没有实现的人, 让我们努力吧,让我们试一下吧,为了以后不那么后悔!

——本文最早发表于QQ空间

缘来还是她

Posted on 2011-03-06 | In 那时年少 | | Views:

再一次的,我相信了缘!昨晚梦到有人说第一个看到我换新衣服的人就是我一生的爱!今天来学校时,本以为是我们班那位红衣少女,因为当时她就站在马路对面,结果过马路时
,她却上了公交车!然后又想让兄弟们看,结果…………………………
缘 来 还 是 她

——本文最早发表于QQ空间

1…242526
haofly

haofly

豪翔天下的个人博客

256 posts
23 categories
1 tags
RSS
GitHub E-Mail 微博 StackOverflow
编程高手
  • Phodal
  • ResolveWang's Blog
  • QINGGUOING
  • 一只很酷的蘑菇
  • 勤杂工运维博客
  • Kaleo's Blog
  • Xiang's Blog
© 2013 — 2018 haofly
Powered by Hexo
|
Theme — NexT.Pisces v6.0.4