Apache JMeter进行TCP并发压力测试初尝试
前言由于互联网编程实验二第三题要求比较使用线程池与否的服务器的并发性能,遂检索信息并了解到Apache JMeter这个工具
本文主要介绍了在已有Java JDK的情况下对Apache JMeter的安装及配置,以及利用JMeter进行TCP压力测试
一、安装及配置先在官网下载压缩包:Apache JMeter - Download Apache JMeter
将文件apache-jmeter-5.6.3.zip解压到自己选择的目录中
在根目录下,找到bin文件夹,进入文件夹中,找到jmeter.bat,双击即可打开软件
二、TCP服务器编写Java代码,在Server类的main函数中,指定一个端口作为服务器端口,并在while死循环中不断接收客户端的请求,对于每一个请求新开一个线程ThreadServer,并在其中处理请求
1234567891011121314151617181920212223public class Server { static int PORT = 9000; static int MAX_POOL = 100; ...
机器学习笔记——浅析L2,1范数正则化的线性回归
前言嘻嘻,刚开始搓逾期了快两周的线性回归实验报告,为了让报告稍微不那么平淡不得不啃论文。
本文从最基本的线性回归开始,对比不同正则化方法的特点和作用,推广到多任务问题并引出L2,1范数正则化,卑微小采购尝试去理解论文是如何思考和优化问题(
参考资料:
[1] 一文讲清楚线性回归(Linear Regression)、逻辑回归(Logistic Regression) - 掘金 (juejin.cn)
[2]一篇文章完全搞懂正则化(Regularization)-CSDN博客
[3] Efficient and Robust Feature Selection via Joint ℓ2,1-Norms Minimization (neurips.cc)
[4] L21范数用于多任务特征选择的一些思考 - 知乎 (zhihu.com)
一、线性回归回顾1. 无正则化项在最简单的线性回归问题[1]中,每个样本$x^{(i)} \in R^n$所对应的的标签$y$是一个值,因此用于预测的参数是一个向量$\theta \in R^n$,即
\hat{y}^{(i)} = \theta^T x^{ ...
Pandas数据分析学习笔记
前言开刷Pandas数据分析,看起来很好理解,不过没做笔记没敲代码心里总是不安稳,所以复现下课程代码并演示其中遇到的问题,顺便水一水笔记好了
参考资料:
课程视频链接:Pandas数据分析从入门到实战
数据及代码示例:ant-learn-pandas: pandas学习课程代码仓库 (gitee.com)
一、数据读取0. 数据类型
数据类型
说明
Pandas读取方法
csv, tsv, txt
用逗号、tab或其它字符分割的文本文件
read_csv
excel
xls或xlsx文件
read_excel
mysql
关系型数据表
read_sql
1. read_csv1.1 读取csv文件csv是以逗号分割的文本文件,如下:
12345userId,movieId,rating,timestamp1,1,4.0,9649827031,3,4.0,9649812471,6,4.0,9649822241,47,5.0,964983815
直接使用read_csv读取该文件
123fpath = "../datas/ml-latest-smal ...
【SZU计算机网络实验】实现码率自适应传输
前言哈哈实验截止时间推迟了一周,不变的还是被ddl追着跑
本次实验主要在上次实验(流式视频传输)的基础上,模拟网络波动的情况,设计从客户端根据网络波动情况请求不同码率的视频片段的算法,从而提升用户体验(quality of experience, or QoE)
相关资料:
实验文档:计算机网络课程综合实验平台 (snrc.site)
一、引入网络波动实验提供的文件库fluctuation.h中包含了许多与引入网络波动相关的函数,将其在server.c中引入
1#include "fluctuation.h"
在代码初始化阶段调用 load_fl() 函数初始化网络波动相关信息
123456789101112/***初始化阶段***/WSADATA wsaData;WSAStartup(MAKEWORD(2, 2), &wsaData);int server_fd, new_socket;struct sockaddr_in server_address;int opt = 1;int addrlen = sizeof(server_address);cha ...
机器学习笔记——LDA线性判别分析
前言机器学习的东西真是又多又杂啊,之前刷吴恩达就见过主成分分析,即PCA(Principle Component Analysis),没见过线性判别分析,即LDA(Linear Discriminant Analysis)。才知道前者是对无标签数据作压缩的,而后者可以对有标签的二分类、多分类任务的数据作压缩。
本文主要讲述了LDA算法的推导,以及展示了LDA算法的代码实现和应用。
参考资料:
周志华《机器学习》,人称西瓜书
更详细的算法推导:机器学习算法推导&手写实现03——线性判别分析 - 知乎 (zhihu.com)
一、算法推导由前言可知,LDA相比于PCA,是用来处理有标签数据的,为了使压缩后的数据仍然能表示分类的情况,我们应该让同类的样本尽可能靠近,异类的样本尽可能远离。
数学表示为:给定数据集$ D = {x_i, y_i}_{i=1}^m $,该数据集共有$m$个样本,每个样本包含一个数据,即一个$n$维的向量$x_i$,以及一个标签,即一个数$y_i$,代表该数据点所在的类别。
当$y_i \in {0, 1}$,说明这是一个二分类任务,我们先从简单的二分类开始 ...
【SZU计算机网络实验】实现流式视频传输
前言一百年没有更新博客了,都怪开学一堆杂活(x
那就顺手把实验报告转到这边吧owo
本实验为SZU原创实验,实验开发团队的老师和助教们都很有耐心。。大赞,环境没配好去群里问是秒回的
相关资料:
实验文档:计算机网络课程综合实验平台 (snrc.site)
一、实验介绍该实验主要实现了一个服务端和一个客户端。其中,服务端利用缓冲区逐段向客户端发送多个视频片段,并在客户端逐段接收,并利用已经设计好的播放器,在网页中播放连续的视频。
二、实验过程0. 环境搭建实验文件中包含了压缩包exp1-lib.zip,exp-code.zip,cne.zip
将其解压,并把前两个压缩包(exp1-lib.zip和exp-code.zip)解压后的文件置于一个目录下,于cne.zip解压出来的文件夹devcpp6中的devcppPortable.exe中打开client.c和server.c文件,选择编译环境为Computer-networks
1. 单文件视频传输阅读代码发现实验文件中已经实现了:
1)服务端的初始化阶段,包括创建套接字,绑定套接字和监听套接字,以及接收客户端下载请求和发送文件大小给客 ...
【CMU 15-213 CSAPP】详解shell lab——编写自己的shell
前言视频已经刷完好几天了,lab才打完这个,不得不说shell lab也是设计的非常贴心,注意事项几乎都能在文档找到。
参考资料:
课程视频链接:2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频
实验文档:shlab.dvi (cmu.edu)
一、实验须知实验文件已经在main函数中为我们完成了命令行参数的读取、给信号绑定handler等主体部分,并且提供了一系列有用好用的函数,我们需要做的只有在tsh.c中完成以下函数:
eval: 解析每条命令行的类型并执行
builtin_cmd: 识别和处理四条内置命令: quit, fg, bg 和 jobs.
do_bgfg: 实现内置命令fg 和 bg
waitfg: 等待前台作业完成
sigchld_handler: 接收SIGCHLD信号
sigint_handler: 接收SIGINT(Ctrl + C)信号
sigtstp_handler: 接收SIGINT(Ctrl + Z)信号
实验文件还提供了参考的tshref,sdriver.pl以及许多tracexx.txt文件供我们对比检验自己的tsh是否 ...
【CMU 15-213 CSAPP】详解cachelab——模拟缓存、编写缓存友好代码
前言本文是15-213 CSAPP系列课程配套实验cachelab的题解,实验分为两个部分:一、编写缓存模拟器(cache simulator),模拟地址与缓存之间的映射关系二、编写缓存友好(cache-friendly)代码,从而优化矩阵转置
碎碎念:cachelab可以用c语言写,终于不用在gdb一行行看汇编了。
参考资料:
课程视频链接:2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频
实验文档:cachelab.dvi (cmu.edu)
getopt编译错误:编译错误 error: implicit declaration of function ‘getopt’ [-Werror=implicit-function-declaration] 解决方法-CSDN博客
PartB思路参考:CSAPP Cache Lab 缓存实验 - 简书 (jianshu.com)CSAPP - Cache Lab的更(最)优秀的解法 - 知乎 (zhihu.com)
Part A: 编写缓存模拟器1. 实验目标在csim.c中编写代码,后编译生成可执行文件,要求该 ...
【CMU 15-213 CSAPP】详解attacklab——用代码注入和ROP攻击程序
前言磕磕绊绊终于把attacklab打完了,有了bomblab的基础打这个真是好玩极了
参考资料:
课程视频链接:2015 CMU 15-213 CSAPP 深入理解计算机系统 课程视频
实验文档:attacklab.pdf (cmu.edu)
零、 实验须知1. hex2raw实验文件中有一个hex2raw,它接收一个文件,文件中是许多以空格分割的两位十六进制数,然后将每个数根据ASCII码转换为字符然后输出,使用方式如下:
已有test.txt如下:1230 31 32 33 34 35 36 37 3839 3a 3b 3c 3d 3e 3f 40 41
调用hex2raw:1root@Andrew:/mnt/d/.c/csapp/target1# ./hex2raw <test.txt >test_raw.txt
得到test_raw.txt如下:10123456789:;<=>?@A
2. code2bytehex2raw已经允许我们将十六进制数转化为字符,然后输入到程序中。现在我们想向程序中注入指令,就只需要得到指令对应的十六进制表示,然后丢到hex ...
【CMU 15-213 CSAPP】详解lab2——bomblab
前言又是一个刚上手差点放弃的lab,一边看视频一边看书一边找资料,初窥门径知道gdb怎么用和汇编怎么看后就开始自己拆弹了
参考资料:
gdb命令:Enscript Output (cmu.edu)
windows和linux读取换行符的转换问题:windows和linux下读取文件换行符的一个坑——\r\n和\n_linux unknown \r\n-CSDN博客
bomblab全攻略:【深入理解计算机系统 实验2 CSAPP】bomb lab 炸弹实验 CMU bomblab
实验过程0. 实验热身0.1 gdb命令先圈一下一些重要的命令:
123456789101112131415161718192021222324# gdb,启动!root@Andrew:/mnt/d/.c/csapp/bomb# gdb bomb# 打印栈信息(gdb) info stack# 打印寄存器的值(gdb) print $rax(gdb) p $rax(gdb) p /x $rip # 输出当前指令地址# 反汇编某个函数(gdb) disas funcName# 将输出信息保存到文件中(很好用,方便 ...