国产性生交xxxxx免费-国产中文字幕-啊灬啊灬啊灬快灬高潮了,亚洲国产午夜精品理论片在线播放 ,亚洲欧洲日本无在线码,色爽交视频免费观看

鍋爐信息網 > 鍋爐知識 > 鍋爐學習

ARTS 1

發布時間:

Algorithm算法部分本周比較初級,之前沒刷過,以后每周多刷一些。順便學下go語言palindrome-number// 思路 此消彼長 x=全部數字  r=

Algorithm

算法部分本周比較初級,之前沒刷過,以后每周多刷一些。順便學下go語言

palindrome-number

// 思路 此消彼長 x=全部數字 r=后半段數字的翻轉 當 r >= x時說明已經過了 x的一半了 如果是偶數 x==r 如果是奇數則去掉最后一位判斷相等n// 如:n// 1221 對比: 12 和21的翻轉是否相同n//n// 12321 對比:12 123 / 10n// 問題:n// 怎么拿到每位的數字? 循環 r = x%10 x/10n// 怎么翻轉? r*10 + x%10n//n// 時間復雜度 O(N)n// 空間復雜度 O(1)nnfunc isPalindrome(x int) bool {n if x < 0 || (x != 0 && x%10 == 0) {n return falsen }n var r = 0n for x > r {n r = r*10 + x%10n x /= 10n }n return r == x || r/10 == xn}n

two-sum

/**n空間換時間n求兩個數的和等于一個數,就等于查找目標數字和數組里的差是否在數組中。 可以通過hashmap將 O(n) 變O(1)然后一層循環n時間復雜度: N(n)n空間復雜度: N(n)n */nfunc twoSum(nums []int, target int) []int {n var m = make(map[int]int)n m[nums[0]] = 0n for i := 1; i < len(nums); i++ {n var c = target - nums[i]n if n, ok := m[c]; ok {n return []int{n, i}n } else {n m[nums[i]] = in }n }n return niln}n

Review

3個方式編寫簡潔的測試用例

3 easy ways to write cleaner unit tests

  1. 不要在把多個test在一個function里進行測試。
  • 可讀性差
  • 模糊不清的狀態,需要推理才能知道你在驗證什么
  • 起始狀態不明確
  1. 起一個有有意義的測試名字

這樣更具有更好的可讀性,而且測試的目的性也更明確。 可以以這個格式起名字

