当前位置: 首页 > news >正文

邯郸网站建设代理搭建网站是什么工作

邯郸网站建设代理,搭建网站是什么工作,app软件下载入口,怎么建设网站卖东西前言 最近阅读 Linux 内核时#xff0c;遇到了 hlist#xff0c;这个 hlist 用起来像是普通的链表#xff0c;但是为何使用 hlist#xff0c;hlist 是怎么工作的#xff1f; 相关代码 hlist_add_head(clk-clks_node, core-clks); /*** clk_core_link_…前言 最近阅读 Linux 内核时遇到了 hlist这个 hlist 用起来像是普通的链表但是为何使用 hlisthlist 是怎么工作的 相关代码 hlist_add_head(clk-clks_node, core-clks); /*** clk_core_link_consumer - Add a clk consumer to the list of consumers in a clk_core* core: clk to add consumer to* clk: consumer to link to a clk*/ static void clk_core_link_consumer(struct clk_core *core, struct clk *clk) {clk_prepare_lock();hlist_add_head(clk-clks_node, core-clks);clk_prepare_unlock(); }越来越感到 Linux 内核真的是一个宝藏库学习软件开发阅读 Linux 内核代码会受益匪浅。 hlist 定义 hlist 结构体定义所在的文件 include\linux\types.h struct hlist_head {struct hlist_node *first; };struct hlist_node {struct hlist_node *next, **pprev; };有的人理解 hlist 是 hash list 的简写也就是 哈希链表我不敢苟同但 hlist 用在哈希桶上时会由于 struct hlist_head 只有一个指针比普通的 struct list_head 节省空间 哈希表由于哈希碰撞即使哈希桶再大都有可能多个数据拥有同一个哈希值此时引入了链表哈希值相同的元素挂在链表上此时由于 哈希桶的数量极大比如 100万个使用 struct hlist_head 会比 struct list_head 节省很大的【内存空间】 由于 struct hlist_head 特殊的结构造成 struct hlist_head 不能成为 【双向循环】链表但是由于 struct hlist_node 有两个指针因此可以享受 链表节点快速【插入】与【删除】的有点这部分有点像 普通链表 struct list_head struct hlist_head 只用于定义 链表的头部链表的节点使用 struct hlist_node 定义。 【重点理解】 struct hlist_node 中的 pprev 是二级指针用于指向前一个 节点的 next也就是前一个节点成员 next 指针的指针。这里不是 pprev prev-next而是 pprev prev-next 一定要理解清楚否则 pprev prev-next 就是自身指针了因为上一个节点的 next 就是指向下一个节点这样获取不到上一个节点的指针。 hlist 的定义与初始化 可以通过阅读 Linux 经典链表操作头文件 include\linux\list.h 详细了解 链表的操作比如 定义、 初始化、插入、删除、遍历等操作。 如果链表嵌入在一个较大的数据结构中双向链表的各个节点一般都是采用经典的前驱与后继相连而通过链表成员获取结构体的指针地址可以使用 container_of比如 #define hlist_entry(ptr, type, member) container_of(ptr,type,member) 初始化与定义可以直接查看 include\linux\list.h 一般定义方法为 定义 hlist 头部 struct hlist_head children; 定义 hlist 节点 struct hlist_node clks_node; hlist head 定义后需要初始化可以定义时初始化也可以手动初始化 定义并初始化 static HLIST_HEAD(clk_root_list); 手动在初始化函数中初始化 INIT_HLIST_HEAD(core-clks); hlist 插入操作 由于 hlist 特殊的结构造成 hlist 插入操作分为两种 头部的插入 hlist_add_head 节点的插入 hlist_add_before hlist_add_behind 两种 hlist_add_head 操作 知道 hlist 头部插入到头部后面新插入的节点成为第一个hlist 节点 hlist_add_before 两个 hlist_node 节点前面插入节点 hlist_add_behind 两个 hlist_node 节点插入到后面类似于 after 删除节点 __hlist_del 由于 hlist node 节点是双向的双重指针 pprev 可以获取到前一个节点而 next 可以获取到后一个节点因此像常规双向链表一样删除操作不依赖 链表头部 小结 深入熟悉 hlist 的操作感觉 Linux 代码阅读起来更熟悉了后面抽时间自己写驱动时用起来。 hlist 设计很巧妙但使用起来由于区分 链表头与链表节点没有 list_head 操作那么简单但是用于哈希桶结构可以用于节省空间链表头部节点多、链表节点少的场合
http://www.pierceye.com/news/859375/

相关文章:

  • 西安专业网站建设公司排名做网站编写
  • 做电影网站还能赚钱云南网站建设哪家公司好
  • 重庆定制网站开发什么是网络营销战略
  • 网站建设硬件方案精准客源app
  • 网站视觉优化怎么做电子商务网站建设参考文献2018
  • 服务器可以吧网站做跳转吗wordpress 远程图片本地化
  • 网站在线访谈栏目建设个人网站可以备案了吗
  • 汉口北做网站搜索广告是什么
  • 电商网站可以用dw做嘉兴网站建设平台
  • 做网站是数据库应该放在哪里建筑工程水平防护网
  • vps网站无法通过ip访问网站怎么做的支付宝接口
  • 怎么创建一个博客网站网站的c4d动画是怎么做的
  • 西安做企业网站科技论文发表网
  • html 手机网站开发企业做网站的合同
  • 建立wordpress网站吗全州建设完小网站
  • 网站域名注册证书是什么制作WordPress友情链接
  • 如何在解决方案中新建网站html网页制作的软件下载
  • 企业网站怎么做优化开小加工厂去哪接单子
  • 网站建设推广费怎么做账域名和网站绑定
  • 商丘网站建设想象力网络中国流量最大的网站排行
  • 网站是否有备案网站集约化建设建议
  • 浏览器收录网站网上做图赚钱的网站
  • 网站建设优化过程中的优化策略相关文章 wordpress
  • 泉州网站深圳航空公司官网首页
  • 百度推广整体优化网站整体软装设计公司
  • 太原搜索引擎优化招聘信息服务好的镇江网站优化
  • 自己做网站下载怎么网站基础知识域名5个点
  • 网站搭建合作协议wordpress注册页面插件
  • 网络公司最好的是哪个兰州网络推广优化怎样
  • 网站文章采集工具新网站怎么做流畅