首页
文章分类
逆向网安
中英演讲
杂类教程
学习笔记
前端开发
汇编
数据库
.NET
服务器
Python
Java
PHP
Git
算法
安卓开发
生活记录
读书笔记
作品发布
人体健康
网上邻居
留言板
欣赏小姐姐
关于我
Search
登录
1
利用AList搭建家庭个人影音库
4,744 阅读
2
浅尝Restful Fast Request插件,一句话完成 逆向过程
4,218 阅读
3
完美破解The Economist付费墙
2,935 阅读
4
i茅台app接口自动化csharp wpf实现,挂机windows服务器每日自动预约
2,717 阅读
5
青龙面板基本使用并添加修改微信/支付宝步数脚本
2,154 阅读
Search
标签搜索
PHP
Laravel
前端
csharp
安卓逆向
JavaScript
Python
Java
爬虫
抓包
Git
winform
android
Fiddler
Vue
selenium
LeetCode
每日一题
简单题
docker
Hygge
累计撰写
98
篇文章
累计收到
450
条评论
首页
栏目
逆向网安
中英演讲
杂类教程
学习笔记
前端开发
汇编
数据库
.NET
服务器
Python
Java
PHP
Git
算法
安卓开发
生活记录
读书笔记
作品发布
人体健康
页面
网上邻居
留言板
欣赏小姐姐
关于我
用户登录
搜索到
98
篇与
的结果
2023-07-13
解决RTSP推流前端切换视频导致播放黑屏频闪问题
解决RTSP推流前端切换视频导致播放黑屏频闪问题背景供应商那边设备类似于摄像头,推送的视频流格式是rtsp格式,需要进行转换到前端播放。实现效果是摄像头在前端页面展示类似实时视频直播,问题是一个页面有多个视频源,在多个源进行切换时会导致视频画面黑屏频闪。复现前提条件两个视频文件*.mp4nodejsffmpeg及配置环境变量客户端web页面1.依赖准备前端播放视频流需要导入jsmpeg-playerpackages.json... "dependencies": { "axios": "^1.4.0", "element-plus": "^2.3.5", "jsmpeg": "^1.0.0", "jsmpeg-player": "^3.0.3", "vue": "^3.2.47" }, ...App.vue<script setup> import { ref, watch, getCurrentInstance } from "vue"; import JsMpeg from "jsmpeg-player"; const ws = ref(null); const { proxy } = getCurrentInstance(); const videoObject = ref({}); // 用于存储当前正在播放的视频数据 /** * 视频的url构成规则为: rtsp://本机IP/自定义地址标识,后续将通过ffmpeg将对应视频转换为RTSP流,并通过TCP传输于该地址。 * 视频的port意义为: 不同的端口对应不同的视频,RTSP流通过TCP传输的地址前端不能直接对接,会将url发送给服务端,服务端进行接入后再于该端口进行ws推送。 */ const videoList = [ { label: "视频1-一人之下", name: "sp1", url: "rtsp://192.168.0.107/test", port: 8834, }, { label: "视频2-小猫咪", name: "sp2", url: "rtsp://192.168.0.107/test2", port: 8812, }, ]; // ... </script>2.页面准备重要:视频推流的展示是需要canvas标签,但是一个canvas标签多次复用就会导致黑屏频闪问题!!!所以将dom中的canvas标签移除,修改为每次点击按钮播放都动态创建一个canvas标签<template> <el-button v-for="item in videoList" :key="item.name" @click="playerVideo(item)" >{{ item.label }}</el-button > </template> <style scoped></style>3.播放实现const useWs = (data) => { // 建立一个新的ws视频流播放时先对旧的ws视频流进行释放 if (ws.value) ws.value.close(); // 移除所有canvas const canvasList = document.querySelectorAll("canvas"); canvasList.forEach((item) => { item.remove(); }); // 追加一个canvas#sp const sp = document.createElement("canvas"); sp.setAttribute("id", "sp"); document.body.appendChild(sp); // 与服务端建立ws通信,并未开始播放 ws.value = new WebSocket("ws://localhost:5001"); videoObject.value = data; }; // 向服务端发送信息是通过watch监听实现,当videoObject发生变化时调用,即当前视频对象切换 watch( () => videoObject.value, (newV, oldV) => { // 当ws连接打开时回调 ws.value.onopen = function () { // 向服务端发送欲播放的视频数据,服务端接收后会进行推流 ws.value.send(JSON.stringify(newV)); // 使用框架 建立ws视频流播放,不同的端口对应不同的视频。 new JsMpeg.Player(`ws://localhost:${newV.port}`, { canvas: document.getElementById('sp'), }); }; } ); const playerVideo = (e) => { useWs(e); };服务端node实现重要:ffmpeg环境变量的配置+运行目录放一个ffmpeg.exe1.依赖准备packages.json"dependencies": { "express": "^4.18.2", "node-ffmpeg-stream": "^1.1.0", "node-rtsp-stream": "^0.0.9", "node-rtsp-stream-jsmpeg": "^0.0.2", "ws": "^8.13.0" },index.jsconst Stream = require('node-ffmpeg-stream').Stream; const WebSocket = require('ws'); const ws = new WebSocket.Server({ port: 5001 }); const streams = new Map(); // 存储视频流的 Map2.端口推流ws.on('connection', (client) => { client.on('message', (msg) => { const data = JSON.parse(msg); console.log('开始播放'); // 下面固定格式 const stream = new Stream({ name: data.name, url: data.url, // eg: rtsp://192.168.0.107/test wsPort: data.port, // eg: 8834 options: { '-stats': '', // 没有必要值的选项使用空字符串 '-r': 30, // 具有必需值的选项指定键后面的值<br> } }); streams.set(data.name, stream); // 前端视频流切换时 + 页面刷新或关闭时触发,通知服务端停止推送当前流 client.on('close', () => { if (streams.has(data.name)) { const stream = streams.get(data.name); stream.stopStream(); streams.delete(data.name); console.log('连接已关闭'); } }); }); });ffmpeg转换流并进行传输这段代码使用 ffmpeg 工具来将本地的视频文件(test.mp4)转换为 RTSP 流,并将其通过 TCP 传输。让我逐行解释这段代码的含义:ffmpeg -stream_loop -1 -re -i "C:\Users\Administrator\Downloads\Video\test.mp4" -rtsp_transport tcp -vcodec h264 -f rtsp rtsp://localhost/testffmpeg: 这是命令行中调用 ffmpeg 工具的命令。-stream_loop -1: 这个选项告诉 ffmpeg 无限循环输入文件。即使视频文件结束,它也会重新开始播放。-re: 这个选项告诉 ffmpeg 使用实时模式,以原始速度读取输入文件。在实时模式下,ffmpeg 将尽力按照视频的实际帧率发送流数据。-i "C:\Users\Administrator\Downloads\Video\test.mp4": 这是输入文件的路径。ffmpeg 将读取该文件作为输入。-rtsp_transport tcp: 这个选项指定了 RTSP 流的传输协议为 TCP。通过 TCP 传输可以提供更稳定的连接。-vcodec h264: 这个选项指定了视频编解码器为 H.264(AVC)。它将使用 H.264 编码视频流。-f rtsp: 这个选项指定了输出格式为 RTSP。rtsp://localhost/test: 这是输出的 RTSP 流的地址。ffmpeg 将流式传输的视频流发布到该地址。综上所述,这段代码的作用是使用 ffmpeg 将本地的视频文件转换为 RTSP 流,并通过 TCP 传输发布到 rtsp://localhost/test 地址上。这样其他支持 RTSP 协议的设备或应用程序就可以通过该地址来接收和播放该视频流输入命令如果卡着不动的话需要配合EasyDarwin流媒体服务,直接启动EasyDarwin后就可以了。EasyDarwinEasyDarwin 是一个开源的流媒体服务器软件,用于实现音视频流的传输和处理。它提供了一套完整的流媒体解决方案,包括流媒体推流、录制、转发、播放等功能。EasyDarwin 可以用于搭建自己的流媒体服务器,支持常见的音视频编码格式和传输协议,如 RTSP、RTMP、HLS 等。它具有跨平台的特性,可以在 Windows、Linux、macOS 等操作系统上运行。使用 EasyDarwin,您可以搭建一个可靠的流媒体服务器,从摄像头、音频设备或其他音视频源推送实时流,并将其传输到支持的客户端应用程序或播放器上进行播放。它也可以用于构建视频监控系统、直播平台、音视频会议等应用场景。EasyDarwin 的开源性质使得它具有灵活性和可定制性,您可以根据自己的需求进行定制和扩展。同时,它还提供了一些管理工具和 Web 控制台,方便用户进行配置和管理流媒体服务器。总的来说,EasyDarwin 是一个功能强大的开源流媒体服务器软件,可以帮助用户快速搭建自己的流媒体平台,并实现高质量的音视频流传输和处理。引用1.node-ffmpeg-stream:https://www.npmjs.com/package/node-ffmpeg-stream2.ffmpeg实现将视频文件转换成rtsp流:https://blog.csdn.net/weixin_44591652/article/details/123004247{cloud title="解决RTSP推流前端切换视频导致播放黑屏频闪问题.zip" type="bd" url="https://pan.baidu.com/s/1tQZu7ULVbBPLKF9w_EbTyw?pwd=pe4n" password="pe4n"/}
2023年07月13日
263 阅读
0 评论
0 点赞
2023-07-07
使用Frp实现内网穿透便于外网访问本机JavaWeb项目
使用Frp实现内网穿透便于外网访问本机JavaWeb项目背景在微信开发者工具里调用uni.getLocation调试没有效果,笔记本没有对应的传感器真机调试需要勾选微信小程序位置接口权限,由于后端部署在本机上,真机调试无法链接,所以进行一下内网穿透准备工作搭建一个完整的frp服务链,我们需要VPS一台(也可以是具有公网IP的实体机)访问目标设备(就是你最终要访问的设备)简单的Linux基础(会用cp等几个简单命令即可)文章中用到的端口别忘记设置安全组和宝塔防火墙!服务端设置SSH连接到VPS之后运行如下命令查看处理器架构,根据架构下载不同版本的frparch查看结果,如果是“X86_64“即可选择”amd64”,运行如下命令,根据架构不同,选择相应版本并进行下载wget https://github.com/fatedier/frp/releases/download/v0.51.0/frp_0.51.0_linux_amd64.tar.gz然后解压tar -zxvf frp_0.51.0_linux_amd64.tar.gz文件夹改个名,方便使用cp -r frp_0.51.0_linux_amd64 frp把解压出来的文件夹复制到你想要的目录下,为了方便我直接放在用户目录下了,进入该目录cd frp查看一下文件ls -a我们只需要关注如下几个文件frpsfrps.inifrpcfrpc.ini前两个文件(s结尾代表server)分别是服务端程序和服务端配置文件,后两个文件(c结尾代表client)分别是客户端程序和客户端配置文件。因为我们正在配置服务端,可以删除客户端的两个文件rm frpc rm frpc.ini然后修改frps.ini文件vim frps.ini这个文件应有如下格式[common] bind_port = 7000 dashboard_port = 7500 token = 12345678 dashboard_user = admin dashboard_pwd = admin vhost_http_port = 7880 vhost_https_port = 7843 subdomain_host = lisok.cn 如果没有必要,端口均可使用默认值,token、user和password项请自行设置。“bind_port”表示用于客户端和服务端连接的端口,这个端口号我们之后在配置客户端的时候要用到。“dashboard_port”是服务端仪表板的端口,若使用7500端口,在配置完成服务启动后可以通过浏览器访问 x.x.x.x:7500 (其中x.x.x.x为VPS的IP)查看frp服务运行信息。“token”是用于客户端和服务端连接的口令,请自行设置并记录,稍后会用到。“dashboard_user”和“dashboard_pwd”表示打开仪表板页面登录的用户名和密码,自行设置即可。“vhost_http_port”和“vhost_https_port”用于反向代理HTTP主机时使用。"subdomain_host"自定义二级域名,后续在客户端会配置一个"subdomain",部署完成后将通过{subdomain}.{subdomain_host}:{vhost_http_port} 来访问自己的 web 服务。本来想通过ip来访问,但是不设置域名的话会出错 官方文档:https://gofrp.org/docs/features/http-https/subdomain/编辑完成后保存(vim保存如果不会请自行搜索)。之后我们就可以运行frps的服务端了./frps -c frps.ini如果看到屏幕输出这样一段内容,即表示运行正常,如果出现错误提示,请检查上面的步骤。2023/07/07 15:22:39 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000 2023/07/07 15:22:39 [I] [service.go:172] http service listen on 0.0.0.0:7880 2023/07/07 15:22:39 [I] [service.go:193] https service listen on 0.0.0.0:7843 2023/07/07 15:22:39 [I] [service.go:216] Dashboard listen on 0.0.0.0:7500 2023/07/07 15:22:39 [I] [root.go:210] Start frps success此时访问 x.x.x.x:7500 并使用自己设置的用户名密码登录,即可看到仪表板界面服务端后台运行至此,我们的服务端仅运行在前台,如果Ctrl+C停止或者关闭SSH窗口后,frps均会停止运行,因而我们使用 nohup命令将其运行在后台。nohup后台程序管理或关闭相关命令可自行查询资料,上面这个连接中也有所提及。nohup ./frps -c frps.ini &输出如下内容即表示正常运行nohup: ignoring input and appending output to 'nohup.out'此时可先使用Ctrl+C关闭nohup,frps依然会在后台运行,使用jobs 或者 ps -aux | grep frps命令查看后台运行的程序在结果中我们可以看到frps正在后台正常运行[1]+ Running nohup ./frps -c frps.ini &此时访问 x.x.x.x:7500 依然可以打开仪表板界面,至此,服务端即设置完成,你可以关闭SSH窗口了。客户端设置frp的客户端就是我们想要真正进行访问的那台设备,大多数情况下应该会是一台Windows主机,因而本文使用Windows主机做例子;Linux配置方法类似,不再赘述。同样地,根据客户端设备的情况选择相应的frp程序进行下载,Windows下下载和解压等步骤不再描述。假定你下载了“frp_0.51.0_windows_amd64.zip”,将其解压在了C盘根目录下,并且将文件夹重命名为“frp”,可以删除其中的frps和frps.ini文件。用文本编辑器打开frpc.ini,与服务端类似,内容如下。[common] server_addr=116.xxx.xxx.xxx server_port=7000 token=12345678 [web] type=http local_port=8085 remote_port=7880 subdomain=nwys # 仅仅复制以上即可,以下是其他协议的例子,不必复制 [rdp] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 7001 [smb] type = tcp local_ip = 127.0.0.1 local_port = 445 remote_port = 7002其中common字段下的三项即为服务端的设置。“server_addr”为服务端IP地址,填入即可。“server_port”为服务器端口,填入你设置的端口号即可,如果未改变就是7000“token”是你在服务器上设置的连接口令,原样填入即可。自定义规则frp实际使用时,会按照端口号进行对应的转发,原理如下图所示。上面frpc.ini的rdp、smb字段都是自己定义的规则,自定义端口对应时格式如下。“[xxx]”表示一个规则名称,自己定义,便于查询即可。“type”表示转发的协议类型,有TCP和UDP等选项可以选择,如有需要请自行查询frp手册。“local_port”是本地应用的端口号,按照实际应用工作在本机的端口号填写即可。“remote_port”是该条规则在服务端开放的端口号,自己填写并记录即可。RDP,即Remote Desktop 远程桌面,Windows的RDP默认端口是3389,协议为TCP,建议使用frp远程连接前,在局域网中测试好,能够成功连接后再使用frp穿透连接。SMB,即Windows文件共享所使用的协议,默认端口号445,协议TCP,本条规则可实现远程文件访问。配置完成frpc.ini后,就可以运行frpc了frpc程序不能直接双击运行!使用命令提示符或Powershell进入该目录下cd C:\frp并执行./frpc -c frpc.ini运行frpc程序,窗口中输出如下内容表示运行正常。2023/07/07 16:14:56 [I] [service.go:205] login to server success, get run id [2b65b4e58a5917ac], server udp port [0] 2023/07/07 16:14:56 [I] [proxy_manager.go:136] [2b65b4e58a5917ac] proxy added: [rdp smb] 2023/07/07 16:14:56 [I] [control.go:143] [smb] start proxy success 2023/07/07 16:14:56 [I] [control.go:143] [rdp] start proxy success不要关闭命令行窗口,此时可以在局域网外使用相应程序访问 x.x.x.x:xxxx (IP为VPS的IP,端口为自定义的remote_port)即可访问到相应服务。工具使用参考引用7的地址软件设置中的参数不包含域名设置,所以建议手动编辑一下配置文件再使用软件托管。引用frp官网-简单、高效的内网穿透工具:https://gofrp.org/frp github release:https://github.com/fatedier/frp/releasesfrp document:https://gofrp.org/docs/overview/使用frp进行内网穿透:https://sspai.com/post/52523使用frp进行内网穿透:https://blog.csdn.net/qq_41743601/article/details/127461156新手入门 - 详解 frp 内网穿透 frpc.ini 配置:https://www.ioiox.com/archives/79.htmlCnFRP控制台-内网映射外网访问的工具 : [https://www.52pojie.cn/thread-1647522-1-1.html]
2023年07月07日
208 阅读
0 评论
0 点赞
2023-07-03
青龙面板基本使用并添加修改微信/支付宝步数脚本
青龙面板使用青龙面板安装# curl -sSL get.docker.com | sh docker run -dit \ -v $PWD/ql/data:/ql/data \ -p 5700:5700 \ # 部署路径非必须,以斜杠开头和结尾,比如 /test/ -e QlBaseUrl="/" \ --name qinglong \ --hostname qinglong \ --restart unless-stopped \ whyour/qinglong:latest安装完成后进入面板1.安装运行依赖勾选自动拆分nodejs依赖:request canvas cheerio js-base64 dotenv magic tough-cookie
[email protected]
require requests date-fns ts-md5 typescript json5
[email protected]
crypto-js @types/node png-js node-telegram-bot-api fs jsdom form-data jieba tslib ds jsdom -g prettytable ql common node-jsencrypt juejin-helper moment global-agentpython3:bs4 telethon cacheout jieba PyExecJS ping3 canvas Crypto ds requests pycryptodomelinux:bizCode bizMsg lxml libc-dev gcc g++ libffi-dev python3-dev2.环境变量点击环境变量——点击新建环境变量——名称设为:JD_COOKIE—输入获取到Cookies的相关参数(获取方法:【点击进入】——然后用手机登录——登录后按F12——点击Application——点开Cookies——找到pt_key=?;pt_pin=?;——把对应的值替换到问号中即可,分号要保留这里名称是不能自定义的,一定要用JD_COOKIE注意事项:1、登录后不要退出账号,否则Cookies会失效3.脚本拉取脚本项目地址一:https://github.com/shufflewzc/faker2脚本项目地址二:https://github.com/shufflewzc/faker3脚本项目地址三:https://github.com/Gnuyoah/Thread脚本项目地址四:https://github.com/Akali5/jd-depot进入之后拷贝Clone地址:ql repo https://ghproxy.com/https://github.com/shufflewzc/faker2.git "jd_|jx_|gua_|jddj_|getJDCookie" "activity|backUp" "^jd[^_]|USER|function|utils|ZooFaker_Necklace.js|JDJRValidator_Pure|sign_graphics_validate|ql" # 直接使用github地址拉不下来的话就套个镜像 https://ghproxy.com/ + github地址创建完立即执行一下,拉取一下脚本4.自建一个修改步数脚本# -*- coding: utf8 -*- import requests,time,re,json from random import randint headers = { 'User-Agent': 'Dalvik/2.1.0 (Linux; U; Android 9; MI 6 MIUI/20.6.18)' } #获取登录code def get_code(location): code_pattern = re.compile("(?<=access=).*?(?=&)") code = code_pattern.findall(location)[0] #print(code) return code #登录 def login(user,password): url1 = "https://api-user.huami.com/registrations/+86" + user + "/tokens" headers = { "Content-Type":"application/x-www-form-urlencoded;charset=UTF-8", "User-Agent":"MiFit/4.6.0 (iPhone; iOS 14.0.1; Scale/2.00)" } data1 = { "client_id":"HuaMi", "password":f"{password}", "redirect_uri":"https://s3-us-west-2.amazonaws.com/hm-registration/successsignin.html", "token":"access" } r1 = requests.post(url1,data=data1,headers=headers,allow_redirects=False) print(r1.text) location = r1.headers["Location"] #print(location) try: code = get_code(location) except: return 0,0 print("access_code获取成功!") print(code) url2 = "https://account.huami.com/v2/client/login" data2 = { "app_name":"com.xiaomi.hm.health", "app_version":"4.6.0", "code":f"{code}", "country_code":"CN", "device_id":"2C8B4939-0CCD-4E94-8CBA-CB8EA6E613A1", "device_model":"phone", "grant_type":"access_token", "third_name":"huami_phone", } r2 = requests.post(url2,data=data2,headers=headers).json() login_token = r2["token_info"]["login_token"] print("login_token获取成功!") print(login_token) userid = r2["token_info"]["user_id"] print("userid获取成功!") print(userid) return login_token,userid #主函数 def main(): login_token = 0 login_token,userid = login(user,password) if login_token == 0: print("登陆失败!") return "login fail!" t = get_time() app_token = get_app_token(login_token) date = time.strftime("%Y-%m-%d",time.localtime()) today = time.strftime("%F") data_json = '%5B%7B%22data_hr%22%3A%22%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9L%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FVv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0v%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9e%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0n%5C%2Fa%5C%2F%5C%2F%5C%2FS%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0b%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F1FK%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FR%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9PTFFpaf9L%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FR%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0j%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9K%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FOv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fzf%5C%2F%5C%2F%5C%2F86%5C%2Fzr%5C%2FOv88%5C%2Fzf%5C%2FPf%5C%2F%5C%2F%5C%2F0v%5C%2FS%5C%2F8%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FSf%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fz3%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0r%5C%2FOv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FS%5C%2F9L%5C%2Fzb%5C%2FSf9K%5C%2F0v%5C%2FRf9H%5C%2Fzj%5C%2FSf9K%5C%2F0%5C%2F%5C%2FN%5C%2F%5C%2F%5C%2F%5C%2F0D%5C%2FSf83%5C%2Fzr%5C%2FPf9M%5C%2F0v%5C%2FOv9e%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FS%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fzv%5C%2F%5C%2Fz7%5C%2FO%5C%2F83%5C%2Fzv%5C%2FN%5C%2F83%5C%2Fzr%5C%2FN%5C%2F86%5C%2Fz%5C%2F%5C%2FNv83%5C%2Fzn%5C%2FXv84%5C%2Fzr%5C%2FPP84%5C%2Fzj%5C%2FN%5C%2F9e%5C%2Fzr%5C%2FN%5C%2F89%5C%2F03%5C%2FP%5C%2F89%5C%2Fz3%5C%2FQ%5C%2F9N%5C%2F0v%5C%2FTv9C%5C%2F0H%5C%2FOf9D%5C%2Fzz%5C%2FOf88%5C%2Fz%5C%2F%5C%2FPP9A%5C%2Fzr%5C%2FN%5C%2F86%5C%2Fzz%5C%2FNv87%5C%2F0D%5C%2FOv84%5C%2F0v%5C%2FO%5C%2F84%5C%2Fzf%5C%2FMP83%5C%2FzH%5C%2FNv83%5C%2Fzf%5C%2FN%5C%2F84%5C%2Fzf%5C%2FOf82%5C%2Fzf%5C%2FOP83%5C%2Fzb%5C%2FMv81%5C%2FzX%5C%2FR%5C%2F9L%5C%2F0v%5C%2FO%5C%2F9I%5C%2F0T%5C%2FS%5C%2F9A%5C%2Fzn%5C%2FPf89%5C%2Fzn%5C%2FNf9K%5C%2F07%5C%2FN%5C%2F83%5C%2Fzn%5C%2FNv83%5C%2Fzv%5C%2FO%5C%2F9A%5C%2F0H%5C%2FOf8%5C%2F%5C%2Fzj%5C%2FPP83%5C%2Fzj%5C%2FS%5C%2F87%5C%2Fzj%5C%2FNv84%5C%2Fzf%5C%2FOf83%5C%2Fzf%5C%2FOf83%5C%2Fzb%5C%2FNv9L%5C%2Fzj%5C%2FNv82%5C%2Fzb%5C%2FN%5C%2F85%5C%2Fzf%5C%2FN%5C%2F9J%5C%2Fzf%5C%2FNv83%5C%2Fzj%5C%2FNv84%5C%2F0r%5C%2FSv83%5C%2Fzf%5C%2FMP%5C%2F%5C%2F%5C%2Fzb%5C%2FMv82%5C%2Fzb%5C%2FOf85%5C%2Fz7%5C%2FNv8%5C%2F%5C%2F0r%5C%2FS%5C%2F85%5C%2F0H%5C%2FQP9B%5C%2F0D%5C%2FNf89%5C%2Fzj%5C%2FOv83%5C%2Fzv%5C%2FNv8%5C%2F%5C%2F0f%5C%2FSv9O%5C%2F0ZeXv%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F1X%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9B%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2FTP%5C%2F%5C%2F%5C%2F1b%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F0%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F9N%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2F%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%5C%2Fv7%2B%22%2C%22date%22%3A%222021-08-07%22%2C%22data%22%3A%5B%7B%22start%22%3A0%2C%22stop%22%3A1439%2C%22value%22%3A%22UA8AUBQAUAwAUBoAUAEAYCcAUBkAUB4AUBgAUCAAUAEAUBkAUAwAYAsAYB8AYB0AYBgAYCoAYBgAYB4AUCcAUBsAUB8AUBwAUBIAYBkAYB8AUBoAUBMAUCEAUCIAYBYAUBwAUCAAUBgAUCAAUBcAYBsAYCUAATIPYD0KECQAYDMAYB0AYAsAYCAAYDwAYCIAYB0AYBcAYCQAYB0AYBAAYCMAYAoAYCIAYCEAYCYAYBsAYBUAYAYAYCIAYCMAUB0AUCAAUBYAUCoAUBEAUC8AUB0AUBYAUDMAUDoAUBkAUC0AUBQAUBwAUA0AUBsAUAoAUCEAUBYAUAwAUB4AUAwAUCcAUCYAUCwKYDUAAUUlEC8IYEMAYEgAYDoAYBAAUAMAUBkAWgAAWgAAWgAAWgAAWgAAUAgAWgAAUBAAUAQAUA4AUA8AUAkAUAIAUAYAUAcAUAIAWgAAUAQAUAkAUAEAUBkAUCUAWgAAUAYAUBEAWgAAUBYAWgAAUAYAWgAAWgAAWgAAWgAAUBcAUAcAWgAAUBUAUAoAUAIAWgAAUAQAUAYAUCgAWgAAUAgAWgAAWgAAUAwAWwAAXCMAUBQAWwAAUAIAWgAAWgAAWgAAWgAAWgAAWgAAWgAAWgAAWREAWQIAUAMAWSEAUDoAUDIAUB8AUCEAUC4AXB4AUA4AWgAAUBIAUA8AUBAAUCUAUCIAUAMAUAEAUAsAUAMAUCwAUBYAWgAAWgAAWgAAWgAAWgAAWgAAUAYAWgAAWgAAWgAAUAYAWwAAWgAAUAYAXAQAUAMAUBsAUBcAUCAAWwAAWgAAWgAAWgAAWgAAUBgAUB4AWgAAUAcAUAwAWQIAWQkAUAEAUAIAWgAAUAoAWgAAUAYAUB0AWgAAWgAAUAkAWgAAWSwAUBIAWgAAUC4AWSYAWgAAUAYAUAoAUAkAUAIAUAcAWgAAUAEAUBEAUBgAUBcAWRYAUA0AWSgAUB4AUDQAUBoAXA4AUA8AUBwAUA8AUA4AUA4AWgAAUAIAUCMAWgAAUCwAUBgAUAYAUAAAUAAAUAAAUAAAUAAAUAAAUAAAUAAAUAAAWwAAUAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAeSEAeQ8AcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBcAcAAAcAAAcCYOcBUAUAAAUAAAUAAAUAAAUAUAUAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCgAeQAAcAAAcAAAcAAAcAAAcAAAcAYAcAAAcBgAeQAAcAAAcAAAegAAegAAcAAAcAcAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCkAeQAAcAcAcAAAcAAAcAwAcAAAcAAAcAIAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcCIAeQAAcAAAcAAAcAAAcAAAcAAAeRwAeQAAWgAAUAAAUAAAUAAAUAAAUAAAcAAAcAAAcBoAeScAeQAAegAAcBkAeQAAUAAAUAAAUAAAUAAAUAAAUAAAcAAAcAAAcAAAcAAAcAAAcAAAegAAegAAcAAAcAAAcBgAeQAAcAAAcAAAcAAAcAAAcAAAcAkAegAAegAAcAcAcAAAcAcAcAAAcAAAcAAAcAAAcA8AeQAAcAAAcAAAeRQAcAwAUAAAUAAAUAAAUAAAUAAAUAAAcAAAcBEAcA0AcAAAWQsAUAAAUAAAUAAAUAAAUAAAcAAAcAoAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAYAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBYAegAAcAAAcAAAegAAcAcAcAAAcAAAcAAAcAAAcAAAeRkAegAAegAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAEAcAAAcAAAcAAAcAUAcAQAcAAAcBIAeQAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBsAcAAAcAAAcBcAeQAAUAAAUAAAUAAAUAAAUAAAUBQAcBYAUAAAUAAAUAoAWRYAWTQAWQAAUAAAUAAAUAAAcAAAcAAAcAAAcAAAcAAAcAMAcAAAcAQAcAAAcAAAcAAAcDMAeSIAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcAAAcBQAeQwAcAAAcAAAcAAAcAMAcAAAeSoAcA8AcDMAcAYAeQoAcAwAcFQAcEMAeVIAaTYAbBcNYAsAYBIAYAIAYAIAYBUAYCwAYBMAYDYAYCkAYDcAUCoAUCcAUAUAUBAAWgAAYBoAYBcAYCgAUAMAUAYAUBYAUA4AUBgAUAgAUAgAUAsAUAsAUA4AUAMAUAYAUAQAUBIAASsSUDAAUDAAUBAAYAYAUBAAUAUAUCAAUBoAUCAAUBAAUAoAYAIAUAQAUAgAUCcAUAsAUCIAUCUAUAoAUA4AUB8AUBkAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAAfgAA%22%2C%22tz%22%3A32%2C%22did%22%3A%22DA932FFFFE8816E7%22%2C%22src%22%3A24%7D%5D%2C%22summary%22%3A%22%7B%5C%22v%5C%22%3A6%2C%5C%22slp%5C%22%3A%7B%5C%22st%5C%22%3A1628296479%2C%5C%22ed%5C%22%3A1628296479%2C%5C%22dp%5C%22%3A0%2C%5C%22lt%5C%22%3A0%2C%5C%22wk%5C%22%3A0%2C%5C%22usrSt%5C%22%3A-1440%2C%5C%22usrEd%5C%22%3A-1440%2C%5C%22wc%5C%22%3A0%2C%5C%22is%5C%22%3A0%2C%5C%22lb%5C%22%3A0%2C%5C%22to%5C%22%3A0%2C%5C%22dt%5C%22%3A0%2C%5C%22rhr%5C%22%3A0%2C%5C%22ss%5C%22%3A0%7D%2C%5C%22stp%5C%22%3A%7B%5C%22ttl%5C%22%3A18272%2C%5C%22dis%5C%22%3A10627%2C%5C%22cal%5C%22%3A510%2C%5C%22wk%5C%22%3A41%2C%5C%22rn%5C%22%3A50%2C%5C%22runDist%5C%22%3A7654%2C%5C%22runCal%5C%22%3A397%2C%5C%22stage%5C%22%3A%5B%7B%5C%22start%5C%22%3A327%2C%5C%22stop%5C%22%3A341%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A481%2C%5C%22cal%5C%22%3A13%2C%5C%22step%5C%22%3A680%7D%2C%7B%5C%22start%5C%22%3A342%2C%5C%22stop%5C%22%3A367%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A2295%2C%5C%22cal%5C%22%3A95%2C%5C%22step%5C%22%3A2874%7D%2C%7B%5C%22start%5C%22%3A368%2C%5C%22stop%5C%22%3A377%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1592%2C%5C%22cal%5C%22%3A88%2C%5C%22step%5C%22%3A1664%7D%2C%7B%5C%22start%5C%22%3A378%2C%5C%22stop%5C%22%3A386%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1072%2C%5C%22cal%5C%22%3A51%2C%5C%22step%5C%22%3A1245%7D%2C%7B%5C%22start%5C%22%3A387%2C%5C%22stop%5C%22%3A393%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1036%2C%5C%22cal%5C%22%3A57%2C%5C%22step%5C%22%3A1124%7D%2C%7B%5C%22start%5C%22%3A394%2C%5C%22stop%5C%22%3A398%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A488%2C%5C%22cal%5C%22%3A19%2C%5C%22step%5C%22%3A607%7D%2C%7B%5C%22start%5C%22%3A399%2C%5C%22stop%5C%22%3A414%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A2220%2C%5C%22cal%5C%22%3A120%2C%5C%22step%5C%22%3A2371%7D%2C%7B%5C%22start%5C%22%3A415%2C%5C%22stop%5C%22%3A427%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1268%2C%5C%22cal%5C%22%3A59%2C%5C%22step%5C%22%3A1489%7D%2C%7B%5C%22start%5C%22%3A428%2C%5C%22stop%5C%22%3A433%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A152%2C%5C%22cal%5C%22%3A4%2C%5C%22step%5C%22%3A238%7D%2C%7B%5C%22start%5C%22%3A434%2C%5C%22stop%5C%22%3A444%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A2295%2C%5C%22cal%5C%22%3A95%2C%5C%22step%5C%22%3A2874%7D%2C%7B%5C%22start%5C%22%3A445%2C%5C%22stop%5C%22%3A455%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1592%2C%5C%22cal%5C%22%3A88%2C%5C%22step%5C%22%3A1664%7D%2C%7B%5C%22start%5C%22%3A456%2C%5C%22stop%5C%22%3A466%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1072%2C%5C%22cal%5C%22%3A51%2C%5C%22step%5C%22%3A1245%7D%2C%7B%5C%22start%5C%22%3A467%2C%5C%22stop%5C%22%3A477%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A1036%2C%5C%22cal%5C%22%3A57%2C%5C%22step%5C%22%3A1124%7D%2C%7B%5C%22start%5C%22%3A478%2C%5C%22stop%5C%22%3A488%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A488%2C%5C%22cal%5C%22%3A19%2C%5C%22step%5C%22%3A607%7D%2C%7B%5C%22start%5C%22%3A489%2C%5C%22stop%5C%22%3A499%2C%5C%22mode%5C%22%3A4%2C%5C%22dis%5C%22%3A2220%2C%5C%22cal%5C%22%3A120%2C%5C%22step%5C%22%3A2371%7D%2C%7B%5C%22start%5C%22%3A500%2C%5C%22stop%5C%22%3A511%2C%5C%22mode%5C%22%3A3%2C%5C%22dis%5C%22%3A1268%2C%5C%22cal%5C%22%3A59%2C%5C%22step%5C%22%3A1489%7D%2C%7B%5C%22start%5C%22%3A512%2C%5C%22stop%5C%22%3A522%2C%5C%22mode%5C%22%3A1%2C%5C%22dis%5C%22%3A152%2C%5C%22cal%5C%22%3A4%2C%5C%22step%5C%22%3A238%7D%5D%7D%2C%5C%22goal%5C%22%3A8000%2C%5C%22tz%5C%22%3A%5C%2228800%5C%22%7D%22%2C%22source%22%3A24%2C%22type%22%3A0%7D%5D' finddate = re.compile(r'.*?date%22%3A%22(.*?)%22%2C%22data.*?') findstep = re.compile(r'.*?ttl%5C%22%3A(.*?)%2C%5C%22dis.*?') data_json = re.sub(finddate.findall(data_json)[0], today, str(data_json)) data_json = re.sub(findstep.findall(data_json)[0], step, str(data_json)) url = f'https://api-mifit-cn.huami.com/v1/data/band_data.json?&t={t}' head = { "Content-Type": "application/x-www-form-urlencoded", 'apptoken': f'{app_token}' } data = f'userid={userid}&last_sync_data_time=1597306380&device_type=0&last_deviceid=DA932FFFFE8816E7&data_json={data_json}' response = requests.post(url, data=data, headers=head).json() print(response) result = f"当前用户:{user}</br> 修改步数: {step} </br> 修改结果: "+ response['message'] server_send(result) qmsg_send(result) plus_send(result) print(result) return result #获取时间戳 def get_time(): url = 'http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp' response = requests.get(url,headers=headers).json() t = response['data']['t'] return t #获取app_token def get_app_token(login_token): url = f"https://account-cn.huami.com/v1/client/app_tokens?app_name=com.xiaomi.hm.health&dn=api-user.huami.com%2Capi-mifit.huami.com%2Capp-analytics.huami.com&login_token={login_token}&os_version=4.1.0" response = requests.get(url,headers=headers).json() app_token = response['token_info']['app_token'] print("app_token获取成功!") print(app_token) return app_token #server酱微信推送 def server_send(msg): if sckey == '': return server_url = "https://sc.ftqq.com/" + str(sckey) + ".send" data = { 'text': msg, 'desp': msg } requests.post(server_url, data=data) #Qmsg酱QQ推送 def qmsg_send(msg): if qkey == '': return qmsg_url = "https://qmsg.zendee.cn:443/send/" + str(qkey) data = { 'qq': f'{qq}', 'msg': msg } requests.post(qmsg_url, data=data) # PUSHPLUS推送 def plus_send(msg,title='小米运动助手',template ='markdown'): if plustoken == '': return url = 'http://www.pushplus.plus/send' data = { "token": plustoken, "title": title, "content": msg, "template":template } body = json.dumps(data).encode(encoding='utf-8') headers = {'Content-Type': 'application/json'} response = requests.post(url, data=body, headers=headers) if response.status_code ==200: return 1 return 0 # -- 配置 -- # ------------------------------ user = "136****1234" #小米运动账号 password = "123456" #密码 step = str(randint(18000,25000)) # 范围内取随机数, 前面不但能大于后面的数 #以下为信息推送,不懂的可不填写不影响刷步 sckey = '' # server酱微信推送key(不懂不要填,可空) qkey = '' # Qmsg酱QQ推送key(不懂不要填,可空) qq= '' # 需要推送的qq号 (不懂不要填,可空) plustoken = '' #PUSHPLUS的token 官网为https://www.pushplus.plus/(不懂不要填,可空) # ------------------------------ # def main_handler(event, context): # return main() # 阿里云函数 def handler(*args): main() if __name__ == '__main__': main()通过编辑器自建一个, 我这里的路径是custom/xiaomiStep.py回到定时任务tab我填写的定时规则是每天早上7点执行引用1.qinglong github: https://github.com/whyour/qinglong2.2023最新青龙面板安装|Docker安装青龙面板,JD自动签到,青龙面板搭建 ,每天自动做任务领取京豆,操作简单&设置简单,非常适合有软路由和服务器&vps的小伙伴,一次搭建长期使用:https://www.youtube.com/watch?v=4CWlq8Xp_Oc&t=6s&ab_channel=%E4%B8%80%E7%93%B6%E5%A5%B6%E6%B2%B93.搭建青龙面板:https://naiyou001.tk/knowledge/6864.青龙拉取faker库以及脚本去重详细教程:https://blog.csdn.net/cbh1987/article/details/1204834215.小米运动步数修改_阿里云函数版本:https://www.52pojie.cn/thread-1656364-1-1.html
2023年07月03日
2,154 阅读
1 评论
0 点赞
2023-06-29
完美破解The Economist付费墙
去除经济学人的限制:1.油猴插件https://greasyfork.org/zh-CN/scripts/449408-%E6%B0%B8%E4%B9%85%E6%9B%B4%E6%96%B0-economist%E7%BB%8F%E6%B5%8E%E5%AD%A6%E4%BA%BA%E5%85%8D%E8%B4%B9%E7%9C%8B-%E5%85%A8%E9%83%A8%E8%A7%A3%E9%94%81-%E5%B9%B6%E7%A7%BB%E5%87%BA%E4%BA%86%E5%B9%BF%E5%91%8A2.Github开源的一个项目:https://github.com/vivek9patel/economist.com-unlocked以下是转载的原文,镜像站点可以使用,下面的方法可能已经失效了。经济学人镜像:https://taizihuang.github.io/TheEconomist/外交杂志镜像:https://taizihuang.github.io/ForeignAffairs/安装 Adblock Plus 和 Stylus 插件经济学人:禁用 https://www.economist.com/engassets/_next/static/chunks/main-*.js纽约时报: 禁用 https://meter-svc.nytimes.com/meter.js*大西洋月刊:禁用网站cookie外交:禁用 www.foreignaffairs.com;禁用网站cookie;添加CSS样式,复制 https://www.foreignaffairs.com/sites/default/files/css/css_BRKcyoXIH258fUGLDtxb4JCNcnNyU2o2rmvhZGFfEA0.css 内容,粘贴进 Stylus.一年能省2000块钱吧。引用完美破解The Economist付费墙:https://www.douban.com/note/797208219/?_i=8001969nLWE4CN
2023年06月29日
2,935 阅读
0 评论
4 点赞
2023-06-25
Docker安装MongoDB
1.拉取镜像docker pull mongo:latest2.创建容器docker run -itd --name mongo -p 27017:27017 mongo --auth参数说明:-p 27017:27017 :映射容器服务的 27017 端口到宿主机的 27017 端口。外部可以直接通过 宿主机 ip:27017 访问到 mongo 的服务。--auth:需要密码才能访问容器服务。3.安装成功接着使用以下命令添加用户和设置密码,并且尝试连接。$ docker exec -it mongo mongo admin # MongoDB 6.0 及以上版本使用以下命令: # docker exec -it mongo mongosh admin # 创建一个名为 admin,密码为 123456 的用户。 > db.createUser({ user:'admin',pwd:'123456',roles:[ { role:'userAdminAnyDatabase', db: 'admin'},"readWriteAnyDatabase"]}); # 尝试使用上面创建的用户信息进行连接。 > db.auth('admin', '123456')4.常用命令4.1 超级用户相关进入数据库adminuse admin增加或修改用户密码db.addUser(‘name’,’pwd’)查看用户列表db.system.users.find()用户认证db.auth(‘name’,’pwd’)删除用户db.removeUser(‘name’)查看所有用户show users查看所有数据库show dbs查看所有的collectionshow collections查看各collection的状态db.printCollectionStats()查看主从复制状态db.printReplicationInfo()修复数据库db.repairDatabase()设置记录profiling,0=off 1=slow 2=alldb.setProfilingLevel(1)查看profilingshow profile拷贝数据库db.copyDatabase(‘mail_addr’,’mail_addr_tmp’)删除collectiondb.mail_addr.drop()删除当前的数据库db.dropDatabase()4.2 增删改存储嵌套的对象db.foo.save({‘name’:’imdst’,’address’:{‘city’:’guangzhou’,’post’:100096},’phone’:[158,155]})存储数组对象db.user_addr.save({‘Uid’:’
[email protected]
’,’Al’:['
[email protected]
','
[email protected]
']})根据query条件修改,如果不存在则插入,允许修改多条记录db.foo.update({‘yy’:5},{‘$set’:{‘xx’:2}},upsert=true,multi=true)删除yy=5的记录db.foo.remove({‘yy’:5})删除所有的记录db.foo.remove()4.3 索引增加索引 1(ascending),-1(descending)db.foo.ensureIndex({firstname: 1, lastname: 1}, {unique: true});索引子对象db.user_addr.ensureIndex({‘Al.Em’: 1})查看索引信息db.foo.getIndexes()db.foo.getIndexKeys()根据索引名删除索引db.user_addr.dropIndex(‘Al.Em_1′)4.4 查询查找所有db.foo.find()查找一条记录db.foo.findOne()根据条件检索10条记录db.foo.find({‘msg’:’Hello 1′}).limit(10)sort排序db.deliver_status.find({‘From’:’
[email protected]
’}).sort({‘Dt’,-1}) db.deliver_status.find().sort({‘Ct’:-1}).limit(1)count操作db.user_addr.count()distinct操作,查询指定列,去重复db.foo.distinct(‘msg’)\#”>=”操作db.foo.find({“timestamp”: {“$gte” : 2}})子对象的查找db.foo.find({‘address.city’:’beijing’})4.5 管理查看collection数据的大小db.deliver_status.dataSize()查看colleciont状态db.deliver_status.stats()查询所有索引的大小db.deliver_status.totalIndexSize()advanced queries:高级查询条件操作符 $gt : > $lt : <<br> $gte: >= $lte: <= $ne : !=、<> $in : in $nin: not in $all: all $not: 反匹配(1.3.3及以上版本)查询 name <> “bruce” and age >= 18 的数据db.users.find({name: {$ne: “bruce”}, age: {$gte: 18}});查询 creationdate > ’2010-01-01′ and creationdate <= ’2010-12-31′ 的数据db.users.find({creation_date:{$gt:new Date(2010,0,1), $lte:new Date(2010,11,31)});查询 age in (20,22,24,26) 的数据db.users.find({age: {$in: [20,22,24,26]}});查询 age取模10等于0 的数据db.users.find(‘this.age % 10 == 0′);db.users.find({age : {$mod : [10, 0]}});查询所有name字段是字符类型的db.users.find({name: {$type: 2}});查询所有age字段是整型的db.users.find({age: {$type: 16}});对于字符字段,可以使用正则表达式 查询以字母b或者B带头的所有记录db.users.find({name: /^b.*/i});匹配所有db.users.find({favorite_number : {$all : [6, 8]}});查询不匹配name=B*带头的记录db.users.find({name: {$not: /^B.*/}});查询 age取模10不等于0 的数据db.users.find({age : {$not: {$mod : [10, 0]}}});选择返回age和id字段(id字段总是会被返回)db.users.find({}, {age:1});db.users.find({}, {age:3});db.users.find({}, {age:true});db.users.find({ name : “bruce” }, {age:1});0为false, 非0为true选择返回age、address和_id字段db.users.find({ name : “bruce” }, {age:1, address:1});排除返回age、address和_id字段db.users.find({}, {age:0, address:false});db.users.find({ name : “bruce” }, {age:0, address:false});查询所有存在name字段的记录db.users.find({name: {$exists: true}});排序sort()查询所有不存在phone字段的记录db.users.find({phone: {$exists: false}});排序sort() 以年龄升序ascdb.users.find().sort({age: 1});以年龄降序descdb.users.find().sort({age: -1});限制返回记录数量limit()返回5条记录db.users.find().limit(5);返回3条记录并打印信息db.users.find().limit(3).forEach(function(user) {print(‘my age is ‘ + user.age)});结果my age is 18my age is 19my age is 20限制返回记录的开始点skip()从第3条记录开始,返回5条记录(limit 3, 5)db.users.find().skip(3).limit(5);查询记录条数count()db.users.find().count();db.users.find({age:18}).count();以下返回的不是5,而是user表中所有的记录数量db.users.find().skip(10).limit(5).count();如果要返回限制之后的记录数量,要使用count(true)或者count(非0)db.users.find().skip(10).limit(5).count(true);分组group()假设test表只有以下一条数据{ domain: “www.mongodb.org”, invoked_at: {d:”2015-05-03″, t:”17:14:05″}, response_time: 0.05, http_action: “GET /display/DOCS/Aggregation”}使用group统计test表11月份的数据count:count()、totaltime:sum(responsetime)、avgtime:total*time/count;db.test.group( { cond: {“invoked_at.d”: {$gt: “2015-05″, $lt: “2015-06″}} , key: {http_action: true} , initial: {count: 0, total_time:0} , reduce: function(doc, out){ out.count++; out.total_time+=doc.response_time } , finalize: function(out){ out.avg_time = out.total_time / out.count } } ); [ { "http_action" : "GET /display/DOCS/Aggregation", "count" : 1, "total_time" : 0.05, "avg_time" : 0.05 } ]引用1.Docker 安装 MongoDB:https://www.runoob.com/docker/docker-install-mongodb.html
2023年06月25日
187 阅读
0 评论
0 点赞
2023-06-24
诗歌收集
元代高明的《琵琶记》我本将心向明月,奈何明月照我心。过华清宫绝句三首唐•杜牧长安回望绣成堆,山顶千门次第开。一骑红尘妃子笑,无人知是荔枝来。新丰绿树起黄埃,数骑渔阳探使回。霓裳一曲千峰上,舞破中原始下来。万国笙歌醉太平,倚天楼殿月分明。云中乱拍禄山舞,风过重峦下笑声。https://so.gushiwen.cn/mingju/juv_a25e9428db6e.aspx咸阳城东楼许浑〔唐代〕一上高城万里愁,蒹葭杨柳似汀洲。溪云初起日沉阁,山雨欲来风满楼。鸟下绿芜秦苑夕,蝉鸣黄叶汉宫秋。行人莫问当年事,故国东来渭水流。♡https://so.gushiwen.cn/shiwenv_65bc4719e0b1.aspx木兰诗乐府诗集〔南北朝〕 唧唧复唧唧,木兰当户织。不闻机杼声,唯闻女叹息。(唯 一作:惟) 问女何所思,问女何所忆。女亦无所思,女亦无所忆。昨夜见军帖,可汗大点兵,军书十二卷,卷卷有爷名。阿爷无大儿,木兰无长兄,愿为市鞍马,从此替爷征。 东市买骏马,西市买鞍鞯,南市买辔头,北市买长鞭。旦辞爷娘去,暮宿黄河边,不闻爷娘唤女声,但闻黄河流水鸣溅溅。旦辞黄河去,暮至黑山头,不闻爷娘唤女声,但闻燕山胡骑鸣啾啾。 万里赴戎机,关山度若飞。朔气传金柝,寒光照铁衣。将军百战死,壮士十年归。 归来见天子,天子坐明堂。策勋十二转,赏赐百千强。可汗问所欲,木兰不用尚书郎,愿驰千里足,送儿还故乡。 爷娘闻女来,出郭相扶将;阿姊闻妹来,当户理红妆;小弟闻姊来,磨刀霍霍向猪羊。开我东阁门,坐我西阁床。脱我战时袍,著我旧时裳。当窗理云鬓,对镜帖花黄。出门看火伴,火伴皆惊忙:同行十二年,不知木兰是女郎。 雄兔脚扑朔,雌兔眼迷离;双兔傍地走,安能辨我是雄雌? ♡https://so.gushiwen.cn/shiwenv_2d6b0c83a500.aspx月下独酌四首李白李白〔唐代〕花间一壶酒,独酌无相亲。举杯邀明月,对影成三人。月既不解饮,影徒随我身。暂伴月将影,行乐须及春。我歌月徘徊,我舞影零乱。醒时相交欢,醉后各分散。(另版本“相”为“同”)永结无情游,相期邈云汉。天若不爱酒,酒星不在天。地若不爱酒,地应无酒泉。天地既爱酒,爱酒不愧天。已闻清比圣,复道浊如贤。贤圣既已饮,何必求神仙。三杯通大道,一斗合自然。但得酒中趣,勿为醒者传。三月咸阳城,千花昼如锦。谁能春独愁,对此径须饮。穷通与修短,造化夙所禀。一樽齐死生,万事固难审。醉後失天地,兀然就孤枕。不知有吾身,此乐最为甚。穷愁千万端,美酒三百杯。愁多酒虽少,酒倾愁不来。所以知酒圣,酒酣心自开。辞粟卧首阳,屡空饥颜回。当代不乐饮,虚名安用哉。蟹螯即金液,糟丘是蓬莱。且须饮美酒,乘月醉高台。♡https://so.gushiwen.cn/shiwenv_301e41411279.aspx金缕衣杜秋娘杜秋娘〔唐代〕劝君莫惜金缕衣,劝君惜取少年时。(惜取 一作:须取)花开堪折直须折,莫待无花空折枝。(花开 一作:有花)♡https://so.gushiwen.cn/shiwenv_d5cea0c3607d.aspx不第后赋菊黄巢黄巢〔唐代〕待到秋来九月八,我花开后百花杀。冲天香阵透长安,满城尽带黄金甲。♡https://so.gushiwen.cn/shiwenv_32bfa9757c62.aspx忆江南词三首白居易白居易〔唐代〕江南好,风景旧曾谙。日出江花红胜火,春来江水绿如蓝。能不忆江南?江南忆,最忆是杭州。山寺月中寻桂子,郡亭枕上看潮头。何日更重游?江南忆,其次忆吴宫。吴酒一杯春竹叶,吴娃双舞醉芙蓉。早晚复相逢?♡https://so.gushiwen.cn/shiwenv_dca0ef1f12bf.aspx临江仙·梦后楼台高锁晏几道晏几道〔宋代〕梦后楼台高锁,酒醒帘幕低垂。去年春恨却来时。落花人独立,微雨燕双飞。记得小蘋初见,两重心字罗衣。琵琶弦上说相思。当时明月在,曾照彩云归。(蘋 通:苹)♡https://so.gushiwen.cn/shiwenv_47c89d71e6be.aspx献钱尚父贯休贯休〔唐代〕贵逼人来不自由,龙骧凤翥势难收。满堂花醉三千客,一剑霜寒十四州。鼓角揭天嘉气冷,风涛动地海山秋。东南永作金天柱,谁羡当时万户侯。♡https://so.gushiwen.cn/shiwenv_52940038c6ee.aspx登科后孟郊孟郊〔唐代〕昔日龌龊不足夸,今朝放荡思无涯。春风得意马蹄疾,一日看尽长安花。♡https://so.gushiwen.cn/shiwenv_6650a905deea.aspx
2023年06月24日
182 阅读
0 评论
0 点赞
2023-06-08
RecyclerView Adding Ripple Effect to RecyclerView item
实现recyclerView item长按的水波纹效果<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <data> <variable name="m" type="cn.lisok.rf.model.SettingItemModel" /> </data> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content" android:background="?android:attr/selectableItemBackground" android:clickable="true" android:focusable="true" android:paddingStart="40dp" android:paddingEnd="40dp" android:paddingBottom="8dp"> <TextView android:id="@+id/textView" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="24dp" android:layout_marginBottom="20dp" android:text="@{m.title,default=无障碍权限}" android:textColor="@color/black" /> <TextView android:id="@+id/textView2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignTop="@id/textView" android:layout_marginTop="24dp" android:maxWidth="250dp" android:text="@{m.desc,default=`依次点击:无障碍 > 已下载的应用 > ❤️真实好友`}" android:visibility="@{m.desc == null ? android.view.View.GONE : android.view.View.VISIBLE}" /> <com.google.android.material.switchmaterial.SwitchMaterial android:id="@+id/power" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentEnd="true" android:layout_centerVertical="true" android:layout_marginTop="8dp" android:layout_marginEnd="4dp" android:checked="true" android:visibility="@{m.showSwitch? android.view.View.VISIBLE: android.view.View.GONE}" /> </RelativeLayout> </layout>核心三行代码 添加给item的父布局android:background="?android:attr/selectableItemBackground" android:clickable="true" android:focusable="true"引用1.Adding Ripple Effect to RecyclerView item: https://stackoverflow.com/questions/30931889/adding-ripple-effect-to-recyclerview-item
2023年06月08日
316 阅读
0 评论
0 点赞
2023-05-07
心肌桥 myocardial bridge是什么病?
心肌桥 myocardial bridge是什么病?小范,31岁,最近半年心脏一直不舒服,做了好多心电图,心脏病彩超都没事,后来不得不做了心脏造影,心脏造影血管没有明显的狭窄,只有一个心肌桥。诊断心肌桥要做什么检查?冠状动脉CTA(计算机体层血管成像)是首选的检查。它的优势在于显示血管的同时,可以清楚观察周围软组织结构,可以发现血管外面覆盖的心肌,对血管潜入心肌的深度、长短、范围等一目了然。冠状动脉造影术是最准确的检查,但是为有创检查。此外,心电图、心肌标志物、心脏彩超、血管内多普勒也可以帮助诊断。当地医生说没事,可是小范还是不舒服,就是找不到原因,前天晚上,小范再次持续胸闷憋气,大汗,后背再次来到医院,一做心电图提示心梗了,马上做造影,结果并没有发现明显的动脉粥样硬化导致的狭窄,再次复查心电图已经基本恢复正常。心肌桥会有什么症状?心肌桥患者可长期无明显症状,严重点的患者有心肌缺血的表现,多于劳累或活动后发生,较常见的有胸痛、胸闷,严重时出现心肌梗死,少数患者合并有头晕、乏力、心悸症状,且使用硝酸甘油疗效欠佳,甚至症状加重。对于冠心病低风险的患者,如小孩、青年人,若出现类似心绞痛或心肌缺血症状时,要考虑到心肌桥。后经过我们综合分析,就是这个心肌桥导致的急性冠脉痉挛引起的心肌梗死。平时我们说的心肌梗死,大多数都是因为血管垃圾太多,斑块破裂后形成血栓,引起的心脏血管闭塞。而这种心肌桥引起的的心肌梗死,并不是血管内部没有血流,而是因为心肌桥引起的心脏血管痉挛,导致一过性心脏血管失去血流,其危险程度和心肌梗死一样,也会心绞痛,也会心肌坏死,也会致命!什么是心肌桥?心肌桥怎么办?吃点什么药?是不是要做手术啊?能不能放支架?什么是心肌桥?我们大部分人的心脏动脉血管,一般都是在心脏病表面,给心脏提供供血。可是有一部分人的心脏动脉血管,并不是全程都在心脏表面,走着走着就会有一小段走到心脏肌肉里面去,就像我们过马路的时候,有的时候会出现地下通道一样,这一段钻进心脏肌肉里面这部分就叫做心肌桥。正常心脏动脉血管,会持续的给心脏供血,可是在心肌桥这部分血管,随着心脏收缩,可能会不同程度地挤压心脏动脉,从而影响心脏供血。大部分心肌桥大多为表浅型,也就是钻进心脏肌肉里面的部分并不深,并不会影响心脏正常的供血,所以大多数的心肌桥不会引起心肌缺血,大多数有心肌桥的人也不会有什么不适。小范这种情况属于少数:如果心肌桥埋藏的血管比较深,那心肌桥对心脏血流的影响就大。如果合并吸烟、高血压、心肌肥厚、心率快、激动、喝酒等等刺激下,容易发生血管痉挛,也容易发生引发动脉粥样硬化,发生心绞痛、心肌梗死、甚至猝死。当然这只是极少数人,所以心肌桥的人更应该健康生活,因为心肌桥还不像平时我们看到的冠心病,药物效果比较明显。有时候心肌桥一旦引起症状,治疗起来很费劲。心肌桥能吃点什么药?大部分心肌桥只要没有症状,不需要治疗,但对于心肌桥引起的心肌缺血,治疗的药物以洛尔类药物,以及地尔硫卓等为主,需要根据具体情况决定具体用药。心肌桥能手术吗?因为心肌桥是心脏血管长进了心脏肌肉里面,心脏肌肉不停的在收缩,长期的收缩,就会把支架压瘪变形,甚至断裂,有危险。所以,一般情况都不主张心肌桥放支架;心脏搭桥要不要,必须根据具体情况,如果有足够的证据证明心肌桥已经引起了严重的心肌缺血,药物无法控制,那么可以根据具体情况决定要不要搭桥。当然理论是可以把心肌桥的心肌切开,也就是把心脏的肌肉松解一下,减少心脏肌肉对血管的压力,也能缓解心肌桥引的症状,但也会损伤心肌。总之,心肌桥是比较普遍存在的一种心脏情况,只是我们平时很难通过普通检查得知罢了,大部分心肌桥都不会有任何症状;对于心肌桥治疗前必须明确是因为心肌桥导致的不舒服,否则只能带来副作用;整体的治疗原则就是先药物,如果药物实在不行,在具体权衡下一步治疗方案。但为了预防心肌桥导致的心肌缺血,健康生活 仍是基础,比如:戒烟戒酒,减少情绪激动,注意保暖,控制三高等等。后经过我们综合分析,给出小范的治疗方案就是先药物控制,但一定要戒烟戒酒,减少情绪激动等诱发因素。心肌桥患者,如果没有明显症状,就无需进行治疗,不必太过担忧;对于有心肌缺血症状的心肌桥患者,首选口服药物治疗。心肌桥是先天性结构异常,任何药物都不可能根治,服药目的是减轻由心肌桥引起的不适。对于有症状且药物治疗难以控制的心肌桥患者,可选择心肌桥切除术或冠状动脉搭桥术,彻底解除因为血管压迫心肌血供不足而造成的问题。(作者单位:郑州大学第二附属医院)引用1.心肌桥是个什么心脏病?都没事?医生辟谣:也可能引发心肌梗死 - 知乎 (zhihu.com)2.每日健康问答|心肌桥是什么病? (xuexi.cn)3.(59) What is a myocardial bridge? - YouTube
2023年05月07日
275 阅读
0 评论
0 点赞
2023-05-07
【ACM】算法竞赛及OJ题面常用英文单词整理(更新ing)
本文转载自:https://blog.csdn.net/qq_36693514/article/details/108803092Aabbreviation [数学] 约分;activity on edge AOE网activity on vertex AOV网add, subtract, multiply and divide加减乘除adjacency list 邻接表(adjacency multilist 邻接多重表)adjacency matrix 邻接矩阵adjacent sequence elements相邻的元素串adjacent vertex 相邻顶点algebraic term代数项alphabetical order 字典序alternately rise and fall交替上升和下降Ambiguous 模糊不清ancestor 祖先anticlockwise 逆时针Approximate String Matching 模糊匹配Arbitrary Precision Arithmetic 高精度计算arc 弧arithmetic mean 算数平均值arithmetic progression 等差数列(geometric progression 等比数列)array 数组articulation point 连接点ascending lexicographical order 词典顺序升序排列ascending order升序(descending order降序)aspect ratio固定长宽比assemble 组合assess 评定,评估assigned adj指定的,赋值的augmenting path graph 增广路径图(augmenting path 增广路径)average search length 平均查找长度average temperature顺时针axis axes 轴Bbalance merging sort 平衡归并排序balance two-way merging 二路平衡归并排序Bandwidth Reduction 带宽压缩banlanced binary tree 平衡二叉树base 底边;幂的底数biconnected graph 重连通图bidirectional 双向的binary search tree 二叉查找树binary search 二分查找binary sort tree 二叉排序树binary 二进制bipartite graph 二部图Bishop主教(象)只斜走。格数不限不能越子。每方有两象,黑白格各占1个blank string 空白(空格)串block search 分块查找boundary界限Ccalculate计算Calendrical Calculations 日期carpet 地毯chariot 战车(中国象棋)checkmate (国际象棋) 将死; 输棋,将死; 败局; 败北,挫败;circular linked list 循环链表cirular queue 循环队列Clique 最大团clockwise order顺时针方向顺序(anticlockwise 逆时针)Coefficient 系数,率,程度Collinear 共线的column major order 以列为主的顺序分配columns列Combinatorial Problems 组合问题comma逗号common superstring公共父串compile v编译,汇编complete binary tree 完全二叉树complete graph 完全图composite numbers 合数Computational Geometry 计算几何concave 凹的connected component 连通分量(Connected Components 连通分支)consecutive 连续的constant n常数,常量 adj不变的,始终如一的,持续不断的Constrained and Unconstrained Optimization 最值问题Convex Hull 凸包coordinates坐标corrupt 腐烂,破坏counterclockwise 逆时针critical path 关键路径Cryptography 密码Cube root立方根DD is rounded to 2 decimal places D是精确到小数点后2位Data Structures 基本数据结构data type 数据类型decimal n小数 adj小数的,十进制的decimal 十进制decision tree 判定树Deck 甲板define v定义,明确,使规定deformed变形的Denominator分母denote 代表; 指代; 预示; 意思是;标志;象征dense graph 稠密图Deployed 部署depth 深度deque(double-ended queue) 双端列表descentdant 子孙destination 终点Determinants and Permanents 行列式diagonal对角(diagonally 斜对角线的)dial 钟面,拨打dialing 拨号音 打电话,拨电话号码( dial的现在分词 )Dictionaries 字典difference 差digital analysis method 数字分析法digital search tree 数字查找树digit位数;数字digraph(directed graph) 有向图Dimensional 尺寸diminishing increment sort 随小增量排序direct access file 直接存取文件directed acyclic graph 有向无环图directory structure 目录结构directory(计算机文件或程序的)目录;指导的咨询的; 管理的discrete Fourier transform 离散傅里叶变换disjoint 不相交的Distinct values 独一无二的值distinct 不同的;独一无二的division method 除法divisor 因子;分母doubly linked list 双向链表doubly linked tree 双链树Drawing Graphs Nicely 图的描绘Drawing Trees 树的描绘duplicated 复制;打印的duplicates 完全一样的东西,复制品( duplicate的名词复数 )EEdge and Vertex Connectivity 割边/割点Edge Coloring 边染色embed插入enable 启用Entry 进口equation方程式;等式equivalent equation同解方程;等价方程equivalent 相等的,等效的estimate 预测Eulerian Cycle / Chinese Postman Euler回路/中国邮路evaluate v评价,估价evaluated adj求···的值even偶数的excluding 排除,拒绝( exclude的现在分词); 驱逐;除…外,不包括execute v执行,完成executed 执行的;生效的exponent 指数;幂external sort 外部排序FFacility 设备,设施factorial 阶乘; 因子的,阶乘的Factoring and Primality Testing 因子分解/质数判定Feedback Edge/Vertex Set 最大无环子图Finite State Machine Minimization 有穷自动机简化fixed-aggregate data type 固定聚合数据类型foggiest idea概念folding method 折叠法follow by跟随,其后forest 森林formula n公式fraction:分数;小部分front 队头full binary tree 满二叉树Ggcd (greatest common divisor) 最大公约数generalized list 广义表Generating Graphs 图的生成Generating Partitions 划分生成Generating Permutations 排列生成Generating Subsets 子集生成geometric progression 等比数列grabh 图Graph Data Structures 图Graph Isomorphism 同构Graph Partition 图的划分Graph Problems — hard 图论-NP问题Graph Problems — polynomial 图论-多项式算法greatest integer最大整数grid网格;方格;(地图上的)坐标方格HHamiltonian Cycle Hamilton回路hash search 散列查找(hash table 散列表)head node 头结点(head pointer 头指针)heap sort 堆排序horizontal or vertical direction水平和垂直方向horizontally adv水平地 horizontal adj水平的Huffman tree 哈夫曼树IIdentifier n标识符,识别码immediate predecessor 直接前趋(immediate successor 直接后继)immediately allocating method 直接定址法improper fraction 假分数in the range of 在…范围内in the shape of a cross十字形incident edge 关联边indegree 入度indent n缩进indentical相同的Independent Set 独立集indexed file 索引文件indexed non-sequential file 索引非顺序文件(indexed sequential file 顺序)indicating adj指示的,标志的inequality不等式infinite 无限的initial adj最初的,词首的,开始的 n首字母initial node 初始结点initialization n初始化,赋初值 initialize v初始化inorder traversal 中序遍历insertion sort 插入排序insertion 插入integer 整数Interior 内部,本质internal sort 内部排序Interpret 解释,执行intersect v相交,交叉intersection 横断,横切; 交叉,相交; 交叉点,交叉线; [数] 交集;Intersection Detection 碰撞测试intersection横断;横切;交叉intersect相交intervals 间隔时间; 间隔( interval的名词复数 ); 区间Invade 侵略invalid 无效的inverted file 倒排文件irreparably 不能恢复地JJob Scheduling 工程安排justified adj合理的,合法化的KKd-Trees 线段树Knapsack Problem 背包问题Knight 骑士(马)每步棋先横走或直走一格,然后再往外斜走一格;或者先斜走一格,最后再往外横走或竖走一格(即走“日”字)。可以越子,没有象棋中的“蹩马腿”限制。Llcm (Least Common Multiple) 最小公倍数left or right-justified 左对齐or右对齐lexicographically 字典序like terms ,similar terms同类项linear algebra 线性代数(linear equation线性方程linear linked list 线性链表)Linear Programming 线性规划linear structure 线性结构link field 链域 linked list 链表literal coefficient字母系数logarithm 对数logical structure 逻辑结构Longest Common Substring 最长公共子串loop环MMaintaining Line Arrangements 平面分割master file 主文件Matching 匹配Matrix Multiplication 矩阵乘法maximum matching 最大匹配meadow 草坪mean 平均值Medial-Axis Transformation 中轴变换Median and Selection 中位数memorable 值得纪念的; 显著的,难忘的; 重大的,著名的merge sort 归并排序mid-square method 平方取中法minimal adj最小限度的minimal volume最小体积minimum(cost)spanning tree 最小(代价)生成树mixed number 带分数mod v求余 modulus n系数,模数Motion Planning 运动规划motion多边形multi-dimentional array 多维数组multilinked list 多重链表multilist file 多重链表文件multiple adj多重的多样的,许多的 n倍数multiplication 乘法municipal 市政的NNearest Neighbor Search 最近点对查询negative ,positive 负 ,正Network Flow 网络流no special punctuation symbols or spacingrules 无特殊标点符号或间距的规则non-intersecting 非相交的; 不相交的;nonlinear structure 非线性结构notation 标记numerator分子numerical coefficient 数字系数Numerical Problems 数值问题OObesity 肥胖octal adj八进制的 binhex 十六进制odd and even 奇和偶optimal 最佳的optimally 最佳Orbit 轨道ordered pair 有序对(ordered tree 有序树)Ordinal 有次序的original equation原方程origin原点orthogonal list 十字链表Out degree 出度Over brim溢出overflow 上溢Overlapping 覆盖ox牛Ppalindrome 回文palindromic 回文的parallel 平行的parity property奇偶性partical order 偏序Pawn 禁卫军(兵)只能向前直走,每次只能走一格。但走第一步时,可以走一格或两格。兵的吃子方法与行棋方向不一样,它是直走斜吃,即如果兵的斜进一格内有对方棋子,就可以吃掉它而占据该格phyical structure 物理结构Pipe 管道Planarity Detection and Embedding 平面性检测和嵌入ploygon-shaped faces/ polygon多边形ployphase merging sort 多步归并排序Point Location 位置查询pointer field 指针域Polygon Partitioning 多边形分割positive and negative integers 正整数和负整数postorder traversal 后序遍历precision n精密,精确度精确predecessor 前趋prefix 前缀preorder traversal 先序遍历prime 质数Priority Queues 优先队列proceed 运行process v加工,处理 n程序,进程process a sequence of n distinct integers 处理一串n 个不同的整数profile 轮廓proper fraction真分数proportional 成比例的Protrusions 凸起物Pyramid 金字塔,渐增Qquadrant象限,四分之一圆Queen 皇后 横、直、斜都可以走,步数不受限制,但不能越子quotient 商Rradix sort 基数排序Random Number Generation 随机数生成random number method 随机数法Range Search 范围查询rat, ox, tiger, rabbit, dragon, snake,horse, sheep, monkey, rooster, dog pig十二生肖rate of convergence 收敛速度rear 队尾rectangular 矩形的,成直角的Relates 叙述,讲述replacement selection sort 置换选择排序respectively adj各自的,分别的,独自的robustness 鲁棒性Rook 战车 横竖均可以走,步数不受限,不能斜走。除王车易位外不能越子。rooster鸡root sign 根号round()四舍五入(当取舍位为5时,若取舍位数前的小数为奇数则直接舍弃,若为偶数则向上取舍)rounded to n decimal places 精确到小数点后n位row major order 以行为主的顺序分配Rows and columns 行与列SSatisfiability 可满足性scenario方案;(可能发生的)情况;search (sequential search) 线性查找(顺序查找)linearsearching 查找,线索segment 段;分割segment 环节; 部分;分段; 分割,划分;selection sort 选择排序semicolon n分号sequence n顺序,序列,连续serial 连续的; 连载的; 顺序排列的;series 连续的同类事物,系列series系列Set and String Problems 集合与串的问题Set Cover 集合覆盖Set Data Structures 集合Set Packing 集合配置Shape Similarity 相似多边形Shell 贝壳,脱壳shelter 遮蔽物Shortest Common Superstring 最短公共父串Shortest Path 最短路径simple cycle 简单回路(simple path 简单路径)Simplifying Polygons 多边形化简simultaneously 同时的single linked list 单链表sink 汇点solution n解决方案Solving Linear Equations 线性方程组source 源点spanning forest 生成森林spanning tree 生成树spares graph 稀疏图sparse matrix 稀疏矩阵specify 指定square root平方根square 平方,正方形,广场,方格Squared 平方Stack Overflow 堆栈溢出通常是您的程序陷入了无穷递归,或递归嵌套层数过多。statistical 统计的Steiner Tree Steiner树stem 词根String Matching 模式匹配strongly connected graph 强连通图subgraph 子图subsequent adj随后的,后来的substring 子串(subtree 子树)successor 后继sufficient 充足的;足够的;suffix 后缀Supervisor 监督人symmetric matrix 对称矩阵Ttail pointer 尾指针terminal node 终端结点Text Compression 压缩threaded binary tree 线索二叉树times乘Topological Sorting 拓扑排序toss 扔(硬币)Transitive Closure and Reduction 传递闭包transposed matrix 转置矩阵traversal of tree 树的遍历traversing binary tree 遍历二叉树traversing graph 遍历图tree index 树型索引triangle n三角形triangle inequality三角不等式Triangulation 三角剖分triple 三倍的,三方的,三部分的; 增至三倍;三倍的数[量]; 三个一组;Tromino 三格骨牌Troop 军队,组群truangular matrix 三角矩阵two adjacent sequence elements 两个相邻的元素串two-dimensional array二维数组two-dimensional 维数Uultimate 基本的,终极的unconnected graph 非连通图underflow 下溢undigraph(undirected graph) 无向图union 并集unique identifier唯一的标识符unordered pair 无序对(unordered tree 无序树)uppercase 大写字母盘;以大写字母印刷;大写字母的uppercase(Capital) 大写字母(Lowercase letters小写字母)Vvariable-aggregate data type 可变聚合数据类型variable变量Vertex Coloring 点染色(Vertex Cover 点覆盖)vertex n顶点,最高点vertical n垂直线,垂直面 adj垂直的,顶点的volume n数量,容量Voronoi Diagrams Voronoi图vulnerable 容易受到攻击的Wweakly connected graph 弱连通图weight 权weighted average 加权平均值weighted graph 加权图wooden planks 木板
2023年05月07日
184 阅读
0 评论
0 点赞
2023-05-01
Acw第 101 场周赛
总结太菜了,只能做简单题,复杂点的只能过样例 😭 ,加油吧4972. 解方程给定一个一元二次方程$$ ax^2 + bx + c = 0 $$保证给定方程有解,且恰好有两个不同的实数根。请你对该方程进行求解。一元二次方程求根公式为:$$ x = \frac{-b \pm \sqrt{b^2-4ac}}{2a} $$输入格式共一行,包含三个整数 a,b,c。输出格式共两行,第一行输出较大的根,第二行输出较小的根。结果保留六位小数。数据范围所有测试点满足 −1000≤a,b,c≤1000,保证给定方程有解,且恰好有两个不同的实数根。输入样例:1 30 200输出样例:-10.000000 -20.000000题解:这个比较简单,一次Ac#include <iostream> #include <cmath> #include <iomanip> using namespace std; int main() { int a, b, c; cin >> a >> b >> c; double triangle = sqrt(pow(b, 2) - (4 * a * c)); double res1 = (-b + triangle) / (2 * a); double res2 = (-b - triangle) / (2 * a); if (res1 > res2) cout << fixed << setprecision(6) << res1 << endl << res2 << endl; else cout << fixed << setprecision(6) << res2 << endl << res1 << endl; return 0; }4973. 栈给定一个栈,初始时栈为空。你需要依次进行 n 个操作。每个操作给定一个由小写字母构成的非空字符串,随后进行判断:如果栈中已经包含该字符串,则将该字符串上升至栈顶,栈中其它元素的相对顺序保持不变。如果栈中还未包含该字符串,则将该字符串直接插入到栈的顶部。所有操作完成后,请你按照从栈顶到栈底的顺序,依次输出栈内所有元素。输入格式第一行包含整数 n。接下来 n 行,每行包含一个由小写字母构成的非空字符串。输出格式按照从栈顶到栈底的顺序,依次输出栈内所有元素。每个元素占一行。数据范围前 55 个测试点满足 1 ≤ n ≤ 10。所有测试点满足 1 ≤ n ≤ 2×10^5,每个给定字符串的长度范围 [1,10]。输入样例1:4 apple pear banana pear输出样例1:pear banana apple输入样例2:8 pen book eraser desk desk eraser book pen输出样例2:pen book eraser desk题解:自己题目让用stack来操作,但是需求不太好实现,就换成了vector题目中的输出样例可以过,当数据量大的时候就会Time Limit Exceeded#include <iostream> #include <vector> #include <string> #include <algorithm> using namespace std; int main() { int n; cin >> n; vector<string> arr; string temp; for (int i = 0; i < n; ++i) { cin >> temp; vector<string>::iterator it = find(arr.begin(), arr.end(), temp); if (it != arr.end()) { arr.erase(it); arr.push_back(temp); } else { arr.push_back(temp); } } for (vector<string>::reverse_iterator it = arr.rbegin(); it != arr.rend(); it++) { cout << *it << endl; } return 0; }正解-逆向推导#include <iostream> #include <cstring> #include <algorithm> #include <unordered_set> using namespace std; const int N = 200010, M = 11; int n; char str[N][M]; int main() { scanf("%d", &n); for (int i = 0; i < n; i ++ ) scanf("%s", str[i]); unordered_set<string> hash; for (int i = n - 1; i >= 0; i -- ) if (!hash.count(str[i])) { puts(str[i]); hash.insert(str[i]); } return 0; }正解-正向做#include <iostream> #include <cstring> #include <algorithm> #include <unordered_map> using namespace std; const int N = 200010, M = 11; int n; int l[N], r[N], idx; char str[N][M]; unordered_map<string, int> pos; int insert(int k, int x) { l[x] = k, r[x] = r[k]; l[r[x]] = x, r[k] = x; } void remove(int k) { l[r[k]] = l[k]; r[l[k]] = r[k]; } int main() { l[0] = r[0] = 1; l[1] = r[1] = 0; idx = 2; scanf("%d", &n); for (int i = 0; i < n; i ++ ) { char* s = str[idx]; scanf("%s", s); if (pos.count(s)) { int k = pos[s]; remove(k); insert(0, k); } else { pos[s] = idx; insert(0, idx); idx ++ ; } } for (int i = r[0]; i != 1; i = r[i]) puts(str[i]); return 0; }4974. 最长连续子序列给定一个长度为 n 的整数序列 a1,a2,…,an。给定序列满足,任意两个相邻元素之差的绝对值不超过 1,即对于每个 1 ≤ i <= n,保证 | ai+1 − ai | ≤ 1。请你找到给定序列的一个尽可能长的连续子序列,要求该连续子序列应满足其中的最大元素与最小元素之差不超过 1。输出满足条件的最长连续子序列的长度。输入格式第一行包含整数 n。第二行包含 n 个整数 a1,a2,…,an。输出格式一个整数,表示满足条件的最长连续子序列的长度。数据范围前 6 个测试点满足 2 ≤ n ≤ 20。所有测试点满足 2 ≤ n ≤ 10^5,1 ≤ ai ≤ 10^5。输入样例1:5 1 2 3 3 2输出样例1:4输入样例2:11 5 4 5 5 6 7 8 8 8 7 6输出样例2:5题解:自己#include <iostream> #include <algorithm> #include <cstdio> #include <cmath> using namespace std; const int N = 1e5 + 10; int n; int arr[N]; int main(int argc,char** argv){ int n; scanf("%d",&n); for(int i = 0; i < n; i++){ scanf("%d", &arr[i]); } int answer = 0; for(int i = 0; i < n; i++){ int startValue = arr[i]; int maxValue = startValue; int minValue = startValue; for(int start = i + 1;start < n; start++){ maxValue = arr[start] > maxValue ? arr[start] : maxValue; minValue = arr[start] < minValue ? arr[start] : minValue; int absValue = abs(maxValue - minValue); if(absValue <= 1){ answer = start - i + 1 > answer ? start - i + 1 : answer; }else{ break; } } } printf("%d",answer); }正解提取性质: 合法的序列中只会存在两个不同的元素,一个为x另一个就会为y,y=x+1 or y = x-1#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int N = 100010; int n; int w[N], cnt[N]; int main() { scanf("%d", &n); for (int i = 0; i < n; i ++ ) scanf("%d", &w[i]); int res = 0; for (int i = 0, j = 0, s = 0; i < n; i ++ ) { if (!cnt[w[i]]) s ++ ; cnt[w[i]] ++ ; while (s > 2) { cnt[w[j]] -- ; if (!cnt[w[j]]) s -- ; j ++ ; } res = max(res, i - j + 1); } printf("%d\n", res); return 0; }引用1.第 101 场周赛 竞赛 - AcWing弹幕里遇到一个很自信的同学 | AcWing第101场周赛:https://www.bilibili.com/video/BV1to4y1w71n/
2023年05月01日
218 阅读
0 评论
0 点赞
1
...
4
5
6
...
10