public void testSYSTEM_BEHAVIOR_CONDITION() {

錯誤實例: 這是在驗證什么,誰也不知道

public void testBasicFunctionality() {

正確實例: 讓人一看就知道你要干什么

public void testAuthenticate_rejectsUser_whenBadCredentialsProvided() {

  1. AAA: Arrange, Act, Assert
  2. Arrange: 初始化test所需要的環境以及變量。如 mock RPC的返回,模擬填充數據庫等。
  3. Act: 執行需要驗證的function
  4. Assert: 驗證是否符合你預期的

按照這個順序去分割你的代碼,使可讀性更強一些.

例子:

public void Pay_returnInsufficient_whenNotEnoughAmountOfUserProvided() {n // Arrange n int totalamount = 100n // 模擬數據庫返回,返回一個小于totalamout的用戶n UserDao userdao = mockUserDaoForSomeNotEnoughAccount(totalamount);n PayService.setUserDao(userdao)nn //Act n // 調用支付方法n PayResult result = PayService.pay(user_id,totalamount)nn // Assert n // 驗證狀態n assertThat(result.status).isEqueis(Insufficient);n}

單元測試還是很重要的,他可以幫住你驗證和梳理你程序的流程、條件等。好的testcese應該讓人知道你在驗證什么,可讀性、目的性要強,同時也方便讓他人進行閱讀。 對自己負責也對其他人負責

Tip

在用grpc做rpc通訊的時候,不像傳統的http可以直接curl請求做測試。 發現了個項目可以用curl的方式調用grpc在此分享一下。

grpcurl -d '{"id": 1234, "tags": ["foo","bar"]}' n grpc.server.com:443 my.custom.server.Service/Method

https://github.com/fullstorydev/grpcurl

Share

最新在看linux性能優化實戰,補一些基礎的知識,先有個概念,然后在買書深入學些下。把學到一些知識點分享一下。

系統在變慢的時候,首先看下機器的負載情況。

通過top和uptime可以查看平均負載

$ uptimen11:07:56 up 546 days, 22:43, 2 users, load average: 3.12, 3.15, 3.35n# 上邊是過去1、5、15分鐘的平均負載

System load averages is the average number of processes that are either in a runnable or uninterruptable state. A process in a runnable state is either using the CPU or waiting to use the CPU. A process in uninterruptable state is waiting for some I/O access, eg waiting for disk. The averages are taken over the three time intervals. Load averages are not normalized for the number of CPUs in a system, so a load average of 1 means a single CPU system is loaded all the time while on a 4 CPU system it means it was idle 75% of the time.

系統平均負載簡單來說就是就是單位時間內,系統正在處理runnable狀態的和不可中斷狀態的進程。

runnable狀態: 正在使用CPU的進程和等待使用CPU的進程。

不可中斷狀態: 正在等待IO處理的進程。 是系統對進程和硬件的一種保護機制,保證在回寫的時候不會被其他進程中斷,進而保護數據。

總結下就是平均負載就是活躍的進程數。是當前IO、CPU、等待進程數的負載情況,所以只看CPU使用率是不能完全代表機器的負載的。

負載超過多少就算高了呢。

一般來說推薦超過70%就算高了. 那怎么計算這個比例呢? 就是平均負載除以CPU核數即可。 獲取CPU核數

$ grep 'model name' /proc/cpuinfo | wc -ln4

我的機器是4核心的。 上邊負載有3個值,看哪個呢? 都要看的其實,3個值表示一個趨勢,比如說過 15分鐘的時候負載是7,1分鐘的負載是3,那說明負載在降低。反之

可以分場景對比下指標

首先安裝systat,其中包含了很多監控系統的工具。 其中mqstat用來查看多核CPU的性能的,pidstat是用來查看進程的運行情況的. 還可以通過stress來模擬IO繁忙和CPU繁忙的狀態,進行對應的對比

yum install -y sysstat stress

CPU密集型

終端1 把一核跑滿

stress --cpu 1 --timeout 600

終端2 可以看到load已經到1了快,如果跑夠一分鐘的話就會變成1了。

uptime 11:37:46 up 292 days, 20:07, 4 users, load average: 0.94, 0.49, 0.23

查看每個CPU的負載情況

mpstat -P ALL 5 1nLinux 3.10.0-693.el7.x86_64 (mall-admin1.cf.bj.tx.lan) 2019年03月23日 _x86_64_ (4 CPU)nn11時34分48秒 CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idlen11時34分53秒 all 25.18 0.00 0.15 0.05 0.00 0.00 0.00 0.00 0.00 74.62n11時34分53秒 0 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60n11時34分53秒 1 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80n11時34分53秒 2 0.20 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 99.40n11時34分53秒 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00nn平均時間: CPU %usr %nice %sys %iowait %irq %soft %steal %guest %gnice %idlen平均時間: all 25.18 0.00 0.15 0.05 0.00 0.00 0.00 0.00 0.00 74.62n平均時間: 0 0.20 0.00 0.20 0.00 0.00 0.00 0.00 0.00 0.00 99.60n平均時間: 1 0.20 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 99.80n平均時間: 2 0.20 0.00 0.40 0.00 0.00 0.00 0.00 0.00 0.00 99.40n平均時間: 3 100.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00

可以看到CPU利用率25% CPU3 被用到了100%

查看哪個進程負載比較高

pidstat -u 5 1nLinux 3.10.0-693.el7.x86_64 (mall-admin1.cf.bj.tx.lan) 2019年03月23日 _x86_64_ (4 CPU)nn11時41分29秒 UID PID %usr %system %guest %CPU CPU Commandn11時41分34秒 0 4696 100.00 0.00 0.00 100.00 3 stressn11時41分34秒 0 12487 0.40 0.00 0.00 0.40 1 barad_agentnn平均時間: UID PID %usr %system %guest %CPU CPU Commandn平均時間: 0 4696 100.00 0.00 0.00 100.00 - stressn平均時間: 0 12487 0.40 0.00 0.00 0.40 - barad_agent

可以看到是我們的stress把把CPU用到了100%

下邊基本上就是上邊的這幾個指標不同的變,我大概說下數據就不補了,有興趣的同學直接按照上面的命令查看就行

IO密集型

stress -i 1 --timeout 600

負載仍然是1 查看指標的時候會看到%iowait的總值到100%

大量進程場景

stress -c 8 --timeout 600

負載是8 已經嚴重超標了 %CPU 50%

精選推薦

  • 催化燃燒設備供應商
    催化燃燒設備供應商

    催化燃燒設備供應商,催化燃燒處理裝置廠家,本裝置是采用廢氣先進入噴淋塔過濾——干式過濾—-蜂窩活性碳吸附—脫附再生——催化燃

  • 該不該有模具供應商
    該不該有模具供應商

    今天紅姐又來跟我探討供應商的管理問題了。故事是這樣的:供應商來料不良,原因是模具問題。而那個模具是我們找的一家模具供應商做的

  • 什么牌子高壓鍋好,高壓鍋哪個牌子好,高壓鍋什么牌子好,高壓鍋哪個品牌好
    什么牌子高壓鍋好,高壓鍋哪個牌子好,高

    1蘇泊爾 雙重安全閥門 高壓鍋雙重安全閥,防燙把手,復合底。這款高壓鍋擁有雙重安全閥門,更好的保證使用安全。搭載防燙傷把手,方便起

  • 高壓鍋啥牌子好,高壓鍋哪個牌子的好,什么高壓鍋牌子好,高壓鍋推薦選購指南
    高壓鍋啥牌子好,高壓鍋哪個牌子的好,什

    1、雙喜階梯型復底高壓鍋推薦理由:高壓鍋滿足上蒸下煮,飯菜同時進行,方便快速,有效提升烹飪效率。多重安全防護,安全系數較高,家人使用

0