摘要: 制定代码规约的意义 统一的代码风格可以让开发工程师们没有代码心理壁垒,每个人可以轻松阅读并快速理解代码逻辑,便于高效协作,逐步形成团队代码的风格。 高效 标准统一,提升沟通效率和协作效率,好的编码规范可以最大限度的提高团队开发的合作效率。 质量 长期的规范性编码还可以让开发人员养成好的编码习惯,甚至 阅读全文
posted @ 2019-12-26 15:42 weigen- 阅读(1293) 评论(0) 推荐(0) 编辑
摘要: 简介 RabbitMQ是流行的开源消息队列系统。RabbitMQ是AMQP(高级消息队列协议)的标准实现。支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX,持久化。用于在分布式系统中存储转发消息,在易用 阅读全文
posted @ 2019-12-20 15:29 weigen- 阅读(483) 评论(0) 推荐(0) 编辑
摘要: 接口定义 Callable接口 Runnable接口 相同点 都是接口 都可以编写多线程程序 都采用Thread.start()启动线程 不同点 Runnable没有返回值;Callable可以返回执行结果,是个泛型,和Future、FutureTask配合可以用来获取异步执行的结果 Callabl 阅读全文
posted @ 2020-03-23 14:48 weigen- 阅读(151) 评论(0) 推荐(0) 编辑
摘要: "一 使用线程池的好处" "二 Executor 框架" "2.1 简介" "2.2 Executor 框架结构(主要由三大部分组成)" "1) 任务( / )" "2) 任务的执行( )" "3) 异步计算的结果( )" "2.3 Executor 框架的使用示意图" "三 (重要)ThreadP 阅读全文
posted @ 2020-01-20 15:47 weigen- 阅读(427) 评论(0) 推荐(0) 编辑
摘要: java运行过程可以分为 编译 》 类加载 》 执行 类加载主要是由jvm虚拟机负责的,过程非常复杂,类加载分三步 加载 》 连接 》初始化,(这里的加载和本文标题的类加载是不同的,标题的类加载包含了完整的三个步骤)下面详细说说每一步的过程 加载: 这个很简单,程序运行之前jvm会把编译完成的.cl 阅读全文
posted @ 2020-01-20 14:02 weigen- 阅读(174) 评论(0) 推荐(0) 编辑
摘要: 上文回顾: "《 深入理解Java内存模型(JMM)》" 写在前面 本节常见面试题: 问题答案在文中都有提到 如何判断对象是否死亡(两种方法)。 简单的介绍一下强引用、软引用、弱引用、虚引用(虚引用与软引用和弱引用的区别、使用软引用能带来的好处)。 如何判断一个常量是废弃常量 如何判断一个类是无用的 阅读全文
posted @ 2020-01-17 16:41 weigen- 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 概述 对于 Java 程序员来说,在虚拟机自动内存管理机制下,不再需要像 C/C++程序开发程序员这样为每一个 new 操作去写对应的 delete/free 操作,不容易出现内存泄漏和内存溢出问题。正是因为 Java 程序员把内存控制权利交给 Java 虚拟机,一旦出现内存泄漏和溢出方面的问题,如 阅读全文
posted @ 2020-01-15 16:15 weigen- 阅读(836) 评论(0) 推荐(0) 编辑
摘要: 1. 面向对象和面向过程的区别 面向过程 优点: 性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。 缺点: 没有面向对象易维护、易复用、易扩展 面向对象 优点: 易维护、易复用、易扩展,由于面 阅读全文
posted @ 2020-01-09 17:19 weigen- 阅读(278) 评论(0) 推荐(0) 编辑
摘要: final 关键字 final关键字主要用在三个地方:变量、方法、类。 1. 对于一个final变量,如果是基本数据类型的变量,则其数值一旦在初始化之后便不能更改;如果是引用类型的变量,则在对其初始化之后便不能再让其指向另一个对象。 2. 当用final修饰一个类时,表明这个类不能被继承。final 阅读全文
posted @ 2020-01-09 17:03 weigen- 阅读(216) 评论(0) 推荐(0) 编辑
摘要: 什么是自旋锁 自旋锁是指当一个线程尝试获取某个锁时,如果该锁已被其他线程占用,就一直循环检测锁是否被释放,而不是进入线程挂起或睡眠状态。 为什么要使用自旋锁 多个线程对同一个变量一直使用CAS操作,那么会有大量修改操作,从而产生大量的缓存一致性流量,因为每一次CAS操作都会发出广播通知其他处理器,从 阅读全文
posted @ 2020-01-09 16:28 weigen- 阅读(3134) 评论(0) 推荐(0) 编辑
摘要: 无锁的概念 在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发展事态如果不及时控制,以后就无法挽回了,即使无法挽回的局面几乎不可能发生。 这两种派系映射到并发编程中就如同加 阅读全文
posted @ 2020-01-08 13:37 weigen- 阅读(5415) 评论(0) 推荐(1) 编辑
摘要: list 的遍历方式选择: 实现了RadmoAcces接口的list,优先选择普通for循环 ,其次foreach, 未实现RadmoAcces接口的ist, 优先选择iterator遍历(foreach遍历底层也是通过iterator实现的),大size的数据,千万不要使用普通for循环 数据结构 阅读全文
posted @ 2020-01-02 09:36 weigen- 阅读(515) 评论(0) 推荐(0) 编辑