学习笔记

Java 浅拷贝、深拷贝,你知多少?

这是今天我们在技术群里面讨论的一个知识点,讨论的相当激烈,由于对这一块使用的比较少,所以对这一块多少有些盲区。这篇文章总结了所讨论的内容,希望这篇文章对你有所帮助。 在 Java 开发中,对象拷贝或者说对象克隆是常有的事,对象克隆最终都离不开直接赋值、浅拷贝、深拷贝 这三种方式,其中直接赋值应该是我们最常用的一种方式吧,对于浅拷贝和深拷贝可能用的少,所以或多或少存在一些误区,这篇文章会详细的介绍这三种对象克隆方式。 前置知识 值类型:Java 的基本数据类型,例如 int、float 引用类型:自定义类和 Java 包装类(string、integer) ...

Rust中的RefCell和内部可变性

RefCell Rust在编译阶段会进行严格的借用规则检查,规则如下: 在任意给定时间,要么只能有一个可变引用,要么只能有多个不可变引用。 引用必须总是有效。 即在编译阶段,当有一个不可变值时,不能可变的借用它。如下代码所示: fn main() { let x = 5; let y = &mut x; } 会产生编译错误: error[E0596]: cannot borrow immutable local variable `x` as mutable --> src/main.rs:32:18 ...

前端API层架构,也许你做得还不够

 上午好,今天为大家分享下个人对于前端API层架构的一点经验和看法。架构设计是一条永远走不完的路,没有最好,只有更好。这个道理适用于软件设计的各个场景,前端API层的设计也不例外,如果您觉得在调用接口时还存在诸多槽点,那就说明您的接口层架构还待优化。今天我以vue + axios为例,为大家梳理下我的一些经历和设想。...

从零开始入门 K8s | 深入剖析 Linux 容器

作者 | 唐华敏(华敏) 阿里云容器平台技术专家 本文整理自《CNCF x Alibaba 云原生技术公开课》第 15 讲。 关注“阿里巴巴云原生”公众号,回复关键词“入门”,即可下载从零入门 K8s 系列文章 PPT。 导读:Linux 容器是一种轻量级的虚拟化技术,在共享内核的基础上,基于 namespace 和 cgroup 技术做到进程的资源隔离和限制。本文将会以 docker 为例,介绍容器镜像和容器引擎的基本知识。 容器 容器是一种轻量级的虚拟化技术,因为它跟虚拟机比起来,它少了一层 hypervisor 层。先看一下下面这张图,这张图简单描述了一个容器的启动过程。 ...

Flink中的CEP复杂事件处理 (源码分析)

 其实CEP复杂事件处理,简单来说你可以用通过类似正则表达式的方式去表示你的逻辑,表现能力非常的强,用过的人都知道开篇先偷一张图,整体了解Flink中的CEP中的  一种重要的图  NFA非确定有限状态机...

Java核心技术第八章-泛型

摘要# 本文根据《Java核心技术 卷一》一书的第八章总结而成,部分文章摘抄书内,作为个人笔记。 文章不会过于深入,望读者参考便好。 为什么要使用泛型程序设计# 泛型程序设计(Generic programming) 意味着编写的代码可以被很多不同类型的对象所重用。 类型参数的好处# 在没有泛型类之前,ArrayList类只维护一个Object引用的数组: Copy public class ArrayList { private Object[] elementData; // 用于存放数据 ...

Django3.0 异步通信初体验

 此前博主曾经写过一篇博文,介绍了Django3.0的新特性,其中最主要的就是加入对ASGI的支持,实现全双工的异步通信。...

你真的知道聊天室架构设计这两个问题吗?

上篇我们介绍了下面这个简单的语音聊天室的架构,遗留了两个问题。首先,语音服务器是怎么转发语音数据的? 我们直接上图。图中虚线框表示连接到同一台语音服务器。当A说话的时候,客户端将语音数据上传到A所连接的语音服务器;语音服务器向房间服务器查询A所在房间的其他用户(B-E)所在的语音服务器IP,分几种情况:对于同服务器用户B只需要下发语音数据,对于其他服务器上的用户(C-E)需要转发给相应的语音服务器,其他语音服务器收到转发数据后,根据房间信息,下发给同房间的用户。 有一个细节需要注意,房间服务器是主动给语音服务器同步房间架构的。因为语音服务请求量非常大,如果每次转发的时候都查询房间架构信息,那么房间服务器/数据库将成为瓶颈。因此语音服务器本地缓存了房间架构信息(当然缓存也会导致其他的问题,以后会专门讨论)。缓存的同步机制采用用户进退房主动触发房间服务器广播和房间服务器定期推送相结合,这样可以有效保证网络丢包情况下的数据一致性。 ...

深入SQL Server 日期和时间的内部存储

 在SQL Server的内部存储中,日期和时间不是以字符串的形式存储的,而是使用整数来存储的。使用特定的格式来区分日期部分和时间部分的偏移量,并通过基准日期和基准时间来还原真实的数据。...

JVM的类加载机制全面解析

什么是类加载机制 JVM把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被JVM直接使用的Java类型,这就是JVM的类加载机制。 如果你对Class文件的结构还不熟悉,可以参考之前的文章Class文件结构全面解析(上)和Class文件结构全面解析(下)。 类的生命周期 类从被加载到内存中,到被卸载出内存,一共分为以下几步: 加载(Loading) 验证(Verification) 准备(Preparation) 解析(Resolution) 初始化(Initialization) ...

Linux job control

Linux 系统中有一个 job control 的概念,本文简单介绍什么是 job,以及常见的 job control 命令。本文中演示部分使用的环境为 ubuntu 18.04。 进程组(job) 执行一个命令会创建一个或多个进程,这些进程被称为一个进程组(process group)。进程组中包含一个或多个进程,每个进程都会属于一个进程组,进程组也叫 job。 每个进程组都有一个领头进程(process group leader),领头进程的 PID 就是进程组的 ID(process group ID,PGID),我们可以通过 ps 命令查看进程的 PGID: ...
青岛软件培训

可能你正在寻找一家靠谱的IT培训机构,学习一些专业的软件开发技术,找一份得体的工作。恰巧我们就是一家踏踏实实做教育的IT人才培养机构,我们咨询电话是 0532-85025005,如果你确实对IT感兴趣,我们不妨交流一下。

申请免费试听课程