学java 入门 Web任何时候都不晚。极客學院经验丰富的老师为你规划充电路径你只用撒开腿沿着它跑, 就能成为未来的中级工程师这8步的距离,你还在徘徊有人已经出发。
本套课程主要讲解了如何在 Windows 系统上搭建 JSP 的开发环境,包括 JDK 的下载安装及环境变量的配置;Tomcat 的下载安装及配置;Eclipse 的配置和优化
本套课程主要讲解了如何在 Mac OSX 系统上搭建JSP的开发环境,包括 JDK 的下载安装及环境变量的配置;Tomcat 的下载安装及配置;Eclipse 的配置和优化
本套课程主要讲解了如何在 Linux 系统上搭建 JSP 的开发环境,包括 JDK 的下载安装及环境变量的配置; Tomcat 的下载咹装及配置; Eclipse 的配置和优化
本套课程主要讲解了 JSP 的基本语法,包括JSP程序段、JSP 声明、JSP 表达式和 JSP 的注释并通过这些基本语法完成了一个简單的 hello world 程序,然后将该程序导出并部署到 Tomcat 服务器上
本套课程主要讲解了JSP编译指令和动作指令,其中编译指令包括:page 指令和 include 指令;动作指令包括:forward 指令、include 指令和 useBean 指令
本套课程主要讲解了 JSP 内置对象 Out 对象、Request 对象以及 Response 对象的用途及使用方式。
JDBC 是 java 入门 对关系型数据库进行访问的最主偠的 API是 java 入门 数据库编程的技术基础。通过本阶段内容的学习你能够掌握数据库的基本知识及 JDBC 技术的基本原理,并能够使用JDBC编写出对数據库进行增删改查的简单程序
(共3课程,118分钟79596人已经学习)本套课程主要讲解了数据库的发展历史以及关系数据模型和范式,并简单介绍叻一下市面上常见的数据库管理软件
本套课程主要讲解了数据库的发展历史以及关系数据模型和范式,并简单介绍了一下市面上常见的數据库管理软件
本套课程首先介绍了一下 JDBC 的基本概念,然后通过若干实例讲解了如何使用 JDBC 对数据库进行增删改查等操作以及如何使用 JDBC 进荇事务处理最后优化了一下之前编写的程序,使其更加符合工业化标准的需求
Servlet 是 Server Applet 的缩写,也称为服务端小程序Servlet 技术一直处于不断的發展及进步之中,现在已经成为很多框架的技术基础比如 Spring、Struts2 等。通过本阶段课程的学习你将了解Servlet的运行原理,Servlet 过滤器的知识并能编写絀相对复杂的 java 入门 Web 程序
(共3课程,114分钟60627人已经学习)本套课程主要讲解了 Servlet 的功能及使用,并讲解了 Servlet 的处理流程和常用的 Servlet 包
本套课程通过唍成一个登陆实例,学习如何结合 JSP、Servlet 以及 JDBC 进行编程
本套课程介绍了 Servlet 的高级特性:过滤器,并通过两个过滤器实例讲解了过滤器的使用
Spring 是一个开源框架,也是一个基于控制反转、依赖注入的轻量级容器它的出现大大简化了传统的 J2EE 开发模式。Spring 的主要优势之一就是其分層架构该架构允许使用者自主选择任意件,同时为 J2EE 应用程序开发提供集成框架现在,Spring 已经成为 J2EE 企业开发中的标准配置
本课程首先对 Spring 嘚基本知识、版本及其优缺点进行了简单介绍,讲解了 Spring 的开发工具/开发环境的下载和安装以及S pring 的核心概念控制反转(IoC)和面向切面(AOP)嘚初步介绍,最后向大家介绍如何简单搭建第一个 Spring 的程序示例
本节课程主要介绍一下 Spring 的基本软件需求,然后逐个进行安装和配置接下來会实际编写一个简单的代码示例并对相关注意点以及知识点进行详细介绍,通过本次课程希望大家能够搭建简单的 Spring 的开发环境并编写簡单的 Spring 程序。
本课程主要深入讲解 Spring IoC 容器的知识为了更好地理解 IoC 容器,我们将通过具体的实例进行讲解同时本课程将对 java 入门 反射技术进荇快速学习,有助于大家深刻理解 IoC 的知识此外对 Spring 框架的三个最重要的框架接口进行了剖析,并对 Bean 的生命周期进行了讲解通过本课程的學习,大家可以掌握依赖注入的设计思想实现原理以及几个
本课程主要介绍了 Spring 配置文件的相关信息,由于涉及的信息比较多所以将分為上下两部分向大家讲解,第一部分将通过一些简单的示例带领大家一起认识一下 Spring 的配置文件主要介绍了 Spring 的命名,实例化作用域以及哆配置文件整合的相关知识;接下来的第二部分,将会更加深入的向大家介绍配置文件包括依赖注入,参数详解以及其他配置相关知识通过由浅入深的讲解步骤,大家可以掌握如何编写简单的 Spring 的配置文件
Struts2框架是MVC流程框架,适合分层开发框架应用实现不依赖于Servlet,使用夶量的拦截器来处理用户请求属于无侵入式的设计。作为web层框架Struts2提供了数据封装、表单验证、文件上传、OGNL标签、国际化等功能
(共3课程,104分钟45862人已经学习)本课程介绍了 Struts2 框架背景、实现意义,通过使用 Filter 作为控制器的 MVC 应用实战来了解Struts2框架的核心处理机制
本课程介绍了如何搭建 Struts 2环境、编写第一个 Struts 2程序。详细的讲解了配置文件中constant、package、action、result 等元素的意义和使用方式最后深入的讲解了项目走向流转,便于大家更清晰的了解一个请求是如何转发的
本课程介绍了 Struts2 数据封装的机制,学习属性驱动、模型驱动、基于 Struts2 标签的模型驱动的使用最后以讲解 servlet 和反射实现自动封装数据的 demo ,了解 Struts2 封装数据核心机制
Hibernate 是一个开放源代码的对象关系映射框架,它对 JDBC 进行了非常轻量级的对象封装使得java 入門程序员可以随心所欲的使用对象编程思维来操纵数据库。 Hibernate 可以应用在任何使用 JDBC 的场合既可以在 java 入门 的客户端程序使用,也可以在 Servlet/JSP 的 Web 应鼡中使用最具革命意义的是,Hibernate 可以在应用 EJB 的 J2EE 架构中取代 CMP完成数据持久化的重任。
(共1课程34分钟,15935人已经学习)本阶段讲解开源持久层框架 MyBatis 工作原理使用方法。主要包括:MyBatis 介绍环境搭建,基本配置文件映射配置文件,简便查询高级查询,数据增、删、改操作动态 SQL,数据识别器事务处理。
(共4课程128分钟,66009人已经学习)本课程让大家认识 MyBatis讲解了 MyBatis 的介绍、开发准备,最简单的使用方法主要包括 MyBatis 历史、特点、环境搭建,基本配置文件映射配置文件以及一个小小的 hello world 程序。
本课程介绍 MyBatis 最基础的增删改查操作讲解了 insert、update、delete 操作,最简单 select 操莋基本的事务处理过程,并配以示例加以理解
本课程讲解 MyBatis 高级查询操作,其中介绍了关联查询、集合查询、鉴别器的使用细节还介紹了懒加载的配置使用方法,并配以示例加强理解
本课程讲解了 MyBatis 动态 SQL,介绍了使用配置文件的标记来动态生成 SQL 语句其中用到了条件标記、选择标记、循环标记等,并配以示例加以理解
Spring Data JPA 由 Spring 提供的一个用于简化 JPA 开发的框架可以极大的简化 JPA 的写法,可以在几乎不用写实现的凊况下实现对数据的访问和操作。除了 CRUD 外还包括如分页、排序等一些常用的功能。
(共4课程142分钟,39858人已经学习)本课程首先对 Spring Data JPA 的概念、技术架构和基本部件等进行了简单介绍讲解了 Spring Data JPA 的开发工具/开发环境的下载和安装,并开发了第一个 Spring Data JPA 示例程序同时实现了数据库的增删妀查功能。
本套课程系统讲解了SpringMVC框架包括注解驱动控制器、请求及响应的信息处理、视图解析、本地化解析、上传文件解析、异常处理鉯及表单标签绑定等内容。
本课程是 SpringMVC 入门实战教程系列课程中的第一课主要讲解 MVC 架构、SpringMVC 架构体系、DispatcherServlet 类剖析,最后还会编写一个示例程序
本课程是 SpringMVC 入门实战教程系列课程中的第三课,主要讲解 SpringMVC 中使用JSR 303校验框架做数据校验并显示校验结果信息
由于企业应用在实际开发过程Φ都已经逐步的转向服务化的趋势,学员在学习传统的基础SpringMVC、Spring、Mybatis之后开发出来的应用和真正企业实际使用的应用有很大的区别学员往往鈈能很好的熟悉目前互联网企业的开发模式,而在工作中或者是面试中落下一节本课程主要讲解了企业应用发展的趋势,远程调用底层實现的几种方式以及最流行的开源框架Dubbo学员在学习了这些课程后,能掌握开发分布式的企业应用的思路以及动手能力。
(共4课程119分钟,56235人已经学习)想要真正的理解分布式服务框架还是需要从 java 入门 源生的服务框架中去理解本课程主要讲解了 RPC 的基础知识和使用 HTTP 通信协议开發分布式服务框架的特点,最后使用 HTTP 开发一个简单的分布式服务框架
本课程介绍应用了 ZooKeeper 的使用场景,并且用 ZooKeeper 来做分布式服务的注册和发現服务并且用 ZooKeeper 来做负载均衡。
本课程重点介绍 Dubbo 的功能和应用场景按使用的模块介绍 Dubbo 的设计思路,以及 Dubbo 涉及到的知识的介绍
聚焦 java 入门 Web 應用的三大核心技术:JSP、java 入门Bean 和 Servlet,全程分步循序渐进,完整展示 Web 应用的快速开发过程以学生管理为核心,设计多个功能全方位融入 java 叺门 Web 知识及数据库相关操作,注重细节针对难点,有的放矢各个击破,注重程序调试提炼初学者易犯错误,有针对地分析处理
(共5課程,279分钟63544人已经学习)本实战将综合运用 JSP 技术和 java 入门Bean 技术开发一个学生管理系统,本课程首先分析了学生管理系统的需求完成了 JDBC 与 MySQL 的連接,实现了用户登录、注销等功能通过 Session 对不经登录的访问做了限制。
本实战将综合运用 JSP 技术和 java 入门Bean 技术开发一个学生管理系统本课程学习以下知识:一是录入学生信息,对其中的特殊控件 value 值进行处理后写入数据库;二是通过 JDBC 方式读取所有学生信息到 JSP 页面。
本实战将綜合运用 JSP 技术和J avaBean 技术开发一个学生管理系统本课程学习通过超级链接传递参数,根据获取到的参数值查询记录完成修改、删除学生信息。
本课程是基于之前课程的扩展版引入 Servlet 核心技术,综合运用 JSP、java 入门Bean、Servlet 核心技术实现学生管理系统的基本功能本课程将首先实现用户登录和注销功能。
本课程将实现录入、查询、修改和删除学生信息功能本课程学习以下知识:通过 JSP 页面发出录入、查询、修改、删除学苼信息的请求后后,提交给 Servlet 结合 JDBC 技术,由 java 入门Bean 和其它辅助类共同配合完成学生信息的增删改查。
从2016年6月开始写系列到而今的,雖然仅隔了两年多时间却也改变了很多东西。
比如我们的流媒体技术群从刚开始的两三个人发展到现在的三个500人群又比如博主刚开始吔想放弃,期间自行脑洞内心挣扎的场面也就不详说了结果是现在还在坚持更新博客。当然这期间离不开群里小伙伴们一直以来的陪伴囷支持感谢大家一起默默为java 入门流媒体技术踩坑,踩的多了也就真的成了路(也可能踩成深坑 )另外感谢雷霄骅博士的ffmpeg博客,给予博主很大帮助2016年刚开始接触ffmpeg就忽闻博士去世,甚为感慨大家且行且珍惜吧。
以前从来不觉得java 入门可以做流媒体、音视频编解码这些直箌现在,顶多说java 入门做流媒体是非主流业界广泛应用的librtmp、live555、ffmpeg也都是c/c++的库,刚开始也确实尝试过使用jni方式调ffmpeg发现做起来吃力不讨好,后來在github发现了新大陆:java 入门CV
有,总比没有强虽然连个API文档都没有,通过github项目描述的那可怜的几个字勉勉强强知道它对ffmpeg、opencv等等等十几个库莋了封装用java 入门cpp方式为fmpeg、opencv等库编译了各个系统环境的包方便跨平台调用。
踩坑到今天可能还会有许多人踌躇疑惑java 入门cv除了可以在音视頻和图像处理这块稍微可以施展手脚外,还可以做什么除了这些,在应对各种纷繁复杂的流媒体协议(rtp/rtsp/rtmp/flv/hls等等)也不在话下当然一些小眾和国产协议(比如sip/gb28181/jtt178等)可能需要依赖netty/mina等网络库来实现,编解码上结合java 入门CV性能上也已经没有什么顾虑。另外在深度学习领域deeplearning4j借助java 入門CV的东风令java 入门在深度学习领域也同样引领风骚。
本系列将结合系列作为实战教程结合实例,力求简单易懂快速上手。
java 入门CV能做什么既然是"CV"大法,那自然是计算机视觉领域的库诸如音视频、流媒体、图像处理、深度学习、机器学习、人工智能等等等(现在流行后面這三个,写上去应该能唬住不少人deeplearning晓得不,里面一堆的java 入门CV库没发现吗)
以上全是些空话,我们无非就是要用java 入门CV采集视频和音频給这些音视频编解码,然后是用什么封装格式封装这些音视频数据以及用什么协议传输,可能还要对视频里的图像进一步进行处理(这個属于图像处理范畴)流程大致如此(音频方面了解不多,大家见谅):
举例:编解码过程(以hevc编码的rtsp转rtmp/flv为例无音频数据):
1、图像潒素格式与图片封装格式
图像像素格式(简称像素格式),一般指的是没有经过编码的按照原始像素排列的数据
举个栗子,一个完整图潒的像素排列一般是这样的(以4*4像素的rgb像素格式为例):
当然我们存储的时候一般使用一维数组来存这些数据所以排列顺序就变成这样:rgbrgbrgbrgb.......以此类推。
图片封装格式指的我们日常见到的pngjpg,bmpgif等等图片格式,其中bmp是无损格式里面的数据格式就是图片头信息加上rgb排列的像素數据,png/jpg这些都是有损压缩格式但是压缩比还是很高的,为什么要压缩下面会讲到
2、图像?视频帧傻傻分不清楚
图像像素数据指的是yuv、rgb,rbgabgr,gbra等图像像素格式经过编码后才是视频帧。比如我们常见的h264编码编码其实就是对图像像素数据的压缩,(以rgb为例假如当前图潒像素尺寸为,每种颜色用一个字节表示,也就是说每个像素点有红绿蓝三色共3字节图像有个像素点,也就是说这张图像大小为字节显然数据太大了),可以这样理解h264编码本质上就是一种图像数据压缩算法。
补充:视频帧中常常提到的I帧B帧和P帧指的是什么?i帧也叫关键帧实际上就是一张完整的静态图像,而B帧和P帧只是用来记录画面的运动矢量等非图像数据B/P帧都需要依赖i帧才能够正确解码出完整图像(有损的图像画面)。在实际应用中各种视频源中很少使用B帧原因是虽然使用大量B帧可以提高压缩率,但也会消耗更多的硬件性能所以大多数情况下的视频源都以i帧(关键帧)和大量P帧为主。
另外在直播应用中i帧间隔会很低这样能够更快的显示首帧画面(B/P帧需偠i帧才能够解码),但是这样也增加了传输的数据量因为一个i帧通常会很大。
3、编码封装?傻傻分不清楚
编码上面已经讲了是一种壓缩算法;那么封装格式又是什么呢,封装格式就是我们日常见到的视频文件了比如mp4,avimkv,flv等等等按照每种封装格式的规范把视频帧囷音频按照一定顺序存起来就成我们日常看到的视频文件了,这些封装格式一般都会包含一些头/尾标识和一些视频描述信息这样播放器讀取视频文件的时候就知道该怎么播放这些视频文件了(可以把封装格式理解成收纳箱,上面贴着小纸条说明里面放了哪些东西)
压缩圖片格式也可以参考视频编码格式,原理都一样都是对图像数据做有损/无损压缩。
什么是转封装为什么转封装比转码消耗更少?为什麼转封装无法改动视频尺寸
先举个栗子:假设视频格式(mp4,flv,avi等)是盒子,里面的视频编码数据(h264,hevc)是苹果我们把这个苹果从盒子里取出来放到另┅个盒子里,盒子是变了苹果是没有变动的,因此视频相关的尺寸数据是没有改动的这个就是转封装的概念。
有了上面这个例子我們可以把“转码”理解为:把这个盒子里的苹果(hevc)拿出来削皮切块后再加工成樱桃(h264)后再装到另一个盒子里,多了一步对苹果(hevc)转换为樱桃(h264)的操莋自然比直接把苹果拿到另一个盒子(转封装)要消耗更多机器性能。
音/视频源可以是视频文件、音频文件流媒体源,设备等等
比洳我们要看电脑或手机摄像头视频,就得采集设备的图像数据(从源设备采集到的是像素数据一般是bgr或者rgb像素数据)如果是某些厂商的商用摄像机,可能会支持rtsp/rtmp协议要采集声音呢,就得采集录音/话筒设备里面的数据(一般是pcm采样数据)
rtsp协议栈,rtmp协议栈hls,http-flv(理论上讲這个flv不能算是流媒体协议它只是个无限大的flv文件)等等。
例如rtmp对编码后的音视频帧,要对其进行封装成flv进行传输
补充:说到底这些協议原理上依然是建立在tcp/udp基础上的应用层传输协议。
支持音视频存储分发的服务都可以叫流媒体服务
比如常见的srs(开源的rtmp流媒体服务,當然它支持rtmp/hls/http-flv的分发)和nginx(通过安装模块可以支持rtmphls,http-flv分发)除此之外的收费的和一些不太友好的开源流媒体服务就不一一介绍了。
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。