• Algorithm。主要是为了编程训练和学习。 每周至少做一个 leetcode 的算法题(先从Easy开始,然后再Medium,最后才Hard)。 进行编程训练,如果不训练你看再多的算法书,你依然不会做算法题,看完书后,你需要训练。 关于做Leetcode的的优势,你可以看一下我在coolshell上的文章 Leetcode 编程训练 - 酷 壳 - CoolShell。

  • Review:主要是为了学习英文,如果你的英文不行,你基本上无缘技术高手。 所以,需要你阅读并点评至少一篇英文技术文章, 我最喜欢去的地方是http://Medium.com(需要梯子) 以及各个公司的技术blog,如Netflix的。

  • Tip:主要是为了总结和归纳你在是常工作中所遇到的知识点。 学习至少一个技术技巧。你在工作中遇到的问题,踩过的坑,学习的点滴知识。

  • Share:主要是为了建立你的影响力,能够输出价值观。 分享一篇有观点和思考的技术文章。

Algorithm:

求两个数的交集:

给定两个数组,编写一个函数来计算它们的交集。

示例 1:

输入: nums1 = [1,2,2,1], nums2 = [2,2]
输出: [2,2]

示例 2:

输入: nums1 = [4,9,5], nums2 = [9,4,9,8,4]
输出: [4,9]

说明:

  • 输出结果中每个元素出现的次数,应与元素在两个数组中出现的次数一致。
  • 我们可以不考虑输出结果的顺序。

进阶:

  • 如果给定的数组已经排好序呢?你将如何优化你的算法?
  • 如果 nums1 的大小比 nums2 小很多,哪种方法更优?
  • 如果 nums2 的元素存储在磁盘上,磁盘内存是有限的,并且你不能一次加载所有的元素到内存中,你该怎么办?
class Solution {
public int[] intersect(int[] nums1, int[] nums2) {
long start = System.currentTimeMillis();
int len1=nums1.length;
int len2=nums2.length;
boolean[] bl=new boolean[len2];
ArrayList<Integer> al=new ArrayList<Integer>();
for(int i=0;i<len1;i++) {
for(int j=0;j<len2;j++) {
if(nums1[i]==nums2[j] && bl[j]==false) {
al.add(nums1[i]);
bl[j]=true;
break;
}
}
}
int[] in = new int[al.size()];
int e=0;
for(int i:al)
in[e++] = i; long end = System.currentTimeMillis();
System.out.println(end-start);
return in; }
}

知识点:Boolean b1 = new Boolean[5]   里面的元素默认都是false。

Review:https://docs.spring.io/spring/docs/current/spring-framework-reference/web-reactive.html#webflux-new-framework

这篇是spring react-core 的介绍,介绍了httpHandler webHandler exception  filter 等。

Tip:BigDecimal  进行计算时,如果传入null会报空指针异常。因此可以在,字段类型的BigDecimal 字段 get 方法改写为,

return  aaa == null ? new BigDecimal(0) :aaa; aaa 是自己定义的一个字段,这样从数据库接收不到值时,就会返回0,而不是null。

BigDecimal 类型的数字去负数可以调用它的 negate()方法。

Share

https://mp.weixin.qq.com/s?__biz=MzIwMTY0NDU3Nw==&mid=2651938818&idx=1&sn=f5cde40ba0925b63ad691a81e76c9ec7&chksm=8d0f0f4cba78865ac424f3149cb0fdea2af4a777e14e4e9f91499d4fdcf2a2867e7901bcb4f3&mpshare=1&scene=1&srcid=&key=32072adf498bfba63e9ffa4122490d64f45baa66c64fb51cd2b7f2663bfc48f6d57df7ac74c7c7b225ba9c2f63fec34a09ff4efdabbce9b94ba0d912545020de0222390d0246d8c0d67a8663b855fbdd&ascene=1&uin=NjY5NzE2NzA5&devicetype=Windows+10&version=6206081a&lang=zh_CN&pass_ticket=M4BRoSuoecLmO0wDmIv3Jt1BWNwRs2qDarANkr1RgoBNJ8VumZZevaF5F7QCEYB%2B

上面是 Java团长公众号发布的关于什么是并发的介绍,以及应对方法:

知识点:

1 方法内的变量是成员变量,是放在栈内存中的。方法外的变量也就是,类的成员变量是  放在堆内存中的。

2 方法内的变量,每个线程都会copy一份,不会有并发问题。而成员变量,是线程公用的,因此可能一个线程,没用完,另一个线程就会接着用,这样数据就对不上了,也就是并发问题。

3 解决方式是,把成员变量定义成final类型的,这样 任何线程都不能修改就不存在,并发问题。  还可以在方法内在使用成员变量时枷锁,这样只有一个线程用完另一个线程才能用,也不会存在并发问题。  这中方式是假定数据一定会被修改,叫做悲观锁。

有可能线程比较少,一个线程工作一段时间之后去休眠,当别的线程修改了它的数据,就重新计算,没有修改,就继续使用原来的数据,这种方式cvs  乐观锁。

最新文章

  1. Mysql字符集设置
  2. 【BZOJ 1087】【SCOI 2005】互不侵犯King
  3. Android Studio编译输出apk文件修改文件名
  4. 为什么不能把委托(delegate)放在一个接口(interface)当中?
  5. my class 2.0
  6. 《c程序设计语言》读书笔记--多个空格变为一个空格
  7. 【现代程序设计】【homework-02】【11061027】
  8. 无限大整数相加算法的C语言源代码
  9. art.dialog 与 ajax 异步请求
  10. 任何时候都适用的20个C++技巧
  11. CodeForces 340E Iahub and Permutations
  12. 这么说吧,java线程池的实现原理其实很简单
  13. 【从零开始自制CPU之学习篇02】555定时器
  14. eclipse中maven项目jar包不会自动下载解决办法
  15. wifidog源码分析 - 客户端检测线程
  16. 最新的vueWebpack项目
  17. 固定顶部指定div不滑动
  18. AndroidStudio -- AndroidStuido中找不到cache.properties文件
  19. LibSVM源码剖析(java版)
  20. hdu 1253

热门文章

  1. JS中浏览器的数据存储机制
  2. English-培训1-Phonetic symbols
  3. 【日语】日语N5学习
  4. Vue 案例 列表动画实例
  5. 【转载】解密ThreadLocal
  6. Centos7安装教程
  7. 【OF框架】框架规范介绍
  8. python数据类型:dict(字典)
  9. MyBatis_动态sql_foreach_mysql下foreach批量插入的两种方式
  10. java kafka