前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >友佳书屋实训项目(一)

友佳书屋实训项目(一)

作者头像
杨校
发布于 2021-10-13 08:10:40
发布于 2021-10-13 08:10:40
44700
代码可运行
举报
文章被收录于专栏:Java技术分享圈Java技术分享圈
运行总次数:0
代码可运行

友佳书屋

1.功能演示

一、 类目

分析实体

类目,单词为 Category 实体的名称就定义下来了 |— 属性: categoryId(用于确定的唯一性); 类目名称 categoryName; 类目描述 categoryDescription

1.1 实体类:
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
   1, 定义属性变量
   2,使用快捷键Alt+Insert 生成getter和setter方法
   3, 使用快捷键Alt+Insert 生成toString方法,便于打印查看具体数据
   4,使用快捷键Alt+Insert  生成构造方法
    4.1, 有参数的构造方法
    4.2, 无参数的构造方法
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public class Category {

   private int categoryId;
   private String categoryName;
   private String categoryDescription;
   
   //  有参数构造方法  要id
   public Category(int categoryId, String categoryName, String categoryDescription) {
       this.categoryId = categoryId;
       this.categoryName = categoryName;
       this.categoryDescription = categoryDescription;
   }
//  有参数构造方法  不要id
   public Category(String categoryName, String categoryDescription) {
       this.categoryName = categoryName;
       this.categoryDescription = categoryDescription;
   }
//  无参数的构造方法: Alt+Insert  再去选择 Override Methods  默认Object()方法  直接回车
   public Category() {
       super();
   }

   @Override
   public String toString() {
       return "Category{" +
               "categoryId=" + categoryId +
               ", categoryName='" + categoryName + '\'' +
               ", categoryDescription='" + categoryDescription + '\'' +
               '}';
   }

   public int getCategoryId() {
       return categoryId;
   }

   public void setCategoryId(int categoryId) {
       this.categoryId = categoryId;
   }

   public String getCategoryName() {
       return categoryName;
   }

   public void setCategoryName(String categoryName) {
       this.categoryName = categoryName;
   }

   public String getCategoryDescription() {
       return categoryDescription;
   }

   public void setCategoryDescription(String categoryDescription) {
       this.categoryDescription = categoryDescription;
   }
}
1.2 编写Service层

Service层有 接口和实现类

(1)先去编写接口,接口的命名规范为 [实体类的名称+ Service],本接口为CategoryService,实现类为CategoryServiceImpl (2)考虑该接口内哪些功能,功能对应的是方法。 功能如下: 增加类目 删除类目 修改类目 查询所有类目 根据类目编号categoryId查询类目 对应的是五个方法: 增加类目方法, 参数列表是:Category category; 返回值类型为int 删除类目方法, 参数列表是:int categoryId; 返回值类型为int 修改类目方法, 参数列表是:Category category; 返回值类型为int 查询所有类目方法, 无参数 返回值类型为List<Category>; 【因为查询的所有类目,不再是单一的一个类目,需要有容器存储所有类目对象,该容器合适的是集合,便于查询的是ArrayList集合。{ArrayList特性是 查询快、增删慢 | LinkedList特性是 查询慢、增删快}】 根据类目编号查询方法,参数列表是:int categoryId; 返回值类型为Category; 【因为查询的是一个类目,所有就是对象存储。】


代码如下:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.service;

import cn.javabs.entity.Category;
import java.util.List;

public interface CategoryService {
    
    int addCategory(Category category);

    int delCategory(int categoryId);

    int editCategory(Category category);

    List<Category> findAllCategory();

    Category findCategoryById(int   categoryId);

}

接口的实现类: 无需代码编写,可利用idea软件进行代码生成,步骤如下: (1) 放在接口名称后,按快捷键 Alt+Enter

选中 Implement Interface 回车,需要补充包名.impl再去点击OK

继续选择OK 效果如图:


1.3 编写Dao层

Dao层有 接口和实现类

