第一期回顾
历次讨论主题记录: 每次讨论主题的记录
第二期
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开发者的大厂面试心法-开课吧
体会最深的
架构是一个能力,不是一个职位
前提:
架构要把
架构先进性转换成技术先进性
技术先进性转换成商业先进性
架构在演变过程中,
对设计模式的了解
对架构本身的了解?架构的目的,
架构的方法论
架构要解决的问题:
确定你的系统的边界在哪里?
指导设计演化的原则是什么
确定非功能性需求
里氏代换原则(Liskov Substitution Principle LSP)面向对象设计的基本原则之一。 里氏代换原则中说,任何基类可以出现的地方,子类一定可以出现。
举例:警匪片中“放下武器,立刻投降”, 武器是抽象的,对应匪徒手中具体的手枪,刺刀等
把一个确定性的描述,转换成代码并不难
但是,在整个科技世界中,都是不确定的问题。正是因为我们需要解决不确定的问题,所以才需要利用程序员的智商迭代。