Android中Handler使用导致的内存泄漏

1.什么是内存泄漏

用动态存储分配函数动态开辟的空间,在使用完毕后未被得到释放,结果一直占据该用内存单元,直到程序结束,即所谓的内存泄漏。

2.是内存泄漏与内存溢出的区别

内存溢出 Out of Memory,是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;比如申请了一个integer,但给它存了long才能存下的数,那就是内存溢出。

内存泄露 Memory Leak,是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

用一个很形象的例子来说明:一个仓库,被无用的物资所占据,而得不到管理员的清理,这里的无用货物占用仓库空间的行为被叫做”内存泄漏“,而某一天仓库由于所存储的物品太多,而无法继续存放物资,这个时候就被叫做“内存溢出”。

3.内存泄漏导致的问题

相关内存无法被系统给回收,随着程序运行可以用的内存会越来越少,机子越来越卡,直到内存溢出。(这也是为什么手机电脑很卡之后重启一下后会好很多,主要是相关未被系统回收的内存被回收)

4、安卓中的内存泄漏

典型的可能产生内存泄漏的代码:

public class MemoryLeakActivity extends MyActivity {
//可能会导致内存泄漏的代码
private Handler handler = new Handler() {
    [@Override](https://my.oschina.net/u/1162528)
    public void handleMessage(Message msg) {
        super.handleMessage(msg);
    }
};}

产生内存泄漏可能的原因:Handler的工作机制中Handler与Looper以及MessageQueue一起工作的,App启动之后,系统会默认创建一个为主线程服务的Looper对象,负责处理主线程中所有的Message对象,它的生命周期则为整个应用的生命周期。在主线程使用Handler都会默认绑定到这个Looper上面,主线程创建Handler对象,会立即关联Looper对象的MessageQueue,这时发送MessageQueue重的Message会持有Handler的引用, 这样在Looper处理Message时候才会回调到Handler的handleMessage方法。因此,如果Message没有被处理完成,那么Handler对象就不会被垃圾回收。

上面的代码,将Handler的实例声明为MemoryLeakActivity类的内部类,在Java中:非静态内部匿名类会持有外部类的一个隐式引用,这样就可能导致外部类无法被垃圾回收。

最终由于MessageQueue中的Message 没有处理完成,就会持有Handler对象的引用,而非静态的Handler对象会持有外部类Activity的引用,这个activity无法被回收,从而导致内存泄漏。

5、解决方案

1、将Handler声明为静态内部类,这样就不会持有对外部类的引用。

2、创建一个Looper与一般Java对象一样的生命周期

private static InnerHandler extends Handler{       
      // 声明一个静态Handler类,并持有外部类引用
    private final WeakReference<MemoryLeakActivity> mActivity;
        public InnerHandler(MemoryLeakActivity activity){
                this.mActivity = new WeakReference<MemoryLeakActivity>(activity);
    }
}

LayoutInflater源码解析

我们经常实用的LayoutInflater这样用:

View view = LayoutInflater.from(context).inflate(R.layout.resource,root,flase);

进入inflate进行源码解析

