[RATS]week-2

Algorithm

给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。

示例 1:
nums1 = [1, 3]
nums2 = [2,4,5]
则中位数是 3.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

  public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int medianCeilIndex, medianFloorIndex, arrayTotalLength;
        arrayTotalLength = nums1.length + nums2.length;
        if ((nums1.length + nums2.length) % 2 == 0) {
            medianFloorIndex = arrayTotalLength / 2 - 1;
            medianCeilIndex = arrayTotalLength / 2;
        } else {
            medianFloorIndex = (int) Math.floor(arrayTotalLength / 2);
            medianCeilIndex = medianFloorIndex;
        }

        int[] numArraySorted = new int[arrayTotalLength];
        int cursor = 0;
        System.arraycopy(nums1, 0, numArraySorted, 0, nums1.length);
        System.arraycopy(nums2, 0, numArraySorted, nums1.length, nums2.length);
        int tmpMax, nextLength = arrayTotalLength;

        while (nextLength > 0) {
            while (cursor + 1 < nextLength) {
                if (numArraySorted[cursor] > numArraySorted[cursor + 1]) {
                    tmpMax = numArraySorted[cursor];
                    numArraySorted[cursor] = numArraySorted[cursor + 1];
                    numArraySorted[cursor + 1] = tmpMax;
                }
                cursor++;
            }
            cursor = 0;
            nextLength--;
        }
        return (numArraySorted[medianCeilIndex] + numArraySorted[medianFloorIndex]) / 2.0;
    }

Review

原文-Main Projects

Spring Cloud Config
Centralized external configuration management backed by a git repository. The configuration resources map directly to Spring Environment but could be used by non-Spring applications if desired.
配置
Git仓库支持的外部集中式配置管理。配置的资源映射到Spring环境,但如果需要也可以使用在非Spring应用程序

Spring Cloud Netflix
Integration with various Netflix OSS components (Eureka, Hystrix, Zuul, Archaius, etc.).
Spring Cloud 网元
各种网元OSS(Object Storage Service)组件(Eureka, Hystrix, Zuul, Archaius, etc.等)

Spring Cloud Bus
An event bus for linking services and service instances together with distributed messaging. Useful for propagating state changes across a cluster (e.g. config change events).
总线
事件总线通过分布式消息链接各服务与服务实例。事件总线针对集群间的传播状态的改变非常有用(例如配置表更事件)。

Spring Cloud Cloudfoundry
Integrates your application with Pivotal Cloud Foundry. Provides a service discovery implementation and also makes it easy to implement SSO and OAuth2 protected resources.
云结构
可以通过关键性的云结构合并应用程序。提供发现实现的服务并且也可简单的实现单点登陆SSO和OAuth2受保护资源。

Spring Cloud Open Service Broker
Provides a starting point for building a service broker that implements the Open Service Broker API.
开放式服务代理
提供起点来建造实现开放式服务代理API的服务代理

Spring Cloud Cluster
Leadership election and common stateful patterns with an abstraction and implementation for Zookeeper, Redis, Hazelcast, Consul.
集群
通过抽象领导选择与普遍的状态模式,实现Zookeeper,Redis,Hazelcast Consul.

Spring Cloud Consul
Service discovery and configuration management with Hashicorp Consul.
Consul
Consul是HashiCorp公司推出的开源软件,使用GO语言编写,提供了分布式系统的服务注册和发现、配置等功能,这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格。Consul不仅具有服务治理的功能,而且使用分布式一致协议RAFT算法实现,有多数据中心的高可用方案,并且很容易和Spring Cloud等微服务框架集成,使用起来非常的简单,具有简单、易用、可插排等特点。使用简而言之,Consul提供了一种完整的服务网格解决方案 。

翻译-关键项目

Tips - MySQL 查询语句执行顺序

在这里插入图片描述
MySQL 分为 Server层存储引擎层两部分
Server层
包括连接器、查询缓存(5.X版本,8.0版本已经无此功能)、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,及所有的内置函数(日期、时间、加密函数等)。所有跨存储引擎的功能都在这一层实现,入存储过程、触发器、视图等
存储引擎层
负责数据的存储和提取。架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。也是5.5版本以后成为了默认存储引擎。

Server 层

连接器

负责跟客户端建立链接获取权限和管理链接

mysql -h127.0.0.1 -P3306 -uroot -p

查询缓存

MySQL拿到一个查询请求后,会先到查询缓存匹配,之前是否执行过这条语句。之前执行过的语句及其结果可能会议key(SQL语句)-value(查询结果)对的形式,直接存在内存中.
但查询缓存的失效非常频繁,只要对一个表更新,这个表上所有的查询缓存都会被清空。
建议按需使用:query_cache_type = DEMAND

