Cpp Timeline
C++: 从 C++11 到 C++23 的演进之路C++ 从 2011 年开始进入了快速发展的时代,每三年一个新标准,带来了大量现代特性。本文将梳理 C++11 到 C++23 的主要特性和常用特性。 C++11 Core Feature Library Concurrency Move semanticsLambda expressionsauto and decltypenullptrHash Tableconstexproverride/finalUniform initializationrange-based forenum classstatic_assertVariadic templatesAlias templatesDelegating constructorsInheriting constructorsRvalue references Smart pointersstd::functionstd::bindstd::unordered_map/setstd::arraystd::tuplestd::forward_list...
Java Containers
Java 容器:别只盯着接口,看实现Java 的 java.util 集合框架(JCF)是每个 Java 程序员的必修课。但如果你只是机械地记忆 List、Set、Map,那你根本不懂容器。容器的本质是数据结构在内存中的组织方式。 1. 核心架构:从混乱到有序Java 集合框架主要分为两大支系: Collection:存储单值元素。 Map:存储键值对(Key-Value)。 在 Java 21 之前,Java 的有序集合接口设计得一塌糊涂。你想访问第一个元素,List 用 get(0),Deque 用 getFirst(),而 SortedSet 却要用 first()。Java 21 引入了 Sequenced Collections,终于把这套烂摊子统一了。 SequencedCollection:提供了 addFirst、addLast、getFirst、getLast、reversed 等统一方法。 SequencedMap:同理,支持有序的键值对操作。 2. List:连续内存才是王道ArrayList (默认首选) 本质:动态数组。 优势:CPU 缓存友好...
Kubernetes 架构与底层实现详解
Kubernetes(K8s)是容器编排的行业标准。本文重点剖析其架构和核心组件底层实现原理。 为什么 Kubernetes? 声明式 API:定义期望状态,系统自动维护 强一致性存储:etcd + Raft 分布式调度与控制器模式 插件化:CRI/CNI/CSI 整体架构核心概念概览在深入Kubernetes架构之前,我们需要理解几个核心概念: 概念 定义 作用 Pod Kubernetes中最小可部署单元 包含一个或多个容器,共享网络和存储 Service 为Pod提供稳定网络访问的抽象 通过标签选择器动态发现后端Pod Deployment 声明式应用管理控制器 管理ReplicaSet,实现滚动更新和回滚 Namespace 逻辑隔离单元 将集群资源划分为多个虚拟集群 Node 集群中的工作节点 物理机或虚拟机,运行Pod Cluster 完整的Kubernetes环境 包含控制平面和多个工作节点 Pod详解: Pause容器:每个Pod都有一个根容器,负责共享网络命名空间 应用容器:实际运行业务逻辑的容器 共享...
Java juc
JUC 是 java.util.concurrent 的缩写,它是 Java 标准库中一个至关重要的包,专门用于支持并发编程。从 Java 5 开始引入,JUC 极大地简化了多线程开发的复杂性,并提供了更强大、更灵活、更安全的并发工具。可以毫不夸张地说,掌握 JUC 是从“会用多线程”到“精通并发编程”的必经之路。 一、 为什么需要 JUC ?在 JUC 出现之前,我们主要依赖 synchronized、wait()、notify() 等关键字和方法来实现同步。但它们存在一些明显的缺点: 不够灵活:synchronized 是非公平锁,且无法中断一个正在等待获取锁的线程,也无法设置超时。 功能单一:它只是一个简单的互斥锁,无法实现更复杂的锁功能,如读写锁。 API 原始:wait()/notify() 的使用非常容易出错,比如忘记在 synchronized 块内调用,或者信号的丢失(notify 在 wait 之前执行)。 性能瓶颈:在 JDK 1.6 之前,synchronized 是重量级锁,性能较差。虽然之后有了锁升级等优化,但 JUC 中的 Lock 在某些...
Java gc
Java 8 (2014年) 是一个里程碑式的版本,其 GC 组合(Parallel GC + CMS/G1)在当时非常经典。但从 Java 9 开始,GC 领域进入了快速迭代和创新的时期,核心目标是:降低停顿时间、提高吞吐量、更好地适应现代大内存和多核硬件,并简化 GC 的使用和调优。 一、核心思想转变:从“选择”到“自适应”在 Java 8 之前,你需要根据应用场景(吞吐量优先还是低延迟优先)手动选择一个 GC,比如 -XX:+UseParallelGC 或 -XX:+UseConcMarkSweepGC 或 -XX:+UseG1GC。从 Java 9 开始,一个重要的趋势是 “自适应”。JVM 变得更”聪明”,它可以在运行时根据硬件配置和应用行为,动态地调整 GC 的行为,甚至在某些情况下,可以在不同的 GC 算法之间切换,以达到最佳性能。 二、G1G1((Garbage-First) Garbage Collector (G1GC) - 持续进化,成为默认G1 在 Java 7 引入,Java 9 中成为 默认的垃圾回收器。它是一个平衡型收集器,旨在兼顾吞吐量和...
C++ std::print
概述C++23 引入了 std::print 和 std::println,这是现代 C++ 对格式化输出的重大改进。相比传统的 printf,这些新函数提供了类型安全、性能优异且易于使用的格式化输出方案。 基本用法简单输出#include <print> int main() { // 基本输出 std::print("Hello, World!\n"); // 带换行的输出 std::println("Hello, World!"); return 0; } 格式化输出#include <print> #include <string> int main() { int age = 25; std::string name = "Alice"; // 格式化输出 std::print("Name: {}, Age: {}\n", name, age); // 带换行...
Java 模块系统
Java 模块系统概述Java 模块系统(Java Platform Module System,简称 JPMS)是 Java 9(2017 年发布)引入的一项重大特性,也被称为 Project Jigsaw。该系统旨在解决 Java 早期版本中类路径(classpath)管理的痛点,如 JAR Hell(依赖冲突)、模块化不足和封装性弱等问题。通过模块化,Java 应用可以更好地组织代码、提高安全性、减少依赖并提升性能。下面我将详细解释 Java 模块的核心概念、语法、用法以及优势与注意事项。 1. 什么是 Java 模块? 基本定义:模块(Module)是 Java 中一种新的代码组织单位,它是一组相关包(packages)的集合,加上一个模块描述文件(module-info.java)。模块可以明确定义其依赖的其他模块、导出的包(exposed packages),以及对反射的访问权限。 与包(Package)的区别:包是命名空间,用于组织类;模块是包的更高层抽象,用于组织应用或库的整体结构。模块可以包含多个包,但一个包只能属于一个模块。 模块类型: 命名模块(Named ...
Cpp Asio
Asio 是一个跨平台的 C++ 库,用于网络和低级 I/O 编程,提供了一套异步操作的框架。Boost.Asio 是其最知名的版本,但独立(standalone)版本的 Asio 允许在不依赖 Boost 的情况下使用。 1. Asio 库概述Standalone Asio 是一个轻量级的网络编程库,设计目标是提供高效、异步的 I/O 操作。它支持以下功能: 网络编程:TCP、UDP、ICMP 等协议的客户端和服务器开发。 异步 I/O:通过回调、协程(C++20 起支持)或 Future/Promise 模型处理异步操作。 跨平台:支持 Windows、Linux、macOS 等操作系统。 低级 I/O:文件操作、串口通信、定时器等。 与 Boost.Asio 相比,standalone Asio 不依赖 Boost 的其他组件(如 Boost.System),因此更轻量,适合需要减少依赖的场景。 2. 安装与配置下载Standalone Asio 可从 GitHub 或其官方网站(think-async.com)获取最新...
sort summary
好的,这里为您总结了 C++、Java、Python、Golang 和 Rust 这些主流语言的排序方法,特别是自定义排序的实现方式。 概述 语言 内置排序方法 主要特点 自定义排序核心 C++ std::sort 非常高效,通常是 IntroSort 函数对象 (Functor)、Lambda、普通函数 Java Arrays.sort(), Collections.sort() 对象使用 TimSort,基础类型使用快速排序 Comparator 接口(Lambda 或匿名类) Python sorted(), list.sort() 稳定,使用 TimSort key 函数 或 cmp 函数(老式,不推荐) Golang sort.Sort(), sort.Slice() 使用快速排序 实现 sort.Interface 或使用 sort.Slice 与 Less 函数 Rust slice.sort(), vec.sort() 稳定,使用归并排序(TimSort 变种) 闭包 (Closure) 传递给 sort_by 或实现 Ord/...
Java Concurrency
Java的线程是Java并发编程的核心,允许程序同时执行多个任务。 虚拟线程相关内容 1. 线程概述线程(Thread)是操作系统能够进行运算调度的最小单位。在Java中,线程是JVM(Java虚拟机)管理的轻量级执行单元,多个线程共享同一进程的内存空间(如堆、方法区),但每个线程有自己的栈空间(如局部变量和方法调用栈)。 Java通过java.lang.Thread类和java.lang.Runnable接口提供线程支持。Java的线程模型基于操作系统的原生线程,依赖于底层操作系统的线程实现。 2 线程的创建Java中创建线程主要有以下几种方式: 2.1 继承Thread类通过继承Thread类并重写run()方法来定义线程的执行逻辑。 class MyThread extends Thread { @Override public void run() { System.out.println("Thread running: " + Thread.currentThread().getName()); }...





