- 博客(46)
- 收藏
- 关注
原创 tkinter快键画布
这个画板仅仅是为了服务于个人设计的截图功能贴图功能中的画板,方便我直接进行继承拓展。截图自制工具详见我的主页。个人认为设计可谓相当简洁优雅。
2025-03-16 23:17:12
181
原创 python练手项目-截图工具(轻量化)
这是用Python做到截图工具,不过由于使用了ctypes调用了Windows的API, 同时访问了Windows中"C:/Windows/Cursors/"中的.cur光标样式文件, 这个工具只适用于。目前模块尚未完成,只包含了基本的截图时调整大小,保存,翻页查看不同截图这些简单功能;后续会继续完善,但当前模块的可用性已足够,且代码经过重构,具备一定的可读性以及可拓展性。这一个第三方库,和别的使用pygame\pyautogui等模块不同,该工具着重强调轻量化,无关或没必要使用的库尽可能不使用。
2025-02-08 22:59:08
1034
1
原创 Python自带模块实现屏幕像素高效操作
上述方法比通常使用PIL的Image.ImageGrab方法要高效非常多,因为Image.ImageGrab是基于IO截屏操作的,频繁的IO操作使单纯进行屏幕像素访问十分低效。而上述方法采用的是BitBlt。BitBlt是一种高效的位图操作方法,可以将窗口的内容复制到内存设备上下文中,然后通过GetPixel或直接访问位图数据来获取像素颜色。就像素访问而言其性能显著强于前者。Windows GDI) (位图函数 - Win32 apps | Microsoft Learn。
2025-01-21 15:59:41
366
原创 DNS解析域名简记
需要注意的是,域名的知名度并不是决定其顶级域名是否被省略的因素。而且域名的补全也不总是准确的,特别是当存在多个可能的顶级域名后缀时。但有时候,我们输入网址时可能会省略顶级域名,例如:```https://boardmix.cn/app/editor/file```根域名服务器和顶级域名服务器都是为我们指路找权威命名服务器用的。如果DNS服务器无法解析,它可能会尝试添加常见的顶级域名后缀,如“.com”、“.org”等。域名是由: ```权威域名.顶级域名.根域名```,组成的。浏览器层面会尝试自动补全。
2025-01-11 12:08:02
408
原创 IP地址与Mac地址
③需要注意,只要两台网络设备之间能够直连,它们所处的网络就能被称为局域网,当然这是一种广义的理解。根据这一特性,ARP解析出的Mac地址在无数个局域网中发力,从而使数据在无数个可以直连的网络设备中实现遥远的传输。因此,IP地址的诞生,一来是为了破除地理位置的约束,让远在天边的两台设备即使不能直连,但也能通过无数个其他设备的直连实现最终连接;问题2:根据ARP地址解析协议,将IP地址 -> Mac地址 , 从而在可直连的局域网中,将数据传输到下一个更靠近客户端的网络设备。③Mac地址就是这部手机的产商编号。
2025-01-09 11:51:47
375
原创 TCP/IP四层模型
③网际层,"网际"是网络与网络的交际,直接与物理的网络设备打交道。②传输层,"传输"指端到端的传输,从起点到终点,确保整条路线的安全可靠(TCP/UDP协议);比喻:快递分拣人员,他们为寄送包裹挂上标签打上保险,保障每个包裹能安全抵达目的地。比喻:包裹途经的各个路由中转部门。它们通过查看包裹的目的地,决定包裹的下一站,比喻:寄送方,他们关心寄送的东西,收件人,寄送到哪,什么方式签收等等;比喻:包裹的实际运送人,如货车司机,快递员,它们关心包裹的真实运送。④数据链路层,关心最底层数据的可靠传输。
2025-01-09 11:12:16
333
原创 TCP与UDP协议
TCP使用序列号(Sequence Numbers)来确保数据包的顺序,并且如果发生丢包,接收方会发送一个确认号(ACK)来请求重新发送丢失的数据包。同样将数据分成多个数据报进行发送,但它不保证数据报的顺序,也不提供错误恢复机制。UDP在发生丢包时,确实不能像TCP那样只重新发送丢失的数据包,而是可能需要重新发送整个数据报。)不需要建立连接,它直接发送数据包。当通信结束时,TCP通过四次挥手来断开连接,确保双方都能优雅地关闭连接。TCP头部开销较大,通常为20字节,而UDP头部开销较小,为8字节。
2025-01-09 00:34:53
550
1
原创 简易的照片监控打印程序
当然需要解决一个问题就是,在②时我们利用了重命名的机制,而记录照片打印情况,就是用"文件名: 次数"的形式。因为打印文件夹中的文件会被自动移除,为了能保证拍出来的合格照片都被打印出来,我们需要记住打印到什么位置了。打印时再借助拍马,将需要打印的照片复制到打印文件夹中,拍马便会自动打印对应的图片,并将文件夹中的图片删除。按下"监测"按钮,按钮上的文字会变成"刷新",同时程序开始对监测区进行监测;①轮换存储卡时,你可能无法记得之前拷贝过哪些文件,为了保证拍出来的照片都保存下来,只能是对存储卡中拍摄出来的照片。
2024-11-24 16:44:30
605
原创 一句话讲明Numpy广播原则
看了诸多关于Numpy广播原则的讲解,少数一针间血,还有不部分则越讲越绕;如果要我用一句话讲Numpy的广播原则,我会说;这是什么意思呢?从右往左,这是特别指代在看两个不同的Numpy.array的shape时的观察原则;我们知道,在Numpy中, 对于一个数组的shape, 例如shape=(1, 2, 3), 从右往左维度是依次递增的。所以,从右往左看,实际上就是在看两个Numpy数组的最低维度。"要么相同, 要么为1", 就是指从低维到高维,两个数组的维度大小必须要么相同,要么有一方为1;
2024-11-21 15:50:14
299
原创 运动汇 专业的比赛管理平台数据获取
需要注意上述代码中, 全局变量EVENT_YEAR是指代比赛年份,需要你自己修改成比赛的真实年份;此外,你需要修改读取的文件路径,在代码中是"./sports_meeting_res2024.txt", 里面是我复制下来的html元素内容;右键检查,我们会发现没有任何数据,只有当我们点开这些"第一单元"、"第二单元"等,数据才会加载出来;由于我们只需要分析这一个网页并获取其中的数据,所以我们可以简单的。最后,所有内容就会按照指定格式保存成csv文件!紧接着,直接利用浏览器!
2024-11-15 21:40:19
412
原创 数据分析中一段代码的优化过程
事实上,我在使用time模块测试了代码性能后发现,这段代码的性能甚至比原来更差,慢了大约0.03s左右。在单独拿出sum_confirmed的Country/Region列后,我逐个遍历这些国家名,并在sum_recovered中寻找对应,从而让sum_recovered的每一行数据都能和sum_confirmed对应上。这次的代码,显式的避免了for循环,使用pandas内置的reindex方法进行重新索引,同时使用numpy的nan_to_num对没有匹配上数据行形成的NaN值进行填补。
2024-11-03 15:46:03
253
原创 数据清洗-总结
②不研究的列(这需要我们开始就明确自己的研究目的), 比如我们拿到一份公司招聘数据,字段中还含有HR的名字和联系电话,这些数据正常只有我们真的想去找公司才需要,如果只是做数据分析直接舍去就好,能显著减少数据加载时间和内存占用,何乐而不为呢?但是,通常情况下,哪怕待拆分的列有缺失值或异常值,也是可以通过正则正常拆分的。1、所谓拆,就是将信息成分复杂的字段进行拆分,如数据形如"3室2卫", 其杂糅了两个数字信息,可以拆分成两个单独的字段,使用uint8进行存储,即减少了存储占用,又能方便数据分析。
2024-10-25 15:31:34
346
原创 简记一段数据清洗项目经历
声明:该项目是从github上下载的,原项目地址在:这个数据分析项目选自其中的"Amoy_job", 即"10万条厦门招聘数据分析", 但是没有严格沿用里面的代码,绝大部分都是自己思考所做的数据清洗。注意,此处仅是数据清洗,尚未进入到真正的数据分析和可视化,得出结论这些阶段!
2024-10-17 21:40:39
876
原创 吐槽--pandas模块!!
self.data_frame中field_name字段真的有nan值,这段代码对self.data_frame本身不会有任何反应。这是由于这样的直接赋值语句有一个前提条件,就是赋值的pandas.Series对象的长度必须和pandas.DataFrame对象的行数一致;通过打印才发现,下面的代码会将data_frame中field_name中存在nan值的行直接舍去;直观上看,这句代码应该会将self.data_frame中field_name字段中的nan值去除掉, 事实上,如果。
2024-09-30 14:18:09
199
原创 简记Python多进程知识点
"""进程间数据共享在multiprocessing中一共提供了四种方法其中最常用的是①Queue和②Manager还有③[C->Value+Array]和④Pipe的组合③->严格遵循C语言对数据类型的定义,创建后的变量可以直接在进程间共享④两个队列组成的管道, 1.主进程 -> 子进程 的队列 / 2.子进程 -> 主进程 的队列队列由于其有序性,不会出现资源竞态问题,因此无需加锁"""文末有一个小项目,刚好使用了manager, 可以感受一下。
2024-09-20 12:29:43
787
原创 Python多线程掉坑简记
Python3.8后为builtin的写入操作加锁了,往后的写入操作都变成了原子性操作,不会出现读一半还没写入就被别人抢先一步写入的情况;有伙伴就要吃惊了,如果在Python中, builtin的写入数据是线程安全的,上述结果理应是1000才对啊!如果你是在Python3.8后的版本运行1-1修正后的代码,你会发现无论你怎么运行,number的值都为0!反之,如果你是在Python3.8之前的版本运行上述代码,number的值是不确定的,它甚至可以是负数!结果可想而知,a的值不再是预期的2, 而是1!
2024-09-19 13:37:00
481
原创 Python两种方式实现生产者-消费者模式
设置的超时时间短了,可能queue还有东西需要put,你就认定queue的任务已经全部完成了,过早结束了任务;但是注意,此时线程没有结束,程序依旧在运行,一方面是由于视频代码中使用的是while True死循环,使得程序不可能结束;可以在任务确定结束后,人为的给queue加入任务,从而正常的进入下一次循环,最后结束线程!对应到代码的85和87行;①如果我们只检测消费者队列即html_queue中放进去的任务是否全部完成,显然不可行,因为存在生产者还没生产完产品,消费者就已经将产品全部消费的情况;
2024-09-12 23:26:31
617
原创 记录第一次使用pybind11:DLL Load fail
第一次用pybind11可谓是艰难险阻,主要是太多方面不懂所以碰壁重重,但最后还是靠着python的奇淫巧技挽回一成!简单展示一下基本信息:cpp源文件CMakeLists文件:网上讲pybind11用法的也不少了,但我是用MinW64进行cmake的,因此在我使用cmake时使用了了如下指令:具体使用cmake .. 还是cmake .要看你自己的CMakeLists相较于当前cmd所在目录,这也不是什么问题。
2024-03-26 22:02:26
1211
6
原创 C++代码实现简单的通讯录管理系统
中间加入大量函数,且在诸如查询函数,修改函数,删除函数等函数间建立了相对复杂的关系,譬如删除函数DeleteContactPerson依赖了SelectComtactPerson查询函数,而查询函数又依赖于检查函数CheckContactPerson和展示所有联系人的函数ShowAddressBooks。大量依赖关系主要是为了减少最终的代码量,但似乎代码量还是挺大的.jpg。该代码是我学习1周C++写出来的,诸多不完美之处还需后续改善。
2024-03-10 17:36:16
888
1
原创 VsCode插件配置的一个细节
我一直很纳闷,我在tasks.json中明明指明了编译文件要输出到code_exe这个目录下,但是使用快捷键输出编译文件却始终是在当前目录下输出,我一直百思不得其解,直到后来我意识到Code Runer的配置输出文件与tasks.json配置输出是不同的!我的VsCode下载了Code Runer插件,并在设置中使用了默认run in the terminal,可以使用快捷键Ctrl+Shift+N快速运行程序。接下来,按照我的配置来设置settings.json即可。
2024-03-05 20:40:06
470
1
原创 Selenium自动化
①WindowNotFoundError,浏览器自动强制关闭>>这是由于你切换了页面,如进入到了某个视频的详情页面,导致原窗口(douyin.com找不到了)此外,上述代码获取到的评论不包含回复评论,图片和表情包。②ElementNotFoundError,这个只能是你自己好好检查一下是否将第一条评论的xpath路径复制对了。运行下面代码,登录进抖音,然后在程序中回车,完成Cookie的获取。这种情况我也挺纳闷,可能你要降低一下视频评论的刷新速度?③没有获取到评论数据,报IndexError。
2024-01-19 13:30:43
1004
1
原创 便捷测试正则表达式
为了更好便捷的测试一段python中,一段正则表达式或一段XPath表达式是否正确,编写了一段小程序。代码还有很多值得优化的地方,但毕竟是个工具,够用就行。
2024-01-13 15:20:36
413
1
原创 python爬虫之ip代理
如果不是有短时间爬取巨量数据的需求,一般没必要使用代理服务器。毕竟可以通过随机睡眠降低对服务器的访问频次。同时,请不要使用我的url和Cookie!代理ip通常只能购买,免费的ip可用率极低。
2024-01-10 13:11:01
446
大鱼吃小鱼游戏Python版无Pygame
2025-02-01
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人