入行初期遇到的小问题

本文汇总了Java编程中常见的字符串处理方法,如split和substring的使用,以及数据库语言分类和Struts、Spring框架的实践技巧。同时,深入探讨了Web开发中jQuery、Ajax的应用,EL表达式的正确配置,以及解决表单与Ajax冲突的方法。

这里记录一些自己入行初期遇到的小问题


1.java的String类常用切割方法:

split()和subString(),split返回的是字符串数组,subString返回的是String。
关键点:对字符串进行切割或其他操作对象的,要先判断这个对象是否存在,否则报空指针。

StringUtil.isNotBlank();和 StringUtil.isNotBlank();

二者区别在于字符串是空格时,isNotBlank判断为空,而isNotEmpty判断不为空。
 isNotEmpty(str)等价于 str != null && str.length > 0
 isNotBlank(str) 等价于 str != null && str.length >0 && str.trim().length > 0

String str = "Hello World,i am your friend,nice to meet you!";
//切割成三个元素
str.split(",");// 1.Hello World   2.i am your friend    3.nice to meet you!
//2表示根据切割符切割成几份,结果切割成两个元素 
str.split(",",2);//1.Hello World   2.i am your friend,nice to meet you!
//截取序号6之后的
str.substring(6);//World,i am your friend,nice to meet you!
//截取序号[6,11)中的,java包前不包后,所以序号11的逗号不包括。
str.substring(6,11);//World

关于JS中对字符串切割可自行百度:https://www.cnblogs.com/qj0813/p/5110211.html

关于长度。数组是length属性,String是length()方法,集合是size()方法

2.数据库语句命名

DQL :Data Query Language 数据查询语言,查

DCL:controller

DML:Data Manipulation Language 数据操纵语言,增、删、 改

DDL:Data Difination Language 数据定义语言,对数据库对象的操作,表结构、视图、索引等

https://www.cnblogs.com/fan-yuan/p/7879353.html

3.struts 实体类要有get方法,值栈才能获取到值

https://blog.youkuaiyun.com/qq_27376871/article/details/51240321

https://blog.youkuaiyun.com/Nickthink/article/details/52106229   Struts2中值栈的理解

4.spring中用了注解@Resources、@Autowired,就不要再写get、set方法了

@Autowired是spring包的,根据类型查找

@Resources是J2EE的,默认根据name查找再根据type查找

建议使用resources J2EE的,减少代码与spring的耦合

https://www.cnblogs.com/xiaoxi/p/5935009.html

https://www.cnblogs.com/xdp-gacl/p/3495887.html  孤傲苍狼

5.jquery、js相关方法

$().each(function(i,var){}) 遍历

eval(); 将对象转化成json对象,一般用于异步请求返回的json类型字符串

6.EL表达式不能用。

在<page>指令中加 isELIgnored="false",原因暂未了解。

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8" isELIgnored="false"%>

7.获取上下文路径

这样请求地址中就不需要再写上下文了

<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<base href="<%=basePath%>">

8.int相除得到的是int,小数要double或者X.0

System.out.println(3/5);//0
System.out.println(3.0/5.0);//0.6
		
System.out.println(5/3);//1
System.out.println(5.0/3.0);//1.6666666

9.Ajax后,要在ajax请求后加 return false,防止表单二次提交,也是ajax跳入error回调函数的原因

之前搞不懂登录成功后怎么一直会去数据库查询两次,一次进入sucess函数一次就进入error函数

layui.use(['form','jquery','layer'], function () {
		        var form  = layui.form;
		        var $       = layui.jquery;
		        var layer  = layui.layer;
		       
		        	$(".login-btn").click(function(){
						var username = $("#username").val();
						var password = $("#password").val();
						var remember = $("#remember").prop("checked");
						
					   $.ajax({
							type:"POST",
							url:"userAjaxLogin",
							data:{'username':username,'password':password,'remember':(remember?1:0)},
							dataType:"text",
							success:function(mess){
								if(mess){
									layer.msg(mess, {
										  time: 5000, //5s后自动关闭
										  btn: [ '知道了'],
										  offset: '200px',
										  area: ['250px', '130px'],
										  icon: 5
										});
									return false;
								}else{
									window.location="admin/index.html";
								}
							},error:function(){
								layer.msg('网络异常,请尝试重新刷新!', {
									  time: 5000, //5s后自动关闭
									  btn: [ '知道了'],
									  offset: '200px',
									  area: ['260px', '130px'],
									  icon: 5
									});
							}
						})  
						return false;//这个很关键,要在ajax外面加
					}); 
			});

