Arts 第一週 20190325

curlykale發表於2019-03-24

ARTS
Algorithm 每週至少做一個 Leetcode 的演算法題。主要是為了程式設計訓練和學習。
Review 每週閱讀並點評至少一篇英文技術文章。主要是為了學習英文。
Tip 每週學習至少一個技術技巧。主要是為了總結和歸納你在日常工作中所遇到的知識點。
Share 每週分享一篇有觀點和思考的技術文章。主要是為了建立你的影響力,能夠輸出價值觀。

Algorithm

給定一個包含 n 個整數的陣列 nums,判斷 nums 中是否存在三個元素 a,b,c ,使得 a + b + c = 0 ?找出所有滿足條件且不重複的三元組。

public static List<List<Integer>> threeSum2(int[] nums) {
        List<List<Integer>> result = new LinkedList<>();
        Arrays.sort(nums);
        for (int i = 0; i < nums.length - 2; ) {
            int j = i + 1;
            int k = nums.length - 1;
            while (j < k) {
                if (nums[j] + nums[k] == -nums[i]) {
                    List<Integer> list = new ArrayList<>(3);
                    list.add(nums[i]);
                    list.add(nums[j]);
                    list.add(nums[k]);
                    result.add(list);
                    k--;
                    j++;
                    while (j < k && nums[j] == nums[j - 1]) {
                        j++;
                    }
                    while (j < k && nums[k] == nums[k + 1]) {
                        k--;
                    }
                } else if (nums[j] + nums[k] > -nums[i]) {
                    k--;
                    while (j < k && nums[k] == nums[k + 1]) {
                        k--;
                    }
                } else {
                    j++;
                    while (j < k && nums[j] == nums[j - 1]) {
                        j++;
                    }
                }
            }
            i++;
            while (i < nums.length - 2 && nums[i] == nums[i - 1]) {
                i++;
            }
        }
        return result;
    }

複製程式碼

Review

docker-curriculum.com/#what-is-do…

  • Docker是什麼
    Docker是一個工具,允許開發人員,系統管理員等將他們的應用程式部署在容器中,以便在主機作業系統(即Linux)上執行。Docker的主要優點是它允許使用者將具有所有依賴關係的應用程式打包到容器中。容器開銷小,能夠更有效地使用底層系統和資源。
  • 容器是什麼
    通過利用主機作業系統的底層機制,容器以一小部分計算能力提供大部分虛擬機器的功能
  • 為什麼我們要使用容器
    容器具有良好的可移植性。提供了一種打包機制,可以將應用程式實際執行環境中分離出來。無論系統環境是私有資料中心,公有云,還是個人膝上型電腦,都可以通過容器遮蔽作業系統層面的差異,使程式執行環境保持一致,並且可以在任何地方執行。
  • 通過這個教程我們會學到什麼
    系統掌握Docke應用技術。在雲上構建和部署自己的Web應用程式的實踐經驗。在雲上使用docker部署靜態網站和動態Web應用程式。

Tips:CentOS 7建立root許可權使用者並配置SSH

建立使用者

參考連結:www.cnblogs.com/mylinux/p/5…

adduser tommy //新增一個名為tommy的使用者
passwd tommy //修改密碼
usermod -g root tommy //新增tommy使用者到root使用者組

複製程式碼

配置使用者root許可權

增加 sudoers 檔案寫許可權

chmod +w /etc/sudoers
複製程式碼

編輯 sudoers 檔案

vi /etc/sudoers
複製程式碼

增加tommy ALL=(ALL) ALL

## Allow root to run any commands anywhere
root ALL=(ALL) ALL
tommy ALL=(ALL) ALL //增加賬戶root許可權
複製程式碼

取消 sudoers 檔案寫許可權

chmod -w /etc/sudoers
複製程式碼

配置ssh許可權

vi /etc/ssh/sshd_config
複製程式碼

修改以下內容

PermitRootLogin no //阻止root使用者登陸
AllowUsers sirius //允許制定使用者使用SSH登陸
systemctl restart sshd
複製程式碼

解決登入之後,使用者顯示 -bash-4.2$ 問題

cd /etc/skel/
cp .bash* /home/tommy
複製程式碼

Share

工作了有一段時間了,最近一直在思考,怎麼樣才算把技術用好了,怎麼樣才能讓技術助力公司實現業務價值的最大化,而不是一味地堆新技術,堆新功能。產品和技術在一個公司發展的初期很重要,等公司發展到一定規模,運營的價值會凸顯出來。所以技術的價值應該體現在兩個方面:公司發展早期技術主要是幫助公司研發優秀的產品;公司業務發展到一定階段,技術主要是產品迭代、研發新產品,幫助提高運營管理。