通过发送数据包模拟网站登录
在用数据包的形式进行登录之前,其实我是用selenium已经实现了网站登录后跳转至服务界面,拿到服务界面的JSESSIONID,虽然选用了anaconda进行环境管理在环境移植方面有很大的便利,但是还必须确保具有Chrome以及ChromeDriver的驱动版本也要与Chrome本身的版本相适应,综上来看当前的解决方案是不够优雅,所以想用发送数据的形式来获得最终的JSESSIONID。
通过发数据包的形式模拟学校信息化门户网站的登录,这里主要是为了下游的任务做准备,这个任务没有什么技术含量,这里只对模拟登录进行简单的记录。
查看请求登录页面的数据包
登录页面请求表头
这是请求的表头,可以看到第一次请求,没有cookie情况下不用发送任何cookie信息,(accept这一部分没有截图)
登陆页面请求响应
这里set了一个JSESSIONID的 Cookie,肯定不是我们最终要的,只是在进行验证之前的一个会话的状态。
JS
同时,还在查看数据流的时候发现了一系列js的加载。可以看到jQuery这必须要用到不用看,以及qrcode是二维码相关的也可以不用看,可以看一下de ...
打家劫舍问题简单总结
打家劫舍问题
不能偷相邻的两家
198. 打家劫舍
dp定义:在到第i家所获得的最大收益是dp[i]
状态转移方程:取下面两者的最大值, dp[i][j] = Math.max(dp[i-2] + nums[i], dp[i-1])
如果我选择当前第i家的话, 那就不能偷前一家也就是只能是,dp[i-2] + nums[i]
如果我不偷当前一家的话,那就本次没有收益,和在在第i-1家的收益相同, dp[i-1]
初始化: 只有一家那就偷这一家,dp[0] = nums[0], 如果有两家,就选最大的一家偷,dp[1] = Math.max(nums[0], nums[1])
本质上还是看从哪一家先偷比较好
12345678910111213class Solution { public int rob(int[] nums) { int n = nums.length; if (n <= 1) return nums[0]; int[] dp = new int[n]; dp[0] = ...
完全背包问题总结
完全背包问题总结
每个物品是无限制的
也包括组合问题,排列问题:排列问题背包在外层遍历,组合问题物品在外层遍历。
与01背包问题最大的不同是,因为一个物品可以装多次,==背包从前往后遍历==。
组合问题不强调顺序,排列问题强调元素之间的顺序。
组合问题有多少种方法。
递推公式: dp[j] = dp[j] + dp[j - nums[i]]
初始化: dp[0] = 1
外层遍历物品,内层遍历背包
遍历模板:
12345for(int i = 0; i < coins.length; i++){ for (int j = coins[i]; j <= amount; j++){ dp[j] = dp[j] + dp[j-coins[i]]; }}
518. 零钱兑换 II12345678910111213class Solution { public int change(int amount, int[] coins) { ...
01背包问题简单总结
01背包问题总结
每个物品只能用一次
包括组合问题,排列问题。
遍历顺序模板
一般的dp数组定义是:
容量为j的背包的可以凑成的子集的总和
容量为j的背包的可以凑成的目标和的个数
一般是先遍历物品,再遍历背包,而且因为每个物品只能放入一次,所以背包从后向前遍历
123456for (int i = 0; i < stones.length; i++){ for (int j = bagsize; j >= stones[i]; j--){ // dp[j] = Math.max(dp[j], dp[j-stones[i]] + stones[i]); // 状态转移公式 }}
普通01背包问题状态转移公式一般为: dp[j] = Math.max(dp[j], dp[j-nums[i]] + nums[i])
416. 分割等和子集
dp数组含义是,在容量为i的背包中,能装下的最多东西是dp[i]
123456789101112131415161718class Solution ...
生物特征识别-指静脉识别
这个项目,将包含以下流程:ROI提取、图像增强、简单训练。
ROI提取提取流程这里ROI做的比较简单,主要就是通过canny算子提取图像边缘,这个时候会产生很多的噪声边,所以要通过一些规则进行约束,才能使提取到的ROI有真正的作用。
因为图像本身存在曝光等方面的差异,所以要对其进行形态学的腐蚀与膨胀来让图像的轮廓更加清晰。
主要的流程如下:
提取效果
这个ROI提取的流程存在一个问题:没有进行角度的矫正,以及最后得到的图片的size是不同的。
图像增强增强流程在图像增强方面,首先尝试了在指静脉识别领域传统的方法,从尺度归一化、直方图均衡化、阈值分割、细化,发现经过细化之后的图像质量还有识别效果都不是很好。所以又进行了进一步的尝试,还是从文献中得到了另外一个传统的方法–方向谷型检测,这个的效果会比之前的好上很多,这里采用了论文中的8方向的一个方向向量,去对这个图片进行卷积,最终得到方向最大的那个向量。方向谷型检测是对整个图像的处理帮助很大,除此之外还有其他的方法协助增强图像,具体流程如下:
注:红圈中的是我所用的。
方向谷型检测我看在网上没有对方向谷型检测有详细的介绍的 ...
plt.savefig保存图片空白
原来代码
1234plt.figure(figsize=(10, 10))plt.bar(xlist, ylist)plt.show()plt.savefig(path+'.jpg')
在plt.show()展示完之后,plt实际已经产生了一个新的空白图片,所以保存的就是一片空白。
所以在plt.show()之前进行保存就可以。
1234plt.figure(figsize=(10, 10))plt.bar(xlist, ylist)plt.savefig(path+'.jpg')plt.show()
配置实验室用户
centos 包括了建立用户、添加到sudoers、安装虚拟环境virtualenv
建立一个新的用户建立用户, 用adduser可以在home下建立文件夹
1sudo adduser wb
添加密码
1sudo passwd wb
将用户添加到sudoers
123456789# 先更改sudoers的写权限chmod 777 /etc/sudoers# 更改sudoers文件vi /etc/sudoers# 向root下面添加wbroot ALL=(ALL) ALLwb ALL=(ALL) ALL# 再改回sudoers权限chmod 440 /etc/sudoers
安装vim
1yum -y install vim*
安装虚拟环境安装virtualenv, virtualenvwrapper1pip install virtualenv
1pip install virtualenvwrapper
配置在当前用户下添加文件夹 .virtualenvs
1mkdir ./.virtualenvs
在当前的.bashrc中添加
这里面的export VIR ...
Java多线程-1
Java多线程进程与线程的理解多线程的实现
Thread类–继承
Runable接口–实现
Callable接口–实现
Thread类
建立一个线程对像
开启多线程
1234567891011121314151617181920public class threadstest extends Thread{ // 有两种创建线程的方法 // 第一种就是通过继承 Thread 然后重写run的方法 @Override public void run(){ for (int i = 0; i<100; i++){ System.out.println("这里是多线程----------------run"); } } public static void main(String[] args) {// 建立一个多线程中的实例 threadstest thread = new ...
IO
Java I/O
一般在进行文件操作的时候要进行异常处理,养成好习惯
主要学习的就是关于文件的一些操作,并没有学习流。
主要用到的还是File,FileWriter, Scanner
前面的代码没有加异常捕捉,在后面有完整代码
文件的创建
创建一个文件对象
进行创建,如果成功返回true
12File file = new File("./filename.txt");file.createNewFile();
文件写入
创建一个可以写入的对象
写入
关闭
123FileWriter fileWriter = new FileWriter("./filename.txt");fileWriter.write("file1 \nfile2 \n");fileWriter.close();
文件读取
创建一个文件对象
用这个文件对象创建一个读取文件的Scanner
读取
关闭
1234567File file = new File("./filename.txt");Scann ...
Java集合
list
ArrayList1234567891011121314151617181920212223242526272829303132333435363738package TestFile.ArraryClass;import javax.sound.midi.Soundbank;import java.util.ArrayList;import java.util.Collections;public class arraysList { public static void main(String[] args) { ArrayList<Integer> cars = new ArrayList<Integer>(); cars.add(10); cars.add(100); cars.add(59); cars.add(54); cars.add(35); cars.add(98); cars.add(108) ...








