语言
文章平均质量分 77
天蓝色之旅途
一个喜欢拆腾的技术老男孩
展开
-
开发小技巧系列 - 如何避免NullPointerException?(一)
开发小技巧系列文章,是本人对过往平台系统的设计开发及踩坑的记录与总结,给初入平台系统开发的开发人员提供参考与帮助。在搬砖的过程中,很多小伙伴遇到最多的问题可能就是 NullPointerException(以下简称NPE)了,大部分的程序代码,都是在组装对象或转换对象上(至少业务系统开发都是这样)。比如前端的操作界面向后台传入的各种参数,后台接收到参数后,对参数进行简单或者复杂的处理后,构造成另外一个对象,保存到数据库或者传递给下一个处理方法等等。再比如从后台的数据库中查出某些数据,经过程序的加原创 2022-04-19 16:30:20 · 266 阅读 · 0 评论 -
开发小技巧系统 - Java实现树形结构的方式有那些?
开发小技巧系列文章,是本人对过往平台系统的设计开发及踩坑的记录与总结,给初入平台系统开发的开发人员提供参考与帮助。在开发的过程中,有时候需要将集合的数据转换成一个树形结构,比如功能菜单、组织机构、或者商品分类等的场景。一般这些数据在数据表的存储中,都是采用行的方式来存储数据,方便对数据进行管理,在表的字段上会有“父ID(parent_id)”的字段,来表示关系。假设有如下表结构及数据:需要转换成一个树形结构,预期结构:如何用java程序来实现呢?可能很多人会想到用递归来实现,这也是最原创 2022-04-13 13:53:26 · 2173 阅读 · 0 评论 -
Java界最神秘技术ClassLoader,吃透它看这一篇就够了
文章转载自公众号《码洞》 ,作者:老钱ClassLoader 是 Java 届最为神秘的技术之一,无数人被它伤透了脑筋,摸不清门道究竟在哪里。网上的文章也是一篇又一篇,经过本人的亲自鉴定,绝大部分内容都是在误导别人。本文我带读者彻底吃透 ClassLoader,以后其它的相关文章你们可以不必再细看了。ClassLoader 做什么的?顾名思义,它是用来加载 Class 的...转载 2019-09-27 09:17:39 · 1033 阅读 · 0 评论 -
深入理解 Java 内存模型(四)——volatile
volatile 的特性当我们声明共享变量为 volatile 后,对这个变量的读 / 写将会很特别。理解 volatile 特性的一个好方法是:把对 volatile 变量的单个读 / 写,看成是使用同一个监视器锁对这些单个读 / 写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { volatile ...转载 2019-09-26 17:31:33 · 106 阅读 · 0 评论 -
深入理解 Java 内存模型(三)——顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java 内存模型规范对数据竞争的定义如下:在一个线程中写一个变量, 在另一个线程读同一个变量, 而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM 对正确同步的多线程程序的内存一致性做...转载 2019-09-26 17:27:32 · 125 阅读 · 0 评论 -
一文让你懂——Java反射机制
来源:https://www.toutiao.com/i6737996758422389251/概述JAVA反射机制:在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。Java反射(Reflection)被视为动态语言的关键,反射机制允许...转载 2019-09-24 17:24:51 · 137 阅读 · 0 评论 -
Java多线程之基本概念
来源:https://www.toutiao.com/i6736445361914642956/简介本文章主要简要概述Java多线程的一些基本概念与原理;因本人能力有限,若文章中与Java API以及相关书籍有议论的地方烦请各位读者留言探讨,一起共勉。线程相关概念什么是程序(Program)?程序就是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象...转载 2019-09-23 09:26:40 · 110 阅读 · 0 评论 -
Java之多线程同步
来源:http://tinyurl.com/y4yd4vsk前言本章中线程同步问题会涉及到以下关键字及接口:synchronized 关键字; Lock 接口; ReentrantLock 类; wait()/notify() 方法; volatile 关键字。线程同步问题引入测试代码:主程序代码:主程序,创建RunableThread对象同时启...转载 2019-09-23 09:24:13 · 90 阅读 · 0 评论 -
深入理解Java内存模型(二)——重排序
数据依赖性如果两个操作访问同一个变量,且这两个操作中有一个为写操作,此时这两个操作之间就存在数据依赖性。数据依赖分下列三种类型:名称 代码示例 说明 写后读 a = 1;b = a; 写一个变量之后,再读这个位置。 写后写 a = 1;a = 2; 写一个变量之后,再写这个变量。 读后写 a = b;b = 1; 读一个变量...转载 2019-09-22 11:30:45 · 150 阅读 · 0 评论 -
深入理解Java内存模型(一)——基础
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必须通过...转载 2019-09-22 11:26:57 · 121 阅读 · 0 评论 -
JDK/Java 13 发布
文章转载自 OSCHINA 社区[http://www.oschina.net]9 月 17 日,JDK/Java13 正式 GA。此版本带来了以下几大新特性:JEP 350,Dynamic CDS Archives:扩展应用程序类-数据共享,以允许在 Java 应用程序执行结束时动态归档类。归档类将包括默认的基础层 CDS(class data-sharing)存档中不存在的...转载 2019-09-20 09:02:12 · 99 阅读 · 0 评论