(1)先去编写接口,接口的命名规范为 [实体类的名称+ Dao],本接口为CategoryDao,实现类为CategoryDaoImpl (2)考虑该接口内哪些功能,功能对应的是方法。 功能如下: 增加类目 删除类目 修改类目 查询所有类目 根据类目编号categoryId查询类目 对应的是五个方法: 增加类目方法, 参数列表是:Category category; 返回值类型为int 删除类目方法, 参数列表是:int categoryId; 返回值类型为int 修改类目方法, 参数列表是:Category category; 返回值类型为int 查询所有类目方法, 无参数 返回值类型为List<Category>; 【因为查询的所有类目,不再是单一的一个类目,需要有容器存储所有类目对象,该容器合适的是集合,便于查询的是ArrayList集合。{ArrayList特性是 查询快、增删慢 | LinkedList特性是 查询慢、增删快}】 根据类目编号查询方法,参数列表是:int categoryId; 返回值类型为Category; 【因为查询的是一个类目,所有就是对象存储。】


CategoryServiceImpl实现类内编写实例化操作,步骤如下: (1)在类内编写 实例化{也就是new} CategoryDao categoryDao = new CategoryDaoImpl(); 对象名称是categoryDao 写完会发现,CategoryDao 、CategoryDaoImpl 呈后红色状态,暂不需要处理,可继续编写。 (2) 利用对象去完成增删改查操作 添加类目方法:return categoryDao.add(Category) ; 删除类目方法:return categoryDao.del(CategoryId) ; 修改类目方法:return categoryDao.edit(Category) ; 获取所有类目方法:return categoryDao.getAllCategory() ; 根据编号查询类目方法:return categoryDao.getCategoryById(CategoryId) ; 写完以上方法,仍会呈现红色的状态

(3)解决报错问题 ①将光标放在CategoryDao后,按快捷键 Alt+Enter,选择 Create Interface CategoryDao

修改包名为dao,然后Ok回车

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
	② 将光标放在add后,按快捷键 Alt+Enter,选择 Create method  add in CategoryDao 	然后回车

③ 将光标放在del后,按快捷键 Alt+Enter,选择 Create method del in CategoryDao 然后回车 ④ 将光标放在edit后,按快捷键 Alt+Enter,选择 Create method edit in CategoryDao 然后回车 ⑤ 将光标放在getAllCategory后,按快捷键 Alt+Enter,选择 Create method getAllCategory in CategoryDao 然后回车 ⑥ 将光标放在getCategoryById后,按快捷键 Alt+Enter,选择 Create method getCategoryById in CategoryDao 然后回车 ⑦ 将光标放在CategoryDaoImpl实现类后,按快捷键 Alt+Enter,选择 Create class CategoryDaoImpl

修改包名为dao.impl,然后OK

(4)回到CategoryDaoImpl实现类内,会发现报错:

解决办法: 将光标放在CategoryDao后,按快捷键 Alt+Enter,选择 implment methods 然后回车、再回车。


截至到目前,需进一步编写CategoryDaoImpl实现类内的功能代码,却发现缺少数据源连接池,接下来进行创建数据库连接池,这里采用的是阿里巴巴数据源Druid,具体内容点此查看

1.4 创建工具类

下载jar包

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

public class DruidUtil {
    public static DataSource dataSource;

    static {

        try {
            InputStream is = DruidUtil.class.getClassLoader().getResourceAsStream("jdbc.properties");

            Properties pro = new Properties();

            pro.load(is);

            dataSource = DruidDataSourceFactory.createDataSource(pro);
        } catch (Exception e) {
            throw new RuntimeException(e);
        }

    }
    
    public static DataSource getDataSource(){
        return dataSource;
    }

    
    public static Connection getConnection() throws SQLException {
        return dataSource.getConnection();
    }

}

在src下创建配置文件:jdbc.proeprties

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/bookmarket
username=root
password=sorry

1.5 完善CategoryDaoImpl
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.dao.impl;

