python京东爬商品评论
—注意
①检查是否安装requests库
②import requests
爬京东评论逻辑1、通过抓包得知京东评论的url:一般为xhr或js
1https://api.m.jd.com/?appid=item-v3&functionId=pc_club_productPageComments&client=pc&clientVersion=1.0.0&t=1699439745429&loginType=3&uuid=122270672.16994385407911494698389.1699438541.1699438541.1699438541.1&productId=100062014247&score=0&sortType=5&page=1&pageSize=10&isShadowSku=0&rid=0&fold=1&bbtf=&shield=
2、分析response的结构
可以发现最外层是一个字典,comments键的值是一个列表,有10 ...
Git
GITgit init:将当前目录配置成git仓库
git add XX:将XX文件添加到暂存区
git commit -m "给自己看的备注信息":将暂存区的内容提交到当前分支
git clone git@xxx.com :xxx/XXX.git:将远程仓库XXX下载到当前目录下
版本管理 git log:查看当前分支的所有版本 ...
小厂实习笔记5-前端
杂
1234使用:ctrl + / 注释<div> 是一个块元素 而 <span> 则是行内元素 输入#block 自动生成<div id="block"></div>输入ul#oo 自动生成<ul id="oo"></ul>
JS变量:var 可以存标签 js单双引号没区别
数组里面可以放对象
对象:包括属性和方法
属性:属性可以是字符串、数组、对象、函数等,写成键值对,例如:
Dom 示例
12345678document.getElementById("demo").innerHTML = "Hello JavaScript"// 获取 id=&qu ...
小厂实习笔记4
认识npm:包管理工具。就是一个代码仓库,通过npm的命令可以进行工具的下载。
加密相关知识
aes 对称加密(使用一个密钥,这个密钥既可以加密,也可以解密)
优势:速度快 劣势:不安全
rsa 非对称加密(使用两个密钥,公钥加密的,私钥可以解密)
单独使用步骤:
①后端随机生成公钥+私钥 ②前端请求公钥,后端发过去 ③前端用公钥加密密码,发给后端 ④后端用私钥解密出密码
优势:安全,就算提供公钥出去,别人也解密不了数据。 劣势:速度慢
aes+rsa步骤
①后端随机生成rsa公钥+rsa私钥,前端随机生成aes密钥
②前端请求rsa公钥,后端发过去
③前端用rsa公钥加密aes密钥,用aes密钥加密传输数据,发给后端
④后端用rsa私钥解密出aes密钥,用aes密钥解密出传输数据
参数校验
实体类校验:
12345@NotBlank(message = "用户的姓名不能为空") //用于字符串@NotNull(message = "用户的年龄不能为空") //不能为NULL ...
小厂实习笔记3——Ruoyi 乐观锁实现更正
背景:关于昨天我写的乐观锁,mentor指出了其中的问题,应该把version作为参数传进更新方法里,而不是在更新方法里查数据库获取version。
步骤:
①点击编辑按钮,查询岗位信息selectPostById,岗位信息中就拿到了version
②点击保存按钮,保存修改信息update,在这里把刚刚拿到的version传过去,和数据库version一致的话,操作成功。
controller代码:
123456789101112131415161718192021/** * 根据id查询岗位信息 * @param postId * @return */@Anonymous@GetMapping("/{postId}")public AjaxResult selectPostById(@PathVariable Long postId){ return toAjax(demoPostService.selectPostById(postId));}/** * 更新岗位信息 * @param demoPost * @ret ...
小厂实习笔记2——Ruoyi 乐观锁实现
背景:在ruoyi上添加了新模块,内容为自己手写的crud(用户表)
需求:加上乐观锁。因为实在不想把项目改成MP,所以写了一个非常简略的。
步骤分析:
①使用用户id查询数据库中该用户信息的version;
②把该version添加进需要更新的数据里;
③在确认version与数据库中的一致的情况下,添加数据,version + 1。
代码:
service实现类:
1234567891011121314@Override@Transactionalpublic int updateUser(DemoUser demoUser) { Long userId = demoUser.getId(); //删除用户与岗位关联信息 demoUserPostMapper.deleteUserPostByUserId(userId); //新增用户与岗位关联信息 addUserPost(demoUser); //从数据库获取当前版本号 long oldVersion = demoUserMapper.findVersionByUserId(us ...
小厂实习笔记1——Ruoyi 新建模块
使用ruoyi开发自己的功能时,需要新建模块,并且修改如下pom文件:
代码:
①admin模块:添加新模块依赖
12345<!-- demo--><dependency> <groupId>com.bcump</groupId> <artifactId>bcump-demo</artifactId></dependency>
②父模块:添加新模块依赖
123456<!-- demo--><dependency> <groupId>com.bcump</groupId> <artifactId>bcump-demo</artifactId> <version>${bcump.version}</version></dependency>
③新模块:引入common包
123456789101112131415161718192021222324 ...
csapp bomb lab
简介:终于来到大名鼎鼎的炸弹实验!bomb lab一共有phase_1 ~ phase_6 六个关卡,每一关需要你输入一串密码拆除炸弹。
一、一些汇编基础:
常量以符号$开头:$-42,$0x15213(一定要注意十进制还是十六进制)
寄存器以符号%开头:%esi,%rax(可能存的是值或者地址)
内存地址用括号括起来:如(%rbx),括号实际上是去寻址的意思。
注意:1、寄存器%rdi用于存放传入phase_1的参数,也就是我们输入的字符串。
二、实验准备:
1、进入bomb所在文件夹;
2、修改bomb.exe运行权限: chmod 777 bomb
3、反汇编找出源码:objdump -d ./bomb > bomb.s
3、gdb调试:gdb bomb
三、实验步骤:
1、进入调试,设置断点:break phase_1
2、运行程序:run
3、会出现一段话,示意你输入密码,这里可以先随便输一个;
4、查看第一关汇编代码:disas
5、执行下一步汇编指令:stepi
结果如下:
可以看到一个常量被存进%esi里(%esi是%rsi的一部分),结 ...
操作系统
进程调度方法1、非抢占式
先来先服务:
按照请求的顺序进行调度。缺点:排在长进程后面的短进程需要等待很长时间,短进程的响应时间太长,用户交互体验变差。
最短作业优先:
按估计运行时间最短的顺序进行调度。缺点:如果一直有短进程到来,那么长进程永远得不到调度,长进程有可能会饿死,处于一直等待短作业执行完毕的状态。
高响应比优先:
只有当前运行的进程主动放弃 CPU 时(正常/异常完成,或主动阻塞),才需要进行调度,(调度时计算所有就绪进程的响应比,为响应比最高的进程分配 CPU)。响应比 = (进程的等待时间 + 进程需要的运行时间) / 进程需要的运行时间。
2、抢占式
Ø 最短剩余时间优先:
谁先完成,谁先被调度。 当一个新的作业到达时,其整个运行时间与当前进程的剩余时间作比较。如果新的进程需要的时间更少,则挂起当前进程,运行新的进程。否则新的进程等待。
Ø 时间片轮转:
每个进程被分配一个时间片。系统将所有的就绪进程按先来先服务的原则排成一个队列,每次调度时,把CPU 分配给队首进程,并令其执行一个时间片,当执行的时间片用完时,停止该进程的执行,并将其送往就绪队列的末尾;然后,再把C ...
MIT 6.s081 lab0
MIT 6.S081 lab0: 环境搭建参考:博客 B站
注:最好在Ubuntu 20.04下搭建!!!(这样就不需要编译工具链啦)
1、更新apt源:
1sudo apt update && sudo apt upgrade
2、下载并解压qemu:
12wget https://download.qemu.org/qemu-5.1.0.tar.xztar xf qemu-5.1.0.tar.xz
3、编译qemu:
12cd qemu-5.1.0./configure --disable-kvm --disable-werror --prefix=/usr/local --target-list="riscv64-softmmu"
这里可能出现报错:
错误一:
1ERROR: glib-2.48 gthread-2.0 is required to compile QEMU
解决方法:
1sudo apt-get install libglib2.0-dev
错误二:
12ERROR: pixman >= 0.21.8 n ...



