自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 (一)爬取Best Sellers的所有分类信息:爬取流程

需要有一点的爬虫基础!!!这是基于实习期间爬取搜索列表商品信息,自己去分析best sellers的爬取过程!!!再说一遍,没有爬虫基础先去看看别的基础所需知识点python的语法html标签识别(xpath)正则表达式(re)真正的请求相关(requests)解析html为一个etree对象。本次主要开始分析best sellers的请求流程网页内容概览爬取亚马逊的bestseller,站点的url为/gp/bestsellers将这个页面称为base页面,bestseller.

2022-05-29 10:43:38 1217 3

原创 git在真实开发的系列场景问题

以此记录实习期间的git工具的使用,如果入职前git不熟练或者不懂,千万千万小心写代码!!!当然都是犯错是难免了,踩了很多的坑或许会进步很快。不是讲git命令本身,而是结合开发的场景来使用git,当然个人开发和企业级别的团队开发使用git的场景也是不同的。绪论列出经常使用的git命令、个人开发的场景、团队开发的场景。从以上三点来写。常用命令# 目录结构.|-- README.md|-- clickhouse.cpp|-- main.cpp|-- mysql.cpp`-- save.h

2022-05-13 00:08:00 358

原创 xpath定位

定位文本//div[@class='wenben']/text()定位可能出现的文本//div[@class='wenben1' or @class='wenben2']/text()定位css属性的值定位图片链接等等//div[@data-index='9']/@href定位不确定css的keycontains//div[contains(@class,'sbx')]//div[@data-index='9']比如‘sbx1’、‘1sbx’、‘1sbx1‘都会被定位到。sta

2022-04-17 23:36:32 894

原创 clickhouse停用自动清除表/列,也即停用TTL

1、问题解决早上发现clickhouse表中的数据无了,一番筛查下来,发现是TTL(生命周期)的锅。可能是安装clickhouse的时候不小心的配置的,但是搜索一番全是修改TTL时间的,即何时自动删除表中数据,但是想要是不要自动删除数据。在官方文档中找到了线索:即在想要的表下面运行这个就可了# 停用TTLSYSTEM STOP TTL MERGES# 开启TTLSYSTEM START TTL MERGES2、测试根据clickhouse中数据的TTL中的测试代码:创建一个含有TT

2022-02-18 11:48:01 2275

原创 记在服务器部署selenium爬虫

1、安装chromewget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.debsudo dpkg -i google-chrome*安装完后以下命令查看chrome版本信息,为了下载chromedriver用的:google-chrome --version2、去以下链接下载所需的chromedriverhttp://chromedriver.storage.googleapis.com/i

2022-02-17 21:24:12 1161

原创 设计模式-结构型-外观模式-c++

本文不讨论外观模式的具体定义外观模式就是将接口暴露出来提供给用户使用。而且暴露出来的接口通常是封装了其他多个类的方法得到的接口,因此也算是将一些方法进行整合,放到Facade类的接口行为当中。代码:#include<iostream>using namespace std;class SubSystem1{public: string operation1()const { return "SubSystem1,ready!\n"; }

2021-10-19 09:42:39 137 1

原创 设计模式-结构型-装饰模式-c++

本文不讨论装饰模式的具体定义装饰模式允许将对象放入含有特定行为的装饰类中产生新的行为。这里的多继承要注意使用行为时,要加入类限定符表明是哪个类的行为。代码:#include<iostream>using namespace std;class Component{public: virtual ~Component(){} virtual string operation()=0; };class ConcreteComponent:public Comp

2021-10-18 15:12:39 174 2

原创 设计模式-结构型-组合模式-c++

本文不讨论组合模式的具体定义侯捷的课程里面提到了一个文件系统的组成,用一个组合模式进行实现:其实主要是要包含一个父类的数组。Primitive表示文件,Composit表示目录。文件不能重写add方法,因为不存在文件里面还有文件的情况。文件系统的代码:#include<iostream>#include<vector>using namespace std;class Component{public: virtual ~Component(){}

2021-10-18 11:37:42 128

原创 设计模式-结构型-桥接模式-c++

