网站标签
网站描述汇聚开发知识
上一篇:通江南山康养中心-
下一篇:套餐管家-我的信息分享
网站快照织 织 主 页 所 有 文 章 关 于 我 主 页 j a v a 基 础 : 内 存 屏 障 2 0 2 1 1 1 1 4 内 存 屏 障 ( M e m o r y B a r r i e r ) 概 述 内 存 屏 障 ( M e m o r y B a r r i e r ) , 也 叫 做 内 存 栅 栏 ( M e m o r y F e n c e ) , 是 现 代 计 算 机 体 系 结 构 中 的 一 种 机 制 , 用 于 控 制 指 令 执 行 的 顺 序 , 以 确 保 在 多 核 处 理 器 环 境 中 , 多 个 线 程 或 处 理 器 对 共 享 内 存 的 操 作 能 够 按 照 特 定 的 顺 序 进 行 。 在 并 发 编 程 中 , 尤 其 是 在 多 线 程 程 序 中 , 我 们 需 要 确 保 不 同 线 程 间 的 内 存 可 见 性 和 操 作 顺 序 。 C P U 和 编 译 器 为 了 优 化 性 能 , 常 常 会 对 指 令 执 行 进 行 重 新 排 序 , 这 会 导 致 在 多 线 程 环 境 下 某 些 操 作 的 执 行 顺 序 不 符 合 预 期 , 从 而 产 生 竞 态 条 件 或 内 存 可 见 性 问 题 。 为 什 么 需 要 内 存 屏 障 ? 内 存 屏 障 有 两 个 作 用 1 、 阻 止 屏 障 两 侧 的 指 令 重 排 序 2 、 强 制 把 缓 冲 区 / 高 速 缓 存 中 的 脏 数 据 写 回 主 内 存 , 让 缓 存 中 相 应 的 数 据 失 效 。 在 多 核 系 统 中 , 每 个 核 心 都 有 自 己 的 缓 存 ( L 1 、 L 2 、 L 3 等 ) 。 当 一 个 线 程 在 某 个 核 心 上 对 共 享 变 量 进 行 修 改 时 , 其 他 核 心 可 能 并 没 有 及 时 感 知 到 这 个 修 改 。 另 外 为 了 提 高 性 能 , 现 代 处 理 器 和 编 译 器 会 重 排 指 令 的 执 行 顺 序 , 例 如 将 某 些 内 存 操 作 提 前 或 延 后 执 行 , 导 致 在 多 线 程 环 境 下 可 能 出 现 读 取 到 过 时 数 据 的 问 题 。 内 存 屏 障 通 过 强 制 C P U 按 照 特 定 的 顺 序 执 行 内 存 操 作 , 避 免 了 指 令 重 排 带 来 的 问 题 , 确 保 线 程 间 的 内 存 可 见 性 和 操 作 顺 序 。 内 存 屏 障 的 类 型 内 存 屏 障 一 般 有 以 下 几 种 类 型 : 内 存 屏 障 分 为 两 种 : L o a d B a r r i e r 和 S t o r e B a r r i e r 即 读 屏 障 和 写 屏 障 。 内 存 屏 障 的 实 现 方 式 在 不 同 的 硬 件 平 台 上 , 内 存 屏 障 的 实 现 方 式 不 同 。 通 常 , 内 存 屏 障 依 赖 于 特 定 的 硬 件 指 令 或 者 特 定 的 C P U 特 性 。 在 J a v a 中 , 内 存 屏 障 的 实 现 j a v a 的 内 存 屏 障 通 常 所 谓 的 四 种 即 L o a d L o a d , S t o r e S t o r e , L o a d S t o r e , S t o r e L o a d 实 际 上 也 是 上 述 两 种 的 组 合 , 完 成 一 系 列 的 屏 障 和 数 据 同 步 功 能 。 L o a d L o a d 屏 障 : 对 于 这 样 的 语 句 L o a d 1 ; L o a d L o a d ; L o a d 2 , 在 L o a d 2 及 后 续 读 取 操 作 要 读 取 的 数 据 被 访 问 前 , 保 证 L o a d 1 要 读 取 的 数 据 被 读 取 完 毕 。 S t o r e S t o r e 屏 障 : 对 于 这 样 的 语 句 S t o r e 1 ; S t o r e S t o r e ; S t o r e 2 , 在 S t o r e 2 及 后 续 写 入 操 作 执 行 前 , 保 证 S t o r e 1 的 写 入 操 作 对 其 它 处 理 器 可 见 。 L o a d S t o r e 屏 障 : 对 于 这 样 的 语 句 L o a d 1 ; L o a d S t o r e ; S t o r e 2 , 在 S t o r e 2 及 后 续 写 入 操 作 被 刷 出 前 , 保 证 L o a d 1 要 读 取 的 数 据 被 读 取 完 毕 。 S t o r e L o a d 屏 障 : 对 于 这 样 的 语 句 S t o r e 1 ; S t o r e L o a d ; L o a d 2 , 在 L o a d 2 及 后 续 所 有 读 取 操 作 执 行 前 , 保 证 S t o r e 1 的 写 入 对 所 有 处 理 器 可 见 。 它 的 开 销 是 四 种 屏 障 中 最 大 的 。 在 大 多 数 处 理 器 的 实 现 中 , 这 个 屏 障 是 个 万 能 屏 障 , 兼 具 其 它 三 种 内 存 屏 障 的 功 能 v o l a t i l e 的 内 存 屏 障 策 略 非 常 严 格 保 守 , 非 常 悲 观 且 毫 无 安 全 感 的 心 态 : 在 每 个 v o l a t i l e 写 操 作 前 插 入 S t o r e S t o r e 屏 障 , 在 写 操 作 后 插 入 S t o r e L o a d 屏 障 ; 在 每 个 v o l a t i l e 读 操 作 前 插 入 L o a d L o a d 屏 障 , 在 读 操 作 后 插 入 L o a d S t o r e 屏 障 ; 由 于 内 存 屏 障 的 作 用 , 避 免 了 v o l a t i l e 变 量 和 其 它 指 令 重 排 序 、 线 程 之 间 实 现 了 通 信 , 使 得 v o l a t i l e 表 现 出 了 锁 的 特 性 。 示 例 假 设 我 们 有 两 个 线 程 , 线 程 A 和 线 程 B 。 线 程 A 先 写 入 数 据 , 然 后 通 知 线 程 B 读 取 数 据 。 为 了 确 保 线 程 B 能 够 及 时 看 到 线 程 A 的 写 入 数 据 , 我 们 需 要 确 保 操 作 的 顺 序 性 。 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 c l a s s S h a r e d R e s o u r c e p u b l i c v o i d r e a d e r ( ) / / 读 取 数 据 S y s t e m . o u t . p r i n t l n ( F l a g i s s e t t o t r u e ! ) ; } } 在 上 面 的 代 码 中 : f l a g 被 声 明 为 v o l a t i l e , 这 会 确 保 当 线 程 A 更 新 f l a g 的 值 时 , 线 程 B 能 立 即 看 到 这 个 值 的 变 化 , 避 免 了 线 程 B 因 为 缓 存 问 题 一 直 读 取 不 到 最 新 的 f l a g 值 。 v o l a t i l e 在 底 层 插 入 了 相 应 的 内 存 屏 障 , 确 保 了 对 f l a g 的 操 作 顺 序 和 内 存 可 见 性 。 总 结 内 存 屏 障 是 并 发 编 程 中 确 保 多 线 程 之 间 内 存 可 见 性 和 操 作 顺 序 性 的 重 要 机 制 。 它 通 过 强 制 限 制 C P U 和 编 译 器 的 指 令 重 排 , 确 保 线 程 在 访 问 共 享 数 据 时 , 操 作 的 顺 序 是 符 合 预 期 的 。 内 存 屏 障 的 种 类 : 包 括 S t o r e B a r r i e r ( 写 屏 障 ) 、 L o a d B a r r i e r ( 读 屏 障 ) J a v a 中 的 内 存 屏 障 : 通 过 v o l a t i l e 关 键 字 、 A t o m i c 类 等 方 式 来 确 保 多 线 程 环 境 中 的 可 见 性 和 顺 序 性 , 底 层 依 赖 于 内 存 屏 障 。 通 过 理 解 内 存 屏 障 的 原 理 , 我 们 可 以 更 好 地 设 计 高 效 、 线 程 安 全 的 并 发 程 序 。 j a v a j a v a 展 开 全 文 > > s p r i n g : 声 明 式 事 务 源 码 2 0 2 1 1 1 0 7 本 文 主 要 介 绍 s p r i n g 事 务 ( J D B C 单 数 据 库 事 务 管 理 ) 的 核 心 源 码 实 现 1 、 核 心 类 介 绍 我 们 可 以 先 看 一 下 核 心 类 图 。 P l a t f o r m T r a n s a c t i o n M a n a g e r 底 层 接 口 , 定 义 事 务 方 法 1 2 3 4 5 p u b l i c i n t e r f a c e P l a t f o r m T r a n s a c t i o n M a n a g e r e x t e n d s T r a n s a c t i o n M a n a g e r A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r 抽 象 类 , 实 现 P l a t f o r m T r a n s a c t i o n M a n a g e r 接 口 , 并 定 义 了 一 些 抽 象 方 法 比 如 d o C o m m i t 、 d o R o l l b a c k 留 给 子 类 实 现 ( 这 里 使 用 了 设 计 模 式 中 的 模 板 模 式 ) 。 D a t a S o u r c e T r a n s a c t i o n m a n a g e r J D B C 单 数 据 库 事 务 管 理 器 , 基 于 C o n n e c t i o n 实 现 J t a T r a n s a c t i o n M a n a g e r 分 布 式 事 务 管 理 器 ( 本 文 不 展 开 介 绍 ) K a f k a T r a n s a c t i o n M a n a g e r K a f k a 事 务 管 理 器 ( 本 文 不 展 开 介 绍 ) 2 、 核 心 方 法 实 现 2 . 1 、 g e t T r a n s a c t i o n 获 取 事 务 A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r . g e t T r a n s a c t i o n 实 现 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 @ O v e r r i d e p u b l i c f i n a l T r a n s a c t i o n S t a t u s g e t T r a n s a c t i o n ( @ N u l l a b l e T r a n s a c t i o n D e f i n i t i o n d e f i n i t i o n ) t h r o w s T r a n s a c t i o n E x c e p t i o n / / C h e c k d e f i n i t i o n s e t t i n g s f o r n e w t r a n s a c t i o n . i f ( d e f . g e t T i m e o u t ( ) t h r o w n e w I n v a l i d T i m e o u t E x c e p t i o n ( I n v a l i d t r a n s a c t i o n t i m e o u t , d e f . g e t T i m e o u t ( ) ) ; } / / N o e x i s t i n g t r a n s a c t i o n f o u n d c h e c k p r o p a g a t i o n b e h a v i o r t o f i n d o u t h o w t o p r o c e e d . / / 传 播 类 型 为 M A N D A T O R Y ( 强 制 性 的 ) , 如 果 当 前 无 事 务 则 抛 出 异 常 i f ( d e f . g e t P r o p a g a t i o n B e h a v i o r ( ) = = T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ M A N D A T O R Y ) / / 传 播 类 型 为 R E Q U I R E D 、 R E Q U I R E S _ N E W 、 N E S T E D 则 新 开 启 一 个 事 务 e l s e i f ( d e f . g e t P r o p a g a t i o n B e h a v i o r ( ) = = T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ R E Q U I R E D | | d e f . g e t P r o p a g a t i o n B e h a v i o r ( ) = = T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ R E Q U I R E S _ N E W | | d e f . g e t P r o p a g a t i o n B e h a v i o r ( ) = = T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ N E S T E D ) t r y c a t c h ( R u n t i m e E x c e p t i o n | E r r o r e x ) } / / 传 播 类 型 为 S U P P O R T S 、 N O T _ S U P P O R T E D 、 N E V E R e l s e b o o l e a n n e w S y n c h r o n i z a t i o n = ( g e t T r a n s a c t i o n S y n c h r o n i z a t i o n ( ) = = S Y N C H R O N I Z A T I O N _ A L W A Y S ) ; r e t u r n p r e p a r e T r a n s a c t i o n S t a t u s ( d e f , n u l l , t r u e , n e w S y n c h r o n i z a t i o n , d e b u g E n a b l e d , n u l l ) ; } } A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r . h a n d l e E x i s t i n g T r a n s a c t i o n 实 现 该 方 法 用 于 处 理 当 前 已 存 在 事 务 的 情 况 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 p r i v a t e T r a n s a c t i o n S t a t u s h a n d l e E x i s t i n g T r a n s a c t i o n ( T r a n s a c t i o n D e f i n i t i o n d e f i n i t i o n , O b j e c t t r a n s a c t i o n , b o o l e a n d e b u g E n a b l e d ) t h r o w s T r a n s a c t i o n E x c e p t i o n / / 事 务 传 播 类 型 为 N O T _ S U P P O R T E D , 挂 起 当 前 事 务 i f ( d e f i n i t i o n . g e t P r o p a g a t i o n B e h a v i o r ( ) = = T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ N O T _ S U P P O R T E D ) / / 挂 起 当 前 事 务 O b j e c t s u s p e n d e d R e s o u r c e s = s u s p e n d ( t r a n s a c t i o n ) ; b o o l e a n n e w S y n c h r o n i z a t i o n = ( g e t T r a n s a c t i o n S y n c h r o n i z a t i o n ( ) = = S Y N C H R O N I Z A T I O N _ A L W A Y S ) ; / / 创 建 空 事 务 r e t u r n p r e p a r e T r a n s a c t i o n S t a t u s ( d e f i n i t i o n , n u l l , f a l s e , n e w S y n c h r o n i z a t i o n , d e b u g E n a b l e d , s u s p e n d e d R e s o u r c e s ) ; } / / 事 务 传 播 类 型 为 R E Q U I R E S _ N E W , 挂 起 当 前 事 务 , 开 启 新 事 物 i f ( d e f i n i t i o n . g e t P r o p a g a t i o n B e h a v i o r ( ) = = T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ R E Q U I R E S _ N E W ) S u s p e n d e d R e s o u r c e s H o l d e r s u s p e n d e d R e s o u r c e s = s u s p e n d ( t r a n s a c t i o n ) ; t r y c a t c h ( R u n t i m e E x c e p t i o n | E r r o r b e g i n E x ) } / / 事 务 传 播 类 型 为 N E S T E D i f ( d e f i n i t i o n . g e t P r o p a g a t i o n B e h a v i o r ( ) = = T r a n s a c t i o n D e f i n i t i o n . P R O P A G A T I O N _ N E S T E D ) i f ( d e b u g E n a b l e d ) i f ( u s e S a v e p o i n t F o r N e s t e d T r a n s a c t i o n ( ) ) e l s e } A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r . s u s p e n d 事 务 挂 起 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 p r o t e c t e d f i n a l S u s p e n d e d R e s o u r c e s H o l d e r s u s p e n d ( @ N u l l a b l e O b j e c t t r a n s a c t i o n ) t h r o w s T r a n s a c t i o n E x c e p t i o n S t r i n g n a m e = T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . g e t C u r r e n t T r a n s a c t i o n N a m e ( ) ; / / 清 空 当 前 事 务 名 称 T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . s e t C u r r e n t T r a n s a c t i o n N a m e ( n u l l ) ; b o o l e a n r e a d O n l y = T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . i s C u r r e n t T r a n s a c t i o n R e a d O n l y ( ) ; / / r e a d O n l y 置 为 f a l s e T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . s e t C u r r e n t T r a n s a c t i o n R e a d O n l y ( f a l s e ) ; I n t e g e r i s o l a t i o n L e v e l = T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . g e t C u r r e n t T r a n s a c t i o n I s o l a t i o n L e v e l ( ) ; / / 事 务 隔 离 级 别 设 置 为 n u l l T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . s e t C u r r e n t T r a n s a c t i o n I s o l a t i o n L e v e l ( n u l l ) ; b o o l e a n w a s A c t i v e = T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . i s A c t u a l T r a n s a c t i o n A c t i v e ( ) ; / / 事 务 实 际 活 跃 状 态 设 置 为 f a l s e T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r . s e t A c t u a l T r a n s a c t i o n A c t i v e ( f a l s e ) ; r e t u r n n e w S u s p e n d e d R e s o u r c e s H o l d e r ( s u s p e n d e d R e s o u r c e s , s u s p e n d e d S y n c h r o n i z a t i o n s , n a m e , r e a d O n l y , i s o l a t i o n L e v e l , w a s A c t i v e ) ; } c a t c h ( R u n t i m e E x c e p t i o n | E r r o r e x ) } e l s e i f ( t r a n s a c t i o n ! = n u l l ) e l s e } 其 中 d o S u s p e n d 会 执 行 当 前 事 务 的 挂 起 操 作 , A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r 抽 象 类 d o S u s p e n d ( ) 会 直 接 抛 出 异 常 , 依 赖 于 具 体 事 务 执 行 器 的 实 现 , D a t a S o u r c e T r a n s a c t i o n M a n a g e r 实 现 如 下 : 1 2 3 4 5 6 7 p r o t e c t e d O b j e c t d o S u s p e n d ( O b j e c t t r a n s a c t i o n ) 其 中 核 心 操 作 包 含 两 步 1 、 当 前 事 务 清 空 C o n n e c t i o n H o l d e r 2 、 当 前 线 程 解 绑 d a t a s o u r c e ( T h r e a d L o c a l 中 移 除 r e s o u r c e s 对 应 的 k e y ) T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r 事 务 同 步 管 理 器 , 该 类 维 护 了 多 个 线 程 本 地 变 量 T h r e a d L o c a l , 如 下 所 示 : 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 p u b l i c a b s t r a c t c l a s s T r a n s a c t i o n S y n c h r o n i z a t i o n M a n a g e r D a t a S o u r c e T r a n s a c t i o n M a n a g e r . d o B e g i n 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 p r o t e c t e d v o i d d o B e g i n ( O b j e c t t r a n s a c t i o n , T r a n s a c t i o n D e f i n i t i o n d e f i n i t i o n ) / / 设 置 C o n n e c t i o n H o l d e r t x O b j e c t . s e t C o n n e c t i o n H o l d e r ( n e w C o n n e c t i o n H o l d e r ( n e w C o n ) , t r u e ) ; } / / 设 置 新 的 C o n n e c t i o n H o l d e r 为 事 务 同 步 中 t x O b j e c t . g e t C o n n e c t i o n H o l d e r ( ) . s e t S y n c h r o n i z e d W i t h T r a n s a c t i o n ( t r u e ) ; c o n = t x O b j e c t . g e t C o n n e c t i o n H o l d e r ( ) . g e t C o n n e c t i o n ( ) ; I n t e g e r p r e v i o u s I s o l a t i o n L e v e l = D a t a S o u r c e U t i l s . p r e p a r e C o n n e c t i o n F o r T r a n s a c t i o n ( c o n , d e f i n i t i o n ) ; / / 设 置 事 务 隔 离 级 别 、 r e a d O n l y t x O b j e c t . s e t P r e v i o u s I s o l a t i o n L e v e l ( p r e v i o u s I s o l a t i o n L e v e l ) ; t x O b j e c t . s e t R e a d O n l y ( d e f i n i t i o n . i s R e a d O n l y ( ) ) ; / / S w i t c h t o m a n u a l c o m m i t i f n e c e s s a r y . T h i s i s v e r y e x p e n s i v e i n s o m e J D B C d r i v e r s , / / s o w e d o n t w a n t t o d o i t u n n e c e s s a r i l y ( f o r e x a m p l e i f w e v e e x p l i c i t l y / / c o n f i g u r e d t h e c o n n e c t i o n p o o l t o s e t i t a l r e a d y ) . i f ( c o n . g e t A u t o C o m m i t ( ) ) / / 如 果 是 自 动 提 交 切 换 到 手 动 提 交 c o n . s e t A u t o C o m m i t ( f a l s e ) ; } / / 如 果 只 读 , 执 行 s q l 设 置 事 务 为 只 读 p r e p a r e T r a n s a c t i o n a l C o n n e c t i o n ( c o n , d e f i n i t i o n ) ; / / 设 置 事 务 a c t i v e 状 态 t x O b j e c t . g e t C o n n e c t i o n H o l d e r ( ) . s e t T r a n s a c t i o n A c t i v e ( t r u e ) ; / / 设 置 超 时 时 间 i n t t i m e o u t = d e t e r m i n e T i m e o u t ( d e f i n i t i o n ) ; i f ( t i m e o u t ! = T r a n s a c t i o n D e f i n i t i o n . T I M E O U T _ D E F A U L T ) / / B i n d t h e c o n n e c t i o n h o l d e r t o t h e t h r e a d . / / 绑 定 C o n n e c t i o n H o l d e r 到 当 前 线 程 ( t h r e a d 的 T h r e a d L o c a l M a p ) i f ( t x O b j e c t . i s N e w C o n n e c t i o n H o l d e r ( ) ) } c a t c h ( T h r o w a b l e e x ) t h r o w n e w C a n n o t C r e a t e T r a n s a c t i o n E x c e p t i o n ( C o u l d n o t o p e n J D B C C o n n e c t i o n f o r t r a n s a c t i o n , e x ) ; } } 该 方 法 的 核 心 操 作 是 : 1 、 获 取 新 的 数 据 库 连 接 对 象 , 设 置 C o n n e c t i o n H o l d e r 2 、 在 当 前 线 程 的 T h r e a d L o c a l 变 量 r e s o u r c e s 中 设 置 k e y v a l u e ( k e y = D a t a S o u r c e 对 象 , v a l u e = C o n n e c t i o n H o l d e r ) 2 . 2 、 c o m m i t 提 交 事 务 A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r . c o m m i t 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 p u b l i c f i n a l v o i d c o m m i t ( T r a n s a c t i o n S t a t u s s t a t u s ) t h r o w s T r a n s a c t i o n E x c e p t i o n D e f a u l t T r a n s a c t i o n S t a t u s d e f S t a t u s = ( D e f a u l t T r a n s a c t i o n S t a t u s ) s t a t u s ; / / 事 务 标 记 为 回 滚 i f ( d e f S t a t u s . i s L o c a l R o l l b a c k O n l y ( ) ) / / 执 行 回 滚 p r o c e s s R o l l b a c k ( d e f S t a t u s , f a l s e ) ; r e t u r n ; } / / 不 需 要 全 局 回 滚 时 提 交 r e t u r n ; } / / 执 行 事 务 提 交 p r o c e s s C o m m i t ( d e f S t a t u s ) ; } A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r . p r o c e s s C o m m i t 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 6 7 6 8 6 9 7 0 7 1 7 2 7 3 7 4 7 5 7 6 7 7 7 8 7 9 8 0 8 1 p r i v a t e v o i d p r o c e s s C o m m i t ( D e f a u l t T r a n s a c t i o n S t a t u s s t a t u s ) t h r o w s T r a n s a c t i o n E x c e p t i o n u n e x p e c t e d R o l l b a c k = s t a t u s . i s G l o b a l R o l l b a c k O n l y ( ) ; / / 释 放 保 存 点 s t a t u s . r e l e a s e H e l d S a v e p o i n t ( ) ; } / / 新 事 务 e l s e i f ( s t a t u s . i s N e w T r a n s a c t i o n ( ) ) u n e x p e c t e d R o l l b a c k = s t a t u s . i s G l o b a l R o l l b a c k O n l y ( ) ; / / 执 行 提 交 d o C o m m i t ( s t a t u s ) ; } / / 全 局 回 滚 失 败 e l s e i f ( i s F a i l E a r l y O n G l o b a l R o l l b a c k O n l y ( ) ) / / T h r o w U n e x p e c t e d R o l l b a c k E x c e p t i o n i f w e h a v e a g l o b a l r o l l b a c k o n l y / / m a r k e r b u t s t i l l d i d n t g e t a c o r r e s p o n d i n g e x c e p t i o n f r o m c o m m i t . i f ( u n e x p e c t e d R o l l b a c k ) } c a t c h ( U n e x p e c t e d R o l l b a c k E x c e p t i o n e x ) c a t c h ( T r a n s a c t i o n E x c e p t i o n e x ) e l s e t h r o w e x ; } c a t c h ( R u n t i m e E x c e p t i o n | E r r o r e x ) d o R o l l b a c k O n C o m m i t E x c e p t i o n ( s t a t u s , e x ) ; t h r o w e x ; } / / T r i g g e r a f t e r C o m m i t c a l l b a c k s , w i t h a n e x c e p t i o n t h r o w n t h e r e / / p r o p a g a t e d t o c a l l e r s b u t t h e t r a n s a c t i o n s t i l l c o n s i d e r e d a s c o m m i t t e d . t r y f i n a l l y } f i n a l l y } 2 . 3 、 r o l l b a c k 回 滚 事 务 A b s t r a c t P l a t f o r m T r a n s a c t i o n M a n a g e r . p r o c e s s R o l l b a c k 1 2 3 4 5 6 7 8 9 1 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 9 2 0 2 1 2 2 2 3 2 4 2 5 2 6 2 7 2 8 2 9 3 0 3 1 3 2 3 3 3 4 3 5 3 6 3 7 3 8 3 9 4 0 4 1 4 2 4 3 4 4 4 5 4 6 4 7 4 8 4 9 5 0 5 1 5 2 5 3 5 4 5 5 5 6 5 7 5 8 5 9 6 0 6 1 6 2 6 3 6 4 6 5 6 6 p r i v a t e v o i d p r o c e s s R o l l b a c k ( D e f a u l t T r a n s a c t i o n S t a t u s s t a t u s , b o o l e a n u n e x p e c t e d ) s t a t u s . r o l l b a c k T o H e l d S a v e p o i n t ( ) ; } e l s e i f ( s t a t u s . i s N e w T r a n s a c t i o n ( ) ) / / 执 行 回 滚 d o R o l l b a c k ( s t a t u s ) ; } e l s e d o S e t R o l l b a c k O n l y ( s t a t u s ) ; } e l s e } } e l s e / / U n e x p e c t e d r o l l b a c k o n l y m a t t e r s h e r e i f w e r e a s k e d t o f a i l e a r l y i f ( ! i s F a i l E a r l y O n G l o b a l R o l l b a c k O n l y ( ) ) } } c a t c h ( R u n t i m e E x c e p t i o n | E r r o r e x ) / / 遍 历 事 务 同 步 信 息 执 行 i n v o k e A f t e r C o m p l e t i o n t r i g g e r A f t e r C o m p l e t i o n ( s t a t u s , T r a n s a c t i o n S y n c h r o n i z a t i o n . S T A T U S _ R O L L E D _ B A C K ) ; / / R a i s e U n e x p e c t e d R o l l b a c k E x c e p t i o n i f w e h a d a g l o b a l r o l l b a c k o n l y m a r k e r i f ( u n e x p e c t e d R o l l b a c k ) } f i n a l l y } s p r i n g s p r i n g 展 开 全 文 > > J V M : G 1 G C 流 程 2 0 2 1 1 0 0 4 1 、 简 介 G 1 全 称 G a r b a g e F i r s t , 是 垃 圾 收 集 器 发 展 历 史 上 里 程 碑 式 的 成 果 , 它 开 创 了 收 集 器 面 向 局 部 收 集 的 设 计 思 路 和 基 于 R e g i o n 的 内 存 布 局 形 式 。 作 为 C M S 收 集 器 的 替 代 者 , 设 计 者 希 望 做 出 一 款 支 持 ” 停 顿 预 测 模 型 ” ( P a u s e P r e d i c t i o i n M o d e l ) 的 收 集 器 。 在 G 1 收 集 器 出 现 之 前 , 包 括 C M S 在 内 , 垃 圾 收 集 的 目 标 要 么 是 整 个 新 生 代 ( M i n o r G C ) , 要 么 就 是 整 个 老 年 代 ( M a j o r G C ) , 要 么 就 是 整 个 J a v a 堆 ( F u l l G C ) 。 而 G 1 跳 出 了 这 个 樊 笼 , 它 可 以 面 向 堆 内 存 任 何 部 分 来 组 成 回 收 集 ( C o l l e c t i o n S e t ) 进 行 回 收 , 衡 量 标 准 不 再 是 它 属 于 哪 个 分 代 , 而 是 哪 块 内 存 中 存 发 的 垃 圾 数 量 最 多 , 回 收 收 益 最 大 , 这 就 是 G 1 收 集 器 的 M i x e d G C 模 式 。 2 、 G 1 堆 内 存 布 局 G 1 不 再 坚 持 固 定 大 小 以 及 固 定 数 量 的 分 代 区 域 划 分 , 而 是 把 连 续 的 j a v a 堆 划 分 为 多 个 大 小 相 等 的 独 立 区 域 ( R e g i o n ) , 每 一 个 R e g i o n 都 可 以 根 据 需 要 , 扮 演 新 生 代 的 E d e n 空 间 、 S u r v i v o r 空 间 或 者 老 年 代 空 间 。 收 集 器 能 够 对 扮 演 不 同 角 色 的 R e g i o n 采 用 不 同 的 策 略 去 处 理 , 这 样 无 论 是 新 创 建 的 对 象 还 是 已 经 存 活 了 一 段 时 间 、 熬 过 多 次 收 集 的 旧 对 象 都 能 获 取 很 好 的 收 集 效 果 。 上 图 中 的 H 区 ( H u m o n g o u s ) 专 门 用 来 存 储 大 对 象 。 G 1 认 为 只 要 大 小 超 过 一 个 R e g i o n 容 量 的 一 半 就 可 判 定 为 大 对 象 。 每 个 R e g i o n 的 大 小 可 以 通 过 参 数 X X : G 1 H e a p R e g i o n S i z e 设 定 , 取 值 范 围 为 1 M B ~ 3 2 M B , 且 应 为 2 的 N 次 幂 。 而 对 于 超 过 了 整 个 R e g i o n 容 量 的 超 级 大 对 象 , 将 会 被 存 放 在 N 个 连 续 的 H 区 中 , G 1 的 大 多 数 行 为 把 H 区 作 为 老 年 代 的 一 部 分 来 看 待 。 “ G 1 收 集 器 之 所 以 能 建 立 可 预 测 的 停 顿 时 间 模 型 , 是 因 为 它 可 以 有 计 划 地 避 免 在 整 个 J a v a 堆 中 进 行 全 区 域 的 垃 圾 收 集 。 G 1 跟 踪 各 个 R e g i o n 里 面 的 垃 圾 堆 积 的 价 值 大 小 ( 回 收 所 获 得 的 空 间 大 小 以 及 回 收 所 需 时 间 的 经 验 值 ) , 在 后 台 维 护 一 个 优 先 列 表 , 每 次 根 据 允 许 的 收 集 停 顿 时 间 ( 使 用 参 数 X X : M a x G C P a u s e M i l l i s 指 定 , 默 认 为 2 0 0 m s ) , 优 先 回 收 价 值 最 大 的 R e g i o n ( 这 也 就 是 G a r b a g e F i r s t 名 称 的 来 由 ) 。 这 种 使 用 R e g i o n 划 分 内 存 空 间 以 及 有 优 先 级 的 区 域 回 收 方 式 , 保 证 了 G 1 收 集 器 在 有 限 的 时 间 内 可 以 获 取 尽 可 能 高 的 收 集 效 率 。 ” 3 、 实 现 难 点 3 . 1 、 如 何 解 决 跨 代 引 用 G 1 收 集 器 同 样 使 用 记 忆 集 来 解 决 跨 代 引 用 问 题 , 但 在 G 1 收 集 器 上 记 忆 集 的 应 用 其 实 要 复 杂 的 多 , 它 的 每 个 R e g i o n 都 需 要 维 护 自 己 的 记 忆 集 。 因 此 G 1 收 集 器 比 其 他 的 传 统 垃 圾 收 集 器 有 着 更 高 的 内 存 占 用 负 担 。 根 据 经 验 , G 1 至 少 要 耗 费 J a v a 堆 容 量 的 1 0 % 至 2 0 % 的 额 外 内 存 来 维 持 收 集 器 工 作 。 3 . 2 、 如 何 并 发 标 记 G 1 使 用 原 始 快 照 ( S A T B ) 方 式 解 决 三 色 标 记 法 可 能 出 现 的 错 标 问 题 G 1 为 每 一 个 R e g i o n 设 计 了 两 个 名 为 T A M S ( T o p a t M a r k S t a r t ) 的 指 针 , 把 R e g i o n 中 的 一 部 分 空 间 划 分 出 来 用 于 并 发 回 收 过 程 的 新 对 象 分 配 , 并 发 回 收 时 新 分 配 的 对 象 地 址 都 必 须 要 在 这 两 个 指 针 位 置 之 上 。 G 1 收 集 器 默 认 在 这 个 地 址 以 上 的 对 象 是 被 隐 式 标 记 过 的 , 即 默 认 它 们 是 存 活 的 , 不 纳 入 回 收 范 围 。 3 . 3 、 如 何 建 立 可 靠 的 停 顿 预 测 模 型 G 1 收 集 器 的 停 顿 预 测 模 型 是 以 衰 减 均 值 ( D e c a y i n g A v e r a g e ) 为 理 论 基 础 来 实 现 的 。 在 垃 圾 收 集 过 程 中 , G 1 收 集 器 会 记 录 每 个 R e g i o n 的 回 收 耗 时 、 每 个 R e g i o n 记 忆 集 里 的 脏 卡 数 量 等 各 个 可 测 量 的 步 骤 花 费 的 成 本 , 并 分 析 得 出 平 均 值 、 标 准 偏 差 、 置 信 度 等 统 计 信 息 。 4 、 收 集 过 程 G 1 收 集 器 的 运 作 过 程 大 致 分 为 以 下 四 个 步 骤 : 4 . 1 、 初 始 标 记 标 记 G C R o o t s 能 直 接 关 联 到 的 对 象 修 改 T A M S 的 值 , 让 下 一 阶 段 用 户 线 程 并 发 运 行 时 , 能 正 确 地 在 可 用 的 R e g i o n 中 分 配 新 内 存 。 S T O P T H E W O R L D 4 . 2 、 并 发 标 记 从 G C R o o t 开 始 对 堆 中 对 象 进 行 可 达 性 分 析 , 耗 时 较 长 , 但 可 与 用 户 线 程 并 发 执 行 4 . 3 、 最 终 标 记 处 理 并 发 标 记 期 间 发 生 变 动 的 对 象 引 用 ( 原 始 快 照 法 ) S T O P T H E W O R L D 4 . 4 、 筛 选 回 收 更 新 R e g i o n 的 统 计 数 据 , 对 各 个 R e g i o n 的 回 收 价 值 和 成 本 进 行 排 序 , 根 据 用 户 期 望 的 停 顿 时 间 制 定 回 收 计 划 。 可 自 由 选 择 任 意 多 个 R e g i o n 构 成 回 收 集 , 把 要 回 收 的 那 一 部 分 R e g i o n 的 存 活 对 象 赋 值 到 空 的 R e g i o n 中 , 再 清 理 掉 整 个 旧 R e g i o n 的 全 部 空 间 。 S T O P T H E W O R L D 5 、 与 C M S 对 比 5 . 1 、 优 点 可 指 定 最 大 停 顿 时 间 分 R e g i o n 的 内 存 布 局 按 受 益 动 态 确 定 回 收 集 不 会 产 生 内 存 碎 片 5 . 2 、 缺 点 内 存 占 用 G 1 的 卡 表 实 现 更 为 复 杂 , 而 且 堆 中 每 个 R e g i o n , 无 论 扮 演 的 是 新 生 代 还 是 老 年 代 角 色 , 都 必 须 有 一 份 卡 表 , 这 导 致 G 1 的 记 忆 集 ( 和 其 它 内 存 消 耗 ) 可 能 会 占 用 整 个 堆 内 存 的 2 0 % 或 者 更 多 。 相 比 而 言 , C M S 的 卡 表 就 相 当 简 单 , 只 有 唯 一 一 份 , 而 且 只 用 处 理 老 年 代 到 新 生 代 的 引 用 , 反 过 来 则 不 需 要 , 由 于 新 生 代 的 对 象 具 有 朝 生 夕 死 的 不 稳 定 性 , 引 用 变 化 频 繁 , 能 省 下 这 个 区 域 的 维 护 开 销 是 很 划 算 的 ( 代 价 是 当 C M S 发 生 O l d G C 时 , 要 把 整 个 新 生 代 作 为 G C R o o t s 来 进 行 扫 描 ) 。 C P U 负 载 G 1 对 写 屏 障 的 复 杂 操 作 要 比 C M S 消 耗 更 多 的 运 算 资 源 。 所 以 C M S 的 写 屏 障 实 现 是 直 接 的 同 步 操 作 , 而 G 1 就 不 得 不 将 其 实 现 为 类 似 于 消 息 队 列 的 结 构 , 把 写 前 屏 障 和 写 后 屏 障 要 做 的 事 情 都 放 到 队 列 里 , 然 后 再 异 步 处 理 。 目 前 在 小 内 存 应 用 上 C M S 的 表 现 大 概 率 会 优 于 G 1 , 而 在 大 内 存 应 用 上 G 1 则 大 多 能 发 挥 其 优 势 , 这 个 优 劣 势 的 j a v a 堆 平 衡 点 通 常 在 6 G B 至 8 G B 之 间 。 6 、 参 考 1 、 《 深 入 理 解 J A V A 虚 拟 机 》 J V M J V M 展 开 全 文 > > J V M : C M S G C 流 程 2 0 2 1 1 0 0 2 C M S 全 名 叫 做 C o n c u r r e n t M a r k S w e e p , 是 一 种 以 获 取 最 短 回 收 停 顿 时 间 为 目 标 的 收 集 器 。 在 G 1 之 前 , 大 部 分 互 联 网 网 站 或 者 基 于 浏 览 器 的 B / S 系 统 的 j a v a 服 务 器 会 采 用 C M S 作 为 老 年 代 垃 圾 收 集 器 。 C M S 垃 圾 收 集 基 于 标 记 清 除 算 法 实 现 , 整 个 过 程 分 为 四 个 步 骤 , 包 括 : 1 ) 初 始 标 记 标 记 G C R o o t s 能 直 接 关 联 到 的 对 象 需 要 S T O P T H E W O R L D 2 ) 并 发 标 记 从 G C R O O T S 的 直 接 关 联 对 象 开 始 遍 历 整 个 对 象 图 3 ) 重 新 标 记 修 正 并 发 标 记 期 间 因 用 户 程 序 继 续 运 作 而 导 致 产 生 变 动 的 那 部 分 对 象 的 标 记 记 录 ( 采 用 增 量 更 新 方 式 解 决 三 色 标 记 法 可 能 产 生 的 错 标 问 题 ) 需 要 S T O P T H E W O R L D 4 ) 并 发 清 除 清 理 删 除 标 记 阶 段 判 断 已 经 死 亡 的 对 象 , 由 于 不 需 要 移 动 存 活 对 象 , 可 以 和 用 户 线 程 同 时 发 起 C M S 的 几 个 明 显 的 缺 点 : 1 、 触 发 ” 并 发 失 败 ” ( C o n c u r r e n t M o d e F a i l u r e ) 的 风 险 基 于 两 个 原 因 , C M S 在 运 行 时 需 要 预 留 一 部 分 的 空 间 C M S 的 并 发 标 记 和 并 发 清 理 阶 段 , 用 户 线 程 还 是 运 行 的 , 就 会 有 新 的 垃 圾 产 生 ( 浮 动 垃 圾 ) 垃 圾 收 集 阶 段 用 户 线 程 还 要 持 续 运 行 , 就 需 要 预 留 足 够 空 间 提 供 给 用 户 线 程 使 用 在 J D K 5 中 的 默 认 设 置 下 , C M S 收 集 器 当 老 年 代 使 用 了 6 8 % 的 空 间 后 就 会 被 激 活 , 但 这 个 配 置 偏 保 守 , 如 果 在 实 际 应 用 中 老 年 代 增 长 并 不 是 很 快 , 可 适 当 调 高 相 应 参 数 。 在 J D K 6 时 , 这 个 阈 值 默 认 提 升 至 9 2 % 。 但 是 这 会 带 来 一 个 风 险 : 如 果 C M S 运 行 期 间 预 留 的 内 存 无 法 满 足 程 序 分 配 新 对 象 的 需 要 , 就 会 出 现 一 次 “ 并 发 失 败 ” , 这 时 候 虚 拟 机 会 冻 结 用 户 线 程 的 执 行 , 临 时 启 用 S e r i a l O l d 收 集 器 来 重 新 进 行 老 年 代 的 垃 圾 收 集 , 但 是 这 样 停 顿 时 间 就 变 得 更 长 。 所 以 参 数 X X : C M S I n i t i a t i n g O c c u p a n c y F r a c t i o n 在 生 产 环 境 中 要 根 据 实 际 应 用 情 况 来 权 衡 设 值 2 、 内 存 碎 片 C M S 是 一 款 基 于 ” 标 记 清 除 ” 算 法 实 现 的 收 集 器 , 这 意 味 着 收 集 结 束 时 会 有 大 量 的 空 间 碎 片 。 空 间 碎 片 过 多 时 , 会 给 大 对 象 的 分 配 带 来 麻 烦 。 会 出 现 老 年 代 还 有 很 多 剩 余 空 间 , 但 就 是 无 法 找 到 足 够 大 的 连 续 空 间 来 分 配 当 前 对 象 , 而 不 得 不 触 发 F u l l G C 。 为 了 解 决 这 个 问 题 , C M S 收 集 器 提 供 了 一 个 X X : + U s e C M S C o m p a c t A t F u l l C o l l e c t i o n 开 发 参 数 ( 默 认 开 启 , J D K 9 开 始 废 弃 ) , 用 于 在 C M S 收 集 器 不 得 不 进 行 F u l l G C 时 开 启 内 存 碎 片 的 合 并 整 理 过 程 。 这 样 空 间 碎 片 问 题 是 解 决 了 , 但 是 停 顿 时 间 又 会 变 长 , 因 此 C M S 还 提 供 了 一 个 参 数 X X : C M S F u l l G c s B e f o r e C o m p a c t i o n ( J D K 9 开 始 废 弃 ) , 作 用 是 C M S 在 执 行 过 若 干 次 ( 数 量 由 参 数 值 确 定 ) 不 整 理 空 间 的 F u l l G C 之 后 , 下 一 次 进 入 F u l l G C 会 先 进 行 碎 片 整 理 ( 默 认 值 为 0 , 表 示 每 次 进 入 F u l l G C 时 都 进 行 碎 片 整 理 ) ; 3 、 对 处 理 器 资 源 的 消 耗 ( C P U 资 源 比 较 少 时 需 要 关 注 ) 面 向 并 发 设 计 的 收 集 器 对 处 理 器 的 占 用 都 比 较 大 , 特 别 是 当 处 理 器 资 源 比 较 少 时 ( 不 足 四 个 ) 。 因 为 在 并 发 阶 段 , 虽 然 它 不 会 导 致 用 户 线 程 停 顿 , 但 却 因 为 占 用 了 一 部 分 处 理 器 的 计 算 能 力 而 导 致 应 用 程 序 变 慢 , 降 低 总 吞 吐 量 。 参 考 1 、 《 深 入 理 解 J A V A 虚 拟 机 》 J V M J V M 展 开 全 文 > > E S : 底 层 实 现 倒 排 索 引 2 0 2 1 0 9 2 4 倒 排 索 引 ( I n v e r t e d I n d e x ) 是 E l a s t i c s e a r c h 及 其 他 全 文 搜 索 引 擎 的 核 心 数 据 结 构 , 用 于 高 效 地 进 行 全 文 检 索 。 它 将 文 档 中 的 内 容 映 射 到 文 档 的 位 置 , 类 似 于 书 中 词 表 索 引 , 可 以 快 速 找 到 某 个 词 在 哪 些 章 节 中 出 现 过 。 倒 排 索 引 & 正 排 索 引 倒 排 : 即 词 项 = > 包 含 当 前 词 项 的 d o c _ i d 的 列 表 的 映 射 。 倒 排 索 引 的 优 势 是 可 以 快 速 查 找 包 含 某 个 词 项 的 文 档 有 哪 些 。 如 果 用 倒 排 来 确 定 哪 些 文 档 中 是 否 包 含 某 个 词 项 就 很 鸡 肋 。 正 排 : 即 d o c _ i d = > 当 前 文 档 包 含 的 所 有 词 项 的 映 射 。 正 排 索 引 的 优 势 在 于 可 以 快 速 的 查 找 某 个 文 档 里 包 含 哪 些 词 项 。 同 理 , 正 排 不 适 用 于 查 找 包 含 某 个 词 项 的 文 档 有 哪 些 。 倒 排 索 引 的 组 成 倒 排 索 引 由 以 下 两 部 分 组 成 : 词 典 ( T e r m D i c t i o n a r y ) : 存 储 所 有 在 索 引 中 出 现 的 词 。 倒 排 列 表 ( P o s t i n g L i s t ) : 对 于 每 个 词 , 记 录 该 词 在 哪 些 文 档 中 出 现 , 以 及 它 在 文 档 中 的 位 置 。 举 个 例 子 , 假 设 我 们 有 以 下 三 个 文 档 : 文 档 1 : E l a s t i c s e a r c h 是 一 个 搜 索 引 擎 文 档 2 : 搜 索 引 擎 基 于 L u c e n e 文 档 3 : E l a s t i c s e a r c h 使 用 倒 排 索 引 倒 排 索 引 生 成 的 结 果 可 能 如 下 : 词 语 文 档 I D 出 现 位 置 E l a s t i c s e a r c h 文 档 1 , 文 档 3 1 , 1 是 文 档 1 2 一 个 文 档 1 3 搜 索 文 档 1 , 文 档 2 4 , 1 引 擎 文 档 1 , 文 档 2 5 , 2 基 于 文 档 2 3 L u c e n e 文 档 2 4 使 用 文 档 3 2 倒 排 索 引 文 档 3 3 在 此 例 中 , 当 你 搜 索 “ 搜 索 引 擎 ” 时 , E l a s t i c s e a r c h 可 以 直 接 在 倒 排 索 引 中 查 找 这 两 个 词 的 倒 排 列 表 , 然 后 找 出 它 们 同 时 出 现 在 哪 些 文 档 中 , 并 返 回 文 档 1 和 文 档 2 。 倒 排 索 引 的 优 点 高 效 的 搜 索 : 倒 排 索 引 使 得 全 文 检 索 非 常 高 效 , 因 为 它 直 接 按 词 存 储 , 并 能 快 速 查 找 某 个 词 在 哪 些 文 档 中 出 现 。 支 持 布 尔 查 询 : 通 过 倒 排 索 引 , 可 以 轻 松 实 现 布 尔 查 询 , 例 如 “ 词 A A N D 词 B ” , 或 者 “ 词 A O R 词 B ” 等 。 支 持 词 频 和 位 置 : 倒 排 索 引 不 仅 记 录 词 在 哪 些 文 档 中 出 现 , 还 记 录 词 在 文 档 中 的 具 体 位 置 ( 位 置 向 量 ) , 这 对 于 短 语 匹 配 和 相 似 度 计 算 非 常 重 要 。 E l a s t i c s e a r c h 如 何 使 用 倒 排 索 引 文 档 分 词 : 当 文 档 被 索 引 时 , E l a s t i c s e a r c h 会 使 用 分 词 器 ( A n a l y z e r ) 将 文 档 的 文 本 内 容 切 分 成 单 词 ( 词 条 , T o k e n ) 。 词 条 映 射 到 文 档 : E l a s t i c s e a r c h 将 每 个 词 条 加 入 倒 排 索 引 , 并 记 录 该 词 条 在 哪 些 文 档 中 出 现 。 查 询 过 程 : 当 用 户 发 起 搜 索 请 求 时 , E l a s t i c s e a r c h 使 用 倒 排 索 引 快 速 找 到 相 关 文 档 , 并 根 据 词 频 、 位 置 等 信 息 进 行 评 分 , 返 回 最 相 关 的 结 果 。 实 际 应 用 在 大 规 模 文 本 搜 索 场 景 中 , 倒 排 索 引 是 关 键 的 技 术 基 础 , 例 如 : 全 文 搜 索 : 搜 索 引 擎 通 过 倒 排 索 引 快 速 定 位 关 键 词 所 在 的 文 档 。 日 志 分 析 : 如 E L K ( E l a s t i c s e a r c h 、 L o g s t a s h 、 K i b a n a ) 体 系 中 , E l a s t i c s e a r c h 可 以 通 过 倒 排 索 引 在 大 量 日 志 中 迅 速 定 位 关 键 字 或 模 式 。 优 化 与 挑 战 虽 然 倒 排 索 引 对 于 搜 索 很 高 效 , 但 它 在 处 理 非 常 高 频 率 的 词 ( 如 “ t h e ” ) 时 可 能 会 导 致 索 引 膨 胀 , 因 此 E l a s t i c s e a r c h 采 用 了 不 同 的 技 术 ( 如 压 缩 算 法 ) 来 优 化 索 引 的 大 小 和 访 问 速 度 。 倒 排 索 引 是 理 解 E l a s t i c s e a r c h 搜 索 效 率 的 核 心 概 念 , 在 处 理 大 规 模 数 据 的 搜 索 需 求 时 , 倒 排 索 引 结 构 能 显 著 提 升 性 能 。 E S E S 展 开 全 文 > > 高 并 发 程 序 设 计 ( 二 ) : 多 进 程 并 发 模 型 2 0 2 1 0 3 0 4 本 篇 为 高 并 发 程 序 设 计 系 列 第 二 篇 , 主 要 内 容 为 : 多 进 程 并 发 模 型 一 : 模 型 简 介 “ 进 程 是 操 作 系 统 提 供 的 最 古 老 的 也 是 最 重 要 的 抽 象 概 念 之 一 。 即 使 可 以 利 用 的 C P U 只 有 一 个 , 但 它 们 也 支 持 并 发 操 作 的 能 力 。 它 们 将 一 个 单 独 的 C P U 变 换 成 多 个 虚 拟 的 C P U 。 没 有 进 程 的 抽 象 , 现 代 计 算 将 不 复 存 在 。 ” 摘 录 来 自 : A n d r e w s T a n e n b a u m . “ 现 代 操 作 系 统 ( 原 书 第 3 版 ) ( 计 算 机 科 学 丛 书 ) 。 ” 该 系 列 上 篇 博 文 提 到 过 , 因 为 C P U 的 速 度 越 来 越 快 , 更 多 的 进 程 倾 向 为 I / O 密 集 型 。 而 对 于 I / O 密 集 型 进 程 来 说 , 如 果 只 启 动 单 个 进 程 , 则 C P U 的 大 部 分 时 间 因 为 等 待 I / O 完 成 而 白 白 浪 费 。 所 以 即 便 只 有 一 个 单 核 C P U , 通 过 启 动 多 个 进 程 来 提 供 服 务 , 可 以 更 高 效 地 利 用 C P U 的 计 算 能 力 , 并 发 处 理 多 个 任 务 。 另 外 , 如 果 是 在 一 个 多 核 环 境 , 启 动 多 个 进 程 可 以 充 分 利 用 多 核 , 进 行 并 行 运 算 。 基 于 以 上 两 个 原 因 , 多 进 程 并 发 模 型 自 然 而 来 。 m o r e > > 高 并 发 高 并 发 展 开 全 文 > > 高 并 发 程 序 设 计 ( 一 ) : 基 本 概 念 2 0 2 1 0 2 2 4 本 篇 为 高 并 发 程 序 设 计 系 列 第 一 篇 , 主 要 内 容 为 : 高 并 发 程 序 设 计 相 关 概 念 高 并 发 与 高 吞 吐 率 讨 论 一 : 基 本 概 念 1 . 并 发 与 并 行 并 发 ( c o n c u r r e n c y ) : 逻 辑 上 具 备 同 时 处 理 多 个 任 务 的 能 力 并 行 ( p a r a l l e s i m ) : 物 理 上 在 同 一 时 刻 执 行 多 个 并 发 任 务 我 们 通 常 会 说 程 序 是 并 发 设 计 的 , 也 就 是 说 它 允 许 多 个 任 务 同 时 执 行 , 但 实 际 上 并 不 一 定 真 在 同 一 时 刻 发 生 。 在 单 核 处 理 器 上 , 它 们 能 以 间 隔 方 式 切 换 执 行 。 而 并 行 则 依 赖 多 核 处 理 器 等 物 理 设 备 , 让 多 个 任 务 真 正 在 同 一 时 刻 执 行 , 它 代 表 了 当 前 程 序 运 行 状 态 。 简 单 点 说 , 并 行 是 并 发 设 计 的 理 想 执 行 模 式 。 《 G o 语 言 学 习 笔 记 》 并 发 示 例 : 多 道 程 序 设 计 中 , C P U 划 分 时 间 片 , 轮 流 执 行 每 个 请 求 任 务 , 时 间 片 到 期 后 , 换 到 下 一 个 m o r e > > 高 并 发 高 并 发 展 开 全 文 > > b i l i b i l i 注 册 中 心 D i s c o v e r y 架 构 设 计 与 源 码 分 析 2 0 2 1 0 1 1 1 什 么 是 注 册 中 心 注 册 中 心 可 以 说 是 一 个 “ 通 讯 录 ” , 它 记 录 了 服 务 和 服 务 地 址 的 映 射 关 系 。 在 服 务 启 动 时 , 服 务 会 注 册 到 这 里 , 当 服 务 需 要 调 用 其 它 服 务 时 , 就 到 这 里 找 到 服 务 的 地 址 , 进 行 调 用 。 常 见 的 注 册 中 心 及 对 比 业 界 有 许 多 成 熟 的 注 册 中 心 实 现 , 下 图 中 对 一 些 常 见 的 注 册 中 心 做 一 对 比 : Z o o K e e p e r 是 一 款 经 典 的 服 务 注 册 中 心 产 品 ( 虽 然 它 最 初 的 定 位 并 不 在 于 此 ) , 在 很 长 一 段 时 间 里 , 它 是 国 人 在 提 起 R P C 服 务 注 册 中 心 时 心 里 想 到 的 唯 一 选 择 , 这 很 大 程 度 上 与 D u b b o 在 中 国 的 普 及 程 度 有 关 。 C o n s u l 和 E u r e k a 都 出 现 于 2 0 1 4 年 , C o n s u l 在 设 计 上 把 很 多 分 布 式 服 务 治 理 上 要 用 到 的 功 能 都 包 含 在 内 , 可 以 支 持 服 务 注 册 、 健 康 检 查 、 配 置 管 理 、 S e r v i c e M e s h 等 。 而 E u r e k a 则 借 着 微 服 务 概 念 的 流 行 , 与 S p r i n g C l o u d 生 态 的 深 度 结 合 , 也 获 取 了 大 量 的 用 户 。 去 年 开 源 的 N a c o s , 则 携 带 着 阿 里 巴 巴 大 规 模 服 务 生 产 经 验 , 试 图 在 服 务 注 册 和 配 置 管 理 这 个 市 场 上 , 提 供 给 用 户 一 个 新 的 选 择 。 而 本 文 要 介 绍 的 d i s c o v e r y 是 E u r e k a 的 g o 语 言 实 现 版 本 , 由 b i l i b i l i 开 发 并 开 源 。 m o r e > > 微 服 务 源 码 分 析 展 开 全 文 > > 【 译 】 g R P C 名 称 解 析 2 0 2 0 1 2 1 0 原 文 : g R P C N a m e R e s o l u t i o n 翻 译 整 理 : 陈 进 涛 译 文 链 接 : 【 译 】 g R P C 名 称 解 析 。 转 载 请 保 留 原 文 出 处 和 译 文 译 者 和 出 处 。 概 览 g R P C 支 持 将 D N S 作 为 默 认 名 称 系 统 。 在 各 种 部 署 中 使 用 了 许 多 其 他 类 型 的 名 称 系 统 。 我 们 支 持 足 够 通 用 的 A P I , 以 支 持 各 种 名 称 系 统 和 名 称 的 相 应 语 法 。 各 种 语 言 的 g R P C 客 户 端 库 将 提 供 一 种 插 件 机 制 , 以 便 可 以 插 入 用 于 不 同 名 称 系 统 的 解 析 器 。 详 细 设 计 名 称 语 法 用 于 g R P C 通 道 构 造 的 完 全 限 定 的 自 包 含 名 称 系 统 使 用 R F C 3 9 8 6 中 定 义 的 U R I 语 法 . U R I s c h e m e 指 示 要 使 用 的 解 析 程 序 插 件 。 如 果 未 指 定 s c h e m e 前 缀 或 s c h e m e 未 知 , 则 默 认 使 用 d n s s c h e m e 。 U R I 路 径 指 示 要 解 析 的 名 称 。 大 多 数 g R P C 实 现 都 支 持 以 下 U R I s c h e m e s : m o r e > > g R P C 微 服 务 g R P C 展 开 全 文 > > u n i x 常 见 信 号 梳 理 2 0 2 0 1 2 1 0 一 : 信 号 概 念 在 计 算 机 科 学 中 , 信 号 ( 英 语 : S i g n a l s ) 是 U n i x 、 类 U n i x 以 及 其 他 P O S I X 兼 容 的 操 作 系 统 中 进 程 间 通 讯 的 一 种 有 限 制 的 方 式 。 它 是 一 种 异 步 的 通 知 机 制 , 用 来 提 醒 进 程 一 个 事 件 已 经 发 生 。 当 一 个 信 号 发 送 给 一 个 进 程 , 操 作 系 统 中 断 了 进 程 正 常 的 控 制 流 程 , 此 时 , 任 何 非 原 子 操 作 都 将 被 中 断 。 如 果 进 程 定 义 了 信 号 的 处 理 函 数 , 那 么 它 将 被 执 行 , 否 则 就 执 行 默 认 的 处 理 函 数 。 二 : 常 见 信 号 梳 理 在 l i n u x 系 统 中 执 行 k i l l l 可 以 列 出 所 有 当 前 系 统 支 持 的 信 号 列 表 : m o r e > > a p u e u n i x 编 程 u n i x 展 开 全 文 > > 1 2 3 … 5 N e x t » © 2 0 2 5 陈 进 涛 豫 I C P 备 1 3 0 1 3 0 8 6 号 1 H e x o T h e m e Y i l i a b y L i t t e n 所 有 文 章 关 于 我 t a g : 摘 录 网 站 优 化 A p a c h e a p u e u n i x 编 程 g R P C 微 服 务 c e n t o s l i n u x P H P P H P 7 J V M 高 并 发 E S l i b c u n i x s h e l l j a v a m o n g o d b m y s q l m e m c a c h e d s v n v i m m y s q l 优 化 w o r d p r e s s x m l r p c s p r i n g 缺 失 模 块 。 1 、 请 确 保 n o d e 版 本 大 于 6 . 2 2 、 在 博 客 根 目 录 ( 注 意 不 是 y i l i a 根 目 录 ) 执 行 以 下 命 令 : n p m i h e x o g e n e r a t o r j s o n c o n t e n t s a v e 3 、 在 根 目 录 _ c o n f i g . y m l 里 添 加 配 置 : j s o n C o n t e n t : m e t a : f a l s e p a g e s : f a l s e p o s t s : t i t l e : t r u e d a t e : t r u e p a t h : t r u e t e x t : f a l s e r a w : f a l s e c o n t e n t : f a l s e s l u g : f a l s e u p d a t e d : f a l s e c o m m e n t s : f a l s e l i n k : f a l s e p e r m a l i n k : f a l s e e x c e r p t : f a l s e c a t e g o r i e s : f a l s e t a g s : t r u e 很 惭 愧 只 做 了 一 点 微 小 的 工 作 谢 谢 大 家
站点概括关于www.zhizhi123.com说明:
www.zhizhi123.com由网友主动性提交被008导航整理收录的,008导航仅提供www.zhizhi123.com的基础信息并免费向大众网友展示,www.zhizhi123.com的是IP地址:- 地址:-,www.zhizhi123.com的百度权重为0、百度手机权重为0、百度收录为0条、360收录为0条、搜狗收录为0条、谷歌收录为0条、百度来访流量大约在-之间、百度手机端来访流量大约在-之间、www.zhizhi123.com的备案号是-、备案人叫-、被百度收录的关键词有0个、手机端关键词有0个、该站点迄今为止已经创建未知。
内容声明:1、本站收录的内容来源于大数据收集,版权归原网站所有!
2、本站收录的内容若侵害到您的利益,请联系我们进行删除处理!
3、本站不接受违规信息,如您发现违规内容,请联系我们进行清除处理!
4、本文地址:https://www.dx008.com/links/38912.html,复制请保留版权链接!
IECEX防爆电器,IECEX防爆灯具,ATEX防爆电器,ATEX防爆灯具,CU-TR防爆电器,CU-TR防爆灯具,华荣防爆国际认证防爆电器产品丰富
华荣防爆IECEX防爆电器、IECEX防爆灯具、ATEX防爆电器、ATEX防爆灯具、CUTR防爆电器、CUTR防爆灯具、国际认证防爆电器/国际认证防爆灯具产品系列丰富,证书齐全,质量可靠,联系电话13811240806。华荣防爆IECEX防爆灯具、ATEX防爆灯具、CU-TR防爆灯具部分产品还通过了UL/FM认证,欢迎咨询订购!近年,华荣从传统单一产品防爆技术向系统安全集成、智能化发展,目前,华荣全面研发并拥有自主知识产权的
专注于古墓丽影游戏资源分享。提供专业的探险攻略、装备升级和古墓解密,打造权威游戏平台。从劳拉的冒险到古墓丽影的传说,这里是探险家的神秘之旅。
网站描述
上海雅尚医疗是一家集高端医美服务、健康管理定制服务、全球共享医联体服务、生物技术服务、高端护肤品私人定制服务等多元化产业板块为一体,专为社会精英人士提供健康管理、美丽定制,高端品质生活方式的一站式医疗机构。
养老服务网-养老信息服务-养老机构信息-老年人服务网-养老分类信息网
养老服务网是专门为老年人提供综合性、全方位的养老服务信息平台,为老年朋友们提供有关养老机构信息、养老生活服务信息、养老产品信息等,以及养老机构发布、社会公益、养老招聘求职、养老机构商务服务等。
青岛华控电气有限公司
近日,极越汽车因资金危机而引发广泛关注,该公司由百度和吉利两大股东共同支持,但现阶段面临的困境显示出股东之间的支持力度不足,极越汽车的CEO夏一平在12月11日下午的全员会议上坦诚地承认了公司当前的资金问题,并表示将进行部门合并和项目削减,以应对财务危机,根据内部消息人士透露,极越汽车的资金危机与股东支持的缺乏直接相关,今年上半年,极...。
互联网资讯 2024-12-19 13:33:47
根据您提供的信息,我们可以看到苹果公司在其官方网站上多次出现拼写错误的情况,这反映了公司在不同市场和不同产品线上的宣传管理可能存在一定的疏漏,以下是对这一现象的详细分析,从挪威官网的错误来看,将新机错误地拼写为,16e,,这显然是一个明显的拼写错误,这种错误可能是由于翻译或排版过程中出现了失误,也可能是因为系统更新时没有及时纠正之前的...。
互联网资讯 2025-02-21 11:13:49
来宾市森林防火道路建设项目是广西壮族自治区来宾市为了提升森林火灾防控能力而启动的一项重要基础设施工程,该项目旨在通过建设专门用于森林防火的道路网络,提高应对森林火灾的能力,保护当地森林资源和生态环境,保障人民群众的生命财产安全,一、项目背景来宾市地处广西中部,属于典型的亚热带季风气候区,降水充沛,植被茂密,森林覆盖率达63.1%,由于...。
互联网资讯 2025-02-22 17:56:51
根据快科技2月25日的报道,中国汽车出口量在1月份达到了65,916辆,这一成绩使得中国首次超越了奇瑞汽车成为冠军,而奇瑞汽车与长安汽车则分别位居第二和第三位,出口量分别为56,890辆和35,944辆,从乘联会的数据来看,2025年1月中国整体销量为38.2万辆,相比上个月减少了5.8个百分点,但同比却增长了7.3%,特别值得注意的...。
互联网资讯 2025-02-26 15:06:53
2015年左右,跨境电商迎来了迅猛的增长期,千行百业纷纷借助这一平台走向国际市场,近年来,随着东南亚、美国、拉美、中东等地市场的开拓,中国出海企业的营销策略也变得更加多样化和本地化,特别是北美市场,2024年中国跨境电商B2C交易额同比增长达到了20%,显示出强劲的增长势头,同时,在拉美等新兴市场,3C产品、汽车等多个品类也取得了显著...。
互联网资讯 2025-02-26 15:17:27
真我Neo7SE正式发布,这款手机以1530元的国补价格吸引了众多关注,它不仅是一款性价比极高的智能手机,还以其独特的设计理念和卓越的性能表现成为2000元以内市场的佼佼者,真我Neo7SE搭载了天玑8400,MAX处理器,该处理器拥有较高的主频,可达3.25GHz,,并且多核性能相比上一代芯片提升了41%,功耗降低了42%,这种高效...。
互联网资讯 2025-02-26 15:20:28