<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[自娱自乐的代码人]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/initphp</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; initphp]]></copyright><item><title><![CDATA[ptmalloc源码分析 - malloc/free函数的实战篇（12）]]></title><link>https://blog.csdn.net/initphp/article/details/132971717</link><guid>https://blog.csdn.net/initphp/article/details/132971717</guid><author>initphp</author><pubDate>Wed, 27 Sep 2023 11:38:42 +0800</pubDate><description><![CDATA[小内存块分配是是落在fastbin上的，这些内存块没有经过合并整理的操作，所以我们可以尝试从已经被free的chunk中获取得到一些信息，例如。我们将malloc_chunk的结构拷贝过来，以及mem2chunk/chunk2men/chunksize等几个宏定义也拷贝过来。如果与top chunk相邻的那个chunk没有回收，将导致top chunk一下很多的空闲内存都无法返回给操作系统。的方式，获取得到chunk的对象指针地址。因为当前chunk在使用中，所以可以获取得到mchunk_size的值了。]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - realloc()函数的实现（11）]]></title><link>https://blog.csdn.net/initphp/article/details/133323476</link><guid>https://blog.csdn.net/initphp/article/details/133323476</guid><author>initphp</author><pubDate>Tue, 26 Sep 2023 22:14:13 +0800</pubDate><description><![CDATA[老的chunk内存，大于新分配的，空间足够，则可以进行分割。如果nextchunk不是Top chunk ，并且next为空闲状态，则将nextchunk进行合并。函数，检查bytes是否在分配合法区间内，并且将bytes进行对齐，最终得到对齐的nb大小的内存申请容量。如果 nextchunk 是Topchunk ，并且新的chunk大小大于申请的大小，则直接。，并通过_int_free函数，将裁剪出来的剩余chunk释放到bins上管理。1. _int_realloc函数：老chunk足够大，则裁剪。]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - free()函数的实现（10）]]></title><link>https://blog.csdn.net/initphp/article/details/133309636</link><guid>https://blog.csdn.net/initphp/article/details/133309636</guid><author>initphp</author><pubDate>Tue, 26 Sep 2023 15:53:50 +0800</pubDate><description><![CDATA[本章节主要讲解free函数的实现。，该入口函数也在malloc.c的文件中。前几章节我们讲了malloc的具体实现，基本了解了ptmalloc是通过fast bins、unsorted bin、small bin、large bin 和 Top chunk等来管理释放后的内存的。free函数的基本步骤有6步：步骤1：如果是MMAP分配的，则调用munmap_chunk进行chunk的释放操作步骤2：如果释放的内存小于get_max_fast（），则释放的chunk放入fastbin。]]></description><category></category></item><item><title><![CDATA[自娱自乐代码人的源码分析系列汇总]]></title><link>https://blog.csdn.net/initphp/article/details/132888696</link><guid>https://blog.csdn.net/initphp/article/details/132888696</guid><author>initphp</author><pubDate>Thu, 14 Sep 2023 19:31:42 +0800</pubDate><description><![CDATA[ptmalloc源码分析/Lua源码分析/Nginx源码分析/Memcache源码分析]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - Top chunk的扩容函数sysmalloc实现（09）]]></title><link>https://blog.csdn.net/initphp/article/details/132874817</link><guid>https://blog.csdn.net/initphp/article/details/132874817</guid><author>initphp</author><pubDate>Thu, 14 Sep 2023 15:52:03 +0800</pubDate><description><![CDATA[当Top chunk内存空间不足的时候，就会调用sysmalloc函数进行内存分配操作。]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - _int_malloc函数之largebins和Top chunk（08）]]></title><link>https://blog.csdn.net/initphp/article/details/132815489</link><guid>https://blog.csdn.net/initphp/article/details/132815489</guid><author>initphp</author><pubDate>Tue, 12 Sep 2023 11:59:50 +0800</pubDate><description><![CDATA[下面我们将一下largebins的实现、扫描bins的方法和Top chunk的实现。top chunk相当于分配区的顶部空闲内存，当bins上都不能满足内存分配要求的时候，就会来top chunk上分配。如果上面都没有合适的chunk，则进行bin的扫描进行chunk的内存分配。chunk的大小也是从小到大排列的，所以往后搜索到的chunk的size都要大于分配内存的大小。如果top chunk的大小 大于分配的内存，则将该Top chunk内存切割后直接分配。三、从Top chunk上去分配一块内存。]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - _int_malloc函数之smallbins和unsorted bin（07）]]></title><link>https://blog.csdn.net/initphp/article/details/132754647</link><guid>https://blog.csdn.net/initphp/article/details/132754647</guid><author>initphp</author><pubDate>Fri, 08 Sep 2023 11:15:18 +0800</pubDate><description><![CDATA[前一章，我们讲解了fastbins的空闲链表的分配逻辑。获取得到的victim就是要操作的内存chunk对象，通过chunk2mem和alloc_perturb函数，初始化对象。如果符合smallbin的大小，则从smallbin的数组上获取一个chunk进行内存分配。，则此次分配失败，需要跳出smallbins上的分配逻辑，往下走其他逻辑的分配方式。如果是smallbin，则通过bins的数组下标获取到对应的chunk双向链表。如果，我们分配的是一个small类型的，遇到合适大小的chunk，则可以将。]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - _int_malloc函数之fastbins（06）]]></title><link>https://blog.csdn.net/initphp/article/details/132582872</link><guid>https://blog.csdn.net/initphp/article/details/132582872</guid><author>initphp</author><pubDate>Wed, 30 Aug 2023 15:54:51 +0800</pubDate><description><![CDATA[当用户释放一块不大于max_fast（默认值64）的chunk（一般小内存）的时候，会默认会被放到fast bins上。因为fastbinsY是一个数组，数组上挂载malloc_chunk是双向链表，当多线程进行同时操作链表的时候就会冲突，需要进行原子操作。_int_malloc函数中，先看申请的内存大小nb是否符合fast bins的限制，符合的话，首先进入fast bin的分配。内存是如何分配的，以及如何将分配的内存关联到malloc_chunk，然后放置到malloc_state的状态机上，则是由。]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - 分配区heap_info结构实现（05）]]></title><link>https://blog.csdn.net/initphp/article/details/132564546</link><guid>https://blog.csdn.net/initphp/article/details/132564546</guid><author>initphp</author><pubDate>Tue, 29 Aug 2023 17:14:03 +0800</pubDate><description><![CDATA[我们讲解了多线程环境下，面对线程之间的竞争，ptmalloc除了主分配区外，还会去创建非主分配区。因为线程在调用malloc的时候，首先会去获取一个分配区，如果当前的分配区都被锁定并且没有新的分配区可用的时候，ptmalloc就会去创建一个新的。中主要是创建一个新的分配区，该分配区主要是非主分配区类型。主分配区在ptmalloc_init中初始化，并且设置了全局变量main_arena的值。(size_t size, size_t top_pad)：创建一个新的非主分配区。一、heap_info是什么？]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - 主分配区和非主分配区Arena的实现（04）]]></title><link>https://blog.csdn.net/initphp/article/details/127750294</link><guid>https://blog.csdn.net/initphp/article/details/127750294</guid><author>initphp</author><pubDate>Wed, 09 Nov 2022 14:15:20 +0800</pubDate><description><![CDATA[这里要注意的是，每次有线程调用分配malloc函数，都会对分配区进行加锁操作，多线程情况下竞争的时候没有获得主分配区的，则去freelist里面去找，找不到则创建一个新的非分配区，如果非分配区都创建满了，则需要等待。当arena满了之后就不再创建而是与其他arena共享一个arena，方法为依次给各个arena上锁（查看是否有其他线程正在使用该arena），如果上锁成功（没有其他线程正在使用），则使用该arena，之后一直使用这个arena，如果无法使用则阻塞等待。二、主分配区和非主分配区的数据结构。]]></description><category></category></item><item><title><![CDATA[业务知识 - 金融知识笔记]]></title><link>https://blog.csdn.net/initphp/article/details/115296626</link><guid>https://blog.csdn.net/initphp/article/details/115296626</guid><author>initphp</author><pubDate>Mon, 29 Mar 2021 11:19:41 +0800</pubDate><description><![CDATA[目录

