Web
5.2k 词
0x00 前言今年四月某日,我正写完大部分python qqbot插件,为该做什么发愁。刚好那时有社团展示,我百无聊赖在银杏大道散步闲逛时遇到了一个有趣的web开发向实验室。和摆摊的学长聊天之后,我才发现之前自己写的插件实际上就是web后端开发,而开发或许是比安全更有趣的领域,和他聊了好久之后,我回宿舍开始学Java,直到这学期开始写JavaWeb项目加入了他们实验室。总体还是很有趣的经历。在写文件管理系统项目的时候,有了如下的想法和经历。 0x01 思路十月份某日,Java老师提到他的网站是跑在作为服务器的树莓派上的,说者无心听者有意,我那时不知道脑子怎么一抽,对树莓派突然来了兴趣。刚好那时我在写基于原生JavaWeb+Mybatis+Vue+ElementUI的文件管理系统,如果能和基于树莓派的服务器结合,就能解决租借服务器硬盘容量太少的问题,实现不限速的大容量网盘(如果在同一内网内,网速仅取决于硬盘的IO读写极限,而容量限制也可以通过硬盘阵列解决)。这个想法实在非常非常有趣,如果有足够稳定的内网穿透服务,实现的效果会比组NAS更好而成本也低得多。 在花了一点功夫之后,我成功...
未分类
90 词
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub. Quick StartCreate a new post1$ hexo new "My New Post" More info: Writing Run server1$ hexo server More info: Server Generate static files1$ hexo generate More info: Generating Deploy to remote sites1$ hexo deploy More info: Deployment Push to the Github Pages123$ hexo clean$ hexo g$ hexo...
Web
5.2k 词
Java WebJDBCJDBC驱动连接Mysql数据库8.0MySQL 8.0 以上版本的数据库连接有所不同: 1、MySQL 8.0 以上版本驱动包版本 mysql-connector-java-8.0.16.jar。 2、*com.mysql.jdbc.Driver 更换为 com.mysql.cj.jdbc.Driver。* MySQL 8.0 以上版本不需要建立 SSL 连接的,需要显示关闭。 allowPublicKeyRetrieval=true 允许客户端从服务器获取公钥。 最后还需要设置 CST。 url = “jdbc:mysql:///teaching?useSSL=false&serverTimezone=UTC&allowPublicKeyRetrieval=true” 1234567891011121314151617181920212223public class jdbcdmo { public static void main(St...
Web
6.8k 词
Java leraning Note v.3多线程创建线程 123456789101112131415161718public class threadDemo { public static void main(String[] args) { Thread t = new MyThread(); **t.start(); // 启动线程执行** for (int i = 0; i < 5; i++) { System.out.println("主线程执行" + i); } }}class MyThread extends Thread{ @Override public void run() { for (int i = 0; i <5; i++) { System.out.println("子线程执行输...
Web
3.6k 词
Java leraning Note v.2集合嵌套在Map集合中再放List集合: 123456789101112131415161718192021222324252627package com.D2;import java.util.*;/** * 统计投票人数 ***/public class MapTest { public static void main(String[] args) { **Map<String, List<String>> data = new HashMap<>();** //存入学生数据 List<String> selects = new ArrayList<>(); Collections.addAll(selects,"A","C"); data.put("luoyong",selects); List<...
Web
7.1k 词
Note of Java LearningJava 语法基础引用Java中有引用的概念,类似于C语言的指针。 例如改变指向数组指针(引用数组)的值: 数组也好,字符串通过地址引用也好,都与指针如出一辙嘛。 for each12345678public class Main { public static void main(String[] args) { int[] ns = { 1, 4, 9, 16, 25 }; for (**int n : ns**) { System.out.println(n); } }} int n定义变量,“**:**”用于遍历数组。 此时n直接拿到数组的元素,无需索引,若用ns[i]这种形式存在索引。 输入输出123456789101112Scanner scanner = new Scanner(System.in);// 创建Scanner对象System.out.print(&qu...
Web
864 词
前言最近刚开学比较闲,想写个简单的js插件练练手,刚好看某些评论区低能评论太多,举办侠又有限,就想写个脚本匹配关键字批量举办 基本思路通过B站页面的INITAL_STATE方法获取视频av号,再通过Ajax对api接口发起请求获取评论列表,遍历后将评论aid存到数组,最后循环举办。 关键功能函数为获取评论列表和批量举办,都是发起Ajax请求的函数。 懒得具体写函数的编写过程了,都是很清楚的思路,也就用了JQuery的$.ajax()函数和异步执行的sleep()函数比较新鲜吧。 具体源码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912...
766 词
最近一直在和python打交道,就想顺便学点Flask漏洞,也算打打python后端框架基础吧。 Flask搭建后端服务众所周知python也可用用来写后端,最简单的框架就是Flask,例如: 12345678910from flask import Flaskapp = Flask(__name__) @app.route('/')# route装饰器将url与下面的函数链接起来def hello_world(): return 'helloworld!'if __name__ == '__main__': app.run(host='0.0.0.0',port=5000,debug=True) # host为0.0.0.0则为暴露在公网,可从任意IP访问 上面的python文件运行时会在5000端口跑web服务,访问https://IP:5000/ 返回hello world!的字符串。 上面的例子为返回简单的字符串,也可用模板渲染html源码在浏览器显示: 123456789...
Web
1.7k 词
前言如前所述,前段时间写完B站开播推送后,又陆陆续续修了一些bug加了几个功能,不过都比较无聊,最近又想写个404开播推送用来看holo,才发现这个项目相当有意思,和B站的推送完全不同。而且就我所知nonebot2没有推送404开播信息的插件,所以写下来给后来者参考。当然致命的问题仍然是没用异步,很容易阻塞。 基本逻辑和关键源码F12监听网络找了半天,终于找到了直播状态相关的url接口,也就是https://www.youtube.com/youtubei/v1/updated_metadata?key=AIzaSyAO_FJ2SlqU8Q4STEHLGCilw_Y9_11qcW8油管的直播页面与B站一样是Ajax动态页面,不过直播信息的XHR文件并非是GET请求,而是POST请求方式,所以自然也无法通过改变url获取不同管人的直播信息。没办法,只能通过对比不同页面内以POST方式发送的JSON文件,来找到底是通过哪个参数确定特定管人了。 油管的管人与B站UP主有UID类似,频道主页也有一个唯一固定的参数,即频道ID,因此我一开始以为多半是依据这个确定管人。然而从HTTP请求头的...
Web
2.5k 词
之前写爬虫的时候想找B站的直播流接口抓源,结果发现了个人主页有个监听直播间状态的XHR,就心血来潮想写个开播提醒的QQ机器人,顺便研究了下现有的机器人框架。 go-cqhttp协议层和nonebot2框架层搭建查了下才发现之前大名鼎鼎的酷Q已经是昨日黄花了,不过现在也有较为完整的QQbot协议onebot了,综合考虑了下决定用比较简单的GO-CQhttp搭建,具体的搭建很容易,查文档就行,具体就是找相应的下下来再改个yml配置文件,为了方便下面api文件的编写,最好用websocket反向代理。 Websocket是与http不同的另一种协议,优势是可以做到双向的通信,在推送上比用HTTP更高效,不过websocket不能用一般的Flask编写后端,再加上直接写后端api可扩展性不好,因此就用nonebot2的框架好了,具体的搭建参考文档即可,其实就是pip下依赖和修改配置文件,之后的插件调用在bot.py修改。 简单解释下cqhttp与nonebot2的关系,cqhttp是onebotQQ机器人协议的具体Go实现,运行在服务器的端口,将QQ服务器发送至机器人QQ号的内容进行符合...