1、sql排序
#字符串替换SELECT replace('C123~','~','') as int from dual;CAST (REPLACE(REPLACE (sp.plantNumber, '~', ''), 'C', '') AS INT) ASC #排序
#是否包含某个字符SELECT instr('1','~') from dual;INSTR (sp.plantNumber, '~') DESC #排序
#获取字符串中指定字符select REGEXP_SUBSTR ('12~', '[0-9]*') from dual;TO_NUMBER (REGEXP_SUBSTR (sp.plantNumber, '[0-9]*')) ASC, #排序
#筛选指定字符串select TRIM (TRANSLATE ('C1','C0123456789~',' ')) from dual ;
数据库注入一般情况下采用两种方式 :SQLMap 工具注入 和 手工注入 ,SQLMap 核心 :获取数据库里的数据
实验环境 :Kali SQLMap 为攻击方,Windows 7 为被攻击方
一、SQLMap 打开方式 ① 点点点 :采用这种方法打开的 SQLMap 终端是没有后接其它命令的,系统实际上默认执行的是 sqlmap -h 帮助命令,系统会列出相关使用方法
② 命令行直接敲 sqlmap 命令 :sqlmap 实际上是一个 python 脚本,已写入环境变量
二、SQLMap 基本操作 网页传参方式多为 GET 和 POST 两种
1. GET 探测是否可被注入 sqlmap -u [url?id=x] # get方式探测当前页面是否可被注入,所有id参数值全部写上 sqlmap -u [url?id=x] # 多个id值则需要使用引号引起来 # 实际执行命令时去掉[]大括号 一些系统回显提示 :
① 系统已猜测到数据库为 Mysql ,询问是否需要跳过其它数据库类型验证 :
② 确认探测级别 :
度过了欢快的五一假期,MySQL系列也陆续推出了系列四之“查询窗口的使用‘’,使用HHDBCS工具通过语句窗口来执行SQL,如格式化sql、查询分析,对表格进行查询、新增、修改、删除等。欢迎参看下方视频中的操作!社区里还有“Mysql管理系列“其他操作视频:https://dbcs.deskui.com/pages/video_mysql.html,欢迎访问!
尽人事,听天命。
FJOI2022.RP++, FJOI2022.score++; Day -? 进行紧张刺激的复习活动。
有一种 All last 我四位坐庄在拼命尝试缩小点差的感觉。咍咍。
不过我 NOIP 打烂也只能怪自己,和几个朋友聊了一下,感觉考 FJOI 还是心态最重要。那就把心态放平吧。
Day 0 试机日。不得不说感觉键盘不太好用(
和 Stern 一起写了 FHQ-Treap 维护区间加、区间求和,可惜他没能在试机结束之前调出来。
发现这个机子对拍多拍一会就容易卡,有点害怕。
试机之前顺便参观(指站在门口观望)了一下 AHSFNU 的机房。
Day 1 有人开挂修改牌山做出了天胡字一色大四喜四暗刻单骑七倍役满,我含恨被飞。
进场后发现 fhq_treap 坐我旁边。
开题,t1 不会 t2 不会 t3 不会。
t2 写了个暴力,写完发现 t3 是诈骗题,写了个贪心,过了拍就没管了。
出场好像大家都只会 t3,jzp t2 写了 PR,感觉能过。
等成绩的时候找了个地方打扑克。然后顺便进 AHSFNU 的机房逛了逛。发现有三个人在打雀。
张榜,0 + 35 + 100 = 135。
然后后面仔细观察了一波榜发现不对劲,哪里不对劲想必大家都已经知道了。
Day 2 0 + 0 + 6 = 6。
退役了。
正则匹配汇总 1、匹配中文:[\u4e00-\u9fa5]
2、英文字母:[a-zA-Z]
3、数字:[0-9]
4、匹配中文,英文字母和数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
同时判断输入长度:
[\u4e00-\u9fa5_a-zA-Z0-9_]{4,10}
5、
(?!_) 不能以_开头 (?!.*?_$) 不能以_结尾 [a-zA-Z0-9_\u4e00-\u9fa5]+ 至少一个汉字、数字、字母、下划线
$ 与字符串结束的地方匹配
6、只含有汉字、数字、字母、下划线,下划线位置不限:
^[a-zA-Z0-9_\u4e00-\u9fa5]+$
7、由数字、26个英文字母或者下划线组成的字符串
^\w+$
8、2~4个汉字
^[\u4E00-\u9FA5]{2,4}$;
9、最长不得超过7个汉字,或14个字节(数字,字母和下划线)正则表达式
^[\u4e00-\u9fa5]{1,7}$|^[\dA-Za-z_]{1,14}$
10、匹配双字节字符(包括汉字在内):[^x00-xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)
11、匹配空白行的正则表达式:ns*r
评注:可以用来删除空白行
12、匹配HTML标记的正则表达式:<(S*?)[^>]*>.*?|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力
13、匹配首尾空白字符的正则表达式:^s*|s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式
14、匹配Email地址的正则表达式:^[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]@[a-zA-Z0-9][\w\.-]*[a-zA-Z0-9]\.[a-zA-Z][a-zA-Z\.]*[a-zA-Z]$
评注:表单验证时很实用
15、手机号:^((13[0-9])|(14[0-9])|(15[0-9])|(17[0-9])|(18[0-9]))\d{8}$
16、身份证:(^\d{15}$)|(^\d{17}([0-9]|X|x)$)
17、匹配网址URL的正则表达式:[a-zA-z]+://[^s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求
18、匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用
19、匹配国内电话号码:d{3}-d{8}|d{4}-d{7}
评注:匹配形式如 0511-4405222 或 021-87888822
20、匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始
21、匹配中国邮政编码:[1-9]d{5}(?!d)
评注:中国邮政编码为6位数字
22、匹配身份证:d{15}|d{18}
评注:中国的身份证为15位或18位
23、匹配ip地址:d+.d+.d+.d+
评注:提取ip地址时有用
24、匹配特定数字:
^[1-9]d*$ //匹配正整数 ^-[1-9]d*$ //匹配负整数 ^-?[1-9]d*$ //匹配整数 ^[1-9]d*|0$ //匹配非负整数(正整数 + 0) ^-[1-9]d*|0$ //匹配非正整数(负整数 + 0) ^[1-9]d*.d*|0.d*[1-9]d*$ //匹配正浮点数 ^-([1-9]d*.
数据的CIA保护 Confidentiality:机密性指只有授权用户可以获取信息。 Integrity:完整性指信息在输入和传输的过程中,不被非法授权修改和破坏,保证数据的一致性。 Availability:可用性指保证合法用户对信息和资源的使用不会被不正当地拒绝。 三种sql语言 DML database manipulation language 数据库操作语言 select , insert , update , delete 等 当攻击者使用DML语言是,就违反了数据的保密性和完整性(update)。 DDL database definition language 数据库定义语言 攻击者使用DDL违反了数据的完整性(alert)和可用性(drop) DCL database control language 数据库操作语言 数据控制语言用于创建权限,以允许用户访问和操作数据库。 攻击者使用DCL违反了数据的 保密性(grant) 可用性(revoke)。 sql注入的实现 JDBC和sql注入 public static void main(String[] args) throws Exception { Class.forName(com.mysql.cj.jdbc.Driver); //代表外部输入的参数 String parameter = tom' union select null,null from dual'; Connection connection = DriverManager.getConnection(jdbc:mysql://localhost:3306/STOREDB, root, root); //此种方式直接拼接sql,无法防止sql注入的攻击 Statement statement = connection.createStatement(); ResultSet resultSet = statement.
原题传送门
1. 题目描述 2. Solution 1 1、思路分析 定义两个函数 G(n): 长度为n的序列能构成的不同二叉搜索树的个数。 F(i, n): 以i为根、序列长度为n的不同二叉搜索树个数(1 <= i <= n) G(n) = sum{F(i, n)} i in [1, n] 对于边界情况,当序列长度为1(只有根)或为0(空树): G(0) = 1, G(1) = 1
左子树个数 G(i - 1),右子树个数G(n - i) ==> F(i, n) = G(i - 1) * G(n - i) 综上: G(n) = sum{G(i - 1) * G(n - i)} i in [1, n]
2、代码实现
package Q0099.Q0096UniqueBinarySearchTrees; /* 定义两个函数 G(n): 长度为n的序列能构成的不同二叉搜索树的个数。 F(i, n): 以i为根、序列长度为n的不同二叉搜索树个数(1 <= i <= n) G(n) = sum{F(i, n)} i in [1, n] 对于边界情况,当序列长度为1(只有根)或为0(空树): G(0) = 1, G(1) = 1 左子树个数 G(i - 1),右子树个数G(n - i) ==> F(i, n) = G(i - 1) * G(n - i) 综上: G(n) = sum{G(i - 1) * G(n - i)} i in [1, n] 时间复杂度: O(n^2) 空间复杂度: O(n) */ public class Solution { public int numTrees(int n) { int[] G = new int[n + 1]; G[0] = G[1] = 1; for (int i = 2; i <= n; i++) { for (int j = 1; j <= i; j++) { G[i] += G[j - 1] * G[i - j]; } } return G[n]; } } 3、复杂度分析 时间复杂度: O(n^2) 空间复杂度: O(n)
工厂模式 简单工厂模式 工厂模式 抽象工厂模式 Reference 设计模式篇——工厂模式详解
全局变量 默认情况下,变量是全局变量。
全局变量不需要声明,赋值后即创建了这个全局变量,访问一个没有初始化的全局变量也不会出错,只不过得到的结果是nil。
> print(b)nil> b=10> print(b)10> 删除一个全局变量,只需要将变量赋值为nil。
b = nil print(b) --> nil 这样变量b就好像从没被使用过一样。换句话说, 当且仅当一个变量不等于nil时,这个变量即存在。
关键词 以下列出了 Lua 的保留关键词。保留关键字不能作为常量或变量或其他用户自定义标示符:
and break do else elseif end false for function if in local nil not or repeat return then true until while goto 一般约定,以下划线开头连接一串大写字母的名字(比如 _VERSION)被保留用于 Lua 内部全局变量。
./configure --prefix=/www/server/php/74 --with-config-file-path=/www/server/php/74/etc --with-fpm-user=www --with-fpm-group=www --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-jpeg-dir --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip --enable-fpm