给计算机相关专业大一学生的一点建议

现在是15年3月,还有四个月我将毕业工作。大学四年就这样过去,现在回校已经有一种复杂的别离情绪。大学四年到底过得如何,是好是坏,是成功还是失败,这个很难回答。但是有些曾经迷茫过的问题,现在看来,似乎已经有了一些答案。因此在这里做一些记录与分享。如果你还为时未晚,希望可以帮助到你。

将来的路

就本科生而言,可以分成两个大方向:一,就业。就业又可分为进外企、进事业单位、进国企、进民企;二,读研。读研又可分为保研、考研、出国留学。

到底选哪条路,这个问题对于大一乃至大四的某些同学,都是一个难题。未来似乎就把握在自己手里,又似乎自己无力去掌控。因此,有明确的目标的人是幸运的,当然最后能否成事,还看他能否真正用心去做。

我且谈谈计算机方面的就业(这里特指普通的,专业对口的就业)。

首先我绝对不是这方面的高手,因此我只能分享一下在我求职过程中的感悟还有周围同学的经历给我的启发。我觉得比较重要的几个要点是:一,项目经验;二,专业基础;三,实习经验;四,算法;五,比赛经验。

要点没有先后之分,我觉得不可缺少的是第二点“专业基础”,不管你选择了去什么公司,这个是必然会考察到的。这里的“专业基础”,指的就是你在学校里课堂上学的例如数据结构、算法、操作系统、计算机组成结构等等。——实际上,不只是就业,走其他出路你也必须学好这些。

你一定注意到第四点“算法”和第二点“基础”有重复。这里的“算法”,已经超出了“基础”的范围。算法一直是诸多IT公司考察的一个重要的点。不管是国内的BAT,还是国外的Google、facebook,如果你算法好,那拿offer的概率就大很多。如果对算法感兴趣的话,可以尝试加入学校的ACM队伍。

开始博客新纪元

不断被“和谐”的博客园

一直想弄个小空间,写点自己的东西,做做技术分享。开始有这个念头的时候大概是大一,从教我们C语言的文老师口中知道了博客园的存在。打开之后顿时被里面纯粹的博客氛围,以及靠谱的质量吸引。于是在博客园开了博客,满怀热情地写了几篇稚嫩的博客后,迎来了博客园第一次“和谐”。

“和谐”的原因是被怀疑在做广告。我仔细查看了下,无非就是使用了几个外部网站的链接。因此就按照申诉流程发email去申诉,申诉的过程倒是蛮顺利,马上解了封。但重头戏在后面。自从有了这样一次“黑历史”后,只要我一发含有外站链接的博客,马上就被“和谐”。尽管申诉解封的流程蛮顺利,但是试过几次之后真是累觉不爱。

我严重怀疑,在第一次被人工和谐之后,我就被列上了黑名单,然后每次我发布博文到首页,就自动判断我处于黑名单上,然后就是被和谐。因为除了第一次,引用的是其他网站的某些博客的连接外,后面我都用的是诸如Android官网之类的链接啊(那时候Android官网还可以无障碍访问,现在。。唉)。这点来说,有很大可能后面两次和谐是机器处理的。

于是,上博客园就变成只看不写了。——现在已经把刷博客园的习惯改成刷知乎了。

且走且行的WordPress

大二的时候接触了php,玩过一个学期的discuz,做了个很垃圾的某网站后台外包——外包来源是某个土老板,不断改需求逼走了之前的合作对象,作为接任者,真的无力吐槽前任程序员的“无框架,无模块概念”的行为,总之代码就是一滩烂泥,当然当时还不懂这些,只能根据前任的习惯修改代码。于是在完成了土老板给的需求后马上理性地(实际上是不能忍了)结束合作,连另一半钱都不要了。唔,这是题外话。总之,就是了解了PHP,顺便知道了wp的存在。

那个时候SAE和BAE刚刚兴起,果断占坑,在SAE上搭建了一个博客。大二真是我的混乱时代,各种东西玩的飞起,php,discuz,Android,阿里云主机,尝试推广自己的论坛,域名注册等等。这些就是我几乎没有写博客的借口了。

直到大三暑假,也就是去年,在网易实习的时候,终于知道做点总结了。于是慢慢写起博客来。

谨慎使用静态注册的BroadcastReceiver

在Android中,BroadcastReceiver有两种注册方式。

第一种是静态注册,在Androidmanifest.xml文件中以类似activity注册的方式进行注册。

第二种是动态注册,在onResume()中注册,在onPause()中注销。

一般而言,我们需要根据具体的使用场景来判断使用何种注册方式。

静态注册的特点是接收设备全局的相应广播,尽管静态注册看起来比较方便,但实际上是十分耗费资源的。

现在使用以下代码进行测试。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class WifiReceiver extends BroadcastReceiver{
public static final String FLAG = "WifiReceiver";

@Override
public void onReceive(Context arg0, Intent arg1) {
if (arg1.getAction().equals(WifiManager.WIFI_STATE_CHANGED_ACTION)) {
int state = arg1.getIntExtra(WifiManager.EXTRA_WIFI_STATE, WifiManager.WIFI_STATE_DISABLED);

if (state == WifiManager.WIFI_STATE_DISABLED) {
Log.v(FLAG,"wifi is disabled!");
} else if (state == WifiManager.WIFI_STATE_ENABLED) {
Log.v(FLAG,"wifi is enabled!");
}
}

}

}

[转]Java中单例模式的实现

前言:

近日在看Effective JAVA这本书,看到这一条的时候去网上查找下资料,发现了这篇写的不错的博客,因此觉得没有重复造轮子的必要,特此转载。

原文:

Inspired by Effective Java.

Singleton模式是在编程实践中应用最广泛的几种设计模式之一。以前知道的,实现单例的方法有两种(下面的A、B)。刚刚在读《Effective Java的时候》学到一种新的更好的方法(E):单元素的枚举类型。同时通过网上资料也知道了其他两种方法(C、D)。最后一种在Java中从1.5版本开始支持,其他语言在验证后说明。

A.饿汉式(类加载的时候就创建实例)。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class MaYun {

public static final Mayun instance = new Mayun(); //静态的final的MaYun

private MaYun() {
//MaYun诞生要做的事情

}

public void splitAlipay() {

System.out.println(“Alipay是我的啦!看你丫Yahoo绿眉绿眼的望着。。。”);

}

}

Call:MaYun.instance.splitAlipay();

Feature:可以通过反射机制攻击;线程安全[多个类加载器除外]。

Fork me on GitHub