你听___
码龄11年
关注
提问 私信
  • 博客:122,200
    社区:70
    122,270
    总访问量
  • 39
    原创
  • 1,286,474
    排名
  • 58
    粉丝
  • 0
    铁粉

个人简介:有点文艺的程序员

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:浙江省
  • 加入CSDN时间: 2013-07-26
博客简介:

你听___

博客描述:
情怀
查看详细资料
个人成就
  • 获得126次点赞
  • 内容获得26次评论
  • 获得415次收藏
创作历程
  • 2篇
    2019年
  • 37篇
    2018年
成就勋章
TA的专栏
  • Java并发
    20篇
  • Java8
    1篇
  • MySQL
  • ES6
    13篇
  • Git
    1篇
  • 个人思考
    1篇
兴趣领域 设置
  • 人工智能
    机器学习深度学习神经网络
创作活动更多

HarmonyOS开发者社区有奖征文来啦!

用文字记录下您与HarmonyOS的故事。参与活动,还有机会赢奖,快来加入我们吧!

0人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

eslint+husky+prettier+lint-staged提升前端应用质量

1. 引入扫描工具的初衷1.1 针对痛点目前在梳理前端应用时发现很多代码不规范的地方,包括简单的js问题以及代码格式化的问题,造成了代码可读性下降,另外各种历史代码也是“风格迥异”,甚至影响了应用质量。应用开发成员大部分由于之前是开发后端,对前端开发经验不足以及许多前端知识体系都是在开发过程中现学现用慢慢积累的,另外,痛定思痛总在想对于前端应用代码质量是否也存在诸如Java开发规约扫描插件,类...
原创
发布博客 2019.02.17 ·
5152 阅读 ·
3 点赞 ·
0 评论 ·
8 收藏

入Ali的过去一年,谈谈我对code-review的理解

1. what—什么是CRcodereview(CR)一直以来在软件行业被视为提升代码质量的一种有效的方式,也被视为一种工程师文化的代表。关于什么是CR,在goole出具体的定义如下:代码评审是指在软件开发过程中,对源代码的系统性。通常的目的是查找系统缺陷,保证软件总体质量和提高开发者自身水平。 Code Review是轻量级代码评审,相对于正式代码评审,轻量级代码评审所需要的各种成本要明显...
原创
发布博客 2019.01.14 ·
1513 阅读 ·
3 点赞 ·
0 评论 ·
8 收藏

13篇文章,教你学会ES6知识点

ES6深入理解ES6》学习笔记本文用于汇总链接到各个子章节的内容,github 欢迎大家题issues和PR,如果对你有帮助,也可以给 star 支持 :)目录第一章 块级绑定第二章 字符串和正则表达式第三章 函数第四章 扩展的对象功能第五章 解构:更方便的数据访问第六章 Symbol和Symbol属性第七章 Set与Map第八章 迭代器(Iterator)...
原创
发布博客 2018.05.08 ·
642 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入理解ES6--13.用模块封装代码

主要知识点:什么是模块、模块中的导出、模块中的导入1. 什么是模块?模块(Modules ) 是使用不同方式加载的 JS 文件(与 JS 原先的脚本加载方式相对) 。这种不同模式很有必要,因为它与脚本(script ) 有大大不同的语义:模块代码自动运行在严格模式下,并且没有任何办法跳出严格模式;在模块的顶级作用域创建的变量,不会被自动添加到共享的全局作用域,它们只...
原创
发布博客 2018.05.08 ·
666 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

【Java并发专题】27篇文章详细总结Java并发基础知识

努力的意义,就是,在以后的日子里,放眼望去全是自己喜欢的人和事!github:https://github.com/CL0610/Java-concurrency,欢迎题issue和Pull request。所有的文档都是自己亲自码的,如果觉得不错,欢迎给star鼓励支持 :)整个系列文章为Java并发专题,一是自己的兴趣,二是,这部分在实际理解上很有难度,另外在面试过程中也是经常...
原创
发布博客 2018.05.07 ·
1379 阅读 ·
5 点赞 ·
1 评论 ·
12 收藏

