st

JDBC2(SQL注入问题、PreparedStatement对象、IDEA连接数据库、Java代码实现事务、数据库连接池)

隐身守侯 提交于 2020-02-12 23:03:04
JDBC SQL注入 概述:是指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中事先定义好的查询语句的结尾上 添加额外的SQL语句 ,在管理员不知情的情况下实现非法操作,以此来实现欺骗数据库服务器执行非授权的任意查询,从而进一步得到相应的数据信息,导致数据泄露。 SQL语句通过 or 被拼接: import java . sql . Connection ; import java . sql . ResultSet ; import java . sql . SQLException ; import java . sql . Statement ; public class SQL 注入 { // 模拟登录业务 public static void login ( String username , String password ) { Connection conn = null ; Statement st = null ; ResultSet rs = null ; try { conn = jdbcUtils . getConnection ( ) ; st = conn . createStatement ( ) ; String sql = "select * from users where `NAME`='" +

AcWing 524 愤怒的小鸟

狂风中的少年 提交于 2020-02-11 06:44:41
题目描述: Kiana最近沉迷于一款神奇的游戏无法自拔。   简单来说,这款游戏是在一个平面上进行的。  有一架弹弓位于 (0, 0) 处,每次Kiana可以用它向第一象限发射一只红色的小鸟, 小鸟们的飞行轨迹均为形如 y = ax^2 + bx 的曲线,其中 a, b 是Kiana指定的参数,且必须满足 a < 0 。 当小鸟落回地面(即 x 轴)时,它就会瞬间消失。 在游戏的某个关卡里,平面的第一象限中有 n 只绿色的小猪,其中第 i 只小猪所在的坐标为 (xi, yi) 。  如果某只小鸟的飞行轨迹经过了 (xi, yi) ,那么第 i 只小猪就会被消灭掉,同时小鸟将会沿着原先的轨迹继续飞行;  如果一只小鸟的飞行轨迹没有经过 (xi, yi) ,那么这只小鸟飞行的全过程就不会对第 i 只小猪产生任何影响。  例如,若两只小猪分别位于 (1, 3) 和 (3, 3) ,Kiana可以选择发射一只飞行轨迹为 y = −x^2 + 4x 的小鸟,这样两只小猪就会被这只小鸟一起消灭。  而这个游戏的目的,就是通过发射小鸟消灭所有的小猪。  这款神奇游戏的每个关卡对Kiana来说都很难,所以Kiana还输入了一些神秘的指令,使得自己能更轻松地完成这个这个游戏。    这些指令将在输入格式中详述。  假设这款游戏一共有 T 个关卡,现在Kiana想知道,对于每一个关卡

开门人和关门人

本小妞迷上赌 提交于 2020-02-10 08:18:50
题目描述: 每天第一个到机房的人要把门打开,最后一个离开的人要把门关好。现有一堆杂乱的机房签到、签离记录,请根据记录找出当天开门和关门的人。 输入: 测试输入的第一行给出记录的总天数N ( N> 0 ),下面列出了N天的记录。 每天的记录在第一行给出记录的条目数M (M > 0 ),下面是M行,每行的格式为 证件号码 签到时间 签离时间 其中时间按“小时:分钟:秒钟”(各占2位)给出,证件号码是长度不超过15的字符串。 输出: 对每一天的记录输出1行,即当天开门和关门人的证件号码,中间用1空格分隔。 注意:在裁判的标准测试输入中,所有记录保证完整,每个人的签到时间在签离时间之前,且没有多人同时签到或者签离的情况。 样例输入: 3 1 ME3021112225321 00:00:00 23:59:59 2 EE301218 08:05:35 20:56:35 MA301134 12:35:45 21:40:42 3 CS301111 15:30:28 17:00:10 SC3021234 08:00:00 11:25:25 CS301133 21:45:00 21:58:40 样例输出: ME3021112225321 ME3021112225321 EE301218 MA301134 SC3021234 CS301133 1 #include <cstdlib> 2

ST表

偶尔善良 提交于 2020-02-08 20:25:23
ST表 在 \(O(30*n)\) 的复杂度内建ST表 int n; cin>>n; for(int i=1;i<=n;++i) cin>>a[i]; for(int i=1;i<=n;++i) st[i][0]=a[i]; for(int j=1;j<=30;++j) for(int i=1;i<=n;++i) if(i+(1<<(j-1))<=n) st[i][j]=max(st[i][j-1],st[i+(1<<(j-1))][j-1]); 查询复杂度为 \(O(log(n))\) int query(int l,int r){ int len=log2(r-l+1); return max(st[l][len],st[r-(1<<len)+1][len]); } 模板求的是区间最大值,如果需要求最小值,只需要把 max() 改为 min() 即可。 来源: https://www.cnblogs.com/CADCADCAD/p/12284599.html

数据结构-ST表

会有一股神秘感。 提交于 2020-02-08 11:31:15
数据结构-ST表 不可修改,在线查询的 RMQ 问题。 其中 f [ i ] [ j ] f[i][j] f [ i ] [ j ] 表示 i ∼ i + ( 1 < < j ) − 1 i\sim i+(1<<j)-1 i ∼ i + ( 1 < < j ) − 1 这段的 RMQ 值。 时间复杂度 O ( n log ⁡ n ) O(n\log n) O ( n lo g n ) # include <bits/stdc++.h> using namespace std ; const int N = 1e5 + 10 ; namespace ST { class St { public : int f [ N ] [ 30 ] ; } st ; void build ( St & t , int n , int * a ) { for ( int i = 1 ; i <= n ; i ++ ) t . f [ i ] [ 0 ] = a [ i ] ; for ( int j = 1 ; j <= 18 ; j ++ ) for ( int i = 1 ; i + ( 1 << j ) - 1 <= n ; i ++ ) t . f [ i ] [ j ] = max ( t . f [ i ] [ j - 1 ] , t . f [ i + ( 1 << ( j - 1 )

(Easy) Remove All Adjacent Duplicates In String LeetCode

可紊 提交于 2020-02-08 08:23:38
class Solution { public String removeDuplicates(String S) { String result =""; int len = S.length(); Stack <Character> st = new Stack<Character>(); st.push(S.charAt(len-1)); if(S == null || S.length() ==0 ) { return ""; } else if(S.length()==1){ return S; } else { for(int i = S.length()-2; i>=0;i--){ if(st.empty()){ st.push(S.charAt(i)); } else{ if(S.charAt(i)== st.peek()){ st.pop(); } else{ st.push(S.charAt(i)); } } } if(st.empty()){ return result; } else{ do{ result = result + st.pop(); } while(!st.empty()); return result; } } } } 来源: https://www.cnblogs.com/codingyangmao/p/11277744.html

ST表模板

試著忘記壹切 提交于 2020-02-07 22:42:31
//静态区间最值 #include <bits/stdc++.h> using namespace std; const int maxn = 1e5 + 5; int ST[maxn][25]; int a[maxn]; void STinit(int n) { for (int i = 1; i <= n; i++) { ST[i][0] = a[i]; } for (int j = 1; (1 << j) <= n; j++) { for (int i = 1; i + (1 << j) - 1 <= n; i++) { ST[i][j] = max(ST[i][j - 1] , ST[i + (1 << (j - 1))][j - 1]); } } } int query(int l, int r) { int k = (int)(log((double)(r - l + 1)) / log(2.0));//转为以2为底数 return max(ST[l][k], ST[r - (1 << k) + 1][k]); } int main() { int n, m; cin >> n >> m; for (int i = 1; i <= n; i++) { scanf("%d", &a[i]); } STinit(n); while (m--) { int l, r;

AcWing 803.区间合并

▼魔方 西西 提交于 2020-02-07 20:04:07
AcWing 803.区间合并 题目描述 给定 n 个区间 [li,ri],要求合并所有有交集的区间。 注意如果在端点处相交,也算有交集。 输出合并完成后的区间个数。 例如:[1,3]和[2,6]可以合并为一个区间[1,6]。 输入格式 第一行包含整数n。 接下来n行,每行包含两个整数 l 和 r。 输出格式 共一行,包含一个整数,表示合并区间完成后的区间个数。 数据范围 1≤n≤100000, −109≤li≤ri≤109 输入样例: 5 1 2 2 4 5 6 7 8 7 9 输出样例: 3 题解 这个题目是贪心 + 模拟,先按区间的左端点给每个区间排序,然后扫描每一个区间即可 代码如下 #include <iostream> #include <vector> #include <algorithm> using namespace std; typedef pair<int, int> PII; const int N = 1e5 + 10; int n; vector<PII> segs; vector<PII> meger(vector<PII>& segs){ vector<PII> ret; sort(segs.begin(), segs.end()); int st = -2e9, ed = -2e9;//初始区间的端点 //这里做的是扫描区间 for(auto

第一次写博客

筅森魡賤 提交于 2020-02-05 23:50:30
记录c primer plus上一个实用的字符串输入函数 char*s_gets(char*st,int n) //输入函数 { char *ret_val; int i=0; ret_val = fgets(st,n,stdin); if(ret_val) { while(st[i] != '\n' && st[i] != '\0') ++i; if(st[i] == '\n') st[i] = '\0'; else while(getchar() != '\n') continue; } return ret_val; } 今天是我申请博客的第一天,也是写的第一篇随笔,希望自己能不忘初心,在假期结束前把c primer plus 这本书给看完。 加油!奥里给 来源: https://www.cnblogs.com/mirrormy/p/12267214.html

洛谷——P3379 【模板】最近公共祖先(LCA)

怎甘沉沦 提交于 2020-02-04 14:50:45
题目链接 Tarjan #include<bits/stdc++.h> using namespace std; const int maxn=5e6+5; struct node { int v,index,next; node(){} node(int a,int b,int c) { index=a; v=b; next=c; } }; int N,M,S,cnt,qcnt; node query[maxn<<1],edge[maxn<<1]; int ans[maxn],fa[maxn],vis[maxn],head[maxn],qhead[maxn]; void tarjan(int s,int pre); int find(int p); void add(int i,int from,int to); void qadd(int i,int from,int to); int main() { fill(fa,fa+maxn,-1); fill(head,head+maxn,-1); fill(qhead,qhead+maxn,-1); int i,from,to; scanf("%d%d%d",&N,&M,&S); for(i=1;i<N;i++) { scanf("%d%d",&from,&to); add(0,from,to); add(0,to,from);