08 2024 档案
摘要:背景 分布式事务,后端开发中比较常见啦。因为在面试的时候,总是有interviewers让我给他普及一下分布式事务,虽然我会的也不多呀但是还是浅浅说一说; 今天心血来潮,好好地总结一下分布式事务,希望每一位后端工程师都能彻底理解分布式事务。 什么是分布式事务? 答:既然是分布式,首先必然是分布式系统
阅读全文
摘要:背景 volatile关键字是并发编程中的一个比较重要的关键字。它能保证变量/对象在内存中的可见性,同时禁止指令重排序,避免了CPU或者编译器优化带来的可见性问题。 在并发编程中,volatile可以去修饰一个变量,或者是一个对象(比如单例模式中就使用了volatile去修饰单例对象) 举例说明 v
阅读全文
摘要:背景 本文将讲解单例模式-双重检验锁的实现。 代码实现 public class DCLTest { private volatile static DCL instance; private DCLTest () {}; public static DCLTest getInstance() {
阅读全文
摘要:背景 我们知道hashmap是一个线程不安全的数据结构,在多线程编程的时候,多个线程同时向hashmap中put元素的时候,会发生数据丢失。多线程put操作后,再get操作导致死循环。 多线程put非NULL元素后,get操作得到NULL值。 使用 为了保证并发安全,我们使用hashmap的时候,建
阅读全文
摘要:背景 面试时考了这道题,之前一直都会递归遍历,非递归遍历倒是从来没有实际理解过它的具体过程,包括使用什么数据结构,具体的过程是怎样的?满脑子都是二叉树的层序遍历, 但是这里后序遍历和层序遍历还不太一样。 在仔细梳理并讲出自己的思路的时候,还是觉得并非易事。那就来分析分析。 什么是二叉树的后序遍历?
阅读全文
摘要:背景 这是一道面试题,可考察的点也不少。总结几个关键词去解决这个问题,1,文件拆分;2、排序算法;3、缓冲buffer性能优化。 啊,乍一看,这绝对不是一个初级程序员能够答出来,且能答得很好的问题,这个题目可以考察到我们的算法能力,性能优化经验。可万万不能马虎对待! 开始讲思路。第一步, 文件拆分
阅读全文
摘要:背景 这个问题主要考察了Linux命令的使用,find 命令和 grep命令,在linux系统中,这两个命令用的比较广泛,工作中常常可以用来查找到指定的日志内容。 今天我们就来学一下两个命令,然后回答下这个问题吧。 命令介绍 1、find命令 find常用来在Linux系统中查找文件或者目录,查找到
阅读全文