2021-10-18

今天主要学习了一些前端的东西,初步了解了前端是干什么的,学习了几个标签,发现做前端挺需要耐心的。像下面这个表格,纯HTML写下来,需要不断调试观察,最后得到还不错的样式。

<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8" />
		<title>Insert title here</title>
	</head>
	
	<body>
		
		<table border="3px" width="1000px" align="center" cellspacing="0"  bgcolor="aqua">
			<tr>
				<th align="center" colspan="12">员工请假单</th>
			</tr>
			<tr>
				<td colspan="3" align="center">姓名</td>
				<td colspan="3">&nbsp;&nbsp;&nbsp;</td>
				<td align="center">部门</td>
				<td colspan="3">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
				<td align="center">工号</td>
				<td colspan="2">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
			</tr>
			<tr>
				<td colspan="3" align="center">职位</td>
				<td colspan="4">&nbsp;&nbsp;&nbsp;</td>
				<td colspan="3" align="center">申请时间</td>
				<td colspan="4">&nbsp;&nbsp;&nbsp;</td>
			</tr>
			<tr>
				<td colspan="3" align="center">请假时间(天数)</td>
				<td colspan="9" align="center">从&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;时到&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;年&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;月&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;日&nbsp;&nbsp;&nbsp;&nbsp;时,共&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;天&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;时</td>
			</tr>
			<tr>
				<td colspan="3" align="center">代理人</td>
				<td colspan="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
				<td colspan="3">&nbsp;&nbsp;&nbsp;&nbsp;</td>
				<td colspan="4">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
			</tr>
			<tr>
				<td colspan="3" align="center">工作交接事项或NO</td>
				<td colspan="9">&nbsp;</td>
			</tr>
			<tr>
				<td rowspan="3" colspan="3" align="center" height="50xp">事由</td>
				<td rowspan="3" colspan="9" height="50xp">&nbsp;</td>
			</tr>
			<tr></tr>
			<tr></tr>
			<tr>
				<td colspan="12" align="center">申请人:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				代理人:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				单位主管:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				核准:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
				</td>	
			</tr>
		</table>
	</body>
</html>

测试运行结果:

 

 学习HTML有一个比较好的网站:w3school 在线教程  w3school 在线教程icon-default.png?t=L9C2https://www.w3school.com.cn/

 里面有各种标签的功能介绍,想要自学的可以看看。

HTML 是用来描述网页的一种语言,通过各种标签将信息展示给用户。个人感觉上手挺快的,但是东西有点多。好在现在有好多好用的开发工具。

主流工具有VSCode,还是有个国内的HBuilder,后者稍微小众一点,两个都是免费的,可以去官网下载,今天试了试挺好用的。

HTML的文件语法比较简单,就是各种标签嵌套,主体是下面这么个结构:

<html><!--html标签是页面的根标签,标签有开标签,闭标签。在开闭标签之间写要展示的内容-->
<head><!--头标签,写一些配置信息:页面标签,编码格式,搜索词,引入资源-->
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>

<!--身体标签,展示在浏览器上的内容-->

</body>
</html>

 然后就主要是记标签,搭配组合就好了。当然这只是初级入门的时候,属于基本功吧,先学会这些,再继续后面的学习。

 

