摘要:一.什么是语法糖 语法糖(Syntactic Sugar),也称糖衣语法,是由英国计算机学家 Peter.J.Landin 发明的一个术语,指在计算机语言中添加的某种语法, 这种语法对语言的功能并没有影响,但是更方便程序员使用。简而言之,语法糖让程序更加简洁,有更高的可读性。 有意思的是,在编程领域
阅读全文
03 2020 档案
摘要:一.动态编程 动态编程是相对于静态编程而言的,平时我们讨论比较多的就是静态编程语言。 例如Java,与动态编程语言,例如JavaScript。那二者有什么明显的区别呢? 简单的说就是在静态编程中,类型检查是在编译时完成的,而动态编程中类型检查是在运行时完成的。 所谓动态编程就是绕过编译过程在运行时进
阅读全文
摘要:步骤 下载OpenJDK12,并解压至任意文件夹 地址:http://jdk.java.net/12/ 配置环境变量 (1)设置JAVA_HOME,指向openJDK目录; (2)新建系统变量CLASS_PATH,并设置为 %Java_Home%\bin;%Java_Home%\lib\dt.jar
阅读全文
摘要:原因: 我们知道hashmap的扩容因子是0.75,如果hashmap的数组长度已经使用了75%就会引起扩容,会新申请一个长度为原来两倍的桶数组, 然后将原数组的元素重新映射到新的数组中,原有数据的引用会逐个被置为null。就是在resize()扩容的时候会造成线程不安全。 另外当一个新节点想要插入
阅读全文
摘要:需求: MySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据? 1、限定 Redis 占用的内存 Redis 会根据自身数据淘汰策略,加载热数据到内存。 所以,计算一下 20W 数据大约占用的内存,然后设置一下 Redis 内存限制即可。 2、问题是什么
阅读全文
摘要:一.使用synchronized关键字 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时, 内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 注: synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。 同步是一种高开销的操作
阅读全文
摘要:第一种: 实现思路:使用两个for循环遍历集合所有元素,然后进行判断是否有相同元素,如果有,则去除。这种方式是大部分最先想到的,也是最简单的实现方式。 其中,这种方式可以保证List集合原来的顺序不变。 /** * notes:使用两个for循环实现List去重 * @param list * @r
阅读全文
摘要:前言: limit:基础用法:limit 的用法是 limit [offset], [rows],其中 offset 表示偏移值, rows 表示需要返回的数据行。 问题: mysql 的 limit 给分页带来了极大的方便,但数据偏移量一大,limit 的性能就急剧下降。 以下是两条查询语句,都是
阅读全文
摘要:一.为什么要用线程池 (1)减少资源的开销 ; (2)减少了创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。 (3)提高响应速度 ,每次请求到来时,由于线程的创建已经完成,故可以直接执行任务,因此提高了响应速度。 提高线程的可管理性 ,线程是一种稀缺资源,若不加以限制,不仅会占用
阅读全文
摘要:一.基础概念 1.Executors创建线程池: Java中创建线程池很简单,只需要调用Executors中相应的便捷方法即可,比如Executors.newFixedThreadPool(int nThreads),但是便捷不仅隐藏了复杂性,也埋下了潜在的隐患(OOM,线程耗尽)。 Executo
阅读全文