{"componentChunkName":"component---src-templates-blog-post-js","path":"/blog/2020-06-07-cafeteria-card-design/","result":{"data":{"markdownRemark":{"id":"779ed907-2d2f-5ad9-bfc7-fb979a4b6e5f","html":"<h2>需求描述</h2>\n<h2>需求分析</h2>\n<h2>部署图</h2>\n<h2>组件图</h2>\n<h2>时序图</h2>\n<p>并发：在一个时间段内发生若干事件；</p>\n<p>并行：在同一时刻发生若干事件；</p>\n<p>例如使用<code>单核</code> CPU，多个工作任务是以并发方式运行的，因为只有一个 CPU，各个任务分别占用一段时间，再切换到其他任务，等到下一次 CPU 使用权是再次执行未完成的任务。</p>\n<p>使用<code>多核</code> CPU 时，可以<code>将任务分配到不同的核同时运行</code>，实现并行。</p>\n<h2>CPU 的基本组成</h2>\n<h2>超线程</h2>\n<p>超线程技术把多线程处理器内部的两个逻辑内核模拟成两个物理芯片，让单个处理器就能使用线程级的并行计算。</p>\n<h2>缓存对齐</h2>\n<h2></h2>\n<h2>CPU 的乱序执行（指令重排）</h2>\n<p>为了提升计算性能，CPU 从单核升级到了多核甚至用到了超线程技术最大化提高 CPU 的处理性能。CPU增加了高速缓存，操作系统增加了进程、线程，通过CPU时间片的切换最大化的提升CPU的使用率。</p>\n<p>Java 程序验证</p>\n<p>顺序执行 SingleThreadPool</p>\n<p>NUMA</p>\n<p>linux 内核设计与实现</p>\n<p>编码 : 隐匿在计算机软硬件背后的语言</p>\n<p>纸带上通过打孔来表示 1、0，出现过一次问题，一个虫子（bug）飞到纸\b带上，一直沿用程序上的异常被称为 bug。</p>\n<p>汇编语言和机器语言是一一对应的，一个汇编命令即一个机器指令。</p>\n<p>volatile: 可见性、指令重排</p>\n<p>超线程：\n4 核 8 线程</p>\n<p>一组运算单元\n多寄存器</p>\n<p>进程、线程、纤程（协程、绿色线程）：<br>\n运行一个程序就会开启一个进程，在进程中通过线程并行进行工作，协程线程中的并发执行。<br>\n区别：进程分配资源的单位、线程不会分配空间是调度单位。  </p>\n<p>程序的本质是一堆指令</p>\n<p>项目驱动、并行学习</p>\n<p>kernel/用户层</p>","frontmatter":{"date":"June 07, 2020","title":"CAS in Java","description":"CAS in Java","tags":["CAS","Compare and Swap"]}}},"pageContext":{"id":"779ed907-2d2f-5ad9-bfc7-fb979a4b6e5f"}}}