本文不讨论桥接模式的具体定义这里举得例子很恰当。将两个实现类合并一起同时继承一个类,这样的耦合性比较强,简单来说就是需要将两部分分开来实现,然后将其中一个类内嵌到另一个类当中。内嵌的方式可以有组合和聚合,即一个不是指针,一个是指针。指针指向的更加灵活。还记得我们的适配器模式吗,也是内嵌了一个其他类,来改变这个类的相关接口。这里就分开了形状和颜色类,使得他们通过内嵌的方式来沟通。代码:#include<iostream>using namespace std;class C

2021-10-18 10:22:00 156

原创 设计模式-结构型-适配器模式-c++

本文不讨论适配器模式的具体定义适配器模式用的还是很多的,首先需要明确需要的类,一个Adapter类用来转化需要适配的Adaptee,当然如果需要将Adapter抽象出来也可以给Adapter一个基类。其实适配器STL中很多,比如比如容器适配器queue和stack,因为他们的实现底层都是靠deque双端队列来实现的,只是把接口进行了改变。也可以把map和set看作是容器适配器,他们底层都是通过一个Rb_tree来实现的,只是接口变了。当然还有迭代器适配器和函数适配器,函数适配器最常用的bind绑定参

2021-10-15 16:15:02 141

原创 设计模式-创建型-单例模式-c++

本文不讨论单例模式的具体定义单例模式应该是面试问的最多的一个模式了,手写的概率很大。Singleton表明程序运行时产生的对象只能是一个,那么只能从类内的构造函数进行考虑。步骤:1、将构造函数(默认构造、拷贝构造、赋值构造)放到私有处;2、类内public声明一个静态的自身对象,当然你可以选择是对象或者是指针,指针的话需要自己手动释放内存,而无指针的对象编译器会在程序结束后帮你释放。(但是别作死把析构函数放到了private中);3、类外初始化类内的静态成员变量,这里的初始化分两种,一种是饿汉式

2021-10-15 11:06:34 155

原创 设计模式-创建型-原型模式-c++

本文不讨论原型模式的具体定义原型模式也叫克隆模式,就是在使用的时候,直接调用该类的接口即可得到该类的一个拷贝。存在即合理,那为什么要有原型模式呢,我直接在该类上写出拷贝构造函数和赋值构造函数不行吗?1、为什么不用new一个对象?答:因为每次new一个对象的花销是很大的,我们在new 的时候是会调用该类的构造函数的,如果构造函数内部的实现比较复杂,那么new 的时间就会比较长。还有个原因是new对象无法获得运行时的状态。2、为什么不用拷贝构造函数进行克隆?答:首先得知道我们想要一个对象的副本的时候

2021-10-14 23:06:50 193

原创 设计模式-创建型-建造者模式-c++

本文不讨论建造者模式的具体定义建造者模式字面意思就是建造东西,为了方便的建造东西而不是多种继承的方式或者在一个类种写多种构造函数。思路:1、肯定需要一个建造者类,为了能够更好的指挥建造者,还需要一个指挥者类;当然如果需要的话可以有一个产品类,来放最终指挥者只会建造者建造的产品。2、这样的话,建造者类可以有抽象基类,继承的子类种可以有一个产品类的指针,每当建造者new的时候,就有一个产品new,然后将建造的每一步零件放入到产品当中。3、指挥者的作用用来放入需要指挥的建造者,类内有一个建造者指针。

2021-10-14 21:52:15 150

原创 设计模式-创建型-抽象工厂模式-c++

本文不讨论抽象工厂模式的具体定义抽象工厂比工厂方法复杂一点点,思路还是差不多的,就是自己不生产产品,产品都交由工厂生产。工厂方法就是只生产一个类的产品,即工厂也是一类的工厂,到了抽象工厂就是把工厂再网上抽象一层,即工厂也有很多种。工厂生产的产品是固定的,每一个工厂生产出来的产品又有些许不同。还是要注意内存的释放,这里是交由Client函数进行释放了。图片自此代码:#include<iostream>using namespace std;//椅子的抽象基类class Abs

2021-10-14 16:44:40 155

