二分法

SQL Injection(Blind)

為{幸葍}努か 提交于 2019-11-27 16:27:01
SQL Injection(Blind),即SQL盲注,与一般注入的区别在于,一般的注入攻击者可以直接从页面上看到注入语句的执行结果,而盲注时攻击者通常是无法从显示页面上获取执行结果,甚至连注入语句是否执行都无从得知,因此盲注的难度要比一般注入高。目前网络上现存的SQL注入漏洞大多是SQL盲注。 0x01分类 Booleanbase(基于布尔) 布尔很明显Ture跟Fales,也就是说它只会根据你的注入信息返回Ture跟Fales,也就没有了之前的报错信息。 Timebase(基于时间) 界面返回值只有一种,true 无论输入任何值 返回情况都会按正常的来处理。加入特定的时间函数,通过查看web页面返回的时间差来判断注入的语句是否正确 0x02常用函数 1234567 substr() substr(string string,num start,num length);string为字符串;start为起始位置;length为长度。count() 计数函数 count()函数是用来统计表中记录的一个函数,返回匹配条件的行数select count(*) from mysql.user where id =1ascii()返回对应字符的十进制值length() 返回字符串长度left() left(str, length),即:left(被截取字符串, 截取长度)

二分法

房东的猫 提交于 2019-11-27 14:59:59
二分法查找使用:二分法的输入为一个有序的元素列表,如果目标元素存在有序列表中,返回其位置,否则返回null; 使用二分法查找时,每次比较的元素均为有序列表的中间元素,每次都将余下的元素排查一半; 对于包含n个元素的有序列表,使用二分法查找最大复杂度为Olog(n)。 def binary_search(li , item): low = 0 high = len(li) - 1 while low <= high: mid = (low + high )//2 if li[mid] == item: return mid elif li[mid] > item: high = mid - 1 else: low = mid + 1 return Noneif __name__ == '__main__': li = [1, 2, 3, 4, 5, 6, 7, 8, 9] print(binary_search(li, 9)) 来源: https://www.cnblogs.com/songyuejie/p/11367531.html

C++二分法查找算法

人走茶凉 提交于 2019-11-27 14:33:43
/************************************************************** * 二分法查找算法 * wxz 2011-05-04 ***************************************************************/ #include<iostream> #define MaxSize 100 using namespace std; typedef int DataType; typedef struct ST { DataType Data[MaxSize]; int Length; }ST; void CreateST(ST *st) { int i; cout<<"请输入要建立的顺序表的长度"<<"("<<MaxSize<<"以内)"<<endl; cin>>st->Length; while(st->Length>100) { cout<<"长度不能大于"<<MaxSize<<endl; cout<<"请输入要建立的顺序表的长度"<<"("<<MaxSize<<"以内)"<<endl; cin>>st->Length; } cout<<"请输入"<<st->Length<<"个整数:"<<endl; for(i=0;i<=st->Length-1;i++) cin>>st-

二分法查找

五迷三道 提交于 2019-11-27 00:24:50
二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。 递归实现 def binary_search ( alist , item ) : if len ( alist ) == 0 : return False else : midpoint = len ( alist ) // 2 if alist [ midpoint ] == item : return True else : if item < alist [ midpoint ] : return binary_search ( alist [ : midpoint ] , item ) else : return binary_search ( alist [ midpoint + 1 : ] , item ) testlist = [ 0 , 1 , 2 , 8 , 13 , 17 ,

二分法解方程

醉酒当歌 提交于 2019-11-27 00:11:21
#include <cmath> #include <iostream> using namespace std; float f(float x) { return x * x * x - 5 * x *x + 16 * x - 80; } void main(void) { float x1, x2, x0, f0, f1, f2; do { cout<<"Input x1, x2\n"; cin>>x1>>x2; f1 = f(x1); f2 = f(x2); } while (f1 * f2 > 0); do { x0 = ( x1 + x2) / 2; f0 = f(x0); if ((f0*f1)>0) { x1 = x0; f1 = f0; }else { x2 = x0; f2 = f0; } } while (fabs(f0)>=0.0001); cout<<"x = "<< x0 <<endl; } 转载于:https://www.cnblogs.com/GavinDai/archive/2011/11/13/2247621.html 来源: https://blog.csdn.net/weixin_30736301/article/details/99218607

HDOJ-6621(线段树+二分法)

别说谁变了你拦得住时间么 提交于 2019-11-26 12:11:33
K-th Closest Distance HDOJ-6621 本题可以使用线段树解决,结点存本结点对应的所有元素,并按照从小打到排序 最后使用二分法求解答案。因为题目中有绝对值,所以需要使用两次查找,再相减和k比较 //#include<bits/stdc++.h> #include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<algorithm> #include<vector> using namespace std; int n,m; int l,r,p,k; int l1,r1,p1,k1; int x=0; int arr[100005]; vector<int> v[400020];//注意这里的空间开4*n void build(int node,int l,int r){ v[node].clear(); for(int i=l;i<=r;i++){ v[node].push_back(arr[i]); } sort(v[node].begin(),v[node].end()); if(l==r){ return; } int mid=(l+r)>>1; build(node<<1,l,mid); build(node<<1|1,mid+1,r); } int