import cn.javabs.dao.CategoryDao;
import cn.javabs.entity.Category;
import cn.javabs.util.DruidUtil;
import org.apache.commons.dbutils.QueryRunner;
import org.apache.commons.dbutils.handlers.BeanHandler;
import org.apache.commons.dbutils.handlers.BeanListHandler;

import java.sql.SQLException;
import java.util.List;

public class CategoryDaoImpl implements CategoryDao {

    QueryRunner qr = new QueryRunner(DruidUtil.getDataSource());

    @Override
    public int add(Category category) {
        try {
            return qr.update("insert into category(categoryName,categoryDescription) values(?,?)",
                       category.getCategoryName(),category.getCategoryDescription());
        } catch (SQLException e) {
            throw new RuntimeException(e);//  转成运行时异常抛出
        }
    }

    @Override
    public int del(int categoryId) {
        try {
            return qr.update("delete from  category where categoryId = ?",categoryId);
        } catch (SQLException e) {
            throw new RuntimeException(e);//  转成运行时异常抛出
        }
    }

    @Override
    public int edit(Category category) {
        try {
            return qr.update("update category set categoryName = ?,categoryDescription = ? where categoryId = ?",
                    category.getCategoryName(),category.getCategoryDescription(),category.getCategoryId());
        } catch (SQLException e) {
            throw new RuntimeException(e);//  转成运行时异常抛出
        }
    }

    @Override
    public List<Category> getAllCategory() {
        try {
            return qr.query("select * from category",new BeanListHandler<Category>(Category.class));
        } catch (SQLException e) {
            throw new RuntimeException(e);//  转成运行时异常抛出
        }
    }

    @Override
    public Category getCategoryById(int categoryId) {
        try {
            return qr.query("select * from category where  categoryId = ?",new BeanHandler<Category>(Category.class),categoryId);
        } catch (SQLException e) {
            throw new RuntimeException(e);//  转成运行时异常抛出
        }
    }
}
1.6 编写 CategoryServlet
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
package cn.javabs.web.servlet;

import cn.javabs.entity.Category;
import cn.javabs.service.CategoryService;
import cn.javabs.service.impl.CategoryServiceImpl;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.lang.invoke.VolatileCallSite;
import java.util.List;

@WebServlet("/categoryServlet")
public class CategoryServlet extends HttpServlet {

    CategoryService cs = new CategoryServiceImpl();

    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //  解决乱码
        request.setCharacterEncoding("utf-8");
        response.setCharacterEncoding("utf-8");
        response.setContentType("text/html;charset=utf-8");

        // 接受参数、用于判断是找哪个方法
        String op = request.getParameter("op");

