自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(167)
  • 资源 (1)
  • 收藏
  • 关注

原创 AQS源码解析(2)-共享锁的获取与释放

由于后面没有新的节点了,也就不会出现新节点将自己的前驱节点的修改成。

2024-08-15 17:53:20 916 1

原创 突破计算机性能瓶颈的利器CPU Cache

大家好,我是呼噜噜,今天我们来介绍计算机的储存器之一,CPU高速缓冲存储器也叫高速缓存,缓存这个专业术语,在计算机世界中是经常使用到的。它并不是CPU所独有的,比如cdn缓存网站信息,浏览器缓存网页的图像视频等,但本文讲述的是狭义Cache,主要指的是CPU Cache,本文将其简称为"缓存"或者"Cache"

2024-08-15 17:50:17 764

原创 Linux0.12内核源码解读(5)-head.s

大家好,我是呼噜噜,好久没有更新old linux了,本文接着上一篇文章,继续向着操作系统内核的世界前进,一起来看看heads.s。

2024-06-27 17:21:06 949

原创 图解ReentrantLock的基石AQS-独占锁的获取与释放

的。

2024-06-27 16:47:41 738

原创 图解CPU的实模式与保护模式

哈喽,大家好,我是呼噜噜,好久没有更新old linux了,在上一篇文章中,我们简要地提及了中断,但是中断机制在计算机世界里非常重要,处处都离不开中断,本文来详细聊聊计算机里的中断机制现代计算机具有多任务处理的能力,可以同时运行着几十上百的任务,如今很难想象,当我们点击鼠标,需要等待计算机中的其他程序全部执行完毕1956年,IBM 7049机器上首先使用了中断技术,提升了计算机具备应对处理突发事件的能力,并开始使用“中断”这一术语中断,英文为Interrupt,即打断

2024-04-18 11:11:10 757

原创 SpringBoot3+JDK21集成MyBatisPlus3.5.5

哈喽,大家好,我是呼噜噜,在上一篇文章基础上,笔者把jdk17直接换成了jdk21一步到位,来踩踩坑。

2024-01-24 17:01:47 1990

原创 Linux0.12内核源码解读(2)-Bootsect.S

作者:小牛呼噜噜 |计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「

2023-10-08 15:58:15 249

原创 聊聊x86计算机启动发生的事

作者:小牛呼噜噜 |大家好,我是呼噜噜,最近在看linux早期内核0.12的源码,突然想到一个困扰自己好久的问题:当我们按下电源键,计算机发生了什么?神秘地址0x7C00究竟是什么?操作系统又是如何被加载到硬件中的?带着这些问题,继续往下阅读本文。x86计算机启动过程,主要分为这几个阶段:BIOS自检,引导设备的选择,主引导记录,加载操作系统。

2023-08-04 10:10:23 663

原创 SpringBoot3简明教程(1)-Springboot3带来的改变和项目初始化

作者:小牛呼噜噜 |大家好,我是呼噜噜,Spring 官方于 2022-1-20发布 Spring Boot 3.0.0-M1 版本,2022-11-24 发布正式版本,开启了 Spring Boot 3.0 的新的里程碑。,今天来尝尝鲜,顺手写个系列教程。

2023-06-29 14:32:00 1113 3

原创 漫谈从RS触发器到D触发器的发展历程

大家好,我是呼噜噜,CPU只有计算能力是不够的,还需要能够记住数据,那么电路该怎么具有记忆功能呢?由于,有计算功能,但是没有记忆功能,所以引入了,揭开了的"神秘面纱"触发器,也叫双稳态多谐振荡器(Bistable Multivibrator),早在1918年英国射电物理学家 William Henry Eccles和F. W. J o r d a n的工作中就发明的。它最大的作用就是可以保存信息,也就是。它可以“记住”最近一次是哪个开 关先闭合的。

2023-05-18 14:12:05 874

原创 聊聊项目如何设计幂等?

任意次数请求 同一个资源,对资源的状态产生的影响和执行一次请求是相同的。比如对于接口来说,无论调用多少次同一个接口,对资源的状态都只产生一次影响。

2023-04-19 17:16:09 208

原创 聊聊JVM虚方法表和方法调用

