首页
题库
公司真题
专项练习
面试题库
在线编程
面试
面试经验
AI 模拟面试
简历
求职
学习
基础学习课
实战项目课
求职辅导课
专栏&文章
竞赛
搜索
我要招人
发布职位
发布职位、邀约牛人
更多企业解决方案
在线笔面试、雇主品牌宣传
登录
/
注册
benjaminaaa
获赞
21
粉丝
4
关注
11
看过 TA
0
男
中山大学
2022
C++
IP属地:广东
划船不用桨 扬帆不用风 我这一生全靠浪
私信
关注
拉黑
举报
举报
确定要拉黑benjaminaaa吗?
发布(14)
评论
刷题
benjaminaaa
关注TA,不错过内容更新
关注
2021-04-10 15:18
中山大学 C++
【CSRF】简单的身份验证只能保证请求发自某个用户的浏览器,却不能保证请求本身是用户自愿发出的。攻击者并不能通过CSRF攻击来直接获取用户的账户控制权,也不能直接窃取用户的任何信息。他们能做到的,是欺骗用户的浏览器,让其以用户的名义运行操作。CSRF(Cross Site Request Forgery)即跨站请求伪造。就是利用后台有规律的接口,例如 localhost/deleteAriticle.php?id=3&username=xiaoxiao ,攻击者在被攻击的网站页面嵌入这样的代码,当用户xiaoxiao访问该网站的时候,会发起这条请求。服务器会删除id为3的数据。客户端防范:对于数据库的修改请求,全部使用POST提交,禁止使用GET请求。服务器端防范:一般的做法是在表单里面添加一段隐藏的唯一的token(请求令牌)。防御措施令牌同步模式(英语:Synchronizer token pattern,简称STP)。原理是:当用户发送请求时,服务器端应用将令牌(英语:token,一个保密且唯一的值)嵌入HTML表格,并发送给客户端。客户端提交HTML表格时候,会将令牌发送到服务端,令牌的验证是由服务端实行的。令牌可以通过任何方式生成,只要确保随机性和唯一性(如:使用随机种子【英语:random seed】的哈希链 )。这样确保攻击者发送请求时候,由于没有该令牌而无法通过验证。Django框架默认带有STP功能: {% csrf_token %}渲染后的效果如下: STP能在HTML下运作顺利,但会导致服务端的复杂度升高,复杂度源于令牌的生成和验证。因为令牌是唯一且随机,如果每个表格都使用一个唯一的令牌,那么当页面过多时,服务器由于生产令牌而导致的负担也会增加。而使用会话(英语:session)等级的令牌代替的话,服务器的负担将没有那么重。
0
点赞
评论
收藏
分享
2021-04-10 15:16
中山大学 C++
123 456 789
#include <iostream> #include <vector> using namespace std; vector<bool> visit(10, false); bool isOk(int next, int last) { if (visit[next]) return false; if((next + last)%2==1) return true; int mid = (next + last) / 2; if(visit[mid]==1) return true; int front...
0
点赞
评论
收藏
分享
2021-03-27 19:31
中山大学 C++
【拥塞算法】BBR算法BBR 是谷歌在 2016 年提出的一种新的拥塞控制算法,已经在 Youtube 服务器和谷歌跨数据中心广域网上部署,据 Youtube 官方数据称,部署 BBR 后,在全球范围内访问 Youtube 的延迟降低了 53%,在时延较高的发展中国家,延迟降低了 80%。BBR 算法不将出现丢包或时延增加作为拥塞的信号,而是认为当网络上的数据包总量大于瓶颈链路带宽和时延的乘积时才出现了拥塞,所以 BBR 也称为基于拥塞的拥塞控制算法(Congestion-Based Congestion Control),其适用网络为高带宽、高时延、有一定丢包率的长肥网络,可以有效降低传输时延,并保证较高的吞吐量,与其他两个常见算法发包速率对比如下:目前有非常多的 TCP 的拥塞控制协议,例如:基于丢包的拥塞控制:将丢包视为出现拥塞,采取缓慢探测的方式,逐渐增大拥塞窗口,当出现丢包时,将拥塞窗口减小,如 Reno、Cubic 等。基于时延的拥塞控制:将时延增加视为出现拥塞,延时增加时增大拥塞窗口,延时减小时减小拥塞窗口,如 Vegas、FastTCP 等。基于链路容量的拥塞控制:实时测量网络带宽和时延,认为网络上报文总量大于带宽时延乘积时出现了拥塞,如 BBR。基于学习的拥塞控制:没有特定的拥塞信号,而是借助评价函数,基于训练数据,使用机器学习的方法形成一个控制策略,如 Remy
2021-03-27
在牛客打卡26天,今天也很努力鸭!
每日监督打卡
0
点赞
评论
收藏
分享
2021-03-24 21:34
中山大学 C++
不同的编译器对C++语言的支持程度不尽相同。作为一个希望具备广泛移植能力的程序库,SGI STL准备了一个环境组态文件,其中定义了许多常量,表示某些组态的成立与否。所有STL头文件都会直接或间接包含这个组态文件,并以条件式写法,让预处理器根据各个常量决定取舍那一段代码
0
点赞
评论
收藏
分享
2021-03-24 21:32
中山大学 C++
😊【进程地址空间】当我们的程序加载到内存的时候首先Linux系统会给当前进程分配一个2^32大小的一块空间 也就是4G。这个空间我们定义为进程的虚拟地址空间那么这个虚拟我们该怎么理解了?IBM是这么解释的:它存在,你能看的见,它是物理的;它存在,你看不见,它是透明的;它不存在,你却看得见,它是虚拟的;它不存在,你也看不见,他被删除了;但是一定要记住虚拟内存和虚拟地址空间不能记混了【用户空间:】1.指令都会放在.text段,只读数据段.rodata一般存放常量字符串;二者都是只能读不能写。2. .data是专门存放初始化且不为0的数据。3. .bss段是存放未初始化的以及初始化为0的数据。当我们在全局的作用域里面去写一个全局变量没有初始化,当我们去打印它的值得时候是一个0,这就是因为它存放在.bss段,我们的操作系统会自己负责把.bss段的数据全部置成0,所以这也就是我们为什么看到未初始化的全局变量我们去拓印它的值得时候是0的原因。4 . 我们程序运行以后了,当我们调用了new 、malloc才会分配堆内存。5.当前程序在运行的过程中会加载一些共享库,也就是动态链接库:windows下就是.dll,Linux下就是so6.在我们程序运行中函数运行或产生线程时每一个独有的stack。且栈是从高地址向低地址进行增长。【内核空间:】主要分为ZONE_DMA 大概16M的大小。ZONE_NORMAL 大概有800多M,进程空间的PCB块进程控制块都在里面存放,以及内核空间的线程还有内核函数在运行时所依赖的栈空间。ZONE_HIGHMEM 这是映射我们高地址的物理内存的时候做地址映射用的。😊每一个进程的用户空间是私有的但是内核空间是共享的😊系统调用是用户空间访问内核的唯一手段;除异常和陷入外,他们是内核唯一的合法入口。
2021-03-24
在牛客打卡23天,今天也很努力鸭!
每日监督打卡
0
点赞
评论
收藏
分享
2021-03-24 21:32
中山大学 C++
😊【进程🆚线程】def:进程是正在运行的程序,他是os资源分配的最小单位,进程有自己的地址空间(资源),包括文本区域、数据区域和堆栈。一个进程不能直接访问另一个进程的地址空间(资源),必须通过IPC,比如管道,消息队列等。def:线程也叫轻量级进程,是进程的执行实体,是进程的一条执行路径,是cpu调度的基本单位,它共享进程的共享资源,并且自己也拥有自己的数据结构(线程id,指令ptr、rg集合、栈、错误的返回码、信号屏蔽码、线程优先级)def:协程是比线程更轻量级的,协程不是由os管理,完全有程序管理。拥有自己的【寄存器上下文和栈】进程切换需要切换整个进程的地址空间(上下文),线程切换只需保存和设置少量rg的内容,不涉及【存储器管理】方面的操作多个线程相对独立,有自己的上下文,切换受系统控制;而协程也相对独立,有自己的上下文,但是其切换由自己控制
0
点赞
评论
收藏
分享
2021-03-23 22:47
中山大学 C++
《Linux内核设计与实现》chp3 进程管理常见的解决竞争的办法就是:自旋锁和信号量在内核中,访问进程通常需要获得指向其pd的指针,实际上,内核中大部分处理进程的代码都是直接通过pd进行的,因此通过current宏找到当前正在运行进程的pd的速度很重要。硬件体系不同,该宏的实现也不同,他必须针对专门的硬件体系结构做处理。有的硬件体系结构可以拿出一个专门寄存器来存放指向当前进程pd的指针,用于加快访问速度。而像x86体系结构(寄存器不富裕),就只能在内核栈的尾端创建thread_info结构,通过计算偏移间接地查找pd。一般程序在用户空间执行。当一个程序调执行了系统调用或者触发了某个异常,他就陷入了内核空间。此时我们称内核“代表进程执行”并处于进程上下文中。在此上下文中current宏是有效的。系统调用和异常处理程序是对内核明确定义的接口,进程只有通过这些接口才能陷入内核执行--对内核的所有访问都必须通过这些接口。
2021-03-23
在牛客打卡22天,今天也很努力鸭!
每日监督打卡
0
点赞
评论
收藏
分享
2021-03-20 15:11
中山大学 C++
常用命令和解决方案
【常用命令】修改百度百科等网页 document.designMode = ’on’!!ffmpeg ffmpeg -i input.m4a output.mp3命令行termial open .一个目录会在Finder窗口中打开此目录。一个很有用的技巧是open .打开当前目录。mac快速预览插件: brew cask install qlcolorcode qlstephen qlmarkdown quicklook-json qlimagesize webpquicklook suspicious-package quicklookase qlvideo【解决方案】linux打开文件夹位...
0
点赞
评论
收藏
分享
2021-03-20 14:55
中山大学 C++
【C/C++】--未完待续1。。。笔试要点* 全局Pp数组在初始化位0,局部Pp数组初始化为乱码* scanf不能输入空格,gets函数可以* 广义表LS=(a1,a2,…,an)非空,a1是LS的表头,(a2,…,an)是LS的表尾,表头可以是原子式表,表尾一定是子表* *string[]指针数组,(*strings)[]数组指针* 抽象类特有的—不可实例化* 第一个枚举成员的默认值为0,后续枚举成员在前一个成员上加1* 3/2:因为两边为整型,所以3/2=1* 字符常量 普通字符‘a’ 转义字符‘\101’* x++只能作右值,++x左右值都可以,so,x++=y++(X)* 特定多态(重载多态、强制多态),通用多态(参数多态、包含多态)* 参数里的表达式从右往左计算
0
点赞
评论
收藏
分享
2021-03-20 10:58
中山大学 C++
static VS inline在头文件中声明为“静态”的作用是为了将变量的链接属性改为内部,不允许其余的文件访问它,起到一个保护作用被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。😊在C语言中,关键字Static有三个明显的作用:--- 在函数体内,一个被声明为静态的变量在这一函数被调用结束后不释放其存储空间。定义为static的局部变量存储在全局区(静态区),而一般的局部变量存储在栈中。--- 在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所有函数访问,但不能被模块外其他函数访问。它是一个本地的全局变量。在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。即这个函数被限制在声明它的模块的本地范围内使用。--- 类中定义的static数据成员属于所有该类对象共享,在内存中只占一份空间,而不是每个对象都分别为它保留一份空间。--- 类中定义为static的成员函数只能直接调用static数据成员,若要访问非静态数据成员,需要加上对象名,因为静态成员函数没有this指针。😊内联函数需要注意点--- 可将代码很少的函数定义为inline函数--- 不要将代码很多的函数定义为inline函数--- 关键字inline必须与函数定义体放在一起才能使函数称为内联--- 仅将inline放在函数声明前面不起作用--- 定义在类声明之中的成员函数将自动地成为内联函数--- 现在的编译器会自动决定是否对函数inline,无论函数前是否加了inline。
0
点赞
评论
收藏
分享
2021-03-20 10:37
中山大学 C++
【索引】😊什么是索引?😁索引是特殊的数据结构,索引存储在一个易于遍历读取的数据集合中,索引是对数据库表中一列或多列的值进行排序的一种结构注释:更新一个包含索引的表需要比更新一个没有索引的表花费更多的时间,这是由于索引本身也需要更新。因此,理想的做法是仅仅在常常被搜索的列(以及表)上面创建索引。索引数据结构,主要包含以下几类二叉树 平衡二叉树 红黑树 Hash表 B-/+Tree😊索引的作用?索引相当于图书上的目录,可以根据目录上的页码快速找到所需的内容,提高性能(查询速度)😊优点:通过创建唯一性索引,可以保证数据库表中的每一行数据的唯一性。可以加快数据的检索速度可以加速表与表之间的连接在使用分组和排序进行检索的时候,可以减少查询中分组和排序的时间😊缺点创建索引和维护索引要耗费时间,这种时间随着数据量的增加而增加。索引需要占用物理空间,数据量越大,占用空间越大会降低表的增删改的效率,因为每次增删改索引,都需要进行动态维护😊应该使用索引的情况1.较频繁地作为查询条件的字段2.经常用连接(join)的字段3.经常需要根据范围进行搜索的字段4.需要排序的字段😊不应该使用索引的情况唯一性很小的情况(select count(discount(column))/count(column) )表数据需要频繁修改字段不在where语句出现时不要添加索引数据量少的表不要使用索引
2021-03-20
在牛客打卡21天,今天也很努力鸭!
每日监督打卡
0
点赞
评论
收藏
分享
2021-04-21 17:17
已编辑
中山大学 C++
【TCP/IP和socket编程常见问题】
tcp连接是什么? 双方都分配空间,为此次连接生成一个fd(文件表述符) 三次握手 因为建立的是虚拟连接,所以为了确保客户端和服务端之间的通信而进行的一系列互相确认的过程 三个方面分析三次握手的原因: 三次握手才可以阻止重复历史连接的初始化(主要原因) 三次握手才可以同步双方的初始序列号 三次握手才可以避免资源浪费 😁原因一:避免历史连接 如果是两次握手连接,就不能判断当前连接是否是历史连接,三次握手则可以在客户端(发送方)准备发送第三次报文时,客户端因有足够的上下文来判断当前连接是否是历史连接: 如果是历史连接...
0
点赞
评论
收藏
分享
2021-03-04 22:11
中山大学 C++
lg+Algo/DS项目经验+专业技能(408编数据库)😀lg:(变量类型、数组指针、expr、f)类&数据抽象(类、复制控制、重载操作符和转换)面向对象与范型编程编译与底层(编译机制、底层原理与内存原理、高性能IO)C++11新特性😀Algo/DS:容器(关联容器、顺序容器)范型Algo==数组链表字符串、栈队列树图==递归循环回溯、dp&贪婪dbfs、查找排序、(数学、哈希表、位运算、并查集)项目经验专业技能/基础知识设计模式(结构型、创建型、行为型)场景题分布式与架构多核Web安卓AI-DM区块
2021-03-04
在牛客打卡8天,今天学习:刷题 1 道/代码提交 4 次
每日监督打卡
0
点赞
评论
收藏
分享
2020-04-27 21:40
中山大学 C++
nothing
2020-04-27
在牛客打卡7天,今天也很努力鸭!
0
点赞
评论
收藏
分享
1
关注他的用户也关注了:
牛客网
牛客企业服务