4. static有什么用途?(请至少说明两种)
1.限制变量的作用域
2.设置变量的存储域
7. 引用与指针有什么区别?
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
2) 不存在指向空值的引用,但是存在指向空值的指针。
8. 描述实时系统的基本特性
在特定时间内完成特定的任务,实时性与可靠性
9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在堆栈
10. 什么是平衡二叉树?
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1
11. 堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源
12. 什么函数不能声明为虚函数?
constructor
13. 冒泡排序算法的时间复杂度是什么?
O(n^2)
14. 写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)
16. Internet采用哪种网络协议?该协议的主要层次结构?
tcp/ip 应用层/传输层/网络层/数据链路层/物理层
17. Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析协议)
18.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做
3.不能做switch()的参数类型是:
switch的参数不能为实型。
华为
阅读全文
1.限制变量的作用域
2.设置变量的存储域
7. 引用与指针有什么区别?
1) 引用必须被初始化,指针不必。
2) 引用初始化以后不能被改变,指针可以改变所指的对象。
2) 不存在指向空值的引用,但是存在指向空值的指针。
8. 描述实时系统的基本特性
在特定时间内完成特定的任务,实时性与可靠性
9. 全局变量和局部变量在内存中是否有区别?如果有,是什么区别?
全局变量储存在静态数据库,局部变量在堆栈
10. 什么是平衡二叉树?
左右子树都是平衡二叉树 且左右子树的深度差值的绝对值不大于1
11. 堆栈溢出一般是由什么原因导致的?
没有回收垃圾资源
12. 什么函数不能声明为虚函数?
constructor
13. 冒泡排序算法的时间复杂度是什么?
O(n^2)
14. 写出float x 与“零值”比较的if语句。
if(x>0.000001&&x<-0.000001)
16. Internet采用哪种网络协议?该协议的主要层次结构?
tcp/ip 应用层/传输层/网络层/数据链路层/物理层
17. Internet物理地址和IP地址转换采用什么协议?
ARP (Address Resolution Protocol)(地址解析协议)
18.IP地址的编码分为哪俩部分?
IP地址由两部分组成,网络号和主机号。不过是要和“子网掩码”按位与上之后才能区分哪些是网络位哪些是主机位。
2.用户输入M,N值,从1至N开始顺序循环数数,每数到M输出该数值,直至全部输出。写出C程序。
循环链表,用取余操作做
3.不能做switch()的参数类型是:
switch的参数不能为实型。
华为
阅读全文
http://blog.chinaunix.net/u2/74524/showart_1137527.html
tftp服务的安装,对于RedHat9.0,tftp 的RPM包在安装光盘的第三张盘下,可以用mount /dev/cdrom mnt/cdrom 将其挂载后,拷贝到/home/work目录下
安装
rpm -ivh tftp-server-0.32********
rpm -ivh tftp-0.32*******(这个包是客户端登陆tftp服务器所需要的)
安装完后,进行配置及开启服务
在linux下,不管使用的是哪一种super-server,inetd或者xinetd,默认情况下TFTP服务是禁用的,所以要修改文件来开启服务。
切换到cd /etc目录下
打开tftp服务的配置文件
命令为emacs xinedt.d/tftp
修改后的文件如下:
对应的部分参数说明
修改项server_args= -s <path> -c,其中<path>处可以改为你的tftp-server的根目录,参数-s指定chroot,-c指定了可以创建文件
保存后退出
切换目录 cd /home/work
建立tftp的启动目录 tftpboot
mkdir tftpboot
然后重新开启tftp服务
命令为:service xinetd restart
这样,tftp-server就启动了。
你可以用查询命令看tftp服务是否开启
netstat -a | grep tftp
显示结果为
udp 0 0 *:tftp *:*
表明服务已经开启
你可以登陆本机测试以下,命令如下:
#tftp your-ip-address
tftp>get <download file>
tftp>put <upload file>
tftp>q
这样你就在linux下建立了tftp服务器,u-boot可以直接登录到你的主机上了,不用再切换到windows下用tftpd32.exe来建立服务器了。
安装
rpm -ivh tftp-server-0.32********
rpm -ivh tftp-0.32*******(这个包是客户端登陆tftp服务器所需要的)
安装完后,进行配置及开启服务
在linux下,不管使用的是哪一种super-server,inetd或者xinetd,默认情况下TFTP服务是禁用的,所以要修改文件来开启服务。
切换到cd /etc目录下
打开tftp服务的配置文件
命令为emacs xinedt.d/tftp
修改后的文件如下:
service tftp
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/work/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}
{ socket_type =dgram
protocol =udp
wait =yes
user =root
server =/usr/sbin/in.tftpd
server_args =-s /home/work/tftpboot -c
disable =no
per_source =11
cps =100 2
flags =IPv4
}
对应的部分参数说明
修改项server_args= -s <path> -c,其中<path>处可以改为你的tftp-server的根目录,参数-s指定chroot,-c指定了可以创建文件
保存后退出
切换目录 cd /home/work
建立tftp的启动目录 tftpboot
mkdir tftpboot
然后重新开启tftp服务
命令为:service xinetd restart
这样,tftp-server就启动了。
你可以用查询命令看tftp服务是否开启
netstat -a | grep tftp
显示结果为
udp 0 0 *:tftp *:*
表明服务已经开启
你可以登陆本机测试以下,命令如下:
#tftp your-ip-address
tftp>get <download file>
tftp>put <upload file>
tftp>q
这样你就在linux下建立了tftp服务器,u-boot可以直接登录到你的主机上了,不用再切换到windows下用tftpd32.exe来建立服务器了。
对于一个人自身的存在,何者是有意义的,他自己并不知晓,并且,这一点肯定也不应该打扰其他人。一条鱼能对它终生畅游其中的水知道些什么?
苦难也罢,甜蜜也罢,都来自外界,而坚毅却来自内部,来自一个人自身的努力。在很大程序度上,我都是受我的本性的驱使去做事情。为此而获得太多的尊敬和热爱,让人感到羞愧。仇恨之箭也射向了我,但从未伤害我,因为它们从某种程度上属于另一个世界,而我与之没有多少关联。
我孤寂地生活着,年轻时痛苦万分,而在成熟之年却甘之如饴。
苦难也罢,甜蜜也罢,都来自外界,而坚毅却来自内部,来自一个人自身的努力。在很大程序度上,我都是受我的本性的驱使去做事情。为此而获得太多的尊敬和热爱,让人感到羞愧。仇恨之箭也射向了我,但从未伤害我,因为它们从某种程度上属于另一个世界,而我与之没有多少关联。
我孤寂地生活着,年轻时痛苦万分,而在成熟之年却甘之如饴。
第一题:两个运放,一个同相连的,一个反相连的,求输入与输出的关系,这个不难,一会就出来了,搞定10分;
第二题:好像是模电书上的一个,有关三极管饱和截止的,提出了输出电压与电流的要求,求两个电阻的取值;做是做了,但不知对不对,也没把握,10分
第三题:高频当中的,一个电阻与电容的串联将其等效为电阻与电容的并联,要求推导,不会;这个后来回来和同学说,他们还说是一个作业题,高频课基本上没听,这个就没戏了。
第四题:两个运放,有反馈,连接是一个的输入是另一个的输入,输出是另一个的输入,中间还有些电阻,求放大倍数与输入阻抗,不会做;
第五题:用555定时器搭建的多谐振荡器,充放电时间由555中的三极管的截止与饱和来控制时间不一样,第一问填很多空,5分;第二问画参考电压,图像3分,第三问要求求充放电时间了,也就是周期,三要素法记不住公式了,基本没戏了,12分,这问做不上;
第六题:用51单片机的P0口的三个端口来控制74HC595(移位寄存器)来控制一个数码管从0显示到9,要求肉眼能看清变化,数码管是共阴的。
这个没问题,搞定,不过刚开始写程序时,没有把数码管的0~9的码表写上去,后来交卷后发现忘了,就用了定义了一个空数组,留在那没写。
第七题:C语言的数据结构题,FIFO,前两问简单,第三问记不清了,但是也没去做了。
第二题:好像是模电书上的一个,有关三极管饱和截止的,提出了输出电压与电流的要求,求两个电阻的取值;做是做了,但不知对不对,也没把握,10分
第三题:高频当中的,一个电阻与电容的串联将其等效为电阻与电容的并联,要求推导,不会;这个后来回来和同学说,他们还说是一个作业题,高频课基本上没听,这个就没戏了。
第四题:两个运放,有反馈,连接是一个的输入是另一个的输入,输出是另一个的输入,中间还有些电阻,求放大倍数与输入阻抗,不会做;
第五题:用555定时器搭建的多谐振荡器,充放电时间由555中的三极管的截止与饱和来控制时间不一样,第一问填很多空,5分;第二问画参考电压,图像3分,第三问要求求充放电时间了,也就是周期,三要素法记不住公式了,基本没戏了,12分,这问做不上;
第六题:用51单片机的P0口的三个端口来控制74HC595(移位寄存器)来控制一个数码管从0显示到9,要求肉眼能看清变化,数码管是共阴的。
这个没问题,搞定,不过刚开始写程序时,没有把数码管的0~9的码表写上去,后来交卷后发现忘了,就用了定义了一个空数组,留在那没写。
第七题:C语言的数据结构题,FIFO,前两问简单,第三问记不清了,但是也没去做了。
http://memory.zol.com.cn/111/1111748.html
添加到whell组有两种方式:
1.修改在/etc/passwd
或者:vipw 将组改成0
找不到则:whereis vipw
cd到目录然后:vipw即可!
2.visudo
whereis visudo
然后:
# User alias specification
User_Alias USER_G01 = yunfeng,hongliang1,mazhen,jianxin,xubin,xiangdong2
关于进入Mysql:
mysql> show databases'
'> ;
'>
由于'没有闭合,再输入';即可推出到:
mysql>(Ctrl+z)
terminal:
0> jobs -l
[1] 7787 Stopped mysql -h10.69.3.198 -P4406 -uqwe -p123 -A relation
[2] 8082 Stopped mysql -h10.69.3.198 -P4406 -uqwe -p123 -A relation
fg 1 or 2 回去!
1.修改在/etc/passwd
或者:vipw 将组改成0
找不到则:whereis vipw
cd到目录然后:vipw即可!
2.visudo
whereis visudo
然后:
# User alias specification
User_Alias USER_G01 = yunfeng,hongliang1,mazhen,jianxin,xubin,xiangdong2
关于进入Mysql:
mysql> show databases'
'> ;
'>
由于'没有闭合,再输入';即可推出到:
mysql>(Ctrl+z)
terminal:
0> jobs -l
[1] 7787 Stopped mysql -h10.69.3.198 -P4406 -uqwe -p123 -A relation
[2] 8082 Stopped mysql -h10.69.3.198 -P4406 -uqwe -p123 -A relation
fg 1 or 2 回去!
并发编程:
———————————————————————————————————————————————————————————
最近有个项目需要用file_put_contents函数写txt文件,由于需要频繁操作,所以经常出现前半截内容缺失的情况,非常苦恼。
后来查询资料发现,file_put_contents函数有个参数LOCK_EX非常有用,加上它之后,再也没有出现过内容缺失的情况了。
这个参数LOCK_EX的意思很直白,就是写文件时,先锁上这个文件,这样只允许某个客户端访问的时候写,其他客户端访问不能写了。
我的用法如下:
file_put_contents($file, $content, FILE_APPEND|LOCK_EX)
解释:
$file=>这个是写入文件的路径+文件名
$content=>这个是写入文件的内容
FILE_APPEND=>直接在该文件已有的内容后面追加内容
LOCK_EX=>写文件的时候先锁定,防止多人同时写入造成内容丢失
摘自:http://www.wyxuan.com/184.html
————————————————————————————————————————————————————————————————
PHP file_put_contents() 函数 写入txt文本函数:
定义和用法
file_put_contents() 函数把一个字符串写入文件中。
与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
语法
file_put_contents(file,data,mode,context)
参数 描述
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode
可选。规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context
可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
说明
参数 data 可以是数组(但不能是多维数组)。
自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
对 context 参数的支持是 PHP 5.0.0 添加的。
返回值
该函数将返回写入到文件内数据的字节数。
提示和注释
提示:使用 FILE_APPEND 可避免删除文件中已有的内容。
注释:本函数可安全用于二进制对象。
例子
<?php
echo file_put_contents("test.txt","Hello World. Testing!");
?>
输出:
26
说明
参数 data 可以是数组(但不能是多维数组)。
自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
对 context 参数的支持是 PHP 5.0.0 添加的。
返回值
该函数将返回写入到文件内数据的字节数。
提示和注释
提示:使用 FILE_APPEND 可避免删除文件中已有的内容。
注释:本函数可安全用于二进制对象。
来自:http://blog.sina.com.cn/s/blog_88441e630100tj60.html
<?php
//pup5新支持功能file_put_contents()
$content = '你好';
file_put_contents('file.txt',$content);
//file_put_contents($curl_url_info["error_log_file"],$url_get_str,FILE_APPEND);
//FILE_APPEND 追加写。。。
//输出json格式数据
$hello = array('1','2','3');
$helloJson = json_encode($hello);
//print_r($helloJson);
//exit;
echo <<<eot
<script language="JavaScript" type="text/JavaScript">
//在javascript中新建一个对象json_js,输出的代码为var json_js = ["1","2","3"];
var json_js = $helloJson;
//看看效果
//弹出窗口显示1
alert(json_js[0]);
alert(json_js[1]);
</script>
eot;
?>
//pup5新支持功能file_put_contents()
$content = '你好';
file_put_contents('file.txt',$content);
//file_put_contents($curl_url_info["error_log_file"],$url_get_str,FILE_APPEND);
//FILE_APPEND 追加写。。。
//输出json格式数据
$hello = array('1','2','3');
$helloJson = json_encode($hello);
//print_r($helloJson);
//exit;
echo <<<eot
<script language="JavaScript" type="text/JavaScript">
//在javascript中新建一个对象json_js,输出的代码为var json_js = ["1","2","3"];
var json_js = $helloJson;
//看看效果
//弹出窗口显示1
alert(json_js[0]);
alert(json_js[1]);
</script>
eot;
?>
———————————————————————————————————————————————————————————
最近有个项目需要用file_put_contents函数写txt文件,由于需要频繁操作,所以经常出现前半截内容缺失的情况,非常苦恼。
后来查询资料发现,file_put_contents函数有个参数LOCK_EX非常有用,加上它之后,再也没有出现过内容缺失的情况了。
这个参数LOCK_EX的意思很直白,就是写文件时,先锁上这个文件,这样只允许某个客户端访问的时候写,其他客户端访问不能写了。
我的用法如下:
file_put_contents($file, $content, FILE_APPEND|LOCK_EX)
解释:
$file=>这个是写入文件的路径+文件名
$content=>这个是写入文件的内容
FILE_APPEND=>直接在该文件已有的内容后面追加内容
LOCK_EX=>写文件的时候先锁定,防止多人同时写入造成内容丢失
摘自:http://www.wyxuan.com/184.html
————————————————————————————————————————————————————————————————
PHP file_put_contents() 函数 写入txt文本函数:
定义和用法
file_put_contents() 函数把一个字符串写入文件中。
与依次调用 fopen(),fwrite() 以及 fclose() 功能一样。
语法
file_put_contents(file,data,mode,context)
参数 描述
file 必需。规定要写入数据的文件。如果文件不存在,则创建一个新文件。
data 可选。规定要写入文件的数据。可以是字符串、数组或数据流。
mode
可选。规定如何打开/写入文件。可能的值:
FILE_USE_INCLUDE_PATH
FILE_APPEND
LOCK_EX
context
可选。规定文件句柄的环境。
context 是一套可以修改流的行为的选项。若使用 null,则忽略。
说明
参数 data 可以是数组(但不能是多维数组)。
自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
对 context 参数的支持是 PHP 5.0.0 添加的。
返回值
该函数将返回写入到文件内数据的字节数。
提示和注释
提示:使用 FILE_APPEND 可避免删除文件中已有的内容。
注释:本函数可安全用于二进制对象。
例子
<?php
echo file_put_contents("test.txt","Hello World. Testing!");
?>
输出:
26
说明
参数 data 可以是数组(但不能是多维数组)。
自 PHP 5.1.0 起,data 参数也可以被指定为 stream 资源,stream 中所保存的缓存数据将被写入到指定文件中,这种用法就相似于使用 stream_copy_to_stream() 函数。
对 context 参数的支持是 PHP 5.0.0 添加的。
返回值
该函数将返回写入到文件内数据的字节数。
提示和注释
提示:使用 FILE_APPEND 可避免删除文件中已有的内容。
注释:本函数可安全用于二进制对象。
来自:http://blog.sina.com.cn/s/blog_88441e630100tj60.html
1.新加通过curl的参数就知道是不是有bom在http头
2.对svn里加入 钩子来去掉里面的bom头。
3.对shell怎么去掉bom进行了摘录。 2013-08-14
一同事在输出XML的时候在firefox下没有问题,在IE下提示:
文档的顶层无效。处理资源 'http://public.sina.com.cn/message/program/application/1.php?uid=1&group=0&status=2&charset=utf-8&datatype=xm...
<?xml version="1.0" encoding="UTF-8"?>
^
蒙了,我找了整个她的哪个输出的php程序,都没有发现问题,但是在我将源代码保存后,通过editplus查看的时候,发现前面有一个不明飞行物,于是经过一步一步的调试发现原来在底层的数据层有一个utf8编码的bom,通过editplus看不出来,通过zend for eclipse6.1.*也看不出来,但是可以通过vi zend studio看到这个玩意!
vi 看到: <feff>
zend studio:看到一个小点。。。
zend studio 通过gbk编码:出现: 锘�
这种问题可以通过:notepad++ 的转换功能给转换为没有bom即可,完毕!
再次追溯原因:
通过svn查到,其出现这个原因是由于以下步骤操作导致的:
1.用记事本建立一个ansi的文本文件为phptest.php ,写入<?php ?>用zend studio打开没有发现问题。
2.然后通过记事本打开,另存为utf-8.用zend studio打开发现问题,<?php 前面出现 锘� (GBK编码打开是这样,设为uft-8后出现一个小点。。。)。
总结:
最后,我用记事本建立ansi文件,然后写入<?php ?>,再用editplus打开,然后通过另存为utf8,没有发现改问题,看来确实是记事本的问题!
最好用editplus建立utf8文件,谢谢!
如有bom输出会在setcookie的时候出现下面错误:Cannot modify header information - headers already sent by ....
如果在setcookie之前输出了任何文本内容,便会有上述错误提示。由于页面头部require了若干文件,一行行排查是很麻烦的事情!
解决方法如下:
我在该页面顶部加上:
在setcookie之前加上代码:
这是为了获取setcookie之前页面输出的内容。页面运行后,显示输出了一个空字符串,也就是说,setcookie之前没有任何输出。
避免方法:用vim打开了源文件,发觉vim有打开bomb选项,怀疑因此给代码添加了隐藏的字符串,关闭之: set nobomb
http://hi.baidu.com/jimmyhouse/blog/item/247dd517bb77040fc83d6d2f.html
http://www.phpq.net/research/php-utf8-bom.html
http://www.phpchina.com/html/80/t-37580.html
工作心得
对于上次邮件里面讨论到的PHP BOM问题,我来说来句就当心得吧,其实这个BOM问题一直在我们进行开发的时候经常出现,前些日子在企业邮箱里面第一次遇到这个问题,当时好像是企业的图标LOGO没有办法显示出来,因为<img src="img.php">,是img.php去读一个图片的内容然后给img显示,经过长仔细排查出现在输出图片资源前就有输出,那时候用的是notepad+editplus,最后用Zend studio来看这个文件头出现一个锘�字,证明了该问题。
第二次遇到BOM问题,是陈鑫鑫在纸条项目里面输出XML数据到IE浏览器中展现出现XML错误。
第三次也就是我们的记录APP调用外部接口返回用户的昵称出现乱码,经琳琳查也由BOM造成!
为何经常出现这种类似的问题,我看大家都在按照自己的方式来建立和开发PHP,特别是用Notepad来新建文件,系统默认在是ANSI格式,但我们的PHP编码是UTF-8的,于是又通过Notepad的另存为修改为UTF-8格式的,这样也就产生了一个BOM,最后,再用现在统一的开发工具Zend for eclipse去编辑这个带BOM的PHP文件,但BOM依然存在文件当中,它一般是表现不出任何问题,但一旦在页面前不能有输出的情况:如上面我遇到的三种情况它也就显现出来了。
BOM如此讨厌,该如何避免:
建议:
1. 切实统一开发工具:统一用Zend for eclipse 来新建PHP文件,和修改PHP文件编码!
2. 在项目完成后对目录里面所有的PHP 文件进行遍历驱出有可能出现的BOM。如:用sed批量替换掉bom:(syscore目录和所有下级目录的PHP文件替换)
补充:
bluexchen(陈胜益) 17:44:39
一:
用Shell如何清除一个目录下所有带BOM的文件中的BOM信息:
在Linux下的SVN中的文件,可能由于开发人员的编辑器的问题,上传上来后的文件带有utf8的BOM,会造成页面访问的问题,现在需要一个shell命令,一键清除一个目录下所有带BOM的文件中的BOM信息。
grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//g'
来自:http://www.dewen.org/q/4111
二:
使用Shell去除BOM:
发现有些文档在Shell下面处理的时候,第一个字节总是无法正常显示,出现乱码. 后来发现原来是BOM在作怪,BOM一共占用了3个字节. 通过UE可以在保存的时候,选择不保存BOM来去除.
但是我既然是在Linux下面做处理,为什么不直接通过Shell脚本来处理呢.查了资料之后发现下面的命令可以实现.
echo -ne '\xef\xbb\xbf123456' | awk '{if(NR==1)sub(/^\xef\xbb\xbf/,""); print}'
-ne是确保可以打印出16进制
\xef\xbb\xbf是UTF8 BOM的16进制表示
awk 后面命令意思就是,如果第一行是以UTF8 的BOM开头,则去除
BOM的详细解释
http://www.cnblogs.com/chengmo/archive/2010/10/30/1864004.html
来自:http://flyfoxs.iteye.com/blog/1485713
shell> curl -s http://phone.10086.cn/ | head -1 | sed -n l
\357\273\277<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional\
//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r$
如上所示,前三个字节分别是357、273、277,这就是八进制的BOM。
curl -s http://phone.10086.cn/ | head -1 | hexdump -C
00000000 ef bb bf 3c 21 44 4f 43 54 59 50 45 20 68 74 6d |...<!DOCTYPE htm|
00000010 6c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 |l PUBLIC "-//W3C|
00000020 2f 2f 44 54 44 20 58 48 54 4d 4c 20 31 2e 30 20 |//DTD XHTML 1.0 |
00000030 54 72 61 6e 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e |Transitional//EN|
00000040 22 20 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 |" "http://www.w3|
00000050 2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f 44 |.org/TR/xhtml1/D|
00000060 54 44 2f 78 68 74 6d 6c 31 2d 74 72 61 6e 73 69 |TD/xhtml1-transi|
00000070 74 69 6f 6e 61 6c 2e 64 74 64 22 3e 0d 0a |tional.dtd">..|
如上所示,前三个字节分别是EF、BB、BF,这就是十六进制的BOM。
注:用到了第三方网站的页面,不能保证例子始终可用。 实际做项目开发时,可能会面对成百上千个文本文件,如果有几个文件混入了BOM,那么很难察觉,如果没有带BOM的UTF-8文本文件,可以用vi杜撰几个,相关命令如下:
设置UTF-8编码:
:set fileencoding=utf-8
添加BOM:
:set bomb
删除BOM:
:set nobomb
查询BOM:
:set bomb?
如何检测UTF-8编码中的BOM呢?
shell> grep -r -I -l $'^\xEF\xBB\xBF' /path
如何删除UTF-8编码中的BOM呢?
shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q'
推荐:如果你使用SVN的话,可以在pre-commit钩子里加上相关代码用以杜绝BOM。
#!/bin/bash
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
for FILE in $($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}'); do
if $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | grep -q $'^\xEF\xBB\xBF'; then
echo "Byte Order Mark be found in $FILE" 1>&2
exit 1
fi
done
来自:http://huoding.com/2011/05/14/78
2.对svn里加入 钩子来去掉里面的bom头。
3.对shell怎么去掉bom进行了摘录。 2013-08-14
一同事在输出XML的时候在firefox下没有问题,在IE下提示:
文档的顶层无效。处理资源 'http://public.sina.com.cn/message/program/application/1.php?uid=1&group=0&status=2&charset=utf-8&datatype=xm...
<?xml version="1.0" encoding="UTF-8"?>
^
蒙了,我找了整个她的哪个输出的php程序,都没有发现问题,但是在我将源代码保存后,通过editplus查看的时候,发现前面有一个不明飞行物,于是经过一步一步的调试发现原来在底层的数据层有一个utf8编码的bom,通过editplus看不出来,通过zend for eclipse6.1.*也看不出来,但是可以通过vi zend studio看到这个玩意!
vi 看到: <feff>
zend studio:看到一个小点。。。
zend studio 通过gbk编码:出现: 锘�
这种问题可以通过:notepad++ 的转换功能给转换为没有bom即可,完毕!
再次追溯原因:
通过svn查到,其出现这个原因是由于以下步骤操作导致的:
1.用记事本建立一个ansi的文本文件为phptest.php ,写入<?php ?>用zend studio打开没有发现问题。
2.然后通过记事本打开,另存为utf-8.用zend studio打开发现问题,<?php 前面出现 锘� (GBK编码打开是这样,设为uft-8后出现一个小点。。。)。
总结:
最后,我用记事本建立ansi文件,然后写入<?php ?>,再用editplus打开,然后通过另存为utf8,没有发现改问题,看来确实是记事本的问题!
最好用editplus建立utf8文件,谢谢!
如有bom输出会在setcookie的时候出现下面错误:Cannot modify header information - headers already sent by ....
如果在setcookie之前输出了任何文本内容,便会有上述错误提示。由于页面头部require了若干文件,一行行排查是很麻烦的事情!
解决方法如下:
我在该页面顶部加上:
ob_start();
在setcookie之前加上代码:
ob_get_clean();
这是为了获取setcookie之前页面输出的内容。页面运行后,显示输出了一个空字符串,也就是说,setcookie之前没有任何输出。
避免方法:用vim打开了源文件,发觉vim有打开bomb选项,怀疑因此给代码添加了隐藏的字符串,关闭之: set nobomb
http://hi.baidu.com/jimmyhouse/blog/item/247dd517bb77040fc83d6d2f.html
http://www.phpq.net/research/php-utf8-bom.html
http://www.phpchina.com/html/80/t-37580.html
工作心得
对于上次邮件里面讨论到的PHP BOM问题,我来说来句就当心得吧,其实这个BOM问题一直在我们进行开发的时候经常出现,前些日子在企业邮箱里面第一次遇到这个问题,当时好像是企业的图标LOGO没有办法显示出来,因为<img src="img.php">,是img.php去读一个图片的内容然后给img显示,经过长仔细排查出现在输出图片资源前就有输出,那时候用的是notepad+editplus,最后用Zend studio来看这个文件头出现一个锘�字,证明了该问题。
第二次遇到BOM问题,是陈鑫鑫在纸条项目里面输出XML数据到IE浏览器中展现出现XML错误。
第三次也就是我们的记录APP调用外部接口返回用户的昵称出现乱码,经琳琳查也由BOM造成!
为何经常出现这种类似的问题,我看大家都在按照自己的方式来建立和开发PHP,特别是用Notepad来新建文件,系统默认在是ANSI格式,但我们的PHP编码是UTF-8的,于是又通过Notepad的另存为修改为UTF-8格式的,这样也就产生了一个BOM,最后,再用现在统一的开发工具Zend for eclipse去编辑这个带BOM的PHP文件,但BOM依然存在文件当中,它一般是表现不出任何问题,但一旦在页面前不能有输出的情况:如上面我遇到的三种情况它也就显现出来了。
BOM如此讨厌,该如何避免:
建议:
1. 切实统一开发工具:统一用Zend for eclipse 来新建PHP文件,和修改PHP文件编码!
2. 在项目完成后对目录里面所有的PHP 文件进行遍历驱出有可能出现的BOM。如:用sed批量替换掉bom:(syscore目录和所有下级目录的PHP文件替换)
find ./syscore -type f -name "*.php" -exec sed -i '1s/^\xef\xbb\xbf//' {} \;
<?
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
$basedir="./paper/tech/trunk/message"; //修改此行为需要检测的目录,点表示当前目录
$auto=0; //是否自动移除发现的BOM信息。1为是,0为否。
//以下不用改动
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>";
}
closedir($dh);
}
function checkBOM ($filename) {
global $auto;
$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
if ($auto==1) {
$rest=substr($contents, 3);
rewrite ($filename, $rest);
return ("<font color=red>BOM found, automatically removed.</font>");
} else {
return ("<font color=red>包含BOM</font>");
}
}
else return ("未发现BOM");
}
function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
?>
//此文件用于快速测试UTF8编码的文件是不是加了BOM,并可自动移除
//By Bob Shen
$basedir="./paper/tech/trunk/message"; //修改此行为需要检测的目录,点表示当前目录
$auto=0; //是否自动移除发现的BOM信息。1为是,0为否。
//以下不用改动
if ($dh = opendir($basedir)) {
while (($file = readdir($dh)) !== false) {
if ($file!='.' && $file!='..' && !is_dir($basedir."/".$file)) echo "filename: $file ".checkBOM("$basedir/$file")." <br>";
}
closedir($dh);
}
function checkBOM ($filename) {
global $auto;
$contents=file_get_contents($filename);
$charset[1]=substr($contents, 0, 1);
$charset[2]=substr($contents, 1, 1);
$charset[3]=substr($contents, 2, 1);
if (ord($charset[1])==239 && ord($charset[2])==187 && ord($charset[3])==191) {
if ($auto==1) {
$rest=substr($contents, 3);
rewrite ($filename, $rest);
return ("<font color=red>BOM found, automatically removed.</font>");
} else {
return ("<font color=red>包含BOM</font>");
}
}
else return ("未发现BOM");
}
function rewrite ($filename, $data) {
$filenum=fopen($filename,"w");
flock($filenum,LOCK_EX);
fwrite($filenum,$data);
fclose($filenum);
}
?>
<?php
/*
查找一个目录里面的UTF-8 Born 头
用法
/opt/bin/php GetUtf8Born.php {dir}
例如
/opt/bin/php GetUtf8Born.php /opt/www/
*/
$is_fix_file = 1; //定义是否修复文件 1 为不修复 2 为修复
$d = $_SERVER['argv'][1];
if (!is_dir($d)) exit("Not Dir\n");
$shell = "/usr/bin/find $d -type f";
$r = exec($shell, $s_r);
if(!empty($s_r))
{
foreach($s_r as $file)
{
if(GetBorn($file))
{
echo $file . "\n";
if($is_fix_file == 2)
{
FixBorn($file);
}
}
}
}
exit;
function FixBorn($file)
{
if(!is_file($file))
{
return false;
}
$file_base_name = basename($file);
$file_path = dirname($file);
$r = ReadF($file, $file_string);
if(!$r)
{
return false;
}
//Utf-8 头占用3个字符占位 去掉即可
$new_string = substr($file_string, 3);
//开始备份文件
if (!copy($file, $file_path . "/Utf8Bom_" . $file_base_name))
{
return false;
}
// 写入新文件
if(!WriteF($file, $new_string))
{
return false;
}
return true;
}
function ReadF($file, &$string)
{
$fp = fopen($file, "r");
if(!$fp)
{
return false;
}
while (!feof ($fp))
{
$string .= fgets($fp, 1024);
}
fclose($fp);
return true;
}
function WriteF($file, $string)
{
$fp = fopen($file, "w+");
if(!$fp || !is_writable($file))
{
return false;
}
if (!fwrite($fp, $string))
{
return false;
}
fclose($fp);
return true;
}
function GetBorn($file)
{
if(!is_file($file))
{
return false;
}
$fp = fopen($file, "r");
$s = fgets($fp, 64);
fclose($fp);
$s = trim(bin2hex($s));
//if (strpos($s, "efbbbf") !== false)
if (substr($s, 0, 6) == "efbbbf")
{
return true;
}
return false;
}
?>
/*
查找一个目录里面的UTF-8 Born 头
用法
/opt/bin/php GetUtf8Born.php {dir}
例如
/opt/bin/php GetUtf8Born.php /opt/www/
*/
$is_fix_file = 1; //定义是否修复文件 1 为不修复 2 为修复
$d = $_SERVER['argv'][1];
if (!is_dir($d)) exit("Not Dir\n");
$shell = "/usr/bin/find $d -type f";
$r = exec($shell, $s_r);
if(!empty($s_r))
{
foreach($s_r as $file)
{
if(GetBorn($file))
{
echo $file . "\n";
if($is_fix_file == 2)
{
FixBorn($file);
}
}
}
}
exit;
function FixBorn($file)
{
if(!is_file($file))
{
return false;
}
$file_base_name = basename($file);
$file_path = dirname($file);
$r = ReadF($file, $file_string);
if(!$r)
{
return false;
}
//Utf-8 头占用3个字符占位 去掉即可
$new_string = substr($file_string, 3);
//开始备份文件
if (!copy($file, $file_path . "/Utf8Bom_" . $file_base_name))
{
return false;
}
// 写入新文件
if(!WriteF($file, $new_string))
{
return false;
}
return true;
}
function ReadF($file, &$string)
{
$fp = fopen($file, "r");
if(!$fp)
{
return false;
}
while (!feof ($fp))
{
$string .= fgets($fp, 1024);
}
fclose($fp);
return true;
}
function WriteF($file, $string)
{
$fp = fopen($file, "w+");
if(!$fp || !is_writable($file))
{
return false;
}
if (!fwrite($fp, $string))
{
return false;
}
fclose($fp);
return true;
}
function GetBorn($file)
{
if(!is_file($file))
{
return false;
}
$fp = fopen($file, "r");
$s = fgets($fp, 64);
fclose($fp);
$s = trim(bin2hex($s));
//if (strpos($s, "efbbbf") !== false)
if (substr($s, 0, 6) == "efbbbf")
{
return true;
}
return false;
}
?>
补充:
bluexchen(陈胜益) 17:44:39
<?php
$aa = headers_sent();
var_dump($aa);
session_start();
if (isset($_SESSION['test_sess'])){
$_SESSION['test_sess']++;
}else{
$_SESSION['test_sess'] = 0;
}
echo $_SESSION['test_sess'];
?>;
$aa = headers_sent();
var_dump($aa);
session_start();
if (isset($_SESSION['test_sess'])){
$_SESSION['test_sess']++;
}else{
$_SESSION['test_sess'] = 0;
}
echo $_SESSION['test_sess'];
?>;
一:
用Shell如何清除一个目录下所有带BOM的文件中的BOM信息:
在Linux下的SVN中的文件,可能由于开发人员的编辑器的问题,上传上来后的文件带有utf8的BOM,会造成页面访问的问题,现在需要一个shell命令,一键清除一个目录下所有带BOM的文件中的BOM信息。
grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//g'
来自:http://www.dewen.org/q/4111
二:
使用Shell去除BOM:
发现有些文档在Shell下面处理的时候,第一个字节总是无法正常显示,出现乱码. 后来发现原来是BOM在作怪,BOM一共占用了3个字节. 通过UE可以在保存的时候,选择不保存BOM来去除.
但是我既然是在Linux下面做处理,为什么不直接通过Shell脚本来处理呢.查了资料之后发现下面的命令可以实现.
echo -ne '\xef\xbb\xbf123456' | awk '{if(NR==1)sub(/^\xef\xbb\xbf/,""); print}'
-ne是确保可以打印出16进制
\xef\xbb\xbf是UTF8 BOM的16进制表示
awk 后面命令意思就是,如果第一行是以UTF8 的BOM开头,则去除
BOM的详细解释
http://www.cnblogs.com/chengmo/archive/2010/10/30/1864004.html
来自:http://flyfoxs.iteye.com/blog/1485713
shell> curl -s http://phone.10086.cn/ | head -1 | sed -n l
\357\273\277<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional\
//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">\r$
如上所示,前三个字节分别是357、273、277,这就是八进制的BOM。
curl -s http://phone.10086.cn/ | head -1 | hexdump -C
00000000 ef bb bf 3c 21 44 4f 43 54 59 50 45 20 68 74 6d |...<!DOCTYPE htm|
00000010 6c 20 50 55 42 4c 49 43 20 22 2d 2f 2f 57 33 43 |l PUBLIC "-//W3C|
00000020 2f 2f 44 54 44 20 58 48 54 4d 4c 20 31 2e 30 20 |//DTD XHTML 1.0 |
00000030 54 72 61 6e 73 69 74 69 6f 6e 61 6c 2f 2f 45 4e |Transitional//EN|
00000040 22 20 22 68 74 74 70 3a 2f 2f 77 77 77 2e 77 33 |" "http://www.w3|
00000050 2e 6f 72 67 2f 54 52 2f 78 68 74 6d 6c 31 2f 44 |.org/TR/xhtml1/D|
00000060 54 44 2f 78 68 74 6d 6c 31 2d 74 72 61 6e 73 69 |TD/xhtml1-transi|
00000070 74 69 6f 6e 61 6c 2e 64 74 64 22 3e 0d 0a |tional.dtd">..|
如上所示,前三个字节分别是EF、BB、BF,这就是十六进制的BOM。
注:用到了第三方网站的页面,不能保证例子始终可用。 实际做项目开发时,可能会面对成百上千个文本文件,如果有几个文件混入了BOM,那么很难察觉,如果没有带BOM的UTF-8文本文件,可以用vi杜撰几个,相关命令如下:
设置UTF-8编码:
:set fileencoding=utf-8
添加BOM:
:set bomb
删除BOM:
:set nobomb
查询BOM:
:set bomb?
如何检测UTF-8编码中的BOM呢?
shell> grep -r -I -l $'^\xEF\xBB\xBF' /path
如何删除UTF-8编码中的BOM呢?
shell> grep -r -I -l $'^\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q'
推荐:如果你使用SVN的话,可以在pre-commit钩子里加上相关代码用以杜绝BOM。
#!/bin/bash
REPOS="$1"
TXN="$2"
SVNLOOK=/usr/bin/svnlook
for FILE in $($SVNLOOK changed -t "$TXN" "$REPOS" | awk '/^[AU]/ {print $NF}'); do
if $SVNLOOK cat -t "$TXN" "$REPOS" "$FILE" | grep -q $'^\xEF\xBB\xBF'; then
echo "Byte Order Mark be found in $FILE" 1>&2
exit 1
fi
done
来自:http://huoding.com/2011/05/14/78
private function setQueue($data,$q="MultiMsgSend") {
$str_url = 'http://10.210.71.85/send_message.php';
$data = "queuename={$q}&queuedata={$data}";
$ch_curl = curl_init ();
curl_setopt ( $ch_curl, CURLOPT_TIMEOUT, 3 );
curl_setopt ( $ch_curl, CURLOPT_HEADER, false );
curl_setopt($ch_curl,CURLOPT_POST,TRUE);
curl_setopt($ch_curl,CURLOPT_POSTFIELDS,$data);
curl_setopt ( $ch_curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch_curl, CURLOPT_URL, $str_url );
$str_return = curl_exec ( $ch_curl );
if ($str_return === false)
{
$this->setErrorNo(11);
return false;
}
curl_close ( $ch_curl );
return true;
}
$str_url = 'http://10.210.71.85/send_message.php';
$data = "queuename={$q}&queuedata={$data}";
$ch_curl = curl_init ();
curl_setopt ( $ch_curl, CURLOPT_TIMEOUT, 3 );
curl_setopt ( $ch_curl, CURLOPT_HEADER, false );
curl_setopt($ch_curl,CURLOPT_POST,TRUE);
curl_setopt($ch_curl,CURLOPT_POSTFIELDS,$data);
curl_setopt ( $ch_curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt ( $ch_curl, CURLOPT_URL, $str_url );
$str_return = curl_exec ( $ch_curl );
if ($str_return === false)
{
$this->setErrorNo(11);
return false;
}
curl_close ( $ch_curl );
return true;
}
发现MySQL的explain还是很有迷惑性的。
看下面两个sql的explain,(i,j)是tt的主键
mysql> explain select * from tt where i between 3 and 5 and j = 4\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tt
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 8
ref: NULL
rows: 8
Extra: Using where; Using index
1 row in set (0.00 sec)
mysql> explain select * from tt where i > 2 and i < 6 and j = 4\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tt
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 4
ref: NULL
rows: 8
Extra: Using where; Using index
1 row in set (0.00 sec)
看上去如果使用了between,那么MySQL可以用的索引的两列。但仔细的研究了一下,发现实际并不是这样。between 3 and 5可以写为(i>3 or i=3) and (i<5 or i=5),是这两个等号使用了两列,而大于和小于的判断仍然是index扫描,只用了一列。
再看另一个
mysql> explain select * from tt where i in (3,4,5) and j=4\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: tt
type: range
possible_keys: PRIMARY
key: PRIMARY
key_len: 8
ref: NULL
rows: 3
Extra: Using where; Using index
1 row in set (0.00 sec)
这个才是真正用了两列,可以看到这里估计的行数是3,而刚才两个是8。用 show status 可以看得更清楚一些:
mysql> show status like 'handler_read%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Handler_read_first | 0 |
| Handler_read_key | 0 |
| Handler_read_next | 0 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 0 |
+-----------------------+-------+
6 rows in set (0.00 sec)
mysql> select * from tt where i in (3,4,5) and j=4;
+---+---+
| i | j |
+---+---+
| 3 | 4 |
+---+---+
1 row in set (0.00 sec)
mysql> show status like 'handler_read%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Handler_read_first | 0 |
| Handler_read_key | 4 |
| Handler_read_next | 1 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 0 |
+-----------------------+-------+
6 rows in set (0.00 sec)
mysql> select * from tt where i between 3 and 5 and j = 4;
+---+---+
| i | j |
+---+---+
| 3 | 4 |
+---+---+
1 row in set (0.00 sec)
mysql> show status like 'handler_read%';
+-----------------------+-------+
| Variable_name | Value |
+-----------------------+-------+
| Handler_read_first | 0 |
| Handler_read_key | 6 |
| Handler_read_next | 10 |
| Handler_read_prev | 0 |
| Handler_read_rnd | 0 |
| Handler_read_rnd_next | 0 |
+-----------------------+-------+
6 rows in set (0.00 sec)
后一个sql中有9次read_next_key,说明做了索引扫描。
由于zend for eclipse6.1.0 没有php_memcache.dll这个动态链接库,我们在phpunit测试的时候会报找不到php_memcache类的错,于是只需要把php_memcache.dll(对应版本的:php_memcache.dll)放入:D:\Program Files\Zend\Zend Studio for Eclipse - 6.1.0\plugins\org.zend.php.debug.debugger.win32.x86_5.2.14.v20080602\resources\php5\ext\php-cgi.exe,然后修改D:\Program Files\Zend\Zend Studio for Eclipse - 6.1.0\plugins\org.zend.php.debug.debugger.win32.x86_5.2.14.v20080602\resources\php5\php.ini 加入一行:extension=php_memcache.dll ,重新启动zend for eclipse6.1.0即可!
http://blog.s135.com/apmserv/bin/5.2.6/sina/
D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.1\plugins\org.zend.php.debug.debugger.win32.x86_5.2.14.v20080602\resources\php5\ext
D:\Program Files\Zend\Zend Studio for Eclipse - 6.0.1\plugins\org.zend.php.debug.debugger.win32.x86_5.2.14.v20080602\resources\php5\ext
首先要澄清一个流毒广泛的说法:大学毕业第一份工作不重要。
这绝对是极其错误的。它给了大学毕业生一个错误的认识,对相当一部分人造成了无可挽回的损失!大学生就业选择,是对一个人十年内的生活产生重大影响的关键决策,是极其重要的。
那么找怎么样的工作比较好?什么样的行业算好?大公司好还是小公司好?如何正确的理解当前工资和未来发展?一系列的问题摆在大学生的面前。下面我首先对要考虑的宏观策略问题进行分析,然后再进行个别具体问题的解答。
一、中国现阶段职场利益集团划分
这才是一个大学毕业生首先要知道的大问题。学校的主任不会和你说的,公司招聘时也不会和你说的,因为利益只有少部分人能够分到;你父母也不一定会和你说的,因为他们很可能也是糊涂的。如果这一部分已经有人很明确的告诉你了,或者你个人已经很敏锐的感知到了,那么恭喜你!你已经可以关闭这篇文章了,因为你已经是明白人,不需要我浪费口舌。
(一)5大利益象限
中国的社会处在重要的转型变化中:由计划经济转向“有中国特色的市场经济”。这个过程是一个利益格局的重新分配的过程。在就业市场上,我们可以按大的方面对各种利益单位归类如下:
1.公务员(含事业单位)
2.垄断行业国企
3.竞争行业国企
4.外企
5.民营企业
阅读全文
这绝对是极其错误的。它给了大学毕业生一个错误的认识,对相当一部分人造成了无可挽回的损失!大学生就业选择,是对一个人十年内的生活产生重大影响的关键决策,是极其重要的。
那么找怎么样的工作比较好?什么样的行业算好?大公司好还是小公司好?如何正确的理解当前工资和未来发展?一系列的问题摆在大学生的面前。下面我首先对要考虑的宏观策略问题进行分析,然后再进行个别具体问题的解答。
一、中国现阶段职场利益集团划分
这才是一个大学毕业生首先要知道的大问题。学校的主任不会和你说的,公司招聘时也不会和你说的,因为利益只有少部分人能够分到;你父母也不一定会和你说的,因为他们很可能也是糊涂的。如果这一部分已经有人很明确的告诉你了,或者你个人已经很敏锐的感知到了,那么恭喜你!你已经可以关闭这篇文章了,因为你已经是明白人,不需要我浪费口舌。
(一)5大利益象限
中国的社会处在重要的转型变化中:由计划经济转向“有中国特色的市场经济”。这个过程是一个利益格局的重新分配的过程。在就业市场上,我们可以按大的方面对各种利益单位归类如下:
1.公务员(含事业单位)
2.垄断行业国企
3.竞争行业国企
4.外企
5.民营企业
阅读全文
加密日志
女人是做电子罗盘的。每天研究陀螺仪,水平仪,角度传感器,加速度传感器喝倾角传感器。这天突接到通知,需要再加两个小时的班。女人给男人打电话,告诉他可能得晚一点儿回家。男人说,嗯,我也刚下班,在路上,你大约什么时间回来?女人刚想告诉他还得两个小时,手机就没电了。女人想找个公用电话,再想想还是算了。老夫老妻了,儿子都读了中学,还用如此浪漫?
终于下了班,女人匆匆往家赶。已经很晚了,她想这时男人一定候在客厅,把空调开得很暖。餐桌上应该还摆了温热的饭菜,肯定有女人喜欢的那道。想到这里,女人笑了,加快了脚下的步子。却突然,在离家二十多米远的地方,她看到了男人。
男人站在黑暗里,只是一个模糊的灰色轮廓。但她知道那是男人。女人对男人太熟悉了,熟悉到可以辨认出他的一根发丝,一个喷嚏,一缕气味,甚至一个影子。女人轻声说,嗨。男人就走过来,他说怎么现在才回来?好像男人正发着抖。天很冷,夜风把人的衣服,一点一点地刮透。
女人说你在这里干什么?男人说有条沟……记得早晨还没有沟呢……可能在抢修煤气管道……他们也不亮个警示灯……你得从这边绕过来。男人领着女人,小心翼翼地绕过那条沟。女人说你等在这里,就为了告诉我有一条沟?男人说是。这么冷的天,万一摔一跤,可不是好玩的。男人低头上了楼梯,声控灯忽明忽暗。突然,女人觉得男人像一个热恋中的男孩,寒风中,正忐忑不安地等着他的心上人。
进了屋子,男人急急地去开空调,急急地从冰箱里拿出冻鱼冻肉。女人愣一下,她说你一直没有回家?男人说是啊。女人说下了班,你就一直等在那里?男人说是啊,本想打电话告诉你小心点,可是你手机没电了。女人说你在那里等了两个多小时?怎么不先回家取取暖?男人说万一我回来的时候,你也刚好回家呢?沟那么深,又没亮个警示灯……晚饭想吃红烧肉吗?女人说从那里回趟家添一件衣服,不过两三分钟,你怕我在这两三分钟内回来,就一直不敢离开?男人说是啊是啊……吃不吃红烧肉?
女人有些感动。好像男人并不像热恋中的小男孩。他是一个深沉细心的父亲。男人的鼻子红红的,突然打一个响亮的喷嚏。女人走过去,从男人的手上抢过围裙。突然她发现男人咧了嘴巴,眉头轻轻地皱。女人忙撸开他的裤腿,她发现男人的膝盖鲜血淋漓。女人说你快去歇着,找个创可贴贴上。男人笑笑说不用了,两个多小时,早已经长痂了……我说你到底吃不吃红烧肉?
爱情是什么呢?应该不是那种年年月月天天时时分分秒秒的相守吧?其实真正动人的爱情,只是在某一个时刻,只是在某一个最微小的时刻,一秒钟,都不敢离开。
终于下了班,女人匆匆往家赶。已经很晚了,她想这时男人一定候在客厅,把空调开得很暖。餐桌上应该还摆了温热的饭菜,肯定有女人喜欢的那道。想到这里,女人笑了,加快了脚下的步子。却突然,在离家二十多米远的地方,她看到了男人。
男人站在黑暗里,只是一个模糊的灰色轮廓。但她知道那是男人。女人对男人太熟悉了,熟悉到可以辨认出他的一根发丝,一个喷嚏,一缕气味,甚至一个影子。女人轻声说,嗨。男人就走过来,他说怎么现在才回来?好像男人正发着抖。天很冷,夜风把人的衣服,一点一点地刮透。
女人说你在这里干什么?男人说有条沟……记得早晨还没有沟呢……可能在抢修煤气管道……他们也不亮个警示灯……你得从这边绕过来。男人领着女人,小心翼翼地绕过那条沟。女人说你等在这里,就为了告诉我有一条沟?男人说是。这么冷的天,万一摔一跤,可不是好玩的。男人低头上了楼梯,声控灯忽明忽暗。突然,女人觉得男人像一个热恋中的男孩,寒风中,正忐忑不安地等着他的心上人。
进了屋子,男人急急地去开空调,急急地从冰箱里拿出冻鱼冻肉。女人愣一下,她说你一直没有回家?男人说是啊。女人说下了班,你就一直等在那里?男人说是啊,本想打电话告诉你小心点,可是你手机没电了。女人说你在那里等了两个多小时?怎么不先回家取取暖?男人说万一我回来的时候,你也刚好回家呢?沟那么深,又没亮个警示灯……晚饭想吃红烧肉吗?女人说从那里回趟家添一件衣服,不过两三分钟,你怕我在这两三分钟内回来,就一直不敢离开?男人说是啊是啊……吃不吃红烧肉?
女人有些感动。好像男人并不像热恋中的小男孩。他是一个深沉细心的父亲。男人的鼻子红红的,突然打一个响亮的喷嚏。女人走过去,从男人的手上抢过围裙。突然她发现男人咧了嘴巴,眉头轻轻地皱。女人忙撸开他的裤腿,她发现男人的膝盖鲜血淋漓。女人说你快去歇着,找个创可贴贴上。男人笑笑说不用了,两个多小时,早已经长痂了……我说你到底吃不吃红烧肉?
爱情是什么呢?应该不是那种年年月月天天时时分分秒秒的相守吧?其实真正动人的爱情,只是在某一个时刻,只是在某一个最微小的时刻,一秒钟,都不敢离开。





