ARTS 打卡计划第一周 04/21

ARTS 打卡计划第一周 04/21

Algorithm

TwoSum

Given an array of integers, return indices of the two numbers such that they add up to a specific target.
You may assume that each input would have exactly one solution, and you may not use the same element twice.

example:

Given nums = [2, 7, 11, 15], target = 9,
Because nums[0] + nums[1] = 2 + 7 = 9,
return [0, 1].

package easy;
import java.util.HashMap;
/**
 * 一遍hash表
 * 复杂度分析:
 * 时间复杂度:O(n)O(n), 我们只遍历了包含有 nn 个元素的列表一次。在表中进行的每次查找只花费 O(1)O(1) 的时间。
 * 空间复杂度:O(n)O(n), 所需的额外空间取决于哈希表中存储的元素数量,该表最多需要存储 nn 个元素。
 **/

public class TwoSum {

    class Solution {
        public int[] twoSum(int[] nums, int target) {
            HashMap<Integer,Integer> hashMap = new HashMap();
            for (int i=0;i<nums.length;i++){
                if (hashMap.containsKey(target-nums[i])){
                    return  new int[]{hashMap.get(target-nums[i]) , i};
                }
                hashMap.put(nums[i],i);
            }
            //return nums;
            throw new IllegalArgumentException("No two sum solution");
        }
    }
}

提交结果

TwoSum
TwoSum

Review

eHarmony hooks up with Redis NoSQL database for hot storage

这篇文章主要讲了美国最大的婚恋交友网站使用Redis来实现匹配功能等热数据的实现,文章叙述了非关系型数据库对于传统的关系型数据库的优势,该公司的架构师也做出了相关了的考虑分析。解释了Redis在热数据处理速度上的巨大优势,以及不同数据库对应的不同应用场景。

Tips

学习双向认证流程
  • a. 客户端发送一个连接请求给服务器。

  • b. 服务器将自己的证书,以及同证书相关的信息发送给客户端。

  • c. 客户端检查服务器送过来的证书是否和App内置证书相同。如果是,就继续执行协议;如果不是则终止此次请求。

  • d. 接着客户端比较证书里的消息,例如域名和公钥,与服务器刚刚发送的相关消息是否一致,如果是一致的,客户端认可这个服务器的合法身份。

  • e. 服务器要求客户发送客户自己的证书。收到后,服务器验证客户端的证书,如果没有通过验证,拒绝连接;如果通过验证,服务器获得用户的公钥。

  • f. 客户端告诉服务器自己所能够支持的通讯对称密码方案。

  • g. 服务器从客户发送过来的密码方案中,选择一种加密程度最高的密码方案,用客户的公钥加过密后通知客户端。

  • h. 客户端针对这个密码方案,选择一个通话密钥,接着用服务器的公钥加过密后发送给服务器。

  • i. 服务器接收到客户端送过来的消息,用自己的私钥解密,获得通话密钥。

  • j. 服务器通过密钥解密客户端发送的被加密数据,得到明文数据。

Share

一文读懂Https的安全性原理、数字证书、单项认证、双项认证等