深入理解ES6--6.符号与符号属性

主要知识点:创建符号值、使用符号值、共享符号值、符号值转换。检索符号值属性以及知名符号1. Symbol基础1.1 创建符号值在 JS 已有的基本类型(字符串、数值、布尔类型、 null 与 undefined ) 之外, ES6 引入了一种新的基本类型:符号(Symbol ) 。 符号起初被设计用于创建对象私有成员,而这也是 JS 开发者期待已久的特性。在符号诞生...
原创
发布博客 2018.05.07 ·
4681 阅读 ·
1 点赞 ·
0 评论 ·
5 收藏

并发容器之ArrayBlockingQueue和LinkedBlockingQueue实现原理详解

1. ArrayBlockingQueue简介在多线程编程过程中,为了业务解耦和架构设计,经常会使用并发容器用于存储多线程间的共享数据,这样不仅可以保证线程安全,还可以简化各个线程操作。例如在“生产者-消费者”问题中,会使用阻塞队列(BlockingQueue)作为数据容器,关于BlockingQueue可以看这篇文章。为了加深对阻塞队列的理解,唯一的方式是对其实验原理进行理解,这篇文章就主要...
原创
发布博客 2018.05.06 ·
465 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发容器之BlockingQueue

1. BlockingQueue简介2. 基本操作3. 常用的BlockingQueue1. BlockingQueue简介在实际编程中,会经常使用到JDK中Collection集合框架中的各种容器类如实现List,Map,Queue接口的容器类,但是这些容器类基本上不是线程安全的,除了使用Collections可以将其转换为线程安全的容器,Doug Lea大师为我们都准备了...
原创
发布博客 2018.05.06 ·
392 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

并发容器之CopyOnWriteArrayList

1. CopyOnWriteArrayList的简介java学习者都清楚ArrayList并不是线程安全的,在读线程在读取ArrayList的时候如果有写线程在写数据的时候,基于fast-fail机制,会抛出ConcurrentModificationException异常,也就是说ArrayList并不是一个线程安全的容器,当然您可以用Vector,或者使用Collections的静态方法将...
原创
发布博客 2018.05.06 ·
207 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

一篇文章,从源码深入详解ThreadLocal内存泄漏问题

1. 造成内存泄漏的原因?threadLocal是为了解决对象不能被多线程共享访问的问题,通过threadLocal.set方法将对象实例保存在每个线程自己所拥有的threadLocalMap中,这样每个线程使用自己的对象实例,彼此不会影响达到隔离的作用,从而就解决了对象在被共享访问带来线程安全问题。如果将同步机制和threadLocal做一个横向比较的话,同步机制就是通过控制线程访问共享对象...
原创
发布博客 2018.05.06 ·
231 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

并发容器之ThreadLocal

1. ThreadLocal的简介2. ThreadLocal的实现原理3. ThreadLocalMap详解3.1 Entry数据结构3.2 set方法3.3 getEntry方法3.4 remove4. ThreadLocal的使用场景1. ThreadLocal的简介在多线程编程中通常解决线程安全的问题我们会利用synchronzed或者lock控制线程对...
原创
发布博客 2018.05.06 ·
238 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

并发容器之ConcurrentLinkedQueue

1.ConcurrentLinkedQueue简介在单线程编程中我们会经常用到一些集合类,比如ArrayList,HashMap等,但是这些类都不是线程安全的类。在面试中也经常会有一些考点,比如ArrayList不是线程安全的,Vector是线程安全。而保障Vector线程安全的方式,是非常粗暴的在方法上用synchronized独占锁,将多线程执行变成串行化。要想将ArrayList变成线程...
原创
发布博客 2018.05.06 ·
2769 阅读 ·
3 点赞 ·
2 评论 ·
5 收藏

并发容器之ConcurrentHashMap(JDK 1.8版本)

