为了做一个集成校园网功能的站点,需要模拟登陆到校园网获取信息,php用来模拟提交post信息还是比较简洁的。把一下重要的代码记录在这里。
/** * 模拟post进行url请求 * @param string $url * @param string $param */ function request_post($url = ”, $param = ”) { if (empty($url) || empty($param)) { return false; }
$postUrl = $url; $curlPost = $param; $ch = curl_init();//初始化curl curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页 curl_setopt($ch, CURLOPT_HEADER, 0);//设置header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec($ch);//运行curl curl_close($ch);
return $data; }
这是方法,
下面是具体的调用案例。
function testAction(){ $url = ‘http://mobile.jschina.com.cn/jschina/register.php‘; $post_data[‘appid’] = ’10’; $post_data[‘appkey’] = ‘cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ’; $post_data[‘member_name’] = ‘zsjs123’; $post_data[‘password’] = ‘123456’; $post_data[’email’] = ‘[email protected] ’; $o = “”; foreach ( $post_data as $k => $v ) { $o.= “$k=” . urlencode( $v ). “&” ; } $post_data = substr($o,0,-1);
$res = $this->request_post($url, $post_data); print_r($res);
}
这样就提交请求,并且获取请求结果了。一般返回的结果是json格式的。
这里的post是拼接出来的。
也可以改造成下面的方式。
/** * 模拟post进行url请求 * @param string $url * @param array $post_data */ function request_post($url = ”, $post_data = array()) { if (empty($url) || empty($post_data)) { return false; }
$o = “”; foreach ( $post_data as $k => $v ) { $o.= “$k=” . urlencode( $v ). “&” ; } $post_data = substr($o,0,-1);
$postUrl = $url; $curlPost = $post_data; $ch = curl_init();//初始化curl curl_setopt($ch, CURLOPT_URL,$postUrl);//抓取指定网页 curl_setopt($ch, CURLOPT_HEADER, 0);//设置header curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上 curl_setopt($ch, CURLOPT_POST, 1);//post提交方式 curl_setopt($ch, CURLOPT_POSTFIELDS, $curlPost); $data = curl_exec($ch);//运行curl curl_close($ch);
return $data; }
将拼接也封装了起来,这样调用的时候就更简洁了。
function testAction(){ $url = ‘http://mobile.jschina.com.cn/jschina/register.php‘; $post_data[‘appid’] = ’10’; $post_data[‘appkey’] = ‘cmbohpffXVR03nIpkkQXaAA1Vf5nO4nQ’; $post_data[‘member_name’] = ‘zsjs124’; $post_data[‘password’] = ‘123456’; $post_data[’email’] = ‘[email protected] ’; //$post_data = array(); $res = $this->request_post($url, $post_data); print_r($res);
}
第二种:应用curl库的方式
cURL 是一个功能强大的PHP库,使用PHP的cURL库可以简单和有效地抓取网页并采集内容,设置cookie完成模拟登录网页,curl提供了丰富的函数,开发者可以从PHP手册中获取更多关于cURL信息。本文以模拟登录开源中国(oschina)为例,和大家分享cURL的使用。
PHP的curl()在抓取网页的效率方面是比较高的,而且支持多线程,而file_get_contents()效率就要稍低些,当然,使用curl时需要开启下curl扩展。
代码实战
先来看登录部分的代码:
//模拟登录
function login_post($ url, $ cookie, $ post) {
$ curl = curl_init();//初始化curl模块
curl_setopt($ curl, CURLOPT_URL, $ url);//登录提交的地址
curl_setopt($ curl, CURLOPT_HEADER, 0);//是否显示头信息
curl_setopt($ curl, CURLOPT_RETURNTRANSFER, 0);//是否自动显示返回的信息
curl_setopt($ curl, CURLOPT_COOKIEJAR, $ cookie); //设置Cookie信息保存在指定的文件中
curl_setopt($ curl, CURLOPT_POST, 1);//post方式提交
curl_setopt($ curl, CURLOPT_POSTFIELDS, http_build_query($ post));//要提交的信息
curl_exec($ curl);//执行cURL
curl_close($ curl);//关闭cURL资源,并且释放系统资源
}
函数login_post()首先初始化curl_init(),然后使用curl_setopt()设置相关选项信息,包括要提交的url地址,保存的cookie文件,post的数据(用户名和密码等信息),是否返回信息等等,然后curl_exec执行curl,最后curl_close()释放资源。注意PHP自带的http_build_query()可以将数组转换成相连接的字符串。
接下来如果登录成功后,我们要获取登录成功后的页面信息。
//登录成功后获取数据
function get_content($ url, $ cookie) {
$ ch = curl_init();
curl_setopt($ ch, CURLOPT_URL, $ url);
curl_setopt($ ch, CURLOPT_HEADER, 0);
curl_setopt($ ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ ch, CURLOPT_COOKIEFILE, $ cookie); //读取cookie
$ rs = curl_exec($ ch); //执行cURL抓取页面内容
curl_close($ ch);
return $ rs;
}
函数get_content()中也是先初始化curl,然后设置相关选项,执行curl,释放资源。其中我们设置CURLOPT_RETURNTRANSFER为1即自动返回信息,而CURLOPT_COOKIEFILE可以读取到登录时保存的cookie信息,最后将页面内容返回。
我们的最终目的是要获取到模拟登录后的信息,也就是只有正常登录成功后才能获取的有用信息。接下来我们以登录开源中国的移动版为例,看看如何抓取到登录成功后的信息。
//设置post的数据
$ post = array (
’email’ => ‘oschina账户’,
‘pwd’ => ‘oschina密码’,
‘goto_page’ => ‘/my’,
‘error_page’ => ‘/login’,
‘save_login’ => ‘1’,
‘submit’ => ‘现在登录’
);
//登录地址
$ url = “http://m.oschina.net/action/user/login“;
//设置cookie保存路径
$ cookie = dirname(__FILE__ ) . ‘/cookie_oschina.txt’;
//登录后要获取信息的地址
$ url2 = “http://m.oschina.net/my“;
//模拟登录
login_post($ url, $ cookie, $ post);
//获取登录页的信息
$ content = get_content($ url2, $ cookie);
//删除cookie文件
@ unlink($ cookie);
//匹配页面信息
$ preg = “/
(.*)<\/td>/i”;
preg_match_all($ preg, $ content, $ arr);
$ str = $ arr[1][0];
//输出内容
echo $ str;
运行上述代码后,我们会看到最终获取到登录用户的头像图片。
你可能感兴趣的:(PHP模拟post登陆)
农场游戏app开发公司
红匣子实力推荐
在数字化时代,移动应用已成为人们生活中不可或缺的一部分。随着智能手机的普及和移动互联网的发展,各种类型的App应运而生,其中,农场游戏App因其独特的娱乐性和教育意义而受到了广泛的欢迎。农场游戏App开发公司便是专门致力于设计和开发这类游戏的创新型企业。###公司简介农场游戏App开发公司通常是一家集软件开发、游戏设计和用户体验研究为一体的高科技企业。这些公司专注于创造模拟农场经营的游戏应用,让玩
反序列化漏洞
Slash_HK
web安全相关 php 安全 web安全
JavaPHP反序列化总结文章目录一.PHP反序列化1.序列化serialize()2.反序列化unserialize()二.反序列化漏洞1.漏洞利用Magicfunction2.漏洞利用思路三._construct()的利用2.利用普通成员类方法四.PHP反序列化漏洞总结1.CVE-2016-7124一.PHP反序列化1.序列化serialize()首先我们创建了一个对象,通过serialize
Java+selenium+chrome+linux/windows实现数据获取
fox_初始化
Java selenium chrome 测试工具 java linux windows
背景:在进行业务数据获取或者自动化测试时,通常会使用模拟chrome方式启动页面,然后获取页面的数据。在本地可以使用windows的chromedriver.exe进行打开chrome页面、点击等操作。在linux下通常使用无界面无弹窗的方式进行操作。接下来是实现方案。代码层面:关键工具类:ChromeDriverUtilpublicclassChromeDriverUtil{publicWebD
selenium中键盘操作:Keys类
weixin_41812355
web自动化 selenium python
前言:本文详细介绍了如何使用Selenium库进行键盘操作,包括非组合键如回车、删除等,以及Ctrl+A、Ctrl+C等常见组合键的模拟。通过实例演示了在百度搜索中的应用,并展示了ActionChains类的使用方法。一、导入相关类selenium提供了比较完整的键盘操作,在使用的模拟键盘操作之前需要我们导入Keys类fromselenium.webdriver.common.keysimport
随笔记录git提交出错和原生js以JSON格式请求接口导出Excel
山丘lemon
GIT提交代码出错Fileexists.原文链接https://www.cnblogs.com/sweetbullet/p/9889997.html前端js导出,参数以json格式发送post请求原文链接https://www.cnblogs.com/sweetbullet/p/9843178.html
如何在Ubuntu 16.04上使用Let‘s Encrypt保护Apache2
JKooll
sharecode ubuntu let's encrypt apache https
原文:https://zhaoshuquan.com/posts/如何在ubuntu-16.04上使用lets-encrypt保护apache2/介绍本教程将向您展示如何在运行Apache作为Web服务器的Ubuntu16.04服务器上设置Let’sEncrypt的TLS/SSL证书。Web服务器中使用SSL证书来加密服务器和客户端之间的流量,为访问应用程序的用户提供额外的安全性。让我们的加密提供
Jmeter、Python、Postman测试工具对比
测试界的海飞丝
软件测试 自动化测试 测试工具 jmeter python
一、JMeter总结:适合对代码不敏感的使用人员,不会代码也可以完成接口自动化,设计框架。适合紧急迭代的项目。JMeter接口测试的优势小巧轻量级,并且开源免费,社区接受度高,比较容易入门支持多协议,并提供了比较高级的扩展能力,允许自己定义和扩展新的协议支持,比如扩展支持阿里提供的Dubbo协议的JMeter插件等学习者不需要会代码,不需要编程,熟悉http请求,熟悉业务流程,就可以根据页面中in
CCF-CSP认证考试准备第五天
爱coding的橙子
CCF-CSP认证 c++ 算法 数据结构
开始刷第二题,预计每天3-4题###Day5:1.201903-22.201909-23.201912-2####1.201903-2:二十四点(模拟,今天重点题,栈)(1)题目理解没有问题,但是我自己写的模拟比较复杂(100),**记得-'0'**下次知道自己只能写复杂的模拟过程且能写出来可以不写,直接学习别人思路(2)优化学习思路:[CCF-CSP201903-2二十四点三种方法满分题解结尾附
自然语言处理系列六十六》对话机器人项目实战》对话机器人原理与介绍
陈敬雷-充电了么-CEO兼CTO
python 人工智能 算法 自然语言处理 机器人 人工智能 AIGC chatgpt gpt ai
注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】文章目录自然语言处理系列六十六对话机器人项目实战》对话机器人原理与介绍对话机器人项目代码实战总结自然语言处理系列六十六对话机器人项目实战》对话机器人原理与介绍对话机器人是一个用来模拟人类对话或聊天的计算机程序,本质上是通过机器学习和人工智能等技术让
CCF-CSP认证考试准备第十二天 201903-3 损坏的RAID5(大模拟)
爱coding的橙子
CCF-CSP认证 算法 c++ 开发语言
今天开始第3题大模拟,加油!###Day12:1.201903-3####1.201903-3:损坏的RAID5(大模拟)(1)本题的难点为理解题意(**比较难**)然后找规律和异或运算题目可以这样理解:1.先介绍**RAID5基本算法**,基本原理是异或运算,即在p与a1…an这(n+1)个数中,由任意n个可以推知其余的一个2.介绍硬盘的基本单位为**块**3.介绍条带:**条带**是指连续、等
燃气行业反垄断:执法已开始,重点是哪里|行业观察
3efbdfa96658
前两期,我们推送了《风暴将至|影响燃气行业的3部规章正式施行》和《燃气行业|反垄断执法对行业会有什么影响》,分析的是即将到来的风暴以及风暴可能带来的影响。今天,我们继续探讨这场风暴:如果风暴降临,将登陆哪里。近几年,关于公用企业的反垄断执法一直在进行中,每年都是执法机构的一项重点工作。从近期执法机构的动态来看,各地关于燃气行业的反垄断执法其实也正在开展。2019年8月19日,青海省市场监督管理局在
python 发邮件无服务器,如何使用python直接从服务器发送电子邮件而不使用smtp
不想不见
python 发邮件无服务器
其他选项当您在PHP中使用邮件功能时,它使用的是您所在主机的本地sendmail,而这又只是一个本地的SMTP中继,当然本地发送邮件并不是真正的建议,因为由于DKIM、SPF和其他保护机制,这些邮件可能没有很好的传递率。如果你关心可交付性,我建议使用a)用于发送邮件的外部SMTP服务器,该服务器已为发送域正确配置。b)API,如AWSSES、Mailgun或同等产品。如果您不关心可传递性,那么您当
babel系列科普文
赖次Go
《Babel插件开发入门指南》https://www.chyingp.com/posts/how-to-write-a-babel-plugin/《babel-preset-env学习指南》https://www.chyingp.com/posts/understanding-babel-preset-env/《Babel:plugin、preset的区别与使用》https://www.chyin
小记XML写sql的聚合函数用法
J总裁的小芒果
sql xml 数据库
一、GROUP_CONCAT手动查出需要用于查询、展示的字段用法:(需要GROUPBY)将每个岗位下的姓名合并为一个以逗号分隔的字符串SELECTGROUP_CONCAT(DISTINCTu.nickNameSEPARATOR',')FROMsystem_postASpostJOINsystem_user_postASupONpost.id=up.post_idWHERE.......--DIST
安装tree命令 - linux和mac下
android121
centOS下的安装:yum-yinstalltreeUbuntu下安装:sudoapt-getinstalltree命令的使用:tree或者tree-a//显示当前目录下的所有文件和子文件tree-f//在每个文件或目录之前,显示完整的相对路径名称mac下:第一种:1、直接使用find命令模拟出tree命令的效果,如显示当前目录的tree的命令:find.-print|sed-e's;[^/]*
利用selenium获取cookies,实现浏览器免登陆自动化操作
crownyouyou
selenium python chrome 自动化
###一、设置默认源为国内的清华源(不想设置可跳过一)#查看pip安装源pipconfiglist#清华源pipconfigsetglobal.index-urlhttps://pypi.tuna.tsinghua.edu.cn/simple###二、下载json。(如果下载好json,可以跳过二)如果没下载json,可以使用pip下载pipinstalljson-i https://pypi.t
双重差分模型DID
PD我是你的真爱粉
计量经济学 金融
双重差分模型(DID)–潘登同学的计量经济学笔记文章目录双重差分模型(DID)--潘登同学的计量经济学笔记基本思想构造模型数据前提稳健性检验共同趋势(CT)检验安慰剂检验stata示例DID估计平行趋势检验安慰剂检验基本思想双重差分法可以理解为对随机分配实验的一种模拟,在没有随机实验的情况下去验证因果关系。步骤:分组:对于一个自然实验,其将全部的样本数据分为两组:一组是受到干预影响,即实验组;另一
apimodel 可以重复吗_fastapi教程翻译(十三): Response Model(响应模型)
小丸子书单
apimodel 可以重复吗
您可以在任何路径操作中使用参数response_model声明用于响应的模型:@app.get()@app.post()@app.put()@app.delete()etc.一、response_model1.举例fromtypingimportListfromfastapiimportFastAPIfrompydanticimportBaseModelapp=FastAPI()classItem
fastapi(65)- 路由函数指定了 response_model,在返回自定义 JSONResponse 时, 不会限制它返回的数据结构...
小菠萝测试笔记
数据库 java python mysql spring
前置知识JSONResponse:https://www.cnblogs.com/poloyy/p/15364445.htmlresponse_model:https://www.cnblogs.com/poloyy/p/15317585.html背景在写辣鸡平台,然后有统一的自定义JSONResponse,所以全部路径函数都是返回自定义JSONResponse的,比如@router.post("
利用PHP和Selenium自动化采集数据、实现爬虫抓取
IT大数据小助手
php selenium 自动化
随着互联网时代的到来,抓取互联网上的数据成为越来越重要的工作。在web前端开发领域,我们经常需要获取页面中的数据来完成一系列的交互操作,为了提高效率,我们可以将这个工作自动化。本文将介绍如何利用PHP和Selenium进行自动化数据采集和爬虫抓取。一、什么是SeleniumSelenium是一个免费的开源自动化测试工具,主要用于自动化测试Web应用程序,可以模拟真实的用户行为,实现自动交互。使用S
计算机组成原理ioe,1614010102曹妍计算机组成原理实验报告7
weixin_39918145
计算机组成原理ioe
1614010102曹妍计算机组成原理实验报告7(6页)本资源提供全文预览,点击全文预览即可全文预览,如果喜欢文档就下载吧,查找使用更方便哦!9.9积分哈余虞理工大学钦件与微电子学院实验报告(2017-2018第一学期)课程名称:班级:学号:姓名:实验名称CPU与存储器的连接V业软件工程姓名曹妍学号1614010102班级软件16-1班一、实验目的:1.模拟一台完整的计算机,了解计算机硕件设计过程
township android,township无限绿钞最新版-township无限绿钞安卓版下载-西西安卓游戏...
宇宙鲑鱼
township android
township无限绿钞安卓版是一款非常火爆的手机模拟经营类游戏,游戏的画面设计的十分精致,而玩家将要扮演一座小镇的镇长,玩家可以自由设计自己的小镇,将它变得更加繁华,吸引贸易,对于有设计控的朋友来说绝对是值得入手的一款游戏,喜欢的朋友赶紧来西西下载体验一下吧township无限绿钞安卓版介绍:=====珊瑚礁海钓=====全镇锦标赛活动,角逐最佳渔夫头衔=====特别赛舟会=====赛舟会杨帆
Axure科技感设计案例教程:从按钮到大屏的全面探索
招风的黑耳
Axure axure 数据可视化
AxureRP,作为一款强大的原型设计工具,不仅能够帮助设计师快速构建产品界面,还能通过其丰富的交互功能实现高度逼真的科技感效果。以下是一个简要的教程,介绍如何使用AxureRP设计科技感按钮、图标、统计、图表以及大屏界面。1.科技感按钮设计设计思路:科技感按钮往往强调简洁、未来感和交互反馈。形状与材质:采用圆角矩形或不规则形状,边缘略带光泽效果,模拟金属或玻璃质感。颜色搭配:使用冷色调如蓝色、银
【前端】 如何在 Vue.js 中使用 Mock 数据:教程与技巧
帅比九日
踩过的坑 前端 vue.js javascript
如何在Vue.js中使用Mock数据:教程与技巧在开发过程中,为了测试和开发前端功能,你常常需要用到模拟(mock)数据。Vue.js提供了灵活的方式来处理数据请求和更新,但在没有真实后端的情况下,我们可以使用Mock数据来代替真实API请求。本文将介绍如何在Vue.js项目中设置和使用Mock数据。1.使用Mock数据的必要性Mock数据在以下场景中非常有用:前端开发阶段:在后端API尚未完成时
零基础开始学习鸿蒙开发-登录界面获取参数的值,并且发送参数请求后台登录,经过后台校验即可登录成功
心之所想,行则将至
鸿蒙基础开发介绍专栏 学习
上代码之前,我们需要注意两点:一、首先要添加鸿蒙的网络权限,如果不添加权限,后面代码完成之后,可能请求失败。二、鸿蒙模拟器不支持本地localhost、127.0.01本地地址的请求,所有的请求只能通过公网发起请求。三、添加权限的方法:1).找到项目的module.json5文件夹,在此文件夹添加如下代码:"requestPermissions":[{"name":"ohos.permission
第十一届国际分子模拟与人工智能应用学术会议 (2023-ICMS&AI)
zzl18864612032
人工智能 大数据 算法 云计算
作为国内历史悠久、分子模拟领域公认的高水平国际学术会议,国际分子模拟与人工智能应用学术会议重磅回归。经过两年的精心筹备,本次会议将于2023年5月6日-7日在成都隆重举行,本次大会将为国内外从事分子模拟人工智能应用和研发创新数字化转型的企业、高校、科研机构的专家与学者,提供最为广泛的交流与合作平台。本届大会主题:洞悉微观,预见未来。会议概况——人工智能、分子模拟赋能科技研发创新过去20年,以计算化
H5漂流瓶交友源码_社交漂流瓶H5源码
北漂的老猿
好代码 交友 漂流瓶
简介:社交漂流瓶搭建教程环境:Nginx1.20.1-MySQL5.6.50-PHP-7.3上传源码至网站根目录,创建并导入数据库数据库信息修改:/config/database.php网站运行目录/public好代码免费下载:百度网盘
iOS M1芯片Mac上Xcode模拟器报错解决
aven_kang
真机编译可以通过,模拟器失败,出现以下错误...,buildingforiOSSimulator,butlinkinginobjectfilebuiltforiOS,file'...'或者couldnotfindmodulefortarget'x86_64-apple-ios-simulator'解决方案一1.添加arm64到项目PEROJECT和TARGETS的ExcludedArchitect
万字详解PHP+Sphinx中文亿级数据全文检索实战(实测亿级数据0.1秒搜索耗时)
小松聊PHP进阶
MySQL PHP 全文检索 php sphinx mysql sql 数据库 服务器
Sphinx查询性能非常厉害,亿级数据下输入关键字,大部分能在0.01~0.1秒,少部分再5秒之内查出数据。Sphinx官方文档:http://sphinxsearch.com/docs/sphinx3.html极简概括:由C++编写的高性能全文搜索引擎的开源组件,C/S架构,跨平台(支持Linux、Windows、MacOS),支持分布式部署,并可直接适配MySQL。解决问题:因为MySQL的l
10月26日流水账
沙枣花
今天早饭急匆匆地五分钟搞定,快步奔到办公室,来不及开电脑和泡水,赶紧批改昨天中本班级学业水平等级考的模拟卷,一个小时搞定。抬头一看,时间到了,没有热水,忙喝一口昨天剩下的凉开水。稍稍胳膊腿地伸展伸展,把水烧上。重新坐定,开始批改练习册和默写本,然后又把要讲评的试卷认真地看了一遍,补充了几个知识点。第二节课课间,一位我‘偏爱’的学生把昨天我给他们四人讲解的20道题,一道题一道题分析给我听。不清楚的地
二分查找排序算法
周凡杨
java 二分查找 排序 算法 折半
一:概念 二分查找又称
折半查找(
折半搜索/
二分搜索),优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而 查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表 分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步
java中的BigDecimal
bijian1013
java BigDecimal
在项目开发过程中出现精度丢失问题,查资料用BigDecimal解决,并发现如下这篇BigDecimal的解决问题的思路和方法很值得学习,特转载。
原文地址:http://blog.csdn.net/ugg/article/de
Shell echo命令详解
daizj
echo shell
Shell echo命令
Shell 的 echo 指令与 PHP 的 echo 指令类似,都是用于字符串的输出。命令格式:
echo string
您可以使用echo实现更复杂的输出格式控制。 1.显示普通字符串:
echo "It is a test"
这里的双引号完全可以省略,以下命令与上面实例效果一致:
echo Itis a test 2.显示转义
Oracle DBA 简单操作
周凡杨
oracle dba sql
--执行次数多的SQL
select sql_text,executions from (
select sql_text,executions from v$sqlarea order by executions desc
) where rownum<81;
&nb
画图重绘
朱辉辉33
游戏
我第一次接触重绘是编写五子棋小游戏的时候,因为游戏里的棋盘是用线绘制的,而这些东西并不在系统自带的重绘里,所以在移动窗体时,棋盘并不会重绘出来。所以我们要重写系统的重绘方法。
在重写系统重绘方法时,我们要注意一定要调用父类的重绘方法,即加上super.paint(g),因为如果不调用父类的重绘方式,重写后会把父类的重绘覆盖掉,而父类的重绘方法是绘制画布,这样就导致我们
线程之初体验
西蜀石兰
线程
一直觉得多线程是学Java的一个分水岭,懂多线程才算入门。
之前看《编程思想》的多线程章节,看的云里雾里,知道线程类有哪几个方法,却依旧不知道线程到底是什么?书上都写线程是进程的模块,共享线程的资源,可是这跟多线程编程有毛线的关系,呜呜。。。
线程其实也是用户自定义的任务,不要过多的强调线程的属性,而忽略了线程最基本的属性。
你可以在线程类的run()方法中定义自己的任务,就跟正常的Ja
linux集群互相免登陆配置
林鹤霄
linux
配置ssh免登陆
1、生成秘钥和公钥 ssh-keygen -t rsa
2、提示让你输入,什么都不输,三次回车之后会在~下面的.ssh文件夹中多出两个文件id_rsa 和 id_rsa.pub
其中id_rsa为秘钥,id_rsa.pub为公钥,使用公钥加密的数据只有私钥才能对这些数据解密 c
mysql : Lock wait timeout exceeded; try restarting transaction
aigo
mysql
原文:http://www.cnblogs.com/freeliver54/archive/2010/09/30/1839042.html
原因是你使用的InnoDB 表类型的时候,
默认参数:innodb_lock_wait_timeout设置锁等待的时间是50s,
因为有的锁等待超过了这个时间,所以抱错.
你可以把这个时间加长,或者优化存储
Socket编程 基本的聊天实现。
alleni123
socket
public class Server
{
//用来存储所有连接上来的客户
private List<ServerThread> clients;
public static void main(String[] args)
{
Server s = new Server();
s.startServer(9988);
}
publi
多线程监听器事件模式(一个简单的例子)
百合不是茶
线程 监听模式
多线程的事件监听器模式
监听器时间模式经常与多线程使用,在多线程中如何知道我的线程正在执行那什么内容,可以通过时间监听器模式得到
创建多线程的事件监听器模式 思路:
1, 创建线程并启动,在创建线程的位置设置一个标记
2,创建队
spring InitializingBean接口
bijian1013
java spring
spring的事务的TransactionTemplate,其源码如下:
public class TransactionTemplate extends DefaultTransactionDefinition implements TransactionOperations, InitializingBean{
...
}
TransactionTemplate继承了DefaultT
Oracle中询表的权限被授予给了哪些用户
bijian1013
oracle 数据库 权限
Oracle查询表将权限赋给了哪些用户的SQL,以备查用。
select t.table_name as "表名",
t.grantee as "被授权的属组",
t.owner as "对象所在的属组"
【Struts2五】Struts2 参数传值
bit1129
struts2
Struts2中参数传值的3种情况
1.请求参数绑定到Action的实例字段上
2.Action将值传递到转发的视图上
3.Action将值传递到重定向的视图上
一、请求参数绑定到Action的实例字段上以及Action将值传递到转发的视图上
Struts可以自动将请求URL中的请求参数或者表单提交的参数绑定到Action定义的实例字段上,绑定的规则使用ognl表达式语言
【Kafka十四】关于auto.offset.reset[Q/A]
bit1129
kafka
I got serveral questions about auto.offset.reset. This configuration parameter governs how consumer read the message from Kafka when there is no initial offset in ZooKeeper or
nginx gzip压缩配置
ronin47
nginx gzip 压缩范例
nginx gzip压缩配置 更多
0
nginx
gzip
配置
随着nginx的发展,越来越多的网站使用nginx,因此nginx的优化变得越来越重要,今天我们来看看nginx的gzip压缩到底是怎么压缩的呢?
gzip(GNU-ZIP)是一种压缩技术。经过gzip压缩后页面大小可以变为原来的30%甚至更小,这样,用
java-13.输入一个单向链表,输出该链表中倒数第 k 个节点
bylijinnan
java
two cursors.
Make the first cursor go K steps first.
/*
* 第 13 题:题目:输入一个单向链表,输出该链表中倒数第 k 个节点
*/
public void displayKthItemsBackWard(ListNode head,int k){
ListNode p1=head,p2=head;
Spring源码学习-JdbcTemplate queryForObject
bylijinnan
java spring
JdbcTemplate中有两个可能会混淆的queryForObject方法:
1.
Object queryForObject(String sql, Object[] args, Class requiredType)
2.
Object queryForObject(String sql, Object[] args, RowMapper rowMapper)
第1个方法是只查
[冰川时代]在冰川时代,我们需要什么样的技术?
comsci
技术
看美国那边的气候情况....我有个感觉...是不是要进入小冰期了?
那么在小冰期里面...我们的户外活动肯定会出现很多问题...在室内呆着的情况会非常多...怎么在室内呆着而不发闷...怎么用最低的电力保证室内的温度.....这都需要技术手段...
&nb
js 获取浏览器型号
cuityang
js 浏览器
根据浏览器获取iphone和apk的下载地址
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" content="text/html"/>
<meta name=
C# socks5详解 转
dalan_123
socket C#
http://www.cnblogs.com/zhujiechang/archive/2008/10/21/1316308.html 这里主要讲的是用.NET实现基于Socket5下面的代理协议进行客户端的通讯,Socket4的实现是类似的,注意的事,这里不是讲用C#实现一个代理服务器,因为实现一个代理服务器需要实现很多协议,头大,而且现在市面上有很多现成的代理服务器用,性能又好,
运维 Centos问题汇总
dcj3sjt126com
云主机
一、sh 脚本不执行的原因
sh脚本不执行的原因 只有2个
1.权限不够
2.sh脚本里路径没写完整。
二、解决You have new mail in /var/spool/mail/root
修改/usr/share/logwatch/default.conf/logwatch.conf配置文件
MailTo =
MailFrom
三、查询连接数
Yii防注入攻击笔记
dcj3sjt126com
sql WEB安全 yii
网站表单有注入漏洞须对所有用户输入的内容进行个过滤和检查,可以使用正则表达式或者直接输入字符判断,大部分是只允许输入字母和数字的,其它字符度不允许;对于内容复杂表单的内容,应该对html和script的符号进行转义替换:尤其是<,>,',"",&这几个符号 这里有个转义对照表:
http://blog.csdn.net/xinzhu1990/articl
MongoDB简介[一]
eksliang
mongodb MongoDB简介
MongoDB简介
转载请出自出处:http://eksliang.iteye.com/blog/2173288 1.1易于使用
MongoDB是一个面向文档的数据库,而不是关系型数据库。与关系型数据库相比,面向文档的数据库不再有行的概念,取而代之的是更为灵活的“文档”模型。
另外,不
zookeeper windows 入门安装和测试
greemranqq
zookeeper 安装 分布式
一、序言
以下是我对zookeeper 的一些理解: zookeeper 作为一个服务注册信息存储的管理工具,好吧,这样说得很抽象,我们举个“栗子”。
栗子1号:
假设我是一家KTV的老板,我同时拥有5家KTV,我肯定得时刻监视
Spring之使用事务缘由(2-注解实现)
ihuning
spring
Spring事务注解实现
1. 依赖包:
1.1 spring包:
spring-beans-4.0.0.RELEASE.jar
spring-context-4.0.0.
iOS App Launch Option
啸笑天
option
iOS 程序启动时总会调用application:didFinishLaunchingWithOptions:,其中第二个参数launchOptions为NSDictionary类型的对象,里面存储有此程序启动的原因。
launchOptions中的可能键值见UIApplication Class Reference的Launch Options Keys节 。
1、若用户直接
jdk与jre的区别(_)
macroli
java jvm jdk
简单的说JDK是面向开发人员使用的SDK,它提供了Java的开发环境和运行环境。SDK是Software Development Kit 一般指软件开发包,可以包括函数库、编译程序等。
JDK就是Java Development Kit JRE是Java Runtime Enviroment是指Java的运行环境,是面向Java程序的使用者,而不是开发者。 如果安装了JDK,会发同你
Updates were rejected because the tip of your current branch is behind
qiaolevip
学习永无止境 每天进步一点点 众观千象 git
$ git push joe prod-2295-1
To
[email protected] :joe.le/dr-frontend.git
! [rejected] prod-2295-1 -> prod-2295-1 (non-fast-forward)
error: failed to push some refs to '
[email protected]
[一起学Hive]之十四-Hive的元数据表结构详解
superlxw1234
hive hive元数据结构
关键字:Hive元数据、Hive元数据表结构
之前在 “[一起学Hive]之一–Hive概述,Hive是什么”中介绍过,Hive自己维护了一套元数据,用户通过HQL查询时候,Hive首先需要结合元数据,将HQL翻译成MapReduce去执行。
本文介绍一下Hive元数据中重要的一些表结构及用途,以Hive0.13为例。
文章最后面,会以一个示例来全面了解一下,
Spring 3.2.14,4.1.7,4.2.RC2发布
wiselyman
Spring 3
Spring 3.2.14、4.1.7及4.2.RC2于6月30日发布。
其中Spring 3.2.1是一个维护版本(维护周期到2016-12-31截止),后续会继续根据需求和bug发布维护版本。此时,Spring官方强烈建议升级Spring框架至4.1.7 或者将要发布的4.2 。
其中Spring 4.1.7主要包含这些更新内容。