[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 將在未來幾年內迎來快速發展。

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