自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(69)
  • 收藏
  • 关注

原创 Python 爬虫免人机验证的一个方法,反爬虫【爬虫必修课2】

在互联网时代,我们经常需要从网页上获取信息或执行一些自动化操作。通过模拟真实用户的浏览行为,如模拟鼠标移动、点击等操作来实现的。可以一定程度上绕过一些网站的反爬虫措施。

2024-04-20 11:41:16 415

原创 使用 Python 自动化处理微信聊天【营销号必修课2】

在日常工作和生活中,我们经常需要通过微信来进行沟通和协作。然而,手动操作微信可能会很繁琐和耗时。幸运的是,我们可以使用 Python 来自动化微信的一些常见操作,提高工作效率。

2024-04-20 11:34:19 218

原创 selenum操作cookie进行免登陆【爬虫必修课1】

使用 Selenium 自动化登录网站是一个常见的需求。但是直接输入用户名和密码登录非常不安全,同时每次登录都需要重复这个操作也很麻烦。一个更好的方式是使用 Cookie 进行免登录。这篇博客就来介绍如何使用 Selenium 实现 Instagram 的免登录功能。

2024-04-17 22:02:54 264

原创 使用moviepy进行音视频处理(超全面)【营销号必修课1】

在这篇博客中,我们将探讨如何使用Python处理视频文件,包括读取视频参数、剪切视频片段、合并视频片段、裁剪视频以及调整视频大小等功能。这些功能可以广泛应用于视频编辑、视频处理等场景。

2024-04-15 22:00:39 915 1

原创 ins视频批量下载,instagram批量爬取视频信息【爬虫实战课1】

Instagram 是目前最热门的社交媒体平台之一,拥有大量优质的视频内容。但是要逐一下载这些视频往往非常耗时。在这篇文章中,我们将介绍如何使用 Python 编写一个脚本,来实现 Instagram 视频的批量下载和信息爬取。

2024-04-15 21:48:39 566

原创 Linux上编译和测试V8引擎源码

V8引擎是一款高性能的JavaScript引擎,广泛应用于Chrome浏览器和Node.js等项目中。在本篇博客中,我们将介绍如何在Linux系统上使用depot_tools工具编译和测试V8引擎源码。本篇博客介绍了在Linux系统上使用depot_tools工具编译和测试V8引擎源码的详细步骤。通过按照这些步骤进行操作,您可以成功地构建和测试V8引擎,为JavaScript应用程序的开发和优化提供支持。V8官方文档。

2023-12-11 16:50:06 485 1

原创 一个较为实用的日志类【Python】

在软件开发中,日志记录是一项重要的任务,它可以帮助我们跟踪应用程序的行为、故障排查和性能分析。为了简化日志记录的过程并提供更多的灵活性,下面介绍一个名为 LogUtil 的实用日志类。该日志类能够将信息输出到终端,同时存储到指定的log文件中。

2023-12-01 17:01:18 160

原创 git使用patch进行补丁操作

在软件开发中,代码协作和版本管理是至关重要的。Git 是一个流行的分布式版本控制系统,它提供了各种功能来简化团队合作和代码管理。但是如何给已有项目打补丁,如何在线上运行的项目做增量修改是运维以及开发者需要掌握的一个比较高级的git技术,本文将介绍如何使用 Git 的补丁功能进行高效的代码协作。

2023-11-14 19:27:34 2709

原创 使用Grafana与MySQL监控网络延迟

在网络应用中,网络延迟是一个重要的指标,它影响着用户体验和系统性能。本文将介绍如何使用Python编写一个程序来监控网络延迟(Ping)并将结果存储到MySQL数据库中。然后,我们将使用Grafana来创建仪表盘,实时展示网络延迟的数据。当监控网络连接并将数据存储到数据库后,我们可以使用 Grafana 这样的工具来可视化数据并创建仪表盘,以便更直观地查看和分析监控结果。

2023-11-08 15:00:16 620

原创 GDB常用指令与调试汇总

GDB(GNU Debugger)是一个强大的调试工具,用于调试C、C++等编程语言的程序。本文将介绍一些常用的GDB指令,以及通过例子演示如何使用这些指令进行程序调试。

2023-10-24 22:15:26 222

原创 动态规划之买卖股票全解析【通俗易懂】