作者:小牛呼噜噜 |计算机内功、源码解析、科技故事、项目实战、面试八股等更多硬核文章,首发于公众号「大家好,我是呼噜噜,今天我们来填坑,在之前的一篇文章中我们遗留了一个问题:当父类引用指向子类对象时,JVM是如何知晓调用的是哪个子类的方法?

2023-03-22 10:29:07 454

原创 ChatGPT强势爆红,背后的技术原理是?一文轻松搞懂!

ChatGPT是由OpenAI团队开发和训练一个人工智能聊天机器人程序,换句话说就是专注于对话生成的大型语言模型。在2022年11月30 日OpenAI 的首席执行官Sam Altman在推特上写道:“今天我们推出了 ChatGPT,尝试在这里与它交谈”,然后是一个链接,任何人都可以注册一个帐户,开始免费与 OpenAI 的新聊天机器人交谈。

2023-02-28 14:05:26 5310

原创 记录一次服务器被攻击,导致的一系列连锁的问题

但是过了几天,服务器又被人在国外ip异常登录了,这时候我发现攻击者电脑性能太好了,密码都加了20几位了,还是没几天被破解了。然后就是,检查服务器其他端口,cpu,内存,磁盘等各项指标,都没啥问题了,开始慢慢恢复网站服务,还有重启各种中间件的容器服务,折腾了一晚上。遇到问题,就一步步的分析异常信息,实在看不出来,可以去尝试尝试,再根据反馈进一步分析,直到找到原因,从而解决问题。大家好,我是呼噜噜。但试了一下,很不幸还是不行,不能乱折腾了,我们得分析一下问题,突然发现异常信息上面还有一段信息被忽略了。

2023-02-13 14:24:48 440

原创 CPU中简易加法器的设计与实现

CPU中简易加法器的设计与实现

2023-02-07 09:36:46 767

原创 聊聊开关和CPU之间故事

当开关是打开的话,灯泡是不亮的;但当开关是闭合的话, 电流流过围绕在铁棒上的线圈,会发生电磁效应,铁棒就具有了磁性,会将弹簧片吸下来,右边电路就通了,灯泡就会亮了。这样通过继电器,一段段放大信号,电报就能长距离传输信息了。虽然继电器有放大信号的作用,但和开关一样继电器也可以串联或并联以执行逻辑中的简单任务,

2023-01-28 09:40:56 769

原创 原来还能这样看Java线程的状态及转换

现今主流的JVM,比如hotspot虚拟机都是把Java 线程,映射到操作系统OS底层的线程上,把调度委托给了操作系统。在Java线程的时间中,关于线程的一切的起点是从Thread 类的对象的创建开始,一般实现Runnable接口 或者 继承Thread类的类,实例化一个对象出来,线程就进入了初始状态。大家好,我是呼噜噜,博主还没羊,最近一直在梳理Java并发,但内容杂且偏晦涩,今天我们一起来聊聊Java 线程的状态及转换 先来夯实一下基础,万丈高楼平地起,路还是得慢慢走。如果竞争到锁,就直接接着运行。

2023-01-19 14:16:25 1272

原创 什么是计算机中的高速公路-总线?

在它出现之前,主存总线和IO总线读取内存和IO设备的数据,都是有CPU所控制的,由于CPU的读取速度比主存、IO设备、硬盘上的读取速度差距快的多(完全不是一个量级的),CPU是非常昂贵的资源,不能让它一直等待主存、IO设备的响应数据,所以有了DMA之后,CPU将总线的控制权交给DMA,让DMA可以不受CPU的控制,由。计算机为什么使用总线?以及总线的设计理念,总线一些通用的特性,总线和内存的交互,接着又聊到了总线的结构,DMA等现代计算机的重要技术,最后又介绍总线仲裁和其性能指标,希望大家有所收获。

2023-01-12 15:35:36 1964

原创 计算机中数值和字符串怎么用二进制表示?

计算机二进制和,原码,反码,补码原理解析;乱码产生的原因

2023-01-12 15:29:40 1612

原创 Java内存区域有哪些构成?

Java 内存区域,也叫运行时数据区域、内存区域、JVM内存模型,和 Java 虚拟机(JVM)的运行时区域相关,是指 JVM运行时将数据分区域存储,强调对内存空间的划分。经常与Java内存模型(JMM)混淆,其定义了程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。JVM并不是只有唯一版本的,在Java发展历史中,有许多优秀的Java虚拟机,其中目前大家最熟悉的就是HotSpot虚拟机,什么你不知道?我们去Oracle。

