断点

大文件批量上传断点续传文件秒传

浪子不回头ぞ 提交于 2019-12-06 13:47:09
接上篇文章 java 超大文件分片上传 在其基础上继续实现 断点续传和文件秒传功能 在上篇中,我们可以使用 file. slice 方法对文件进行分片,可以从后台读到当前文件已经上传的大小,就可以知道从哪里开始切片,断点续传的原理就是基于这个的。 前端计算文件的 md5 ,后台数据库查询一遍(前提是把 md5 存储了,计算文件 md5 也是需要消耗时间的)即可知道是否有相同文件,这是实现文件秒传的方法。 可能存在的问题: 有两个人同时在上传同一个文件,但前一个人还没有上传完成,此时第二个文件认为是新文件不能秒传 此时获取文件原数据时需要将文件信息保存起来,重点是要保存 md5 ,保证一个文件的 md5 保计算一次 获取断点文件时,真实的文件上传位置应该是从文件系统中读出来的 根据需求说明,后台应该存在四个接口,获取文件信息(包含是否可以秒传),获取断点文件列表,分片上传接口,文件完整性验证 全部源码位置 : https://gitee.com/sanri/example/tree/master/test-mvc /** * 加载断点文件列表 * @return */ @GetMapping("/breakPointFiles") public List<FileInfoPo> breakPointFiles(){ List<FileInfoPo> fileInfoPos =

iOS 开发之 Xcode断点调试以及动态输出

元气小坏坏 提交于 2019-12-06 11:56:46
1、断点的基本操作   断点的操作非常简单,下面通过几张图来介绍一下如何添加、删除、编辑以及使用断点。 2、全局断点   设置全局断点(异常断点),当遇到错误,Debug程序会自动定位到栈底信息,即跳到出错代码所在行。 3、条件断点   设置条件断点,当满足条件的时候,才触发断点,适合用于循环结构中,可以准确的定位到某次循环。 4、符号断点   符号断点可以中断指定函数的调用,也可以定位到出现异常的代码处,并打印异常信息。 5、NSLog输出   在调试的过程中,经常通过NSLog在控制台输出需要的信息。NSLog输出比较消耗系统资源,输出的数据也可能会暴露出App里的保密信息,所在在发布正式版本之前必须把所有的NSLog输出都屏蔽掉。   NSLog除了输出基本信息,对于结构体也可以一次性输出。 6、动态输出   在程序的调试过程中,除了通过断点调试在Xcode下方查看变量的值,也可以通过NSLog在控制台输出想要的信息。使用NSLog输出需要在运行前就把想要输出的信息写好,如果有改变,需要重新编译运行,效率非常低。   下面介绍一种非常简单实用的方式,在程序运行的过程中,通过在控制台输入相应的指令,可以快速的打印输出需要的信息,非常的方便。   动态输出的指令有两个,p和po,与NSLog用法类似,p用于打印输出普通信息,po用于打印输出对象信息。使用动态指令需要与断点配合使用

linux下dbg

浪尽此生 提交于 2019-12-06 07:51:49
b bcm_petra_oam_endpoint_action_set 打断点 n 下一步执行 c 执行 d 取消断点 p *指针 或者变量名 打印指针 结构体 变量值 【文档】 GDB使用速查 启动... 1 设置断点... 1 跟踪执行... 2 调用堆栈... 2 查看信息... 2 多线程,多进程... 2 其他... 3 附录:《 GDB用户使用手册 》 启动 [ 详细 ] 1. 通过gdb启动程序: gdb 可执行文件 ,然后调用 run ,启动程序。另外有一个 start 命令,在main函数入口处断住 2. 连到已经运行的程序: gdb attach 进程ID (进程ID可以通过ps –a查看) 3. 退出gdb调试: detach 设置断点 [ 详细 ] 1. 函数断点: break 函数名 2. 文件断点: break 文件名:行号 3. 条件断点: break … if 条件 或者通过 condition 断点号 条件 修改已经存在的断点 4. 跳过n次后断住: ignore 断点号 count 5. 一次性断点: tbreak … 6. 多函数断点: rbreak regex (regex为函数名的正则表达式) 7. 硬件写断点: watch 变量或表达式 (该表达式值被修改时断)如:watch *(int*)0xbfbdd5c8 8. 硬件读断点:

