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)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。

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

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

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


目录
相关文章
|
3月前
|
程序员 Python
探索代码之美:我的编程感悟之旅
【8月更文挑战第31天】编程,一门艺术与科学的结合体。本文将带你走进编程世界,分享个人在代码编写过程中的心得体会。从最初的迷茫到逐步掌握,再到深入理解,每一步都充满挑战与惊喜。让我们一起领略代码的魅力,感受编程带来的成就感与乐趣。
|
3月前
|
算法 Java 程序员
探索代码之美——从小白到大牛的编程旅程深入理解Java中的异常处理机制
【8月更文挑战第29天】编程,一门看似神秘而复杂的艺术,实则充满无限可能与创造的乐趣。本文将带你走进编程的世界,从最初的迷茫与困惑,到逐步掌握编程思维,再到深入理解代码背后的哲学,一起见证一个编程小白如何成长为技术大牛的奇妙旅程。
|
3月前
|
搜索推荐 程序员
代码之旅:我的编程实践与感悟
在这个数字时代,编程已经成为一种重要的技能。它不仅仅是计算机科学的一个分支,更是一种解决问题的工具。从最初的迷茫到现在的熟练,我在编程的道路上经历了许多挑战和困惑。这篇文章将分享我的编程实践经历,包括我如何从一个初学者成长为一名有经验的程序员,以及在这个过程中我所学到的一些重要经验和感悟。
|
6月前
|
开发框架 .NET Linux
2024年最全C# 图解教程 第5版 —— 第1章 C# 和 ,2024年最新终于有人把Linux运维程序员必学知识点全整理出来了
2024年最全C# 图解教程 第5版 —— 第1章 C# 和 ,2024年最新终于有人把Linux运维程序员必学知识点全整理出来了
2024年最全C# 图解教程 第5版 —— 第1章 C# 和 ,2024年最新终于有人把Linux运维程序员必学知识点全整理出来了
|
6月前
|
Java
阅读《代码整洁之道》总结(1),java多线程面试
阅读《代码整洁之道》总结(1),java多线程面试
|
算法 搜索推荐 程序员
程序员代码面试指南之笔记01(上)
一、算法数据结构基础课 第一节 一、 评估算法
67 0
程序员代码面试指南之笔记01(上)
|
机器学习/深度学习 算法 程序员
程序员代码面试指南之笔记01(下)
4) 局部最小值问题 public class Code06_BSAwesome {
40 0
|
程序员 测试技术 开发工具
程序员成长第十篇:从阅读代码开始
程序员成长第十篇:从阅读代码开始
193 0
|
设计模式 程序员
程序员成长第三篇:好的代码和好的工程师
程序员成长第三篇:好的代码和好的工程师
79 0
|
前端开发 程序员 测试技术
程序员进阶之道(一)
程序员进阶之道(一)