Select SQL_CACHE * From Table

分析器

分析器先会做词法分析,然后做语法分析。语句不对会收到You hava an error in your SQL syntax的错误提醒

优化器

优化器是在表里有多个索引的时候,决定使用哪个索引。或在一个语句有多表关联的时候,决定各个表的链接顺序。

执行器

MySQL通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句。
开始执行的时候,
(1) 验证权限:先判断当前连接用户对这个表有没有执行查询的权限,如果有没有,返回没有权限的错误。
(2) 打开表:执行器就会根据表的引擎定义(如InnoDB),去使用这个引擎提供的结构.
(3) 逐行或根据索引,逐条返回符合查询条件的结果

以上摘自极客时间-《MySQL实战45讲》

Share - 未来五大变成语言

Swift
苹果公司希望淘汰 Objective-C 这一专为苹果生态系统打造的、已然“35 岁高龄”的编程语言,而继任者无疑正是五年前才刚刚诞生的 Swift 语言。根据分析公司 RedMonk 发布的长期语言排名,苹果的目标似乎正在顺利实现,Swift 自面世以来就一直保持着良好的增长势头。

话虽如此,Objective-C 表示自己还能抢救一下,而为其续命的正是过去三十年来产生的大量遗留代码。不过随着苹果的有力推动,其最终必然消失,而 Swift 将成为构建苹果应用的唯一支柱。苹果公司对于跨平台应用开发的整体规划,也将进一步加快 Swift 语言的普及速度。

Kotlin
Kotlin 正在崛起,而且可以说是必然崛起。十年之前,世界上还有一个“Kotlin”,一座俄罗斯属小岛。但如今,这款由谷歌公司全力支持的编程语言已经成为 Android 平台上的一流开发语言。
有些朋友可能会说,谷歌公司之所以选择 Kotlin,主要是为了减少对 Java 的依赖以及由此引发的同甲骨文之间的严重法律纠纷。这当然很对,而且不管谷歌方面的律师怎么想,开发人员对 Kotlin 也确实非常青睐,他们真心喜欢 Kotlin 丰富的功能与出色的灵活性。
早在 2018 年,Pusher 就发起过一项开发人员调查,发现 Kotlin 的使用正在呈指数级增长,而这在很大程度上要归功于 Android 的力挺。Pusher 在随数据发布的一份说明中补充称,“大部分开发人员都计划在自己的当前工作以及辅助项目当中使用 Kotlin 语言。说起最受人喜爱的功能,大多数人欣赏 Kotlin 出色的安全性——超过八成开发人员夸赞了其 null 安全性;其次是扩展功能,Kotlin 显著简化了 Java 互操作性与数据类。”
换句话说,Kotlin 似乎很快就将走向人生巅峰。最大的问题是,这种编程语言是否能够扩展到 Android 生态系统之外。我们将继续关注它开疆辟土的动向。

Python
没错,Python 拥有巨大的群众基础,为世界各的开发人员所接受并用于实现各类用途。而且根据 TIOBE 指数(每月更新),Python 的普及度只会越来越高,并不断蚕食其它语言的生存空间。事实上,开发人员与专业技术人员仍在持续发现 Python 的新用途,特别是数据分析与机器学习。
鉴于 Python 已经拥有庞大的用户群以及深深植根的业务基础,其接下来的发展态势可谓非常乐观。唯一的问题在于,这位编程语言中的翘楚还有多大增长空间,未来又将在哪些领域占据主导。

Groovy
Groovy 在 TIOBE 排名上的位置也在不断上升,其拥有广泛的 IDE 支持,与 Java 非常相似,而且能够同高人气开源自动化服务器方案 Jenkins 顺畅集成。它已经成为众多系统中的“编程语言粘合剂”,这也使其拥有着光明的发展前景。

TypeScript
在这里,我们姑且将 TypeScript 称为编程语言。没错,它实际上只是 JavaScript 的一个超集,有些开发人员可能认定它不能算是“完整”的编程语言,因为我们完全可以将其转换为 JavaScript 形式。
不管如何定义,RedMonk 与 GitHub 的 Octoverse 报告都认定 TypeScript 正在崛起。去年夏季,TIOBE 甚至指出 TypeScript 已经开始蚕食老大哥 JavaScript 的市场份额。
因此无论您是否将 TypeScript 视为一种“经过改进的新型”JavaScript,它都在吞噬其它旧有语言的生存空间,而且众多专业技术人员都坚信 TypeScript 将在未来几年内迎来快速发展。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章