ARTS 第15周:数组去重算法、Kafka入门、负载均衡与思维阅读

#coding#arts
目录

第十五周 ARTS。这周约了几个好久不见的“狱友”聚餐(因为我们同在的上家公司是做司法行业业务系统的,所以调侃称为“狱友”),聊了很多,让我感触最深刻的就是关于读书和学习的思维力和金字塔原理,怎么样高效的读书学习也是有套路可寻的,掌握一些模式可以更快的掌握书中的有效信息,本周的Share分享几本相关的书,与大家共勉。

Algorithm

package org.nocoder.leetcode.solution;

/**
 * Given a sorted array nums, remove the duplicates in-place such that each element
 *
 * appear only once and return the new length.
 *
 * Do not allocate extra space for another array, you must do this by modifying the
 *
 * input array in-place with O(1) extra memory.
 *
 * Example 1:
 *
 * Given nums = [1,1,2],
 *
 * Your function should return length = 2, with the first two elements of nums being 1 and 2 respectively.
 *
 * It doesn't matter what you leave beyond the returned length.
 * Example 2:
 *
 * Given nums = [0,0,1,1,1,2,2,3,3,4],
 *
 * Your function should return length = 5, with the first five elements of
 *
 * nums being modified to 0, 1, 2, 3, and 4 respectively.
 *
 * It doesn't matter what values are set beyond the returned length.
 * Clarification:
 *
 * Confused why the returned value is an integer but your answer is an array?
 *
 * Note that the input array is passed in by reference,
 *
 * which means modification to the input array will be known to the caller as well.
 *
 * Internally you can think of this:
 *
 * // nums is passed in by reference. (i.e., without making a copy)
 * int len = removeDuplicates(nums);
 *
 * // any modification to nums in your function would be known by the caller.
 * // using the length returned by your function, it prints the first len elements.
 * for (int i = 0; i < len; i++) {
 *     print(nums[i]);
 * }
 * @author jason
 * @date 2018/10/13.
 */
public class RemoveDuplicatesFromSortedArray {
    public int removeDuplicates(int[] nums) {
        if(nums == null || nums.length == 0){
            return 0;
        }
        int count = 1;

        for (int i = 1; i < nums.length; i++) {
            if (nums[i - 1] != nums[i]) {
                nums[count++] = nums[i];
            }
        }

        return count;
    }
}

Review

Apache Kafka Quickstart

最近计划对系统内部、系统与系统间的接口调用进行解耦,春哥推荐使用kafka,之前我们都没有用过kafka,于是花了一个下午的时间来入门kafka,把官网的introduction啃了一遍,照着quickstart操作,体验了一把。

Kafka 中的几个基本概念:

Kafka Streams

使用kafka streams 进行消息的发布、处理、消费,比较神奇的流式操作使用起来很爽,不能打断点进行debug,但是可以通过peek()方法来查看运行时变量的值。

Tip

Share

金字塔原理

《金字塔原理》是一本讲解写作逻辑与思维逻辑的读物,全书分为四个部分。

第一篇主要对金字塔原理的概念进行了解释,介绍了如何利用这一原理构建基本的金字塔结构。目的是使读者理解和运用简单文书的写作技巧。

第二篇介绍了如何深入细致地把握思维的环节,以保证使用的语句能够真实地反映希望表达的思想要点。书中列举了许多实例,突出了强迫自己进行“冷静思维”对明确表达思想的重要性。

第三篇主要针对的对象是需要写研究分析报告的人士,以及需要对复杂的问题进行分析、提出结论供决策使用的人士。这一篇介绍了如何在解决问题过程中的不同阶段使用多种框架来组织分析过程,使写作者的思维在实际上进行了预先组织,从而能够更方便地应用金字塔原理。

第四篇介绍了一些演示技巧,能够写作者在以幻灯片等书面形式演示具有金字塔结构的思想时,能让读者或观众感受到金字塔结构的存在。

附有三个附录。附录一涉及的是分析法和科学法在解决问题过程中的区别;附录二列举了序言部分的各种常用写作模式;附录三是全书要点的详细提纲,突出了《金字塔原理》的关键概念和关键思维技巧,以便读者快速查阅。

思维力:高效的系统思维

“真正有用”正是这本书不同于其它思维书籍之处!

你有没有遇到过以下窘境——分析时想不明白、表达时说不清楚、学习时学不快速?你想不想全面提升你的思维能力?你知道问题解决技巧和表达技巧有哪些吗?

此书中有你想知道的答案。

本书分为3个部分共10章,各章可自成体系地解决一个问题,同时整书又形成一套体系化的系统思维。

第一部分探秘了“框架”力量的根源。万事万物的本质其实是一个个的系统,而掌握了系统的“框架”也就把握了事物的本质。Nothing 是不能利用框架解决的,如果一个不行,那就两个。

第二部分将运用“框架”解决问题分解为五个步骤——界定问题、构建框架、明晰关键、高效执行及检查调整,并精炼了相应的优秀思考方法和工具。此外,还传授了在有限时间、有限资源限制下高质量地解决问题的秘诀——“假设思考”。

第三部分传授如何运用“框架”有效表达。逐层递进地演示了自上而下表达的魅力,并用丰富的图表阐述了何为“形象化表达”。

对于想全面提升思维能力的读者,建议按照本书章节顺序阅读;对于迫切想寻求具体问题解决技巧或表达技巧的读者,也可以直接阅读相应章节。

如何阅读一本书

每本书的封面之下都有一套自己的骨架,作为一个分析阅读的读者,责任就是要找出这个骨架。一本书出现在面前时,肌肉包着骨头,衣服包裹着肌肉,可说是盛装而来。读者用不着揭开它的外衣或是撕去它的肌肉来得到在柔软表皮下的那套骨架,但是一定要用一双X光般的透视眼来看这本书,因为那是了解一本书、掌握其骨架的基础。

《如何阅读一本书》初版于1940年,1972年大幅增订改写为新版。不懂阅读的人,初探阅读的人,读这本书可以少走冤枉路。对阅读有所体会的人,读这本书可以有更深的印证和领悟。


评论区