原创 设计模式-创建型-工厂方法模式-c++

图引用自此

2021-10-14 11:17:11 134

原创 vscode连接服务器出错日志显示“权限不够”问题,直接使用root连接

使用vscode连接服务器的出现错误的方式很多种,有重连两次就行的,给我整蒙了。步骤第一步:在本机的用户目录下创建.ssh文件夹,进入文件夹按住shift+鼠标右键,进入powershell命令窗口,输入命令ssh-keygen回车通过rsa加密算法会生成一对密钥,即一个公钥和一个私钥,如果对非对称加密不了解的同学自行百度。第二步:将公钥(后缀有个pub)发送到服务器,在服务器上输入cd ~/.ssh/进入.ssh目录后,输入vim authorized_keys,将刚才本机生成的公钥内容全选复制到这

2021-08-13 17:01:47 2180

原创 通过MobaXterm实现本地浏览器连接实验室服务器

在做oatpp项目的时候,在实验室Linux服务器下,git的代码,直接跑代码。oatpp在设置端口的时候,设置的是8000。在服务器上使用curl http://localhost:8000命令可以出结果{"statusCode":200,"message":"Hello World!"}。然而我想当然的在自己电脑上Google浏览器上直接输入localhost:8000,这样肯定是出不了结果的,因为我的电脑都没有和实验室服务器连接。实验室服务器大家用的终端设备都是MobaXterm,参考网上的资料.

2021-08-10 22:38:34 1872

原创 计算机网络基础--集线器、交换机、路由器(含ARP协议)

本文是整理B站up主free-coder的视频【网络】半小时看懂<计算机网络>,以备日后复习翻阅!集线器最开始要使计算机之间实现通信,采用的是两台计算机之间互联通信线路。这样的方式进行计算机之间的通信会耗费大量的通信资源,而且不方便管理。于是人们在这种模式上加入了转发和标识,转发就是通过集线器(Hub)进行代理转发,不用要求两两计算机之间都要连接通信线路,而只需要将所有的计算机与集线器Hub连接即可,如若发送数据由集线器代理转发。标识就是在计算机接收通过集线器转发的数据时,如果标识.

2021-08-07 10:25:23 3567

原创 206. 反转链表(插入、迭代、递归三种方法解决)

新建链表头插入方法这种方法需要额外新建一个链表,然后利用头插,依次将head的节点插入到新建的节点当中,实现反转。class Solution {public: ListNode* reverseList(ListNode* head) { if(head==NULL||head->next==NULL) return head; ListNode *newHead=new ListNode(0); while(he

2021-04-07 18:32:33 195

原创 C++单链表的创建、打印、获取、插入、删除操作

#include<iostream>using namespace::std;struct ListNode{ int data; ListNode* next;};//创建链表void CreatList(ListNode *L1,int n){ srand(time(0)); for (int i = 0; i < n; i++) { ListNode* p = new ListNode; p-&gt

2021-03-23 14:59:32 225

原创 PCL+VS2019+OpenCV环境配置

参考这篇文章PCL+VS2019环境配置参考这篇文章VS2019+OpenCV环境配置但是最后还需要一步,配置为Debug,需要将C:\Program Files\opencv\build\x64\vc15\bin(是你OpenCV的安装路径下)的两个XXXd.dll文件(如下图)拷贝到C:\Windows\System32路径下。配置Release,选择这三个.dll文件复制到C:\Windows\System32。...

2021-03-12 22:07:10 1052

原创 vector、string等容器的迭代器加减运算

在使用vector、string、deque等容器时,遍历容器中的元素,查找容器中的元素以及各种对容器中元素的操作,都离不开迭代器的使用。我在敲代码的时候经常会报错的一点就是迭代器之间的运算会出错,运算符“+”报错是没有与这些操作数匹配的“+”运算符。反而迭代器的减法不会报错。比如auto s = v.end() - v.begin(); //不报错auto m = v.end() + v.begin(); //“+”报错:没有与这些操作数匹配的“+”运算符这个是为什么呢?迭代器之间减法运算

2020-12-03 17:02:39 9295 3

空空如也

空空如也

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

TA关注的人

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