自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 资源 (1)
  • 问答 (11)
  • 收藏
  • 关注

原创 大三Java实习总结网易百度小米美团阿里(均拿offer)

​ 2017年10月 网易考拉 Java ​ 12月 百度 Java ​ 2018年 1月 小米人工智能云平台 Java(已实习过) ​ 3月 美团外卖 Java 5月 阿里 新零售 Java总的来说面试无非要做到两点:1.别人答不上的,你得知道 2.别人答得上的,你得知道的更多!包括但不限于(Java多...

2018-05-17 15:11:19 472

原创 OCP原则的一次优化实践

背景计费系统中的试算方法,为了兼容不同场景的计费规则,定义了CalculateCondition接口,不同的场景分别有各自CalculateCondition实现类,分别对应不同的逻辑下面代码是目前的试算方法中的主要框架结构,分别用了3个if/else的分支判断逻辑,接下来的需求要新添加一个CalculateCondition的实现类及相应逻辑,就必须改动原有代码...... CalculateCondition calculateCondition = reques

2020-07-25 10:26:52 336

原创 谈即时编译优化-以异常堆栈丢失为例

前言日照充足会让西瓜更甜,那拥有即时编译优化会让Java程序怎么样?本文会初步介绍JVM的即时编译优化特性,并且通过异常堆栈丢失这一常见的现象来进行举例即时编译优化Java程序在运行初期是通过解释器来执行,当发现某块代码运行特别频繁,就会将之判定为热点代码(Hot Spot Code), 虚拟机会将这部分代码编译成本地机器码,并对这些代码进行优化。这件事就是即时编译(Just In Time, JIT)优化, 做这件事的就是即时编译器。解释器与编译器目前主流虚拟机都采用解释器、编译器并存的架构。

2020-05-24 10:24:47 306

原创 2K字带你读完《程序员修炼之道》精华

注重实效的哲学我的源码让猫给吃了在所有的弱点中,最大的弱点就是害怕暴露弱点。对于缺点、无知、错误,必须诚实。负责承诺的事情正确完成,无法完成,超出控制的事情不去承诺。为结果负责,出现问题时应提供其他解决方案,不是寻找借口。软件的熵低劣设计,糟糕代码需要发现一个就修一个,否则会加速任何一个整洁,良好系统的腐烂。破窗理论:一辆轿车放一星期无人理睬,一旦有一扇窗户被打破,数小时之内车...

2020-04-06 10:43:00 316

原创 谈谈双亲委派模型的第四次破坏-模块化

前言JDK9引入了Java模块化系统(Java Platform Moudle System)来实现可配置的封装隔离机制,同时JVM对类加载的架构也做出了调整,也就是双亲委派模型的第四次破坏。前三次破坏分别是:双亲委派模型推出之前,SPI机制,以及OSGI为代表的热替换机制,这里不细说。双亲委派模型简介在JDK9引入之前,绝大多数Java程序会用下面三个类加载器进行加载启动类加载器(B...

2020-03-29 19:07:56 236

原创 一定能看懂的RocketMQ事务消息源码分析(干货)

前言得益于MQ削峰填谷,系统解耦,操作异步等功能特性,在互联网行业,可以说有分布式服务的地方,MQ都往往不会缺席。由阿里自研的RocketMQ更是经历了多年的双十一高并发挑战,其中4.3.0版本推出了事务消息的新特性,本文对RocketMQ 4.5.0版本事务消息相关的源码跟踪介绍,通过阅读读者可以知道:事务消息解决什么样的问题事务消息的实现原理及其设计亮点解决什么问题假设我所在的系...

2019-07-14 07:41:17 1062

原创 常见设计模式要点总结

前言最近在看《head first 设计模式》,发现每个章节后的要点总结都是言简意骇,所以特写此篇博客对常见的设计模式要点做个总结。观察者模式在对象之间定义一对多的依赖,这样一来,当一个对象改变状态,依赖它的对象都会收到通知,并自动更新观察者模式定义了对象之间一对多的关系主题(可观察者)用一个共同对接口来更新观察者被观察者不知道观察者的细节,只知道观察者实现了观察者接口多个观察者...

2018-10-29 23:35:08 111

原创 一次有趣的局部变量GC

前言最近在看《实战Java虚拟机》, 发现书上的一个关于局部变量表GC挺有意思,先上代码。主角没有GCpublic class Main { public static void reversion(){ { byte[] a = new byte[6*1024*1024]; } System.gc(); ...

2018-10-29 20:30:33 275

原创 几行代码实现RPC框架

前言昨天看了一篇关于用几行代码实现RPC框架的博客http://javatar.iteye.com/blog/1123915,收获很大,于是我想在这篇博客的基础上理一理思路,尽可能的多加一点注释,进一步降低学习RPC框架原理的门槛。原理图先上一个原理图,读者可根据此图来帮助理解后续的代码。 代码RpcFramework核心类import java.io.Obj...

2018-05-22 14:26:18 191

原创 MySQL事务原理浅析

前言​ 因为自己对数据的可靠性,可用性方面特别感兴趣,所以在MySQL事务方面看了很多资料,也看了很多博客,所以想到自己也写一篇博客整理整理自己所学内容,尽量用自己的语言解释得通俗易懂。事务经典场景​ 在很多介绍事务的博客都会代入这样一个场景,先简单说说:​ A给B转账100,A少100,B多100。如果A少100后系统崩溃怎么办?B的钱多不了,这样金钱总数凭空少了10...

2018-05-17 15:10:11 5912 3

原创 读书笔记之JVM垃圾回收

前言​ 如果要问Java与其他编程语言最大的不同是什么,我第一个想到的一定就是Java所运行的JVM所自带的自动垃圾回收机制,以下是我学习JVM垃圾回收机制整理的笔记,希望能对读者有一些帮助。哪些内存需要回收?what?​ 如何判断对象已死?有两种算法引用计数算法​ 给对象添加一个计数器,每当有一个地方引用它时,计数器的值就加一,当引用失效的时候,计数器就减一 ,任何时刻计数器为0的对象

2017-11-01 20:22:47 281

原创 网易考拉海购Java后台开发实习-面经(已拿offer)

一面(23min)自我介绍项目中最自豪的部分也没什么太自豪的,就是在移动端开发的时候不存在cookie和session,然后用redis存了一下验证码感觉还不错。讲一讲ArrayList和LinkedList ArrayList底层实现是数组,并且每次扩容扩容1.5倍,常用在查询较多的场景中。而LinkedList底层实现是链表常用在增删比较多的场景你说你对锁有了解,说一说你最熟悉的两

2017-10-18 20:31:13 5479 4

原创 Java并发编程-volatile可见性的介绍

前言要学习好Java的多线程,就一定得对volatile关键字的作用机制了熟于胸。最近博主看了大量关于volatile的相关博客,对其有了一点初步的理解和认识,下面通过自己的话叙述整理一遍。有什么用?volatile主要对所修饰的变量提供两个功能可见性防止指令重排序本篇博客主要对volatile可见性进行探讨,以后发表关于指令重排序的博文。什么是可见性?一图胜千言 上图已经把JAVA内存

2017-10-12 21:48:29 296

原创 浅析MySQL中的explain参数

有什么用? 在MySQL中,当数据量增长的特别大的时候就需要用到索引来优化SQL语句,而如何才能判断我们辛辛苦苦写出的SQL语句是否优良?这时候**explain**就派上了用场。怎么使用?explain + SQL语句即可 如:explain select * from table;如下 相信第一次使用explain参数的朋友一定会疑惑这一大堆参数究竟有什么用呢?笔者搜集了一些资料,在这

2017-09-16 00:01:18 514

原创 JAVA并发编程笔记

Semaphore可以控制某个资源可被同时访问的个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。闭锁用于所有线程等待一个外部事件的发生;栅栏则是所有线程相互等待,直到所有线程都到达某一点时才打开栅栏,然后线程可以继续执行。while(true) 被底层调用,运算特别快 某些操作来不及进行使用Calable接口实现并发的时候,需要用Future

2017-08-04 11:22:29 259

原创 java并发编程条件队列的唤醒机制探究

bf1,bf2是两个大小各为3的条件队列。3将要put进bf1,此时因为bf1已满而已调用wait()方法挂起线程,此时若对bf2()执行take()方法并调用notifyall()是否会唤醒wait()中的bf1?(对两个队列的操作存在于两个不同的线程中)先上代码public abstract class BaseBoundedBuffer<V>{ private final V[] buf

2017-08-04 11:12:57 385

JAVA面试题大全

2013年年底的时候,我看到了网上流传的一个叫做《Java面试题大全》的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是错误的,于是我花了半个月时间对这个所谓的《Java面试大全》进行了全面的修订并重新发布在我的CSDN博客。在修订的过程中,参照了当时JDK最新版本(Java 7)给出了题目的答案和相关代码,去掉了EJB 2.x、JSF等无用内容或过时内容,补充了数据结构和算法、大型网站技术架构、设计模式、UML、spring MVC等内容并对很多知识点进行了深入的剖析,例如hashCode方法的设计、垃圾收集、并发编程、数据库事务等。当时我甚至希望把面试中经常出现的操作系统、数据库、软件测试等内容也补充进去,但是由于各种原因,最终只整理出了150道面试题。让我欣慰的是,这150道题还是帮助到了很多人,而且在我CSDN博客上的总访问量超过了5万次,最终还被很多网站和个人以原创的方式转载了。

2017-10-14

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

TA关注的人

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