2023-01-09 13:57:34 238

原创 聊聊CPU的发展历程之单核、多核、超线程

超线程技术只增加了5%的芯片面积,就可换来15%~30%的性能提升,而后来的Nehalem架构带来了全新的超线程技术,得益于指令集分制预测技术与较短的流水线,它拥有比奔腾4好得多的效能,再加上整合了内存控制器让其拥有更大的内存带宽,还有更大的缓存,这样就更能够有效的发挥超线程的作用,Nehalem的超线程可以在增加很少能耗的情况下,让性能提升20-30%,后续每一代虽然都有一些小修改,不过基本上都是Nehalem架构的延续。,物理上真实的cpu核,有独立的电路元件以及L1,L2缓存,可以独立地执行指令。

2022-12-15 13:34:30 1031 14

原创 万字干货|Synchronized关键字详解

大家好,我是呼噜噜,在之前的文章中https://mp.weixin.qq.com/s/0Ii636KQ9sWwX-OhdlPIYw,我们知道了可以保证可见性、有序性,但无法保证原子性的。今天我们来聊聊synchronized关键字,其可以同时保证三者,实现线程安全。在介绍之前,我们得强调一下什么是线程安全,所谓线程安全:在 Java 早期版本中,synchronized 属于 重量级锁,效率低下;不过在 Java 6 之后,Java 官方对从 JVM 层面对 synchronized 较大优化,所以现在的

2022-12-08 09:54:54 781

原创 volatile关键字在并发中有哪些作用?

读过笔者之前的一篇文章https://mp.weixin.qq.com/s/iyXN4WyGAV_J4d8zeiG7yA, 我们知道了由于计算机为了充分利用CPU的高性能,以及各个硬件 存取速度巨大的差异带来的一系列问题Java 是最早尝试提供内存模型的编程语言。由于Java 语言是跨平台的,另外各个操作系统总存在一些差异,Java在物理机器的基础上抽象出一个 内存模型(JMM),来简化和管理并发程序。我们都知道Java并发的三大特性:那么本文我们就聊聊关键字volatile ,, 看看其在Java内存模型

2022-11-28 09:53:02 615

原创 Tauri+Rust+Vue 跨平台桌面应用简明教程(1)环境创建+系统事件+自定义菜单

Tauri 是一个工具包,可以帮助开发者为主要桌面平台制作应用程序(如 mac,windows,linux 等)。几乎支持现有的任何前端框架(如 react, vue, vite 等),其核心是使用 Rust 编写的。类似Electron的GUI框架,相比于 Electron,其突出优点就是体积小。我们知道Electron 相当于是打包了一个小型浏览器,体积比较大,还占内存。而 Tauri 开发的应用,前端使用操作系统的 webview,后端集成了 Rust,理论上性能杠杠的,使得打包后的体积相当小。

2022-11-23 09:38:00 8152 1

原创 万字文章|JDK动态代理及其源码解析 拿捏了

静态代理:在编译时就已经实现,编译完成后代理类是一个实际的class文件代理类和委托类的关系在程序运行前就已确定动态代理:在运行时动态生成的,即编译完成后没有实际的class文件,而是在运行时动态生成类字节码,并加载到JVM中代理类和委托类的关系是在程序运行时确定。

2022-11-15 11:31:38 385

原创 聊聊GPU与CPU的区别

大家好,之前呼噜噜学过一点深度学习的知识,做了几个项目,发现CPU来训练就很慢,但是后来用装有GPU的电脑来训练,就明显快的飞起,感觉很神奇。此时心里有个疑问,CPU造价那么昂贵,性能比起内存、机械硬盘、固态硬盘,快的不是一个数量级的,这个GPU竟然比CPU还要厉害?让我们一起进入计算机的世界,一起来看看GPU和CPU!

2022-11-07 10:34:36 1090

原创 聊聊计算机中的寄存器

现代CPU内部除了运算器和控制器,还有一个常见的组件:寄存器,是CPU内部用来存放数据的一些小型的存储区域,用来暂时存放参与运算的数据以及运算结果。在这篇文章中,我们了解了计算机各个硬件读写速度的差异,其中从存储器速度、容量和价格的关系金字塔图发现:最上层的寄存器速度最快,容量最小,价格也最昂贵。

2022-10-31 22:30:30 2562 1

