TCP即Transmission Control Protocol,传输控制协议。与UDP不同,它是面向连接和数据流的可靠传输协议。也就是说,它能使一台计算机上的数据无差错的发往网络上的其他计算机,所以当要传输大量数据时,我们选用TCP协议。
TCP协议的程序使用的是客户端/服务器模式,在Qt中提供了QTcpSocket类来编写客户端程序,使用QTcpServer类编写服务器端程序。我们在服务器端进行端口的监听,一旦发现客户端的连接请求,就会发出newConnection()信号,我们可以关联这个信号到我们自己的槽函数,进行数据的发送。而在客户端,一旦有数据到来就会发出readyRead()信号,我们可以关联此信号,进行数据的接收。其实,在程序中最难理解的地方就是程序的发送和接收了,为了让大家更好的理解,我们在这一节只是讲述一个传输简单的字符串的例子,在下一节再进行扩展,实现任意文件的传输。
一、 服务器端。
在服务器端的程序中,我们监听本地主机的一个端口,这里使用6666,然后我们关联newConnection()信号与自己写的sendMessage()槽函数。就是说一旦有客户端的连接请求,就会执行sendMessage()函数,在这个函数里我们发送一个简单的字符串。
1. 我们新建Qt4 Gui Application ,工程名为“tcpServer ”,选中QtNetwork 模块,Base class 选择QWidget。(说明:如果一些Qt Creator版本没有添加模块一项,我们就需要在工程文件tcpServer.pro中添加一行代码:QT += network)
2.我们在widget.ui的设计区添加一个Label,更改其objectName为statusLabel,用于显示一些状态信息。如下:
3. 在widget.h 文件中做以下更改。
添加头文件:#include
添加private对象:QTcpServer *tcpServer;
添加私有槽函数:
private slots:
void sendMessage();
4. 在widget.cpp文件中进行更改。
在其构造函数中添加代码:
tcpServer = new QTcpServer(this);
if(!tcpServer->listen(QHostAddress::LocalHost,6666))
{ //监听本地主机的6666端口,如果出错就输出错误信息,并关闭
qDebug() << tcpServer->errorString();
close();
}
connect(tcpServer,SIGNAL(newConnection()),this,SLOT(sendMessage()));
//连接信号和相应槽函数
我们在构造函数中使用tcpServer的listen()函数进行监听,然后关联了newConnection()和我们自己的sendMessage()函数。
下面我们实现sendMessage()函数。
void Widget::sendMessage()
{
QByteArray block; //用于暂存我们要发送的数据
QDataStream out(&block,QIODevice::WriteOnly);
//使用数据流写入数据
out.setVersion(QDataStream::Qt_4_6);
//设置数据流的版本,客户端和服务器端使用的版本要相同
out<<(quint16) 0;
out<
out.device()->seek(0);
out<<(quint16) (block.size() – sizeof(quint16));
QTcpSocket *clientConnection = tcpServer->nextPendingConnection();
//我们获取已经建立的连接的子套接字
connect(clientConnection,SIGNAL(disconnected()),clientConnection,
SLOT(deleteLater()));
clientConnection->write(block);
clientConnection->disconnectFromHost();
ui->statusLabel->setText(“send message successful!!!”);
//发送数据成功后,显示提示
}
这个是数据发送函数,我们主要介绍两点:
(1)为了保证在客户端能接收到完整的文件,我们都在数据流的最开始写入完整文件的大小信息,这样客户端就可以根据大小信息来判断是否接受到了完整的文件。而在服务器端,我们在发送数据时就要首先发送实际文件的大小信息,但是,文件的大小一开始是无法预知的,所以我们先使用了out<<(quint16) 0;在block的开始添加了一个quint16大小的空间,也就是两字节的空间,它用于后面放置文件的大小信息。然后out<seek(0);返回到block的开始,加入实际的文件大小信息,也就是后面的代码,它是实际文件的大小:out<<(quint16) (block.size() – sizeof(quint16));
(2)在服务器端我们可以使用tcpServer的nextPendingConnection()函数来获取已经建立的连接的Tcp套接字,使用它来完成数据的发送和其它操作。比如这里,我们关联了disconnected()信号和deleteLater()槽函数,然后我们发送数据
clientConnection->write(block);
然后是clientConnection->disconnectFromHost();它表示当发送完成时就会断开连接,这时就会发出disconnected()信号,而最后调用deleteLater()函数保证在关闭连接后删除该套接字clientConnection。
5. 这样服务器的程序就完成了,我们先运行一下程序。
二、客户端。
我们在客户端程序中向服务器发送连接请求,当连接成功时接收服务器发送的数据。
1. . 我们新建Qt4 Gui Application ,工程名为“tcpClient ”,选中QtNetwork 模块,Base class 选择QWidget 。
2 ,我们在widget.ui 中添加几个标签Label 和两个Line Edit 以及一个按钮Push Button 。
其中“主机”后的Line Edit的objectName为hostLineEdit,“端口号”后的为portLineEdit。
“收到的信息”标签的objectName为messageLabel 。
3. 在widget.h 文件中做更改。
添加头文件:#include
添加private变量:
QTcpSocket *tcpSocket;
QString message; //存放从服务器接收到的字符串
quint16 blockSize; //存放文件的大小信息
添加私有槽函数:
private slots:
void newConnect(); //连接服务器
void readMessage(); //接收数据
void displayError(QAbstractSocket::SocketError); //显示错误
4. 在widget.cpp 文件中做更改。
(1)在构造函数中添加代码:
tcpSocket = new QTcpSocket(this);
connect(tcpSocket,SIGNAL(readyRead()),this,SLOT(readMessage()));
connect(tcpSocket,SIGNAL(error(QAbstractSocket::SocketError)),
this,SLOT(displayError(QAbstractSocket::SocketError)));
这里关联了tcpSocket的两个信号,当有数据到来时发出readyRead()信号,我们执行读取数据的readMessage()函数。当出现错误时发出error()信号,我们执行displayError()槽函数。
(2)实现newConnect()函数。
void Widget::newConnect()
{
blockSize = 0; //初始化其为0
tcpSocket->abort(); //取消已有的连接
tcpSocket->connectToHost(ui->hostLineEdit->text(),
ui->portLineEdit->text().toInt());
//连接到主机,这里从界面获取主机地址和端口号
}
这个函数实现了连接到服务器,下面会在“连接”按钮的单击事件槽函数中调用这个函数。
(3)实现readMessage()函数。
void Widget::readMessage()
{
QDataStream in(tcpSocket);
in.setVersion(QDataStream::Qt_4_6);
//设置数据流版本,这里要和服务器端相同
if(blockSize==0) //如果是刚开始接收数据
{
//判断接收的数据是否有两字节,也就是文件的大小信息
//如果有则保存到blockSize变量中,没有则返回,继续接收数据
if(tcpSocket->bytesAvailable() < (int)sizeof(quint16)) return;
in >> blockSize;
}
if(tcpSocket->bytesAvailable() < blockSize) return;
//如果没有得到全部的数据,则返回,继续接收数据
in >> message;
//将接收到的数据存放到变量中
ui->messageLabel->setText(message);
//显示接收到的数据
}
这个函数实现了数据的接收,它与服务器端的发送函数相对应。首先我们要获取文件的大小信息,然后根据文件的大小来判断是否接收到了完整的文件。
(4)实现displayError()函数。
void Widget::displayError(QAbstractSocket::SocketError)
{
qDebug() << tcpSocket->errorString(); //输出错误信息
}
这里简单的实现了错误信息的输出。
(5)我们在widget.ui中进入“连接”按钮的单击事件槽函数,然后更改如下。
void Widget::on_pushButton_clicked() //连接按钮
{
newConnect(); //请求连接
}
这里直接调用了newConnect()函数。
5. 我们运行程序,同时运行服务器程序,然后在“主机”后填入“localhost ”,在“端口号”后填入“6666”,点击“连接”按钮,效果如下。
可以看到我们正确地接收到了数据。因为服务器端和客户端是在同一台机子上运行的,所以我这里填写了“主机”为“localhost”,如果你在不同的机子上运行,需要在“主机”后填写其正确的IP地址。
到这里我们最简单的TCP应用程序就完成了,在下一节我们将会对它进行扩展,实现任意文件的传输。
补充一点 获取本机IP地址的方法:
#include QString getIPAddress() { QString ipAddress; QList ipAddressesList = QNetworkInterface::allAddresses(); for (int i = 0; i < ipAddressesList.size(); ++i) { if (ipAddressesList.at(i) != QHostAddress::LocalHost && ipAddressesList.at(i).toIPv4Address()) { ipAddress = ipAddressesList.at(i).toString(); break; } } if (ipAddress.isEmpty()) ipAddress = QHostAddress(QHostAddress::LocalHost).toString(); return ipAddress; }
运行:169.254.11.*
将break去掉 便可得到局域网IP:192.168.0.1
你可能感兴趣的:(【05】QT,tcp,网络,服务器,signal,qt,application)
基于QT与STM32的电力参数采集系统(华为云IOT)(211)
DS小龙哥
智能家居与物联网项目实战 qt stm32 华为云 电力采集
文章目录一、前言1.1项目介绍【1】开发背景【2】项目实现的功能【3】项目硬件模块组成1.2设计思路【1】整体设计思路【2】整体构架【3】上位机开发思路【4】供电方式1.3项目开发背景【1】选题的意义【2】可行性分析【3】参考文献【4】摘要1.4开发工具的选择【1】设备端开发【2】上位机开发1.5系统框架图1.6系统功能总结1.7设备原理图1.8硬件实物图二、硬件选型2.1STM32开发板2.2U
基于Prometheus和Grafana的现代服务器监控体系构建
iangyu
服务器
构建一个基于Prometheus和Grafana的现代服务器监控体系,可以帮助你实时监控服务器的性能指标、识别问题并进行预警。以下是一个完整的构建指南,涵盖从安装、配置到实现监控的主要步骤。步骤1:安装PrometheusPrometheus是一个开源的监控系统,专为高效的数据收集和存储设计。下载Prometheuswgethttps://github.com/prometheus/prometh
【云原生】Kubernetes中如何通过Pod名称查询Docker容器ID,通过Docker容器ID查询Pod名称?
景天科技苑
云原生K8S 零基础到进阶实战 云原生 kubernetes docker docker容器id查询 pod查询 docker与pod互查
✨✨欢迎大家来到景天科技苑✨✨养成好习惯,先赞后看哦~作者简介:景天科技苑《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi,flask等框架,云原生k8s,linux,she
基于prometheus和grafana的现代服务器监控体系构建
清风 001
Linux系统 服务器
构建一个基于Prometheus和Grafana的现代服务器监控体系包括以下几个步骤:安装Prometheus安装NodeExporter安装Grafana配置Prometheus配置Grafana设置警报以下是一个详细的指南,帮助你完成这整个过程:1.安装Prometheus在Ubuntu上安装Prometheus#下载并解压Prometheuswgethttps://github.com/pr
微信小程序背景图无法显示
扼流挽
微信小程序 小程序
文章目录不知道有没有人跟我一样,刚接触微信小程序,在写代码的时候,背景图莫名奇妙不显示。网上有很多解决方法,比如转base64,网络图片地址等等,但我觉得都太麻烦了,这里直接给出我的解决方法用WXS做个字符串变量,存放你的图片路径地址,然后插值到标签上就可以了。(还可以直接把background也一起放进变量里,不过那样写路径时就没有提示了)由于WXS是属于视图层的,所以也不用担心会影响加载速度。
2022-09-13 《思辨力》1054
我来自金星
什么意思?比如说“老吾老”。今天如果我自私的话,我不照顾其他人家的老人,其他人家也不照顾我家的老人,这种情况下大家其实是双输。道德就是让大家去进行一种双赢的生活,我们互相照顾。为什么我们需要这样一种规范呢?这就像因徒困境一样。因为如果大家都遵守道德,我们就能够互利共赢,就是能公共利益最大化,每个人的利益最大化;但一旦其中有一些人出于自私的目的,没有遵守道德给我们制定的这些规范,一旦有人开始破坏了,
四大运营商手机卡流量套餐(手机电话卡的四大运营商哪家的套餐划算)
优惠攻略官
目前,随着互联网的普及和网络应用的不断发展,流量成为了人们生活中不可或缺的一部分。在三大运营商中,中国联通一直以来都提供了各种各样的流量套餐,而2024年的联通流量套餐更是具有出色的性价比,为用户提供了高性能的上网体验。在2024年的联通流量套餐中,最划算的套餐一般是包含大容量流量、长时效且价格经济实惠的套餐。这种套餐能够满足用户日常的上网需求,让用户享受到更加畅快的网络体验,而且价格相对较为合理
快手客户端一二面+美团前端一面+腾讯企业微信开发客户端一面
一粼
开发语言
快手一面结志1、自我介绍2、对称加密非对称加密3、TCP/UDP4、在学校有什么课程是强项,说了过去几次面试中面到的C++的语言基础知识5、问C++、Java中兴趣在哪里6、问到项目,自己做的还是跟着学校老师做的,同样问到兴趣在哪里7、LRUCache,要求限制大小,代码实现;用的一个queue一个vector加sort排序,仿照线程池结构来写的,回去还查了资料,和说的时候一样要求要用到最小堆或者
中原焦点团队赵玉芳,焦点解决网络初级九期,辽宁,2020/3/27坚持分享第548+144
百合花开2018
如何与问题共处在咨询中,当问题一时无法解决时,如何与问题共处就成了咨询的另一个次目标咨询师要尊重当事人的感受有些困难真的暂时无法克服~无法全部解决~不能改变,先用应对问句引导会如何欣赏自己一直在与困境对峙!没有放弃面对问题。是如何帮助自己支撑到现在的。给予支持,理解,欣赏咨询目标确定为,当事人需要什么,才能帮助他接受困难无法克服或难以全然克服的事实。
七个合法学习黑客技术的平台,让你从萌新成为大佬
黑客白帽子黑爷
学习 php web安全 网络 安全 开发语言
1、HackThisSite提供在线IRC聊天和论坛,让用户交流更加方便。网站涵盖多种主题,包括密码破解、网络侦察、漏洞利用、社会工程学等。非常适用于个人提高网络安全技能2、HackaDay涵盖多个领域,包括黑客技术、科技、工程和DIY等内容,站内提供大量有趣的文章、视频、教程和新闻,帮助用户掌握黑客技术和DIY精神。3、OffensiveSecurity一个专门提供网络安全培训和认证的公司,课程
七个合法学习黑客技术的平台,让你从萌新成为大佬
黑客白帽子黑爷
学习 php web安全 网络 安全 开发语言
1、HackThisSite提供在线IRC聊天和论坛,让用户交流更加方便。网站涵盖多种主题,包括密码破解、网络侦察、漏洞利用、社会工程学等。非常适用于个人提高网络安全技能2、HackaDay涵盖多个领域,包括黑客技术、科技、工程和DIY等内容,站内提供大量有趣的文章、视频、教程和新闻,帮助用户掌握黑客技术和DIY精神。3、OffensiveSecurity一个专门提供网络安全培训和认证的公司,课程
差点上当
94河北王亚男笑雅笑春风
提到网络诈骗,我大脑立刻回忆起去年差一点上当受骗的经历。确切地说是去年暑假8月10中午,我正在家吃午饭,因晋职无望心情很沮丧。忽然手机微信有人在跟我打招呼,两个人的头像不同,微信分别是“李某某”和“一天到晚游泳的鱼”:“王老师,近期工作顺利吗?”“工作上遇到困难就跟我说,我可以帮助你尽量帮你。”这一下戳中了我的痛楚,内心很嘀咕:怎么今天大领导这么有时间关心我?我校唯一的指标已经尘埃落定了,怎么帮我
我与新媒体
wnn雨泽
在我九岁的时候家里买了电脑,体验过后让我感觉的到了外面的世界很大,自己只是这个世界里面小小的一角里面的一员.还感觉到了网络世界里面的游戏、交易、电影、知识还能认识朋友,之后就对新媒体特别感兴趣。在我的认知里,新媒体就是另一个世界,里面什么都有,有巨大的信息库跟社交平台还有线上的购物平台就是一个高效且又互动性高的新世界.这个学期我们有新媒体运营这门课程,其实也挺高兴的,能学习到自己感兴趣的东西.今天
为什么说网络安全行业是IT行业最后的红利?
网安CILLE
web安全 php 安全 ddos 网络 开发语言
前言2023年网络安全行业的前景看起来非常乐观。根据当前的趋势和发展,一些趋势和发展可能对2023年网络安全行业产生影响:5G技术的广泛应用:5G技术的普及将会使互联网的速度更快,同时也将带来更多的网络威胁和安全挑战。网络安全专家需要开发和实现新的技术和解决方案来确保5G网络的安全性。物联网的扩张:物联网将改变我们生活的方方面面,但它也将增加网络威胁的数量。网络安全专家需要制定安全策略和技术,以确
约练收获
雪梅_3005
2021年12月30日中原焦点团队网络中级28班裴雪梅坚持分享第202天+本期约练第38次+挑战次3/约练次1/总次数27今天进行本周第2次约练,角色来访者。今天的约练给了我非常奇特的体验,来访者稳稳地,慢慢地说着发生在自己身上莫名其妙的的事;咨询师不慌不忙,想着怎么用最精简的语言共情到来访者,怎么读懂来访者,怎么向来访者学习;观察员非常细致的观察到发生在咨询师里的事,并用好奇的态度,让来访者和咨
还原win11右键菜单栏
前端小菜鸟也有人起
前端
win11的菜单栏太难用了第一步管理员运行cmd第二步reg.exeadd"HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32"/f/ve回车第三步taskkill/f/imexplorer.exe&startexplorer.exe回车搞定了
机器学习在医学中的应用
听忆.
机器学习 人工智能
边走、边悟迟早会好机器学习在医学中的应用是一个广泛且复杂的领域,涵盖了从基础研究到临床应用的多个方面。以下是一个万字总结的结构性思路,分章节深入探讨不同应用场景、技术方法、挑战与未来展望。1.引言背景与发展:介绍医学领域的数字化转型以及机器学习的兴起,探讨其在医学中的潜力。机器学习的基本概念:简要介绍机器学习的基本原理、分类(监督学习、非监督学习、强化学习等)和常用算法(如神经网络、支持向量机、随
网络时代,我们是否正在丧失深度阅读和思考的能力
清歌艺
深阅读不一定只针对书本,只要是主题阅读,都可以算是深阅读。深阅读是指能够长时间针对某个问题进行相关阅读的行为”。这样,深阅读显然需要花费更多的时间与精力,并且是限定在特定的某个领域,针对有限的问题。不是像微博、知乎、浏览器首页资讯一样漫无目的的阅读,不是在各个社交网站里等待信息的更新,我很认同啊桂读书的这个想法。很多人认为名著是需要“深阅读”的,或者很多人看到读名著的人越来越少就觉得“深阅读”越来
dell kvm java 会话报错_扔掉KVM!图解戴尔iDRAC服务器远程控制设置
木木三皮尔
dell kvm java 会话报错
R410BMCR620iDRACR720对于远程的服务器,我们不能经常性的去机房维护,所以远程控制对于服务器来说就显得至关重要。那么你是用什么方式对服务器进行远程控制呢?远程桌面?还是KVM切换器?NO,你OUT了!如果你用的是戴尔的服务器,那么iDRAC功能不使用的话就是个极大的浪费哦。那么什么是iDRAC呢?iDRAC又称为IntegratedDellRemoteAccessControlle
linux内存功耗测试,一种服务器动态功耗的测试方法
邪王真眼小埋粉
linux内存功耗测试
一种服务器动态功耗的测试方法【技术领域】[0001]本发明公开一种服务器功耗的测试方法,属于服务器功耗测试领域,具体地说是一种服务器动态功耗的测试方法。【背景技术】[0002]当前节能减排的大背景下,服务器功耗数据日益成为很多客户关心的问题。目前国内服务器能耗已经占用了大量企业的投资,功耗已经与性能和成本并列成为服务器产品的三大衡量标准。开展对服务器节能技术的深入研宄刻不容缓,而对服务器功耗的测试
RabbitMQ 入门教程
寂然如故
RabbitMQ rabbitmq 分布式
概述RabbitMQ是一个开源的消息代理和队列服务器,实现[AMQP0-9-1]标准。本教程将指导你如何使用Python和RabbitMQ进行消息传递。安装与配置安装RabbitMQ1.Ubuntu:```bashsudoapt-getupdatesudoapt-getinstallrabbitmq-server```2.Windows:-下载安装包并运行。配置-启动管理插件以在浏览器中查看队列状
RabbitMQ 入门教程
寂然如故
ruby 开发语言 后端
介绍RabbitMQ是一个开源的消息代理和队列服务器,实现高级消息队列协议(AMQP)。它可以在生产者和消费者之间传递消息,并且可以保证消息的传递。本教程将指导你通过简单的步骤来搭建并使用RabbitMQ。安装与配置1.安装RabbitMQLinux```bashsudoapt-getupdatesudoapt-getinstallrabbitmq-server```Windows-下载安装包:h
RabbitMQ 入门教程
寂然如故
RabbitMQ ruby 开发语言 后端
概述RabbitMQ是一个开源的消息代理和队列服务器,实现了高级消息队列协议(AMQP)。它能够接收、存储和转发消息数据。本教程将引导你完成搭建RabbitMQ环境、编写生产者与消费者程序的过程。安装与配置1.安装RabbitMQLinux```bashsudoapt-getupdatesudoapt-getinstallrabbitmq-server```Windows-下载安装包:https:
寻觅希望之旅(4)
然子_50bd
李明然焦点解决网络初级第14期洛阳嵩县坚持分享第38天(2019.4.4)制定规则青少年喜欢有选择的空间,所以当孩子做某件事时可以配合设限。例如:孩子9:30睡觉,可以有三种选择。一是9:30上床睡觉;二是9:00上床,妈妈给你讲半个小时的故事。三是9:15上床,自己玩15分钟娃娃。
问答泛单页目录站群通用程序——码山侠
dv20kuxiang
服务器
功能特性:内置ASCII码转换功能:可通过简易开关控制文章中ASCII码的添加。内置缓存管理功能:提供程序缓存开关,以优化性能和响应速度。打开:i5i.net使用指南:本程序无需依赖数据库,仅需部署在支持PHP的服务器环境中。将程序文件放置于网站根目录并配置相应的伪静态规则即可使用。本问答泛目录系统采用单一页面模板设计,若需修改页面上的联系方式,请进入mb(模板)目录,编辑模板文件,并将“填写您的
4. 生成对抗网络(GAN):生成模型的崛起
Network_Engineer
机器学习 python 深度学习 机器学习 算法 人工智能
引言生成对抗网络(GAN)是近年来深度学习领域中最具创新性和影响力的模型之一。GAN通过生成器和判别器的对抗性训练,能够生成逼真的图像、音频、文本等数据,广泛应用于图像生成、数据增强、风格迁移等任务中。本篇博文将深入解析GAN的基本原理、训练过程,以及其在各类生成任务中的应用。1.GAN的基本架构生成对抗网络(GAN)由两个核心部分组成:生成器(Generator)和判别器(Discriminat
善待自己
gyf16
高艳峰信阳网络中级九期坚持分享第320天2019-02-13关爱自己,只有多关爱自己,才能有更多的能量去关爱他人,如果你有足够的能力,就要尽量帮助你能帮助的人,那样你得到的就是几份快乐,多帮助他人,善待自己,也是一种减压的方式.
基于单片机的家居环境监测系统的设计
lantiandianzi
单片机 嵌入式硬件
本设计基于单片机的家居环境监测系统,采用STM32F103C6T6单片机作为主要的控制芯片,环境监测方面采用SHT30模块实现室内温度和湿度的监测;有害气体监测方面,用MQ-7传感器实现室内一氧化碳气体的监测;采用WIFI模块连接指定热点,通信方案采用MQTT协议,将采集到的数据发送到阿里云物联网平台;采用OLED显示模块对采集到的数据进行显示。
嵌入式学习心得(二)
Whyme7
C语言之父-----丹吉斯.里奇Linux与UNLX的发展过程中对我的影响:unlx在国外是一种商业开发的模板,对于Linux而言在当时有着无法比拟的优势,但是由于其付费模式的应用,是的不少人对于这种模式的反感,是的网络上出现了开源社区,而Linux就在这种环境中成长了,得益于GPL协议,不断地技术人员将改良后的可供开发人员使用的开源的Linux软件上传到开源社区中,是的其不断完善,也变得相当的安
怎么用住宅代理IP?使用住宅代理IP有哪些好处?
xinxinhenmeihao
tcp/ip 网络 服务器
如何使用住宅代理IP:使用住宅代理IP主要涉及以下几个步骤:选择合适的代理IP供应商:考虑供应商的可靠性、代理IP的质量、速度、稳定性以及价格。选择信誉良好且服务稳定的供应商,确保获得高质量的代理IP服务。配置代理IP:供应商通常会提供详细的配置指南和客户支持。在设备或网络设置中输入代理服务器的地址和端口号。一些供应商还提供了能够自动配置和管理多个代理IP的软件或应用程序。使用代理IP进行网络活动
eclipse maven
IXHONG
eclipse
eclipse中使用maven插件的时候,运行run as maven build的时候报错
-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.
可以设一个环境变量M2_HOME指
timer cancel方法的一个小实例
alleni123
多线程 timer
package com.lj.timer;
import java.util.Date;
import java.util.Timer;
import java.util.TimerTask;
public class MyTimer extends TimerTask
{
private int a;
private Timer timer;
pub
MySQL数据库在Linux下的安装
ducklsl
mysql
1.建好一个专门放置MySQL的目录
/mysql/db数据库目录
/mysql/data数据库数据文件目录
2.配置用户,添加专门的MySQL管理用户
>groupadd mysql ----添加用户组
>useradd -g mysql mysql ----在mysql用户组中添加一个mysql用户
3.配置,生成并安装MySQL
>cmake -D
spring------>>cvc-elt.1: Cannot find the declaration of element
Array_06
spring bean
将--------
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3
maven发布第三方jar的一些问题
cugfy
maven
maven中发布 第三方jar到nexus仓库使用的是 deploy:deploy-file命令
有许多参数,具体可查看
http://maven.apache.org/plugins/maven-deploy-plugin/deploy-file-mojo.html
以下是一个例子:
mvn deploy:deploy-file -DgroupId=xpp3
MYSQL下载及安装
357029540
mysql
好久没有去安装过MYSQL,今天自己在安装完MYSQL过后用navicat for mysql去厕测试链接的时候出现了10061的问题,因为的的MYSQL是最新版本为5.6.24,所以下载的文件夹里没有my.ini文件,所以在网上找了很多方法还是没有找到怎么解决问题,最后看到了一篇百度经验里有这个的介绍,按照其步骤也完成了安装,在这里给大家分享下这个链接的地址
ios TableView cell的布局
张亚雄
tableview
cell.imageView.image = [UIImage imageNamed:[imageArray objectAtIndex:[indexPath row]]];
CGSize itemSize = CGSizeMake(60, 50);
&nbs
Java编码转义
adminjun
java 编码转义
import java.io.UnsupportedEncodingException;
/**
* 转换字符串的编码
*/
public class ChangeCharset {
/** 7位ASCII字符,也叫作ISO646-US、Unicode字符集的基本拉丁块 */
public static final Strin
Tomcat 配置和spring
aijuans
spring
简介
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME。然后找这个变量所指的目录下的conf文件夹,从中读取配置文件。最重要的配置文件:server.xml 。要配置tomcat,基本上了解server.xml,context.xml和web.xml。
Server.xml -- tomcat主
Java打印当前目录下的所有子目录和文件
ayaoxinchao
递归 File
其实这个没啥技术含量,大湿们不要操笑哦,只是做一个简单的记录,简单用了一下递归算法。
import java.io.File;
/**
* @author Perlin
* @date 2014-6-30
*/
public class PrintDirectory {
public static void printDirectory(File f
linux安装mysql出现libs报冲突解决
BigBird2012
linux
linux安装mysql出现libs报冲突解决
安装mysql出现
file /usr/share/mysql/ukrainian/errmsg.sys from install of MySQL-server-5.5.33-1.linux2.6.i386 conflicts with file from package mysql-libs-5.1.61-4.el6.i686
jedis连接池使用实例
bijian1013
redis jedis连接池 jedis
实例代码:
package com.bijian.study;
import java.util.ArrayList;
import java.util.List;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoo
关于朋友
bingyingao
朋友 兴趣爱好 维持
成为朋友的必要条件:
志相同,道不合,可以成为朋友。譬如马云、周星驰一个是商人,一个是影星,可谓道不同,但都很有梦想,都要在各自领域里做到最好,当他们遇到一起,互相欣赏,可以畅谈两个小时。
志不同,道相合,也可以成为朋友。譬如有时候看到两个一个成绩很好每次考试争做第一,一个成绩很差的同学是好朋友。他们志向不相同,但他
【Spark七十九】Spark RDD API一
bit1129
spark
aggregate
package spark.examples.rddapi
import org.apache.spark.{SparkConf, SparkContext}
//测试RDD的aggregate方法
object AggregateTest {
def main(args: Array[String]) {
val conf = new Spar
ktap 0.1 released
bookjovi
kernel tracing
Dear,
I'm pleased to announce that ktap release v0.1, this is the first official
release of ktap project, it is expected that this release is not fully
functional or very stable and we welcome bu
能保存Properties文件注释的Properties工具类
BrokenDreams
properties
今天遇到一个小需求:由于java.util.Properties读取属性文件时会忽略注释,当写回去的时候,注释都没了。恰好一个项目中的配置文件会在部署后被某个Java程序修改一下,但修改了之后注释全没了,可能会给以后的参数调整带来困难。所以要解决这个问题。
&nb
读《研磨设计模式》-代码笔记-外观模式-Facade
bylijinnan
java 设计模式
声明: 本文只为方便我个人查阅和理解,详细的分析以及源代码请移步 原作者的博客http://chjavach.iteye.com/
/*
* 百度百科的定义:
* Facade(外观)模式为子系统中的各类(或结构与方法)提供一个简明一致的界面,
* 隐藏子系统的复杂性,使子系统更加容易使用。他是为子系统中的一组接口所提供的一个一致的界面
*
* 可简单地
After Effects教程收集
cherishLC
After Effects
1、中文入门
http://study.163.com/course/courseMain.htm?courseId=730009
2、videocopilot英文入门教程(中文字幕)
http://www.youku.com/playlist_show/id_17893193.html
英文原址:
http://www.videocopilot.net/basic/
素
Linux Apache 安装过程
crabdave
apache
Linux Apache 安装过程
下载新版本:
apr-1.4.2.tar.gz(下载网站:http://apr.apache.org/download.cgi)
apr-util-1.3.9.tar.gz(下载网站:http://apr.apache.org/download.cgi)
httpd-2.2.15.tar.gz(下载网站:http://httpd.apac
Shell学习 之 变量赋值和引用
daizj
shell 变量引用 赋值
本文转自:http://www.cnblogs.com/papam/articles/1548679.html
Shell编程中,使用变量无需事先声明,同时变量名的命名须遵循如下规则:
首个字符必须为字母(a-z,A-Z)
中间不能有空格,可以使用下划线(_)
不能使用标点符号
不能使用bash里的关键字(可用help命令查看保留关键字)
需要给变量赋值时,可以这么写:
Java SE 第一讲(Java SE入门、JDK的下载与安装、第一个Java程序、Java程序的编译与执行)
dcj3sjt126com
java jdk
Java SE 第一讲:
Java SE:Java Standard Edition
Java ME: Java Mobile Edition
Java EE:Java Enterprise Edition
Java是由Sun公司推出的(今年初被Oracle公司收购)。
收购价格:74亿美金
J2SE、J2ME、J2EE
JDK:Java Development
YII给用户登录加上验证码
dcj3sjt126com
yii
1、在SiteController中添加如下代码:
/**
* Declares class-based actions.
*/
public function actions() {
return array(
// captcha action renders the CAPTCHA image displ
Lucene使用说明
dyy_gusi
Lucene search 分词器
Lucene使用说明
1、lucene简介
1.1、什么是lucene
Lucene是一个全文搜索框架,而不是应用产品。因此它并不像baidu或者googleDesktop那种拿来就能用,它只是提供了一种工具让你能实现这些产品和功能。
1.2、lucene能做什么
要回答这个问题,先要了解lucene的本质。实际
学习编程并不难,做到以下几点即可!
gcq511120594
数据结构 编程 算法
不论你是想自己设计游戏,还是开发iPhone或安卓手机上的应用,还是仅仅为了娱乐,学习编程语言都是一条必经之路。编程语言种类繁多,用途各 异,然而一旦掌握其中之一,其他的也就迎刃而解。作为初学者,你可能要先从Java或HTML开始学,一旦掌握了一门编程语言,你就发挥无穷的想象,开发 各种神奇的软件啦。
1、确定目标
学习编程语言既充满乐趣,又充满挑战。有些花费多年时间学习一门编程语言的大学生到
Java面试十问之三:Java与C++内存回收机制的差别
HNUlanwei
java C++ finalize() 堆栈 内存回收
大家知道, Java 除了那 8 种基本类型以外,其他都是对象类型(又称为引用类型)的数据。 JVM 会把程序创建的对象存放在堆空间中,那什么又是堆空间呢?其实,堆( Heap)是一个运行时的数据存储区,从它可以分配大小各异的空间。一般,运行时的数据存储区有堆( Heap)和堆栈( Stack),所以要先看它们里面可以分配哪些类型的对象实体,然后才知道如何均衡使用这两种存储区。一般来说,栈中存放的
第二章 Nginx+Lua开发入门
jinnianshilongnian
nginx lua
Nginx入门
本文目的是学习Nginx+Lua开发,对于Nginx基本知识可以参考如下文章:
nginx启动、关闭、重启
http://www.cnblogs.com/derekchen/archive/2011/02/17/1957209.html
agentzh 的 Nginx 教程
http://openresty.org/download/agentzh-nginx-tutor
MongoDB windows安装 基本命令
liyonghui160com
windows安装
安装目录:
D:\MongoDB\
新建目录
D:\MongoDB\data\db
4.启动进城:
cd D:\MongoDB\bin
mongod -dbpath D:\MongoDB\data\db
&n
Linux下通过源码编译安装程序
pda158
linux
一、程序的组成部分 Linux下程序大都是由以下几部分组成: 二进制文件:也就是可以运行的程序文件 库文件:就是通常我们见到的lib目录下的文件 配置文件:这个不必多说,都知道 帮助文档:通常是我们在linux下用man命令查看的命令的文档
二、linux下程序的存放目录 linux程序的存放目录大致有三个地方: /etc, /b
WEB开发编程的职业生涯4个阶段
shw3588
编程 Web 工作 生活
觉得自己什么都会
2007年从学校毕业,凭借自己原创的ASP毕业设计,以为自己很厉害似的,信心满满去东莞找工作,找面试成功率确实很高,只是工资不高,但依旧无法磨灭那过分的自信,那时候什么考勤系统、什么OA系统、什么ERP,什么都觉得有信心,这样的生涯大概持续了约一年。
根本不是自己想的那样
2008年开始接触很多工作相关的东西,发现太多东西自己根本不会,都需要去学,不管是asp还是js,
遭遇jsonp同域下变作post请求的坑
vb2005xu
jsonp 同域post
今天迁移一个站点时遇到一个坑爹问题,同一个jsonp接口在跨域时都能调用成功,但是在同域下调用虽然成功,但是数据却有问题. 此处贴出我的后端代码片段
$mi_id = htmlspecialchars(trim($_GET['mi_id ']));
$mi_cv = htmlspecialchars(trim($_GET['mi_cv ']));
贴出我前端代码片段:
$.aj