SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('options', 'languages', 'contentTypes', 'codeEventListeners', 'deferredRun', 'simpleCache', 'addOns', 'defaultStyleProperties', 'routeFiltersIn', 'routeFiltersOut', 'routesPublic', 'nodeTypes', 'bannedIps', 'discouragedIps', 'styles', 'displayStyles', 'userBanners', 'smilies', 'bbCode', 'threadPrefixes', 'userTitleLadder', 'reportCounts', 'moderationCounts', 'userModerationCounts', 'notices', 'userFieldsInfo')
Run Time: 0.000483
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 26 | Using where |
SELECT data_key, data_value
FROM xf_data_registry
WHERE data_key IN ('brListenerClasses', 'brBriviumAddOns')
Run Time: 0.000353
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_data_registry | range | PRIMARY | PRIMARY | 27 | | 2 | Using where |
SELECT *
FROM xf_brivium_addon
ORDER BY addon_id
Run Time: 0.000158
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_brivium_addon | index | | PRIMARY | 77 | | 1 | |
INSERT INTO xf_data_registry
(data_key, data_value)
VALUES
(?, ?)
ON DUPLICATE KEY UPDATE
data_value = VALUES(data_value)
Params: brBriviumAddOns, a:0:{}
Run Time: 0.000125
SELECT cache_value
FROM xf_permission_combination
WHERE permission_combination_id = ?
Params: 1
Run Time: 0.000143
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | xf_permission_combination | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT thread.*
,
user.gender, user.avatar_date, user.gravatar,
NULL AS thread_read_date,
0 AS thread_reply_banned,
0 AS thread_is_watched,
'' AS draft_message, NULL AS draft_extra
FROM xf_thread AS thread
LEFT JOIN xf_user AS user ON
(user.user_id = thread.user_id)
WHERE thread.thread_id = ?
Params: 378331
Run Time: 0.000339
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | user | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SELECT node.*, forum.*
,
permission.cache_value AS node_permission_cache,
NULL AS forum_read_date
FROM xf_forum AS forum
INNER JOIN xf_node AS node ON (node.node_id = forum.node_id)
LEFT JOIN xf_permission_cache_content AS permission
ON (permission.permission_combination_id = 1
AND permission.content_type = 'node'
AND permission.content_id = forum.node_id)
WHERE node.node_id = ?
Params: 38
Run Time: 0.000336
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | forum | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | node | const | PRIMARY | PRIMARY | 4 | const | 1 | |
SIMPLE | permission | const | PRIMARY | PRIMARY | 35 | const,const,const | 1 | |
SELECT post.*
,
thread.*, thread.user_id AS thread_user_id, thread.username AS thread_username,
thread.post_date AS thread_post_date,
post.user_id, post.username, post.post_date,
bb_code_parse_cache.parse_tree AS message_parsed, bb_code_parse_cache.cache_version AS message_cache_version,
user.*, IF(user.username IS NULL, post.username, user.username) AS username,
user_profile.*,
user_privacy.*,
signature_parse_cache.parse_tree AS signature_parsed, bb_code_parse_cache.cache_version AS signature_cache_version,
session_activity.view_date AS last_view_date,
0 AS like_date
FROM xf_post AS post
INNER JOIN xf_thread AS thread ON
(thread.thread_id = post.thread_id)
LEFT JOIN xf_bb_code_parse_cache AS bb_code_parse_cache ON
(bb_code_parse_cache.content_type = 'post' AND bb_code_parse_cache.content_id = post.post_id)
LEFT JOIN xf_user AS user ON
(user.user_id = post.user_id)
LEFT JOIN xf_user_profile AS user_profile ON
(user_profile.user_id = post.user_id)
LEFT JOIN xf_user_privacy AS user_privacy ON
(user_privacy.user_id = post.user_id)
LEFT JOIN xf_bb_code_parse_cache AS signature_parse_cache ON
(signature_parse_cache.content_type = 'signature' AND signature_parse_cache.content_id = post.user_id)
LEFT JOIN xf_session_activity AS session_activity ON
(post.user_id > 0 AND session_activity.user_id = post.user_id AND session_activity.unique_key = CAST(post.user_id AS BINARY))
WHERE (
(post.thread_id = ? AND (post.position >= 0 AND post.position < 10) )
)
AND (post.message_state IN ('visible'))
ORDER BY post.position ASC, post.post_date ASC
Params: 378331
Run Time: 0.001567
Select Type | Table | Type | Possible Keys | Key | Key Len | Ref | Rows | Extra |
---|
SIMPLE | thread | const | PRIMARY | PRIMARY | 4 | const | 1 | Using filesort |
SIMPLE | post | ref | thread_id_post_date,thread_id_position | thread_id_post_date | 4 | const | 1 | Using index condition; Using where |
SIMPLE | bb_code_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.post_id | 1 | Using where |
SIMPLE | user | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_profile | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | user_privacy | eq_ref | PRIMARY | PRIMARY | 4 | xenforo.cc.post.user_id | 1 | |
SIMPLE | signature_parse_cache | eq_ref | content_type_id | content_type_id | 31 | const,xenforo.cc.post.user_id | 1 | Using where |
SIMPLE | session_activity | eq_ref | PRIMARY | PRIMARY | 22 | xenforo.cc.post.user_id,func | 1 | Using where |
INSERT INTO xf_thread_view
(thread_id)
VALUES
(?)
Params: 378331
Run Time: 0.000085
INSERT INTO `xf_session` (`session_id`, `session_data`, `expiry_date`) VALUES (?, ?, ?)
Params: 614aab26767c3092b744b527ce38686e, , 1715363568
Run Time: 0.000764
INSERT INTO xf_session_activity
(user_id, unique_key, ip, controller_name, controller_action, view_state, params, view_date, robot_key)
VALUES
(?, ?, ?, ?, ?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE
ip = VALUES(ip),
controller_name = VALUES(controller_name),
controller_action = VALUES(controller_action),
view_state = VALUES(view_state),
params = VALUES(params),
view_date = VALUES(view_date),
robot_key = VALUES(robot_key)
Params: 0, , , XenForo_ControllerPublic_Thread, Index, valid, thread_id=378331, 1715359968,
Run Time: 0.000101
INSERT INTO xf_bb_code_parse_cache
(content_type, content_id, parse_tree, cache_version, cache_date)
VALUES (?, ?, ?, ?, ?)
ON DUPLICATE KEY UPDATE parse_tree = VALUES(parse_tree),
cache_version = VALUES(cache_version),
cache_date = VALUES(cache_date)
Params: post, 384967, a:35:{i:0;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:80:"https://pic1.zhimg.com/v2-7af3fdbdf67525f431e69689917b9f61_l.jpg?source=8673f162";}}i:1;s:83:" 甜草莓,不是专家 | 人人都有不知道的东西,讨厌嘲讽类评论 ";i:2;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:57:"https://www.zhihu.com/question/354896365/answer/891217419";s:8:"original";a:2:{i:0;s:65:"[URL='https://www.zhihu.com/question/354896365/answer/891217419']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}i:3;s:2:"
";i:4;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:204:"手机没信号时正确的处理方式是找能看得到基站的位置;如果实在找不到基站,建议找空地;如果出不了门,那就随便旋转跳跃吧,也就是三维随机移动。";}}i:5;s:110:"举高高找信号可能会有用,但是在大多数场景下,其实就是在赌运气 + 心理安慰。
";i:6;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic4.zhimg.com/v2-6f636653bbf16c1ecf0c104302a59672_720w.jpg?source=8673f162";}}i:7;s:2:"
";i:8;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:60:"http://www.zhihu.com/people/2092f7dcf930c094f4ff07277d9b9181";s:8:"original";a:2:{i:0;s:68:"[URL='http://www.zhihu.com/people/2092f7dcf930c094f4ff07277d9b9181']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:7:"@阿拉";}}i:9;s:398:" 的回答已经很完整详细了,补充一点本科的基础知识:
基站和用户手机之间不可避免的会有障碍物,比如玻璃窗、承重墙、汽车、人体等,而因为障碍物不同,电磁波在空间中的传输会受到不同程度的衰减,我们称为路径损耗。理论上(自由空间无障碍环境)和考虑障碍时,路损的差距非常明显:
";i:10;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic4.zhimg.com/v2-ce4fefd0e80a1bcc195dfb6727627c1b_720w.jpg?source=8673f162";}}i:11;s:146:"
同时,这些被衰减过的电磁波却有可能因为折射等问题经过一定时间延迟后抵达用户手机上,这时候手机会在";i:12;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:12:"不同时间";}}i:13;s:12:"收到来自";i:14;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:12:"相同基站";}}i:15;s:24:"的数据信息,叫做";i:16;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:12:"多径效应";}}i:17;s:386:"。
我们一般把基站直射手机的电磁波路径称为 LoS(Line of sight)路径,即电磁波在做视线传播;被障碍物折射或者绕射之后的路径称为 NLoS 路径,即电磁波在做非视线传播。手机为了应对多径效应,会自动在众多通路中选择信号最强的路径作为主径,但是限于位置原因 LoS 路径可能不存在。
";i:18;a:4:{s:3:"tag";s:6:"indent";s:6:"option";N;s:8:"original";a:2:{i:0;s:8:"[INDENT]";i:1;s:9:"[/INDENT]";}s:8:"children";a:1:{i:0;s:148:"当然 NLoS 和 LoS 这两种定义不是多径效应引出来的,多径也可能不存在 LoS 路径,这里这么说只是为了叙述方便。";}}i:19;s:1:"
";i:20;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic2.zhimg.com/v2-669900e0d34341e150cac2efceb80cd4_720w.jpg?source=8673f162";}}i:21;s:151:"
正因为 LoS 路径上没有经过障碍物折射等路损,所以这条路径一般认为是要好于所有 NLoS 路径的,也是众多路径中";i:22;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:33:"信号能量最强、干扰最少";}}i:23;s:20:"的信号通路。
";i:24;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:128:"手机没信号时,第一反应应当换位置,帮手机找到这个信号最强的 LoS 路径,也就是视线可及基站";}}i:25;s:9:"的地方";i:26;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:3:"。";}}i:27;s:234:"
至于举高高要分场景,如果在一堆平房里,举高高可以让手机尽量避开地面众多障碍物带来的杂波,同时手机也可以尽量靠近 LoS 路径。不过这要举得比一般房子高一点才行。
";i:28;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic1.zhimg.com/v2-cd7e2bcbe56c5f0c7e6c8494048aaf5f_720w.jpg?source=8673f162";}}i:29;s:104:"
比如刘烨这种随便举一举是没用的,这个房间中杂物太多且封闭,正确方式是";i:30;a:4:{s:3:"tag";s:1:"b";s:6:"option";N;s:8:"original";a:2:{i:0;s:3:"[B]";i:1;s:4:"[/B]";}s:8:"children";a:1:{i:0;s:45:"立刻出门或者站到房顶上(红圈)";}}i:31;s:758:"。如果当时灾区的基站还在工作,有可能会找到信号。
如果实在找不到基站,比如在没有部署室分系统的室内会充满各种折射后的电磁波。人是看不出哪里电磁波能量最强的,也无法分辨哪些电磁波是有用的,这时候举高高和拿着手机左移、右移性质相同,此时请随便旋转跳跃,怎么来都行。
现在的基站部署会采用 MIMO、载波聚合和宏基站 + 微基站,手机可能会同时连入 2 个基站,同时使用多个载波,这时候需要考虑多个空间路径和 2 个以上的基站覆盖,位置和信号强度的关系会更加复杂,找到单个基站可能不是信号最强,具体怎么找可能真的要凭运气了哈哈哈。
";i:32;a:4:{s:3:"tag";s:3:"img";s:6:"option";N;s:8:"original";a:2:{i:0;s:5:"[IMG]";i:1;s:6:"[/IMG]";}s:8:"children";a:1:{i:0;s:83:"https://pic1.zhimg.com/v2-4c00e3da73220444c056a4b4892d0cc8_720w.jpg?source=8673f162";}}i:33;s:533:"
PS. 尽量没用术语,所以回答不很严谨,这里稍微说多点。信道建模通常分为大尺度(路损,阴影衰落)和小尺度衰落(多径和多普勒),建模过程中要分别考虑,我们一般对大尺度衰落做确定性建模,也就是通过移动可以改变的部分;考虑相位合成,我们一般对小尺度衰落做随机建模,比如 Nakagami-m 模型,这部分是看运气的部分。通常我们认为大尺度衰落可以补偿,而小尺度衰落对信号影响最大。
";i:34;a:4:{s:3:"tag";s:3:"url";s:6:"option";s:40:"https://www.zhihu.com/question/354896365";s:8:"original";a:2:{i:0;s:48:"[URL='https://www.zhihu.com/question/354896365']";i:1;s:6:"[/URL]";}s:8:"children";a:1:{i:0;s:12:"阅读原文";}}}, 1621686945, 1715359968
Run Time: 0.000972