自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 深入理解 JVM——谈谈TLAB

最近疫情很严重啊,大家尽量别出门戴好口罩保护好自己哈。在家翻翻深入理解 Java 虚拟机这本神书,有这样一段话:“对象的内存分配,往大方面讲,就是在堆上分配(但也可能经过 JIT 编译后被拆散为标量类型并间接地在栈上分配),对象主要分给在新生代的 Eden 区上,如果启动了本地线程分配缓冲,将按线...

2020-02-02 12:01:48 177 0

原创 深入理解 JVM——虚拟机类加载机制

类的生命周期是怎样的? 加载->验证->准备->解析->初始化->使用->卸载 (为了支持 Java 语言的运行时绑定 动态绑定,解析可在初始化后完成。) 什么是类加载? 把 .class 文件加载到内存,对其校验,转换,解析,初始化,最终形成可被虚拟机直接使用...

2020-01-31 22:05:56 36 0

原创 Java8的 merge() 骚操作

今天下班路上听一个妈妈问她儿子这么晚才出校门,孩子委屈极了,说在帮助老师统计全班同学的月考总分。如果是我拿到一个包含学生姓名和学生各科成绩list 的list,应该怎样快速而又简洁地求出每个学生对应的总成绩呢?查了下,原来 Java8 的 merge() 可以实现类似场景。记录一下~ packag...

2019-11-27 21:41:03 434 0

原创 一个简单的业务重试方案[EventBus+Executor+AOP]

对于系统中出现的异常,有的需要告警出来,譬如参数校验不通过,写操作因为幂等的原因失败;有的则需要进行业务重试,譬如 rpc 调用超时。如何设计一个优良的重试机制呢?个人认为应当具备下面几点。 侵入性小:实现重试的代码逻辑与现有的业务逻辑应尽可能地分离,所谓不侵入,少耦合,重试逻辑与正常逻辑解耦...

2019-11-27 20:55:34 175 0

原创 Some typical SQL in our daily coding.

数据库的表设计中经常会有使用json存储的大字段,经常会有模糊匹配大字段的需求,在 mapper.xml 文件中如何进行模糊匹配呢。记录一下: <if test="feeType != null and feeType !=''"> ...

2019-11-26 20:20:01 38 0

原创 读书笔记——Kafka核心技术与实战(生产者压缩算法小结)

压缩:Conpression 用时间去换取空间的经典 trade-off 思想,用 CPU 时间换磁盘空间或网络 IO 传输量,用较少的 CPU 开销带来更少的磁盘占用或 IO 传输。 Kafka 的消息层次 消息集合 message set 和 消息 message,一个消息集合包含多个日...

2019-08-25 16:38:38 40 0

原创 读书笔记——Kafka核心技术与实战(生产者分区机制原理)

为什么分区? 分区作用是提供负载均衡的能力,对数据分区是为了实现系统的高伸缩性 (High Scalability). 不同的分区可放置在不同节点的机器上(同一个分区的副本可以分布在不同的机器上),数据的访问操作都是针对分区这个粒度进行的,这样每个节点的机器都独立执行各自分区的读写请求; 增加...

2019-08-25 16:15:23 56 0

原创 读书笔记——Kafka核心技术与实战(生产环境的 Kafka 集群方案需考虑的因素)

既然是集群,必定涉及到多Kafka节点机器,单台机器构成的伪集群只能在日常测试中使用,无法满足线上实际需求。考虑因素: 操作系统 磁盘 磁盘容量 带宽 操作系统 IO 模型的使用:Kafka 底层使用 Java 的 selector,selector 在 Linux 的实现机制是 epoll...

2019-08-24 16:34:57 110 0

原创 关于消息队列的一些思考

在一个事务中,A系统使用rpc调用了B系统的service,在本地调试时经常会出现rpc调用超时的问题,将会导致整个事务的回滚,况且随着业务量的增大,调用rpc的次数也会急剧增加。组内大佬一排砖头决定:将rpc调用改成消息队列MQ的方式,A系统成功将请求发送给MQ后便会继续执行后续操作。 作为...

2019-06-16 08:43:06 101 0

原创 读书笔记——Kafka核心技术与实战(Kafka入门)