一、股市的基本概念

1. 股市与市场利率的关系

一、股市的基本概念

1. 股市与市场利率的关系

股市和利率关系，是相反的。利率上升，股市下降；利率下降，股市上升

利率上升/下降情况：

公司经营影响：导致公司筹资困难，公司被迫压缩生产规模或改变原已拟定的生产计划，这将使公司的预期利润减少，导致股价下跌。相反，利率下降会使公司的预期利润增加，从而导致股价上升。
	资金流向影响：非金融性公司的境况相对恶化，投资者便会在减少风险的心理驱使下，从股市抽走资金而存人银行，以取得较高的利息。资金的流向]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - 内存组织单元malloc_chunk（03）]]></title><link>https://blog.csdn.net/initphp/article/details/109525810</link><guid>https://blog.csdn.net/initphp/article/details/109525810</guid><author>initphp</author><pubDate>Fri, 06 Nov 2020 17:53:47 +0800</pubDate><description><![CDATA[上一章讲解了ptmalloc的内存的分配器状态机malloc_state的实现。分配器状态机主要管理内存分配过程中的各种状态以及空闲内存的管理。

ptmalloc的最小内存组织单元是chunk的数据结构。通过chunk的数据结构，用于管理每次前端程序使用malloc函数调用所产生的在堆上分配的内存。

