首先我们了解一下,什么是sql?
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。
那么什么是sql注入呢?
看起来很复杂,其实很简单就能解释,SQL注入就是一种通过操作输入来修改后台SQL语句达到代码执行进行攻击目的的技术。
sql注入的产生
知道了sql和sql注入,那么sql注入是如何产生的呢?
在PHP中动态构造SQL语句字符串:
$query = "SELECT * FROM users WHERE username = " .$_GET ["ichunqiu" ];
看上面代码我们可以控制输入参数ichunqiu,修改所要执行SQL语句,达到攻击的目的。
那么我们开始编写一个注入点:
第一步,我们使用if语句来先判断一下变量是否初始化
if (isset ($_GET ["leslie" ])){
}
?>
第二步,在if语句里面,我们连接数据库。在PHP中,这个任务通过 mysql_connect() 函数完成。
mysql_connect (servername,username,password);
servername 可选。规定要连接的服务器。默认是 "localhost:3306" 。
username 可选。规定登录所使用的用户名。默认值是拥有服务器进程的用户的名称。
password 可选。规定登录所用的密码。默认是 "" 。
第三步:连接成功后,我们需要选择一个数据库。
mysql_select_db (database,connection)
database 必需。规定要选择的数据库。
connection 可选。规定 MySQL 连接。如果未指定,则使用上一个连接。
第四步:选择完数据库,我们需要执行一条 MySQL 查询。
mysql_query (query,connection)
query 必需。规定要发送的 SQL 查询。注释:查询字符串不应以分号结束。
connection 可选。规定 SQL 连接标识符。如果未规定,则使用上一个打开的连接。
第五步:执行完查询,我们再对结果进行处理
mysql_fetch_array (data ,array_type)
data 可选。规定要使用的数据指针。该数据指针是 mysql_query() 函数产生的结果。
array_type
可选。规定返回哪种结果。可能的值:
MYSQL_ASSOC - 关联数组
MYSQL_NUM - 数字数组
MYSQL_BOTH - 默认。同时产生关联和数字数组
我们使用echo将执行的SQL语句输出,方便我们查看后台执行了什么语句。
echo $querry
最终代码如下:
if (isset ($_GET ["id" ])){
$con = mysql_connect("127.0.0.1:3306" ,"root" ,"root" );
if (!$con )
{
die ('Could not connect: ' . mysql_error());
}
mysql_select_db("ichunqiu" ,$con );
$querry = "select * from users where id = " . $_GET ['id' ];
$sql = mysql_query($querry ,$con );
$result = mysql_fetch_array($sql );
echo "";
echo "";
echo " id ";
echo " username ";
echo " " ;
echo "";
echo " ".$result ['id' ]." ";
echo " ".$result ['username' ]." ";
echo " " ;
echo "
" ;
mysql_close($con );
echo $querry ;
}
?>
MySQL数据库实验环境配置:
代码层工作已经做好,但是在数据库里面,我们还没有leslie这个数据库啊,接下来我就带大家一步步创建数据库,创建表,创建列,插入数据。
第一步:创建数据库
第二步:创建表users和列id,username,password
第二节 寻找及确认SQL注入
2.1、推理测试法
寻找SQL注入漏洞有一种很简单的方法,就是通过发送特殊的数据来触发异常。
首先我们需要了解数据是通过什么方式进行输入,这里我总结了三个:
GET请求:该请求在URL中发送参数。
POST请求:数据被包含在请求体中。
其他注入型数据:HTTP请求的其他内容也可能会触发SQL注入漏洞。
sql语句最终变为
select * from users where id = 1
执行失败,所以mysql_query()函数会返回一个布尔值,在下行代码中mysql_fetch_array($sql)将执行失败,并且PHP会显示一条警告信息,告诉我们mysql_fetch_array()的第一个参数必须是个资源,而代码在实际运行中,给出的参数值却是一个布尔值。
我们修改代码在
$sql = mysql_query($querry ,$con );下一行加上
var_dump($sql );
可以发现显示bool(false)
为了更好的了解MySQL错误,我们在
$sql = mysql_query($querry,$con);
加上
if (!$sql )
{
die ('error:'
.mysql_error().'' );
}
这样当应用捕获到数据库错误且SQL查询失败时,就会返回错误信息:(我们在参数中添加单引号返回的错误信息)
error:You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
然后借助这些错误,我们这可以推断应该存在SQL注入。还有其他数据库错误信息,以及MySQL其他错误信息,由于篇幅问题就不一一讲解了。
2.2、and大法和or大法
页面不返回任何错误信息,我们就可以借助本方法来推断了,首先我们在参数后面加上 and 1=1和and 1=2看看有什么不同
可以发现and 1=1 返回了数据,而and 1=2没有,这是由于1=1是一个为真的条件,前面的结果是true,true and true 所以没有任何问题,第二个 1=2 是个假条件, true and false还是false,所以并没有数据返回。
好,讲完and,我们自来看看 or ,or就是或者,两个都为假,才会为假。我们先把id改为5,可以发现id=5是没有数据的。
可以发现我们加上or 1=1就成功返回了数据,这是因为1=1为真,不管前面是不是假,数据都会返回,这样就把表里面数据全部返回,我们没看见,是因为代码中并没有迭代输出。这样,我们来修改一下代码。
echo "";
echo "";
echo " id ";
echo " username ";
echo " " ;
while ($result = mysql_fetch_array($sql )) {
echo "";
echo " " . $result [0 ] . " ";
echo " " . $result [1 ] . " ";
echo " " ;
}
然后你就可以发现:
2.3、加法和减法
这里我们需要区分一下数字型和字符串型:
数字型:不需要使用单引号来表示
其他类型:使用单引号来表示
综合上述,我们可以发现我们的例子是数字型的,这样我们就可以使用加法和减法来判断了。
加法,我们在参数输入1+1,看看返回的数据是不是id等于2的结果,这里注意一下+号在SQL语句是有特效含义的,所以我们要对其进行url编码,最后也就是%2b。
减法是同样的道理,不过我们不需要对-号进行url编码了。
第三节 利用SQL注入
3.1、识别数据库
要想发动SQL注入攻击,就要知道正在使用的系统数据库,不然就没法提取重要的数据。
首先从Web应用技术上就给我们提供了判断的线索:
ASP和.NET:Microsoft SQL Server
PHP:MySQL、PostgreSQL
Java:Oracle、MySQL
底层操作系统也给我们提供了线索,比如安装IIS作为服务器平台,后台数据及很有可能是Microsoft SQL Server,而允许Apache和PHP的Linux服务器就很有可能使用开源的数据库,比如MySQL和PostgreSQL。
基于错误识别数据库
大多数情况下,要了解后台是什么数据库,只需要看一条详细的错误信息即可。比如判断我们事例中使用的数据库,我们加个单引号。
error :You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''' at line 1
从错误信息中,我们就可以发现是MySQL。
Microsoft OLE DB Provider for ODBC Drivers 错误 '80040e14'
[Microsoft ][ODBC SQL Server Driver ][SQL Server ]Line 1:
上面错误信息可以发现是Microsoft SQL Server,如果错误信息开头是ORA,就可以判断数据库是Oracle,很简单,道理都是一样的,就不一一列举了。
基于数字函数推断
这里以我们搭建的环境为例来做推断:
connection_id()不管它值多少,基本上都是正的,也就是为真,last_insert_id()用法大家自行百度,这里不存在insert语句,默认情况就是返回零,也就是假。
那么如果and connection_id()数据返回正常,and connection_id()不返回数据,我们就可以推断这是一个MySQL数据库了。
3.2、UINON语句提取数据
UNION操作符可以合并两条或多条SELECT语句的查询结果,基本语法如下:
select column -1 column -2 from table -1
UNION
select column -1 column -2 from table -2
如果应用程序返回了第一条查询得到的数据,我们就可以在第一条查询后面注入一个UNION运算符来添加一个任意查询,来提取数据,是不是很容易啊,当然在使用UNION之前我们必须要满足两个条件:
两个查询返回的列数必须相同
两个查询语句对于列返回的数据类型必须相同
首先我来看第一个条件,如何知道第一条查询的列数呢?我们可以使用NULL来尝试,由于NULL值会被转换成任何数据类型,所以我们不用管第二个条件。
就是这样的一个个加上去进行尝试,直到不返回错误。
神奇的ORDER BY子句
除了上述方法,我们还可以是用order by子句得到准确列数
我们先尝试了12,返回错误,说明列数是小于12的,我们继续尝试了6,返回错误,同理,列数小于6的,我们尝试3,返回正常,说明列数是大于等于3的,继续尝试4,返回错误。说明列数是小于4,列数大于等于3,小于4,可以得到列数是3。使用order by子句可以帮助我们快速得到列数。
得到列数后我们还需要满足第二个条件
很简单,只要一次一列使用我们的测试字符串替换NULL即可,可以发现第一列和第二列都可以存放字符串,第三列数据没有输出。
接下来就让我们提取数据库用户名和版本号:
3.3、枚举数据库
这里由于篇幅问题,我们只以MySQL数据库为例了,枚举数据库并提取数据遵循一种层次化的方法,首先我们提取数据库名称,然后提取表,再到列,最后才是数据本身。要想获取远程数据库的表、列,就要访问专门保存描述各种数据库结构的表。通常将这些结构描述信息成为元数据。在MySQL中,这些表都保存在information_schema数据库中
第一步:提取数据库
在MySQL中,数据库名存放在information_schema数据库下schemata表schema_name字段中
id=1 union select null ,schema_name,null from information_schema.schemata
第二步:提取表名
在MySQL中,表名存放在information_schema数据库下tables表table_name字段中
?id=1 union select null ,table_name,null from information_schema.tables where table_schema='leslie'
这里我使用where子句来筛选了,只返回数据库ichunqiu下的表名,想返回所有表名,去掉where子句就行了。
第三步:提取字段名
在MySQL中,字段名存放在information_schema数据库下columns表column_name字段中
同样加上where子句限制,不让你都不知道字段名是哪个数据库哪个表下。
第四步:提取数据
这一步就简单了,不再介绍了,看图。
3.4、窃取哈希可令
哈希口令是通过使用PASSWORD()函数计算的:
3.5、获取WebShell
利用SQL注入攻击获取WebShell其实就是在向服务器写文件。(注意:这里我们需要得到网站的绝对路径)所有常用的关系数据库管理系统(RDBMS)均包含内置的向服务器文件系统写文件的功能。
select into outfile(dumpfile)
例如:
select " echo 'test' ; ?> " into outfile "F:\\www\\test.php";
你可能感兴趣的:(php,中级篇)
男士护肤品哪个牌子好?十大男士护肤品排行榜
高省APP珊珊
很多男生意识到护肤的必要性,开始着手护肤,但不知道该选哪个男士护肤品品牌使用好。目前市面上很多男士护肤品品牌,可谓琳琅满目,让人眼花缭乱。男士挑选护肤品时,根据自己皮肤需求去正规渠道挑选合适的知名护肤品比较放心靠谱。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。【高省】是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,也期待你的加入
程翔授《评价一篇记叙文》
行吟斯基
桂林十一中高一2中学生自读程老师学生文章板书课题师巡看。看完举手。问:它是记叙文。不商量。独立打分。学生评价打分。师:高低都正常,不受干扰。师巡,略评。打完举手。调查:分层次举手——高分先举手。最低分。最高95分。最低45分。女:差距太大!师:同一篇,相差55分。若是你的文章,愿落谁手?男:身临其境感觉。师:你有此经历?没也没关系。女:不优美……,结尾无升华……无感悟……师:辞藻不美?(师追问)男
自律打卡第四天:比昨天进步一点点
花儿的念想
今天新闻我们县城又确诊了一例,截止目前已经确诊的三例了,打开,看了一篇简友写的武汉的真实情况,有病住不了院,还没等到床位已经去世的消息,心里更加的难受,武汉尚且这样,如果是我们这没有高速没有火车的十八线的小县城发生这种情况,那情况将是更加的不堪设想,不敢想,唯有祈求灾难早点快去,平安才是最大的福气。突然觉得我的自律打卡,比昨天进步一点点。更希望疫情战争每一天都要比昨天好一点,希望一觉醒来听到的是好
25-1-2019
树藤与海岛呢
hello八月来报道了今天看到了一篇文章就只想记下那两句话:良田千顷不过一日三餐广夏万间只睡卧榻三尺大概的意思就是要珍惜当下不要等来不及的时候才珍惜分享今天的两餐最近没有时间运动呢下个月补回好了说完了哈哈goodnight图片发自App图片发自App
别再讲道理啦,对方听不进去的
方所
我之前写过一篇叫做《你总妄想改变他人》,然后就有朋友跟我说,有一些方法可以改变他人之类的。嗯,是这样,但是任何具体的问题,都要限定好语境,描述清楚前提条件,然后再表达观点,我的这位朋友的说法就犯了一刀切的错误,这样并不能让讨论正常展开(这篇我得先给她看看,不然可能会挨揍)。好了,hhhh,谁让她不能写文章呢,我就来再说一说吧。我前面说过,我们在学到一个道理、学会一种方法之后,总是迫不及待地想要去与
Spring进阶 - SpringMVC实现原理之DispatcherServlet处理请求的过程
倾听铃的声
后端 spring java mvc 开发语言 分布式
前文我们有了IOC的源码基础以及SpringMVC的基础,我们便可以进一步深入理解SpringMVC主要实现原理,包含DispatcherServlet的初始化过程和DispatcherServlet处理请求的过程的源码解析。本文是第二篇:DispatcherServlet处理请求的过程的源码解析。@pdaiSpring进阶-SpringMVC实现原理之DispatcherServlet处理请求的
Flowable 高级扩展:自定义元素与性能优化实战
练习时长两年半的程序员小胡
Flowable 流程引擎实战指南 流程图 flowable BPMN 流程引擎 java
在前五篇文章中,我们从基础概念、流程设计、API实战、SpringBoot集成,到外部系统协同,逐步构建了Flowable的应用体系。但企业级复杂场景中,原生功能往往难以满足定制化需求——比如需要特殊的审批规则网关、与决策引擎联动实现动态路由,或是在高并发场景下优化流程引擎性能。本文将聚焦Flowable的高级扩展能力,详解如何自定义流程元素、集成规则引擎,并掌握大型系统中的性能调优策略。一、自定
免费排版助手:智能修正段落 + 删除干扰符,杂乱文本一键变规范
各位文字工作者们!你们有没有被排版折磨到崩溃的时候?我跟你们说,我之前排版一篇文章,那简直就像在走迷宫,头晕眼花的!不过后来我发现了一款软件——排版助手!软件下载地址安装包这玩意儿是个文章智能排版工具,专门给新闻编辑、文摘网站这些文字工作者用的。它功能老多了,能修正段落,把那些乱七八糟的段落变得规规矩矩;还能删除干扰符,就像给文章做了个大扫除,把没用的东西都清理掉;简繁转换也不在话下,不管是简体还
小白买保险科普篇-意外险
手牵手走
意外险顾名思义,就是️对因意外导致的损失进行经济补偿的保险产品。我们看保险产品一定要看包含的责任。意外险通常包含:意外身故理赔金,额度10万-几百万不等。意外残疾理赔金,额度10万-几百万不等。意外医疗理赔金,额度通常在1-5万之间。这里的意外到底包含哪些意外事件,不能一概而论。综合意外险,我们重点看免责条款里的除外责任。比如:酒驾、违法不属于赔偿范围。这类产品小朋友和老人家往往有专属产品。年轻人
人物系列首篇|总会有人陪你走一段路
诗小蛮5786400
主题纲要:1.总会有人陪你走一段路2.不打扰也是一种幸福3.留在身边的,哪怕瞎逼逼一番也是珍贵一、总会有人陪你走一段路在综艺《向往的生活》,任嘉伦曾问过这样一个问题:“你们有没有过那样一种朋友:你们小时候关系很好,但因为你事业越来越好;他觉得你们之间的距离越来越远,然后他就自己疏远你的那种。”何炅说:我们要接受这是常态,我们每个人都有在乎的、喜欢的人,但我从来没有奢望,要把谁留在身边一辈子,因为这
Java并发核心:线程池使用技巧与最佳实践! | 多线程篇(五)
bug菌¹
Java实战(进阶版) java Java零基础入门 Java并发 线程池 多线程篇
本文收录于「Java进阶实战」专栏,专业攻坚指数级提升,希望能够助你一臂之力,帮你早日登顶实现财富自由;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!!环境说明:Windows10+IntelliJIDEA2021.3.2+Jdk1.8本文目录前言摘要正文何为线程池?为什么需要线程池?线程池的好处线程池使用场景如何创建线程池?线程池的常见配置源码解析案例分享案例代码演示案例运行
我最喜欢的公众号
素颜创始人小云
一年多前,也是因为工作的原因。认识了她,她是我七个人物法其一,她在我心里也是很敬佩的一个女孩子。她会讲一些护肤知识,哪些产品好用哪些不好用而他讲解的产品都是我跃跃欲试的。图片发自App她做的每一篇文章都很精美,可以吸引到我从头看到尾,看每一个字都会很珍惜很期待,做事也特别的认真仔细。去年出了一本《活得漂亮》我也看了她的创业故事,很厉害!她的认真及敬业精神我觉得是很难学得来的,现在怀孕3个月了,依然
提升在直返APP中的等级:解锁更多特权与收益的秘诀
古楼
在直返APP的世界里,每个用户都渴望提升自己的等级,以解锁更多特权与收益。那么,如何提升在直返APP中的等级呢?接下来,我们将为您揭示这一秘密。【高省】APP(高佣金领导者)是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,运行三年,稳定可靠。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。高省是公认的返利最高的软件。古楼导师高省邀请
坚持53天断更 重新开始
静安梨子
因为种种原因,原本计划好不管怎样每天坚持更新一篇的,但计划赶不上变化,在更完53天后终于还是断更了。但是也不算后悔,之前的状态确实不好,每天的输出大多数都感觉自己在凑字数,内容连自己都感觉看不下去了。调整好状态以后重新开始,给自己一个鼓励,虽然断更了,但能重新开始也很好,至少没有选择永远放弃。加油!
百度地图 雷达/地理编码 功能使用
安卓开发者
目录(?)[-]地图雷达基本使用首先你需要在你的API控制台注册你的雷达初始化并注入你的信息开始上传单次上传定时重复上传取回信息打完收工元古巨坑地理编码最近一直在优化软件的bug..然后后面可能又要大改..所以趁这两天有时间赶紧码两篇博文..=.=地图功能可以说是现在APP中最常用的功能…呃..之一..不管是电商,社交,o2o,b2c,p2p,锟斤拷,烫烫烫都需要用地图来辅助..博客里基本的地图实
大数据技术笔记—spring入门
卿卿老祖
篇一spring介绍spring.io官网快速开始Aop面向切面编程,可以任何位置,并且可以细致到方法上连接框架与框架Spring就是IOCAOP思想有效的组织中间层对象一般都是切入service层spring组成前后端分离已学方式,前后台未分离:Spring的远程通信:明日更新创建第一个spring项目来源:科多大数据
GDP经济社会人文民生栅格数据下载网站汇总
疯狂学习GIS
本文为“GIS数据获取整理”专栏(https://blog.csdn.net/zhebushibiaoshifu/category_10857546.html)中第八篇独立博客,因此本文全部标题均由“8”开头。本文对目前主要的GDP、社会与经济数据获取网站加以整理与介绍,若需其它GIS领域数据(如遥感影像数据、气象数据、土地土壤数据、农业数据等),大家可以点击上方专栏查看,也可以看这一篇汇总文
mac os 10.9 mysql_MAC OSX 10.9 apache php mysql 环境配置
AY05
mac os 10.9 mysql
#终端内运行sudoapachectlstart#启动Apachesudoapachectlrestart#重启Apachesudoapachectlstop#停止Apache#配置Apachesudovi/private/etc/apache2/httpd.conf#将里面的这一行去掉前面的##LoadModulephp5_modulelibexec/apache2/libphp5.so#配置P
亲子日记第84篇
宝贝儿快乐
今天下午把大宝接回来,犹豫我的牙痛,回来我就倒了一会,让他自己写的作业,这个小家伙没有我在旁边监督,写作业也懒散了,作业直接写了很长时间,我还在干着急,人家不急呀,什么时候不用督促就可以自己写作业了呀?
Python数据可视化:用代码绘制数据背后的故事
AAEllisonPang
Python 信息可视化 python 开发语言
引言:当数据会说话在数据爆炸的时代,可视化是解锁数据价值的金钥匙。Python凭借其丰富的可视化生态库,已成为数据科学家的首选工具。本文将带您从基础到高级,探索如何用Python将冰冷数字转化为引人入胜的视觉叙事。一、基础篇:二维可视化的艺术表达1.1Matplotlib:可视化领域的瑞士军刀importmatplotlib.pyplotaspltimportnumpyasnpx=np.linsp
【676】幼儿园亲子阅读之《战争与和平》
登登一君
我是昭君,我想记录我生活工作的点点滴滴,今天是我每日一篇文章的第676天。《战争和平》,从封面和封底上,我们就能够感受到一种隐含着冲突的幽默感。《战争与和平》这是一个非常严肃和正经的名字,是不是想到了列夫·托尔斯泰的长篇小说。当然这两个故事没有什么关系,可是画面却有些搞笑和无厘头,狮子、刺猬后面还跟着猪、羊、河马,明明都是动物,却穿着人的衣服,还像人一样站立着。而不远处的坦克上,明明坐着一个人,但
Redis 分布式锁深度解析:过期时间与自动续期机制
爱恨交织围巾
分布式事务 redis 分布式 数据库 微服务 学习 go
Redis分布式锁深度解析:过期时间与自动续期机制在分布式系统中,Redis分布式锁的可靠性很大程度上依赖于对锁生命周期的管理。上一篇文章我们探讨了分布式锁的基本原理,今天我们将聚焦于一个关键话题:如何通过合理设置过期时间和实现自动续期机制,来解决分布式锁中的死锁与锁提前释放问题。一、为什么过期时间是分布式锁的生命线?你的笔记中提到"服务挂掉时未删除锁可能导致死锁",这正是过期时间要解决的核心问题
08.学习闭环三部曲:预习、实时学习、复习
0058b195f4dc
人生就是一本效率手册,你怎样对待时间,时间就会给你同比例的回馈。单点突破法。预习,实时学习,复习。1、预习:凡事提前【计划】(1)前一晚设置三个当日目标。每周起始于每周日。(2)提前学习。预习法进行思考。预不预习效果相差20%,预习法学会提问。(3)《学会提问》。听电子书。2.实时学习(1)(10%)相应场景,思维导图,快速笔记。灵感笔记。(2)大纲,基本记录,总结篇。3.复习法则,(70%),最
第84篇 我们要给妈妈生葫芦娃
南番娘娘
2018-2-3星期六晴我和妹妹跟姥姥和老爷提前回老家准备过年了,我们学校放假了。我们一起住在奶奶家住了,妈妈下个星期就回来跟我们玩。我好想爸爸妈妈。今天和妈妈视频聊天的时候,我跟她说我和妹妹要给她生个孩子因为我很喜欢她。她可高兴啦。问我生的孩子叫什么名字。我都想好啦就叫葫芦娃,我们要生7个葫芦娃。妈妈问我葫芦娃们都穿什么颜色的衣服。我觉得应该穿黑色,黄色,橘色,然后剩下的我得去看看书,我没回答上
2022-01-13 天气晴 心情好
楠楠的qzone
今天主要是吧系统的一些功能给转移到另外一个系统上,然后遇到了一个很差劲的客户,不过呢我也是见多了不去计较了,因为什么样的人都有,平常心就好。晚上去吧thinkphp6的基础知识好好的看了一下,还是学到了很多好东西
拼多多真的有内部优惠券吗?带你1分钟了解拼多多内部优惠券
好项目高省
亲爱的拼多多用户,你是否曾经在浏览商品时,看到过一些人分享的内部优惠券,让你心动不已?今天,我就为你揭开拼多多内部优惠券的神秘面纱,让你一分钟了解真相!【高省】APP(高佣金领导者)是一个自用省钱佣金高,分享推广赚钱多的平台,百度有几百万篇报道,运行三年,稳定可靠。高省APP,是2021年推出的平台,0投资,0风险、高省APP佣金更高,模式更好,终端用户不流失。高省是公认的返利最高的软件。古楼导师
亲子日记702篇,九月十五号
陈艺萱妈妈
开学已经两个多星期了,本来对担心孩子的英语了,没想到经过两个星期的学习,孩子对英语挺感兴趣的,还得说特别爱上英语课,英语课老师让他们玩游戏就学习了,学习一门新课,首先要提高孩子学习的兴趣,这个英语老师挺不错的。晚上检查完数学跟语文作业,我就看孩子开始学英语,我们一起给英语小视频配音,开始孩子有点紧张,我说没事,配的不好,咱们得重新配,让孩子多读几遍,没想到一次就成功了,我们来回回放,还在感觉特别新
Day 3 开启2020学习之路
佳佳_797e
先记录和龙妞妞一起温习的第三篇诗歌江雪(柳宗元)千山鸟飞绝,万径人踪灭孤舟蓑笠翁,独钓寒江雪学习的力量,今天在没有任何领读提醒的情况下,她竟在自顾自地念前面两天学习的咏鹅和春晓,字字句句,朗朗上口,她那个小迷弟就呆萌般地望着姐姐笑,想跟着一起叫喊,却怎么都发不出这个音,望着这个画面,我在内心祈祷这诗歌的种子真的能够在他们的心里发芽,伴随他们成长…
SQL笔记纯干货
AI入门修炼
oracle 数据库 sql
软件:DataGrip2023.2.3,phpstudy_pro,MySQL8.0.12目录1.DDL语句(数据定义语句)1.1数据库操作语言1.2数据表操作语言2.DML语句(数据操作语言)2.1增删改2.2题2.3备份表3.DQL语句(数据查询语言)3.1查询操作3.2题一3.3题二4.多表详解4.1一对多4.2多对多5.多表查询6.窗口函数7.拓展:upsert8.sql注入攻击演示9.拆表
2021-11-8饮食搭配
寻欢_作乐
今天是什么日子起床:5就寝:10天气:晴朗,但是特别冷心情:郁闷,不想上班。星期一综合症纪念日:任务清单昨日完成的任务,最重要的三件事:外语听力输入无,看的东西太多太散,没有收获。看了很多美食做法,准备好好节食减肥。输出一篇,每周食材清单改进:目标极简,深度。选好不变。习惯养成:早晚学习一个小时。周目标·完成进度60,5学习·信息·阅读无健康·饮食·锻炼早晚护肤完成。人际·家人·朋友无工作·思考暂
开发者关心的那些事
圣子足道
ios 游戏 编程 apple 支付
我要在app里添加IAP,必须要注册自己的产品标识符(product identifiers)。产品标识符是什么?
产品标识符(Product Identifiers)是一串字符串,它用来识别你在应用内贩卖的每件商品。App Store用产品标识符来检索产品信息,标识符只能包含大小写字母(A-Z)、数字(0-9)、下划线(-)、以及圆点(.)。你可以任意排列这些元素,但我们建议你创建标识符时使用
负载均衡器技术Nginx和F5的优缺点对比
bijian1013
nginx F5
对于数据流量过大的网络中,往往单一设备无法承担,需要多台设备进行数据分流,而负载均衡器就是用来将数据分流到多台设备的一个转发器。
目前有许多不同的负载均衡技术用以满足不同的应用需求,如软/硬件负载均衡、本地/全局负载均衡、更高
LeetCode[Math] - #9 Palindrome Number
Cwind
java Algorithm 题解 LeetCode Math
原题链接:#9 Palindrome Number
要求:
判断一个整数是否是回文数,不要使用额外的存储空间
难度:简单
分析:
题目限制不允许使用额外的存储空间应指不允许使用O(n)的内存空间,O(1)的内存用于存储中间结果是可以接受的。于是考虑将该整型数反转,然后与原数字进行比较。
注:没有看到有关负数是否可以是回文数的明确结论,例如
画图板的基本实现
15700786134
画图板
要实现画图板的基本功能,除了在qq登陆界面中用到的组件和方法外,还需要添加鼠标监听器,和接口实现。
首先,需要显示一个JFrame界面:
public class DrameFrame extends JFrame { //显示
linux的ps命令
被触发
linux
Linux中的ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。
要对进程进行监测和控制,首先必须要了解当前进程的情况,也就是需要查看当前进程,而 ps 命令就是最基本同时也是非常强大的进程查看命令。使用该命令可以确定有哪些进程正在运行
Android 音乐播放器 下一曲 连续跳几首歌
肆无忌惮_
android
最近在写安卓音乐播放器的时候遇到个问题。在MediaPlayer播放结束时会回调
player.setOnCompletionListener(new OnCompletionListener() {
@Override
public void onCompletion(MediaPlayer mp) {
mp.reset();
Log.i("H
java导出txt文件的例子
知了ing
java servlet
代码很简单就一个servlet,如下:
package com.eastcom.servlet;
import java.io.BufferedOutputStream;
import java.io.IOException;
import java.net.URLEncoder;
import java.sql.Connection;
import java.sql.Resu
Scala stack试玩, 提高第三方依赖下载速度
矮蛋蛋
scala sbt
原文地址:
http://segmentfault.com/a/1190000002894524
sbt下载速度实在是惨不忍睹, 需要做些配置优化
下载typesafe离线包, 保存为ivy本地库
wget http://downloads.typesafe.com/typesafe-activator/1.3.4/typesafe-activator-1.3.4.zip
解压r
phantomjs安装(linux,附带环境变量设置) ,以及casperjs安装。
alleni123
linux spider
1. 首先从官网
http://phantomjs.org/下载phantomjs压缩包,解压缩到/root/phantomjs文件夹。
2. 安装依赖
sudo yum install fontconfig freetype libfreetype.so.6 libfontconfig.so.1 libstdc++.so.6
3. 配置环境变量
vi /etc/profil
JAVA IO FileInputStream和FileOutputStream,字节流的打包输出
百合不是茶
java核心思想 JAVA IO操作 字节流
在程序设计语言中,数据的保存是基本,如果某程序语言不能保存数据那么该语言是不可能存在的,JAVA是当今最流行的面向对象设计语言之一,在保存数据中也有自己独特的一面,字节流和字符流
1,字节流是由字节构成的,字符流是由字符构成的 字节流和字符流都是继承的InputStream和OutPutStream ,java中两种最基本的就是字节流和字符流
类 FileInputStream
Spring基础实例(依赖注入和控制反转)
bijian1013
spring
前提条件:在http://www.springsource.org/download网站上下载Spring框架,并将spring.jar、log4j-1.2.15.jar、commons-logging.jar加载至工程1.武器接口
package com.bijian.spring.base3;
public interface Weapon {
void kil
HR看重的十大技能
bijian1013
提升 能力 HR 成长
一个人掌握何种技能取决于他的兴趣、能力和聪明程度,也取决于他所能支配的资源以及制定的事业目标,拥有过硬技能的人有更多的工作机会。但是,由于经济发展前景不确定,掌握对你的事业有所帮助的技能显得尤为重要。以下是最受雇主欢迎的十种技能。 一、解决问题的能力 每天,我们都要在生活和工作中解决一些综合性的问题。那些能够发现问题、解决问题并迅速作出有效决
【Thrift一】Thrift编译安装
bit1129
thrift
什么是Thrift
The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and s
【Avro三】Hadoop MapReduce读写Avro文件
bit1129
mapreduce
Avro是Doug Cutting(此人绝对是神一般的存在)牵头开发的。 开发之初就是围绕着完善Hadoop生态系统的数据处理而开展的(使用Avro作为Hadoop MapReduce需要处理数据序列化和反序列化的场景),因此Hadoop MapReduce集成Avro也就是自然而然的事情。
这个例子是一个简单的Hadoop MapReduce读取Avro格式的源文件进行计数统计,然后将计算结果
nginx定制500,502,503,504页面
ronin47
nginx 错误显示
server {
listen 80;
error_page 500/500.html;
error_page 502/502.html;
error_page 503/503.html;
error_page 504/504.html;
location /test {return502;}}
配置很简单,和配
java-1.二叉查找树转为双向链表
bylijinnan
二叉查找树
import java.util.ArrayList;
import java.util.List;
public class BSTreeToLinkedList {
/*
把二元查找树转变成排序的双向链表
题目:
输入一棵二元查找树,将该二元查找树转换成一个排序的双向链表。
要求不能创建任何新的结点,只调整指针的指向。
10
/ \
6 14
/ \
Netty源码学习-HTTP-tunnel
bylijinnan
java netty
Netty关于HTTP tunnel的说明:
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/socket/http/package-summary.html#package_description
这个说明有点太简略了
一个完整的例子在这里:
https://github.com/bylijinnan
JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
coder_xpf
jquery json map val()
JSONUtil.serialize(map)和JSON.toJSONString(map)的区别
数据库查询出来的map有一个字段为空
通过System.out.println()输出 JSONUtil.serialize(map): {"one":"1","two":"nul
Hibernate缓存总结
cuishikuan
开源 ssh javaweb hibernate缓存 三大框架
一、为什么要用Hibernate缓存?
Hibernate是一个持久层框架,经常访问物理数据库。
为了降低应用程序对物理数据源访问的频次,从而提高应用程序的运行性能。
缓存内的数据是对物理数据源中的数据的复制,应用程序在运行时从缓存读写数据,在特定的时刻或事件会同步缓存和物理数据源的数据。
二、Hibernate缓存原理是怎样的?
Hibernate缓存包括两大类:Hib
CentOs6
dalan_123
centos
首先su - 切换到root下面1、首先要先安装GCC GCC-C++ Openssl等以来模块:yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel2、再安装ncurses模块yum -y install ncurses-develyum install ncurses-devel3、下载Erang
10款用 jquery 实现滚动条至页面底端自动加载数据效果
dcj3sjt126com
JavaScript
无限滚动自动翻页可以说是web2.0时代的一项堪称伟大的技术,它让我们在浏览页面的时候只需要把滚动条拉到网页底部就能自动显示下一页的结果,改变了一直以来只能通过点击下一页来翻页这种常规做法。
无限滚动自动翻页技术的鼻祖是微博的先驱:推特(twitter),后来必应图片搜索、谷歌图片搜索、google reader、箱包批发网等纷纷抄袭了这一项技术,于是靠滚动浏览器滚动条
ImageButton去边框&Button或者ImageButton的背景透明
dcj3sjt126com
imagebutton
在ImageButton中载入图片后,很多人会觉得有图片周围的白边会影响到美观,其实解决这个问题有两种方法
一种方法是将ImageButton的背景改为所需要的图片。如:android:background="@drawable/XXX"
第二种方法就是将ImageButton背景改为透明,这个方法更常用
在XML里;
<ImageBut
JSP之c:foreach
eksliang
jsp forearch
原文出自:http://www.cnblogs.com/draem0507/archive/2012/09/24/2699745.html
<c:forEach>标签用于通用数据循环,它有以下属性 属 性 描 述 是否必须 缺省值 items 进行循环的项目 否 无 begin 开始条件 否 0 end 结束条件 否 集合中的最后一个项目 step 步长 否 1
Android实现主动连接蓝牙耳机
gqdy365
android
在Android程序中可以实现自动扫描蓝牙、配对蓝牙、建立数据通道。蓝牙分不同类型,这篇文字只讨论如何与蓝牙耳机连接。
大致可以分三步:
一、扫描蓝牙设备:
1、注册并监听广播:
BluetoothAdapter.ACTION_DISCOVERY_STARTED
BluetoothDevice.ACTION_FOUND
BluetoothAdapter.ACTION_DIS
android学习轨迹之四:org.json.JSONException: No value for
hyz301
json
org.json.JSONException: No value for items
在JSON解析中会遇到一种错误,很常见的错误
06-21 12:19:08.714 2098-2127/com.jikexueyuan.secret I/System.out﹕ Result:{"status":1,"page":1,&
干货分享:从零开始学编程 系列汇总
justjavac
编程
程序员总爱重新发明轮子,于是做了要给轮子汇总。
从零开始写个编译器吧系列 (知乎专栏)
从零开始写一个简单的操作系统 (伯乐在线)
从零开始写JavaScript框架 (图灵社区)
从零开始写jQuery框架 (蓝色理想 )
从零开始nodejs系列文章 (粉丝日志)
从零开始编写网络游戏 
jquery-autocomplete 使用手册
macroli
jquery Ajax 脚本
jquery-autocomplete学习
一、用前必备
官方网站:http://bassistance.de/jquery-plugins/jquery-plugin-autocomplete/
当前版本:1.1
需要JQuery版本:1.2.6
二、使用
<script src="./jquery-1.3.2.js" type="text/ja
PLSQL-Developer或者Navicat等工具连接远程oracle数据库的详细配置以及数据库编码的修改
超声波
oracle plsql
在服务器上将Oracle安装好之后接下来要做的就是通过本地机器来远程连接服务器端的oracle数据库,常用的客户端连接工具就是PLSQL-Developer或者Navicat这些工具了。刚开始也是各种报错,什么TNS:no listener;TNS:lost connection;TNS:target hosts...花了一天的时间终于让PLSQL-Developer和Navicat等这些客户
数据仓库数据模型之:极限存储--历史拉链表
superlxw1234
极限存储 数据仓库 数据模型 拉链历史表
在数据仓库的数据模型设计过程中,经常会遇到这样的需求:
1. 数据量比较大; 2. 表中的部分字段会被update,如用户的地址,产品的描述信息,订单的状态等等; 3. 需要查看某一个时间点或者时间段的历史快照信息,比如,查看某一个订单在历史某一个时间点的状态, 比如,查看某一个用户在过去某一段时间内,更新过几次等等; 4. 变化的比例和频率不是很大,比如,总共有10
10点睛Spring MVC4.1-全局异常处理
wiselyman
spring mvc
10.1 全局异常处理
使用@ControllerAdvice注解来实现全局异常处理;
使用@ControllerAdvice的属性缩小处理范围
10.2 演示
演示控制器
package com.wisely.web;
import org.springframework.stereotype.Controller;
import org.spring