1.ConcurrentHashmap简介在使用HashMap时在多线程情况下扩容会出现CPU接近100%的情况,因为hashmap并不是线程安全的,通常我们可以使用在java体系中古老的hashtable类,该类基本上所有的方法都采用synchronized进行线程安全的控制,可想而知,在高并发的情况下,每次只有一个线程能够获取对象监视器锁,这样的并发性能的确不令人满意。另外一种方式通过Co...
原创
发布博客 2018.05.06 ·
212 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

LockSupport工具

1. LockSupport简介在之前介绍AQS的底层实现,已经在介绍java中的Lock时,比如ReentrantLock,ReentReadWriteLocks,已经在介绍线程间等待/通知机制使用的Condition时都会调用LockSupport.park()方法和LockSupport.unpark()方法。而这个在同步组件的实现中被频繁使用的LockSupport到底是何方神圣,现在...
原创
发布博客 2018.05.06 ·
217 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

详解Condition的await和signal等待/通知机制

1.Condition简介任何一个java对象都天然继承于Object类,在线程间实现通信的往往会应用到Object的几个方法,比如wait(),wait(long timeout),wait(long timeout, int nanos)与notify(),notifyAll()几个方法实现等待/通知机制,同样的, 在java Lock体系下依然会有同样的方法实现等待/通知机制。从整体上来...
原创
发布博客 2018.05.06 ·
17556 阅读 ·
22 点赞 ·
6 评论 ·
60 收藏

深入理解ES6--2.字符串与正则表达式

主要知识点:新增的字符串处理方法、模板字面量以及正则表达式上的改动1. 字符串处理方法 codePointAt()方法ES6 为全面支持 UTF-16 而新增的方法之一是 codePointAt() ,它可以在给定字符串中按位 置提取 Unicode 代码点。该方法接受的是码元位置而非字符位置,并返回一个整数值。 String.fromCodePoint()...
原创
发布博客 2018.05.06 ·
291 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入理解ES6--12.代理与反射接口

主要知识点:代理和反射的定义、常用的陷阱函数、可被撤销的代理、将代理对象作为原型使用、将代理作为类的原型1. 代理和反射 代理是什么?通过调用 new Proxy() ,你可以创建一个代理用来替代另一个对象(被称之为目目标对象) ,这个代理对目标对象进行了虚拟,因此该代理与该目标对象表面上可以被当作同一个对象来对待。代理允许你拦截目标对象上的底层操作,而这本来...
原创
发布博客 2018.05.05 ·
237 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

深入理解读写锁ReentrantReadWriteLock

1.读写锁的介绍在并发场景中用于解决线程安全的问题,我们几乎会高频率的使用到独占式锁,通常使用java提供的关键字synchronized(关于synchronized可以看这篇文章)或者concurrents包中实现了Lock接口的ReentrantLock。它们都是独占式获取锁,也就是在同一时刻只有一个线程能够获取锁。而在一些业务场景中,大部分只是读数据,写数据很少,如果仅仅是读数据的话并...
原创
发布博客 2018.05.03 ·
293 阅读 ·
0 点赞 ·
3 评论 ·
0 收藏

彻底理解ReentrantLock

1. ReentrantLock的介绍ReentrantLock重入锁,是实现Lock接口的一个类,也是在实际编程中使用频率很高的一个锁,支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性(关于synchronized可以看这篇文章),synchronized通过获取自增,释放自减的方式实现重入。与此同时,R...
原创
发布博客 2018.05.03 ·
13904 阅读 ·
12 点赞 ·
6 评论 ·
46 收藏

深入理解AbstractQueuedSynchronizer(AQS)

1. AQS简介在上一篇文章中我们对lock和AbstractQueuedSynchronizer(AQS)有了初步的认识。在同步组件的实现中,AQS是核心部分,同步组件的实现者通过使用AQS提供的模板方法实现同步组件语义,AQS则实现了对同步状态的管理,以及对阻塞线程进行排队,等待通知等等一些底层的实现处理。AQS的核心也包括了这些方面:同步队列,独占式锁的获取和释放,共享锁的获取和释放以及...
原创
发布博客 2018.05.03 ·
182 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多