06 内存断点

不羁岁月 提交于 2019-12-06 05:43:15
【太多事情要做了,这部分难度对我来说又很大,先写一下大体框架,到时候具体函数逆向分析过程给写出来】 问题: 1. 内存断点的实现思路是什么? 2. 操作系统检测的流程是什么? 3. 如何设置与恢复内存断点? 1. 内存断点的设置   内存断点分为两类:访问断点与写入断点。   其本质是调用 VirtualProtected 来修改页(PTE)属性。   1)访问断点,则将页的属性设置为 PAGE_NOACCESS。   2)写入断点,PAGE_EXECUTE_READ。 2. 内存断点的处理流程 3. 设置与恢复内存断点:   其本质就是调用 VirtualProtected,保存原来的页属性,改为新的页属性。   当出现内存访问异常时,再将原来的属性恢复过来。   注意:因为是修改页属性,你设置内存断点可能设置单个字节或字,因此这时当发生内存访问异常时,就需要判断是不是真正需要断下来的地址。     如果是该页的其他地址,则放行;否则就断下。 1 // 内存断点 2 auto er = dbgEvent.u.Exception.ExceptionRecord; 3 if (er.ExceptionInformation[0] == 0) 4 { 5 CString str; 6 str.Format(L"���ϵ㱻����%X,er.ExceptionAddress = %X",

05 软件断点

拈花ヽ惹草 提交于 2019-12-06 05:28:32
【太多事情要做了,这部分难度对我来说又很大,先写一下大体框架,到时候具体函数逆向分析过程给写出来】 问题: 1. INT 3 断点,操作系统检测到的处理流程是什么? 2. 系统设置的INT 3 断点我们应该如何处理? 3. 调试器如何下INT 3 断点? 4. 调试器如何恢复 INT 3 断点? 1. 调试器检测INT 3的流程   当发现 CC 指令时,其会查找 IDT 表走 Trap03,3号中断处理函数。      之后就是我们之前学习过的异常派发流程    2. 系统设置的INT 3 断点我们应该如何处理?   这个我们不用处理,直接 Continue ,系统自动会恢复系统断点。 3. 调试器如何自己下 INT 3 断点   首先,先用ReadProcessMemory 读取原来的地址字节(恢复使用)。   之后,再用 WriteProcessMemory 来写入 CC指令。 1 // 读取原来的断点 2 BOOL isRead = ReadProcessMemory(handle, (PVOID)debugAddress, &oldOrgCode, 1, NULL); 3 UCHAR wirteInt = 0xcc; 4 5 // 写入CC断点 6 isRead = WriteProcessMemory(handle, (PVOID)debugAddress,

【转】Linux gdb调试器用法全面解析

