- Makefile if语句用法
java叶新东老师
c++makefile
文章目录语法1.BasicExpressions:2.LogicOperators:3.ExistenceChecks4.FileOperations5.Comparisons示例1、判断两个字符串是否相等2、判断文件路径是否目录完语法CMake中的if命令用于有条件地执行一组命令,其格式如下:if()elseif()#optionalblock,canberepeatedelse()#optio
- 在一个存在的包里面编写msg消息文件
CrimsonEmber
ROS笔记ROS2
前言尽管最佳实践是在专门的接口包中声明接口,但有时在同一个包中完成接口的声明、创建和使用会更为便捷。创建文件创建好msg/AddressBook.msg文件,在你的包的目录下package.xmlrosidl_default_generatorsrosidl_default_runtimerosidl_interface_packagesCMakeList找到生成消息代码的包find_packag
- ROS2编写一个简单的插件
CrimsonEmber
ROS笔记ROS2笔记学习
1.createabaseclasspackageros2pkgcreate--build-typeament_cmake--licenseApache-2.0--dependenciespluginlib--node-namearea_nodepolygon_base编辑ros2_ws/src/polygon_base/include/polygon_base/regular_polygon.h
- Error: C++14 standard requested but CXX14 is not defined
闹钟又响了
在R中安装包如果遇到上述问题,基本上去修改一下Makevars文件即可。可以用vim编辑,也可以在R中编辑,如下dotR<-file.path(Sys.getenv("HOME"),".R")if(!file.exists(dotR))dir.create(dotR)M<-file.path(dotR,"Makevars")if(!file.exists(M))file.create(M)cat(
- Shortage of semiconductors
俗世尘沙
Semiconductorsposeanunwelcomeroadblockforcarmakers半导体成为了令汽车制造商头疼的“拦路虎”Ashortageofsemiconductorshasleftcarfirmsunabletoinstalltheelectronicsthatcontrolentertainmentsystems,safetyfeaturesanddrivingaids.
- 用 automake 来构建项目
守拙圆
author:守拙圆一般而言,对于小项目通常自己来编写Makefile即可。但对于大型项目,手动编写维护大型项目,编写makefile将是一项费力费时的工作。1工具介绍gnu提供了一套autotools工具来辅助用户来生成makefile,完成编译工作。此工具集包括:autoscan:此命令能够对于一个软件包或目录创建或者维护一个configure.ac文件。aclocal:此命令将configu
- OkHttp学习笔记5--Events
雪晨杰
EventsEventsallowyoutocapturemetricsonyourapplication’sHTTPcalls.Useeventstomonitor:事件允许您捕获应用程序HTTP调用的度量。使用事件来监控:ThesizeandfrequencyoftheHTTPcallsyourapplicationmakes.Ifyou’remakingtoomanycalls,oryour
- 为ubuntu系统制作deb安装包
ManualZhang
ubuntulinux运维bashdebian
依赖sudoapt-getinstallbuild-essentialdebhelpermakeautoconfautomakedpkg-devfakerootpbuildergnupg准备deb包创建资源文件夹,形式结构如下:deb包的文件夹模仿linux系统的根目录/的结构安装时系统会自动解包到根目录的对应文件夹下,卸载时也是自动删除对应的文件夹下的文件,如果文件夹只有一个文件,那么文件夹也可
- 5个必知的AIGC工具,轻松打造爆款虚拟偶像
AI原生应用开发
AI原生应用开发实战AIGCai
5个必知的AIGC工具,轻松打造爆款虚拟偶像关键词:AIGC工具、虚拟偶像、AI生成内容、数字人建模、智能交互、语音合成、动画生成摘要:本文深度解析5款前沿AIGC工具在虚拟偶像打造中的核心应用,涵盖从形象设计、语音生成到动态交互的全流程技术实现。通过MidJourney、D-ID、MetaHuman、RunwayML、VoiceMaker等工具的原理剖析、操作指南及实战案例,揭示如何利用AI技术
- 2024年08月27日 Go生态洞察:unique 包剖析与应用
猫头虎
#Go生态洞察golang开发语言后端gogingo1.19beego
2024年08月27日Go生态洞察:unique包剖析与应用摘要我是猫头虎,本篇文章将带你深入探索Go1.23中全新的unique包,它提供了通用可比较值的驻留(interning)方案。借助unique.Make与泛型Handle[T],我们可以在任意可比较类型上高效去重,并在并发环境下安全使用,同时通过弱引用(weakreferences)实现自动回收。文章将结合标准库net/netip示例,
- 麦豆悦读英文绘本讲师训练营【第15期】---11/21--绘本赏析--《Peppa loves Christmas》
马文英语教育Gina
15-1503-辛萍-Gina今天会继续和大家分享昨天未讲完的小猪佩奇系列绘本故事书。昨天咱们一起欣赏来到了绘本的第三页,我们可以看到小猪佩奇和奶奶正在制作圣诞布丁,PeppaandGeorgehelpGrannyPigmaketheChristmaspudding.Theystirthestickymixtureroundandround.图中PeppaandGeorge两个人在制作布丁的过程中
- 在 Linux 下卸载编译安装的 CMake,并以软链接的方式重装
超级大福宝
linuxc++c语言
1.确认CMake的安装位置查找CMake相关的文件whereiscmake在我这里结果是这样的cmake:/usr/lib/cmake/usr/local/bin/cmake/usr/share/cmake2.删除CMake的可执行文件whereis显示CMake在/usr/local/bin下,去这个文件夹看一看,会发现其它的相关文件,可以使用以下命令将CMake相关的文件删除sudorm-f
- Android构建系统中的mk文件语法函数
始于足下 方能行更远
16_安卓编译文件mk和bpandroid
在Android构建系统中,尤其是在使用传统的Android.mk+make构建流程(即AOSP的legacy_android_build模式)时,构建系统提供了一组内置的Makefile函数,用于帮助开发者自动查找、加载模块和处理路径。这些函数由AOSP的构建框架定义,在build/core/definitions.mk和其他核心构建脚本中实现,是Android构建系统的“标准库”函数。以下是与
- c++(上)
物源菌
c++开发语言
c++(上)1C++初识1.1第一个C++程序1.1.1工程文件#需求的最低cmake程序版本cmake_minimum_required(VERSION3.12)#本工程的名字project(cpp)#本工程支持的C++版本set(CMAKE_CXX_STANDARD17)#本工程主程序文件及输出程序名称add_executable(cppStudy"main.cpp")具体原理看cmake1.
- 躁动是别人的,你是坚定的。
无梦为安Ph
(2002,text2)Butifrobotsaretoreachthenextstageoflaborsavingutility,theywillhavetooperatewithlesshumansupervisionandbeabletomakeatleastafewdecisionsforthemselves—goalsthatposearealchallenge.句子结构条件状语从句:B
- 《奔跑吧Linux内核(第二版)》第四章笔记
525小白菜
linux
内核配置内核配置工具常见的有:makeconfigmakeoldconfigmakemenuconfig内核配置工具最终会在Linux内核源码的根目录下生成一个隐藏文件——.config文件,这个文件包含了内核所有配置信息。.config文件的每个配置选项都以“CONFIG”开头,后面的y表示内核会把这个特性编译进内核,m表示这个特性会被编译成内核模块。如果不需要编译到内核中,就要在前面用“#”进
- 【奔跑吧!Linux 内核(第二版)】第4章:内核编译和调试
笨叔陈悦.奔跑吧Linux内核(第2版)[M].北京:人民邮电出版社,2020.文章目录内核配置.config配置文件内核配置.config配置文件makeconfig、makeoldconfig、makemenuconfig等配置工具最终会在Linux内核源代码的根目录下生成一个隐藏文件——.config文件,这个文件包含了内核的所有配置信息。.config文件的每个配置选项都以“CONFIG_
- C/C++连接mysql查询数据
C/C++连接mysql查询数据Cmakecmake_minimum_required(VERSION3.13)project(readMySQL)set(CMAKE_CXX_STANDARD14)add_executable(readMySQLmain.cpp)set(MYSQL_HOME"C:\\ProgramFiles\\MySQL\\MySQLServer5.6")include_dire
- PF4J+SpringBoot
QingyunChen
javaspringboot后端java
plugin-commonpom.xml相关配置pub.qingyunplugin-common0.0.1-SNAPSHOT插件配置类org.pf4jpf4j3.12.0org.apache.maven.pluginsmaven-assembly-plugintruecommon-impl0.0.1jar-with-dependenciesmake-assemblypackagesingle插件服
- Centos7安装RabbitMq
深夜面包
Linuxrabbitmqcentoslinux
安装RabbitMq安装依赖环境C++编译yum-yinstallmakegccgcc-c++kernel-develm4ncurses-developenssl-develunixODBCunixODBC-develhttpdpython-simplejson安装erlang语言#下载erlang相应的压缩包wgethttp://erlang.org/download/otp_src_22.3.
- 创建全景图像的完整指南:Make-Panorama-Image实战教程
色空空色
本文还有配套的精品资源,点击获取简介:在IT领域,全景图像创建技术用于合并多张连续拍摄的照片以获得宽广视角。本教程将介绍使用Python和JupyterNotebook实现全景图像生成的步骤,包括图像对齐、融合、扭曲校正和裁剪调整。通过学习OpenCV、PIL/Pillow和scikit-image等库的使用,你将掌握创建和处理全景图像的技术。1.全景图像生成的步骤与原理全景图像(Panorama
- Ubuntu下ffmpeg源码编译详解
v奶油爆米花
ffmpegubuntulinux
最近需要使用可以编码H265码流的ffmpeg,需要先将修改后的源码编译,查找了网友编译文章(本人稍有修改),记录如下1、下载源码可编码H265的FFmpeg源码下载地址:https://gitee.com/xia-chu/FFmpeg.git2、解压并创建生成目录ffmpegtest放编译的库文件makedir/root/ffmpegtest//创建生成目录ffmpeg-snapshot.tar
- UITableView上下拖动动画
舒翱
-(void)tableView:(UITableView*)tableViewwillDisplayCell:(UITableViewCell*)cellforRowAtIndexPath:(NSIndexPath*)indexPath{//1.配置CATransform3D的内容CATransform3Dtransform;transform=CATransform3DMakeRotation
- Ubuntu 20.04 编译安装FFmpeg及错误分析与解决方案
bubiyoushang888
ubuntuffmpeglinux
FFmpeg是一个强大的多媒体处理工具,可以处理音频、视频等多种格式。本文将详细介绍在Ubuntu20.04上编译和安装FFmpeg的步骤,并分析常见错误及其解决方案。1.准备工作在编译安装FFmpeg之前,需要安装一些必要的依赖包:sudoaptupdatesudoaptinstall-yautoconfautomakebuild-essentialcmakegit-corelibass-dev
- KiCad 与 CircuitMaker 使用方法分享:从零开始学电子设计
Hy行者勇哥
#硬件知识物联网嵌入式硬件
摘要本文档专为电子设计新手打造,详细介绍了两款主流免费电子设计自动化(EDA)软件——KiCad和CircuitMaker的使用方法。内容涵盖软件安装、项目创建、原理图绘制、PCB布局及生产文件导出等完整流程,通过step-by-step操作步骤和实用技巧,帮助零基础用户快速掌握电子电路设计的基本技能,适用于单片机、嵌入式系统等小型电子项目的开发。一、软件简介与适用场景1.KiCad特点:完全开源
- 【Python】moviepy2
宅男很神经
python开发语言
3.5.4.2创建无缝循环视频(vfx.make_loopable):永不停止的视觉流vfx.make_loopable(clip,crossfade=0.5,t_duration=None)是一个非常巧妙的函数,用于将一个视频剪辑转换成可以无缝循环播放的形式。它通过在视频的结尾和开头之间创建一个平滑的过渡来实现这一点,从而消除循环播放时的突兀感。这在制作背景动画、GIF动图或需要无限重复的视频素
- MinGw 下载及其安装
决战软件之巅
C语言c语言
一、简介MinGw提供了一套简单的Windows下的基于GCC程序开发环境。MinGW收集了一系列免费的Windows使用的头文件和库文件;同时整合了GNU的工具集,特别是GNU程序开发工具,如经典gcc,g++,make等。MinGW是完全免费的自由软件,它在Windows平台上模拟了Linux下GCC的开发环境,为C++的跨平台开发提供了良好基础支持,为了在Windows下工作的程序员熟悉Li
- 【Qt QML】用CMake管理Qt工程
_君莫笑
qtqmlc++CMake
CMake是一个开源、跨平台的工具系列,用于构建、测试和打包软件。CMake使用简单的独立配置文件来控制软件编译过程。与许多跨平台系统不同,CMake被设计为与本地构建环境结合使用。下面我们在CMake项目中使用Qt的最基本方法。首先,创建一个基本的控制台应用程序。然后,将该项目扩展为使用QtWidgets的GUI应用程序。一、用CMake构建控制台应用程序,构建系统选择CMake(Qt6支持)Q
- QT中CMake配置QQuick、QML
求未忆
qt开发语言c++vscode
QT中CMake配置QQuick、QML环境配置vscodeQTCMakeDemo环境配置vscode+QT5.8.0-MSVC2013+MSVC2013vscodeCMake插件CPP插件QTConfigure插件QTTools插件QML插件(在vscode中的开发体验不是很好,没有代码补全功能,还是需要在QTCreator中进行qml的开发)QT在自己的电脑上试验过MSVC2017+对应的QT
- C++ Qt6 CMake qml文件启动方式说明
令狐掌门
QML入门进阶教程c++QtQuickqml
在Qt6之后,Qt程序默认使用CMake进行构建,当然也可以使用qmake,本篇博客介绍Qt6.8之前和Qt6.8版本中QtQuick程序的启动方式。在QtQuick程序main.cpp里qml的文件启动分为两种:(1)直接加载qml文件,(2)加载qml模块,下面分别介绍这两种启动方式。方式1:直接启动qml文件大概在Qt6.5版本,qml程序的启动用的是qml文件路径启动,例如下面的代码#in
- rust的指针作为函数返回值是直接传递,还是先销毁后创建?
wudixiaotie
返回值
这是我自己想到的问题,结果去知呼提问,还没等别人回答, 我自己就想到方法实验了。。
fn main() {
let mut a = 34;
println!("a's addr:{:p}", &a);
let p = &mut a;
println!("p's addr:{:p}", &a
- java编程思想 -- 数据的初始化
百合不是茶
java数据的初始化
1.使用构造器确保数据初始化
/*
*在ReckInitDemo类中创建Reck的对象
*/
public class ReckInitDemo {
public static void main(String[] args) {
//创建Reck对象
new Reck();
}
}
- [航天与宇宙]为什么发射和回收航天器有档期
comsci
地球的大气层中有一个时空屏蔽层,这个层次会不定时的出现,如果该时空屏蔽层出现,那么将导致外层空间进入的任何物体被摧毁,而从地面发射到太空的飞船也将被摧毁...
所以,航天发射和飞船回收都需要等待这个时空屏蔽层消失之后,再进行
&
- linux下批量替换文件内容
商人shang
linux替换
1、网络上现成的资料
格式: sed -i "s/查找字段/替换字段/g" `grep 查找字段 -rl 路径`
linux sed 批量替换多个文件中的字符串
sed -i "s/oldstring/newstring/g" `grep oldstring -rl yourdir`
例如:替换/home下所有文件中的www.admi
- 网页在线天气预报
oloz
天气预报
网页在线调用天气预报
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transit
- SpringMVC和Struts2比较
杨白白
springMVC
1. 入口
spring mvc的入口是servlet,而struts2是filter(这里要指出,filter和servlet是不同的。以前认为filter是servlet的一种特殊),这样就导致了二者的机制不同,这里就牵涉到servlet和filter的区别了。
参见:http://blog.csdn.net/zs15932616453/article/details/8832343
2
- refuse copy, lazy girl!
小桔子
copy
妹妹坐船头啊啊啊啊!都打算一点点琢磨呢。文字编辑也写了基本功能了。。今天查资料,结果查到了人家写得完完整整的。我清楚的认识到:
1.那是我自己觉得写不出的高度
2.如果直接拿来用,很快就能解决问题
3.然后就是抄咩~~
4.肿么可以这样子,都不想写了今儿个,留着作参考吧!拒绝大抄特抄,慢慢一点点写!
- apache与php整合
aichenglong
php apache web
一 apache web服务器
1 apeche web服务器的安装
1)下载Apache web服务器
2)配置域名(如果需要使用要在DNS上注册)
3)测试安装访问http://localhost/验证是否安装成功
2 apache管理
1)service.msc进行图形化管理
2)命令管理,配
- Maven常用内置变量
AILIKES
maven
Built-in properties
${basedir} represents the directory containing pom.xml
${version} equivalent to ${project.version} (deprecated: ${pom.version})
Pom/Project properties
Al
- java的类和对象
百合不是茶
JAVA面向对象 类 对象
java中的类:
java是面向对象的语言,解决问题的核心就是将问题看成是一个类,使用类来解决
java使用 class 类名 来创建类 ,在Java中类名要求和构造方法,Java的文件名是一样的
创建一个A类:
class A{
}
java中的类:将某两个事物有联系的属性包装在一个类中,再通
- JS控制页面输入框为只读
bijian1013
JavaScript
在WEB应用开发当中,增、删除、改、查功能必不可少,为了减少以后维护的工作量,我们一般都只做一份页面,通过传入的参数控制其是新增、修改或者查看。而修改时需将待修改的信息从后台取到并显示出来,实际上就是查看的过程,唯一的区别是修改时,页面上所有的信息能修改,而查看页面上的信息不能修改。因此完全可以将其合并,但通过前端JS将查看页面的所有信息控制为只读,在信息量非常大时,就比较麻烦。
- AngularJS与服务器交互
bijian1013
JavaScriptAngularJS$http
对于AJAX应用(使用XMLHttpRequests)来说,向服务器发起请求的传统方式是:获取一个XMLHttpRequest对象的引用、发起请求、读取响应、检查状态码,最后处理服务端的响应。整个过程示例如下:
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange
- [Maven学习笔记八]Maven常用插件应用
bit1129
maven
常用插件及其用法位于:http://maven.apache.org/plugins/
1. Jetty server plugin
2. Dependency copy plugin
3. Surefire Test plugin
4. Uber jar plugin
1. Jetty Pl
- 【Hive六】Hive用户自定义函数(UDF)
bit1129
自定义函数
1. 什么是Hive UDF
Hive是基于Hadoop中的MapReduce,提供HQL查询的数据仓库。Hive是一个很开放的系统,很多内容都支持用户定制,包括:
文件格式:Text File,Sequence File
内存中的数据格式: Java Integer/String, Hadoop IntWritable/Text
用户提供的 map/reduce 脚本:不管什么
- 杀掉nginx进程后丢失nginx.pid,如何重新启动nginx
ronin47
nginx 重启 pid丢失
nginx进程被意外关闭,使用nginx -s reload重启时报如下错误:nginx: [error] open() “/var/run/nginx.pid” failed (2: No such file or directory)这是因为nginx进程被杀死后pid丢失了,下一次再开启nginx -s reload时无法启动解决办法:nginx -s reload 只是用来告诉运行中的ng
- UI设计中我们为什么需要设计动效
brotherlamp
UIui教程ui视频ui资料ui自学
随着国际大品牌苹果和谷歌的引领,最近越来越多的国内公司开始关注动效设计了,越来越多的团队已经意识到动效在产品用户体验中的重要性了,更多的UI设计师们也开始投身动效设计领域。
但是说到底,我们到底为什么需要动效设计?或者说我们到底需要什么样的动效?做动效设计也有段时间了,于是尝试用一些案例,从产品本身出发来说说我所思考的动效设计。
一、加强体验舒适度
嗯,就是让用户更加爽更加爽的用你的产品。
- Spring中JdbcDaoSupport的DataSource注入问题
bylijinnan
javaspring
参考以下两篇文章:
http://www.mkyong.com/spring/spring-jdbctemplate-jdbcdaosupport-examples/
http://stackoverflow.com/questions/4762229/spring-ldap-invoking-setter-methods-in-beans-configuration
Sprin
- 数据库连接池的工作原理
chicony
数据库连接池
随着信息技术的高速发展与广泛应用,数据库技术在信息技术领域中的位置越来越重要,尤其是网络应用和电子商务的迅速发展,都需要数据库技术支持动 态Web站点的运行,而传统的开发模式是:首先在主程序(如Servlet、Beans)中建立数据库连接;然后进行SQL操作,对数据库中的对象进行查 询、修改和删除等操作;最后断开数据库连接。使用这种开发模式,对
- java 关键字
CrazyMizzz
java
关键字是事先定义的,有特别意义的标识符,有时又叫保留字。对于保留字,用户只能按照系统规定的方式使用,不能自行定义。
Java中的关键字按功能主要可以分为以下几类:
(1)访问修饰符
public,private,protected
p
- Hive中的排序语法
daizj
排序hiveorder byDISTRIBUTE BYsort by
Hive中的排序语法 2014.06.22 ORDER BY
hive中的ORDER BY语句和关系数据库中的sql语法相似。他会对查询结果做全局排序,这意味着所有的数据会传送到一个Reduce任务上,这样会导致在大数量的情况下,花费大量时间。
与数据库中 ORDER BY 的区别在于在hive.mapred.mode = strict模式下,必须指定 limit 否则执行会报错。
- 单态设计模式
dcj3sjt126com
设计模式
单例模式(Singleton)用于为一个类生成一个唯一的对象。最常用的地方是数据库连接。 使用单例模式生成一个对象后,该对象可以被其它众多对象所使用。
<?phpclass Example{ // 保存类实例在此属性中 private static&
- svn locked
dcj3sjt126com
Lock
post-commit hook failed (exit code 1) with output:
svn: E155004: Working copy 'D:\xx\xxx' locked
svn: E200031: sqlite: attempt to write a readonly database
svn: E200031: sqlite: attempt to write a
- ARM寄存器学习
e200702084
数据结构C++cC#F#
无论是学习哪一种处理器,首先需要明确的就是这种处理器的寄存器以及工作模式。
ARM有37个寄存器,其中31个通用寄存器,6个状态寄存器。
1、不分组寄存器(R0-R7)
不分组也就是说说,在所有的处理器模式下指的都时同一物理寄存器。在异常中断造成处理器模式切换时,由于不同的处理器模式使用一个名字相同的物理寄存器,就是
- 常用编码资料
gengzg
编码
List<UserInfo> list=GetUserS.GetUserList(11);
String json=JSON.toJSONString(list);
HashMap<Object,Object> hs=new HashMap<Object, Object>();
for(int i=0;i<10;i++)
{
- 进程 vs. 线程
hongtoushizi
线程linux进程
我们介绍了多进程和多线程,这是实现多任务最常用的两种方式。现在,我们来讨论一下这两种方式的优缺点。
首先,要实现多任务,通常我们会设计Master-Worker模式,Master负责分配任务,Worker负责执行任务,因此,多任务环境下,通常是一个Master,多个Worker。
如果用多进程实现Master-Worker,主进程就是Master,其他进程就是Worker。
如果用多线程实现
- Linux定时Job:crontab -e 与 /etc/crontab 的区别
Josh_Persistence
linuxcrontab
一、linux中的crotab中的指定的时间只有5个部分:* * * * *
分别表示:分钟,小时,日,月,星期,具体说来:
第一段 代表分钟 0—59
第二段 代表小时 0—23
第三段 代表日期 1—31
第四段 代表月份 1—12
第五段 代表星期几,0代表星期日 0—6
如:
*/1 * * * * 每分钟执行一次。
*
- KMP算法详解
hm4123660
数据结构C++算法字符串KMP
字符串模式匹配我们相信大家都有遇过,然而我们也习惯用简单匹配法(即Brute-Force算法),其基本思路就是一个个逐一对比下去,这也是我们大家熟知的方法,然而这种算法的效率并不高,但利于理解。
假设主串s="ababcabcacbab",模式串为t="
- 枚举类型的单例模式
zhb8015
单例模式
E.编写一个包含单个元素的枚举类型[极推荐]。代码如下:
public enum MaYun {himself; //定义一个枚举的元素,就代表MaYun的一个实例private String anotherField;MaYun() {//MaYun诞生要做的事情//这个方法也可以去掉。将构造时候需要做的事情放在instance赋值的时候:/** himself = MaYun() {*
- Kafka+Storm+HDFS
ssydxa219
storm
cd /myhome/usr/stormbin/storm nimbus &bin/storm supervisor &bin/storm ui &Kafka+Storm+HDFS整合实践kafka_2.9.2-0.8.1.1.tgzapache-storm-0.9.2-incubating.tar.gzKafka安装配置我们使用3台机器搭建Kafk
- Java获取本地服务器的IP
中华好儿孙
javaWeb获取服务器ip地址
System.out.println("getRequestURL:"+request.getRequestURL());
System.out.println("getLocalAddr:"+request.getLocalAddr());
System.out.println("getLocalPort:&quo