当前位置: 首页 > news >正文

公交查询系统

目录

  • 需求分析

1 概述

2 课题分析

3 实现功能步骤

4 项目背景

  • 概要设计

1 系统流程图.

2 功能模块.

3 各功能模块

4 数据存储

5 类设计

三、详细设计

1公交线路查询系统用户界面

2公交信息存储模快

 3公交信息查询模块

4用户信息输入和输出模块

四、调试分析

五、使用说明

六、测试结果

七、参考文献

八、附录

一  需求分析

(1)概述

Java是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由Sun Microsystems公司于1995年5月推出的Java程序设计语言和Java平台(即JavaSE, JavaEE, JavaME)的总称。Java 技术具有卓越的通用性、高效性、平台移植性和安全性,广泛应用于个人PC、数据中心、游戏控制台、科学超级计算机、移动电话和互联网,同时拥有全球最大的开发者专业社群。在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。

(2)课题分析

公交线路查询系统,面向的是用户,即为用户提供方便的公交线路查询信息。他所要求提供的功能如下:

(1)公交线路查询:

用户输入公交车次号码,启动查询,可获得该路车属性(包括该路公交车:服务

类型:有\无人售票;车型:普通\空调车;收发车时间。其中,服务类型和车型缺省为有人售票和普通车)及沿线站点信息。

 

(2)站点查询:

用户输入站点(以任意方式) ,启动查询,可获得经过该站所有公交车次及其属性。

(3)乘车方案查询:

用户输入起点、终点(以任意方式) ,系统经过查询返回所有相关站点,用户分别确认后, 查询启动。 用户可获得所有可达线路的路线信息 (所有直达\转乘的方案) 。

由于,本次课设时间有限,仅做公交线路查询系统中的,乘车方案查询。

(3)实现功能步骤

该系统的前台用java设计,要求有较为完善的用户界面,能为用户提供优质的公交线路查询功能,具体要求的输入信息如下:

1.乘车起点

2.目的终点

该系统的后台用数据库设计,即为要求在数据库内实现公交信息的存储(车次信息,线路信息等),并且要实现公交线路的查询,可以用数据库中的存储过程来实现该功能。

所以该系统的实现功能步骤如下:

1.数据库设计,公交信息的存储,建立表。

2.存储过程的设计,用来实现公交线路的查询。

3.界面前台的设计,用来接收用户信息和传递信息给SQL;

(4) 项目背景

在信息爆炸和计算机快速发展的时代,简单的看地图查公交的方式应该一去而不复返,如今,用户只需输入起始站点和目的站点,便可在很少的时间查出所需的线路信息,大大的方便的人们的出行生活。

 

二.概要设计

(1)系统流程图

      

   

  1. 功能模块图

(3)各个模块的功能

  1. 公交信息存储模块

在这个模块中主要实现的功能是一个建立一个工程,将用户输入的公交信息放入到数据库中。

  1. 公交信息查询模块

在这个模块中主要实现的功能是一个查询信息的函数,通过输入所查询的车次信息来查询数据库中的信息。

  1. 用户信息输入和输出模块

          在这个模块中主要是实现用户界面和信息的输入输出

  1. 数据存储

然,如果在简单的使用表bus_route(线,路线经过的站点,用)保存公交线线路信息,使用查询语实现车线查询,因此,应该对线路的信息理后再保存到中,使用的方法是用站点-路线关系表stop_route(站点,路线,站点在路线中的位置)公交线

  1. 类设计

InsertRecord   //插入信息类

ModifyRecord   //更改信息类

SearchRecord   //查询信息类

Show1Record    //用户界面类

三.详细设计

(1)公交线路查询系统用户界面

核心代码:

package book;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SearchRecord extends JDialog implements ActionListener