天大地大妈咪最大 提交于 2019-12-06 04:13:46
GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序。 让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。 当程序被停住时,可以检查此时程序中所发生的事,并追索上文。 动态地改变程序的执行环境。 不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须。而且,调试内核和调试应用程序时使用的gdb命令是完全相同的,下面以代码清单22.2的应用程序为例演示gdb调试器的用法。 1 int add(int a, int b) 2 { 3 return a + b; 4 } 5 6 main() 7 { 8 int sum[10] = 9 { 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 11 } ; 12 int i; 13 14 int array1[10] = 15 { 16 48, 56, 77, 33, 33, 11, 226, 544, 78, 90 17 }; 18 int array2[10] = 19 { 20 85, 99, 66, 0x199, 393, 11, 1, 2, 3, 4 21 }; 22 23 for (i = 0; i < 10; i++) 24 { 25 sum[i] = add

Linux gdb调试器用法全面解析

这一生的挚爱 提交于 2019-12-06 01:16:29
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接:https://blog.csdn.net/21cnbao/article/details/7385161 更多精华文章请扫描下方二维码关注Linux阅码场 GDB是GNU开源组织发布的一个强大的UNIX下的程序调试工具,GDB主要可帮助工程师完成下面4个方面的功能: 启动程序,可以按照工程师自定义的要求随心所欲的运行程序。 让被调试的程序在工程师指定的断点处停住,断点可以是条件表达式。 当程序被停住时,可以检查此时程序中所发生的事,并追索上文。 动态地改变程序的执行环境。 不管是调试Linux内核空间的驱动还是调试用户空间的应用程序,掌握gdb的用法都是必须。而且,调试内核和调试应用程序时使用的gdb命令是完全相同的,下面以代码清单22.2的应用程序为例演示gdb调试器的用法。 1 int add(int a, int b) 2 { 3 return a + b; 4 } 5 6 main() 7 { 8 int sum[10] = 9 { 10 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 11 } ; 12 int i; 13 14 int array1[10] = 15 { 16 48, 56, 77, 33, 33, 11, 226, 544,

【转】Fiddler常见用法

梦想与她 提交于 2019-12-06 00:49:03
转载自: https://blog.csdn.net/china_jeffery/article/details/82426586 一、会话过滤器 选中【Filters】–> 【Use Filters】开启过滤功能。 二、抓取HTTPS请求 【Tools】–> 【Options】–>【HTTPS】 三、网速模拟功能 【Rules】–> 【Customize Rules】打开自定义规则脚本编辑界面, “Ctrl+F” 搜索 if (m_SimulateModem) request-trickle-delay 和 response-trickle-delay 分别表示上传(请求)和下载(回复)的延迟,将延迟转换成kbps的公式为: 1000 / kbps = 延迟 。如将上传速度限制为50kbps,则 request-trickle-delay= 1000/50 = 20 。 设置完速度参数之后,选中【Rules】–>【Performance】–>【Simulate Modem Speeds】开启网速模拟功能。 四、HOST设置 【Tools】–>【HOSTS】 注:这里配置的HOST不会影响系统HOST文件。 五、AutoResponder使用 AutoResponder可以针对特定的请求来模拟响应, 以上图为例,再浏览器中访问" https://www.baidu.com

VSCode调试Html中的脚本

自闭症网瘾萝莉.ら 提交于 2019-12-05 23:20:14
一、背景 使用Visual Studio Code写了一个简单的Html页面,想调试下其中script标签里的javascript代码,网上查了一通,基本都是复制粘贴或者大同小异的文章,就是要安装Debugger for Chrome插件,修改launch.json配置信息,F5启动,这些都照做了,但是仍有两个问题,一个是Html文件里不能打断点,只能在js文件里面打,二是chrome打开后说连接不到localhost,下面分别讲讲是怎么解决。 二、Html文件中不能打断点问题 默认情况下,VSCode是不能在Html文件里打断点的,但是可以修改设置,依次打开:文件->首选项->设置,然后功能->调试->勾选上“允许在任何文件中设置断点”。 这样就可以在Html的script标签中打断点了,如果断点打在其他html标签上,VSCode会提示“未验证的断点” 三、Chrome调试问题 (1)请先打开一个文件夹以进行高级调试配置 一开始,我直接新建了一个html文件,然后运行那里显示没有配置,按齿轮图标提示: 查阅资料发现,要用VSCode打开文件所在的文件夹才能进行调试。 (2)Chrome运行后提示无法访问此网站 开始遇到这个问题,网上查了一圈没发现和我一样情况的,一开始以为是端口占用,改了也不行,看路径不对,手动补全,也不行,后来发现我用的是默认生成的launch.json

vscode断点调试js代码的设置

。_饼干妹妹 提交于 2019-12-05 23:18:55
VSCode 上装插件:Debugger for Chrome ctrl+shift+p 选择Extensions:install Extensions,选择Debugger for Chrome,installing,然后reload 修改launch.json { // Use IntelliSense to learn about possible attributes. // Hover to view descriptions of existing attributes. // For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387 "version": "0.2.0", "configurations": [{ "name": "谷歌浏览器", //运行html文件,用谷歌浏览器打开 "type": "chrome", "request": "launch", "url": "${file}", "sourceMaps": true, "webRoot": "${workspaceRoot}" }, { "name": "nodeLauch", //单独调试js,即可以直接运行js "type": "node", "request": "launch", "program"