   public View inflate(@LayoutRes int resource, [@Nullable](https://my.oschina.net/u/2896689) ViewGroup root, boolean attachToRoot) {
    final Resources res = getContext().getResources();
    if (DEBUG) {
        Log.d(TAG, "INFLATING from resource: \"" + res.getResourceName(resource) + "\" ("
                + Integer.toHexString(resource) + ")");
    }
    final XmlResourceParser parser = res.getLayout(resource);
    try {
        return inflate(parser, root, attachToRoot);
    } finally {
        parser.close();
    }
}

主要做了一件事:
建立XmlResourceParser为后面解析xml文件做准备
XmlResourceParser的解析原理可以去这里看看

继续进入inflate(为方便阅读删除一些调试代码和异常捕获代码,只保留了核心代码)

public View inflate(XmlPullParser parser, [@Nullable](https://my.oschina.net/u/2896689) ViewGroup root, boolean attachToRoot) {
  synchronized (mConstructorArgs) {
      final Context inflaterContext = mContext;
      final AttributeSet attrs = Xml.asAttributeSet(parser);
      Context lastContext = (Context) mConstructorArgs[0];
      mConstructorArgs[0] = inflaterContext;
      View result = root;
      try {
          if (TAG_MERGE.equals(name)) {
              if (root == null || !attachToRoot) {
                  throw new InflateException("<merge /> can be used only with a valid "
                          + "ViewGroup root and attachToRoot=true");
              }
              rInflate(parser, root, inflaterContext, attrs, false);
          } else {
              // Temp is the root view that was found in the xml
              final View temp = createViewFromTag(root, name, inflaterContext, attrs);
              ViewGroup.LayoutParams params = null;
              if (root != null) {
                  // Create layout params that match root, if supplied
                  params = root.generateLayoutParams(attrs);
                  if (!attachToRoot) {
                      // Set the layout params for temp if we are not
                      // attaching. (If we are, we use addView, below)
                      temp.setLayoutParams(params);
                  }
              }
              rInflateChildren(parser, temp, attrs, true);
              // We are supposed to attach all the views we found (int temp)
              // to root. Do that now.
              if (root != null && attachToRoot) {
                  root.addView(temp, params);
              }
              // Decide whether to return the root that was passed in or the
              // top view found in xml.
              if (root == null || !attachToRoot) {
                  result = temp;
              }
          }
      } catch (XmlPullParserException e) {...}

`

这段源码中看出主要逻辑为:

1、判断xml局中标签是否为merge,如果是则走rInflate直接去遍历创建xml所有的View对象

2、进入非merge的逻辑里面,会创建根View,主要的过程在createViewFromTag创建View

3、rInflateChildren创建子View

3、接下来如果传入的root不为null,并且attachToRoot==false,则对创建好的View的ViewGroup.LayoutParams是通过generateLayoutParams生成的。

4、如果root不为null,attachToRoot==true,那么则将整个View作为一个子View加入到父布局中,否则直接返回这个View

继续进入createViewFromTag源码(为方便理解去除异常彩蛋和ignoreThemeAttr属性的代码)
`

View createViewFromTag(View parent, String name, Context context, AttributeSet attrs,
        boolean ignoreThemeAttr) {
    if (name.equals("view")) {
        name = attrs.getAttributeValue(null, "class");
    }
    try {
        View view;
        if (mFactory2 != null) {
            view = mFactory2.onCreateView(parent, name, context, attrs);
        } else if (mFactory != null) {
            view = mFactory.onCreateView(name, context, attrs);
        } else {
            view = null;
        }
        if (view == null && mPrivateFactory != null) {
            view = mPrivateFactory.onCreateView(parent, name, context, attrs);
        }
        if (view == null) {
            final Object lastContext = mConstructorArgs[0];
            mConstructorArgs[0] = context;
            try {
                if (-1 == name.indexOf('.')) {
                    view = onCreateView(parent, name, attrs);
                } else {
                    view = createView(name, null, attrs);
                }
            } finally {
                mConstructorArgs[0] = lastContext;
            }
        }
        ……

这段源码中看出主要逻辑为:

1、标签为view时获取view的class属性作为要创建的View的name(注意View和view的区别)

2、主要通过不同的Factory通过createView() 去创建View

3、其中有个逻辑需要在onCreateView执行之前判断是否存在“.”,存在点则表示不是系统的View,需要单独处理,在后面createView的代码可以看到有这样一段加入了“android.view.”,后面会讲这句的用途。

protected View onCreateView(String name, AttributeSet attrs)
        throws ClassNotFoundException {
    return createView(name, "android.view.", attrs);
}

继续进入onCreateView源码

public final View createView(String name, String prefix, AttributeSet attrs)
      throws ClassNotFoundException, InflateException {
  Constructor<? extends View> constructor = sConstructorMap.get(name);
  if (constructor != null && !verifyClassLoader(constructor)) {
      constructor = null;
      sConstructorMap.remove(name);
  }
  Class<? extends View> clazz = null;
  try {
      if (constructor == null) {
          // Class not found in the cache, see if it's real, and try to add it
          clazz = mContext.getClassLoader().loadClass(
                  prefix != null ? (prefix + name) : name).asSubclass(View.class);

          if (mFilter != null && clazz != null) {
              boolean allowed = mFilter.onLoadClass(clazz);
              if (!allowed) {
                  failNotAllowed(name, prefix, attrs);
              }
          }
          constructor = clazz.getConstructor(mConstructorSignature);
          constructor.setAccessible(true);
          sConstructorMap.put(name, constructor);
      } else {
          // If we have a filter, apply it to cached constructor
          if (mFilter != null) {
              // Have we seen this name before?
              Boolean allowedState = mFilterMap.get(name);
              if (allowedState == null) {
                  // New class -- remember whether it is allowed
                  clazz = mContext.getClassLoader().loadClass(
                          prefix != null ? (prefix + name) : name).asSubclass(View.class);

                  boolean allowed = clazz != null && mFilter.onLoadClass(clazz);
                  mFilterMap.put(name, allowed);
                  if (!allowed) {
                      failNotAllowed(name, prefix, attrs);
                  }
              } else if (allowedState.equals(Boolean.FALSE)) {
                  failNotAllowed(name, prefix, attrs);
              }
          }
      }
      Object lastContext = mConstructorArgs[0];
      if (mConstructorArgs[0] == null) {
          // Fill in the context if not already within inflation.
          mConstructorArgs[0] = mContext;
      }
      Object[] args = mConstructorArgs;
      args[1] = attrs;
      final View view = constructor.newInstance(args);
      if (view instanceof ViewStub) {
          // Use the same context when inflating ViewStub later.
          final ViewStub viewStub = (ViewStub) view;
          viewStub.setLayoutInflater(cloneInContext((Context) args[0]));
      }
      mConstructorArgs[0] = lastContext;
      return view;
  } 

这段源码虽然很复杂,但主要做的事就是 通过反射的方式去加载一个View类

这段代码就能解释上面为什么要加“android.view.”,这段代码会将系统的View的路径拼起来,把类加载进来;

clazz = mContext.getClassLoader().loadClass(prefix != null ? (prefix + name) : name).asSubclass(View.class) 

到现在,我们讲完了对于xml根view的创建逻辑,还有个很重要的流程没有讲:

子View创建 的逻辑在inflate中的rInflateChildren

进入rInflateChildren,这里依然会进入到rInflate()

   void rInflate(XmlPullParser parser, View parent, Context context,
        AttributeSet attrs, boolean finishInflate) throws XmlPullParserException, IOException {

    final int depth = parser.getDepth();
    int type;
    boolean pendingRequestFocus = false;
    while (((type = parser.next()) != XmlPullParser.END_TAG ||
            parser.getDepth() > depth) && type != XmlPullParser.END_DOCUMENT) {
        if (type != XmlPullParser.START_TAG) {
            continue;
        }
        final String name = parser.getName();
        if (TAG_REQUEST_FOCUS.equals(name)) {
            pendingRequestFocus = true;
            consumeChildElements(parser);
        } else if (TAG_TAG.equals(name)) {
            parseViewTag(parser, parent, attrs);
        } else if (TAG_INCLUDE.equals(name)) {
            if (parser.getDepth() == 0) {
                throw new InflateException("<include /> cannot be the root element");
            }
            parseInclude(parser, context, parent, attrs);
        } else if (TAG_MERGE.equals(name)) {
            throw new InflateException("<merge /> must be the root element");
        } else {
            final View view = createViewFromTag(parent, name, context, attrs);
            final ViewGroup viewGroup = (ViewGroup) parent;
            final ViewGroup.LayoutParams params = viewGroup.generateLayoutParams(attrs);
            rInflateChildren(parser, view, attrs, true);
            viewGroup.addView(view, params);
        }
    }
    if (pendingRequestFocus) {
        parent.restoreDefaultFocus();
    }
    if (finishInflate) {
        parent.onFinishInflate();
    }
}

这段源码的大致可以总结为:

1、总的逻辑为获取xml文档的层级数,解析每一层级的数据

2、解析过程首先进行View的合理性校验,include、merge等标签;

3、最后还是会走到createViewFromTag 创建出 View 对象,如果是 ViewGroup则递归调用rInflateChildren

到这里基本上所有的流程讲完了,这里总结一下加载流程:

1、拿到Xml解析对象,为后续解析做准备

2、对整个Xml中的布局控制处理由 root、attachToRoot这两个参数控制

3、解析子View,通过createViewFromTag创建实例对象**

从一则知乎看到的一段视频说起

今晚躺在床上,刷刷知乎,看到一则回答:https://www.zhihu.com/question/278030511/answer/453342056

让我陷入一些深思
回答中中有这样一段视频,自己反复看了几遍,每一遍好像都有不同的感触。第一遍,感受到大叔打着的节拍是多么的有节奏感,让人听了之后恨不得跟着他一起拍起来。第二遍,我发现大叔后面的节奏相比于紧促了起来,大叔内心有了更多的投入,而且貌似最后还有不好听的字眼,貌似在发泄了。第三遍,大叔一定是一个有故事的人,大叔右手旁边的朋友都已经湿了眼角。。。

《假行僧》一首能把人唱得热泪盈眶的歌曲,我在想大叔是不是想起了他自己的过去,亦或是有太多的不满此刻想要发泄出来。我想前者会更多一点的吧。

是呀,生活在这样一个忙忙碌碌的人心浮躁社会里,人的压力自然而然就增加了,再也没有儿时那样的无牵无挂。今天和好朋友去了一趟西塘古镇,主要还是因为周末了,最近在一些地方也遇到了小挫折,周末了没有任何人来打扰自己,比起待在家里更想的还是出去走走比较好。

今天的西塘下着雨,没有了燥热的天气,人心还是挺平静的,或许是因为雨的缘故,景区并不是人满为患,自然也有了更多的空间去慢慢欣赏“江南水乡”。

因为最近刚看完《边城》,脑子里总是将其场景带入西塘,可是看着被商业气息冲刺着的古镇,自然也带入不了了。

走在河边的烟雨长廊上,朋友说道 十年后再来这里。啊!到现在这个年龄,自己真的对于时间太敏感了,真的有点害怕了!消逝的是那时间,留下的却是那一串串回忆。

那时间 永远不再回来。自己上个月刚过了二十二周岁的生日,还记得以前Taylor有一首歌叫做《22》,有一句:But i am feeling 22,evething will be alright(我感觉我回到了22岁,所有事都如此美好),所以我现在就处在这样一个霉霉很想回到的一个年龄?可是她回不到了,我自然也回不到了我的18了。

那回忆 有美好的不美好的。回忆里面有对酒当歌,有秉烛夜游,也有蒲苇磐石,也有来日方长,当然还有曲终人散。还记得那本《挪威的森林》,或许现在它还在某处静静的躺着吧,因为它回忆里也多了好多的故事。也还记得那一回因为一些压力,在酒吧里和朋友唱了首《挪威的森林》。

一切都已经过去了,也许明天就回来了,也许不会再回来。

就这样吧,晚安。
2018/08/26 01:35

十年祭·512汶川大地震

今晚不知在哪突然看到有关512汶川地震的相关报道,汶川地震已发生了十年了。十年呀!人们总是对于十年、二十之类的整数年比较在意,当然我也不例外。作为一个在外漂泊对人来说,提起故乡往事也总是诸多感慨与回忆。

还记得在十年前自己还是一副稚嫩对模样,一米五不到,留着一个乖乖头的小孩子。记得那天在发生地震之前一切都很普通,普通得我都忘了那之前有发生过什么事情。那时候我们正趴在课桌上睡午觉,突然桌子一阵摇晃,我也不知道发生了什么。我只是抬头一看天花板上面的风扇在摇晃,那时候的天真我以为外面吹大风了,把风扇吹摇晃起来了,把房子吹摇晃起来了。可是十几秒钟之后,整个楼层嘈杂了起来,我也不知道发生了什么,只看到外面一群人都在往外边跑,我也跟着往外边跑,我们的教室在三楼,从三楼走到操场上,我感觉整个地面像是海绵做的一样,踩上去特别特别的软(现在想起来,当时房屋震动起伏的高度应该有个二三十厘米),整个人走在上面都在摇摇晃晃,依稀的听得一些窗户玻璃碎了的声音。不一会全校的人都站在了操场上面,此时地面依然在震动,当时大家都不知道发生了什么,可是脚都在不由自主地颤抖,可能是先天的一种对大自然的畏惧吧,站在操场上地面震动的时间持续了二三十秒钟,到后来渐渐的停止了震动,大家也才反应了过来。

有老师在大吼大喊组织大家在操场上站着,不让大家再回教室,地面停止震动了,其中我印象很深的一个情节:班上一个人由于刚睡了午觉口很渴,想回教室去拿水,校长看到他向教室里面走去了,直接过去就是两耳光,然后一顿骂。同学很是不开心,还暗地里骂校长,现在想想真的能理解当时校长的心情。从那之后“地震”这个词才深深的印在我们的脑海里,原来呀,这就是地震。

全校都站在操场上无目的等(现在想来当时应该在等上级的通知,是否是叫我们放假吧),也不记得等了多久,然后学校突然说放假了!!!当时那叫一个兴奋(现在去查了查日历,当时是星期一)这可了得,刚放完周末又马上要回去了,我记得好多人都高兴得跺脚了。。。可是大家往家走的路上,看到有些东西有点不对劲了,路上有一些比较老一点的房子直接全部垮塌了,然后途中遇到一个学生他妈来接他,我也不知道具体说了些什么了,大致记得“余震”这个事,说的是之后还会有余震,当时那叫一个怕,以为余震和刚才的大地震一样,还会再来一次,真的是很害怕了。

越往家走心里越害怕,万一自己家的房子垮了怎么办呢?带着担心回到了家,发现还好还好,房子还没有垮,悬着的心一下子放松了下来。作为小孩子的我们,又聚集了一堆小伙伴玩呀,好像一切都与我们无关。记得当时已经停电了,电视没法看了,也没有手机电脑,家里的电话也大不出去了,不知道谁弄来了一个小随身听,听广播播报说:2008年5月12日啥啥啥一大堆的。现在想想当时有个很搞笑的场景:我们从新闻里面听说了7.8级,也听到了8.0级之类的,大家以为是 成都还是哪里发生了8.0级地震,某某地方发生了7.8级地震。于是有个人赶紧问在听FM的小伙伴说:“绵阳多少级?”

我们小孩子依然像往常一样,在整个村里面到处蹿,发现整个村都在忙,从家里搬重要的东西、搭帐篷等等,甚是热闹,小孩子好像就喜欢热闹的场景,记得我们那天玩到了比平时晚很久很久才回家。晚上一家人住在了帐篷里面,当时我也不知道为什么不住家里呀,房子应该够结实的呀?一家人都围在一个小小的帐篷里面,我拿着我小小的手电筒躲在被窝里,好像还有自己的一些小玩意儿,然后又把手电筒挂在帐篷最上面,照着我们,那时候真的一点都不害怕,甚至是感觉到自己是有多么的幸福。

晚上,下起了大雨,很大的雨听到了雨水和帐篷上一直发出哒哒哒的声音,外面的大雨并没有破坏帐篷内的宁静。现在想想爷爷真是伟大,帐篷是他搭的,我还记得他在下午的时候,就已经在帐篷周围挖好了排水道,这样使得帐篷周围不会有积水,也使帐篷内地面保持干燥。我就安然地睡着了,睡得很香,啥事没有一样。记得半夜,大概两三点的时候吧,整个村又吵起来了,原来是在刚刚发生了一场余震,而我全然不知。记得爷爷当时给我们讲了下当年唐山大地震的一些事,我也记不清楚太多了,只记得唐山离我们很远,但是好像这边震感还是很强烈(没有汶川这次强烈),但是每家每户也都搭起了帐篷,然后讲了很多,我记不清了。。。

第二天,好像消息很多很多就传来了,我也是听爷爷给我讲的,他在茶馆听谁谁谁说了啥啥啥,大家都在讨论啥啥啥。现在想想当时镇上的茶馆里面大家都讨论这些的时候是有多热闹,等我到初中的时候,我甚至将想象中爷爷当时在茶馆的场景和老舍的三幕剧《茶馆》做对比,《茶馆》里写着“莫谈国事”的标语,一大群人都安安静静地端着茶杯各个喝着自己的茶,而爷爷的“茶馆”这边却是大家对“国事”各抒己见的热闹场景,想想真的是有趣。

记得过了一两天来电了,终于能看到电视了,打开电视发现所有的频道都放的是一个画面!!里面的场景记得大多与担架、救援人员、救灾物质、废墟等等相关。我清晰的记得有个场景是一位父亲举着一叠奖状向镜头展示,然后哭着说道:全是三好学生。。。父亲一边哭一边看着已经永远离开了自己的女儿。还有那位母亲的那条短信:“亲爱的宝贝,如果你能活着,一定要记住我爱你”。看惯了生离死别的医生却在这一刻落泪了,手机传递着,每个看到短信的人都落泪了。。。看到了太多太多的感动,在感动的同时,也感慨生命的脆弱。
活着真好。

太多太多的感动一时间无法全部诉说。。。

这次地震无疑给自己留下了很多阴影,初中的时候一台压路机从教室外边路过,整个房子微微颤抖都特别特别的害怕、有时候谁在桌子边抖抖腿也感觉特别的害怕。自己从来不敢去做 类似蹦极、过山车之类的事,上次去走玻璃栈道也是战战兢兢的。有的同学说我怕死呀?我并不怕死,只是对生命敬畏。

十年过去了,岁月变迁太快,爷爷和他撑起了家庭的帐篷已不再,心里留下的只有诸多的怀念。上天很眷顾我,我也很珍惜,珍惜自己的家人,珍惜每一份情。

最后也感谢各位以前对我们四川人民的帮助,滴水之恩,永远铭记!

愿逝者安息,生者如斯🙏

愿逝者安息,生者如斯

---2018/05/12 00:28

程序员学习之路--小白成长记(网站网页篇)

时间飞逝,一名程序员已经由一脸茫然渐渐地懂得了很多东西。

在很久很久以前,一名少年正思索着一些东西,他发现他对网站很有兴趣,可是他不知道该怎么做,于是百度了起来,开始慢慢地了解了起来。

开始渐渐地明白了网页原来是用html代码写出来的,去搜了很多教程,都是从最简单的显示Hello World开始,他发现很多教程老师总是用记事本或者Notepad++新建一个txt文件,然后把后缀改成html,然后点击一下这个html文件,哇!浏览器就显示出来HelloWorld,至于是为什么,也不知道。

再后来,学了很多标签像 input\div\span等等,他这时候发现就这样输出的效果好单调啊,于是他后来又知道了CSS,CSS属性就像是一罐罐彩色原料,它能让之前写的html变得绚丽起来。再后来他有一天想做一个表单,在一个input框里输入一个名字,然后想要在页面上显示:XX天下无敌,啊。。。这可怎么做啊,之前的html只能写什么输出什么,没有一点交互作用,于是在这样的情况下,他认识到了JavaScript,他学会了js的一些小语法,alert(‘XX天下无敌’);js就像是一个个灵活的小部件,他能让页面转动起来。他好像开始对编程有兴趣了。

他一如既往的用记事本一个一个字母瞧着html css js代码,总感觉这样子太慢了,去百度搜了一下:网页编辑器。于是Dreamweaver 进入了它的世界,它发现这个编辑器真是爽,打一个“,这简直是大大的节省了敲代码的时间啊,他开始在怀疑为什么老师之前要叫我们一个一个字母的敲,有这样的一个编辑器不是很爽么?只用打首字母就出来了,这件事在后来的后来他才明白。他发现Dreamweaver还可以不用写代码–只需要拖拖控件就能生成一堆代码出来,啊!那简直是好啊,我们直接拖控件就OK了?为什么我们要写代码?少年乐此不疲地拖拖玩玩,发现挺有意思的。

某一天,他有点很生气,因为他发现Dreamweaver拖的代码,页面布局总是不是他想象的那样子,界面总是乱动,做一些简单的东西,拖一拖还行,稍微复杂一点的就哭了,这并不能满足他。他又开始去学习,怎么才能做一个好网站,那时他还没有能够理解到网站和网页的区别。他开始稍微系统一点的去学学前端了,他认识到了Bootstrap,CSS是一罐罐彩色原料的话,它需要对原料色进行调色才能到达最好的效果,然后一笔一笔地去涂好html。Bootstrap更像是一只只彩色笔,它把颜色已经调好了,只需要直接去使用,大大地节约了书写代码的时间。他也认识了JQuery这个打着“write Less,Do More”旗号的库,这个库也真的是申请了,简简单单的一两行代码可以做好多好多的事。

现在它的界面逐渐变得漂亮了起来,它发现页面感觉太枯燥了,界面连个动的东西都没有,他说我要做个动态网站,我要让页面有绚丽的动画起来。傻傻的少年,天真的认为动态网站就是网页有动画的效果那就是动态,于是他去学了学HTML5、CSS3,一下子页面炫酷多了。他开始迷上了网页编程。

他开始对同学说:我最近做了个网页,同学们:哇,可以给我们看看么?他:啊?怎么给你看看?把你的网址给我呗。。。他回到家又开始琢磨了起来,怎么才能把自己的网页通过网址给别人看呢?噢。需要一个服务器,于是他稀里糊涂地去在腾讯云租了个几十块钱一个月的服务器,最开始的他一脸懵逼啊,这个怎么玩,一大堆乱七八糟的东西。东搞西搞,他了解到了Linux操作系统,懂得了一些操作命令,终于配置好了一个Centos 6.5系统的服务器系统,用FlashXP将自己做的网页传了上去,他访问一下服务器的IP地址 123.2XX.24.1XX,啊哈,看到了自己做的页面展示在了网页上,但是他发现,为什么别人都是什么http://www.xxx.com进去呀,我的为什么是数字,于是他明白了要去租个域名,将域名解析到服务器上。。。几经周转,当他输入http://www.xxxxx.com弹出了他的网页,并将这个网址分享给朋友,他心里成就感满满。

他的网页是在页面上显示一些小笑话,但是久而久之,他发现每次要录入一个新笑话都得把同样的代码复制一遍,然后把域里面的数据再替换成新的内容。这样下去可怎么了得,万一以后录入了上百上千个笑话,那这个html文件岂不是有上千上万行咯?那才是真正的笑话呢。于是引入了数据库,得把内容录入到数据库,然后再利用后台文件将数据库的内容读取出来。对于数据库,他学了MySQL以及和MySQL天生是一对的PHP!!!

因为开始用PHP写后台脚本了,他发现Dreamweaver体验真的不太好,于是接触到了宇宙最强 IDE公司JetBrains的产品–Phpstrom。要运行php文件那得搭建个php运行环境呢,MAMP(Mac Apach Mysql Php)简直不能太好用,就下载一个这个安装好就好了,不用单独去安装其他什么的,在Windows 系统上装个WAMP,在Linux系统上装个LAMP就OK了。万事俱全,只欠开始敲代码。

他开始在html文件中加入了php脚本,将原来的重复的代码使用foreach循环将读出来的数据打印出来,这下页面精致了很多,不过页面由html改成了php,他似乎能理解动态页面和静态页面的区别了,动态页面原来是指数据的动态。就这样,他利用数据库的CRUD(Create Read Update Delete)貌似好像能做很多很多事情了,他学会提交表单到数据库,并且他知道了每次数据提交都是通过GET或者POST提交到一个后缀为php的后台文件里面,然后后台获取到GET或者POST请求数据,再做一些处理最后再返回处理结果。他发现每次提交一次数据之后页面都会跑到php处理文件里面去,然后再在里面写返回之前提交页面的代码,这样感觉实在是太不友好了,它开始接触到了一个新的技术–Ajax,再利用利用json数据格式进行前后端交互,使得异步操作这东西说起来就那么高大上,放JQuery里面就几行代码都事情。她似乎对这门技术越来越热爱。

他某一天发现自己的数据库被人更改了,这是为什么呀?没人知道我的密码呀?被黑客攻击了?几经周折,他在网站安全一块进行了相关探索,原来啊自己被SQL注入了,自己写的简单语句被人类似于“select * from admin where user=’’or ‘a’=’a’ and passwd=’’or ‘a’=’a’”最简单的SQL注入了,他开始想办法将SQL语句写得更安全一点,利用面向对象的思想将查询语句封装起来。除此之外他又顺带了解了XSS、CSRF攻击以及HTTP和HTTPS的区别,这样使得页面安全性提高了起来。

他写的网页文件越来越多了,但都是写小项目,就几个php文件搞定了。他看到了网上有个叫翁天信少年写了他自己的个人博客,那博客真的是棒不,幻想自己也能做一个,说干就干。他从网上找了个模板,解压出来,惊呆了!!怎么这么多html文件!这样一个一个去还去写,简直要哭啊!在这种情况下,他学习到了MVC三层分离思想,将数据与视图通过控制器结合起来。又引入了基于MVC的ThinkPHP框架,加上thinkphp模块化的设计让整个项目逻辑思路特别的清晰明了,程序的耦合性大大降低,因为框架的封装性也使前面的安全问题减少了不少。

通过git命令安装好了Thinkphp框架,然后自己写了个后台管理系统,管理自己的博客文章以及留言,他发现每次进自己的管理系统都要输入用户名和密码实在是有点麻烦,于是又去了解到了Session和Cookie机制,将数据保存在浏览器以及服务器上,这样使得服务器能够认识他,就不需要每次再输入密码和用户名了。

于是他沉浸在Thinkphp的世界里,过了没多久个人博客终于搭建完了。网上有人对他的代码设计很感兴趣问能不能分享一下他的源代码,最初他直接把代码拷贝发送给别人,可是问的人多了,总是这样做实在是太麻烦。于是他认识了Github这个新朋友,将代码托管上去,本地又配置好了其版本控制,通过Commit Pull Push使得代码管理似乎更容易一些了。

2017年710随笔 于嘉兴-福州列车

此刻正在前往福州的火车上,在长达十五个小时的绿皮车时间里,真的让人很难受。想睡觉,可是又不能好好地睡,现在很累很困,却睡不着,所以在这漫长的夜里面陷入深深地思考。

站在窗前,看到窗外的风景变幻多端,偶尔点点灯光、偶尔路灯透亮、偶尔通过窗户看到的只是自己的面孔。看着玻璃里面阴影的自己,头前已经有一两根白头发了,索性拔掉,因为我觉得我还很年轻,这种东西与我无关。

二十一年走过来了,想想多么的可怕,二十一年了呀!这是一个多么吓人的时间。或许是长大了,对于一些实物关注的东西也不一样了,二十一年父母也从一两根白头发过度到了半头白发,貌似就只是发生在这几年,父母老的速度感觉已经比之前更快了。现在每次再见到父母,再也没有以前那种憧憬与期盼了,更多的是对他们的心疼与内心的愧疚。

还有一年多就要出去工作了,既憧憬,又彷徨。憧憬的是能够走出学校了,能自己挣钱了,自己挣的钱再怎么花也没有像现在这样心疼,或许可以做更多以前因为没有足够的钱可以做到的事,只是怕再也没有以前那样的心;彷徨于自己要像个大人一样活着了,有些事再也不会因为你是小孩,因为你是学生而同情你可怜你;彷徨于要为自己的以后的人生想办法了,面对工作、对象、父母,又该如果去处理这些问题呢?

工作,用兴趣去劳动。如何选择?喜欢编程这个东西,因为当看到自己一行行写出来的代码转化为想要的效果的时候,是一种多么有成就感的事情。用代码去解决一些问题,也是一种乐事。可是…难道要敲一辈子代码么?难道要给别人打一辈子的工么?

对象,以后要陪一辈子的人。何去寻觅?她可以什么都不做,但是他能在我最苦闷的时候来安慰我;能在我得意的时候,和我一起分享;不管我有多穷,而不会看不起我不管我我做什么事,她都能支持;不管发生什么,她都能陪在我身边。这样的女人,我宁愿累死也愿意会为她努力。
一个人,一辈子。炊烟起了,我在门口等你;夕阳下了,我在山边等你;叶子黄了,我在树下等你;月儿弯了,我在十五等你;细雨来了,我在伞下等你;流水冻了,我在河畔等你;生命累了,我在天堂等你;我们老了,我在来生等你。无论如何我和她,她和我都能够一直在一起。

父母,一直支持我们的人。如何回报?或许一个好一点的工作,不错的对象,是对他们最大的回报。父母最大的期盼就是希望子女能够过得好,拼命地去挣钱,可却苦了自己。处处节约,只希望子女能过得好。对于我们,他们付出太多了。也许他们经常说我们这不行那不行,可是心里却很是因为我们而自豪。

此刻好冷,一件T恤加衬衫伴随一条阳光牛仔小短裤完全抵挡不住半夜这咄咄逼人的寒气,让人冷得发抖,可却并没有多余的衣服了,只能默默地扛着。生活,不也如此么?
回家的火车因为天气原因而晚点了,在听到这则通知时,你也只能发一下牢骚,也只能去默默接受这个事实;心爱的球队这场比赛输了,在终场哨声响起时,你也只能作几声叹息,也只能去默默接受这个结果。期待已久的电影让你失望了,在荧幕开始呈现演员表的时候,你也只能扫兴而归,也只能默默接受这样的一个故事情节。

有些事情无法被我们所改变,但唯一可以改变的是心态。心态好,或许可以让一个人活得并不那么累。
回家的火车因为天气而晚点了,我们或许可以这样想:还好还好只是晚点一小时,并不是晚点两个小时;心爱的球队这场比赛输了,或许我们可以这样想:实力很对面差距本来就很大的,不过比分是0:1不是0:3还是。能接受的;期待已久的电影让你失望了,或许我们可以这样想:和女朋友出来看电影的,能和她在一起这样一两个小时,我已经很开心了。

想起那句烂大街的话:生活不止眼前的苟且,还有诗和远方的田野。放这里再适合不过了。能够:”宠辱不惊,看庭前花开花落;去留无意,望天上云卷云舒”的人,我想应该也过得很幸福。

2017年07月10日 03:13

黑客可以厉害到什么程度?

原帖:https://www.zhihu.com/question/264331588/answer/281676126

原回答:

一个黑客很厉害,那一群黑客呢?
这里给大家讲下一个组织–中国红客联盟。

接下来给大家讲一下中国红客联盟的几次重大事件:

第一次: 1998 年 5 月反击印尼网络

原因:印度尼西亚发生动乱。在此期间,大批华人受到迫害,华人妇女遭到令人发指的强暴。

1998 年 5 月,印度尼西亚发生动乱。在此期间,大批华人受到迫害,华人妇女遭到令人发指的强暴。至 7 、 8 月,事件真相才通过互联网陆续透漏出来。在国内新闻媒体不报道此事的情况下,中国网民通过互联网陆续获得了相关信息。 8 月初,全球华人社会形成抗议高潮, 8 月 7 日 ,世界各地华人更同步举行抗议示威。印尼暴徒的行为激怒了刚刚学会蹒跚走步的中国黑客们,他们不约而同聚集在聊天室( IRC )中,讨论并决定对向印尼网站攻击。这是中国黑客的第一次对外群体性攻击行动,其表现出的团结与协调成为今后类似攻击行动的典范。
8 月 7 日 , ChinaByte 责任编辑在网站论坛中发现一个新帖。这一“帖子”声称中国黑客袭击了印尼站点,同时附上了尚未恢复原貌的站点网址。编辑印证后当即决定立即在每日发送给订户的新闻邮件中,首次增发“号外”。“号外”中只有简单两句话及一个网址,但包含了这一新闻事件的核心信息。全文为:“你的站点已被来自中国的‘黑客’所‘黑’,印尼的暴徒你们的暴行是会有报应的!!!(中文)’‘停止屠杀华人!!!’(英文)这是印尼一个‘ to kobudi.co.id ’的站点上日前出现的文字。这一站点目前被中国黑客小组所‘黑’。
这一“号外”几分钟里就发送到数万订户的邮箱中。 8 月 10 日 , ChinaByte 更将相关新闻上了主页头条。标题赫然为:印尼排华暴行激怒中国黑客。副题为:网上怒潮连天起。
实际上,早在 8月7日之前,中国黑客已对印尼网站和电子邮箱展开攻击行动。他们通过破解密码而拥有了系统管理员的权利,将“苦难的同胞,我为你悲愤哭泣!”、“严惩暴徒!严惩凶手!血债血还!”等口号写在了印尼网站的首页上。他们同时还提供大量印尼重要部门的电子信箱,并向网友提供如何“轰炸”这些电子信箱的方法。 8 月 17 日 是印尼国庆日,这一天众多印尼网站再次遭到黑客的攻击,被黑网站首页都留有黑客们用不太连贯的英文以及中文声讨印尼排华暴行的词句。其中一名署名“ Warning From Chinese ”的黑客,在被黑的页面上留言道,他这样做只是提醒人们不要忘记5月间发生的惨案,此举并不会造成该 网站数据的丢失,但警告系统管理员必须将被黑页面保留 48 小时。这名黑客显然是为了让大家记住那场持续了 48 小时的排华暴乱。
中国黑客的攻击引起印尼政府强烈的反应,他们将中国民间黑客的行为指责为中国政府的怂恿,并指出是中国谋求地区霸权的强烈信号。据当时“美国之音” 8 月 9 日 报道,印尼一名政府官员今日抗议“中国黑客”的“暴行”,据他说在 8 月 7 日 以来,印尼至少有十余个互联网站,被自称“中国黑客”的组织摧毁,少数被贴上各种恐怖的图片,大部分被彻底破坏。另外 8 月 7 日 几乎所有的印尼政府公用邮箱均遭到了邮件炸弹的疯狂轰炸。该官员竟说:“我们希望中国人保持理智,因为前一阶段的事情是我们自己的事情!如果中国人不想分清华人和中国人的区别,那就说明中国是一个充满威胁的国家,中国不能把有华人的地方都看作他的领土。五十年代中国派来了军舰,我们可以理解,因为他们接走的是自己国家的人,今天中国黑客来了,我们迷惑,因为他们对我们自己的事情横加干涉。谁都知道,没有中国政府的授意,中国妇联是不会抗议的,中国政府不仅干涉我们的内政,而且挑唆国内黑客对我们的攻击。我们十分不满!” 8 月 11 日 ,印尼政府电子技术主管官员就中国黑客行为再度发言。他说:“虽然黑客攻击给印尼造成了很大的损失,但他表示对民间的激愤他表示理解。但,印尼的问题是否象宣传的那样严重,大可不必听信过于危言耸听的报道。印尼政府会把自己的问题处理好。在被问及黑客攻击的损失时,他说有上百个个网站被攻击,其中十几个被侵入,大部分遭到破坏,有黑客试图攻击金融系统,造成了一定损失。另外 8 月 7 日 当天,印尼的网络异常拥挤,当天的政府邮件系统几乎瘫痪,给印尼的正常社会秩序造成了一定影响。但这位发言人话题一转,再次耸人听闻地说道:“完全有把握说,中国的大量 ISP 凭借带宽的优势对我们进行了长达 30 个小时的邮件轰炸,我们很难说这不是有组织的行动。如果不是防空警报没响,我一定以为中国对我们宣战了。不过,谁的网络都有漏洞,任何民族都有黑客,我们不希望这是两个伟大民族仇恨的开端。我过去不相信中国威胁,现在我知道了不该听信中国政府口头上的什么政策,仅仅是他的十亿公民在政府偷偷怂恿下发泄一下不满,就是一种可怕的力量。”他最后说:“我敢打赌,黑客事件仅仅是中国人对他们地区称霸的一个信号,当他们踏上我们的国土,开始说三道四时,大家就会觉得‘中国威胁’多么贴切,东盟的朋友,应该首先记住!”

第二次: 1999 年 5 月反击美国网络

原因:以美国为首的北约空军用导弹袭击中国驻南联盟大使馆并造成三名中国记者死亡。

1998年的牛刀小试为1999年的第一次中美黑客大战埋下伏笔。1999年美军误炸中国驻南使馆后,一大批网民开始思考要行动起来,大量只懂简单电脑知识的网民自学了一点黑客常识后便参与到了黑客大战中来(他们被蔑称为脚本小孩),中国的人海战术正式形成。
1999年5月8日,以美国为首的北约悍然用5枚导弹袭击了我驻南斯拉夫联盟共和国大使馆,记者邵云环、许杏虎、朱颖遇难,另有20多人受伤。消息传来,国人震惊。
5月8日,“红客”们首次黑掉了美国驻华使馆的网页;
5月8日晚11点左右,“红客”们又成功突破白宫的防线,更改了白宫的主页;
5月10日,中国网民自发地在同一时间内向北约网站发出ping指令,北约服务器(http://www.nato.org)过载,一度瘫痪。
5.10日夜间,上述中国黑客网站攻击了www.capweb.net,一个美国国会的相关站点,并且用大约5分钟时间在上面公布了国外将近250个站点的密码,导致国外将近800多个站点被换上了全都自称是“中国黑客”的主页。到了北京时间12日白天,这些站点全部关闭。
5月11日,成功侵入美国海军计算机与通讯华盛顿中心网站(www.nctsw.navy.mil)。这是黑客攻击以来首次攻击美国军方站点。
5月17日,中国黑客紧急会议中心网站发出号召先致力于国内网络安全的改善,并着手为为国内大站义诊,以防止国外黑客对我国门户网站的攻击。
中国红客联盟、中国鹰派联盟、中国黑客联盟三大黑客组织成为这场中美黑客大战的主力军。一时间,红盟的lion、鹰派的万涛成为中国黑客英雄。
前者宣扬红客精神,给自己起了个独特的名字——“红客”(Honker),希望以政治立场的正义性来证实自己攻击行为的合法性。
以文化或者爱国的名义,在1999年前后,一大批脚本小孩挑战黑客的进入门槛。那个时候,黑客技术就像今天的blog一样流行,中国城市街头的书摊上,到处可见匆忙印刷出来的黑客入门,五花八门的黑客杂志匆匆出炉。中国的网民听到关于黑客的传说,也许就是在这个时候。
1999年5月,即美国轰炸中国驻南联盟大使馆事件发生以后,当时中国的红客们袭击了美国的一些政府网站,包括能源部、内政部在内,这些网站的首页上一度高高飘扬着五星红旗。有一次大规模的攻击,还致使白宫的网站失灵三天。中国黑客攻击事件成了当时美国各大报纸的头条新闻

第三次: 1999 年 8 月反击台湾网络

原因:1999 年 7 月 9 日 , 李登辉在接受“德国之声”专访时,所提出了所谓“两国论”。

1999 年 7 月 9 日 ,李登辉在接受“德国之声”专访时,所提出了所谓“两国论”。公然宣称,台湾当局将两岸关系定位在“国家与国家,至少是特殊的国与国的关系”。台湾当局有关负责人也随声附和,说两岸关系已从“两个对等政治实体”走到“两个国家”,两岸会谈就是“国与国的会谈”等等。台湾当局这些分裂祖国的言论将他们一贯蓄意分裂中国领土和主权、制造“两个中国”、“一中一台”、“台湾独立”的意图暴露无遗。“两国论”顿时导致两岸局势紧张。大陆黑客依靠刚刚对美网络攻击战中总结出的经验,从 8 月 7 日 开始攻击台湾十多个政府网站,台湾黑客随即于 8 月 8 日 展开反击,大陆黑客贴“世界上只有一个中国,世界只需要一个中国”,台湾黑客贴“台湾是中国永远分割的一部分”、“你们敢打,我们敢独;大陆黑客贴五星红旗,台湾黑客贴青天白日旗,一时间“山雨欲来风满楼”。香港、台湾报刊纷纷以“两岸黑客狂掀网络战”、“网络大战方兴未艾”、“网络开战:免不了的一场战争”为题,大肆进行报道:“台海两岸军队尚在隔海威吓,按兵观望,民间却已经先行拉开电脑资讯大战的序幕,双方电脑黑客互相攻击对方网站并张贴政治口号,展现实力。”
在大陆黑客的攻击中,台湾“行政院”、“国安局”、“新闻局”、“监察院”、“国民大会”等网站均被攻克。台湾方面指,仅对“国安局”的攻击 3 天内就达 7200 次。大陆黑客除删改网页外,还给许多台湾服务器安装了木马程序,导致不少网站服务器长时间瘫痪。值得一提的是,此次安装的木马程序由美国的 BO 首次改为了大陆黑客自己研发的“冰河”与 NetSpy ,而“木马冰河”也成了大陆黑客最为钟爱的木马程序。 8 月 11 日 ,台湾“国民大会”网站报警称,网站软、硬件疑遭黑客攻击造成严重毁损,即使是重灌系统也无法恢复。而警方对黑客仅利用软件就可破坏硬件,大感惊讶。在台湾黑客的第一波的反击下,铁道部、中国证监会、陕西科技信息网、浙江平阳国税局网站等篡改网页。随着两岸黑客对攻战规模的发展,大量的非政府网站开始被殃及。参与者非理性的成分越来越大,只要是“黑”下一个对方网站,就被视为胜利战果。这种情况是出于政治目的而实施的黑客攻击最普遍的现象,已超出少数真正意义上的黑客的行径。一直到八月底,两岸的黑客战才暂告一段。后来,台湾黑客扬言要在 十月一日 当天大举进攻大陆网站,而大陆黑客则针锋相对地表示,如果这样,将在是 十月十日 坚决反击。
中国大陆黑客与台湾黑客的互攻是一场“持久战”,但凡碰到刺激事件就会引发攻击。如 2000 年 3 月 18 日 台湾“大选”结束陈水扁上台的当晚,一些大陆黑客当即进行攻击行动。以下是名叫“天语”的一名黑客的自白:“本人天语,浙江人氏,现外出打工,月薪 800 元人民币,虽不穷困也不不富有,刚好穿暖吃饱,平民 - 草民 - 贱民一个,连正规的高中都还尚未读过!此次对台湾的几个站点页面修改纯属发自一时气愤!要分裂我中国,我想每一个中国人对这个观点上的态度和我都该是一样的!尔等现正对我中国站点进攻,昨天竟还有一个“可爱的”所谓的“黑客”竟对我的个人电脑挂带的 HTTPD 产生了兴趣。呵呵。。其 IP 来自 140.123.107.78 。在此想也不用本人来说尔等对我方的进攻之密集!本人现警告之!本人原已停止对台主机的破解,但听闻尔等竟然反攻,并破坏我国几个站点。本人忍耐有限,于昨晚进入尔等国防部的主机。本打算来个 deltree/y c:\ 但想此举必将引起黑客大战!顾及大家皆无利可图,本人最后退出 TELNET 进程并关闭端口,可能也顺手关了 80 端口 , (纯属水平太差!:))现公布屏捕图!望尔等也能息事宁人!!”正是这名“天语”和其他黑客攻陷了台湾“国防部”等多个网站。
2004 年台湾“大选”后,台湾情治部门透露, 3 · 20 “大选”刚结束不久,大陆黑客竟突破重重防火墙,侵入“总统府”和“国安会”内部网络系统,窃取并下载机密文件。近年来,台湾媒体屡屡报道“大陆网军入侵台湾”。两岸长期僵持的局面,决定了两岸黑客互相攻击的长期态势。

第四次: 2000 年 1~2月反击日本网络

原因:2000 年 1 月 21 日 ,日本最高法院无视历史事实,悍然判决参加过当年南京大屠杀的老兵东史郎见证大屠杀的诉讼败诉;

由于日本厚颜否认南京大屠杀这一历史事实,从2000年1月24日下午,中国“红客”再次集体出击,先后有多个日本官方站点被入侵。1月24日5时45分日本科技厅网站被袭,主页上用英文写有“日本人是丧家之犬”,并与美国杂志《花花公子》链接,25日再次被攻入。
2000年年初,零星骚扰演变为一场争夺网站控制权的黑客战,有人称之为互联网上的“新抗日战争”。当年1月21日,日本最高法院驳回因揭露南京大屠杀而被告损害他人名誉的东史郎等人的上诉,并对其判处50万日元的罚款。两天后,日本右翼势力在大阪国际和平中心举行“二十世纪最大谎言——南京大屠杀彻底验证”集会,公然否认南京大屠杀的史实。
这两次事件直接引发了中国黑客对日本网站的大规模攻击,被替换的日本网页上,出现了“不肯正视历史真相的日本人是亚洲之耻”等抨击和谩骂的文字。
这次攻击中,一个自称“中国极右翼抗日联盟”的黑客组织最为抢眼。1月24日至2月13日,该组织对30多家日本政府机构及新闻网站发动攻击,包括科学技术厅、总务厅、每日新闻社、NHK等。
该组织还在网站上发布《致日本政府的公开信》,称其成员是“一切具有强烈爱国心的中国网虫”,宗旨是“对日本少数疯狗在网络里进行猛烈的打击”,并公布了300多个日本政府部门的网址、100多名日本议员的电子邮箱地址,以及十多种黑客攻击工具和网站攻击方法的说明。

再补充一下:同年九月中国黑客进攻日本反动网站,纪念“九.一八”
2000年9月18日是一个特殊的日子,历史上的今天,是中华民族蒙受耻辱,永远无法忘却的日子。“九.一八”是国耻、国痛,但也是沈阳人、中国人的光荣,因为从这一天起一直到抗日战争的胜利,东北人民、中国人民同日本军国主义进行了不屈不挠的斗争。
就在这样一个特殊的日子里,中国的黑客再一次以自己的方式纪念“9.18”事变。昨晚19时31分,Chinaren新闻中心接到网友报料说有中国黑客于2000年9月18日下午19时30分左右成功地对日本的右翼反动网站www.since918.com.jp进行了攻击。向日本右翼表达了他们愤怒的声音。
受到攻击的这个网站是臭名昭著的日本右翼反动派的大站点。该站点一直在狡辩和否认“9.18”事件,为日本军国主义招魂。此次中国黑客是使用DDOS方式黑掉了该网站,将整个信道堵住,从而无法登陆该网站。这是中国黑客为捍卫中国尊严,不忘“9.18”事件付诸的又一强有力的行动。此次攻击导致该网站系统瘫痪。所以无法访问到该主页。

第五次: 2001 年反击日本网络

原因:2001年前后,跨入新的世纪后之后,三菱车事件、日航事件、教科书事件、《台湾论》事件,令两国关系持续紧张,黑客攻击也趋于频繁。

据日本政府官员称,2000年日本共发生63起以政治为目的的黑客攻击事件,而2001年,前五个月已发生650起。日本警方曾通过国际刑警机构向中国索取资料,以协助调查。
2001年8月13日,日本首相小泉纯一郎参拜靖国神社,中国黑客再次发动猛烈攻势。当日下午4时,日本气象厅网站服务器首先遭到攻击,主页被更改为带有英文字母和中文文字的页面。紧随其后,日本消防厅、防卫设施厅、通讯研究实验室,以及日本议员等网站相继沦陷,被贴上抗议文字及中国国旗。
在小泉参拜靖国神社后, 8 月的攻击波来得更为猛烈。中国的黑客在获悉新闻后,即刻采取行动,更换了部分日本政府站点的主页内容,以示抗议。中国黑客组织在声明中表示:小泉参拜靖国神社的举动严重伤害了亚洲各国人民尤其是中国人民的感情,加之此前的教科书事件等,令他们非常愤怒,为此,决定用攻击日本政府网站的方式,表达他们的强烈不满。其实,中国红客大联盟早已讨论,一旦 8 月 15 日 小泉参拜,将对日本网络采取何种攻击行动,没想到小泉提早参拜,因此红客大联盟成员也提前行动。
8 月 13 日 当天下午 4 时许,日本气象厅网站服务器首先受到中国黑客的攻击,其后,日本物质评估研究机构、日本战略物质研究中心、日本防御系统研究会、日本情报大会服务中心、日本消防厅、日本防卫设施厅、日本通讯研究实验室、日本议员网站等大批政府站点也受到攻击。 8 月 14 日 凌晨,红客大联盟发出了《对日本采取网络打击的声明》,内中写道:“日本首相小泉不顾全亚洲人民的抗议和日本国内祈求和平的声音,于昨日下午公然参拜了象征日本军国主义的靖国神社。日本领导人的这一错误举动严重地伤害了亚洲各国人民,尤其是受害最深的中国人民的感受。加之教科书事件等斑斑劣迹更是体现出日本当局对当年的错误毫无悔改之意。红客大联盟在得到此消息的的第一时间便召集了部分成员对此突发事件商讨对策。最终决定在我国政府还没有对日本提出抗议之前用我们所擅长的,表达我们网络时代青年一群对日本新政府的严正抗议和日本领导人的强烈不满。红客大联盟 (www.RedHacker.org) 在此次紧急行动中对以下的日本政府站点进行了主页替换。这和我们致力于推行的红客精神并不矛盾。红客大联盟对此件事情的发生表示遗憾,并将对以下所列举的受到的攻击的站点负责。历史不容忽视,事实岂能篡改,反击方能赢尊重,发展才是硬道理!”

第六次: 2001 年 4 月~5月反击 美国网络

原因:2001 年 4 月 1 日 ,美国军用侦察机将中国战机撞毁,导致飞行员王伟坠海死亡。

2001 年 4 月 1 日 ,美国军用侦察机将中国战机撞毁,导致飞行员王伟坠海死亡。这一事件在中国国内引起民众极大的愤慨,而在中美之间立刻造成布什新政府与中国关系紧张的局面。尽管 4 月 11 日 ,中国方面已同意美方机组人员先行返国,但事件尚未得到完全解决,两国间的气氛依旧剑拔弩张。从 4 月初开始,中美两国的黑客已经展开相互攻击。如美国黑客组织 poizonB0x 便是攻击中国网站的主力,而一个名为 pr0phet 的黑客则更是明确地说:“我一开始只是随机挑选一些网站作为攻击目标,不过现在我则主要攻击以 .edu.cn 和 ac.cn 结尾的网站,或者只是以 .cn 结尾的网站,都会成为我的攻击目标。”在这种气氛和情况下( 5 月 8 日 又逢中国驻南使馆被炸两周年),中国黑客在 4 月 30 日 至 5 月 8 日 打响了大规模的“第六次卫国网络战”。对于这次中美黑客大战的“战绩”,不同媒体的报道有很大出入,据“中国红客联盟”负责人称,真正被攻破的美国网站到 5 月 7 日 为止有 1600 多个,其中主要的网站 ( 包括政府和军方的网站 ) 有 900 多个。而中国被攻破的网站有 1100 多个,主要网站有 600 多个。实际上,任何一次黑客战争既不可能事先公开“宣战”,更不可能有“终战”的截止日期。
这次中美黑客大战有以下特点:

1 、中国黑客的攻击事出有因
在中国黑客的这次行动中,“中国红客网络安全技术联盟”(简称“中国红客联盟”, HUC )是最瞩目的攻击主力,它使“红客”这一称谓再次叫响。其负责人 Lion 在 2000 年 12 月 1 日 就提出建议:“统一“红客”一词的英文名称( honker )。“红客”一词若能在英文中占有一席之地,这将具有非同寻常的意义!这样红客在世界范围内的交流与应用将变得更加方便;更重要的是,这样做能扩大影响力,增强凝聚力,促进红客文化的形成和进一步的发展!”也就是说中国黑客试图通过“红客”名称的确认,来赋予自己在一种特定情况下所作所为的正面形象。中国黑客涂改美国网页尽管也有以谩骂方式来泄愤,但主流是中国国旗、中国国歌和“伟大的中华民族万岁!”、“美国必须对撞机事件负完全责任”、“抗议美国向台湾出售武器,破坏世界和平!”等口号,实践着“维护祖国统一、捍卫国家主权、一致抵抗外辱、打击反华气焰”的行动宗旨。
2 、中国黑客的攻击具有群体规模
“中国红客联盟”、“中华黑客联盟”和“中国鹰派联盟”是攻击美国网站的主力,由于以往通过各种形式奠定的组织基础,因此得以在这次攻击行动中发挥群体力量,并带动了一大批临时参战的“菜鸟”(即技术生疏的新手)。如 4 月 30 日晚 7 点 ,“中国红客联盟”召开了“攻击美国网络动员大会”,并提供了更换美国网页的专用数据包;再如 5 月 4 日晚 ,中国黑客集中力量攻击白宫网站,据称参与人数有 8 万之众,事后白宫网站的新闻负责人吉米承认“大量数据同时涌入,堵塞了白宫与其互联网服务提供商的连接通道”。中国黑客万众一心的行动并且其间的出色协调,使得美国方面怀疑这次中国政府如果说没有背后支持,至少也是默许的。加拿大军事评论家、汉和情报评论高级分析员平可夫在香港《亚洲周刊》(第 19 期, 5 月 13 日 )撰文称此次中国黑客的攻击为一场“新人民战争”,而这场战争的主体往往是可以称为“信息战网络战民兵”的庞大群体,武器是计算机、杀伤性火力构成是知识和技能,战场便是信息网络。
3 、中国黑客群体由年轻人组成
据媒体报道,“中国鹰派联盟”负责人老鹰今年 30 岁,而“中国红客联盟”负责人 lion 今年仅 21 岁,该组织发言人 bkbll 也年仅 21 岁,是在校大学生,其专业还不是计算机。 Bkbll 称“中国红客联盟”成员的平均年龄并不是媒体报道的 23 岁,而是更年轻,同时注册成员的 65% 是在校大学生。中国互联网信息中心( CNNIC )历次调查显示, 30 岁以下的青少年占全体网民的绝大多数。如最近一次调查显示(截止日期为 2000 年 12 月 31 日 ), 8 个年龄段中, 18 至 24 岁占 41.18% , 25 至 30 岁占 18.8% , 18 岁以下占 14.93% ,也就是说, 18 至 30 岁年龄段的用户占到 2250 万总体的 75% 。今年中国网络用户预计将突破 3500 万, 2005 年将达到 2 亿,占全体国民的 15% 。从发展看,如此规模巨大的中国青年网络用户群体的网络行为,今后不论是对内还是对外,都将产生更大的效应。

完~~
注:本文大部分内容来自 中国社会科学院新闻与传播研究所网络与数字传媒研究室主任闵大洪在博客中国于2005年02月12日 所发表的《告别中国黑客的激情年代——写在“中国红客联盟”解散之际》一文,本文中如有错误,欢迎指证。
推荐阅读:

高考毕业后:《红盟:一个喜欢电脑孩子的心声!求围观》

高中终于毕业了,追求了三年梦寐以求的大学终于要来了,在大学我就可以和很多具有相同爱好的人一起研究电脑技术了,这个我等了很久很久。。。现在,暑假中。不知道为啥今晚特别有感慨,写下了这些,也许是对过去的叹息吧。

最初接触网络,是在初中,那时候觉得这东西特别的神奇,由于当时都是国产的“板板机”,搭载的MTK系统,还有那个熟知的:“冒泡社区”,似乎还记得有那个经典的代码:*#220806#(不知道是不是这个),那时候的qq,在同学之间玩的很热闹,那时候qq 没有复制 后台等等的功能,直到后来我在 一个mrpyx的网站,学习到可以从那里下载那些可以后台的软件,还有一些很有意思的软件,当时被这些深深的着迷,并研究这些,在当时同学看来 我似乎懂得挺多的。

从初中以来,我就被班上的人封为手机、计算机大神,而“大神”这个称呼在我自己看来,都是唬那些小白的。
高中我买了很多书看(java c vb photoshop dreamweaver flash 黑客功房等等的书籍),但是很多都没有看完,都是粗略的了解。

我会简单的C语言编程,我对同学讲一个简单的Hello word程序,他们听得目瞪口呆,其实呢?我也不会多少,最多只学了一个多月,由于高中学习紧,总是在中午休息的时候看这些,把看《电脑报》《电脑爱好者》这类书当放松的方式,在课下拿出那本厚厚的《c语言编程》拿出来看,上课无聊时在本子上写写c代码,高三了,没有时间去搞这些,现在看来似乎完了很多很多。记得有一次我主持班会,为了活跃班会气氛,我在网上找了一款“抽奖软件”(就是将班上同学们的名单输入进去,通过随机的选择,会有一名同学“中奖”,然后让他起来发言),同学们都惊呆了!更有很多人认为那个程序是我自己编写的(因为我在背景添加的是我的qq头像,大家都认了出来。)我也知道那个程序很简单,分为几个结构弄出来的,代码最多100多行,是用vb做出来的,但是我不懂vb。我自己也根本写不出来那样的程序。

我会简单的视频处理,曾经在班上家长会来临之际,老师知道我是班上的计算机“大神”,他叫我用电脑做一个ppt(主要是展现同学们在学校的生活情况),我想呢?还不如做一个视频,我之前有了解过 Adobe Premiere 但是那个操作起来有点麻烦,我记得和我都喜欢计算机技术的同学之前用“绘声绘影”做过视频,说的“绘声绘影”有很多模版,很简单,我抱着试试的态度。。。果然很简单。有prmiere的基础,操作起来完全无压力。就这样我用 “绘声绘影”通过模版添加同学们的照片,合成一个视频。虽然只是简单的8分钟,但是那一周为制作这个视频,我每天下午没有去吃饭,啃着个面包,为的是能在家长会之前做出这个视频,最后。。。成功了。看着同学们惊异的表情,看得出他们对我的赞叹,家长也曾发问:这是哪个学生做的??其实在我看来,在那些行家看来,那只不过是简简单单的处理,基本上没有加什么,技术含量并不是很高。在最近我看到有个叫 “醉清风”的专门搞“绘声绘影”的高手,我有看过他做出来的视频模版,我当时真的。。。真的震惊了!做得这么好!让人赞叹!这就是专业的和非专业的差距。我想向高手那样,但有种:无从下手的感觉。

我会网站建设,早在初中在耍手机的时候有个wap.ai免费建站的,当时好奇玩玩,我学到了UBB的一些简单代码,觉得很有趣。直到后来我了解到了除了 UBB还有html jsp php asp这些东东,但都不是很精通,只会最简单的。我也向同学们“炫耀”,但有些时候遇到“高手”,他会问:你的服务器、解析、备案…我真的不知道。直到后来我买了自己的第一个域名、第一个空间。才懂得了这些。原来搞个网站这么复杂,还要给钱。后来我知道了lofter这个,可以将域名免费解析到这上面,而且发帖子更简单了。远远比用 DREAMWEAVER那些简单,我知道网站肯定会和Dreamweaver挂钩,但是、、、真的真的不懂,而且麻烦,根本学不下去。

我羡慕那些天才,佩服他们。想想凯文。米特尼克,只有15岁的米特闯入了“北美空中防护指挥系统”的计算机主机;还有 扎克伯格、莫里斯。。。那些 神一般的人物、、、

我会很多,但是都不精通,想学很多,但又耐不住寂寞,我该何去何从?
where should i go?也许要等到 那个所谓的大学?

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×