一.消息引擎系统ABC 一款消息引擎系统,传说中的消息中间件 传输的对象是消息;如何进行消息的传输是消息引擎设计机制的一部分 传输协议: 点对点; 发布订阅; 消息从A到B之间之所以需要一个消息引擎——“削峰填谷” 秒杀系统:将瞬间增加的订单流量以消息形式保存在对应的主题中,一不影响上游的...

2019-06-04 12:50:47 432 0

原创 Daily-Notes-June

20190603 函数式编程 一切皆是表达式。 命令式编程 是 告诉程序怎么做 函数式编程 是 告诉程序做什么 防止又臭又长的代码:Optional.of(user).map(User::getAddress).map(Address::getCountry).map(Country::get...

2019-06-03 18:43:01 72 0

原创 Daily-Notes-May

Mybatis$的sql注入问题,#可以防止;

2019-05-16 19:52:40 68 0

原创 Why override hashCode() & equals()?

有这样一个场景:在一个长为n的线性序列中查找某一个数值A,不得不从头到尾遍历,此时的平均查找次数是n/2;但如果将n个数据存放在Hash表中,其平均查找次数接近于1,代价大大地减小。因为在Hash表的存储中,存放其中的数据和其存储位置是存在某种Hash函数关联的。 背景 方便起见,我们假设数据A的...

2019-04-23 21:57:14 209 0

原创 读书笔记——深入理解Java虚拟机之Java 运行时数据区域

谈谈对 Java 运行时数据区域 有何理解 概述: JVM在执行 Java 时会将其所管理的内存划分为若干个不同的数据区域。各区域有各自的用途,创建和销毁的时间,有的随着jvm的启动而存在,有的根据用户线程的启停而创建或销毁。 划分: 程序计数器-Program Counter Reg...

2019-04-06 22:36:21 67 0

原创 由AOP引发的几点思考

毕业面试那会儿,被问最多的问题便是:请你解释一下什么是AOP思想。当时最喜欢的回答方式是先将英文全称给呈现出来“威慑”下面试官,即——Aspect Oriented Programming。然后把网上搜集的各种解释,使用场景理直气壮地背一遍。这样的回答能唬住一些对应届生要求不高的面试官,但真遇上爱...

2019-03-31 16:54:28 86 0

原创 谈谈项目中的日志

参与工作也有大半年的时间了,在日常的项目开发中,感触很深的是——日志对于系统的重要性。本科那会儿做项目,最喜用System.out.println、System.err.println以及一场对象的printStrackTrace来显示相关信息。当项目日益庞大,如果仍然采用控制台输出,恐怕控制台都...

2019-03-24 21:43:33 1553 0

原创 浅析Java中的深克隆和浅克隆

说实话,目前为止还没在项目中遇到过关于Java深克隆和浅克隆的场景。今天手抖戳开了花呗账单,双十二败家的战绩真是惨不忍睹,若能在我的客户端“篡改”下账单金额,那该(简)有(止)多(做)好(梦)啊!于是乎,有了以下的设想。采用工厂模式,根据所传入的帐户名accountName 得到账单bill返回客...

2019-01-02 13:08:26 1165 0

原创 谈谈设计模式——以手动实现单例模式和Spring中使用到的设计模式为例

设计模式也算是面试高频考点,理解典型的设计模式,有利于我们提高沟通、设计的效率和质量,在某种程度上也代表了一些特定情况的最佳实践。 设计模式的分类 大致上按照应用目标进行分类,可分为创建型模式、结构型模式、行为型模式。 创建型模式:对对象创建过程中的各类问题和解决方案的总结,包含工厂模式、...

2018-06-05 18:21:02 227 0

原创 Java中String类的温故知新

Java中主要用以处理字符串的类是String,StringBuffer和StringBuilder。也是面试中的常见考点,一块来温故而知新吧~ String 常见用法 String str1 = "I love China."; String...

2018-06-04 19:35:41 106 0

原创 写在五月末

该怎么记录这个充满离别和选择的五月呢?拥别了大学里的室友,朋友,听着《凤凰花开的日子》,看着列车外不复重现的风景,离开了回忆满满的大学,送别了我最美好的四年锦时,踏上了“社会人”的征途。 五月总结 别了,我的大学 毕设 本专业 由于被抽到盲审,定稿早已在四月份完成,回校...

2018-05-31 22:52:44 155 0

原创 堆的应用之——求前K最大值和求中值

今天和大家一块学习下面试中常见的两个关于堆的面试题,第一:求K个最大值;第二:求中值元素。算法和数据结构算是笔者的死穴了。 一、求前K个最大的值 首先能想到的是使用Arrays.sort()进行排序后取前K个值即可,效率是O(N*log2^N)。 其次可以进行循环选择K次,每次都从...

2018-05-28 22:34:25 642 0

原创 数据库相关面试笔记

一、数据库主键和外键作用 主键作用:能保证设置主键的列非空且唯一.另外,在定义主键时,如果这列之前没有索引,系统会为其创建唯一性索引 。 外键作用:能保证设置外键的列取值必须匹配父表中已有的值.通过外键可以与同一张表的列建立引用关系,也可以与不同表的列建立引用关系。外键可以有重复值,也可以为空...

2018-05-25 11:41:57 258 0

转载 HashMap桶中链表转红黑树为什么选择数字8?

在JDK8及以后的版本中,HashMap引入了红黑树结构,其底层的数据结构变成了数组+链表或数组+红黑树。添加元素时,若桶中链表个数超过8,链表会转换成红黑树。 翻了一下HashMap的源码,发现其源码中有这样一段注释: Because TreeNodes are about twice the...

2018-05-24 22:34:13 9527 7

原创 计网学习笔记——ipconfig的理解

ip地址是网卡在网络世界里的通讯地址相当于现实世界的门牌号码。有时候电脑弹出网络地址的冲突,上不去网的情况多半是ip地址冲突了。查看ip地址的方式有以下两种: windows上: 1. ipconfig linux上: 1.ifconfig 2.ip addr ...

2018-05-24 21:38:13 606 0

原创 2018拜拜了四月以及我想要的五月

日子总是向前走,潇潇洒洒不回头。每到人生的一个转折点,便会感到时间的匆匆。对于即将毕业的我来说,更是如此。可能还是对未来的路有点踌躇吧。没计划中那么深入学习技术,也没怎么学习英文,惭愧啊。 四月总结 实习 项目重构ddl为本月末,完成了自己负责的部分,考虑到接下来会离开准备论文,项目代码,...

2018-05-02 16:17:40 184 1

原创 Spring boot 项目热部署学习笔记

Spring boot 项目热部署 场景 本地调试 线上发布 思考 一些网站或服务,全年不间断运行,即使重新发布程序后也不需要重启服务是怎么做到的呢? 优点 本地和线上都适用 无需重启服务器 提高开发和调试效率 提高发布运维效率 Java热部署和热加载的联系 部署方式 热部署在服...

2018-05-02 15:16:35 112 0

原创 RESTful碎碎笔记

RESTful 各论坛对于RESTful架构风格的博文有不少,学习过后记录下一些小笔记~ 本质:一种软件架构风格,而不是标准,只是提供了一组设计原则和约束条件。它主要用于客户端和服务器交互类的软件。基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制。 核心: 面向资源 万物抽...

2018-04-29 21:14:17 72 0

原创 HashMap学习笔记

HashMap学习笔记 今天来学习面试以及平时工作学习中常用到的一个类HashMap。 概述: 什么是HashMap 常见操作(get和put)的工作原理 Hash函数的实现 Resize是什么 一、什么是HashMap 官方描述: 关键信息:基于Map、和HashT...

2018-04-17 16:14:53 138 1

原创 二叉树的三种遍历还不清楚?赶紧上车吧。

本文将从代码实现的视角和大家一块学习二叉树的前序、中序以及后续遍历,还没整明白的盆友们赶紧上车吧。 打开你的IDEA,新建一个类BinarySearchTree,为什么要&lt;T extends Comparable&lt;? extends T&gt;&gt...

2018-04-15 15:24:07 155 0

翻译 学习笔记——JVM,JDK,JRE&OpenJDK之间的差异

本文翻译自What is the difference between JVM, JDK, JRE &amp; OpenJDK?,如有不恰当之处,欢迎留言指出。 观点一: - JVM:Java虚拟机用以运行Java二进制代码,它不认识Java的源代码,所以咱必须将*.java文...

2018-04-14 18:10:42 2310 0

原创 2018年三月总结与四月展望

二月底离开浙江,辗转南昌到上海,时间过得很快,又是一个月。作为一个即将离校的毕业生,有时候真会迷茫,想记录点关于实习、学习以及生活上的点滴来反省自我、探索更好的学习方法、生活方式以更好地成长。就按照时间流来吧。 三月总结 3月1号—3月17号 难能可贵的在校时间,很是羡慕学弟学妹们还能翘...

2018-03-31 20:05:40 1035 2

原创 IDEA中添加Google CheckStyle 完美指南

所谓“一千个读者就有一千个哈姆雷特”,不同的程序员,有着截然不同的代码风格。譬如抛出使用空格键还是TAB键的问题,就足以让程序员演化成风格迥异的不同色系。但在真正的产品开发中,如何写出高质量、易维护、强可读的代码尤为重要,这就需要一个普遍认可的编码规范,今天就和大家一块学习如何在IDEA中添...

2018-03-05 11:31:58 19513 0

原创 深入理解JVM——垃圾回收算法

一、标记—清除算法 介绍 最基础的收集算法 涉及“标记”和“清除”:首先标记所需回收的对象,一并清除。 特征 效率不高 空间问题:结束后产生大量不连续的内存碎片,导致后续分配大内存对象时不得不提前触发垃圾收集操作。 二、复制算法 1.介绍 内存均分成两块,但只使用其中一块...

2018-03-05 09:48:35 95 0

原创 Code Style Guide之正交设计浅析

前提:模块化设计 为什么需要模块化设计? 理论上可以只使用一个函数完成全部功能,但是太过复杂,超过人的掌控极限。因此必须要划分开,对问题进行分解。(面向过程-&gt;面向对象) 模块化设计遇到的两个问题 如何划分模块? 模块之间如何连接? 软件设计 为何要做软件设计? ...

2018-03-04 21:22:31 154 0

原创 Coding Style Guide 之软件设计原则初探

软件设计原则 面向接口编程,而不是面向实现。接口是稳定的,而实现是多样的。 命令-查询分离原则: 当一个方法返回一个值来回应一个问题的时候,它就具有查询的性质;当一个方法要改变对象的状态的时候,它就具有命令的性质。查询不会改变对象的状态,命令会改变对象的状态,因此查询操作是安全的、性能好的。...

2018-03-04 21:17:24 212 0

原创 Coding Style guide之如何写出优质代码

实习所在公司虽是一个小型创业公司,但是技术栈很新并且特别注重开发规范,每周都会有几次组织学习的机会。现将学习笔记记录如下,大家一块学习讨论~ 优质代码十个突破口 DRY 短小的方法(易阅读、易重用、易测试)。短小的标准:尽量控制在20行之内,嵌套层次不要太深,一屏可以全部显示,最好不要超过5...

2018-03-04 21:11:37 157 0

原创 在SSM下使用POI解析Excel数据并实现批量导入到数据库

暑假实习期间,作为一名Java后台开发的小白实习生,项目组老大分发给我的一项任务就是实现在SSM下实现Excel数据的导入/导出,咱总不能手动Ctrl+C/Ctrl+V实现吧hhh,于是经过查阅资料,发现Apache的一个子项目POI可以帮助解析Office文档并实现需求。分享如下: Apach...

2018-03-04 20:58:21 2758 5

原创 Java8新特性——Lambda表达式应用场景

之前在学习Java8的新特性时,十分喜欢Lambda的简洁性,而真正地用以解决项目中的技术点时,更为之惊叹不已。现在有这样的需求:从由Project这个类组成的List中取出id和name组成对应的键值对。 有下面这样的实体类,简洁起见,将多余的字段和注解以及类的继承关系去除。 i...

2018-03-04 20:55:47 3903 0

原创 深入理解JVM——volatile in Java

第一次面试时,interviewer问“你对volatile了解多少?”由于interviewer的发音(英:[ˈvɒlətaɪl]))有些不准,笔者很傻地问了好几遍“您说什么?”,然后…直接GG了。volatile是JVM提供的最轻量级的同步机制,作为应届生面试中常见的关键字考察点,一块来学习下...

2018-03-03 10:50:57 404 0

原创 深入理解JVM——Java运行时数据区域浅析

JVM在运行时将其内存区域划分为不同的区域,各区域承担的职责和生命周期不尽相同,有的随着JVM进程的存在(消亡)而存在(消亡),而有些则是线程私有的,生命周期与其所在线程一致。和笔者一块学习一下吧~ 方法区(Method Area) Java堆(Heap) 虚拟机栈(VM Stack) 本地方...

2018-03-02 10:49:55 117 0

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