new的故事

2011/10/30
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
#include <iostream>
#include <new>
#include <cstdlib>
#define __OUTPUT_FUNC_NAME__ std::cout << __FUNCTION__ \
        <<"\tthis =\t" << this << std::endl;
 
class Foo
{
public:
    Foo()
    {
        __OUTPUT_FUNC_NAME__
    }
    virtual ~Foo()
    {
        __OUTPUT_FUNC_NAME__
    }
};
 
int main()
{
    Foo *psingle = new Foo;
    delete psingle;
 
    std::cout << __LINE__ <<std::endl;
    Foo *psingle_nothrow = new(std::nothrow) Foo();
    delete psingle_nothrow;
 
    std::cout << __LINE__ <<std::endl;
    Foo *parray = new Foo[5];
    delete[] parray;
 
    std::cout << __LINE__ <<std::endl;
    Foo *parray_nothrow = new(std::nothrow) Foo[5];
    delete[] parray_nothrow;
 
    std::cout << __LINE__ <<std::endl;
    Foo *praw = (Foo *)malloc(sizeof Foo);
    new(praw) Foo;
    praw->~Foo();
    free(praw);
 
    std::cout << __LINE__ <<std::endl;
    Foo *praw_array = (Foo *)malloc(sizeof(Foo) * 5);
    for(int i=0; i<5; ++i)
    {
        new(praw_array+i)Foo();
    }
 
    for(int i=0; i<5; ++i)
    {
        (praw_array+i)->~Foo();
    }
    free(praw_array);
 
    return 0;
}

上面这段代码可以用VS2010编译通过并运行。
第7~18行,是一个类Foo,用来示例的。
第22行,是普通的new, 创建单个的对象。如果new分配空间失败,则抛出异常。
第23行,是普通的delete,销毁单个的对象。
第26行,nothrow new,也就是说,当new分配空间失败时,只返回NULL,不会抛出异常。
第30行,new了一个数组。
第31行,将数组delete。
第39行,placement new, 已经有空间了,不用new去分配空间,直接在已经存在的空间上调用构造函数。
第40行,将其销毁。
第44行,申请了一个数组。第45~49行,一个一个地placement new,第50~53行,一个一个地placement delete. 有人会问:为什么不用placement new[], 答:不会,请多指教。

通过以上代码,对new有了直观的认识。new首先会分配空间,然后在得到的空间上调用构造函数。
怎么分配空间?用operator new函数。
分配空间失败了怎么办?如果是普通形式的new,抛出异常;如果是nothrow形式的new,返回NULL。
operator new函数有哪些?且听下回分解。

Posted in C/C++我抢沙发

入职两周

2011/07/30

十八号入职到现在,已经两周了。

这两周来,一直在接受培训。讲讲公司的制度等等。上周五,逛了逛上海,去了好几个地方,东方明珠、七宝古镇、人民公园、田字坊等等。当天挺热的。

有好几次去复旦吃中午饭,光华楼真高。

要开始学习了,老大昨天告诉我,下周要向两个老员工学习存储方面的知识了。这两个老员工,其中有一个是东南大学计算机系汪芸老师的学生,比我高四级。

这一次入职的新员工中,大多来自上交、复旦、北大、南大、浙大、中科院、北邮、北航、人大、同济、东南、中山、华科、武大、中科大、西交、川大、电子科大、重邮、上大,基本上都来自国内最NB的几十所学校,我感觉压力很大。

公司新开了个成都研发中心,这样,公司在中国大陆一共有三个研发中心了,另两个在上海和北京。另外,公司还有印度、爱尔兰、以色列特拉维夫等等数个研发中心。

了解了一些存储方面的基础知识以及公司的产品。公司的产品有Symmetrics、Centera、Celerra、CLARiiON,Celerra和CLARiiON已经成为历史了,现在将这两者合称为VNX。存储方面的基础知识包括SAN、NAS、RAID。还了解到VMware、RSA等等也算我们公司的,我们公司持有VMware 80%的股份。

Posted in 活着2 条评论

公司五周年庆

2011/07/29

今天公司进行了成立五周年庆典,好几个BOSS上台发表讲话,还给员工颁奖,最后吃蛋糕。

乐队唱歌挺好听的,唱了好几首,加州旅馆、春天里等等。