在你提到的 SQL 查询中: ```sql select id, stt dt, 1 p from test5 union select id, edt dt, -1 p from test5 ``` 这里的 `p` 是一个人为添加的 **标志字段(或称为权重字段)**,用来表示某个时间点是“主播上线”还是“主播下线”。 --- ### ✅ `p` 字段的作用解释如下: - `p = 1`:表示在该时间点有一个主播 **开始直播(上线)** - `p = -1`:表示在该时间点有一个主播 **结束直播(下线)** 这个技巧常用于解决“**最多重叠区间问题**”,比如求**同一时刻最多有多少个主播在线**。 我们将每个开播时间标记为 +1,关播时间标记为 -1,然后按时间顺序排序,对 `p` 值做累加(前缀和),就可以得到任意时刻正在直播的主播人数。 --- ### 🔍 举个例子说明 原始数据: | id | stt | edt | |------|----------------------|----------------------| |1001|2021-06-14 12:12:12|2021-06-14 18:12:12| |1003|2021-06-14 13:12:12|2021-06-14 16:12:12| 转换后变成事件流(t1): | id | dt | p | |------|----------------------|----| |1001|2021-06-14 12:12:12| 1 | ← 开播 +1 |1003|2021-06-14 13:12:12| 1 | ← 开播 +1 |1003|2021-06-14 16:12:12|-1 | ← 下播 -1 |1001|2021-06-14 18:12:12|-1 | ← 下播 -1 然后我们按照 `dt` 时间排序,并计算累计值(即当前在线主播数): ```text 时间 事件类型 当前人数变化 累计在线人数 2021-06-14 12:12:12 开播(id=1001) +1 1 2021-06-14 13:12:12 开播(id=1003) +1 2 2021-06-14 16:12:12 下播(id=1003) -1 1 2021-06-14 18:12:12 下播(id=1001) -1 0 ``` 所以最高同时在线人数是 **2人**。 --- ### 📌 完整 SQL 思路(以 Hive/MySQL 为例) ```sql -- 第一步:将开播和关播转为带符号的事件流 with events as ( select id, stt as dt, 1 as p from test5 union all select id, edt as dt, -1 as p from test5 ), -- 第二步:按时间排序,注意时间相同时,优先处理上线再处理下线?实际建议:同时间先+1后-1 sorted_events as ( select dt, p from events order by dt, p desc -- 先处理 +1 再处理 -1,防止漏算峰值 ) -- 第三步:使用窗口函数累加 p,找出最大值 select max(online_cnt) as max_concurrent_streamers from ( select dt, sum(p) over (order by dt, p desc rows between unbounded preceding and current row) as online_cnt from sorted_events ) t; ``` > 💡 注意:这里用 `UNION ALL` 比 `UNION` 更高效,因为不需要去重。 --- ### ❗关键点总结 - `p` 是一个虚拟的增量字段,用于统计人数变化。 - 把每一个“开始”看作 +1,“结束”看作 -1,构建时间轴上的变化事件。 - 对这些事件按时间排序并累加 `p`,就能得到每一时刻的在线人数。 - 最大累加值就是平台最高峰同时在线的主播人数。 --- ### ✅ 示例 Python 实现(便于理解逻辑) ```python from datetime import datetime # 模拟数据 data = [ (1001, '2021-06-14 12:12:12', '2021-06-14 18:12:12'), (1003, '2021-06-14 13:12:12', '2021-06-14 16:12:12'), (1004, '2021-06-14 13:15:12', '2021-06-14 20:12:12'), (1002, '2021-06-14 15:12:12', '2021-06-14 16:12:12'), (1005, '2021-06-14 15:18:12', '2021-06-14 20:12:12'), (1001, '2021-06-14 20:12:12', '2021-06-14 23:12:12'), (1006, '2021-06-14 21:12:12', '2021-06-14 23:15:12'), (1007, '2021-06-14 22:12:12', '2021-06-14 23:10:12'), ] events = [] for row in data: _id, stt_str, edt_str = row stt = datetime.strptime(stt_str, '%Y-%m-%d %H:%M:%S') edt = datetime.strptime(edt_str, '%Y-%m-%d %H:%M:%S') events.append((stt, 1)) events.append((edt, -1)) # 排序:先按时间,再按 +1 在前、-1 在后 events.sort(key=lambda x: (x[0], -x[1])) online = 0 max_online = 0 for time, delta in events: online += delta if online > max_online: max_online = online print("平台最高峰同时在线主播人数:", max_online) ``` 输出结果为: ``` 平台最高峰同时在线主播人数: 4 ``` (你可以验证:在 `2021-06-14 15:18:12 ~ 16:12:12` 之间有 4 位主播同时在线) --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值