chunk的数据结构

先来看一下chunk的数据结构：

mchunk_prev_size：该字段记录物理相邻的前一个chunk的大小（低地址chunk）。如果前一个chunk处于空闲，则该字段记录前一个]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - 分配区状态机malloc_state（02）]]></title><link>https://blog.csdn.net/initphp/article/details/109489720</link><guid>https://blog.csdn.net/initphp/article/details/109489720</guid><author>initphp</author><pubDate>Wed, 04 Nov 2020 14:33:25 +0800</pubDate><description><![CDATA[分配器状态机结构malloc_state

ptmalloc通过malloc_state的状态机来管理内存的分配。当用户层调用malloc/free等函数的时候，都会通过ptmalloc内核模块进行内存的分配，每一块从操作系统上分配的内存，都会使用malloc_state结构体来管理。


/**
 * 全局malloc状态管理
 */
struct malloc_state
{
  /* Serialize access. 同步访问互斥锁 */
  __libc_lock_define (, mutex)]]></description><category></category></item><item><title><![CDATA[ptmalloc源码分析 - ptmalloc的初始化实现（01）]]></title><link>https://blog.csdn.net/initphp/article/details/109470781</link><guid>https://blog.csdn.net/initphp/article/details/109470781</guid><author>initphp</author><pubDate>Tue, 03 Nov 2020 16:12:46 +0800</pubDate><description><![CDATA[前几年阅读过华庭的《glibc内存管理ptmalloc源代码分析》文章，并做过一篇笔记

今年打算重点阅读一下glibc里面，malloc部分的具体实现机制。

ptmalloc简介

Linux早期的版本，是由Doug Lea实现的，但是早期的版本有一个问题，就是没办法处理多线程下并发分配和回收的高效和正确性。Wolfram Gloger在Doug Lea的基础上改进使得Glibc的malloc可]]></description><category></category></item><item><title><![CDATA[转载和积累系列 - L4负载均衡的设计与实现]]></title><link>https://blog.csdn.net/initphp/article/details/107927807</link><guid>https://blog.csdn.net/initphp/article/details/107927807</guid><author>initphp</author><pubDate>Tue, 11 Aug 2020 09:39:27 +0800</pubDate><description><![CDATA[目录

简介

一、LVS的局限性

1. 数据包转发性能问题

2.HA-主备结构的浪费

3.转发模式的优缺点

二、google maglev负载均衡

Maglev Consistent Hash

Google下一步是什么？

三、facebook katran

第一代 L4LB

四、设计高性能负载均衡

附录：

简介

负载均衡分为L4负载均衡（例如LVS）、L7负载均衡（例如nginx），L4负载均衡工作在传输层其主要功能就是转发， 本文讲述的负载均衡为L4。

传统上通过采购硬件的..]]></description><category></category></item><item><title><![CDATA[业务知识 - 行业笔记]]></title><link>https://blog.csdn.net/initphp/article/details/107712843</link><guid>https://blog.csdn.net/initphp/article/details/107712843</guid><author>initphp</author><pubDate>Fri, 31 Jul 2020 14:50:01 +0800</pubDate><description><![CDATA[第一章：抖音成为电商流量新宠

从电商到微商，再到抖商：

电商：通过长期消费类积累信用（淘宝、天猫）
	微商：依靠社交关系信任来消费（微商直销、社群运营）
	抖商：传播和销售一体化
抖商竞争力五点：

