youyichannel

志于道,据于德,依于仁,游于艺!

0%

找出 二叉树的下一个节点?

这是一道来自于 《剑指 Offer》 的题目,题目信息:

给定一个二叉树其中的一个结点,请找出中序遍历顺序的下一个结点并且返回。注意,树中的结点不仅包含左右子结点,同时包含指向父结点的next指针。下图为一棵有9个节点的二叉树。树中从父节点指向子节点的指针用实线表示,从子节点指向父节点的用虚线表示。

阅读全文 »

简介

熟悉Spring的我们都知道,Spring替我们管理Bean,默认的类型就是 Singleton,也就是单例,即全局唯一,并且提供一个全局访问点。

那么,我们自己如何实现单例呢?这里需要把握住几个核心要点:

  1. 静态化实例对象
  2. 私有化构造方法
  3. 提供一个公共的访问入口

单例模式的应用场景

  1. 资源共享场景:避免由于资源操作时导致性能损耗
  2. 控制资源场景,便于资源之间互相通信
阅读全文 »

一、位运算的规则

1.1 数字在计算机中是如何表示的?

计算机中只存在二进制,因此一个数在计算机中是以二进制的形式表示的,也被称为机器数。

机器数的分类:

  1. 原码:符号位 + 真值的绝对值
  2. 反码:正数的反码是其本身;负数的反码是在其原码的基础上,符号位不变,其余各个位取反
  3. 补码:正数的补码是其本身;负数的补码是在其反码的基础上加一

真值:带符号位的机器数对应的真正数值

⚠️注意:引入补码的目的是为了在计算机底层统一将加减法运算转化为加法运算,便于计算机的运算。

阅读全文 »

java.util.Date

Date类从JDK1.0开始就已经提供了,封装了当前的日期和时间。月份和小时从0开始,月份的天数从1开始,年份从1900开始。

但是,Date类不能实现国际化,偏移量也不统一。

⚠️注意:该类中大部分方法都已经过时,并且是线程不安全的。

阅读全文 »

引言

在日常的开发中,我们通常会使用 git 来管理代码,当我们对代码就行改动之后,可以通过 git commit 来提交对代码的修改。

git 规定提交时需要填写提交信息,用来作为改动备注保存在 commit 历史中,方便溯源。那么,规范的提交信息不仅有助于他人 review,还可以输出有效的CHANGE LOG,甚至对于项目的研发质量都有很大的提升。

但是很遗憾,在日常的工作中,大多数同学的提交信息都是粗略写写,没有很好的重视,这对于项目的管理维护来说是非常不友好的。那么,接下来我就来分享下关于 git commit / pull request 的一些规范,让提交信息好看还实用

阅读全文 »

官网介绍:

Reactive systems have certain characteristics that make them ideal for low-latency, high-throughput workloads. Project Reactor and the Spring portfolio work together to enable developers to build enterprise-grade reactive systems that are responsive, resilient, elastic, and message-driven.

阅读全文 »

前情提要

数组可以说是最简单的一种数据结构,它占据一块连续的内存并按照顺序存储数据。创建数组时,需要指定数组的容量大小,然后根据大小分配内存。

存在的问题:空间效率不是很好。即使只在数组中存储一个数字,也需要为所有的数据预先分配内存,于是乎经常会有空闲的区域没有得到充分利用。

优势:由于数组的内存是连续的,于是可以根据下标在O(1)的时间内读写任何元素,因此时间效率是很高的。

⚠️注意:

  • 数组下标都是从0开始的
  • 数组内存空间的地址是连续的

为了解决数组空间效率不高的问题,人们又提出并实现了多种动态数组,在这里不再赘述。

阅读全文 »