java 如何搭建http服务器
看你具体是想做什么,现在现成的开源的java的http服务器有很多,像tomcat之类的都有http服务器功能,如果你只是单纯的需要用的话,直接用tomcat就好了
但是如果你是做要自己用java实现一个http服务器的话就要稍微麻烦一点
http服务器,本质上还是基于tcpip协议的服务器,首先用java的ServerSocket监听一个端口(也可以使用开源的server组件,如quickserver之类的),然后对客户端发上来的数据进行处理,这里就需要了解一下http协议了,因为上来的数据,都是按照http协议来组织的,你需要将请求数据解析后,将响应数据组织成http的响应,发回给客户端。这样一个简单的http服务器就实现了。
但是这个请求和响应都有很多种类,一个完整的http服务器应该要都能够支持,所以这里面的工作量还是有一点的。
另外,上面说的http服务器只是一个静态的服务器,如果你想让你写的服务具有动态功能,那你的服务器还得提供javaee的容器功能,这样做下去,没准你也能写一个tomcat出来了……
使用JavaAPI的5个技巧
不要自己去实现安全框架
几平每个人都知道避免去实现加密等算法。同样道理,你的应用的安全栈的其余部分也是一样,可能需要花费很大,得到的风险也很大。你很可能会犯一些错误。自1999年以来,已经有89373个CVE(公共漏洞和暴露)发布了。而其中公开的大部分的发现者都是那些非常聪明的人。
你可能认为处理一个简单的用例(例如验证用户的密码)是很简单的事情一你所做的一切只是比较一对字符串。这样想就错了。你需要验证密码的哈希值,审核尝试登录的次数,减少针对字典的攻击,这只是冰山一角。你最好的选择是使用现有的成熟的库或框架,例如Apache的Shiro或者SpringSecurity,让这些框架去处理各类复杂的安全问题。
2Use TLS,Always!永远使用TLS!
能让你的应用需要TLS(HTTPS/SSL)只需要简单的一行代码,所有人都应该这样做!如果使用Apache Shiro框架,只需要设置属性:[urls]/=ssl如果使用Spring Security,只需要在设置HttpSecurity时,简单调用一个方法即可。httprequiresChannel()anyRequest()requiresSecure(),在Spring Boot中,仅需设置一些属性,如下:serverport=8443 serversslkey-store=classpath:keystorejks serversslkey-store-password=secret serversslkey-password=another-secret。
3使用Spring Booti创建Web Service
Spring Boot:是Spring平台的一个简化,能让编写Spring应用变得很简单,例如能用很少的代码,编写《app应用中考虑的12个因素》一文中提到的观点。如果你还在使用建War包的方式编码,那么Spring Boot值得你去学习。使用Spring Booti可以复杂的、不同类型的应用,例如可以使用简单的注解。
(@EnableResourceServer))就搭建一个OAuth资源服务器,或者通过简单的属性改变其端口:serverport 8090如果不喜欢使用SpringBoot,那么可以使用Dropwizard去搭建JAX-RS技术栈。
4,监视应用和性能指标
如果无任何数据的情况下是很难发现程序的错误的。Spring Booti通过使用Actuator,能让收集指标数据变得容易,只需要在应用中增加一个依赖,如下:<dependency<groupld>orgspringframeworkboot</groupld>。
<artifactld>spring-boot-starter-actuator</artifactld>。
</dependency>。
然后就可以通过浏览器中,在访问应用地址后输入/health或者/metrics去检查应用的健康情况或者指标。Dropwizard框架通过healthcheck和/metrics实现同样的功能。
5保护敏感信息
人们都认为API密钥是不安全的,这是事实。密钥通过电子邮件发送或源代码管理系统控制。也许这是它们看起来比密码更不安全的原因,但它们也一样敏感。如果需要将AP川密钥存储在文件中,请确保授予文件有限的访问权限。
例如,我们建议在私人目录中存放Okta的YAML文件并且赋予文件所有者只读权限。chmod u=r,go-rwx ~/okta/oktayaml如果你正为使用你的APP的用户创建API,记得提醒他们,如果无设置好权限的话,SSH的忽文件是放在你的~/ssh目录下,如果无设置好权限的话。GitHub把它们放在“危险区域”,以提醒用户,这是十分有用的。
1由于服务器配置比较低综合考虑,选择ubuntu系统进行搭建
2 登陆阿里云服务器:
方法一:使用xshell软件登陆服务器
主机填写ip地址
端口号选择22
连接登陆服务器
方法二:使用阿里云管理终端
ssh root@服务器ip地址
password:输入密码
3如何上传文件
方法一:windows和linux上传或下载某个文件可以使用rz,sz
sudo apt-get install lrzsz
安装完成后进入准备存放改文件的文件夹输入rz,就会跳出文件选择框
例如:#cd apache-tomcat-7069/bin rz
cd后有空格
cd ~:返回最上层
cd :返回上一层
cd -:返回最近操作
方法二:使用xshell中的插件Xftp
4安装及配置环境
安装lsb指令
ubunu快捷安装需要的命令,更新一下:
自带源在大陆不好,更新即可解决
1sudo apt-get update
2apt-get install yum yum install -y redhat-lsb
输入lsb指令查看当前版本
查看版本号
lsb_release -a查看当前位数
getconf LONG_BIT
安装jdk:
方法一:ubuntu自动安装jdk
sudo apt-get install jdk
安装完成后配置环境:
使用vim指定编辑etc目录下profile文件,添加export
#vim /etc/profile
添加进profile文件
JAVA_HOME=/home/java/jdk160_12
export JRE_HOME=/home/liujicheng/java/jdk160_12/jre
export CLASSPATH=:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
//java存放位置请自行更改
//使用 which java 查看jdk所在文件夹
方法二:本地下载jdk上传
下载对应系统32位或64位的targz文件
建议:经过还几次对服务器进行环境搭建,已经有了一点小小的见解,建议不要使用过低版本的JDK,例如服务器JDK版本为15而项目JDK版本为18的情况,就会出现无法服务器无法运行war文件的情况,建议版本为17
上传targz文件有两种方法
11输入命令行 rz 选择安装包上传1使用rz时,注意安装 2通过xftp将上传创建一个java文件夹
mkdir java
输入安装命令,将上传的targz文件解压到创建为java文件夹中
sudo tar -zxvf jdk-7u80-linux-x64targz -C /root/java
设置环境变量
使用vim指定编辑etc目录下profile文件,添加export
#vim /etc/profile添加进profile文件
JAVA_HOME=/root/java/jdk170_80
export JRE_HOME=/root/java/jdk170_80/jre
export CLASSPATH=:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH
//java存放位置请自行更改//使用 which java 查看jdk所在文件夹
选择E,然后输入i 进行写操作
最后 :x退出并保存
设置默认JDK
12345sudo update-alternatives --install /usr/bin/java java /root/java/jdk170_80/bin/java 300 sudo update-alternatives --install /usr/bin/javac javac /root/java/jdk170_80/bin/javac 300 sudo update-alternatives --install /usr/bin/jar jar /root/java/jdk170_80/bin/jar 300 sudo update-alternatives --install /usr/bin/javah javah /root/java/jdk170_80/bin/javah 300 sudo update-alternatives --install /usr/bin/javap javap /root/java/jdk170_80/bin/javap 300如果之后一个版本显示:
There is only one alternative in link group java (providing /usr/bin/java):
/usr/lib/jvm/jdk170_60/bin/java
否者,选择合适的jdk
检查jdk是否安装成功,输出版本号及对应信息即安装成功
#java
#javac
#java -version
安装tomcat
方法一:ubuntu自动安装tomcat
sudo apt-get install tomcat
添加jdk和jre环境变量
JAVA_HOME=/home/java/jdk160_12
JRE_HOME=/home/homer/eclipse/jdk160_12/jre
PATH=$JAVA_HOME/bin:$JRE_HOME:$PATH
CLASSPATH=:$JAVA_HOME/lib/dtjar:$JAVA_HOME/lib/toolsjar
TOMCAT_HOME=/opt/apache-tomcat-7029
启动tomcat
cd apache-tomcat-7069/bin /startupsh
出现提示说明配置成功
方法二:上传tomcat并解压
通过上述上传文件方法上传后
使用tar指令解压
tar -zxvf apache-tomcat-8024targz
然后进入apache-tomcat-7069文件夹
# cd apache-tomcat-8024 /bin/
启动tomcat
cd apache-tomcat-8024 /bin/ /startupsh
显示如下说明成功
最后输入:http://xxxx:8080/ (x代表ip地址),显示tomcat首页说明配置成功
安装Mysql
ubuntu下自动安装
sudo apt-get install mysql-server
apt-get install mysql-client
sudo apt-get install libmysqlclient-dev
设置数据库密码:
检查Mysql是否安装成功
sudo netstat -tap | grep mysql
登陆Mysql
mysql -uroot -p密码
成功:
查看数据库
show databases
将sql文件导入
//先选定数据库
use iswust
source /root/testsql//source /文件夹/sql文件名
select from score
5java工程打包上传并运行
右键选中java项目,WAR Export 将文件以war格式导出
(注意:java工程的jdk一定要先降低到与服务器的jdk版本相同,例如java工程为18而服务器为16则会报错)
降低jdk方法:
并通过XFTP或上述的上传文件方法,上传至apache-tomcat-7069/webapps中
随着互联网的不断发展,无服务器应用编程开发成为了程序员学习的又一个发展方向,下面北大青鸟就一起来了解一下,实现无服务器编程开发的框架都有哪些呢。
Nimbus是一个旨在简化FaaS应用程序开发、测试和部署的Java框架。Nimbus提供了一组与云平台无关的公共接口,用于与云提供商的无服务器功能发生交互。
对于那些想要开发简单的应用程序的新手们来说,他们需要面临非常陡峭的学习曲线。他们可能只想要部署一些HTTP端点用来保存数据,但仍然要学习很多与云相关的概念。
Nimbus的主要优势是不需要通过创建配置文件来声明云资源(如AWSSAM或者Serverless框架),这样开发人员“就不会因为忘记了某些参数而犯错”。另外,Nimbus会对部署参数进行编译时检查,以便尽早检测出错误。
Nimbus还支持其他的操作:
WebSocketFunction:用于处理websocket请求;
DocumentStoreFunction:用于执行因文档存储变更而触发的代码;
KeyValueStoreFunction:用于执行因键值存储变更而触发的代码;
NotificationFunction:用于执行由通知触发的代码;
QueueFunction:用于执行因队列变化而触发的代码;
BasicFunction:用于执行不需要触发器的代码;
FileStorageFunction:用于执行基于文件存储事件(文件创建和删除)的代码;
AfterDeploymentFunction:用于执行部署之后需要立即执行的操作。
除了支持各种不同的操作之外,Nimbus还支持几种数据存储类型。
其他支持的数据存储(和客户端)包括:用于存储关系型数据的关系型存储、用于存储键值数据的键值存储和用于存储对象的文件存储(支持静态网站托管和文件上传)。
测试也是构建无服务器应用程序的另一个常见难点。Nimbus提供了单元测试和集成测试支持。在进行单元测试时,可以为上述列表中的任何一个操作创建本地部署,可以接受请求,并验证函数是否被正确调用,或者数据是否被正确保存。Nimbus对集成测试的支持相对有限,只支持基于HTTP的测试。在进行集成测试时,会启动一个本地Web服务器,用于验证请求调用了正确的函数。
首先,我得说明的是,目前市场上新人很难去做pc游戏开发,要么是做页游要么是手游。
页游不清楚我就不说了,手游里面,客户端主要就是c2d和u3d。
如果你想做客户端,那么你可以转学u3d,因为它使用的语言是csharp,这个语言和java相似。网上unity的教程也很多,你随便找一下就有了。
再说说手游服务器,其实我入行服务器还是挺巧合的,当初本来是打算做客户端的,都入职了,因为招不到服务器,就让我转服务器了。。
服务器的教程,我至今也没找到,而且也找不到系统的教程。
开源的服务器框架也只熟悉kbengine和scut。其中一个是cpp做底层python做开发的,一个是csharp做开发。而且scut已经两年没有更新了,应该是死掉了。
所以,想要学服务器开发,得碰点运气。
java服务器目前主流框架技术有网络层netty或mina,数据协议protobuf,数据库mysql,缓存数据库redis,jdbc一般是mybaits或者jpa,项目管理maven,设计层面spring
然后还需要熟悉多线程,linux的基本操作,git或者svn。
差不多了,这些都有个大致的了解,会用,应该就能找到工作了。
后面再深入需要学习的也挺多的,到时候你再根据业务需求自己琢磨着学吧。
随着游戏市场的兴起,特别是网页游戏、手机游戏的崛起,对游戏开发技术的需求越来越多。网络游戏开发是一个庞大的体系,总体来说是客户端与服务器端。客户端是玩家接触的游戏图像显示端,服务器是处理游戏运行中的各种数据,由于一台服务器要支持众多玩家的请求,所以服务器的性能高低决定了同一个游戏的用户数量。
主要原因是:
1Java是跨平台的,方便部署;
2Java是安全的高级语言,可以提高开发效率;
3Java是面向对象的,代码可以重用;
4Java的分布式应用
0条评论