买卖股票问题是动态规划中最经典的问题我把这一类问题分为两大类。一类是没有限制的,第二类是限制交易数的。总的思路是记录好每天持有的还有每天不持有的,这两种状态即可。每一天的不持有状态是,可能是保持了前一天的不持有状态(不做操作而来的),或者由前一天的持有之后今天卖出去而来的。每一天的持有状态是,可能保持前一天的持有状态而来。或者由今天的不持有且今天买入而来的。(由于dp[0[改变在先 所以是今天)最后返回的都是最后一天不持有的状态。

2023-10-23 20:16:31 200

原创 红黑树与AVL树

红黑树与AVL树是数据结构中避不开的话题,也是面试中常问的问题。今天就把他们总结在一起。

2023-10-17 10:28:08 94

原创 MySQL join的底层原理

面试的时候,被问到join 的底层原理,之前没有深入了解过,今天对这个知识点进行一个学习。

2023-10-10 10:25:39 136

原创 TcpConnection的读写操作【深度剖析】

今天总结TcpConnection类的读写事件。

2023-10-04 00:15:00 237

原创 如何设计一个高效的应用缓冲区【一个动态扩容的buffer类】

在上一个博客,我们介绍到什么是缓冲区,然后也分析了epoll 两个模式使用阻塞与非阻塞缓冲区的区别。epoll与socket缓冲区的恩恩怨怨本文介绍如何设计一个合理的读写缓冲区。

2023-10-01 11:30:21 345

原创 epoll与socket缓冲区的恩恩怨怨

本文深挖网络编程中的缓冲区,从什么是缓冲区出发,然后分析epoll 两个模式使用阻塞与非阻塞缓冲区的区别,最后设计一个合理的读写缓冲区的TCP三次握手成功,TCP连接成功建立后,操作系统内核会为每个连接创建配套的基础设施,包括 发送缓冲区,其大小可通过套接字选项改变。程序调用write函数时,实际所做的事是把数据从应用程序中拷贝到操作系统内核中。既然是写给操作系统,那操作系统就需要提供一个地方给用户写。同理,接收消息也是一样。这个地方就是 socket 缓冲区。

2023-09-29 21:57:24 390

原创 Muduo网络库之Channel、EPollPoller与EventLoop类【深度解析】

重新梳理一遍muduo网络库的类与知识点。Channel、EPollPoller与EventLoop类是muduo库最重要的基础, 他们三类为一体,在底层负责事件循环。EventLoop包含Channel,Poller,EventLoop负责轮询访问Poller,得到激活Channel列表,使Channel自己根据自身情况调用相应回调。

2023-09-29 16:09:29 271

原创 通俗易懂讲解拥塞控制

TCP的拥塞控制,以前觉得老复杂了,今天重温了一遍有了更加清晰的认识。本文就分享我总结出来的拥塞控制原理以及过程。力求通俗易懂。这个是一个发送方维护的一个状态变量,他会根据网络的拥塞程度动态变化。(刚开始的时候cwnd是不断增长的,直到遇到拥塞就会发生相应的调整)加入了拥塞窗口的概念后,此时发送窗口的值是swnd = min(cwnd, rwnd),也就是拥塞窗口和接收窗口中的最小值。

2023-09-23 10:11:30 142

原创 vector的扩容机制—为何是1.5倍或者是2倍

在 C++ 编程中,Vector 是一种常用的动态数组容器。其大小是可以动态调整的,而在扩容操作中,Vector 通常会将容量增加为原来的两倍。本篇博客将详细介绍 Vector 扩容的原理、扩容过程,并解释为何选择两倍进行扩容。如果新空间大小为旧空间大小+1,也就是边插入边扩容,这样每一次插入都要进行拷贝,时间复杂度为O(n),效率非常低下。如果新空间大小为旧空间大小+k,其中k是一个固定的增量,那么在每次扩容时,新空间的大小会增加k个单位。

2023-09-22 09:03:35 925

原创 malloc是如何实现内存分配的?

在C和C++中,malloc函数是用于动态分配内存的常用函数。本文将深入探究malloc函数的内存分配实现机制,详细介绍其工作原理和实现细节。

2023-09-18 09:29:46 417

原创 数据结构之位图【原理与实现】

bitmap意为位图,它的每一位用于存放状态,适用于大规模并且不重复的数据,判断某个数据是否存在于位图之中。bitmap在数据稠密的时候,非常节省空间,但是在数据稀疏的时候,会有极大的浪费。

2023-09-12 14:48:24 747 2

原创 cpp-httplib 源码剖析

之前实现自己的http库的时候感觉有一些设计的不是很好,这几天对cpp-httplib 源码进行剖析,对如何设计http库有了更深入的认识。(主要是对server类进行拆解分析)

2023-09-11 11:20:31 536

原创 图形推理到底如何推?

最近做各大互联网的测评,图形推理这一块做得我头皮发麻,这段时间系统学习一下这一方面的知识,总结其规律分享给大家。

2023-09-06 15:23:52 298

原创 数据库设计一定要遵循三大范式?

前几天再面试百度提前批的时候被问到这个问题,答的不够好,主要是我对这一部分的知识点掌握得不够深入,今天就总结一下关系型数据库的三大范式以及讨论一下数据库设计是否一定要遵循三大范式。特征:无重复列目的:消除实体中列中的重复值或实体的重复属性每一个属性都是原子项,不可分割。一范式(First Normal Form,1NF)是关系数据库设计中最基本的范式。它要求数据库表中的每个列都不可分割地保存一个原子值,即每个列都应该是单一值,不可再分解。

2023-09-04 11:18:00 610

原创 Golang RabbitMQ实现的延时队列

之前做秒杀商城项目的时候使用到了延时队列来解决订单超时问题,本博客就总结一下Golang是如何利用RabbitMQ实现的延时队列的。

2023-09-03 22:07:57 924

原创 RabbitMQ从原理到实战—基于Golang【万字详解】

最近秋招开始找工作,顺便回顾消息队列并且总结。

2023-08-27 16:27:43 2663

原创 Redis数据类型全总结【万字总结】

String(字符串),Hash(哈希),List(列表),Set(集合)及 Zset(sorted set:有序集合)。本文就从内部实现,应用场景以及常用指令出发,介绍这五种数据结构。

2023-08-27 10:53:48 122

原创 Redis数据结构全解析【万字详解】

Redis 数据结构是指底层实现 Redis 键值对中值的数据类型的方式。它包括了 String(字符串)对象、List(列表)对象、Hash(哈希)对象、Set(集合)对象和 Zset(有序集合)对象等。随着 Redis 版本的更新,这些数据类型的底层数据结构也有所不同,如双向链表、压缩列表、哈希表、跳表、整数集合、quicklist 和 listpack 等。这些数据结构的选择使得 Redis 在处理数据的增删查改操作时能够高效地运行。

2023-08-27 09:19:54 645

原创 YOLO算法引擎镜像制作全流程(从标注到模型封装)【万字详解】

在本次“明厨亮灶”项目中,任务是对厨房监控中的违规行为进行监测,这些违规行为包括未戴厨师帽、未穿工作服以及未戴口罩、吸烟、接打电话、老鼠等。为了实现这一目标,在模型选型阶段选择了使用PyTorch框架下的YOLOv5模型。YOLOv5是一种基于深度学习的实时目标检测模型,其主要思想是将目标检测问题转化为一个回归问题,通过将图像划分为多个网格并预测每个网格中是否包含目标物体以及其位置和类别来实现目标检测。相比于传统的目标检测方法,YOLOv5具有更快的速度和更高的准确性(关于YOLOv5模型环境配置和模型搭

2023-08-23 21:06:40 526

原创 c++使用Trie 树实现动态路由(dynamic route)【万字详解】

*所谓动态路由,**即一条路由规则可以匹配某一类型而非某一条固定的路由。例如/hello/:name,可以匹配/hello/geektutu、hello/jack等。动态路由有很多种实现方式,支持的规则、性能等有很大的差异。例如开源的路由实现httplib支持在路由规则中嵌入正则表达式,例如/p/[0-9A-Za-z]+,即路径中的参数仅匹配数字和字母;前缀树作为一种高效的数据结构,可以快速进行前缀匹配,逐级匹配字符,从而实现动态路由的灵活性和高性能。

2023-08-19 11:41:11 1106

原创 动态路由的实现—正则表达式

动态路由有很多种实现方式,支持的规则、性能等有很大的差异。例如开源的路由实现gorouter支持在路由规则中嵌入正则表达式,例如/p/[0-9A-Za-z]+,即路径中的参数仅匹配数字和字母。最近在看cpp-httplib源码的时候,发现这个开源库是也是利用正则化来实现动态路由的。本文就来总结httplib是如何利用正则表达式来进行动态路由的,正则表达式是一种用于描述字符串模式的工具。它由一系列字符和特殊字符组成,可以用来匹配、搜索、替换和提取字符串中的特定模式。

2023-08-17 14:28:08 1285

原创 深度解析Muduo库中的SubReatcor唤醒操作【万字解读】

最近在看muduo库源码的时候注意到了一种比较陌生的线程间通讯方式,他的作用是唤醒subreactor,他是eventfd来实现的。本文就详细介绍与实现一下eventfd。先简单介绍一下什么是eventfd,然后举一个简单的例子,最后总结eventfd在muduo库中的实战应用。Channel类和EpollPoller类是Muduo库中与事件驱动模型紧密相关的两个核心类。Channel类封装了事件的处理逻辑,负责注册、删除和处理文件描述符上的事件。

2023-08-09 10:02:00 677

原创 在docker容器中部署yolov5(基于ncnn神经网络推理框架)

使用Docker部署NCNN推理框架神经网络能够简化环境配置、提供环境隔离和一致性、实现可移植性、提高资源利用率并具备良好的可扩展性。这些好处可以加速开发和部署过程,提升系统的可靠性和稳定性。简化环境配置:NCNN是一个基于C++的轻量级神经网络推理框架,具有高效、快速和低内存占用等特点。使用Docker可以将NCNN及其依赖项打包成一个独立的容器,避免了手动安装和配置各种依赖项的繁琐过程,减少了环境配置的难度。环境隔离和一致性:Docker提供隔离的容器环境,每个容器都拥有独立的文件系统和运行环境。

2023-08-05 21:54:57 1479

原创 MySQL隔离机制以及MVCC实现原理

事务是mysql数据库绕不开的话题,这个文章就详细介绍事务的知识点,主要包括事务的特性、事务引起的问题、事务的隔离机制、以及多版本并发控制( MVCC )。

2023-07-31 16:58:14 157

原创 为什么是B+树?【深度解读】

B+树是一种常用的索引数据结构,在数据库系统和文件系统中广泛应用。它相比于其他数据结构具有许多优点,下面我将一步一步介绍相关概念,并解释为什么要使用B+树以及它的性能。B+ 树就是对 B 树做了一个升级,MySQL 中索引的数据结构就是采用了 B+ 树,B+ 树结构如下图B+ 树与 B 树差异的点,主要是以下这几点:1、叶子节点(最底部的节点)才会存放实际数据(索引+记录),非叶子节点只会存放索引;2、所有索引都会在叶子节点出现,叶子节点之间构成一个有序链表;

2023-07-20 22:38:15 1035

原创 静态库与动态库的制作与使用

当我们开发一个较大规模的程序时,将代码拆分为多个模块可提高可维护性和代码重用性。在C++中,我们可以通过创建和使用静态库和动态库来实现这一点。在本篇博客中,我将为你介绍如何创建和使用静态库和动态库。

2023-07-19 17:03:49 189

原创 C++智能指针shared_ptr的原理与实现

shared_ptr 是 C++ 标准库提供的一个智能指针类,它的原理基于引用计数(reference counting)。当我们使用 shared_ptr 管理一个对象时,实际上会有一个额外的数据结构来维护引用计数信息。这个计数器会记录有多少个 shared_ptr 实例共享同一个指针对象。在创建 shared_ptr 对象时,引用计数会初始化为 1。

2023-07-15 21:20:37 1005

原创 服务中心集群的数据一致性问题

本博客讨论服务中心集群的数据一致性问题。假设我们又三台Eureka server组成的集群,这三台Eureka Server就组成了一个跨区域的高可用集群,只要三个地方的没有出现问题,那整体的性能都不会影响整个架构的稳定性;Eureka Server 通过replicate来同步数据,相互之间没有区分主节点和从节点,所有的节点都是平等的,在这种架构之下,节点通过彼此注册来提高可用性,每个节点需要添加一个或者多个有效的serviceURL来指向其他的节点;

2023-07-12 22:39:38 840

原创 设计模式—结构型模式深度分析与实现【c++与golang】【万字总结】

设计模式系列文章之结构型模式汇总,并且分析他们的原理以及场景。并且分别用c++与go语言进行举例实现。桥接模式通常会于开发前期进行设计, 使你能够将程序的各个部分独立开来以便开发。另一方面,适配器模式通常在已有程序中使用, 让相互不兼容的类能很好地合作。适配器可以对已有对象的接口进行修改,装饰模式则能在不改变对象接口的前提下强化对象功能。此外, 装饰还支持递归组合, 适配器则无法实现。适配器能为被封装对象提供不同的接口,代理模式能为对象提供相同的接口, 装饰则能为对象提供加强的接口。外观模式。

2023-06-30 11:38:59 261

原创 设计模式—行为模式深度分析与实现【c++与golang】【万字总结】

设计模式系列文章之行为模式汇总,并且分析他们的原理以及场景。并且分别用c++与go语言进行举例实现。责任链模式、 命令模式、 中介者模式和观察者模式用于处理请求发送者和接收者之间的不同连接方式:1、责任链按照顺序将请求动态传递给一系列的潜在接收者, 直至其中一名接收者对请求进行处理。2、命令在发送者和请求者之间建立单向连接。3、中介者清除了发送者和请求者之间的直接连接, 强制它们通过一个中介对象进行间接沟通。4、观察者允许接收者动态地订阅或取消接收请求。桥接模式、 状态模式和策略模式。

2023-06-30 08:59:15 626

tiktok爬虫on工具

tiktok爬虫on工具

2024-04-17

ins爬虫on工具,能够批量爬取ins资源

ins爬虫on工具,能够批量爬取ins资源

2024-04-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除