{

JLabel hintLabel,hintLabel1;

JTextField inputNumber,inputNumber1;

JButton enter;

JTextArea x;

Connection con;

Statement sql;

ResultSet rs;

SearchRecord(String title){

hintLabel=new JLabel("始发站:");

hintLabel1=new JLabel("终点站:");

inputNumber=new JTextField(20);

inputNumber1=new JTextField(20);

enter=new JButton("查询线路");

x = new JTextArea(50, 50);

x.setBackground(Color.LIGHT_GRAY);

setLayout(null);

Box baseBox=Box.createHorizontalBox();

Box baseBox1=Box.createHorizontalBox();

baseBox.add(hintLabel);

baseBox.add(inputNumber);

baseBox.add(hintLabel1);

baseBox.add(inputNumber1);

baseBox.add(enter);

baseBox1.add(x);

add(baseBox);

add(baseBox1);

baseBox.setBounds(100,40,400,38);

baseBox1.setBounds(100,80,500,100);

enter.addActionListener(this);

setBounds(20,60,750,250);

}

(2)公交信息存储模快

如果有以下3条路线

R1: S1->S2->S3->S4->S5

R2: S6->S7->S2->S8

R3: S8->S9->S10

则对应的站点-路线关系表stop_route为

Stop

Route

Position

S1

R1

1

S2

R1

2

S3

R1

3

S4

R1

4

S5

R1

5

S6

R2

1

S7

R2

2

S2

R2

3

S8

R2

4

S8

R3

1

S9

R3

2

S10

R3

3

注:Stop为站点名,Route为路线名,Position为站点在路线中的位置

(3)公交信息查询模块

(1)直达路线视图

直达路线视图可以理解为一张存储了所有直达路线的表(如果两个站点之间存在直达路线,那么在直达路线视图中就有一行与之相对应)。例如R1,R2,R3对应的RouteT0如下:

起点

终点

乘坐路线

站点数

S3

S4

R1

1

S3

S5

R1

2

S4

S5

R1

1

S1

S2

R1

1

S1

S3

R1

2

S1

S4

R1

3

S1

S5

R1

4

S2

S3

R1

1

S2

S4

R1

2

S2

S5

R1

3

S2

S8

R2

1

S6

S2

R2

2

S6

S7

R2

1

S6

S8

R2

3

S7

S2

R2

1

S7

S8

R2

2

S8

S10

R3

2

S8

S9

R3

1

S9

S10

R3

1

RouteT0定义如下:

create view RouteT0

as

    select

        sr1.Stop as StartStop,    --启始站点

        sr2.Stop as EndStop,    --目的站点

        sr1.Route as Route,    --乘坐线路

        sr2.Position-sr1.Position as StopCount    --经过的站点数

    from

        stop_route sr1,

        stop_route sr2

    where

        sr1.Route=sr2.Route

        and sr1.Position<sr2.Position

(2)换乘路线算法

显然,一条换乘路线由若干段直达路线组成,因此,基于直达路线视图RouteT0可以很方便实现换乘查询,以下是实现一次换乘查询的存储过程InquiryT1:

create proc InquiryT1(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点,

        r2.Route as 乘坐路线2,

        r2.EndStop as 目的站点,

        r1.StopCount+r2.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=@EndStop

end

同理可以得到二次换乘的查询语句

create proc InquiryT2(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点1,

        r2.Route as 乘坐路线2,

        r2.EndStop as 中转站点2,

        r3.Route as 乘坐路线3,

        r3.EndStop as 目的站点,

        r1.StopCount+r2.StopCount+r3.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2,

        RouteT0 r3

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=r3.StartStop

        and r3.EndStop=@EndStop

end

(4)用户信息输入和输出模块

   

四.调试分析

(1)调试过程中所遇到的问题及解决方法

1)无法设计出信息存储结构,不过通过参阅资料有所心得

(2)经验与体会

通过这两周的课程设计,让我明白软件设计的分层结构,即是从需求设计,到概要设计,再到详细设计,而面层设计里有必须分层,即是把问题的简化。

五.用户使用说明

(1)打开用户界面

(2)输入查询信息

六.测试结果

exec InquiryT0 'S1','S2'

exec InquiryT1 'S1','S8'

exec InquiryT2 'S1','S9'

七.参考文献

《Java》大学实用教程学习指导

作者:张跃平 耿祥义

出版社:电子工业出版社

八.附录

数据库设计代码:

1.

create proc InquiryT0(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        sr1.Stop as 启始站点,

        sr2.Stop as 目的站点,

        sr1.Route as 乘坐线路,

        sr2.Position-sr1.Position as 经过的站点数

    from

        stop_route sr1,

        stop_route sr2

    where

        sr1.Route=sr2.Route

        and sr1.Position<sr2.Position

        and sr1.Stop=@StartStop

        and sr2.Stop=@EndStop

end

2. create view RouteT0

as

    select

        sr1.Stop as StartStop,    --启始站点

        sr2.Stop as EndStop,    --目的站点

        sr1.Route as Route,    --乘坐线路

        sr2.Position-sr1.Position as StopCount    --经过的站点数

    from

        stop_route sr1,

        stop_route sr2

    where

        sr1.Route=sr2.Route

        and sr1.Position<sr2.Position

3. create proc InquiryT1(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点,

        r2.Route as 乘坐路线2,

        r2.EndStop as 目的站点,

        r1.StopCount+r2.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=@EndStop

end

4. create proc InquiryT2(@StartStop varchar(32),@EndStop varchar(32))

as

begin

    select

        r1.StartStop as 启始站点,

        r1.Route as 乘坐路线1,

        r1.EndStop as 中转站点1,

        r2.Route as 乘坐路线2,

        r2.EndStop as 中转站点2,

        r3.Route as 乘坐路线3,

        r3.EndStop as 目的站点,

        r1.StopCount+r2.StopCount+r3.StopCount as 总站点数

    from

        RouteT0 r1,

        RouteT0 r2,

        RouteT0 r3

    where

        r1.StartStop=@StartStop

        and r1.EndStop=r2.StartStop

        and r2.EndStop=r3.StartStop

        and r3.EndStop=@EndStop

end

java

package book;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SearchRecord extends JDialog implements ActionListener

{

JLabel hintLabel,hintLabel1;

JTextField inputNumber,inputNumber1;

JButton enter;

JTextArea x;

Connection con;

Statement sql;

ResultSet rs;

SearchRecord(String title){

hintLabel=new JLabel("始发站:");

hintLabel1=new JLabel("终点站:");

inputNumber=new JTextField(20);

inputNumber1=new JTextField(20);

enter=new JButton("查询线路");

x = new JTextArea(50, 50);

x.setBackground(Color.LIGHT_GRAY);

setLayout(null);

Box baseBox=Box.createHorizontalBox();

Box baseBox1=Box.createHorizontalBox();

baseBox.add(hintLabel);

baseBox.add(inputNumber);

baseBox.add(hintLabel1);

baseBox.add(inputNumber1);

baseBox.add(enter);

baseBox1.add(x);

add(baseBox);

add(baseBox1);

baseBox.setBounds(100,40,400,38);

baseBox1.setBounds(100,80,500,100);

enter.addActionListener(this);

setBounds(20,60,750,250);

}

package book;

import java.awt.BorderLayout;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JDialog;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JScrollPane;

import javax.swing.JTable;

import javax.swing.JTextField;

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

public class SearchRecord extends JDialog implements ActionListener

{

JLabel hintLabel,hintLabel1;

JTextField inputNumber,inputNumber1;

JButton enter;

JTextArea x;

Connection con;

Statement sql;

ResultSet rs;

SearchRecord(String title){

hintLabel=new JLabel("始发站:");

hintLabel1=new JLabel("终点站:");

inputNumber=new JTextField(20);

inputNumber1=new JTextField(20);

enter=new JButton("查询线路");

x = new JTextArea(50, 50);

x.setBackground(Color.LIGHT_GRAY);

setLayout(null);

Box baseBox=Box.createHorizontalBox();

Box baseBox1=Box.createHorizontalBox();

baseBox.add(hintLabel);

baseBox.add(inputNumber);

baseBox.add(hintLabel1);

baseBox.add(inputNumber1);

baseBox.add(enter);

baseBox1.add(x);

add(baseBox);

add(baseBox1);

baseBox.setBounds(100,40,400,38);

baseBox1.setBounds(100,80,500,100);

enter.addActionListener(this);

setBounds(20,60,750,250);

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()== enter){

String a,b;

a=inputNumber.getText();

b=inputNumber1.getText();

try{

con=DriverManager.getConnection("jdbc:odbc:hello1","","");

            sql=con.createStatement();

            rs=sql.executeQuery("");

}

catch{

}

}

}

}mport javax.swing.*;    

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

public class Example12_9{

    public static void main(String args[ ]){

        try { Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");  

        }

        catch(ClassNotFoundException e){

               System.out.println(""+e);

        }

        DatabaseWin win=new DatabaseWin();  

    }

}

class DatabaseWin extends JFrame implements ActionListener{

   JButton itemUpdate,itemInsert,itemShow1,itemSearch;

       Show1Record show1Record;

       ModifyRecord modifyRecord;

       InsertRecord insertRecord;

       SearchRecord searchRecord;

       DatabaseWin(){

           itemUpdate=new JButton("修改公交信息");

           itemInsert=new JButton("插入公交信息");

           itemShow1=new JButton("显示公交信息");

           itemSearch=new JButton("查询公交信息");

           itemUpdate.addActionListener(this);

           itemInsert.addActionListener(this);

           itemShow1.addActionListener(this);

           itemSearch.addActionListener(this);

    FlowLayout flow=new FlowLayout();

    flow.setAlignment(FlowLayout.LEFT);

    flow.setHgap(20);

    flow.setVgap(20);

    setLayout(flow);                    

           add(itemShow1);

           add(itemUpdate);

           add(itemInsert);

           add(itemSearch);

           modifyRecord=new ModifyRecord("修改公交信息");

           insertRecord=new InsertRecord("插入公交信息");

           show1Record=new Show1Record("显示公交信息");

           searchRecord=new SearchRecord("查询公交线路");

           

           setBounds(100,100,300,200);

           setVisible(true);

           setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);

       }

       public void actionPerformed(ActionEvent e){

package book;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.border.*;

public class InsertRecord extends JDialog implements ActionListener{ //负责插入记录的类

     JLabel hintLabel;

     Object name[]={"车次","始发站","途经站1","途经站2","途经站3","途经站4","途经站5","终点站","始发时间","收车时间"};

     Object a[][]=new Object[1][10];

     JTable table;

     JButton enterInsert;

     Connection con;

     Statement sql;

     ResultSet rs;

     String num;

     InsertRecord(String s){

        setTitle(s);

        hintLabel=new JLabel("输入新记录:");

        table=new JTable(a,name);

        enterInsert=new JButton("插入新记录");

        setLayout(null);

        Box baseBox=Box.createHorizontalBox();

        Box baseBox1=Box.createHorizontalBox();

        baseBox.add(hintLabel);

        baseBox1.add(new JScrollPane(table));

        baseBox1.add(enterInsert);

        add(baseBox);

        add(baseBox1);

        baseBox.setBounds(10,40,700,38);

        baseBox1.setBounds(10,80,700,38);

        enterInsert.addActionListener(this);

        setBounds(120,160,800,200);

    }

    public void actionPerformed(ActionEvent e){

       try{  con=DriverManager.getConnection("jdbc:odbc:hello1","","");

             sql=con.createStatement();

             int k=sql.executeUpdate

             ("INSERT INTO 公交信息 VALUES('"+

              a[0][0]+"','"+a[0][1]+"','"+a[0][2]+"','"+a[0][3]+"','"+a[0][4]+"'," +

               "'"+a[0][5]+"','"+a[0][6]+"','"+a[0][7]+"','"+a[0][8]+"','"+a[0][9]+"')");

             if(k==1)

                JOptionPane.showMessageDialog

                (this,"插入信息成功","成功",JOptionPane.PLAIN_MESSAGE);     

             con.close();

       }  

       catch(SQLException ee){

             JOptionPane.showMessageDialog

             (this,"插入信息失败"+ee,"失败",JOptionPane.ERROR_MESSAGE);

       }    

    }      

}

package book;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.sql.*;

import javax.swing.border.*;

public class ModifyRecord extends JDialog implements ActionListener{ //负责更新记录的类

     JLabel hintLabel;

     JTextField inputNumber;

     Object name[]={"车次","始发站","途经站1","途经站2","途经站3","途经站4","途经站5","终点站","始发时间","收车时间"};

     Object a[][]=new Object[1][10];

     JTable table;

     JButton enterModify;

     Connection con;

     Statement sql;

     ResultSet rs;

     String num;

     ModifyRecord(String s){

        setTitle(s);

        hintLabel=new JLabel("输入编号(回车确认):");

        inputNumber=new JTextField(20);

        table=new JTable(a,name);

        enterModify=new JButton("更新信息");

        setLayout(null);

        Box baseBox=Box.createHorizontalBox();

        Box baseBox1=Box.createHorizontalBox();

        baseBox.add(hintLabel);

        baseBox.add(inputNumber);

        baseBox1.add(new JScrollPane(table));

        baseBox1.add(enterModify);

        add(baseBox);

        add(baseBox1);

        baseBox.setBounds(50,40,200,38);

        baseBox1.setBounds(50,80,900,38);

        inputNumber.addActionListener(this);

        enterModify.addActionListener(this);

        setBounds(20,60,1000,200);

    }

    public void actionPerformed(ActionEvent e){

       if(e.getSource()==inputNumber)

       try{ num=inputNumber.getText().trim();

            con=DriverManager.getConnection("jdbc:odbc:hello1","","");

            sql=con.createStatement();

            rs=sql.executeQuery("SELECT * FROM 公交信息  WHERE 车次='"+num+"'");

            //else

            //rs=sql.executeQuery("SELECT * FROM 客队球员信息  WHERE 编号='"+num+"'");

            boolean boo=rs.next();

            if(boo==false){

                   JOptionPane.showMessageDialog

                   (this,"公交不存在","提示",JOptionPane.WARNING_MESSAGE);

            }

            else{

                   a[0][0]=rs.getString(1);

                   a[0][1]=rs.getString(2);                    

                   a[0][2]=rs.getString(3);

                   a[0][3]=rs.getString(4);

                   a[0][4]=rs.getString(5);

                   a[0][5]=rs.getString(6);

                   a[0][6]=rs.getString(7);

                   a[0][7]=rs.getString(8);

                   a[0][8]=rs.getString(9);

                   a[0][9]=rs.getString(10);

                   table.repaint();

            }

           con.close();

       }  

       catch(SQLException ee){

           System.out.println(ee);

       }

      if(e.getSource()==enterModify){

           try{ con=DriverManager.getConnection("jdbc:odbc:hello1","","");

                sql=con.createStatement();

                sql.executeUpdate

                ("UPDATE 公交信息 SET 始发站='"+a[0][0]+

                  "',途经站1='"+a[0][1]+"',途经站2='"+a[0][2]+"',途经站3='"+a[0][3]+"',途经站4='"+a[0][4]+"',途经站5='"+a[0][5]+"',终点站='"+a[0][6]+

                  "',始发时间='"+a[0][7]+"',收车时间='"+a[0][8]+"'WHERE 车次='"+num+"'");

                 JOptionPane.showMessageDialog

                   (this,"更新成功","成功",JOptionPane.PLAIN_MESSAGE);     

                 con.close();

           }  

           catch(SQLException ee){

                 JOptionPane.showMessageDialog

                (this,"更新失败"+ee,"失败",JOptionPane.ERROR_MESSAGE);

           }    

      }

    }      

}

相关文章:

公交查询系统

目录 需求分析 1 概述 2 课题分析 3 实现功能步骤 4 项目背景 概要设计 1 系统流程图. 2 功能模块. 3 各功能模块 4 数据存储 5 类设计 三、详细设计 1公交线路查询系统用户界面 2公交信息存储模快 3公交信息查询模块 4用户信息输入和输出模块 四、调试分析 五、使用说明 六、…...

opencv 轮廓顶点重新排序----四边形

def reorder(myPoints):# print(myPoints.shape)# 创建一个与myPoints具有相同形状和类型的数组myPointsNew np.zeros_like(myPoints)# 数组重塑为一个4行2列的数组myPoints myPoints.reshape((4,2))# 计算myPoints数组中每一行&#xff08;即每个点&#xff09;的坐标和add …...

【项目实战】【已开源】USB2.0 HUB 集线器的制作教程(详细步骤以及电路图解释)

写在前面 本文是一篇关于 USB2.0 HUB 集线器的制作教程&#xff0c;包括详细的步骤以及电路图解释。 本文记录了笔者制作 USB2.0 HUB 集线器的心路历程&#xff0c;希望对你有帮助。 本文以笔记形式呈现&#xff0c;通过搜集互联网多方资料写成&#xff0c;非盈利性质&#xf…...

分布式运用之rsync远程同步

一、rsync的相关知识 1.1 rsync简介 rsync&#xff08;Remote Sync&#xff0c;远程同步&#xff09;是一个开源的快速备份工具&#xff0c;可以在不同主机之间镜像同步整个目录树&#xff0c;支持增量备份&#xff0c;并保持链接和权限&#xff0c;且采用优化的同步算法&am…...

誉天在线项目~ElementPlus实现浏览页面注意点

浏览按钮 点击浏览按钮&#xff0c;传递列表数据索引值。 根据索引值从列表数据数组中获取当前行数据。 <el-button click"toView(scope.$index)" type"success" size"small"><el-icon><EditPen /></el-icon> 浏览<…...

神经网络-pytorch版本

pytorch神经网络基础 torch简介 torch和numpy import torch import numpy as np np_datanp.arange(6).reshape((2,3)) torch_datatorch.from_numpy(np_data) tensor2arraytorch_data.numpy() print(np_data,"\n",torch_data,"\n",tensor2array)torch的数…...

uniapp vue 页面传参问题encodeURIComponent

页面传参objet json序列化后可能会报错 Uncaught SyntaxError: missing ) after argument list 但不一定是数据有问题&#xff0c;而是json成字符串后&#xff0c;字符串中有特殊字符&#xff0c;所以导致parse的时候格式不对。所以解决方案如下 如果传递参数为对象的时候&…...

【GDAL】tif影像拼接和目标截取

原文作者&#xff1a;我辈李想 版权声明&#xff1a;文章原创&#xff0c;转载时请务必加上原文超链接、作者信息和本声明。 文章目录 一、gdal.Warp拼接tif二、截取1.通过经纬范围截取拼接的影像2.通过shp范围截取凭借后影像 三、WarpOptions其他参数四、其他方式裁剪1.通过sh…...

ARM核心时间线

指令集架构处理器家族(ARM RISC)ARMv1ARM1ARMv2ARM2、ARM3ARMv3ARM6、ARM7ARMv4StrongARM、ARM7TDMI、ARM9TDMIARMv5ARM7EJ、ARM9E、ARM10E、XScaleARMv6ARM11、ARM Cortex-MARMv7ARM Cortex-A、ARM Cortex-M、ARM Cortex-RARMv8-A armv8.2Cortex-A35、Cortex-A50系列[18]、Cor…...

【Redis】深入探索 Redis 的数据类型 —— 列表 List

文章目录 一、List 类型介绍二、List 类型相关命令2.1 LPUSH 和 RPUSH、LPUSHX 和 RPUSHX2.2 LPOP 和 RPOP、BLPOP 和 BRPOP2.3 LRANGE、LINDEX、LINSERT、LLEN2.4 列表相关命令总结 三、List 类型内部编码3.1 压缩列表&#xff08;ziplist&#xff09;3.2 链表&#xff08;lin…...

高精度乘除法(超详细)

高精度乘除法&#xff08;超详细&#xff09; 题目1-高精度乘法 给定两个非负整数&#xff08;不含前导 0&#xff09; A 和 B&#xff0c;请你计算 AB 的值。 输入格式 共两行&#xff0c;第一行包含整数 A&#xff0c;第二行包含整数 B。 输出格式 共一行&#xff0c;包含…...

List 获取前N条数据

1.使用for循环遍历 public static void main(String[] args) {int limit 5;List<Integer> oldList Lists.newArrayList(1, 2, 3, 4, 5, 6, 7);List<Integer> newList Lists.newArrayList();if (oldList.size() < limit) {newList.addAll(oldList);return;}fo…...

Spring入门控制反转(或依赖注入)AOP的关键概念 多配置文件与web集成

目录 1. 什么是spring&#xff0c;它能够做什么? 2. 什么是控制反转(或依赖注入) 3. AOP的关键概念 4. 示例 4.1 创建工程 4.2 pom文件 4.3 spring配置文件 4.4 示例代码 4.4.1 示例1 4.4.2 示例2 &#xff08;abstract&#xff0c;parent示例&#xff09; 4.4.3 使…...

排序算法-希尔排序

属性 1. 希尔排序是对直接插入排序的优化。 2. 当gap > 1时都是预排序&#xff0c;目的是让数组更接近于有序。当gap 1时&#xff0c;数组已经接近有序的了&#xff0c;这样就会很 快。这样整体而言&#xff0c;可以达到优化的效果。我们实现后可以进行性能测试的对比。 3.…...

ClientDataSet运行中出现“ClientDataSet:dataset not in edit or insert mode”(一)

在打开数据表文件&#xff0c;对ClientDataSet执行Append或Insert时&#xff0c;“ClientDataSet&#xff1a;dataset not in edit or insert mode”&#xff1a; 一、搜索问题 1、执行“显示数据后”&#xff0c;再执行Append&#xff0c;出错&#xff0c;说明ClientDataSet处…...

华为GaussDB数据库

Gauss数据库初识_高斯数据库_ygpGoogle的博客-CSDN博客 Redhat 7.6安装GaussDB_100_1.0.1详细攻略_gaussdb_100_1.0.1-database-redhat-64bit.tar.gz dow_博德1999的博客-CSDN博客 https://www.ngui.cc/el/3381579.html?actiononClick 初识GaussDB——GaussDB的发展历程、部…...

Flink、Spark、Hive集成Hudi

环境描述: hudi版本:0.13.1 flink版本:flink-1.15.2 spark版本:3.3.2 Hive版本:3.1.3 Hadoop版本:3.3.4 一.Flink集成Hive 1.拷贝hadoop包到Flink lib目录 hadoop-client-api-3.3.4.jar hadoop-client-runtime-3.3.4.jar 2.下载上传flink-hive的jar包 flink-co…...

百度编辑器 Ueditor 视频上传时 目录创建失败 解决办法

找到百度编辑器的上传类 Uploader.class.php文件.大约111左右 //$this->stateInfo $this->getStateInfo("ERROR_CREATE_DIR");//这句注释掉 $this->stateInfo $dirname;//换成这一句然后,进编辑器上传.会提示出一个错误的文件保存路径 双击复制下来这个路…...

Go 字符串处理

一、 字符串处理函数 我们从文件中将数据读取出来以后&#xff0c;很多情况下并不是直接将数据打印出来&#xff0c;而是要做相应的处理。例如&#xff1a;去掉空格等一些特殊的符号&#xff0c;对一些内容进行替换等。 这里就涉及到对一些字符串的处理。在对字符串进行处理时…...

家政服务接单小程序开发源码 家政保洁上门服务小程序源码 开源完整版

分享一个家政服务接单小程序开发源码&#xff0c;家政保洁上门服务小程序源码&#xff0c;一整套完整源码开源&#xff0c;可二开&#xff0c;含完整的前端后端和详细的安装部署教程&#xff0c;让你轻松搭建家政类的小程序。家政服务接单小程序开发源码为家政服务行业带来了诸…...

相机从app启动流程

一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

AI,如何重构理解、匹配与决策?

AI 时代&#xff0c;我们如何理解消费&#xff1f; 作者&#xff5c;王彬 封面&#xff5c;Unplash 人们通过信息理解世界。 曾几何时&#xff0c;PC 与移动互联网重塑了人们的购物路径&#xff1a;信息变得唾手可得&#xff0c;商品决策变得高度依赖内容。 但 AI 时代的来…...

初探Service服务发现机制

1.Service简介 Service是将运行在一组Pod上的应用程序发布为网络服务的抽象方法。 主要功能&#xff1a;服务发现和负载均衡。 Service类型的包括ClusterIP类型、NodePort类型、LoadBalancer类型、ExternalName类型 2.Endpoints简介 Endpoints是一种Kubernetes资源&#xf…...

NXP S32K146 T-Box 携手 SD NAND(贴片式TF卡):驱动汽车智能革新的黄金组合

在汽车智能化的汹涌浪潮中&#xff0c;车辆不再仅仅是传统的交通工具&#xff0c;而是逐步演变为高度智能的移动终端。这一转变的核心支撑&#xff0c;来自于车内关键技术的深度融合与协同创新。车载远程信息处理盒&#xff08;T-Box&#xff09;方案&#xff1a;NXP S32K146 与…...

Linux 中如何提取压缩文件 ?

Linux 是一种流行的开源操作系统&#xff0c;它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间&#xff0c;使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的&#xff0c;要在 …...

【Android】Android 开发 ADB 常用指令

查看当前连接的设备 adb devices 连接设备 adb connect 设备IP 断开已连接的设备 adb disconnect 设备IP 安装应用 adb install 安装包的路径 卸载应用 adb uninstall 应用包名 查看已安装的应用包名 adb shell pm list packages 查看已安装的第三方应用包名 adb shell pm list…...

在鸿蒙HarmonyOS 5中使用DevEco Studio实现企业微信功能

1. 开发环境准备 ​​安装DevEco Studio 3.1​​&#xff1a; 从华为开发者官网下载最新版DevEco Studio安装HarmonyOS 5.0 SDK ​​项目配置​​&#xff1a; // module.json5 {"module": {"requestPermissions": [{"name": "ohos.permis…...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

uniapp 集成腾讯云 IM 富媒体消息(地理位置/文件)

UniApp 集成腾讯云 IM 富媒体消息全攻略&#xff08;地理位置/文件&#xff09; 一、功能实现原理 腾讯云 IM 通过 消息扩展机制 支持富媒体类型&#xff0c;核心实现方式&#xff1a; 标准消息类型&#xff1a;直接使用 SDK 内置类型&#xff08;文件、图片等&#xff09;自…...