• 微信公众号:美女很有趣。 工作之余,放松一下,关注即送10G+美女照片!

1-开篇-程序员需要解决不确定的问题

互联网 diligentman 15分钟前 1次浏览

1-开篇-程序员需要解决不确定的问题

第一期回顾

历次讨论主题记录: 每次讨论主题的记录

第二期

DIY班: 其一,Deeply Inspire Yourself 深度激发自己

其二,Do It Yourself 实践出真知

以前总是听说阿里某某大佬,听说孤尽老师,也时常琢磨他的开发规范,有些初看不明白,当深入了才知厉害,去年就听说有DIY班,但已经召集结束了,还好后来同学其他朋友间接偷学了点,今年终于能有机会系统和孤尽老师交流,好幸运,所以就想努力试试,我也知道规则时间的苛刻,但我真的就想只是一个肤浅的码农,真的就只能排查简单的问题,都说武林功法万变不离其宗,这个宗,我想去找,想要内化于心,所以,我的目的是学习,是想认识更多优秀的你,所以其他都是次要,谢谢孤尽老师

听说规则后,我也有时候觉得不尽人意,但这么好和大佬接触的机会,有一次就有一次的欢喜。所以,我先去争做班委,努力承担更多责任。其次,想要去归纳总结形成博客,对每次的分享都吃透。

快排

孤尽老师下午测试自己最快几分钟写完快排,并且直接测试通过,3分钟。

孤尽老师添加了注释,算是给大家一个开胃小菜

/**
     * 快速排序
     *
     * @param source 排序的数组
     * @param left   数组分区后的闭区间的最左边的下标
     * @param right  数组分区后的闭区间的最右边的下标
     */
    public static void quickSort(int[] source, int left, int right) {
        // 递归的退出条件。数组下标left必须大于等于right。数组是空数组或只有一个元素,直接返回
        if (source == null || left >= right) {
            return;
        }
​
        // 设置最左边的数组元素为基准值,数组中比pivot小的放在左边,比pivot大的放在右边
        int pivot = source[left];
        // 定义两个指针,分别指向最左边和最右边,都是往中间方向移动
        int pointerLeft = left;
        int pointerRight = right;
        while (pointerLeft < pointerRight) {
            // 如果pointerRight向左移,遇到比pivot大的值
            while (pointerLeft < pointerRight && source[pointerRight] >= pivot) {
                // 右边的指针往左边移动一下
                pointerRight--;
            }
            // 交换一下,不要怕,左边的值就是pivot,下个循环一定能够让指针进一步往右边移动
            swapValue(source, pointerLeft, pointerRight);
​
            // 如果pointerLeft向右移,遇到比pivot小的值
            while (pointerLeft < pointerRight && source[pointerLeft] <= pivot) {
                // 左边的指针往右边移动一下
                pointerLeft++;
            }
            swapValue(source, pointerLeft, pointerRight);
        }
​
        // 参数的left和right作为边界的存在,在这里终于用到了
        quickSort(source, left, pointerLeft - 1);
        quickSort(source, pointerLeft + 1, right);
    }
​
    private static void swapValue(int[] source, int pointerLeft, int pointerRight) {
        // 如果交换的时候,指针已经重合,那么不需要再交换
        if (pointerLeft >= pointerRight) {
            return;
        }
​
        int t = source[pointerLeft];
        source[pointerLeft] = source[pointerRight];
        source[pointerRight] = t;
    }
}

金九银十:给Java开发者的大厂面试心法

金九银十:给Java开发者的大厂面试心法-开课吧

体会最深的

架构是一个能力,不是一个职位

前提:

架构要把

架构先进性转换成技术先进性

技术先进性转换成商业先进性

架构在演变过程中,

  1. 设计模式的了解

  2. 对架构本身的了解?架构的目的,

  3. 架构的方法论

架构要解决的问题:

  1. 确定你的系统的边界在哪里?

  2. 指导设计演化的原则是什么

  3. 确定非功能性需求

里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。

举例:警匪片中“放下武器,立刻投降”, 武器是抽象的,对应匪徒手中具体的手枪,刺刀等

把一个确定性的描述,转换成代码并不难

但是,在整个科技世界中,都是不确定的问题。正是因为我们需要解决不确定的问题,所以才需要利用程序员的智商迭代。


程序员灯塔
转载请注明原文链接:1-开篇-程序员需要解决不确定的问题
喜欢 (0)