参考:https://blog.youkuaiyun.com/yangliu4683/article/details/78424299

https://www.cnblogs.com/zgrft/p/4383776.html  设置同步没试过

10.作为专业码农,集合等要给泛型

泛型,查询的什么数据就给什么泛型,让人一看就懂是什么数据

实际web项目中,里面泛型就是我们的实体类

List<Article> articles = new ArrayList();//泛型,查询的什么数据就给什么泛型,让人一看就懂是什么数据
List<User> articles = new ArrayList();
List articles = new ArrayList();//这个就是很不专业的码农,因为这个给老大diao了

11.表单与ajax冲突,post请求变成get请求

form表单如果method没有设置get、set,默认是get请求提交的,我们ajax设置的type:“post”,并不能改变表单的method。

所以即使form表单中ajax设置post,表单提交也是get请求,但是此时的ajax确实是post请求的,只是因为此时ajax提交后,表单又提交了一次,所以我们只看到get请求。这个要多看浏览器工具F12中的请求头。(学会使用浏览器的工具还有debug打点很使用

解决方法和9.Ajax后,要在ajax请求后加 return false,防止表单二次提交,也是ajax跳入error回调函数的原因 一样,在ajax请求后加return false,阻止表单二次提交。

方法二百度的没试过:

---------------------------------------------------------------------

(三)这个也是我遇到的问题,我在写了一个form标签,然后用submit的onclick事件去处理ajax响应,其中form的action=”。这个时候每点击一次submit,系统提示一次我的ajax object找不到,或者其它不相干的错误。调试JavaScript也是出现status=0的问题。我用普通的button代替submit button问题就解决了。
原文: https://blog.youkuaiyun.com/wabiaozia/article/details/60761433

-----------------------------------------------------------------------

http://blog.sina.com.cn/s/blog_7ffb8dd501013kdm.html     form表单中method的get和post区别  

12.js、jquery常用方法

remove()  是清除这个元素  empty()是清除这个元素的子元素

<div id="div1"><div id="div2"><div> <div>

$("#div1").remove();//清除所有都没了
$("#div1").empty();//清除div2  <div id="div1"><div>

隐藏元素

show()  hide()  toggle():显示被隐藏的,隐藏已显示的

$("#div11").css( 'visibility','hidden');//隐藏的元素在网页上所占的空间不变,还在占据着位置
$("#div11").css( 'display','none');//彻底隐藏,没有占位,看不见摸不着
$("#div11").hide();//彻底隐藏,没有占位,看不见摸不着

<div id="div11">测试区域<div/>

$("#div11").css( 'visibility','hidden');
$("#div11").css( 'display','none');
$("#div11").hide();

jquery和dom的转换

jquery对象的第一个元素是DOM元素 →→ $("#id")[0]

dom →→ jquery对象  $(dom元素)

13.EL表达式错误

c:if test="${? == ?}"这个就是正确的

c:if test=" ${? == ?}"这个就是错误的,在EL表达式前面多了个空格

14.JS forin遍历

for(var x in y)

for(x in y)

<!DOCTYPE html>
<meta charset="UTF-8">
<script>
var x;
var zoon = new Array();
zoon[0] = "猫猫";
zoon[1] = "狗狗";
zoon[2] = "猪猪";
for (x in zoon){
	console.log(zoon[x]);
}
 
var student={};
student.name="张三";
student["age"]=20;
for(var i in student)//前面变量i就是对象的属性名
{
	console.log(i);//name age
	console.log(student[i]);//张三 20  
}
</script>

https://blog.youkuaiyun.com/iteye_17658/article/details/82671449

15.JS全局变量

var a = 10;//全局变量
var test = function(){
	num = 50;//不加var 就会把变量提升为全局变量
	var num2 = 30;//局部变量
	alert(num);
	alert(num2);
}

 16.js所谓的重载是后面的方法覆盖前面的方法

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
			function test(num){
				alert("1111");
			}
			
			function test(num,num2,num3){
				alert("222");
			}
			
			function test(num,num2){
				alert("333");
			}
			
			test(10,20,30);//调用哪个方法?调用test(3)
			//js所谓的重载是后面的方法覆盖前面的方法
		</script>
	</head>
	<body>
	</body>
</html>

要如java般实现重载,可判断参数的个数执行函数

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title></title>
		<script>
		   //实现函数的重载 arguments是参数个数
			var test = function(){
				//判断参数个数
				if(test.arguments.length == 1){
					alert("111");
				}else if(test.arguments.length == 2){
					alert("2222");
				}
			}
			
			test(10,20);
		</script>
	</head>
	<body>
	</body>
</html>

 

<think>我们正在讨论智能巡检机器人与大屏显示系统的技术架构分析,评估部署可行性、技术优缺点及解决方案。用户提供的引用材料主要涉及数据中心巡检机器人的用途、平台建设的技术先进性要求以及设备层次化建模管理。结合用户之前关于激光雷达的讨论(激光雷达在巡检机器人中可能用于环境感知),我们需要综合这些信息进行分析。 分析思路: 1. 系统组成:智能巡检机器人(包含感知、导航、控制等模块)和大屏显示系统(数据可视化、监控中心)。 2. 技术架构:分为机器人端、通信层、后台服务层和显示层。 3. 可行性评估:技术可行性(现有技术成熟度)、经济可行性(成本)、操作可行性(运维难度)。 4. 优缺点分析:分别针对巡检机器人和大屏显示系统,以及整个集成系统。 5. 解决方案:针对缺点提出改进措施。 参考引用: [^1]:提到了数据中心巡检机器人解决运维人力缺口,说明其应用价值。 [^2]:强调平台建设要采用先进成熟的技术,并具有可扩展性。 [^3]:提到设备层次化建模,快速检索设备信息,这可以用于巡检机器人的数据管理和大屏显示。 具体分析: 一、智能巡检机器人技术架构分析 1. 感知层:激光雷达(用于SLAM建图和避障)、摄像头(视觉识别)、传感器(温湿度、气体等)。引用[1]提到机器人利用大数据工具和先进技术,说明需要数据采集的多样性。 2. 决策层:基于采集的数据进行路径规划、异常检测(如设备过热、异物入侵等)。 3. 执行层:控制机器人移动、机械臂操作等。 4. 通信层:将实时数据传输到后台,通常采用WiFi/5G。 二、大屏显示系统技术架构分析 1. 数据层:从机器人、其他监控系统等获取数据,进行存储和处理。 2. 服务层:提供数据查询、报警、分析等服务。 3. 展示层:通过大屏幕以图表、三维模型(引用[3]中的层次化建模)等形式展示。 三、部署可行性 1. 技术可行性:现有技术成熟,如激光雷达导航、机器视觉、物联网通信等。引用[2]强调采用先进成熟技术,说明技术上是可行的。 2. 经济可行性:初期投入较高(机器人硬件、大屏系统),但长期可节省人力成本(引用[1]解决人力缺口)。 3. 操作可行性:需要培训运维人员,但系统设计应易于使用(引用[3]的设备管理功能)。 四、优缺点分析 优点: 1. 提高效率:机器人可24小时巡检,减少人工巡检的疏漏[^1]。 2. 数据可视化:大屏系统直观展示设备状态和报警信息,便于快速决策[^3]。 3. 技术先进:采用层次化建模和三维展示,提升运维体验[^3]。 缺点: 1. 成本高:机器人硬件(如激光雷达)昂贵,大屏系统建设成本也较高。 2. 环境适应性:机器人在复杂环境中可能遇到导航问题(如激光雷达在强光或雨雾天气性能下降,参考之前讨论)。 3. 系统集成难度:需要将机器人与现有监控系统、大屏系统整合,可能涉及接口兼容性问题。 五、解决方案 1. 成本控制:采用模块化设计,逐步投入;考虑使用性价比较高的传感器(如国产激光雷达)。 2. 环境适应:针对天气问题,可结合多传感器融合(如激光雷达+视觉+超声波)提高鲁棒性;在室内环境(如数据中心)受天气影响小,可发挥优势。 3. 系统集成:遵循引用[2]中提到的“先进、高效实用”原则,采用标准接口(如RESTful API)和中间件(如消息队列)降低集成难度。同时,设计时考虑可扩展性,便于后续升级。 六、总结 该系统的部署在技术上是可行的,尤其适合室内环境(如数据中心)。通过合理设计可以发挥其优势,但需注意成本控制和系统集成问题。 根据以上分析,生成相关问题: 1. 如何设计智能巡检机器人的多传感器融合方案? 2. 大屏显示系统如何实现高效的数据可视化? 3. 在系统集成过程中,如何确保不同模块之间的兼容性?</think>### 智能巡检机器人与大屏显示系统技术架构分析 #### **一、技术架构组成** 1. **智能巡检机器人系统** - **感知层**:激光雷达(SLAM定位与避障)+ 摄像头(视觉识别)+ 温湿度/气体传感器(环境监测)[^1] - **决策层**:基于AI的异常检测算法(如设备过热识别、异物入侵检测) - **执行层**:自主导航路径规划($d = \frac{c \cdot \Delta t}{2}$ 激光测距公式支撑定位) - **通信层**:5G/WiFi 6 实时数据传输至后台 2. **大屏显示系统** - **数据层**:设备三维模型库(层次化建模,支持空间位置检索)[^3] - **分析层**:大数据平台(实时处理巡检数据流,生成运维报表) - **可视化层**:WebGL三维渲染引擎 + 动态数据看板(设备状态、报警热力图等) ```mermaid graph LR A[巡检机器人] -->|实时数据| B[5G边缘网关] B --> C[云平台数据分析] C --> D[大屏三维可视化] D --> E[运维决策中心] ``` #### **二、部署可行性评估** | **维度** | **可行性** | **支撑依据** | |----------------|--------------------------------------------------------------------------|--------------------------------| | **技术成熟度** | 高:SLAM导航、设备建模、数据可视化技术成熟 | 引用[2]强调“先进成熟技术体系” | | **成本效益** | 中高:机器人硬件占60%成本,但可减少30%人力巡检成本 | 引用[1]“解决运维人力缺口” | | **集成难度** | 中:需兼容现有数据中心管理系统(API接口标准化是关键) | 引用[3]“设备层次化建模”要求 | #### **三、技术优缺点分析** **优点:** 1. **运维效率提升** - 机器人24小时巡检,响应速度达毫秒级(人工巡检需2-4小时/次)[^1] - 大屏系统实时展示设备健康度(如温度异常$T > T_{\text{阈值}}$即时报警) 2. **数据深度整合** - 设备三维模型关联运维手册、历史工单(引用[3]“快速检索设备信息”) - AI分析预测故障(准确率>90%,降低停机损失) 3. **技术扩展性** - 模块化架构支持功能扩展(如新增电力监测传感器)[^2] **缺点:** 1. **初期部署成本高** - 单台巡检机器人成本约$20万,大屏系统建设需$50万+ 2. **环境适应性挑战** - 激光雷达在强光/粉尘环境下定位精度下降(误差$\Delta d \pm 15\text{cm}$) - 复杂设备间的通信干扰(需优化5G信道分配) 3. **数据安全风险** - 实时数据流面临网络攻击威胁(需强化TLS加密) #### **四、解决方案** 1. **成本优化方案** - 采用**国产激光雷达**(成本降低40%)+ **硬件租赁模式**分摊投入 - 大屏系统使用**开源可视化工具**(如Apache Superset替代商业BI) 2. **技术增强措施** - **多传感器融合**:激光雷达+视觉SLAM补偿环境干扰(精度提升至$\Delta d \pm 2\text{cm}$) - **边缘计算节点**:在机房本地处理实时数据,减少网络延迟 3. **系统集成策略** - 定义**统一数据接口**:JSON-RPC协议对接现有管理系统[^2] - 构建**数字孪生沙盒**:先仿真测试再物理部署,降低故障率 #### **五、总结** 该系统在数据中心场景具备高可行性,核心价值在于**运维自动化**与**决策可视化**。需优先解决成本与环境适应性痛点,建议分阶段实施: 1. 一期:部署1台机器人+基础大屏(覆盖核心机房) 2. 二期:扩展传感器网络+AI分析模块 3. 三期:全机房集成+移动端控制 > 关键技术公式支持: > $$ \text{定位精度} = \frac{1}{N} \sum_{i=1}^{N} \| \hat{\mathbf{p}}_i - \mathbf{p}_i \| $$ > 其中$\hat{\mathbf{p}}_i$为估计位置,$\mathbf{p}_i$为真实位置,$N$为采样点数量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值