本文记录我用Python登录教务系统查询成绩的过程。手动输入验证码,简单获取成绩页面。后续将可能更新自动识别验证码登录查询
前期准备
本爬虫用到了Python的Requests库 和BeautifulSoup库 参考文章:从零开始写Python爬虫 --- 爬虫实践:登录正方教务系统
页面分析
登录前
打开chrome的开发者工具,提交一次表单
我们可以分析出请求的Headers,以及Post的表单 请求的Headers整个复制就好,因此我们需要解决的问题就在Post的表单这里。
Post表单
可以看到上图中,需要注意的项有:__VIEWSTATE、txtUserName、TextBox2、txtSecretCode、RadioButtonList1
其中
txtUserName:用户名
TextBox2:密码
txtSecretCode:验证码
RadioButtonList1:三个单选项,我们选学生
__VIEWSTATE
关于RadioButtonList1,我们只要点view source
就可以看到
__VIEWSTATE的解决
而__VIEWSTATE通过页面分析,我们知道,其实就是图中input元素的value值
因此我们只需获取到登录页面,通过BeautifulSoup分析出这个值即可
验证码的解决
对于教务的验证码,我们可以用机器识别,也可以手动输入,在这里我们采用手动输入验证码的方式。 在chrome开发者工具中可以看到,CheckCode.aspx就是验证码,它在default2.aspx之后访问,而每次访问CheckCode.aspx,验证码都会改变,也就是说以最后一次访问的为准。因此我们可以先访问default2.aspx,分析页面获取到viewstate,再访问CheckCode.aspx来获取验证码 而验证码的链接就是http://jw.******.com/(m4kwrs3n51rwlebcum0adrq5)/CheckCode.aspx
登录后
再次查看chrome开发者工具,可知登录后跳转到xs_main.aspx?xh=账号
页面
分析页面元素,可以知道成绩查询的链接:
xscjcx.aspx?xh=账号&xm=名字&gnmkdm=N121605
(不同学校的可能不同,需要你自己分析)
我们再进入成绩查询的页面(在这里我们要再次记录请求的Headers)
我想通过历年成绩来查询,这样可以查询所有的成绩,也不用选择学年学期
于是再再再度分析页面
可以看出这次是提交表单,于是我们打开chrome开发者工具,然后点击
历年成绩
,看看它提交了什么东西
又是__VIEWSTATE,这次学聪明了,一看就知道在页面元素里面,不过一定是在
提交前的页面 ,所以我们要回到成绩查询的页面再分析,用chrome的元素搜索一下viewstate,这一长串的就是我们想要的东西
至此,分析结束,一切就绪
页面分析总结
我们要查询成绩,总共需要以下步骤:
获取登录界面的headers
获取__VIEWSTATE
获取验证码
Post 表单登录
获取成绩查询Headers
获取成绩查询链接
获取__VIEWSTATE
Post表单提交
获得成绩页面
代码的实现
import requests
import bs4
from bs4 import BeautifulSoup
#获取请求头部
#可以通过chrome浏览器查看
#此函数用于把复制下来的Headers分成字典
def getHeaders(raw_head):
headers={}
for raw in raw_head.split('\n'):
headerKey,headerValue = raw.split(':',1)
headers[headerKey] = headerValue
return headers
#登录Header
login_head='''Host:xsweb.scuteo.com
Connection:keep-alive
Content-Length:178
Cache-Control:max-age=0
Origin:http://xsweb.scuteo.com
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Content-Type:application/x-www-form-urlencoded
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer:http://xsweb.scuteo.com/(5mn1wwnfzv1qepq1z5pnpgak)/default2.aspx
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6'''
#成绩查询请求头部
mark_head='''Host:xsweb.scuteo.com
Connection:keep-alive
Upgrade-Insecure-Requests:1
User-Agent:Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.90 Safari/537.36
Accept:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8
Referer:http://xsweb.scuteo.com/(5mn1wwnfzv1qepq1z5pnpgak)/xs_main.aspx?xh=201630021407
Accept-Encoding:gzip, deflate
Accept-Language:zh-CN,zh;q=0.8,en;q=0.6'''
#构造session
s=requests.session()
#请求url
url='http://xsweb.scuteo.com/(5mn1wwnfzv1qepq1z5pnpgak)/'
#登录页面
#获取登录headers
headers=getHeaders(login_head)
#构造登录Post表单
account='账号'
password='密码'
formtable={
'txtUserName':'',
'TextBox2':'',
'txtSecretCode':'',
'__VIEWSTATE':'',
'RadioButtonList1':'%D1%A7%C9%FA',
'Button1':'',
'lbLanguage':'',
'hidPdrs':'',
'hidsc':''
}
formtable['txtUserName']=account
formtable['TextBox2']=password
#获取viewstate
#获取登录界面
login_page=s.get(url+'default2.aspx')
soup=BeautifulSoup(login_page.text,'lxml')
__VIEWSTATE = soup.find('input',attrs={'name':'__VIEWSTATE'}).get('value')
#将Viewstate存入登录Post表单
formtable['__VIEWSTATE']=__VIEWSTATE
#获取验证码
pic = requests.get(url+'CheckCode.aspx').content
with open('ver_pic.png','wb') as f:
f.write(pic)
vercode=input('请输入验证码:')
formtable['txtSecretCode']=vercode
#Post表单,登录
res = s.post(url+'/default2.aspx',formtable,headers=headers)
print(res)
#主页面
#获取成绩查询链接
page=s.get(url+'/xs_main.aspx?xh='+account)
soup2=BeautifulSoup(page.text,'lxml')
markurl = soup2.find('a',attrs={'onclick':"GetMc('成绩查询');"}).get('href')
#成绩查询界面
#获取成绩查询Headers
headers=getHeaders(mark_head)
#Post表单
formtable={
'__EVENTTARGET':'',
'__EVENTARGUMENT':'',
'__VIEWSTATE':'',
'hidLanguage':'',
'ddlXN':'',
'ddlXQ':'',
'ddl_kcxz':'',
'btn_zcj':'%C0%FA%C4%EA%B3%C9%BC%A8'
}
#获取__VIEWSTATE
markpage = s.get(url+markurl,headers=headers)
soup=BeautifulSoup(markpage.text,'lxml')
__VIEWSTATE = soup.find('input',attrs={'name':'__VIEWSTATE'}).get('value')
formtable['__VIEWSTATE']=__VIEWSTATE
#提交表单,获取成绩查询界面
markpage=s.post(url+markurl,formtable,headers=headers)
print(markpage.text) #该页面包含了成绩
实际效果
在桌面运行
提示输入验证码,验证码会自动保存到桌面
输入后若顺利就能够看到成绩的页面了
我们还可以进一步通过BeautifulSoup筛选出成绩,美化我们的查询结果。
美化结果显示
这里我用BeautifulSoup进行节点的筛选,将成绩表格数据存入一个二维数组,再输出。 我单独写了一个table2List.py
文件,和源文件同一个目录
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# 文件名:table2List.py
'转换成二维数组'
import bs4
from bs4 import BeautifulSoup
def tableToList(document):
document=str(document)
soup = BeautifulSoup(document,'lxml')
#得到table的每行每项,存到items中
lines=soup.table.find_all('tr')
items=[]
for line in lines:
lineList=[]
for item in line.find_all('td'):
lineList.append(item.string)
items.append(lineList)
return items
最后只需要在原来的文件引入这段代码 from table2List import tableToList
然后在源代码加上这段代码
soup3=BeautifulSoup(markpage.text,'lxml')
marktable = str(soup3.find_all(id="Datagrid1")[0])
marklist = tableToList(marktable)
for line in marklist:
for column in [3,7,8]: #这里的数字表示你想显示的列,不同教务不同
print("%-20s" % line[column] ,end='')
print("")
这样能得到相对整洁的输出,当然我们还可以用prettytable库
实现比较好看的表格输出,为了不暴露成绩,还是只截一半的图好了哈哈
你可能感兴趣的:(Python爬虫实战:登录教务系统查成绩)
在本地部署Ollama服务接口附加OpenWebUI做测试
alalaal
人工智能 linux centos
使用Ollama在本地部署一个类似openai的API做开发和测试1、准备一个旧电脑因为配置要求不高,五年前的电脑都能使用,装一块旧显卡,显存大一点的最好有8G。实在没显卡也没关系,电脑内存大也能运行,无非运行的慢一些不影响开发测试。在电脑上安装centosstream9服务器带界面版,装上显卡驱动,没有显卡的只装系统就行了。配置好能上网(本篇不用科学上网)。2、安装ollama随便一个目录下,执
Ubuntu Server下实施LVS-DR实验服务器
ZynCobol
服务器 ubuntu lvs
LVS(LinuxVirtualServer)是一个在Linux操作系统上实现的负载均衡解决方案,其中的DR(DirectRouting)模式是其中一种常用的实现方式。本文将介绍如何在UbuntuServer上搭建LVS-DR实验服务器,并提供相应的源代码。LVS-DR(DirectRouting)模式是一种无需修改客户端IP地址的负载均衡模式。在LVS-DR模式中,负载均衡器只负责将请求转发给后
项目管理的核心是什么?
项目管理
项目管理不仅仅是按照一定的计划进行任务的执行,更重要的是如何在面对复杂和动态的环境下,保证项目顺利进行并达到预期的结果。它的核心在于高效的资源配置、团队的合作与协调、风险管理及变更管理。在这些关键因素的支持下,项目能够高效地从开始到结束,达到预定目标,控制风险,并实现价值。项目管理的本质是通过系统化的方法论,确保项目在规定的时间、预算和质量标准内完成。而在实际过程中,项目经理需要面对许多不可预见的
2C语言中整型(int)、浮点型(float)、双精度浮点型(double)和字符型(char)的区别
Java资深爱好者
C语言 c语言 c++ 开发语言
在C语言中,整型(int)、浮点型(float)、双精度浮点型(double)和字符型(char)是四种基本的数据类型,它们各自有不同的用途和特性。以下是这些类型的详细解释和区别:1.整型(int)用途:用于存储整数,如年龄、数量等。存储大小:具体大小取决于编译器和操作系统,但通常是一个机器字(word)的大小,例如32位或64位。范围:例如,对于32位整型,其范围通常是-2,147,483,64
PyInstaller参数大揭秘:一文读懂打包神器的核心密码
Abossss
Python python
一、引言在Python开发的广阔领域中,我们常常会面临这样一个问题:如何将自己精心编写的Python脚本,分享给那些没有Python环境的小伙伴,或者部署到生产环境中呢?这时候,PyInstaller库就如同一位救星,闪亮登场。PyInstaller是一个功能强大的跨平台打包工具,它可以将Python脚本及其所有依赖项,打包成一个独立的可执行文件。这意味着,无论目标系统是否安装了Python环境,
Starlink卫星动力学系统仿真建模番外篇3-陀螺仪介绍
瓦力的狗腿子
数学建模 算法
陀螺仪是一种用于测量或维持方向的装置,基于角动量守恒原理,广泛应用于导航、稳定系统和运动检测等领域。本文主要介绍的是测量角速度的设备。1、陀螺仪介绍1.1、核心原理陀螺仪的核心是高速旋转的转子,通过角动量守恒保持其旋转轴方向不变。当外部力矩作用时,会产生进动现象,即旋转轴绕垂直轴旋转。下图为机械陀螺仪。1.2、主要类型机械陀螺仪:通过高速旋转的机械转子工作,精度高但结构复杂。光学陀螺仪:利用萨格纳
中电金信:数字基础设施未来展望·行业定制与开源融合
中电金信
人工智能 大数据
随着数字化向数智化的演进,各行各业对新型数字基础设施的需求不断攀升。在技术层面,云原生和平台化已经成为构建行业数字基础设施的普遍选择。在这一进程中,不仅要满足行业对极致性能的特殊需求,实现运维与管理的高效性,构建具有弹性的系统,还需要应对混合架构带来的多样化技术选项,以及满足行业定制化需求和自主可控的挑战,同时还要应对应用集群开发和多样化数据产品构建的复杂性。中电金信立足于行业需求,积极构建新型数
运用先进的智能算法和优化模型,进行科学合理调度的智慧园区开源了
AI服务老曹
开源 人工智能 安全 运维 音视频
智慧园区场景视频监控平台是一款功能强大且简单易用的实时算法视频监控系统。它的愿景是最底层打通各大芯片厂商相互间的壁垒,省去繁琐重复的适配流程,实现芯片、算法、应用的全流程组合,从而大大减少企业级应用约95%的开发成本。充分利用现有的摄像头设备,无需大规模更换,降低成本同时提升系统的实施效率。用户只需在界面上进行简单的操作,就可以实现全视频的接入及布控。项目搭建地址基础项目搭建地址:本项目基于AI场
GO语言并发编程之channel
新青年579
golang 数据库 后端
前言入职公司三四个月,本质上做的都是CMS(内容系统管理)的内容,这类系统一般用于创建、管理和发布内容,通常包括但不限于文本、图像、视频等。,但是内容管理系统的读取操作可能相对较多,但更新、发布内容、审核等操作的频率较低,因此在大部分时间内并不会造成高并发压力。但是我们以后肯定会接触到高并发场景的业务的,我们先对GO语言中的channel有一个了解吧。Channel是什么?Channel(通道)是
HMSC联合物种分布模型中环境变量、物种属性、系统发育、数据分层设置综合案例
weixin_贾
地理 遥感 生态模型 物种分布 生物多样性 Hmsc模型 物种属性 系统发育 群落生态 贝叶斯统计 混合效应
联合物种分布模型(JointSpeciesDistributionModelling,JSDM)在生态学领域,特别是群落生态学中发展最为迅速,它在分析和解读群落生态数据的革命性和独特视角使其受到广大国内外学者的关注。在学界不同研究团队研发出不同的联合物种模型,其中由芬兰的Ovaskainen教授领导的团队研发的R语言程序包Hmsc发展势头最为强劲。Hmsc是物种群落分层模型的缩写(Hierarch
Springboot核心:参数校验
@菜鸟进阶记@
SpringBoot spring boot 后端 java
数据校验在软件开发和信息系统中扮演着至关重要的角色,它确保了进入系统或业务流程的数据是准确、完整且符合预期的,通过实施有效的数据校验措施,可以为软件应用和信息系统提供多方面的保障和支持。本文介绍Springboot的另一个核心:参数校验。☆简单使用1.添加依赖org.springframework.bootspring-boot-starter-validation2.校验方式及注解使用DTO参数
事件朔源模式——云计算架构常用设计模式
life风起云涌
设计模式
背景在分布式系统当中,处理数据的主要方法是保存数据当前的状态。例如,传统的CRUD模式种,从存储器读取数据,进行修改,并更新数据库种当前的数据状态,而此过程的实现,通常需要锁定数据的事务来进行实现。因此,这个过程主要存在着一些局限性:CRUD系统的更新操作直接针对数据存储可能会限制性能、响应能力和拓展性,因为其必须处理锁定数据的开销;高并发情况下,可能会发生更新数据冲突;除非有额外的审计机制,否则
代码报错:‘msgfmt‘ 不是内部或外部命令,也不是可运行的程序或批处理文件
司南锤
代码报错 人工智能
出现'msgfmt'不是内部或外部命令的错误,通常是因为系统缺少GNUgettext工具(msgfmt是其组件之一)。以下是解决方法:1.安装gettext工具msgfmt是gettext工具的一部分,需先安装它:Windows系统:方法1:直接下载二进制文件访问gettextforWindows下载预编译的gettext工具包。解压文件到某个目录(如C:\gettext)。将C:\gettext
Windows本地部署Ollama+qwen本地大语言模型Web交互界面并实现公网访问
叨叨爱码字
语言模型 人工智能 自然语言处理
要在Windows系统上部署Ollama和qwen本地大语言模型的Web交互界面,并实现公网访问,你需要按照以下步骤进行操作:安装Ollama:前往Ollama的GitHub仓库下载源代码或预编译的可执行文件。根据README或相关文档的说明,安装Ollama并确保它能够在本地正常运行。安装qwen:如果还没有安装qwen,你需要前往其GitHub仓库下载源代码或预编译的可执行文件。安装qwen并
Java系统设计
不努力谁会可怜你?
后端技术 java java程序设计
1.表的设计1.1Mysql如果是微服务的话一个模块一个数据库CREATETABLE`qr_cloud_merchant`.`biao`(`cabinet_id`varchar(50)NOTNULLCOMMENT'主键',`phone`varchar(20)DEFAULTNULLCOMMENT'手机号',`access_status`enum('1','2')DEFAULT'1'COMMENT'入
飞书二维码联合登录,对接起来太简单了
王念博客
飞书
1.先创建一个飞书应用2.引入JS库3.自定义jsconstgoto="https://passport.feishu.cn/suite/passport/oauth/authorize?client_id=cli_&redirect_uri=httindex&response_type=code&state=STATE";constQRLoginObj=QRLogin({id:"login_co
为AI聊天工具添加一个知识系统 之113 详细设计之54 Chance:偶然和适配 之2
一水鉴天
软件智能 智能制造 人工语言 开发语言 人工智能
本文要点要点祖传代码中的”槽“(占位符变量)和它在实操中的三种槽(占据槽,请求槽和填充槽,实时数据库(source)中数据(流入ETL的一个正序流程行列并发靶向整形绑定变量)是如何通过“命名所依的AI行为”、“分类所缘的因果结构”和“求实所据的机器特征”(元数据仓库OLAP的三个行式并行服务进程锚定配形-限定变量)来精确锚定ETL任务绑定中的这个绑定到底是,谁和谁的什么绑定(资源存储库随着ETL的
DeepSeek大模型重构直播生态:AI数字人直播系统日均破亿流量新常态!在2025年的科技浪潮中,DeepSeek大模型以其卓越的技术实力和广泛的应用前景,正逐步重构直播生态,引领直播行业进入全
V__17671155793
重构 人工智能 科技
DeepSeek大模型重构直播生态:AI数字人直播系统日均破亿流量新常态!在2025年的科技浪潮中,DeepSeek大模型以其卓越的技术实力和广泛的应用前景,正逐步重构直播生态,引领直播行业进入全新的发展阶段。其中,AI数字人直播系统作为DeepSeek大模型的重要应用之一,已经实现了日均破亿流量的新常态,为直播行业注入了新的活力与可能。一、DeepSeek大模型:技术驱动直播创新DeepSeek
Apache Struts 存在远程代码执行漏洞(CVE-2024-53677)
缘梦未来
漏洞复现 apache struts web安全 安全
免责声明:本文旨在提供有关特定漏洞的深入信息,帮助用户充分了解潜在的安全风险。发布此信息的目的在于提升网络安全意识和推动技术进步,未经授权访问系统、网络或应用程序,可能会导致法律责任或严重后果。因此,作者不对读者基于本文内容所采取的任何行为承担责任。读者在使用本文信息时,必须严格遵循适用的法律法规及服务协议,自行承担一切风险与责任。如涉及侵权,请及时与我们联系,我们将尽快处理并删除相关内容。0x0
Ubuntu22 安装多个版本的python
莫忘初心丶
python 数据库 开发语言
前言使用pyenv是一个很好的选择,尤其是在需要管理多个Python版本时。它提供了一个简单的方法来安装、切换和管理多个版本的Python,而不必依赖系统的包管理器或update-alternatives。特别是当你需要在同一系统中频繁切换Python版本时,pyenv会显得更加方便。目录前言为什么使用`pyenv`安装`pyenv`1.安装依赖2.安装`pyenv`3.配置shell环境4.安装
事件溯源架构:用事件风暴重塑领域驱动设计
威哥说编程
大数据 微服务
在现代微服务架构中,事件溯源(EventSourcing)和领域驱动设计(DDD)是两种重要的设计理念,它们在构建分布式系统时提供了强大的支持。尤其是在复杂业务场景下,如何管理和存储系统的状态变化,成为了架构设计中的一个关键问题。通过结合事件溯源和事件风暴(EventStorming)技术,开发者可以实现更高效、更清晰的领域建模,构建易于维护和扩展的系统。本文将探讨如何通过事件溯源架构和事件风暴方
面试基础--高并发订单系统如何设计
WeiLai1112
后端 面试 职场和发展
一、总体思路高并发与可扩展采用微服务架构,将订单、用户、商品、支付、库存等功能拆分,服务间通过RPC或消息队列交互。对订单核心数据库进行分库分表,配合缓存(如Redis)减少数据库读写压力。通过消息队列(如Kafka/RabbitMQ)实现异步处理与延迟任务。订单状态机订单通常有多个状态:创建、待支付、已支付、已发货、已签收、已取消等。通过有向状态机实现状态流转,并将状态流转的业务逻辑封装在Ord
面试基础--分布式任务调度系统设计方案
WeiLai1112
后端 面试 java 后端 架构 中间件
分布式任务调度系统设计方案以下是一个基于实际项目经验设计的分布式任务调度系统方案,结合北京互联网大厂面试要求,涵盖架构图、调用关系图、设计图和数据流转时序图。1.系统概述分布式任务调度系统主要用于处理高并发、大规模的任务分发和执行场景。常见应用场景包括:异步任务处理(如邮件发送、消息通知)定时任务调度(如统计报表生成)分布式计算任务(如数据分析)本方案设计一个高可用、可扩展的分布式任务调度系统,包
【Golang学习之旅】分布式任务队列(使用 RabbitMQ / Kafka)
程序员林北北
分布式 golang 学习 云原生 kafka rabbitmq java
文章目录前言1.什么是分布式任务队列?1.1消息队列的特点2.为什么使用RabbitMQ和Kafka?2.1RabbitMQ2.2Kafka3.RabbitMQ和Kafka的基本原理3.1RabbitMQ的基本原理3.2Kafka的基本原理前言在微服务架构中,处理异步任务是不可避免的需求。为了处理任务的异步执行,系统需要一个可靠的消息队列机制。消息队列能够保证消息的持久化、顺序性和可靠性,并且能够
主要空间数据挖掘方法
CodeYoung7
总结归纳 数据挖掘 地理信息
文章出自:http://blog.csdn.net/shaoz/article/details/6847925张新长马林兵等,《地理信息系统数据库》[M],科学出版社,2005年2月第二章第二节空间数据空间数据挖掘是多学科和多种技术交叉综合的新领域,其挖掘方法以人工智能、专家系统、机器学习、数据库和统计等成熟技术为基础。下面介绍近年来出现的主要空间数据挖掘方法。1、空间分析方法利用GIS的各种空间
深入理解Golang中的new()和make()函数
水草
golang 开发语言 后端
在Go语言开发中,new()和make()是两个容易让开发者感到困惑的内建函数。尽管它们都用于内存分配,但其设计目的、适用场景和底层实现存在本质差异。本文将通过类型系统、内存模型和编译器实现三个维度,深入解析这两个函数的本质区别。一、类型系统的哲学分野1.1new()的通用性设计new(T)是为所有类型设计的通用内存分配器,其行为模式高度统一://为int类型分配零值内存pInt:=new(int
【MySQL】表空间丢失处理(Tablespace is missing for table 错误处理)
m0_74824823
面试 学习路线 阿里巴巴 mysql 数据库
问题背景最近,我在运行一个基于Python爬虫的项目时,爬虫需要频繁与MySQL数据库交互。不幸的是,在数据爬取过程中,Windows系统突然强制更新并重启。这次意外中断导致MySQL数据库的三个表格(2022年、2023年和2024年的数据表)出现了“Tablespaceismissing”的错误。起初,我尝试了常规的CHECKTABLE和REPAIRTABLE方法,但这些都没有解决问题。最终,
全开源商城源码后台php全端uniapp 全开源可二开 功能强大 商城系统源码
专业软件系统开发
源码下载 全开源商城源码
内容目录一、详细介绍二、效果展示1.部分代码2.效果图展示三、学习资料下载一、详细介绍内置8中搭配主色(可自行扩展更多配色)、自由快捷切换适应各大行业需求已支持小程序(微信、QQ、百度、支付宝、头条&抖音、快手)+H5+APPApp.vue中修改request_url和static_url地址为自己的商城地址即可使用主题默认为红色(red),如更改主题App.vue文件中修改default_the
Kafka消息服务之Java工具类
不会飞的小龙人
Java kafka java 消息队列 mq
注:此内容是本人在另一个技术平台发布的历史文章,转载发布到CSDN;ApacheKafka是一个开源分布式事件流平台,也是当前系统开发中流行的高性能消息队列服务,数千家公司使用它来实现高性能数据管道、流分析、数据集成和关键任务应用程序。Kafka可以很好地替代更传统的消息代理。消息代理的使用原因多种多样(将处理与数据生产者分离开来、缓冲未处理的消息等)。与大多数消息系统相比,Kafka具有更好的吞
【如何学习商城源码】
启山智软 商城 源码
微信小程序 小程序 java
学习商城源码是一个系统而深入的过程,需要掌握多种方法和技巧。以下是一些建议,帮助你有效地学习商城源码:一、搭建学习环境准备开发工具编程语言相关:根据商城源码使用的编程语言,安装相应的集成开发环境(IDE)。例如,若源码是Java语言编写的,可安装IntelliJIDEA或Eclipse;若是Python语言,可选择PyCharm等。这些IDE能帮助你高效地编辑、调试代码,提供语法高亮、自动补全等功
linux系统服务器下jsp传参数乱码
3213213333332132
java jsp linux windows xml
在一次解决乱码问题中, 发现jsp在windows下用js原生的方法进行编码没有问题,但是到了linux下就有问题, escape,encodeURI,encodeURIComponent等都解决不了问题
但是我想了下既然原生的方法不行,我用el标签的方式对中文参数进行加密解密总该可以吧。于是用了java的java.net.URLDecoder,结果还是乱码,最后在绝望之际,用了下面的方法解决了
Spring 注解区别以及应用
BlueSkator
spring
1. @Autowired
@Autowired是根据类型进行自动装配的。如果当Spring上下文中存在不止一个UserDao类型的bean,或者不存在UserDao类型的bean,会抛出 BeanCreationException异常,这时可以通过在该属性上再加一个@Qualifier注解来声明唯一的id解决问题。
2. @Qualifier
当spring中存在至少一个匹
printf和sprintf的应用
dcj3sjt126com
PHP sprintf printf
<?php
printf('b: %b <br>c: %c <br>d: %d <bf>f: %f', 80,80, 80, 80);
echo '<br />';
printf('%0.2f <br>%+d <br>%0.2f <br>', 8, 8, 1235.456);
printf('th
config.getInitParameter
171815164
parameter
web.xml
<servlet>
<servlet-name>servlet1</servlet-name>
<jsp-file>/index.jsp</jsp-file>
<init-param>
<param-name>str</param-name>
Ant标签详解--基础操作
g21121
ant
Ant的一些核心概念:
build.xml:构建文件是以XML 文件来描述的,默认构建文件名为build.xml。 project:每个构建文
[简单]代码片段_数据合并
53873039oycg
代码
合并规则:删除家长phone为空的记录,若一个家长对应多个孩子,保留一条家长记录,家长id修改为phone,对应关系也要修改。
代码如下:
java 通信技术
云端月影
Java 远程通信技术
在分布式服务框架中,一个最基础的问题就是远程服务是怎么通讯的,在Java领域中有很多可实现远程通讯的技术,例如:RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等,这些名词之间到底是些什么关系呢,它们背后到底是基于什么原理实现的呢,了解这些是实现分布式服务框架的基础知识,而如果在性能上有高的要求的话,那深入了解这些技术背后的机制就是必须的了,在这篇blog中我们将来
string与StringBuilder 性能差距到底有多大
aijuans
之前也看过一些对string与StringBuilder的性能分析,总感觉这个应该对整体性能不会产生多大的影响,所以就一直没有关注这块!
由于学程序初期最先接触的string拼接,所以就一直没改变过自己的习惯!
今天碰到 java.util.ConcurrentModificationException 异常
antonyup_2006
java 多线程 工作 IBM
今天改bug,其中有个实现是要对map进行循环,然后有删除操作,代码如下:
Iterator<ListItem> iter = ItemMap.keySet.iterator();
while(iter.hasNext()){
ListItem it = iter.next();
//...一些逻辑操作
ItemMap.remove(it);
}
结果运行报Con
PL/SQL的类型和JDBC操作数据库
百合不是茶
PL/SQL表 标量类型 游标 PL/SQL记录
PL/SQL的标量类型:
字符,数字,时间,布尔,%type五中类型的
--标量:数据库中预定义类型的变量
--定义一个变长字符串
v_ename varchar2(10);
--定义一个小数,范围 -9999.99~9999.99
v_sal number(6,2);
--定义一个小数并给一个初始值为5.4 :=是pl/sql的赋值号
Mockito:一个强大的用于 Java 开发的模拟测试框架实例
bijian1013
mockito 单元测试
Mockito框架:
Mockito是一个基于MIT协议的开源java测试框架。 Mockito区别于其他模拟框架的地方主要是允许开发者在没有建立“预期”时验证被测系统的行为。对于mock对象的一个评价是测试系统的测
精通Oracle10编程SQL(10)处理例外
bijian1013
oracle 数据库 plsql
/*
*处理例外
*/
--例外简介
--处理例外-传递例外
declare
v_ename emp.ename%TYPE;
begin
SELECT ename INTO v_ename FROM emp
where empno=&no;
dbms_output.put_line('雇员名:'||v_ename);
exceptio
【Java】Java执行远程机器上Linux命令
bit1129
linux命令
Java使用ethz通过ssh2执行远程机器Linux上命令,
封装定义Linux机器的环境信息
package com.tom;
import java.io.File;
public class Env {
private String hostaddr; //Linux机器的IP地址
private Integer po
java通信之Socket通信基础
白糖_
java socket 网络协议
正处于网络环境下的两个程序,它们之间通过一个交互的连接来实现数据通信。每一个连接的通信端叫做一个Socket。一个完整的Socket通信程序应该包含以下几个步骤:
①创建Socket;
②打开连接到Socket的输入输出流;
④按照一定的协议对Socket进行读写操作;
④关闭Socket。
Socket通信分两部分:服务器端和客户端。服务器端必须优先启动,然后等待soc
angular.bind
boyitech
AngularJS angular.bind AngularJS API bind
angular.bind 描述: 上下文,函数以及参数动态绑定,返回值为绑定之后的函数. 其中args是可选的动态参数,self在fn中使用this调用。 使用方法: angular.bind(se
java-13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
bylijinnan
java
import java.util.ArrayList;
import java.util.List;
public class KickOutBadGuys {
/**
* 题目:13个坏人和13个好人站成一圈,数到7就从圈里面踢出一个来,要求把所有坏人都给踢出来,所有好人都留在圈里。请找出初始时坏人站的位置。
* Maybe you can find out
Redis.conf配置文件及相关项说明(自查备用)
Kai_Ge
redis
Redis.conf配置文件及相关项说明
# Redis configuration file example
# Note on units: when memory size is needed, it is possible to specifiy
# it in the usual form of 1k 5GB 4M and so forth:
#
[强人工智能]实现大规模拓扑分析是实现强人工智能的前奏
comsci
人工智能
真不好意思,各位朋友...博客再次更新...
节点数量太少,网络的分析和处理能力肯定不足,在面对机器人控制的需求方面,显得力不从心....
但是,节点数太多,对拓扑数据处理的要求又很高,设计目标也很高,实现起来难度颇大...
记录一些常用的函数
dai_lm
java
public static String convertInputStreamToString(InputStream is) {
StringBuilder result = new StringBuilder();
if (is != null)
try {
InputStreamReader inputReader = new InputStreamRead
Hadoop中小规模集群的并行计算缺陷
datamachine
mapreduce hadoop 并行计算
注:写这篇文章的初衷是因为Hadoop炒得有点太热,很多用户现有数据规模并不适用于Hadoop,但迫于扩容压力和去IOE(Hadoop的廉价扩展的确非常有吸引力)而尝试。尝试永远是件正确的事儿,但有时候不用太突进,可以调优或调需求,发挥现有系统的最大效用为上策。
-----------------------------------------------------------------
小学4年级英语单词背诵第二课
dcj3sjt126com
english word
egg 蛋
twenty 二十
any 任何
well 健康的,好
twelve 十二
farm 农场
every 每一个
back 向后,回
fast 快速的
whose 谁的
much 许多
flower 花
watch 手表
very 非常,很
sport 运动
Chinese 中国的
自己实践了github的webhooks, linux上面的权限需要注意
dcj3sjt126com
github webhook
环境, 阿里云服务器
1. 本地创建项目, push到github服务器上面
2. 生成www用户的密钥
sudo -u www ssh-keygen -t rsa -C "
[email protected] "
3. 将密钥添加到github帐号的SSH_KEYS里面
3. 用www用户执行克隆, 源使
Java冒泡排序
蕃薯耀
冒泡排序 Java冒泡排序 Java排序
冒泡排序
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
蕃薯耀 2015年6月23日 10:40:14 星期二
http://fanshuyao.iteye.com/
Excle读取数据转换为实体List【基于apache-poi】
hanqunfeng
apache
1.依赖apache-poi
2.支持xls和xlsx
3.支持按属性名称绑定数据值
4.支持从指定行、列开始读取
5.支持同时读取多个sheet
6.具体使用方式参见org.cpframework.utils.excelreader.CP_ExcelReaderUtilTest.java
比如:
Str
3个处于草稿阶段的Javascript API介绍
jackyrong
JavaScript
原文:
http://www.sitepoint.com/3-new-javascript-apis-may-want-follow/?utm_source=html5weekly&utm_medium=email
本文中,介绍3个仍然处于草稿阶段,但应该值得关注的Javascript API.
1) Web Alarm API
&
6个创建Web应用程序的高效PHP框架
lampcy
Web 框架 PHP
以下是创建Web应用程序的PHP框架,有coder bay网站整理推荐:
1. CakePHP
CakePHP是一个PHP快速开发框架,它提供了一个用于开发、维护和部署应用程序的可扩展体系。CakePHP使用了众所周知的设计模式,如MVC和ORM,降低了开发成本,并减少了开发人员写代码的工作量。
2. CodeIgniter
CodeIgniter是一个非常小且功能强大的PHP框架,适合需
评"救市后中国股市新乱象泛起"谣言
nannan408
首先来看百度百家一位易姓作者的新闻:
三个多星期来股市持续暴跌,跌得投资者及上市公司都处于极度的恐慌和焦虑中,都要寻找自保及规避风险的方式。面对股市之危机,政府突然进入市场救市,希望以此来重建市场信心,以此来扭转股市持续暴跌的预期。而政府进入市场后,由于市场运作方式发生了巨大变化,投资者及上市公司为了自保及为了应对这种变化,中国股市新的乱象也自然产生。
首先,中国股市这两天
页面全屏遮罩的实现 方式
Rainbow702
html css 遮罩 mask
之前做了一个页面,在点击了某个按钮之后,要求页面出现一个全屏遮罩,一开始使用了position:absolute来实现的。当时因为画面大小是固定的,不可以resize的,所以,没有发现问题。
最近用了同样的做法做了一个遮罩,但是画面是可以进行resize的,所以就发现了一个问题,当画面被reisze到浏览器出现了滚动条的时候,就发现,用absolute 的做法是有问题的。后来改成fixed定位就
关于angularjs的点滴
tntxia
AngularJS
angular是一个新兴的JS框架,和以往的框架不同的事,Angularjs更注重于js的建模,管理,同时也提供大量的组件帮助用户组建商业化程序,是一种值得研究的JS框架。
Angularjs使我们可以使用MVC的模式来写JS。Angularjs现在由谷歌来维护。
这里我们来简单的探讨一下它的应用。
首先使用Angularjs我
Nutz--->>反复新建ioc容器的后果
xiaoxiao1992428
DAO mvc IOC nutz
问题:
public class DaoZ {
public static Dao dao() { // 每当需要使用dao的时候就取一次
Ioc ioc = new NutIoc(new JsonLoader("dao.js"));
return ioc.get(