至今天,为期两周的入职培训也结束了,大BOSS还给每位新员工颁发了毕业证,呵呵。证上有我们的相片,另外还送了每位新员工两本书,其中一本是《高效能人士的七个习惯》。

Posted in 活着2 条评论

大BOSS训话

2011/07/26

呵呵,其实也不是训话,就是提醒一下刚入职的同学们:入职后的六个月至关重要!要踏踏实实!

Posted in 未分类4 条评论

又是一年高考时

2011/06/04

马上又要高考了。在我家那儿,高考完后接着是中考。今天表弟参加中考。

考试,在我家乡,是普通人家的孩子看到的两条出路之一,另一条出路是打工(外出或在家干点什么)。中考高考其实也没那么重要,考上好的高中然后又考上了好的大学又怎么样呢?能留在大城市里又怎么样呢?

我有个哥哥,他学习不好,中考上没考上高中,读了个中专,然后呆在一个养殖厂里好多年,现在自己开了个卖电动车的小店,自己给自己打工,养家糊口没大问题。哥哥有房,是老爸给他盖的,不盖房娶不到老婆啊;哥哥有个摩托车和一个三轮摩托车;有了一个儿子和一个女儿,真好。如果他上学到大城市就惨了,像我一样;不可能有房了,家里哪拿得出几十万甚至上百万;开个小店也可能不行,大城市的门面贵啊;养活两个孩子,做梦吧。所以啊,上学不好挺好的。

哥哥常常羡慕我可以呆在大城市,我常常羡慕他轻松的生活。我现在的确呆在一个大城市里,但这个城市和我有什么关系?我走在宽阔的大路上,两旁高楼林立,和我有什么关系?身旁常常开过一辆辆奔驰奥迪宝马,和我有什么关系?我也去过大商场,里面的一件衣服上千块,和我有什么关系?也去过日本料理,如果不是同学请客,这和我有什么关系?大城市的空气不好,这倒是影响着我。哥哥轻松地生活着,卖卖电动车,修修电动车,其实他还卖些粮油等等,没任何压力;每到下午五六点钟的时候,收拾东西关店,如果天气比较热,再跟我嫂子去请示晚饭能不能加瓶啤酒 :lol: ,多自在。

在家活得也挺好的,考上大学也挺惨的,所以我觉得,高考考好考差无关紧要,想通过上学改变命运,好难!社会阶层已经固化了,这是个拼爹的时代。

当然,对于普通人家的孩子,如果能考上好一点的大学,出来读读也可以,但要选个工科专业,尽量不要选文科专业。读个工科专业,说白了就是学门手艺,荒年饿不死手艺人,在当前难找工作的情况下,找工作的时候也比文科好一点;学个文科专业,如果家里没后台,找起工作来比工科难多了。以上只适合普通情况,NB大学的文科专业不包括在内。我觉得计算机专业就挺好的,只要努力,只要下功夫,就能成个代码熟练工,就不愁没工作。如果考不上好一点的大学,先读一个差一点的,再考个研也不错,考研比高考容易些,大概是因为很多NB的人直接工作了,不来竞争了。如果家里条件不好,早工作可能比读研更好,我现在就有些后悔读研(有多方面原因)。

Posted in 未分类3 条评论

lftp自动下载文件

2011/05/12

例子脚本如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#!/bin/sh
#FTP的地址,用户名和密码
HOST=10.3.16.1
USER=anonymous
PASS=anonymous
echo “Starting to ftp…”
#登陆FTP
lftp -u ${USER},${PASS} ftp://${HOST} <<EOF
#这是lftp的命令了。进入soft文件夹下面的y86文件夹
cd soft/y86
#下载shell脚本的第一个参数指定的文件名
get $1
bye
EOF
echodone

从网上抄的,稍改了一下,能运行。不错。
比如用把它存成ftp.sh,运行时
sh ftp.sh sim.tar
就会把sim.tar下载到当前文件夹。

Posted in 编程2 条评论

随便说说

2011/04/22

今天给家人打电话,跟外婆、三姨和我妈聊天。

跟外婆聊,就是她问我吃了没等等。跟三姨聊,也是叮嘱我要吃好点,注意身体。跟我妈聊,我说很担心能不能毕业,担心再延期。哎,很多事情不是我能控制的,具体什么情况就不说了。郁闷不爽。我妈说,毕业不了也没啥,还是个本科生呢,也别烦,烦也没用,事儿大事儿小,到时候就了(应该念liao,三声,呵呵)。让我宽心不少,呵呵。

