数据科学基础大作业
软件工程学院的一门课程的大作业
CPP中的istringstream用法解析
引言 因为在日常的学习过程中经常会发现CPP要处理一些带有空格的输入,并且学要以习性读取后进行拆分,甚至有可能出现空格前后的数据格式不同的情况,所以就把最好用的一个模块放在这里进行一下介绍。
使用介绍个人十分推荐使用sstream头文件中带有的istringstream。这个可以较为方便得使用。先说明它只能处理带有空格的一行的字符串,并且在输出时可以根据输出的对象自动转变类型,所以是非常好用的。原理不是很好介绍,到时候有时间再把这一块补上。下面就是直接看代码领悟一下就可以了。
具体代码这里提供两段代码分别是两个使用方式,都可以进行使用,请根据情况自行选择。事先说明,请在程序的开头使用#include<sstream>
123456789while (getline(cin, temp)) { if (temp.size() == 0) ...
RIP跳转导致路由回路的原因分析
引言 这就是个作业,你就放过我吧!
什么是路由回路和慢收敛 首先要明确的就是每个路由器在正常的配置完成了动态路由跳转之后都有一个Routing Table上面记载着到目标网段的跳数。如下图:
这时候会出现意外情况,比如说C路由器连接的10.4.0.0网段突然炸了,不能进行访问了,C路由器中就会直接采取协议的标准将C抵达该网段的跳数设置为不可达,如下图:
关键在这里就发生了问题,就是RIP的协议采用的是定时更新而不是触发更新,所以发生问题的C路由器决定再下一次的通信过程中将这个不幸的消息告诉他的伙伴,但是问题是他的伙伴和他通信的时候他会发现他的邻近的伙伴是可以抵达10.4.0.0网段的,这时候他发现路由器B的Routing Table中有信息说他只用1跳就能抵达目标网段,然后在路由器B将信息发给她之后他就直接还给路由器B,路由器B收到了路由器C ...
微信小程序+Django后端真机调试
引言 在我开发的过程中碰到了因为要真机调试并且要使用后端返回的数据。所以我试了试怎么在本地的局域网的环境下进行真机调试。首先前提条件是需要手机和电脑连在同一个WiFi网络环境下
后端调整首先要在当前系统下使用ipconfig /all查看电脑在本地的局域网IP,直接使用他推荐的那个。然后再后端的settings.py文件中的ALLOWED_HOSTS属性调整如下:ALLOWED_HOSTS = ['localhost', '0.0.0.0:8000', '你电脑的局域网IP','127.0.0.1']
前端调整改变前端的请求地址,改为自己刚刚搜索到的电脑的局域网IP。前端就只用调整这些。
启动项目后端的命令行启动的时候使用命令行python manage.py runserver 0.0.0.0:8000 ...
Python爬虫xpath解析
引言 上篇文章挖了个坑说要解释爬虫的程序,那就找时间填上了,其实Python的爬虫十分的简单,基本上只有要有一个模板,就可以了,这里恬不知耻的推广一下我的模板,我的这个爬虫前面的两个准备文件比较完善,可以直接套用,提高爬虫的安全性。
核心代码url的获取作为爬虫肯定要知道哪一个网址是目标,然后进行观察,网址是不是有翻页的能力,有的话翻页的能力在url上是怎么体现的,总结出翻页的时候url的变化规律,根据这个规律在你的爬虫中先自己生成一个或者是一组的请求url这就是第一步
爬取内容我使用的是Python提供的request和lxml包中的etree。当你确定了你的url之后使用python的request获取这个网页的数据。然后使用etree对网页的内容进行解析。这两个步骤的代码比较简单。
12data = requests.get(url, headers=heade ...
豆瓣图书爬虫
引言 因为在小程序的开发过程中用到了python的爬虫就在这里写下来了,以后的爬虫可以把这个作为一个模板。
代码User.py这个文件的存在是为了生成不同的请求头,这个UserAgent就是一个用户代理,每个浏览器都会有的,爬虫如果不加这个UserAgent,会被网页默认为不通过浏览器来访问,认为是机器,就会限制访问,防止因为被服务器识别为机器人导致IP被封。
12345678910111213141516171819202122232425262728293031323334353637383940414243444546import randomdef getuser(): # 由于频繁的访问,所以做了多个访问头,防止因为被识别为机器访问导致IP被封 USER_AGENTS = [ "Mozilla/5.0 (Windows N ...
GitHub进行git操作反复要求输入密码解决方法
原因说明出现这个情况的原因是使用了https进行clone而没有使用ssh方式,在GitHub的clone按钮处很容易找到并且切换这里不再作演示。
解决方法在自己的电脑本地生成一个ssh key,并将这个key添加到你的GitHub账户中去。
生成方法在gitbash命令行中输入
1ssh-keygen -t rsa -C "你的邮箱"
接下来会弹出提示
1234Generating public/private rsa key pair.Enter file in which to save the key (/c/Users/你的用户名/.ssh/id_rsa): //这里可以自定义ssh的本地文件的保存路径Enter passphrase (empty for no passphrase): //通常不设置,按enter跳过即可Enter same passphr ...
排序算法之堆排序
堆排序原理 堆排序的基本思想是:将待排序序列构造成一个大顶堆,此时,整个序列的最大值就是堆顶的根节点。将其与末尾元素进行交换,此时末尾就为最大值。然后将剩余n-1个元素重新构造成一个堆,这样会得到n个元素的次小值。如此反复执行,便能得到一个有序序列了。
第一步 构造初始堆
假设给定无序序列结构如下
此时我们从最后一个非叶子结点开始(叶结点自然不用调整,第一个非叶子结点 arr.length/2-1=5/2-1=1,也就是下面的6结点),从左至右,从下至上进行调整。
找到第二个非叶节点4,由于[4,9,8]中9元素最大,4和9交换。
这时,交换导致了子根[4,5,6]结构混乱,继续调整,[4,5,6]中6最大,交换4和6。
第二步 得到完整的排序序列将堆顶元素与末尾元素进行交换,使末尾元素最大。然后继续调整堆,再将堆顶元素与末尾元素交换,得到第二大 ...
排序算法之二分法排序
说明 因为平时不是很常用二分法排序,但是有时候会有要求使用二分法排序,所以就把板子放在这里可以直接参考,照着这个样子可以进行适当的改动。
代码 这里用一个整数数组进行示范,比较清晰明了。
1234567891011121314151617181920212223int[] arr = {49, 38, 65, 97, 76, 13, 27, 49, 78, 34, 12, 64, 1}; for (int i = 1; i < arr.length; i++) { int temp = arr[i]; //要插入的第i个元素 int low = 0; int high = i - 1; //插入目标元素的前 i-1 个元素 ...
WechatApp技术笔记之Tab页(三)
微信小程序Tab页我们能够经常看到小程序的页面是这样的布局格式。
但是在实现过程中有一点麻烦,所以就写出来供参考。
页面wxml代码下面的这段代码是只是实现了前三个页面的内容,包括了一些滚动条的内容。
123456789101112131415161718192021222324252627282930313233343536373839404142<!-- 标签页 --><view class="swiper-tab"> <view class="swiper-tab-list {{currentTab==0 ? 'on' : ''}}" data-current="0" bindtap="swic ...