ARTS第五週打卡

1.Algorithmhtml

  給出一個 32 位的有符號整數,你須要將這個整數中每位上的數字進行反轉。redis

示例 1:
    輸入: 123
    輸出: 321
示例 2:
    輸入: -123
    輸出: -321
示例 3:
    輸入: 120
    輸出: 21
public int reverse(int x) {
        int rev = 0;
        while (x != 0) {
            int pop = x % 10;
            x /= 10;
            if (rev > Integer.MAX_VALUE/10 || (rev == Integer.MAX_VALUE / 10 && pop > 7)) return 0;
            if (rev < Integer.MIN_VALUE/10 || (rev == Integer.MIN_VALUE / 10 && pop < -8)) return 0;
            rev = rev * 10 + pop;
        }
        return rev;
    }
 

   重複「彈出」 xx 的最後一位數字,並將它「推入」到 rev 的後面。最後,rev 將與 xx 相反數組

   在沒有輔助堆棧 / 數組的幫助下 「彈出」 和 「推入」 數字,咱們可使用數學方法 安全

//pop operation:
pop = x % 10;
x /= 10;

//push operation:
temp = rev * 10 + pop;
rev = temp;

 

這種方法很危險,由於當temp=rev10+pop 時會致使溢出。服務器

幸運的是,事先檢查這個語句是否會致使溢出很容易。多線程

2.Review學習

  https://www.joelonsoftware.com/2000/04/06/things-you-should-never-do-part-i/this

  主要介紹了重構和重寫,重寫代碼有着不可預知的風險 ,重構老代碼減小風險,老代碼已經歷經時間來磨合bug該出現的問題大部分出現,在重構老代碼的同時可以提升本身對知識的學習。
spa

3.Tips操作系統

  ps + lsof 幫我找出 redis 的快照文件。 有一臺服務器中運行着一個 redis 服務。我想找到其快照文件。 dump.rdb 來研究一下。 可是我並不知道其目錄,搜索了對應操做系統的常規目錄中並無。由於發現 redis 是原來的系統管理員本身編譯安裝的。若是我嘗試本身找到它。 1)查看 redis.conf 中 dump.rdb 的目錄並無特別配置,也就是在應用運行的當前目錄。因此能夠先找出對應進程的當前目錄,而後查找 。 2)lsof 能夠列出對應進程所打開的全部文件。因此有可能有 dump.rdb

  1.ps -A |grep redis 獲得以下輸出. > 45000 ? 10-09:36:27 redis-server > 其實其進程 ID 是 45000, 進程名是 redis-server

  2.lsof -p 45000 > rf.log 打開文件並無找到 dump.rdb 的影子,不過有進程的當前目錄的信息。

COMMAND     PID USER   FD      TYPE     DEVICE  SIZE/OFF    NODE NAME
redis-ser 45000 root  cwd       DIR      202,2      4096 1058338 /root/path/redis-3.0.4

而後果真在 /root/path/redis-3.0.4 下找到了對應的 dump.rdb 文件 

  

4.Share

  不可變對象

  https://www.cnblogs.com/dolphin0520/p/10693891.html  

  一.什麼是不可變對象

    不可變對象(Immutable Object):對象一旦被建立後,對象全部的狀態及屬性在其生命週期內不會發生任何變化。

  二.深刻理解不可變性

    再多線程操做的時候,可變對象會帶來數據的安全性,用list set 存儲可變對象時,會發生數據的不安全。

  三.如何建立不可變對象

    1)全部成員變量必須是private

    2)最好同時用final修飾(非必須)

    3)不提供可以修改原有對象狀態的方法

      最多見的方式是不提供setter方法

      若是提供修改方法,須要新建立一個對象,並在新建立的對象上進行修改

    4)經過構造器初始化全部成員變量,引用類型的成員變量必須進行深拷貝(deep copy)

    5)getter方法不能對外泄露this引用以及成員變量的引用

    6)最好不容許類被繼承(非必須)

  四.不可變對象真的"徹底不可改變"嗎?

    能夠經過反射來進行改變

相關文章
相關標籤/搜索