每周完成一个ARTS:
Algorithm:每周至少做一个LeetCode算法题;
Review:阅读并评论至少一篇英文技术文章;
Tip:学习至少一个技术技巧;
Share:分享一篇有观点和思考的技术文章;
Algorithm
LeetCode1:Two Sum
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 leetcode_Alg;
import java.util.Arrays;
import java.util.HashMap;
public class L1_Two_Sum {
/*
* @LittleWang
* 01 :直接计算
*/
public static int[] twoSum1(int[] nums, int target) {
int[] a=new int[2];
for(int i=0;i<nums.length;i++)
{
for (int j=i+1;j<nums.length;j++)
{
if (nums[j]==target-nums[i])
{
a[0]=i;
a[1]=j;
}
}
}
return a;
};
/*
* @LittleWang
* 02 :Map优化
*/
public static int[] twoSum2(int[] nums, int target) {
int[] a=new int[2];
HashMap<Integer,Integer> map = new HashMap<>();
for(int i=0;i<nums.length;i++)
{
int temp = target - nums[i];
if (map.containsKey(temp))
{
a[0]=map.get(temp);
a[1]=i;
} else{
map.put(nums[i],i);
}
}
return a;
};
public static void main(String[] args){
int[] nums={0,1,2,4,6};
int target=3;
System.out.println(Arrays.toString(twoSum2(nums,target))); //使用数组打印Arrays.toString(a)
}
}
Review
原文链接:https://dzone.com/articles/redis-in-a-microservices-architecture
Redis in a Microservices Architecture
Redis通常被认为是一个缓存,这篇文章中作者给出了Redis 在微服务框架中与Spring Cloud 和 Spring Data一起的三个应用:
- configuration server
- a message broker
- a database
Tip
这周分享关于Map的技巧:
java.util
public interface Map<K, V>
Map的三个特点:键值对,键唯一,键对应值唯一。
HashMap是最常用的Map。
LinkedHashMap相比于HashMap内部多维护了一个双向列表,目的就是保证输入顺序和输出顺序一致,但消耗增大。
SortedMap在Map的基础上增加了排序的功能。它要求key与key之间是可以相互比较的,通过comparator来实现排序。
NavigableMap继承于SortedMap,目前只有TreeMap和ConcurrentNavigableMap两种实现方式,本质上添加了搜索选项到接口,主要为红黑树服务。
TreeMap本质是一个红黑树,不允许key的值为null。
AbstractMap用于帮助我们实现自己的Map类的抽象类。
原文来源:
https://blog.csdn.net/wz249863091/article/details/77483948
https://www.cnblogs.com/lzq198754/p/5780165.html
Share
感觉毕业一年多一直浑浑噩噩的混日子,业务不精技术不行,然后一直在迷茫想做什么,却又什么都没有做。
这周看了耗子叔的《程序员如何用技术变现》,有两点印象深刻:
1 要去经历大多数人经历不到的,要把学习时间花在那些比较难得地方;
要懂得把宝贵的时间花在宝贵的地方,越是艰难的地方越是要深挖,可是我往往做不到,希望从ARST开始养成一种深入思考的习惯。
2 程序员是一个手艺人;
目前的岗位核心思想是技术服务于业务,所有的技术人员都是处于一种很被动的状态中,所以开始迷茫于自己的职业定位,近期感到一阵焦虑,夸张点想,长此以往自己依旧是一个垃圾菜鸟,在社会中毫无竞争力。
“程序员是个手艺人”,不是流水线上的复制粘贴的人,这样的定位一下子活了起来,不再被动的被公司改造,而是要实现独立自由的自我发展,这就需要自己不断的学习,不断的积累。
从现在开始,加油吧。