        switch (op){
            case "addCategory":
                addCategory(request, response);
                break;
            case "delCategory":
                delCategory(request, response);
                break;
            case "editCategory":
                editCategory(request, response);
                break;
            case "categoryList":
                categoryList(request, response);
                break;
            case "updateCategory":
                updateCategory (request, response);
                break;

            default:
                System.out.println("没有找到对应的参数!请查证");
        }
    }
    //    修改之数据回显
    private void updateCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        String categoryName = request.getParameter("categoryName");
        String categoryDescription = request.getParameter("categoryDescription");
        int categoryId = Integer.parseInt(id);

        Category category = new Category(categoryId, categoryName, categoryDescription);
        int row = cs.editCategory(category);
        if (row>0){
            request.setAttribute("msg","修改类目成功!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }else{
            request.setAttribute("msg","修改类目失败!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }
    }

    private void categoryList(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        List<Category> list = cs.findAllCategory();
        if (list.size() > 0&& list != null) {
            request.setAttribute("list", list);
            request.getRequestDispatcher("categoryList.jsp").forward(request,response);
        }else{
            request.setAttribute("msg","尚未查询到相关类目!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }

    }

//    数据回显
    private void editCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        int categoryId = Integer.parseInt(id);
        Category category = cs.findCategoryById(categoryId);
        if (category != null){
            request.setAttribute("category", category);
            request.getRequestDispatcher("editCategory.jsp").forward(request,response);
        }else{
            request.setAttribute("msg","修改类目失败,请查证!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }
    }

    private void delCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String id = request.getParameter("id");
        int categoryId = Integer.parseInt(id);
        int row = cs.delCategory(categoryId);
        if (row>0){
            request.setAttribute("msg","删除类目成功!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }else{
            request.setAttribute("msg","删除类目失败!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }
    }

    /**
     * 添加类目
      * @param request
     * @param response
     */
    private void addCategory(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String categoryName = request.getParameter("categoryName");
        String categoryDescription = request.getParameter("categoryDescription");

        Category category = new Category(categoryName, categoryDescription);

        int row = cs.addCategory(category);

        if (row>0){
            request.setAttribute("msg","添加类目成功!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }else{
            request.setAttribute("msg","添加类目失败!");
            request.getRequestDispatcher("message.jsp").forward(request,response);
        }
    }
}
1.7页面布局级设计
1.7.1添加页面
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%--
  Created by IntelliJ IDEA.
  User: Mryang
  Date: 2021/10/11
  Time: 14:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>添加图书类目</title>
</head>
<body>
						<form action="/categoryServlet?op=addCategory" method="post">
						    类目名称:<input type="text" name="categoryName" id="categoryName"> <br/>
						    类目描述:<input type="text" name="categoryDescription" id="categoryDescription">  <br/>
						    <input type="submit" value="添加类目">
						</form>
</body>
</html>
1.7.2查询页面
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%--
  Created by IntelliJ IDEA.
  User: Mryang
  Date: 2021/10/11
  Time: 14:22
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<!--不要遗忘这条指令-->
<%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
					<table>
					    <tr>
					        <td>编号</td>
					        <td>名称</td>
					        <td>描述</td>
					        <td>操作</td>
					    </tr>
					
					
					    <c:forEach items="${list}" var="item">
					        <tr>
					            <td>${item.categoryId}</td>
					            <td>${item.categoryName}</td>
					            <td>${item.categoryDescription}</td>
					            <td>
					                <a href="/categoryServlet?op=editCategory&id=${item.categoryId}">修改</a>
					                <a href="JavaScript:deleteCategory('${item.categoryId}')">删除</a>
					            </td>
					        </tr>
					    </c:forEach>
					
					</table>
</body>
</html>
				<script>
				    function deleteCategory(id) {
				      var sure =   confirm("您确定要删除此项吗?")
				        if (sure){
				            kk = "/categoryServlet?op=delCategory&id="  + id;
				        }
				    }
				</script>
1.7.3修改页面
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<%--
  Created by IntelliJ IDEA.
  User: Mryang
  Date: 2021/10/11
  Time: 14:18
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>修改图书类目</title>
</head>
<body>
					<form action="/categoryServlet?op=updateCategory&id=${category.categoryId}" method="post">
					    类目名称:<input type="text" value="${category.categoryName}" name="categoryName" id="categoryName"> <br/>
					    类目描述:<input type="text" value="${category.categoryDescription}" name="categoryDescription" id="categoryDescription">  <br/>
					    <input type="submit" value="修改类目">
					</form>
</body>
</html>
1.8 编写MySQL数据库的代码
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
-- 创建数据库
create  database bookmarket;

-- 选中数据库
use bookmarket;

--  创建  类目 数据表
CREATE  table  category(

   categoryId int primary key auto_increment, --  auto_increment  自动递增
   categoryName varchar(50),
   categoryDescription varchar(250)

);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021/10/11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
基于AI视频智能分析技术的人员睡岗离岗检测方案及应用场景
在一些重要的岗位中,如:工厂的消防办公室等,需要保持有人员时刻值班在岗,那么如何对值班人员离岗睡岗行为进行高效地监督呢?通过人员走访检查不仅效率低下、违规行为发现慢,而且极易监管不到位,因此,基于AI深度学习的人员离岗睡岗智能检测算法,则成为企业、工厂、工地、物业等日常监管工作中的关键应用。
TSINGSEE青犀视频
2023/03/22
8130
如何基于AI视频智能分析+视频监控技术搭建离岗睡岗检测系统?
很多安全事故的背后,都与相应岗位人员失职有密切关系。在一些重要的工作岗位中,都会安排特定的值岗人员,维持日常生产、运营及治安工作,而在岗人员每天面临艰巨而又单调重复的工作,极易产生疲劳,注意力下降,时常会出现离岗、睡岗、抽烟、玩手机等违规行为,从而无法及时发现安全隐患和处理突发紧急事件,以至于引发不可挽回的财产丢失、安全事故。而针对在岗人员常规的监管方式以“签到考核”为主,对值班人员实际在岗情况无法准确判断,一旦发生事故,难以考核追责。
Openskeye
2023/05/09
9990
夜班睡岗离岗识别检测系统
夜班睡岗离岗识别检测系统依据智能视频分析,能够对值班中关键岗位的运行状态开展全天候实时识别检测,夜班睡岗离岗识别检测系统对区域工作人员的睡岗、离岗、缺岗、玩手机、抽烟等行为进行识别。在出入口岗亭,设定摄像头对岗位进行监测。在工地值班室部署离岗监测功能,根据监控人员是否在监控室工作岗位上,当值班人员缺岗、睡岗、离岗超过系统设定的时间,则会立即报警,防止人员粗心大意所造成的损失。
燧机科技
2022/09/25
3800
夜班睡岗离岗识别检测系统
值班人员睡岗离岗监控报警系统
值班人员睡岗离岗监控报警系统可持续24个小时对值班岗位开展智能化监控。目前,工作人员睡岗离岗预警提醒监控摄像头识别工作员长时间保持不动的姿态,会被判定为睡岗,随后马上提醒睡岗工作人员。值班人员睡岗离岗监控报警系统同时保存前端分析视频证据并上传至后台,为后续的人工审查提供管理依据。
燧机科技
2022/09/25
7540
值班人员睡岗离岗监控报警系统
人员离岗睡岗自动识别系统
人员离岗睡岗自动识别系统依据机器学习智能视频分析技术,系统全自动识别职工的岗位状态。人员离岗睡岗自动识别系统一旦发现员工不在工作岗位的时间超出规定设置时间,系统会把报警信息传送到后台并同步信息到相关人员的手机上,随后通过现场视频监控摄像机语音提醒,让员工马上回到岗位,防止工作人员粗心大意带来的损失。
燧机科技
2022/09/25
6460
人员离岗睡岗自动识别系统
浅析基于AI视频智能检测预警技术在矿山安全生产场景中的应用
在矿山的开发工作中,安全事故多发生在开采和运输环节中。井下矿大部分都是通过皮带传送,因此,利用AI人工智能技术解决生产中的安全隐患,尤其是对皮带及周边的安全隐患进行智能检测与提前预警,已经势在必行。
TSINGSEE青犀视频
2023/03/21
1.3K0
智慧博物馆视频监控系统设计,可视化AI智能分析技术助力博物馆多维度监管
博物馆视频智能监控系统是智慧博物馆建设的重要组成部分,传统的博物馆视频监控系统以模拟系统架构为主,存在监管效率低、各个系统独立运作形成数据孤岛、以“事后补救”为主要监管手段等管理弊病,无法满足互联网高速发展背景下对博物馆的智能化、可视化、数字化、科学化监管需求。
TSINGSEE青犀视频
2023/11/28
6180
视频AI边缘计算技术在安全生产监管中的场景化应用
随着AI、大数据、云计算、边缘计算等技术的高速发展,我国的视频监控市场也进入全新阶段。得益于AI深度学习技术的进步,现代化的安防视频监控系统依托边缘计算设备的AI识别算法可以独立完成在前端的一些简单的图像处理与分析任务,比如人脸检测、车辆检测、烟火检测、安全帽检测等等。通过内置各种AI算法的摄像机,将一些数据处理的压力分担到前端,解放部署在中心的云计算资源,这样就能够集中更多的算力资源去开展更高效的、更重要的智能分析等任务。
TSINGSEE青犀视频
2022/03/22
1K0
视频AI边缘计算技术在安全生产监管中的场景化应用
TSINGSEE青犀睡岗离岗检测算法——确保加油站安全运营
众所周知,加油站是一个需要24小时营业的场所,由于夜间加油人员较少,员工极易处于疲劳或者睡眠状态,为保障安全和效率,通过TSINGSEE青犀睡岗离岗检测算法在加油站场景中,可以及时发现工作人员的疲劳状况,保障加油站的安全运营,同时提高工作效率和服务质量。
TSINGSEE青犀视频
2023/10/27
2130
安防监控/视频云存储/视频AI行为分析算法应用场景汇总
随着城市经济的日益发展,城市建设也如火如荼。很多施工人员为了自身方便,无视安全规章制度,不按照安全施工要求进行着装、施工。具有很大的安全隐患,一旦发生事故,就会造成人员损伤和工程进度的挤压。为了改善此问题,TSINGSEE青犀AI智能网关V3——行为分析算法应运而生。
TSINGSEE青犀视频
2023/09/15
4440
基于物联网、视频监控与AI视觉技术的智慧电厂项目智能化改造方案
现阶段,电力行业很多企业都在部署摄像头对电力巡检现场状况进行远程监控,但是存在人工查看费时、疲劳、出现问题无法第一时间发现等管理弊端,而且安全事件主要依靠人工经验判断分析、管控,效率十分低下。
TSINGSEE青犀视频
2023/07/27
7450
AI视频智能分析识别技术的发展与EasyCVR智慧安防视频监控方案
随着科技的不断进步,基于AI神经网络的视频智能分析技术已经成为了当今社会的一个重要组成部分。这项技术通过利用计算机视觉和深度学习等技术,实现对视频数据的智能分析和处理,从而为各个领域提供了广泛的应用。今天我们就来介绍下视频智能分析识别技术的发展以及EasyCVR视频技术的应用。
TSINGSEE青犀视频
2023/11/29
9050
视频云存储/安防监控视频AI智能分析网关V3:抽烟/打电话功能详解
人工智能技术已经越来越多地融入到视频监控领域中,近期我们也发布了基于AI智能视频云存储/安防监控视频AI智能分析平台的众多新功能,该平台内置多种AI算法,可对实时视频中的人脸、人体、物体等进行检测、跟踪与抓拍,支持口罩佩戴检测、安全帽佩戴检测、人体检测、区域入侵检测及可拓展多种AI检测算法。
TSINGSEE青犀视频
2023/08/25
2710
轧钢厂安全生产方案:AI视频识别安全风险智能监管平台的设计
轧钢厂一般都使用打包机对线材进行打包作业,由于生产需要,人员需频繁进入打包机内作业,如:加护垫、整包、打包机检修、调试等作业。在轧钢厂生产过程中,每个班次生产线材超过300件,人员在一个班次内(12h)就要进入打包机区域300次以上。如果员工安全意识淡薄,违反岗位安全操作规范,在未做好安全防范措施的情况下进入打包机区域,极易发生安全事故。
TSINGSEE青犀视频
2023/11/01
6010
视频云存储/安防监控视频智能分析网关V3:占道经营功能详解
违规占道经营者经常会在人流量大、车辆集中的道路两旁摆摊,导致公路交通堵塞,给居民出行的造成不便,而且违规占路密集的地方都是交通事故频频发生的区域。
TSINGSEE青犀视频
2023/08/25
2020
睡岗离岗识别检测系统
睡岗离岗识别检测系统根据监控视频ai分析技术可以24h不间断全自动识工作人员的岗位,一旦发现员工工作中不在位置的时间超过规定,睡岗离岗识别检测系统将立即警报,并把报警信息传送到后台。随后,通过现场语音视频监控摄像头给出语音提醒,便于员工可以立即回到岗位,系统同时会储存警报视频和照片。
燧机科技
2022/09/25
6300
睡岗离岗识别检测系统
景区智能化管理方案:视频技术与AI智能检测技术的场景应用
2020年11月,文化和旅游部、国家发展改革委、教育部、工业和信息化部等十部门联合印发《关于深化"互联网+旅游"推动旅游业高质量发展的意见》,为促进常态化疫情防控下旅游业健康发展,确定支持"互联网+旅游"发展的措施,加快推进以数字化、网络化、智能化为特征的智慧旅游发展,旅游行业就此迎来数字化、智慧化的新一轮政策利好。
TSINGSEE青犀视频
2023/02/02
1.3K0
TSINGSEE视频智能解决方案边缘AI智能与后端智能分析的区别与应用
视频监控与AI人工智能的结合是当今社会安全领域的重要发展趋势。随着科技的不断进步,视频监控系统已经不再局限于简单的录像和监视功能,而是开始融入人工智能技术,实现更加智能化的监控和安全管理。传统的监控系统往往需要人工操作来进行监控和分析,而引入AI技术后,监控系统可以自动识别和分析监控画面中的各种信息,包括人脸识别、行为分析等,大大提高了监控系统的智能化水平。
TSINGSEE青犀视频
2023/12/13
4060
浅析AI视频分析与视频监控技术的工厂车间智能化监管方案
工厂生产车间一般是从原材料到成品的流水作业,有大量器械和物料。为保障车间财产安全并提高生产效率,需要进行全面的监管。在生产制造流水线的关键工序中,不仅有作业过程监管需求,同时,也存在生产发生异常及产品质量问题的过程还原需求,需要结合直观现场与客观数据的融合分析。
TSINGSEE青犀视频
2023/09/20
1.1K0
AI算法+视频技术助力构建智慧城管解决方案,实现城市管理精细化
物联网、大数据、移动互联网等技术的日新月异,城市管理对信息资源需求的日益提升,广大市民对政府服务新的诉求, 智慧城管正面临千载难逢的发展机遇。
TSINGSEE青犀视频
2023/09/28
6330
推荐阅读
基于AI视频智能分析技术的人员睡岗离岗检测方案及应用场景
8130
如何基于AI视频智能分析+视频监控技术搭建离岗睡岗检测系统?
9990
夜班睡岗离岗识别检测系统
3800
值班人员睡岗离岗监控报警系统
7540
人员离岗睡岗自动识别系统
6460
浅析基于AI视频智能检测预警技术在矿山安全生产场景中的应用
1.3K0
智慧博物馆视频监控系统设计,可视化AI智能分析技术助力博物馆多维度监管
6180
视频AI边缘计算技术在安全生产监管中的场景化应用
1K0
TSINGSEE青犀睡岗离岗检测算法——确保加油站安全运营
2130
安防监控/视频云存储/视频AI行为分析算法应用场景汇总
4440
基于物联网、视频监控与AI视觉技术的智慧电厂项目智能化改造方案
7450
AI视频智能分析识别技术的发展与EasyCVR智慧安防视频监控方案
9050
视频云存储/安防监控视频AI智能分析网关V3:抽烟/打电话功能详解
2710
轧钢厂安全生产方案:AI视频识别安全风险智能监管平台的设计
6010
视频云存储/安防监控视频智能分析网关V3:占道经营功能详解
2020
睡岗离岗识别检测系统
6300
景区智能化管理方案:视频技术与AI智能检测技术的场景应用
1.3K0
TSINGSEE视频智能解决方案边缘AI智能与后端智能分析的区别与应用
4060
浅析AI视频分析与视频监控技术的工厂车间智能化监管方案
1.1K0
AI算法+视频技术助力构建智慧城管解决方案,实现城市管理精细化
6330
相关推荐
基于AI视频智能分析技术的人员睡岗离岗检测方案及应用场景
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档