㈠ java是什么好学吗
不难学,毕竟Java只是一种语言,仅此而已。它与我们的母语和英语没有什么不同。只是它适用于电脑、手机等非生物,但基本控制结构等。所有的语言都是相似的。
JAVA需要学的内容一般包含:
一、Java SE部分
1、java基础:基础语法;面向对象(重点);集合框架(重点);常见类库API;
2、java界面编程:AWT;事件机制;Swing;
3、java高级知识:Annotation;IO和NIO、AIO;多线程、线程池;阻塞、非阻塞、异步网络通信;反射、动态代理;
二、JDBC编程
4、SQL基础:基础SQL语句;基本查询;多表查询;子查询;结果集的交、并、差运算;
5、JDBC基础:常见数据库用法;JDBC操作常见数据库;RowSet与离线结果集;数据库连接池;事务管理、批处理;
6、JDBC进阶:存储过程、函数;触发器;理解JCBC的不足;掌握ORM工具优势和设计;
三、DHTML编程
7、HTML基础:基本HTML标签;常见表单标签;DIV+CSS布局;
8、JavaScript知识:javascript基本语法;javascript基本对象特征;Json语法;深刻理解javascript的动态特征;
9、Dom和事件机制:DOM操作、编程;常见浏览器事件机制;掌握用户交互技巧;
四、XML编程
10、XML基础:XML基础规则;DTD和SCheme;XML和样式单;
11、XML进阶:DOM、SAX和JAXP;dom4j、JDOM等工具;XQuery和XQJ;基于XML的数据交换;
12、Web Service:JAX_WS2、SAAJ规范;WSDL和SOAP协议;CXF框架、拦截器;CXF整合Spring;
五、Java Web编程
13、Web编程基础:Tomcat服务器;Jsp语法、EL、内置对象;Servlet API;Servlet 3.0注解;Listener和Filter;
14、Web编程进阶:自定义标签库;MVC和DAO、Servlet、标签的作用;JSTL、DisplayTag等常见标签库用法;
15、Web编程原理:请求/响应、架构;Http协议;深刻理解Jsp运行原理;掌握Web容器底层的线程池、socket通信、调用Servlet的命令模式;
六、Ajax编程:
16、Ajax编程:XML HttpRequest和异步请求;发送请求和处理响应;常见Ajax库(Prototype、Jquery、ExtJs、DWR)用法;结合Http协议、异步请求深入研究ajax库的设计;
七、Android开发
17、Android基础:Android开发调试环境;Android应用结构;界面组件与界面编程;资源管理;四大组件;
18、Android中级:文件IO和SQLite;图形、图像与动画;音频、视频的录制与播放;传感器编程;GPS应用;
19、Android高级:网络编程与Web Service;OpenGL_ES 3D开发;整合Google服务;使用NDK开发;java和c相互调试;
八、轻量级Java EE
17、Struts2:MVC与struts体系;Action和Result;国际化和标签库;文件上传、下载;类型转换和输入检验;拦截器与插件开发;
18、Hibernate:ORM与持久化映射;关系映射、继承映射;延迟加载、性能调优;HQL查询、条件查询、SQL查询;二级缓存和查询缓存;
19、Spring:IoC与Bean配置、管理;Bean生命周期;SP、EL;AOP与事务权限控制;S2SH整合开发;Spring整合Jpa;
九、经典Java EE
20、JSF<选学>:MVC与JSF设计理念;托管Bean与导航模型;JSF流程与事件机制;JSF标签库;类型转换与输入检验;
21、EJB及相关技术:JNPI与RMI;会话Bean及其生命周期;IoC与EJB拦截器;JMS与MDB;会话Bean与Web Service;
22、JPA:ORM框架与JPA规范;JPA注解与常用API;JTA事务与事务管理;JPQL查询;EJB、JPA整合;
十、Java 拓展、进阶:
23、Java EE实践与架构:Ant+Ivy或Maven;SVN、CVS;深刻理解10种以上设计模式;掌握各种Java EE架构及各自优势;
24、Workflow:Workflow规范及功能;JBPM等workflow框架;多次重构、反复思考;大型项目经验;
25、Java EE进阶:掌握各MVC框架运行原理、能开发类似框架;掌握Spring、HiveMind、AspectJ等框架原理、能开发类似工具;掌握Hibernate、iBatis等框架原理,能开发类似工具;深入研究EJB机制、大致了解应用服务器的实现。
Java有着光明的未来
Java是一种面向对象的编程语言,可以编写跨平台应用程序。卓越的通用性、效率和安全性。广泛应用于个人电脑、手机和互联网,拥有世界上大的开发者社区。在全球云计算和互联网的背景下,Java的就业前景更加突出。
广阔的市场,光明的前景将永远是人们向往的,许多人都下定决心学习Java编程,从事开发,并走上IT高端氛围的道路。
当确定想要走上JAVA工程师的道路了,欢迎来云和数据JAV大数据名企班!真实项目覆盖从立项到上线的全过程,真正的学习即工作。学员工作后可开发的项目涉及几乎所有行业。阶梯式课程让你的职业规划道路一马平川,步步高升!
㈡ JAVA 怎么连接外界传感器
java是跨平台的,所以它对底层的支持并不好,你如果需要外界传感器,你可以通过创建java服务器,你的传感器接在单片机或window系统上,通过网络将传感器信息发给java。。。
说实话不知道你是只要单机还是像我说的需要大批量支持,如果只是单机,不建议你用java
㈢ java题目 编程题目 多线程
public class DoubleThread {
public static void main(String[] args) {
Thread t1 = new Thread() {
@Override
public void run() {
for (char i = 'a'; i <= 'z'; i++) {
System.out.println(i);
}
}
};
Thread t2 = new Thread() {
@Override
public void run() {
for (char i = 'A'; i <= 'Z'; i++) {
System.out.println(i);
}
}
};
t1.start();
t2.start();
}
}
㈣ Java学习路线是怎样的
Java环境搭建、Java流程控制语句-for循环、switch选择判断、循环嵌套、数组拷贝、多维数组、final关键字、构造函数的调用、类的访问权限和路径、面向对象高级特性、Java异常处理、Set,Map,List接口及接口实现类、Java线程、同步阻塞、JavaIO流、文件的操作,复制,读写,删除等。
MySQL安装、管理、创建数据库、MySQLUPDATE
查询、Mysql高级操作、JDBC、JDBC数据库连接操作,JDBC动态Sql处理、Servlet3.0 网页重定向、Servlet3.0
新增的注解支持、AJAX、responseText属性详解等。
Struts2异常处理、Struts2+Log4j集成、Struts2和JSON实例、Hibernate5、Hibernate集合映射、Hibernate组件映射、Spring4.0、SpringAOP+
AspectJ框架、Spring 与其它Web框架集成、Spring Hibernate支持等。
SpringMVC、Spring MVC生成JSON数据、MyBatis、MyBatis 环境配置及入门、Mybatis set标签、Mybatis trim标签、Shiro、Shiro快速入门教程、Shiro Web应用等。
SpringBoot、全局异常处理、过滤器监听器、EHCache缓存、SpringBoot Quartz定时任务、Vue、Vue.js 安装、模板语法、计算属性、事件处理器、Vue.js 自定义指令、Vue.js 路由等
ActiveM环境搭建、生产者和消费者、消息持久化操作、RSA数字加密算法、Codebar条形码生成器、zxing二维码生成器、HighCharts统计图、Echarts统计图、网络播放器ckplayer、嵌入式网络播放器,可以浏览器和移动端随意使用
分布式服务框架的理解,Dubbo架构设计详解及其核心要点,框架运行原理分析、SpringData数据访问、Lucene搜索引擎、Lucene的全文搜索服务器介绍、索引建立方式、Solr海量数据搜索引擎、Socket网络通信、实现RMI远程对象通讯、使用JMS消息服务、Kafka分布式消息系统、WebService与RestfulWS等
Spring Security安全框架、实现Web应用安全控制、缓存应用与EhCache框架、OSCache与JBossCache框架、MyBatis与Hibernate缓存机制、NoSQL应用与SQL调优、MongoDB
NoSQL数据库、Redis内存数据库、实现RedisSession共享、SQL语句的优化、实现数据库读写分离、WEB应用集群及性能优化、Maven项目管理工具、Web服务器负载均衡、实现Nginx与Tomcat集群、使用LoadRunner测试工具、性能优化之内存调优、代码优化与重构的方法等。
㈤ 编程技巧:Java串口通信简介
嵌入式系统或传感器网络的很多应用和测试都需要通过PC机与嵌入式设备或传感器节点进行通信 其中 最常用的接口就是RS 串口和并口(鉴于USB接口的复杂性以及不需要很大的数据传输量 USB接口用在这里还是显得过于奢侈 况且目前除了SUN有一个支持USB的包之外 我还没有看到其他直接支持USB的Java类库) SUN的CommAPI分别提供了对常用的RS 串行端口和IEEE 并行端口通讯的支持 RS C(又称EIA RS C 以下简称RS )是在 年由美国电子工业协会(EIA)联合贝尔系统 调制解调器厂家及计算机终端生产厂家共同制定的用于串行通讯的标准 RS 是一个全双工的通讯协议 它可以同时进行数据接收和发送的工作
常见的Java串口包
目前 常见的Java串口包有SUN在 年发布的串口通信API m jar(Windows下) m jar(Linux/Solaris);IBM的串口通信API以及一个开源的实现 鉴于在Windows下SUN的API比较常用以及IBM的实现和SUN的在API层面都是一样的 那个开源的实现又不像两家大厂的产品那样让人放心 这里就只介绍SUN的串口通信API在Windows平台下的使用
串口包的安装(Windows下)
到SUN的网站下载javam win zip 包含的东西如下所示
按照其使用说明(l)的说法 要想使用串口包进行串口通信 除了设置好环境变量之外 还要将win dll复制到 in目录下;将m jar复制到 lib;把m properties也同样拷贝到 lib目录下 然而在真正运行使用串口包的时候 仅作这些是不够的 因为通常当运行 java MyApp 的时候 是由JRE下的虚拟机启动MyApp的 而我们只复制上述文件到JDK相应目录下 所以应用程序将会提示找不到串口 解决这个问题的方法很简单 我们只须将上面提到的文件放到JRE相应的目录下就可以了
值得注意的是 在网络应用程序中使用串口API的时候 还会遇到其他更复杂问题 有兴趣的话 你可以查看CSDN社区中 关于网页上Applet用javam 读取客户端串口的问题 的帖子
串口API概览
m CommPort
这是用于描述一个被底层系统支持的端口的抽象类 它包含一些高层的IO控制方法 这些方法对于所有不同的通讯端口来说是通用的 SerialPort 和ParallelPort都是它的子类 前者用于控制串行端口而后者用于控这并口 二者对于各自底层的物理端口都有不同的控制方法 这里我们只关心SerialPort
m CommPortIdentifier
这个类主要用于对串口进行管理和设置 是对串口进行访问控制的核心类 主要包括以下方法
l 确定是否有可用的通信端口
l 为IO操作打开通信端口
l 决定端口的所有权
l 处理端口所有权的争用
l 管理端口所有权变化引发的事件(Event)
m SerialPort
这个类用于描述一个RS 串行通信端口的底层接口 它定义了串口通信所需的最小功能集 通过它 用户可以直接对串口进行读 写及设置工作
串口API实例
大段的文字怎么也不如一个小例子来的清晰 下面我们就一起看一下串口包自带的例子 SerialDemo中的一小段代码来加深对串口API核心类的使用方法的认识
列举出本机所有可用串口
voidlistPortChoices(){ CommPortIdentifierportId; Enumerationen=CommPortIdentifier getPortIdentifiers(); //iteratethroughtheports while(en hasMoreElements()){ portId=(CommPortIdentifier)en nextElement(); if(portId getPortType()==CommPortIdentifier PORT_SERIAL){ System out println(portId getName()); } } portChoice select(parameters getPortName()); }
以上代码可以列举出当前系统所有可用的串口名称 我的机器上输出的结果是 和
串口参数的配置
串口一般有如下参数可以在该串口打开以前配置进行配置
包括波特率 输入/输出流控制 数据位数 停止位和齐偶校验
SerialPortsPort; try{ sPort setSerialPortParams(BaudRate Databits Stopbits Parity); //设置输入/输出控制流 sPort setFlowControlMode(FlowControlIn|FlowControlOut); }catch(){}
串口的读写
对串口读写之前需要先打开一个串口
CommPortIdentifierportId=CommPortIdentifier getPortIdentifier(PortName); try{ SerialPortsPort=(SerialPort)portId open( 串口所有者名称 超时等待时间); }catch(PortInUseExceptione){//如果端口被占用就抛出这个异常 (e getMessage()); } //用于对串口写数据 OutputStreamos=newBufferedOutputStream(sPort getOutputStream()); os write(intdata); //用于从串口读数据 InputStreamis=newBufferedInputStream(sPort getInputStream()); intreceivedData=is read();
读出来的是int型 你可以把它转换成需要的其他类型
这里要注意的是 由于Java语言没有无符号类型 即所有的类型都是带符号的 在由byte到int的时候应该尤其注意 因为如果byte的最高位是 则转成int类型时将用 来占位 这样 原本是 的byte类型的数变成int型就成了 这是很严重的问题 应该注意避免
串口通信的通用模式及其问题
终于唠叨完我最讨厌的基础知识了 下面开始我们本次的重点 串口应用的研究 由于向串口写数据很简单 所以这里我们只关注于从串口读数据的情况 通常 串口通信应用程序有两种模式 一种是实现SerialPortEventListener接口 监听各种串口事件并作相应处理;另一种就是建立一个独立的接收线程专门负责数据的接收 由于这两种方法在某些情况下存在很严重的问题(至于什么问题这里先卖个关子J) 所以我的实现是采用第三种方法来解决这个问题
事件监听模型
现在我们来看看事件监听模型是如何运作的
l 首先需要在你的端口控制类(例如SManager)加上 implements SerialPortEventListener
l 在初始化时加入如下代码
try{ SerialPortsPort addEventListener(SManager); }catch(TooManyListenersExceptione){ sPort close(); ( toomanylistenersadded ); } sPort notifyOnDataAvailable(true);
l 覆写public void serialEvent(SerialPortEvent e)方法 在其中对如下事件进行判断
BI 通讯中断
CD 载波检测
CTS 清除发送
DATA_AVAILABLE 有数据到达
DSR 数据设备准备好
FE 帧错误
OE 溢位错误
OUTPUT_BUFFER_EMPTY 输出缓冲区已清空
PE 奇偶校验错
RI 振铃指示
一般最常用的就是DATA_AVAILABLE 串口有数据到达事件 也就是说当串口有数据到达时 你可以在serialEvent中接收并处理所收到的数据 然而在我的实践中 遇到了一个十分严重的问题
首先描述一下我的实验 我的应用程序需要接收传感器节点从串口发回的查询数据 并将结果以图标的形式显示出来 串口设定的波特率是 川口每隔 毫秒返回一组数据(大约是 字节左右) 周期(即持续时间)为 秒 实测的时候在一个周期内应该返回 多个字节 而用事件监听模型我最多只能收到不到 字节 不知道这些字节都跑哪里去了 也不清楚到底丢失的是那部分数据 值得注意的是 这是我将serialEvent()中所有处理代码都注掉 只剩下打印代码所得的结果 数据丢失的如此严重是我所不能忍受的 于是我决定采用其他方法
串口读数据的线程模型
这个模型顾名思义 就是将接收数据的操作写成一个线程的形式:
(){ ThreadreadDataProcess=newThread(newRunnable(){ publicvoidrun(){ while(newData!= ){ try{ newData=is read(); System out println(newData); //其他的处理过程 ……… }catch(IOExceptionex){ System err println(ex); return; } } readDataProcess start(); }
在我的应用程序中 我将收到的数据打包放到一个缓存中 然后启动另一个线程从缓存中获取并处理数据 两个线程以生产者—消费者模式协同工作 数据的流向如下图所示
这样 我就圆满解决了丢数据问题 然而 没高兴多久我就又发现了一个同样严重的问题 虽然这回不再丢数据了 可是原本一个周期( 秒)之后 传感器节电已经停止传送数据了 但我的串口线程依然在努力的执行读串口操作 在控制台也可以看见收到的数据仍在不断的打印 原来 由于传感器节点发送的数据过快 而我的接收线程处理不过来 所以InputStream就先把已到达却还没处理的字节缓存起来 于是就导致了明明传感器节点已经不再发数据了 而控制台却还能看见数据不断打印这一奇怪的现象 唯一值得庆幸的是最后收到数据确实是 左右字节 没出现丢失现象 然而当处理完最后一个数据的时候已经快 分半钟了 这个时间远远大于节点运行周期 这一延迟对于一个实时的显示系统来说简直是灾难!
后来我想 是不是由于两个线程之间的同步和通信导致了数据接收缓慢呢?于是我在接收线程的代码中去掉了所有处理代码 仅保留打印收到数据的语句 结果依然如故 看来并不是线程间的通信阻碍了数据的接收速度 而是用线程模型导致了对于发送端数据发送速率过快的情况下的数据接收延迟 这里申明一点 就是对于数据发送速率不是如此快的情况下前面者两种模型应该还是好用的 只是特殊情况还是应该特殊处理
第三种方法
痛苦了许久(Boss天天催我L)之后 偶然的机会 我听说TinyOS中(又是开源的)有一部分是和我的应用程序类似的串口通信部分 于是我下载了它的 x版的Java代码部分 参考了它的处理方法 解决问题的方法说穿了其实很简单 就是从根源入手 根源不就是接收线程导致的吗 那好 我就干脆取消接收线程和作为中介的共享缓存 而直接在处理线程中调用串口读数据的方法来解决问题(什么 为什么不把处理线程也一并取消? 都取消应用程序界面不就锁死了吗?所以必须保留)于是程序变成了这样
publicbyte[]getPack(){ while(true){ //PacketLength为数据包长度 byte[]msgPack=newbyte[PacketLength]; for(inti= ;i<PacketLength;i++){ if((newData=is read())!= ){ msgPack[i]=(byte)newData; System out println(msgPack[i]); } } returnmsgPack; } }
在处理线程中调用这个方法返回所需要的数据序列并处理之 这样不但没有丢失数据的现象行出现 也没有数据接收延迟了 这里唯一需要注意的就是当串口停止发送数据或没有数据的时候is read()一直都返回 如果一旦在开始接收数据的时候发现 就不要理它 继续接收 直到收到真正的数据为止
结束语
lishixin/Article/program/Java/hx/201311/26605
㈥ java编程:求温湿度控制程序的源代码,类似的也可以提供,作为参考。谢谢大家
到底是真实的温控、还是模拟的温控 。。。。。。。。。如果是真实的温控,这么大工作的话题,放这不太合适
㈦ 用java编程通过陀螺仪传感器使得使用两个大型电机做驱动和转向小车偏离已规划的路线回归轨迹
用java编程通过陀螺仪传感器使得使用两个大型电机做驱动和转向小车偏离已规划的路线回归轨迹 用java编程通过陀螺仪传感器使得使用两个大型电机做驱动和转向小车偏离已规划的路线回归轨迹
㈧ java程序怎么接受压力传感器信号
非标准信号输出,要接变送器转换成标准输出。
已经是标准输出可以选择接有232口 usb口,或者485口的采集卡,数显表,采集器等仪表,
㈨ 学习Java的最佳路线
首先先搞懂JavaSE的部分,Swing和swt部分就可以少看或不看,因为现在用的比较少。重点是看懂Java中的面向对象、集合框架、JDBC、异常、IO、线程和网络编程。JavaSE搞定后再学习Servlet、JSP,然后才是经典的Struts2、Hibernate和Spring,学习框架时重点理解框架的运行原理,甚至可以尝试自己写个轻量级的框架。理解运行原理的最好方法就是阅读源代码,还是要感谢Java中的开源项目。这期间还要多找各种大小的项目去完成,不一定要大,但是要精致,功能要完整,这样可以练习所学知识,并且可以在做项目中发现自己的知识体系中不足的地方。关于看视频,我不推荐,很多同学一天到晚就知道看视频,殊不知,编程真理在于“练习,练习,不停练习”!
推荐看看这个学习路线,规划的很棒:
再补充下:当学习Java的期间,会碰到各种各样的异常,请积累这些异常信息,以及如何出现的异常和如何处理的,因为java中常见的异常就那么几种,积累的多了,处理问题的能力就提高,这样水平会提高的很快!
SpringMVC 这几年的占有率迅速的提高,可能之后会取代 Struts2,但是无论怎么变化,这些还都是 MVC 模式,理解了这个模式,上手任何的MVC框架都应该很快。
企业需要的变化还体现在大数据方面,因为 Hadoop 的流行,Java 的应用场景又多了一个。所以,不喜欢 web 的可以考虑学习大数据方面的知识。
另一个流行的场景自然就是 Android,学习 Android 依然需要你有 JavaSE 的底子+HTTP 协议的理解,再配合上 Linux 的知识就可以开始了。
再说下找项目的问题,初学者可能会碰到不知道做什么的问题,其实最开始大家都是从模仿开始的,例如你学会了 jsp+Servlet,那就可以模仿一个 v2ex 这样的论坛出来。学会了 SpringMVC,那就试着将论坛的代码重构,提供restful接口供客户端访问(Android、IOS 、web 等)。论坛做的没难度了,那就模仿一个团购网站,依然是不一定要做全部的功能,但是做出的功能要稳定,要精致。或者一个微信公众平台的开发都是不错的项目。
初学者看源代码有的人推荐看 Struts2、spring 的,但是我相信10个初学者9个看不懂,那就从简单的开始,例如 Apache 的 Commons 库,例如 lang、dbutils、io 等,这些都是非常不错的代码,类的数量不多而且质量也不错,这些看懂之后,你的基础水平增长的不是一点点。
再次提醒初学者,学习编程没有你想的那么简单,必须要多练习,多思考,最主要的是你对这个有兴趣。现在不少网站和媒体都宣传1个月学会前端、3个月入职 BAT 的口号,那也就是口号而已,别太认真。这条路没有捷径,写你的代码就是了!
㈩ java调用mac温度传感器
.io.BufferedReader;importjava.io.IOException;importjava.io.InputStreamReader;publicclassClientSocket{publicstaticvoidmain(String[]args)throwsException{getString();}//获取本机全部MAC地址privatestaticvoidgetString()throwsIOException{Processp=Runtime.getRuntime().exec("cmd/Cipconfig/all");BufferedReaderbr=newBufferedReader(newInputStreamReader(p.getInputStream()));Stringstr=null;StringName_Mac="";while((str=br.readLine())!=null){try{if(!str.substring(0,1).equals(""))Name_Mac+=str+"";elseif(str.indexOf("PhysicalAddress")!=-1){Name_Mac+=str.substring(str.indexOf(":")+1)+" ";}}catch(Exceptione){}}System.out.println(Name_Mac);}}
//测试结果,Mac我必须修改一下,Sorry,另外请封装返回参数
:00-50-56-C0-0X-XX
:00-50-56-C0-0X-XX
Ethernetadapter无线网络连接:74-E5-43-63-D4-XX