原创 枚举与接口常量、类常量有什么区别?

枚举是一种特殊的类,所有的枚举类都是Enum类的子类,就类似Object类一样,由于java类是单继承的,所以不能在继承其他类或者枚举了。枚举变量不能使用其他的数据,只能使用枚举中常量赋值。能提高程序的安全性。public enum 枚举名 {//枚举的取值范围 }

2022-10-21 09:48:35 603

原创 Java内存模型(JMM)详解

在上一篇文章为了充分压榨CPU的性能,CPU 会对指令乱序执行或者语言的编译器会指令重排,让CPU一直工作不停歇,但同时会导致有序性问题。为了平衡CPU的寄存器和内存的速度差异,计算机的CPU 增加了高速缓存,但同时导致了可见性问题为了平衡CPU 与 I/O 设备的速度差异,操作系统增加了进程、线程概念,以分时复用 CPU,但同时导致了原子性问题。Java 是最早尝试提供内存模型的编程语言。

2022-10-18 09:31:24 1669

原创 计算机的基本组成是什么样子的?

软件行业非常迅速,以前流行C,C++java,spring,现在springcloud,docker,微服务,k8s云原生等概念火热,还有各种各样的新技术在不断的涌现出来。但是计算机底层原理 这几十年一直并没有太大的变化,与其不断去尝试新技术,不如耐住性子,深入学习底层的知识,好好修炼“内功”。

2022-10-11 15:20:58 2438

原创 聊聊Linux中CPU上下文切换

什么是CPU上下文Linux是一个多任务的操作系统,多任务操作系统是指多个进程运行在一个 CPU 中互不打扰,看起来像同时运行一样。多任务的操作

2022-10-08 11:26:47 806

原创 面试题:海量数据处理利器-布隆过滤器

Guava 提供的布隆过滤器的实现还是很不错的,但是随着微服务、分布式的不断发展,对于微服务多实例的场景下就不太适用了,只适合单机,解决方案是:一般是借助Redis中的布隆过滤器。布隆过滤器的误判是指多个输入经过哈希之后在相同的bit位置1了,这样就无法判断究竟是哪个输入产生的,因此误判的根源在于相同的 bit 位被多次映射且置 1。布隆过滤器的 允许的误差值 越小,需要的存储空间就越大,对于不需要过于精确的场景,允许的误差值 设置稍大一点也可以。时,我们可以大概率确定该元素在过滤器中,但当过滤器返回。

2022-09-28 09:29:49 109

原创 Twikoo最新私有化部署教程--迁移腾讯云

twikoo私有化部署

2022-09-21 09:37:52 1665

原创 计算机硬件的读写速度差异

当CPU的多个核心参与一个程序的运行,从内存中读取一个共享变量的数据,当不同核心间进行了各自的计算,把计算后的值放入自己的缓存中而不选择立即写入内存中(CPU写入内存的时机是不确定的)。程序执行时,会先将内存中的数据加载到共享的 L3 Cache 中,再加载到每个核心独有的 L2 Cache,最后 进入到最快的 L1 Cache,之后才会被 CPU 读取。),它是通过物理读写的方式来访问数据的,机械硬盘在盘面上写数据、磁盘转动,机械臂移动,比较原始的数据读写方式,就像近现代的留声机发声原理一样。

2022-09-13 13:17:54 1423

原创 面试题:Java序列化与反序列化

一起来看看,面试题:Java序列化与反序列化

2022-08-26 10:14:57 151

原创 面试题:深拷贝、浅拷贝、引用拷贝的区别

一起来看看 面试题:深拷贝、浅拷贝、引用拷贝的区别

2022-08-23 11:12:52 643 2

原创 深入理解Java泛型

聊聊Java 泛型(generics)

2022-08-19 15:21:17 252 1

原创 Java 注解及其底层原理

我们往往知道在哪些地方加上合适的注解,不然IDE会报错,却不知道其中的原理,那究竟什么是注解呢?

2022-08-11 14:06:34 286

原创 JAVA反射机制详解

一起来看看 java的灵魂-反射

2022-08-04 10:18:35 397

原创 面试题:Java中为什么只有值传递?

一起来看看java 值传递

2022-07-26 09:37:51 689

microsoft-windows-netfx3-ondemand-package.cab

 .NET Framework 3.5 离线安装包 (cab格式)

2019-07-24

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除