粉丝接受度高。非直接硬广，通过精美饰品+音乐+情节，让商家产品直观明显
	用户更加精准。算法推送，目标用户群体精准
	触达更多用户。抖音是去中心化的，内容好就能上热门，覆盖更多用户
	抖音平台流量。MAU5亿，一二三线年轻人群。
	门槛低。
抖音快速成长的原因：

快跑的开发迭代模式。前期注重工具属性，有利]]></description><category></category></item><item><title><![CDATA[转载和积累系列 - 为什么 HashMap 加载因子是0.75？而不是0.8，0.6？]]></title><link>https://blog.csdn.net/initphp/article/details/107505392</link><guid>https://blog.csdn.net/initphp/article/details/107505392</guid><author>initphp</author><pubDate>Wed, 22 Jul 2020 09:57:52 +0800</pubDate><description><![CDATA[有很多东西之前在学的时候没怎么注意，笔者也是在重温HashMap的时候发现有很多可以去细究的问题，最终是会回归于数学的，如HashMap的加载因子为什么是0.75？

本文主要对以下内容进行介绍：


	为什么HashMap需要加载因子？
	
	
	解决冲突有什么方法？
	
	
	为什么加载因子一定是0.75？而不是0.8，0.6？
	
为什么HashMap需要加载因子？

HashMap的底层是哈希表，是存储键值对的结构类型，它需要通过一定的计算才可以确定数据在哈希表中的存储位置：


static fi]]></description><category></category></item><item><title><![CDATA[业务知识 - 结构化思维]]></title><link>https://blog.csdn.net/initphp/article/details/106564695</link><guid>https://blog.csdn.net/initphp/article/details/106564695</guid><author>initphp</author><pubDate>Fri, 05 Jun 2020 10:20:51 +0800</pubDate><description><![CDATA["结构化思维”对于技术人员 Coding 能力的升级至关重要，是一线互联网大厂升级为高工及技术专家的关键之一。“结构化思维”对于应对网上甚嚣尘上的“35 岁中年危机”也是关键。

表达要有逻辑

表达要有逻辑，如公众演讲，转正答辩，晋升评审，严密的逻辑有时可以折服石榴裙等。

四种组织思维的逻辑顺序：


	演绎（因果）顺序：“大前提、小前提、结论”的演绎推理方式就是演绎顺序。比如，经典三段论：所有人都要死，苏格拉底是人，苏格拉底要死
	
	
	时间（步骤）顺序：“第一、第二、第三”，“首先、然后、再者”等]]></description><category></category></item><item><title><![CDATA[转载和积累系列 - 秒杀系统设计思路]]></title><link>https://blog.csdn.net/initphp/article/details/106563902</link><guid>https://blog.csdn.net/initphp/article/details/106563902</guid><author>initphp</author><pubDate>Fri, 05 Jun 2020 09:45:24 +0800</pubDate><description><![CDATA[目录

前言

一：秒杀应该考虑哪些问题

1.1：超卖问题

1.2：高并发

1.3：接口防刷

1.4：秒杀url

1.5：数据库设计

1.6:大量请求问题

二：秒杀系统的设计和技术方案

2.1：秒杀系统数据库设计

2.2：秒杀url的设计

2.3：秒杀页面静态化

2.4:单体redis升级为集群redis

2.5:使用nginx

2.6:精简sql

2.7：redis预减库存

2.8:接口限流

2.9：令牌桶算法限流

2.10:异步下单

2.11：服务降级

三：总结

]]></description><category></category></item><item><title><![CDATA[转载和积累系列 - 分库分表的细节讲解]]></title><link>https://blog.csdn.net/initphp/article/details/106524104</link><guid>https://blog.csdn.net/initphp/article/details/106524104</guid><author>initphp</author><pubDate>Wed, 03 Jun 2020 17:34:17 +0800</pubDate><description><![CDATA[目录

数据库瓶颈

分库分表

水平分库

水平分表

垂直分库

垂直分表

分库分表工具

分库分表带来的问题

事务一致性问题

跨节点关联查询 Join 问题

跨节点分页、排序、函数问题

全局主键避重问题

数据迁移、扩容问题

什么时候考虑分库分表

能不分就不分

数据量过大，正常运维影响业务访问

随着业务发展，需要对某些字段垂直拆分

数据量快速增长

数据库瓶颈

不管是 IO 瓶颈还是 CPU 瓶颈，最终都会导致数据库的活跃连接数增加，进而逼近甚至达到数据库可承载的活跃连接数的阈值]]></description><category></category></item></channel></rss>