作者: ShiYu

  • 人间四月天

    这里是四月!

    二十八日

    时间过的太快啦!这三天好像一阵风,呼呼的飞快的吹了过去。今天刘兰婷就要回家了,呜呜每次分开的时候都好不舍嘛。

    早上我有一节结课的课所以一大早先去了学校上课,回来已经到了中午,吃完午饭,大概就要去高铁站了。中午在街上看到了梅花糕,是之前从来没吃过的东西,今天尝了尝感觉味道还挺一般的,没有预想的那么好吃!然后我俩逛着逛着又买了梅干菜扣肉饼和卷凉皮,刘兰婷饭量小,吃完饼就饱了,我又吃了个卷凉皮,腻腻的,可恶,这个街上的东西怎么都不是很好吃。

    吃饱了找了家咖啡店坐着,刘兰婷喝的好长一串的名字的咖啡我记不清啦,我喝了生耶拿铁,很奇怪我不管喝茶还是喝咖啡都不影响睡觉,喝完倒头就能睡着,但是刘兰婷每次喝完都会睡不着。我也想有喝完就提神的能力!

    坐了一会,就要走啦,到高铁站门口,遇见了一群高三的学生,好像是在夏令营,好年轻啊他们~

    二十七日

    这天去了太阳部落,我们早就想去啦这一天终于去啦,但是二十七号我有操作系统课,很大概率会期中考试,我就赌了一下应该不考,结果十点的时候,我们在路上收到了期中考试的通知,那只能速通啦,下午一点回去还能赶上两点的考试。

    我之前也去过,但是没怎么玩里面的项目,特别是比较刺激的。这次玩到了水龙王,后裔射日,上面的那个图就是后羿射日项目,我是网上找的图啦,自己玩的时候根本不敢拍照,我有点恐高而且容易晕,玩完这个直接快寄了,直接走不动路啦,刘兰婷拖着我歇了会才能走路,呜呜太恐怖了,玩的时候根本不敢看下面,刘兰婷还笑话我!

    水龙王好好玩,但是我湿透啦,这个破雨衣比垃圾袋质量还差!

    下午回去考试的时候还是晕晕的想吐,好难受,考完赶紧回去睡了一觉,晚上一起去吃半天妖~

    二十六日

    今天下午刘兰婷放假啦,到来的时候已经晚上八点了,安顿下来就九点多了,晚上点了个外卖,边看电视边吃,长月烬明真的有点好看,我俩看到了凌晨三点!

    呜呜就睡了3小时,第二天要去太阳部落啦。

    二十三日

    今天蓝桥杯省赛结果出来了,还是省一,感觉难度一年比一年大了,疫情过去了,国赛也变成线下啦,希望这次国赛能有更好的等级!

  • 考研数学收藏

    1.如何理解泰特公式,这是我见过讲的最通透的啦

    怎样更好地理解并记忆泰勒展开式? – 知乎 (zhihu.com)

    2.三角函数之间的关系转换,和标题说的一样,没有比这更全的

    考生必记:三角函数公式汇总+记忆(没有比这更全) – 知乎 (zhihu.com)

  • 清明时节

    泰坦尼克号今年重映啦,第一次看还是去年快暑假的时候和刘兰婷在网上看的,嘿嘿这次终于能在大荧幕上看到啦,这次也还是和刘兰婷一起看的!

    除了杰克和露丝,从容赴死的船长和设计师,庄严肃穆的演奏乐队,将故事哄两个孩子入睡的母亲,临死前安详拥抱的老人都太有感染力了,呜呜。

    看完电影就下午一点多了,吃了个烤肉自助,我本来以为我能吃很多的,结果没吃多少就饱啦。

    吃完就三四点了,距离刘兰婷回济南还有2小时本来我们打算去switch电玩店玩1小时结果都排队,最后去了网吧玩4399双人小游戏

    今天的时间太短啦,有点舍不得😭

  • Acrobat让PDF更方便

    在用一些pdf资料学习的时候,很多资料中含有水印影响观看,或者练习题排列紧密,无法在旁边打草或者写过程,另开一个笔记打草写过程虽然当时方便,但是不方便后来再看,而且每次打开都要开2窗口有点麻烦,于是就想有没有更简单更方便的方案去做题

    这是一开始用的原本的PDF,pdf中央带有文字公众号广告水印,而且题目很紧密,旁边写不了过程和草稿,于是我发现了Acrobat,这个配合PitStop插件可以方便的进行批量处理,例如去掉每一页的PDF,然后重新组合页面,在每一页后面插入一个空白页,然后让当前材料页和空白页重新组成横向新页面,最后就变成了这样的效果:

    可以看到中心的大水印去掉了,但是还有部分小水印这是和原图层合并了而且位置不固定难以去掉好在不是很影响阅读,然后页面变成了横向,并且右侧有了更多的空白空间~

  • C#设计:工厂模式

    在学习设计模式的时候发现很多对于工厂模式的例子都是很简单的,例如就是用工厂类直接去创建一些无构造参数的简单的实例,这也的创建方式和我们直接new相应的实例没什么差别,体现不出工厂的优势。当需要创建的实例之间具有复杂的依赖关系或者需要创建模式的实例的时候工厂获取创建实例的优势就出现了。

    例如这样一个例子(来自菜鸟):

    public class ShapeFactory {
    
       //使用 getShape 方法获取形状类型的对象
       public Shape getShape(String shapeType){
          if(shapeType == null){
             return null;
          }
          if(shapeType.equalsIgnoreCase("CIRCLE")){
             return new Circle();
          } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
             return new Rectangle();
          } else if(shapeType.equalsIgnoreCase("SQUARE")){
             return new Square();
          }
          return null;
       }
    }

    这个工厂负责实例化不同的图形,通过传入的字符来new出不同的对象

       public static void main(String[] args) {
          ShapeFactory shapeFactory = new ShapeFactory();
    
          //获取 Circle 的对象,并调用它的 draw 方法
          Shape shape1 = shapeFactory.getShape("CIRCLE");
    
          //调用 Circle 的 draw 方法
          shape1.draw();
    
          //获取 Rectangle 的对象,并调用它的 draw 方法
          Shape shape2 = shapeFactory.getShape("RECTANGLE");
    
          //调用 Rectangle 的 draw 方法
          shape2.draw();
    
          //获取 Square 的对象,并调用它的 draw 方法
          Shape shape3 = shapeFactory.getShape("SQUARE");
    
          //调用 Square 的 draw 方法
          shape3.draw();
       }

    在测试函数这里创建了一个工厂,然后在工厂内传入需要的对象名可以获得这个对象实例,需要不同的实例的时候只要改这个参数即可,如果使用直接创建对象的方式也是只需要改创建对象时的对象名就可以了,这样看上去工厂模式和普通的方式没啥区别。

    下面来看一个复杂一点点的示例:

    假设轿车的制造流程如下:

    1. 创建车身
    2. 安装引擎
    3. 安装座椅
    4. 安装车轮
    5. 安装音响系统

    在轿车工厂中,我们需要按照上述制造流程进行车辆的制造。下面是一个简化版的代码实现:

    public class SedanFactory : CarFactory
    {
        public override Car CreateCar()
        {
            // 创建车身
            Body body = new Body();
    
            // 安装引擎
            Engine engine = new Engine();
            body.InstallEngine(engine);
    
            // 安装座椅
            Seat seat = new Seat();
            body.InstallSeat(seat);
    
            // 安装车轮
            Wheel wheel = new Wheel();
            body.InstallWheel(wheel);
    
            // 安装音响系统
            AudioSystem audioSystem = new AudioSystem();
            body.InstallAudioSystem(audioSystem);
    
            return new Sedan(body, engine, seat, wheel, audioSystem);
        }
    }
    
    public class Sedan
    {
        public Body Body { get; }
        public Engine Engine { get; }
        public Seat Seat { get; }
        public Wheel Wheel { get; }
        public AudioSystem AudioSystem { get; }
    
        public Sedan(Body body, Engine engine, Seat seat, Wheel wheel, AudioSystem audioSystem)
        {
            Body = body;
            Engine = engine;
            Seat = seat;
            Wheel = wheel;
            AudioSystem = audioSystem;
        }
    
        public void Drive()
        {
            Console.WriteLine("Driving a Sedan");
        }
    }
    
    // 具体的车身、引擎、座椅、车轮、音响系统类的定义
    

    在这个示例中,轿车的创建过程包括了多个步骤,例如创建车身、安装引擎、安装座椅、安装车轮和安装音响系统。在轿车工厂类中,我们按照这个制造流程创建了一个完整的轿车对象,并返回给客户端使用。由于制造流程比较复杂,使用工厂模式可以将这个复杂的过程封装起来,客户端代码只需要调用工厂方法即可创建对象,无需了解具体的创建细节。