java开发时各类工具的使用规范 Java 编程技术

java开发时各类工具的使用规范

工具类规范 一个项目不可能没有工具类,工具类的初衷是良好的,代码重用,但到了后面工具类越来越乱,有些项目工具类有几十个,看的眼花缭乱,还有不少重复。如何编写出好的工具类,我有几点建议: 隐藏实现 就是要定义自己的工具类,尽量不要在业务代码里面直接调用第三方的工具类。这也是解耦的一种体现。如果我们不定义自己的工具类而是直接使用第三方的工具类有2个不好的地方: 不同的...
阅读全文
Java 并发编程之 ReentrantLock 源码分析 Java 编程技术

Java 并发编程之 ReentrantLock 源码分析

我是一个优秀的人,但也有缺点,比我优秀的人有很多很多。连自己都认输,何谈你的对手,与你一样优秀,甚至比你优秀的人。战胜自己,就是最大的超越。 在Java5.0之前,协调对共享对象的访问可以使用的机制只有synchronized和volatile。我们知道synchronized关键字实现了内置锁,而volatile关键字保证了多线程的内存可见性。 在大多数情况下,这些机制都能很好地完成工作,但...
阅读全文
超硬核Java工程师学习指南,真正的从入门到精通,众多粉丝亲测已拿offer! Java 编程技术

超硬核Java工程师学习指南,真正的从入门到精通,众多粉丝亲测已拿offer!

最近有很多小伙伴来问我,Java小白如何入门,如何安排学习路线,每一步应该怎么走比较好。原本我以为之前的几篇文章已经可以解决大家的问题了,其实不然,因为我之前写的文章都是站在Java后端的全局上进行思考和总结的,忽略了很多小白们的感受,而很多朋友都需要更加基础,更加详细的学习路线。 所以,今天我们重新开一个新的专题,分别按照四篇文章讲述Java的学习路线(分别是入门篇,初级篇,中级篇,高级篇)...
阅读全文
Java8线程池ThreadPoolExecutor底层原理及其源码解析 Java 编程技术

Java8线程池ThreadPoolExecutor底层原理及其源码解析

小侃一下 日常开发中, 或许不会直接new线程或线程池, 但这些线程相关的基础或思想是非常重要的, 参考 林迪效应 ; 就算没有直接用到, 可能间接也用到了类似的思想或原理, 例如tomcat, jetty, 数据库连接池, MQ; 本文不会对线程的基础知识进行介绍, 所以最好已"进食"关于线程的基础知识, 再"食用"本文更佳; 由于在...
阅读全文
一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址) Java 编程技术

一套简单通用的Java后台管理系统,拿来即用,非常方便(附项目地址)

来源:http://39sd.cn/02464 前言 这套Base Admin是一套简单通用的后台管理系统,主要功能有:权限管理、菜单管理、用户管理,系统设置、实时日志,实时监控,API加密,以及登录用户修改密码、配置个性菜单等 技术栈 前端:layui java后端:SpringBoot + Thymeleaf + WebSocket + ...
阅读全文
JVM内存模型系列(堆、方法区以及对象和GC) Java 编程技术

JVM内存模型系列(堆、方法区以及对象和GC)

上文已经介绍了JVM内存模型中线程私有的部分(虚拟机栈、本地方发栈、程序计数器),那么本篇文章就来探讨下JVM中线程共享的区域:堆、方法区 方法区 方法区是JVM规范中定义的一个逻辑内存,在JDK1.8以前对方法区的实现叫做“永久代”,然而在JDK1.8以后讲“永久代”废弃,改为“元空间”对其方法区进行实现,并且存储位置是本地内存,但是它依旧是JVM的逻辑区域。方法区存储了每一个类的结构信...
阅读全文
Unsafe介绍及CAS原理解析 Java 编程技术

Unsafe介绍及CAS原理解析

0.Unsafe介绍 JavaDoc说, Unsafe提供了一组用于执行底层的,不安全操作的方法。那么具体有哪些方法呢,我画了一张图。 可以看到Unsafe中提供了CAS,内存操作,线程调度,本机信息,Class相关方法,查看和设置某个对象或字段,内存分配和释放相关操作,内存地址获取相关方法。我自己抽空对上述方法进行了注释, 你可以在 这里看到 。 那么如何使用Uns...
阅读全文
从linux内核理解Java怎样实现Socket通信 Java 编程技术

从linux内核理解Java怎样实现Socket通信

前言 前段时间买本书研究了 TCP/IP 通信,弄清楚了计算机之间是怎么通信的。网络通信的的基础就是 TCP/IP 协议簇 ,也被称为 TCP/IP 协议栈 ,也被简称为 TCP/IP 协议 。 TCP/IP 协议 并不是只有 TCP 和 IP 协议,只是这俩用的比较多,就用这两个起的名字。 我们目前使用的 HTTP , FTP , SMTP , DNS , HTTPS , SSH ...
阅读全文
超硬核Java工程师秋招回忆录+面经汇总,为了拿BAT的研发offer我都做了那些准备? Java 编程技术

超硬核Java工程师秋招回忆录+面经汇总,为了拿BAT的研发offer我都做了那些准备?

秋招总结 写在最前 我写过很多篇秋招总结,这篇文章应该是最后一篇总结,当然也是最完整,最详细的一篇总结。秋招是我人生中一段宝贵的经历,不仅是我研究生生涯交出的一份答卷,也是未来职业生涯的开端。仅以此文,献给自己,以及各位在求职路上的,或者是已经经历过校招的朋友们。不忘初心,方得始终。 前言 在下本是跨专业渣考研的985渣硕一枚,经历研究生两年的学习积累,有幸于2019秋季招聘中拿到...
阅读全文
天天CURD,你了解为了执行SQL,MySQL用了怎样的架构设计吗? 编程技术 软件架构

天天CURD,你了解为了执行SQL,MySQL用了怎样的架构设计吗?

大家好, 从今天开始我们开启MySQL底层原理的探索里程,今天是第一篇我们将MySQL从一个黑盒状态一点点拨云见日剖析来了解整个MySQL的架构设计和底层组件 把MySQL当作一个黑盒来执行SQL 现在我们来看看, 对于研发工程师来说数据库是什么东西?平时我们做系统开发时,一般情况下都会连接到一个MySQL数据库上去,去执行各种增删改查语句。如下图所示: ...
阅读全文
Loading...