其实也没啥,毕业不了,丢了工作,再找呗,跟用人单位说清楚情况就可以了。就像找工作的时候,很多公司问我为什么不去实习,我如实解释,人家很理解。如果丢了工作再找工作,人家问我原因的时候,如实解释,人家肯定也会理解的。呵呵。先安慰一下自己。

Posted in 活着6 条评论

Java连接MySQL数据库

2011/04/12
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
/**
 *  连接数据库的代码。
 *  配置好jdk环境变量,安装好mysql数据库,并创建数据库seungn,
 *  在数据库中创建表test(id, label),填写数据。
 *  
 *  1:下载mysql-connector-java-5.1.15.zip。解压,取出其中的
 *     mysql-connector-java-5.1.15-bin.jar,放在"某个路径"下。
 *     比如我放在了c:\下面。
 *  2: 修改环境变量中classpath,
 *     加上"某个路径\mysql-connector-java-5.1.15-bin.jar",
 *     我的就加上了c:\mysql-connector-java-5.1.15-bin.jar,
 *     会配置环境变量的你懂得,应该加在".;"后面
 *  3:写下面的程序。编译运行。
**/
import java.sql.*;
public class Test
{
    public static void main(String []str)
    {
        /**
         * 驱动类。如果把mysql-connector-java-5.1.15-bin.jar解压,
         * 会发现com\mysql\jdbc\Driver.class文件。
         */
         String driver = "com.mysql.jdbc.Driver";
 
         /**
          * jdbc:mysql://数据库所在机器的IP:端口号/数据库名字
          **/
         String url = "jdbc:mysql://127.0.0.1:3306/seungn";
         String user = "root";//用户名
         String password = "123456"; //密码
         ResultSet rs; //数据结果集合
         try{
             Class.forName(driver);
 
             // 连接
             Connection conn = DriverManager.getConnection(url, user, password);
 
             Statement statement = conn.createStatement();
             String sql = "select * from test";
 
             // 执行
             rs = statement.executeQuery(sql);
 
             // 一条记录一条记录地遍历。
             // 遍历过最后一条记录后,rs.next()会返回false
             while(rs.next()){
                 System.out.println(rs.getInt("id") + " " + rs.getInt("label"));
             }
        }catch(ClassNotFoundException e){
             e.printStackTrace();
        }catch(SQLException e){
             e.printStackTrace();
        }catch(Exception e){
             e.printStackTrace();
        }
    }
}

Posted in 编程语言我抢沙发

一个精神的小孩

2011/04/02

宛秋,我侄女!

Posted in 未分类1 条评论

10000小时,专家

2011/04/02

很久很久以前,在一篇博客上看到了10000小时的理论。其后,又常常见到。今天,我又在刘爱贵大侠的“从研发角度谈存储技术的学习”一文中看到了。

10000小时的理论大意就是:如果你想成为某个领域的专家,那么大概需要10000小时的努力。

可以Google一下“10000小时 专家”或者”10000  hour expert”,都可以搜到一些文章。

好了,理论归理论,这个理论对于我们普通人有什么用呢?

它告诉我们,大牛是可以用努力炼成的。大牛不是遥不可及,只要努力就可以!!!!!

想一想我的同学们,那些大牛都是非常努力的,不管是男的还是女的高矮胖瘦。比如说本科的同学陈力,他常常学习到深夜(他们宿舍的人常常说)。像这样的同学还有不少,比如王楠的老婆王慧芹(注:这儿的王楠是我的本科同学,也会打乒乓球),还有沈莉霞(有几次晚上11点多遇到王慧芹和沈莉霞从第一教学楼出来。南理工的第一教学楼是可以通宵的),李明同学在学习方面也相当狠啊,学起来不要命啊。很多人都是通过努力达到NB的。

不怎么努力就很牛,这样的人有吗?当然有,那是天才,那是极少数人。我们不能指望这样的小概率的好事儿发生在自己身上,绝大多数人都不是天才,绝大多数人都是普通人。

努力努力再努力!怎么努力都不为过。当然,要先找到个方向,这样才有动力才有效率,努力着才有劲儿。

Posted in 活着1 条评论