<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[蓝蓝的天空专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ocean_aa</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ocean_aa]]></copyright><item><title><![CDATA[高级语言不高级之一]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/140477332</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/140477332</guid><author>ocean_aa</author><pubDate>Tue, 16 Jul 2024 23:18:52 +0800</pubDate><description><![CDATA[高级语言不高级之一]]></description><category></category></item><item><title><![CDATA[Linux内存管理总结]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132548285</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132548285</guid><author>ocean_aa</author><pubDate>Mon, 28 Aug 2023 22:07:13 +0800</pubDate><description><![CDATA[当Linux要运行一个程序的时候，进程通过虚拟内存读取指令。但是在运行指令之前，通过页表的映射，将虚拟地址转化为物理地址来获取实际的指令或数据来运行任务。在通常情况下，虚拟内存比物理内存要大。在Linux使用虚拟内存来分配程序运行所需要的物理内存。在Linux系统中，有两种内存：物理内存，虚拟内存。：虚拟地址到内存物理地址的映射表。：在机器中实际存在的内存。]]></description><category></category></item><item><title><![CDATA[Linux内存管理之OOM killer]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132507764</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132507764</guid><author>ocean_aa</author><pubDate>Sat, 26 Aug 2023 09:23:44 +0800</pubDate><description><![CDATA[物理内存是一种很稀缺的资源，它并不是无限的，也不是每次都能回收足够当前使用的空间。一常比较常见的场景是：物理内存即将耗尽，并且无法回收足够的空间来满足后续的任务。在这个时候，为了尽量保证系统的其它部份可用，系统调将调 用OOM killer.首先OOK killer会选择一个任务（一般会选择占用内存比较多的），然后将任务终止，期望任务 退出后会释放足够多的内存，以满足系统正常操作的需要。]]></description><category></category></item><item><title><![CDATA[Linux内存管理之内存碎片]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132482557</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132482557</guid><author>ocean_aa</author><pubDate>Thu, 24 Aug 2023 21:24:24 +0800</pubDate><description><![CDATA[随着系统持续的运行，内存不停的被分配使用、回收，再分配、再回收…，在这个过程中，内存往往会变理碎片化，不再连续。尽管通过虚拟内存可以将分散的物理页面以连续的方式对外展现（类似外观模式），但是有的时候需要分配比较大的，并且连续的物理内存。例如，当设备驱动程序需要一个很大的DMA缓存区的时候，怎么办呢？该机制统一将被占用的页面从内存的下部区域移动到上部空闲的区域，当完成一次整理之后，占用的页面在内存区域的一侧，空闲页面则连续的在另一侧，这样就有较大的的连续物理内存供分配使用了。]]></description><category></category></item><item><title><![CDATA[Linux内存管理之内存回收]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132417735</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132417735</guid><author>ocean_aa</author><pubDate>Tue, 22 Aug 2023 23:18:08 +0800</pubDate><description><![CDATA[随着系统的负载的增加，可用于直接分配的空闲页面越来越少，当它少于某一阀值的时候，一个分配请求到来就会唤醒kswapd守护进程，它将对内存页面进行异步扫描，判断它们的可用性后，要么释放，要么交换到存储设备中。随着内存使用量的继续增加，到达另一个最小的阀值，这个阀值触发直接回收的操作，在这种情况下，内存分配立即停止，直到回收足够多的内存页面来满足请求。在大部份情况下，如果内存页面在内核空间用于DMA缓存区，那么它是不能直接被回收再利用的，并且一直持有该页面空间，直到用户去主动释放。]]></description><category></category></item><item><title><![CDATA[Linux内存管理之匿名内存]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132388471</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132388471</guid><author>ocean_aa</author><pubDate>Sun, 20 Aug 2023 08:44:52 +0800</pubDate><description><![CDATA[在通常情况下，匿名内存规定了程序能够访问的虚拟内存域。当读取数据时，会创建一个匿名页表的对象（），该对象映射到一块空白物理内存页面（被格式化，填满0）。当执行写操作时，数据被写入到与之匹配物理内存页面中。匿名页面将被定义为脏页，脏页能够被系统回收复用。匿名内存的创建方式有两种，一种是通过程序的堆或栈来创建；另一种方式是通过系统调 用来产生（如系统间的请求、接收网络数据、发送数据等）。匿名内存又叫匿名映射，是指内存中的数据并不来自系统文件的内存。]]></description><category></category></item><item><title><![CDATA[Linux内存管理之页面缓存(Page Cache)]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132328257</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132328257</guid><author>ocean_aa</author><pubDate>Wed, 16 Aug 2023 22:03:27 +0800</pubDate><description><![CDATA[已持久化的页被标记为脏页，这些页可以被Linux复用，它通过同步机制保证页面缓存中的内容与更新后的文件数据一致。类似的，当需要向一个文件中写入数据时，首先把数据写入到页面缓存中，然后再将数据持久化到存储设备中。每当读取数据时，为了提高后续再次读取的效率，减少再次从硬盘读取数据的时间，数据被放到页面缓存中。通常情况下，读取文件数据到物理内存中，物理内存的数据根据一定的策略进行更新。]]></description><category></category></item><item><title><![CDATA[Linux 内存管理之节点内存（Nodes）]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132307167</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132307167</guid><author>ocean_aa</author><pubDate>Tue, 15 Aug 2023 21:21:57 +0800</pubDate><description><![CDATA[在这类系统中，内存被划分成不同的堆，程序根据访问堆的“距离”不同，有不同访问的延迟。每个堆都被称作一个节点，对于每个节点，Linux都会构建一个独立的内存管理子系统。节点有自己的一组区域、页表、内存页及多种计数器。大部份多进程系统都是非统一内存的访问系统（NUMA）。]]></description><category></category></item><item><title><![CDATA[Linux内存管理之内存域（Zones）]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132286012</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132286012</guid><author>ocean_aa</author><pubDate>Mon, 14 Aug 2023 21:50:50 +0800</pubDate><description><![CDATA[在另一些情况下，所需要的物理内存超过了虚拟内存最大可寻址的范围，这个时候就需要一些特殊的操作来访问内存了。Linux根据内存页面在设备中的用途将它们进行分组，这些分组称为域。例如Zones_DMA，包含用于DMA的设备的内存页面；Zones_Normal，包含正常寻址的页面。不同的平台对于DMA有不同的需求，内存域的实际布局依赖于硬件，并不是所有架构都有定义域，在有些情况下，设备并不能直接访问所有的物理内存（DMA）。在通常情况下，硬件会限制能够访问的物理地址范围。]]></description><category></category></item><item><title><![CDATA[Linux 内存管理之Huge pages－大页内存]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132258828</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132258828</guid><author>ocean_aa</author><pubDate>Sun, 13 Aug 2023 14:17:14 +0800</pubDate><description><![CDATA[许多现代CPU体系架构，允许页表中的高维度直接映射到内存页面。在Linux中，这样的页面被称为大页面，使用大页面能显著降低TBL的压力，提高TBL的命中率，进而提高了系统的整体性能。第一种方式是HugeTLB文件系统（HugeTBLFS）,它是一种使用RAM作为备份存储区的伪文件系统，通过该系统创建的文件，数据保留在内存中，并通过大页面进行映射。第二种方式是透明大页面（THP），与HugeTLB不同的是，HugeTBL需要管理员配置哪些系统内存需要被映射成大页面，而THP的这些管理对用户是透明的。]]></description><category></category></item><item><title><![CDATA[Linux 虚拟内存入门]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132243894</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132243894</guid><author>ocean_aa</author><pubDate>Sat, 12 Aug 2023 10:02:26 +0800</pubDate><description><![CDATA[此外，不同的CPU架构，甚至相同架构的不同实现，对于查看这些范围的地址也是不一样的。通过虚拟内存，每个物理内存的访问都通过一个虚拟地址，当CPU从系统内存中读取（或写入）指令时，它通过MMU**，将指令中编码的虚拟地址转化为内存控制器所能理解的物理地址。应用程序通过虚拟内存抽象了物理内存的细节，只允许在物理内存中保留需要的信息，并且提供了一种在不同进程间的数据保护和数据共享机制。每个物理内存业都可以被映射为一个或多个虚拟内存页，这些映射关系保存在页表中，它是一个多维的数据集合，通过它可以将程序使用的。]]></description><category></category></item><item><title><![CDATA[Liunx内存管理概述]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132218321</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132218321</guid><author>ocean_aa</author><pubDate>Thu, 10 Aug 2023 21:11:21 +0800</pubDate><description><![CDATA[如果内存管理系统不包含MMU则被称为NO-MMU，它绝对值期待，希望它最终被创造出来。虽然两者在概念上是类似的，但是这里只讲有MMU的，CPU可以通过虚拟地址找到物理地址。在Linux中，内存管理经过多年的发展，已经变成一个超级复杂的系统，它紧跟时代的变化，包含越来越多的功能以支持MMU-less微控制单元和超级计算机的需要。]]></description><category></category></item><item><title><![CDATA[Linux 内存管理]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/132197958</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/132197958</guid><author>ocean_aa</author><pubDate>Wed, 09 Aug 2023 22:07:27 +0800</pubDate><description><![CDATA[顾名思义，Liunx内存管理子系统在系统中负责管理内存。它包括虚拟内存管理、段与页的实现、内核态与用户空的空间分配、将文件映射到进程空间等，很多很多酷炫的功能。Linux内存管理是一个非常复杂的系统，它有非常多的可配置项。大部份这些配置项可通过**/proc文件系统。Linux内存管理有很多专业术语，如果你还不熟悉它，请考虑阅读后续的。systemctl**命令进行调整。]]></description><category></category></item><item><title><![CDATA[企业信息化简介]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/128945044</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/128945044</guid><author>ocean_aa</author><pubDate>Wed, 08 Feb 2023 23:29:12 +0800</pubDate><description><![CDATA[信息化简介]]></description><category></category></item><item><title><![CDATA[忍无可忍，狂暴SpringMVC使用中的几雷区]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/116616462</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/116616462</guid><author>ocean_aa</author><pubDate>Tue, 11 May 2021 00:07:16 +0800</pubDate><description><![CDATA[Ｃontroller
Controller干啥的？
　　接收前端请求，调用Ｍodel进行业务处理，并将处理结果返回。
　　说白了就是调用和编排业务处理服务进行业务处理。
Controller不能干啥？
不做业务处理，不做业务处理，不做业务处理（重要的事说三遍）。
Model
Ｍodel进行业务处理，它在进行业务处理时，应该是无状态的（也必须是无状态的），有些“”大佬“”总喜欢把Ｒequest, Session这些对象当参数传进来，乍不上天呢？
IOC
控制反制，管理bean，地球人都知道。但是这个管理必须在]]></description><category></category></item><item><title><![CDATA[HTTP 2 的地位尴尬]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/111395836</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/111395836</guid><author>ocean_aa</author><pubDate>Fri, 18 Dec 2020 20:49:01 +0800</pubDate><description><![CDATA[HTTP2
自HTTP 2发布已来，一直不温不火，个人觉得有两个最主要的原因：

HTTP 1.1 用着也还行，性能不好，但也不算差。
HTTP 3 出来得太快了，没有给HTTP 2留下发挥时间，HTTP 2还没来得及全面推广，HTTP 3就横空出世了，既然有更好的可以用，有什么理由还升HTTP 2呢？


...]]></description><category></category></item><item><title><![CDATA[HTTP的前世今生]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/111304410</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/111304410</guid><author>ocean_aa</author><pubDate>Wed, 16 Dec 2020 23:03:38 +0800</pubDate><description><![CDATA[HTTP 0.9
20世纪90年代初期互联网络非常简陋，计算机的计算能力还比较低，这时候网上的绝大部份资源都是纯文本的，这时候的http被定义成0.9版，功能非常有限，它同样也采用了纯文本格式，只能从服务器上GET资源，而且在响应请求之后立即关闭连接。
HTTP 1
在1993年~1995年之间，基于多媒体的发展以及各种浏览器争相出场，极大的激起了广大网民的热情，越来越多的人喜欢上了网络，研究HTTP并提出了很多的改进意见，极大的促进了HTTP的发展，HTTP 0.9已经跟不上时代的步伐了，这时HTTP 1]]></description><category></category></item><item><title><![CDATA[2.什么是DDD]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/107924704</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/107924704</guid><author>ocean_aa</author><pubDate>Tue, 11 Aug 2020 00:06:32 +0800</pubDate><description><![CDATA[文章目录DDD历史DDD的春天
DDD历史
DDD:领域驱动设计，它是一种设计思想，能有效的指导中台业务数据建模及微服务设计。DDD分为战略设计与战术设计。首先通过战略设计，建立领域模型； 其次通过战术设计完成领域模型到微服务的设计与落地。
DDD的春天
2003年DDD就产生了，但是一直不温不火，这是为什么呢？
主要有两方面的原因：
一是、在一段时间内，单体应用能够支持业务与数据的需求；
二是、而DDD本身具有一定的复杂度，使用DDD需要一定的成本（学习成本、使用成本）。
但随着业务与数据的暴发式增长，单]]></description><category></category></item><item><title><![CDATA[1. 微服务与DDD]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/106753577</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/106753577</guid><author>ocean_aa</author><pubDate>Sun, 14 Jun 2020 23:34:28 +0800</pubDate><description><![CDATA[这里写目录标题1.什么是微服务2.微服务边界3.微服务的拆分和设计4.DDD
1.什么是微服务
微服务专注于做一件事，并把它做好。它能很好的实现复用、高度自冶（独立开发、部署、运维、监控等）、横向扩展（有状态的除外）。
2.微服务边界
微服务的边界一般可以划分为逻辑边界、物理边界、代码边界。
**逻辑边界：**为了完整的达到某一个业务目标，各微服务或模块之间的边界。
**物理边界：**从部署和运行的视角上来讲、各微服务之间的部署和运行是相隔离的，不同的微服务运行在不同的服务器上（至少是不同的进程里）。
**]]></description><category></category></item><item><title><![CDATA[快速定位Java线上环境问题]]></title><link>https://blog.youkuaiyun.com/ocean_aa/article/details/106062804</link><guid>https://blog.youkuaiyun.com/ocean_aa/article/details/106062804</guid><author>ocean_aa</author><pubDate>Tue, 26 May 2020 22:35:47 +0800</pubDate><description><![CDATA[目录CPU占用率高栈内存溢出三级目录
CPU占用率高
栈内存溢出
三级目录

]]></description><category></category></item></channel></rss>