自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(12)
  • 收藏
  • 关注

原创 深入理解JVM:内存区域

深入理解JVM:内存区域运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域。注:白色 区域为 线程私有(生命周期与线程相同),蓝色 区域为 线程共享。程序计数器(Program Counter Register)程序计数器是一块较小的内存空间,可以被看做是当前线程所执行的字节码的行号指示器。每条线程都需要一个独立...

2018-03-29 11:55:17 353

原创 深入分析LinkedHashMap (JDK1.8)

深入分析LinkedHashMap (JDK1.8)类名和继承关系public class LinkedHashMap<K,V> extends HashMap<K,V> implements Map<K,V>{内部存储结构/*** HashMap.Node subclass for normal LinkedHashMap ...

2018-03-26 10:46:23 577

原创 Java内存模型(JMM)

Java内存模型(JMM)原子性(Atomicity) 原子性是指一个操作是不可中断的。即使是多个线程一起执行的时候,一个操作一旦开始,就不会被其他线程干扰。比如,一个静态全局变量 int i,两个线程同时对它赋值,线程A给他赋值1,线程B给它赋值-1。那么不管两个线程怎么工作,i的值只能是1或则-1.线程A和线程B之间没有干扰。对于 32 位系统的来说, long 类型...

2018-03-26 10:44:32 300

原创 线程复用:线程池

线程复用:线程池 为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用。线程池中,总有几个活跃线程。当你需要使用线程时,可以从池中随便获取一个空闲线程,当工作完成时,线程不会关闭而是退回池中。JDK 提供的线程池工厂方法newFixedThreadPool返回固定线程数量的线程池。当有一个新的任务提交时,线程池若有空闲线程,则立即执行。若没有,则新的任务会被暂...

2018-03-19 17:27:13 812

原创 使用函数计算来构建小程序

使用函数计算来构建小程序传统服务器架构 VS Serverless架构Serverless架构Login & Auth 微信登录状态维护语音识别音频格式转换 使用ffpmeg来实现音频转换//使用ffmpeg将mp3转化为wavString bashCommand = String.format("./ffmpeg -y -...

2018-03-15 17:33:55 913

原创 ArrayList、Vector、LinkedList分析

ArrayList、Vector、LinkedList分析ArrayList 实质是包装了一个数组,遍历时很快,但是插入、删除时都需要移动后面的元素,效率略差些。add()方法public boolean add(E e) { ensureCapacityInternal(size + 1); // Increments modCount!! elem...

2018-03-14 10:53:12 266

原创 深入理解Spring AOP

深入理解Spring AOP基本知识面向切面编程 AOPAOP(Aspect-Oriented Programming), 即 面向切面编程。AOP 术语通知(Advice) Advice 定义了切面是什么以及何时使用前置通知(Before):在目标方法被调用之前调用通知功能;后置通知(After):在目标方法完成之后调用通知,此时不会关心...

2018-03-09 10:05:06 374 1

原创 GitFlow驱动的敏捷开发

GitFlow驱动的敏捷开发GitFlow基础分支模型Git开发的分支模型已经讲过很多次了,但是实践中仍然有很多误区以及很多没有实现的地方。分支模型文章:A successful Git branching modelgit flow 初始化命令行git flow init :初始化一个git本地仓库。接着回答几个关于分支的问题。使用默认值即可,直接按回车键...

2018-03-08 10:06:55 980

原创 Git基本使用技巧

Git基本使用技巧说明Why Git基本用法教程Pro Git V1Pro Git V2推荐书籍《Git权威指南》如何写好 Git commit log实际用法参考资料中详细说明了 commit message 的内容,但是实际情况 commit message 更多是只写明 Header 部分。Header 包括三个字段:type、s...

2018-03-08 10:00:03 284

原创 程序员的自我修养

程序员的自我修养基本的原则一切以解决问题为导向很多时候大家做事是以问题为导向的:出了问题先找是谁负责的,把责任推给别人(俗称甩锅)。实际开发中,很多项目都是互相关联的。我们确实能找到一个主要负责人来负责这个问题,但是这并不能解决问题。正确的做法是 先把问题解决,尽量减少损失,然后再去排查这个问题发生的经过和原因(并不是一定要追究谁的责任,而是为了吸取教训)。 我和同事的相处也渡...

2018-03-07 16:02:31 308

原创 锁优化策略

锁优化策略提升锁性能的策略减少锁持有时间 只在需要锁竞争的地方加入锁的操作,减少锁的占有时间,以减少线程间互斥的可能。public synchronized void test(){ code1(); mutextMethod(); code2();}如果 code1() 方法和 code2() 方法不需要做同步控制,则会花费更多的 cup...

2018-03-05 16:13:10 1140

原创 深入理解ConcurrentHashMap

深入理解ConcurrentHashMap写在前面前面分析了 HashMap和Hashtable 。在多线程下, HashMap 的链表可能会出现死循环,所以 HashMap 是线程不安全的。 Hashtable 在所有涉及到多线程操作的都加上了 synchronized 关键字来锁住整个 table ,虽然保证了线程安全,但是无疑效率是地下的。针对 HashMap 线程不安全的问...

2018-03-02 12:05:22 943

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除