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

04748JAVA语言程序设计实践考试复习

考完试了,复习内容全部作废。
考题是两道题,一个半小时时间特别紧张
在这里插入图片描述
一进考场会发一张纸,上面有考题,怎么保存什么的不重要,因为还得删。考完试之后老师会过来让你运行一遍看一下效果。这时候就是最重要的时候了,你要发挥一小段演讲,现场评分,评完删除项目走人就结束了。
能运行是最重要的
能运行是最重要的
能运行是最重要的
其次是能完美的正确运行。
写的再多最后测试没完成,不能运行一点用都没有,切记切记。
我的感受
1.这个世界没有什么是绝对的,比如考题
2.鼠标巨难用,用的我手抖
重点是
无论复习的怎么样考试题目才是最重要的,考前临时背除非是原题不然就特别不明智的,尽量在考试之前清空一下脑袋迎接试题

至于考题答案,太简单了,我就不再写一遍了。
第一题类似源码:

package KT;import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;//6.Frame的使用,比如设置窗口大小,可见,创建并添加文本与按钮public class FrameTest {public static void main(String[] args) {Frame frame = new Frame();TextField textField = new TextField();Button button = new Button("确定");frame.setBounds(300,500,400,500);frame.setLayout(new FlowLayout());frame.add(button);frame.add(textField);frame.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowIconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeiconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeactivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stubSystem.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowActivated(WindowEvent e) {// TODO Auto-generated method stub}});button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubSystem.out.println(textField.getText());}});frame.setVisible(true);}}

                                                 **作废内容**
  1. 考试情况

java语言程序设计实践是在北邮考,北邮有考试指导

文档下载: https://download.csdn.net/download/grandaunt/10762461
据我估计考题应该是补充重点代码型的,至于真实情况,我考完试再来补充分享。

2. 考前复习情况
但是四道小题,一道大题一共一个半小时还是比较紧张,熟练的才好,记得带支笔,听说传闻中有画图的
如果实在不会,就运行看系统提示,或者把鼠标放在错误出,看看会不会弹出建议选择主要看书里例题,然后拿样题试着调试,需要带笔:笔是用来记第二次登录密码的,以备突然死机用去了别听老师讲话,先登录界面,输入该输入的,把该建的文件夹建了,省时间,离开别忘了删掉建立的文件,清空回收站
截图键:Alt+Prtsc

按CTRL+V键即可粘贴。
Eclipse使用问题(安装问题什么的就略过吧~)
经典代码
1.鼠标画椭圆
https://blog.csdn.net/xietansheng/article/details/55669157

2.输出文件目录
package KT;

import java.awt.Button;
import java.awt.FlowLayout;
import java.awt.Frame;
import java.awt.TextArea;
import java.awt.TextField;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.io.File;

//14.自行设计程序界面,在选定目录后,显示该目录及其子孙目录下的文件信息

public class file {
public static void main(String[] args) {new MyDirFile();
}
public static class MyDirFile{private Frame frame= new Frame();private Button button = new Button("转到");private TextField textfield = new TextField(50);private TextArea textArea= new TextArea(50,70);MyDirFile(){Init();}private void Init() {// TODO Auto-generated method stubframe.setBounds(200, 400, 500, 400);frame.setLayout(new FlowLayout());frame.add(button);frame.add(textfield);frame.add(textArea);MyEvent();frame.setVisible(true);}private void MyEvent() {// TODO Auto-generated method stubframe.addWindowListener(new WindowListener() {@Overridepublic void windowOpened(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowIconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeiconified(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowDeactivated(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowClosing(WindowEvent e) {// TODO Auto-generated method stubSystem.exit(0);}@Overridepublic void windowClosed(WindowEvent e) {// TODO Auto-generated method stub}@Overridepublic void windowActivated(WindowEvent e) {// TODO Auto-generated method stub}});button.addActionListener(new ActionListener() {@Overridepublic void actionPerformed(ActionEvent e) {// TODO Auto-generated method stubshouDir();}});textfield.addKeyListener(new KeyListener() {@Overridepublic void keyTyped(KeyEvent e) {// TODO Auto-generated method stub}@Overridepublic void keyReleased(KeyEvent e) {// TODO Auto-generated method stubif(e.getKeyCode() == e.VK_ENTER) {shouDir();	}}@Overridepublic void keyPressed(KeyEvent e) {// TODO Auto-generated method stub}});}private void shouDir() {// TODO Auto-generated method stubString dir = textfield.getText();File file = new File(dir);if(file.exists()&&file.isDirectory()) {//清空文本区域内容textArea.setText("");String[] strings = file.list();for(String str :strings) {textArea.append(str+"\n");}}textfield.setText("");}
}
}

3.连接到数据源并输出
package KT;

import java.sql.*;

//9.连接到数据源并输出
public class ODBC {
public static void main(String[] args) throws Exception {
DatabaseConnection databaseConnection = new DatabaseConnection();
}
}
//定义一个数据库连接类

class DatabaseConnection
{//创建连接对象Connection ct = null;//创建用于发生sql语句的对象PreparedStatement ps = null;//创建用于接受结果集的对象ResultSet rs = null;//构造函数public DatabaseConnection(){try {//加载驱动Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");//得到连接ct = DriverManager.getConnection("jdbc:odbc:vote","root","root");//进行crud操作//增加操作ps = ct.prepareStatement("insert into student(Sno,Sname,Ssex) values('1513220146','马云','男')");ps.executeUpdate();//删除操作ps = ct.prepareStatement("delete from student where Sname = '马云'");ps.executeUpdate();//修改操作ps = ct.prepareStatement("update student set Sname = '岳云鹏' where Sname = '鹿晗'");ps.executeUpdate();//查询操作ps = ct.prepareStatement("select * from student");//将结果输入到结果集中rs = ps.executeQuery();//循环输出while(rs.next()){String a = rs.getString(2);String b = rs.getString(3);//输出结果System.out.println(a + " " + b);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}finally{try {//关闭资源if(rs != null){rs.close();}if(ps != null){ps.close();}if(ct != null){ct.close();}} catch (Exception e2) {// TODO: handle exceptione2.printStackTrace();}}}
}

线程控制Thread sleep

package KT;import java.util.Scanner;//1.线程控制Thread  sleep的使用
public class Thread1 {public static void main(String args[]){ Thread t=new Thread(new Ss());t.start();try { Thread.sleep(2000); }catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } System.out.println("I am main!"); } public static class Ss implements Runnable{ public void run(){System.out.println(Thread.currentThread());} } }

实践指导考题答案(题目详情见考试指导):
样题一:
一、纠正程序“c1.java”的语法错误,然后回答问题(25分)

(1)纠正程序中的语法错误。
答:
(2)程序的功能是什么?如果向程序中输入数据7,程序运行的结果是什么?请把程序运行结果的贴图存储到ans.doc中。
答:
二、程序中有若干空白,请完善程序题目,并回答问题(40分)
(1)程序A21的功能是判断2~N之间哪些整数是质数(n从键盘输入)。请完善程序,并把程序运行结果的贴图存储到ans.doc中。
答:

 cc=JOptionPane.ShowInputDialog(‘请输入一个二位整数:‘);改成 cc=JOptionPane.showInputDialog("请输入一个二位整数:");n=Integer.ParseInt(cc);改成     n=Integer.parseInt(cc);System.out.println(‘运算结果是:’+ee);改成double jiech(int x){加static 变成 static double jiech(int x){

(2)程序A22的功能是单击按钮【求平方】,就能够输出文本框中输入数据的平方,请把程序补充完整,并把程序运行结果的贴图存储到ans.doc中。
答: public Button btn = new Button(“求平方”);
三:程序设计(35分)
编写数组处理程序a3.java。要求定义整型数组,并从键盘上输入10个数据,然后求出其中的最大者和所有数据的总和。
答:
样题二
一、纠正程序“c1.java”的语法错误,然后回答问题(25分)

(1)纠正程序中的语法错误。
答:
(2)程序的功能是什么?如果向程序中输入数据153,程序运行的结果是什么?向程序中输入数据128,程序的运行结果是什么?,并把程序运行结果的贴图存储到ans.doc中。
二、程序中有若干空白,请完善程序题目,并回答问题(40分)
(1)程序b21的功能是判定某一年是否闰年。请完善程序,并把程序运行结果的贴图存储到ans.doc中。
答:
(2)程序b22的功能是在监控台上每隔一秒钟显示一个字符串“Hello!”,请填空把程序补充完整,并把程序运行结果的贴图存储到ans.doc中。
答:
三:程序设计(35分)
已知:系统中有ODBC数据源xytest,其中有数据表xsb,结构为:学号,姓名,性别,生日,单位。
请编写程序b3.java,使之能够连接数据源xytest,并输出数据表xsb的所有内容。
答:
样题三:
一、纠正程序“c1.java”的语法错误,然后回答问题(25分)

(1)纠正程序中的语法错误。
答:
(2)程序的功能是什么?如果向程序中输入数据100,程序运行的结果是什么?向程序中输入数据300,程序的运行结果是什么?并把程序运行结果的贴图存储到ans.doc中。
答:
二、程序中有若干空白,请完善程序题目,并回答问题(40分)
(1)程序C21.java的目的是进行复数运算。现在需要计算复数(3+5.8i)和复数(17-6.5i)的和、差、积,请把程序补充完整(程序中所需的数据不需要键盘输入),并把程序运行结果的贴图存储到ans.doc中。
答:
(2)程序C22的功能是:输入一个姓名,程序运行后,输出“姓名Welcome you!”.例如,输入“张三Welcome you !”。请在下面横线处填入正确的方法名,使程序可以正确运行,并把程序运行结果的贴图存储到ans.doc中。
答:
三:程序设计(35分)
设计一个加法器程序c3.java。要求在窗口中有三个文本框和两个按钮。第一个按钮上的文字为“加法”,第二个按钮上的文字为“关闭”。当单击按钮“加法”时,能够把前两个文本框中的数据相加并存放在第三个文本框中。单击按钮“关闭”,则程序结束。
答:
参考资料:
第一道大题:
主要考画图:
学会这个文件夹当中的文件就差不多了。但考试只要求用一个文件。

知识点参考:
P127,第六章 6.6鼠标事件
P140,第七章 7.2绘图

第二道大题参考:
主要考运算:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
知识点参考:
P76,第四章 (9)、(10)、(11)
P104-105,例5.9

1.线程控制Thread sleep的使用

2.按钮动作的使用

3.ActionListener 和ActionPerformed

4.尤其是大小写是JAVA爱考的

5.简单的类和函数的调用关系

6.Frame的使用,比如设置窗口大小,可见,创建并添加文本与按钮

7.文本用SetText GetText

8.还有字符串与double float int 的转换

9.连接到数据源并输出

这个虽然没考,但是在范围内:

10.链接到数据库,读取并输出已在数据库的表信息

package KT;

/*鼠标画椭圆/
import java.awt.BorderLayout;
import java.awt.Button;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FileDialog;
import java.awt.FlowLayout;
import java.awt.Graphics2D;
import java.awt.GridLayout;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;import javax.imageio.ImageIO;
import javax.swing.BorderFactory;
import javax.swing.ButtonGroup;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JColorChooser;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JRootPane;
import javax.swing.JSeparator;
import javax.swing.JToggleButton;
import javax.swing.JToolBar;
import javax.swing.SwingConstants;import com.ljheee.paint.component.DrawPanel;
import com.ljheee.paint.shape.AirBrush;
import com.ljheee.paint.shape.Curve;
import com.ljheee.paint.shape.DottedRectangle;
import com.ljheee.paint.shape.Eraser;
import com.ljheee.paint.shape.Line;
import com.ljheee.paint.shape.MyPolygon;
import com.ljheee.paint.shape.Oval;
import com.ljheee.paint.shape.Pencil;import com.ljheee.paint.shape.RoundRect;
import com.ljheee.paint.shape.Shape;
import com.ljheee.paint.shape.ShapeList;
import com.ljheee.paint.shape.Word;
import com.ljheee.paint.ui.about.About;
import com.ljheee.paint.shape.Rectangle;
import javafx.scene.shape.CubicCurve;//13.编写一个GUI程序,程序允许用户在窗体上执行按下鼠标、拖动鼠标和松开鼠标的动作,在动作结束时,程序以适当的顶点坐标、长度和宽度绘制一个椭圆。
public class GUI extends JFrame{private DrawPanel drawPanel = null;//�м�Ļ���Graphics2D g = null;int x0=0,y0=0,xEnd=0,yEnd=0;int xPX = 0,yPX = 0;String commandTool = "pencil";//ѡ��ġ�����ָ�Color commandColor = Color.black;//��ǰ��ɫShape shape = null;//��ǰ����[����]��ͼ��ShapeList shapelist = new ShapeList();
Curve  curve = null;//����
MyPolygon myPolygon = null;//�����int step = 0;int curveX0,curveY0,curveXEnd,curveYEnd;int cx1,cy1,cx2,cy2;private JLabel leftInfo = new JLabel("״̬��:");private JLabel pathInfo = new JLabel("  ");private JLabel timeInfo = new JLabel("  ");public GUI() {super("PaintingTool");this.setSize(900, 700);this.setDefaultCloseOperation(EXIT_ON_CLOSE);this.setLocationRelativeTo(null);g = (Graphics2D) this.getGraphics();JPanel topJPanel = new JPanel();topJPanel.setLayout(new GridLayout(2, 1));JRootPane rootPane = new JRootPane();rootPane.setBackground(Color.gray);// center--drawingPaneldrawPanel = new DrawPanel(shapelist);drawPanel.addMouseListener(new MouseListenerImpl());drawPanel.addMouseMotionListener(new MouseMotionImpl());this.add(drawPanel);this.setVisible(true);}class MouseListenerImpl implements MouseListener{@Overridepublic void mouseClicked(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseEntered(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mouseExited(MouseEvent arg0) {// TODO Auto-generated method stub}@Overridepublic void mousePressed(MouseEvent arg0) {// TODO Auto-generated method stubx0 = arg0.getX();y0 = arg0.getY();g = (Graphics2D)drawPanel.getGraphics();if(commandTool.equals("word")){//����String input;input = JOptionPane.showInputDialog("Please input the text you want!");Word word = new Word(x0, y0, xEnd, yEnd, commandColor);word.text = input;shape = word;shape.draw(g);repaint();shapelist.addShape(shape);}if(commandTool.equals("curve")){//����if(step == 0||step == -1||curve==null){step = 1;//�����һ��������ֱ��curveX0 = arg0.getX();curveY0 = arg0.getY();} }}//		假设鼠标一直停留在A点,往下按然后放开,此时触发的是 mouseClicked 事件
//		鼠标被按下,一直不松手,不论停留在原处还是移动,此时触发的是 mousePressed 事件
//		mouseReleased  最复杂,因为它必须发生在 mousePressed 和 mouseDragged 之后:
//
//		假设鼠标在A点被按下,然后一直不松开,然后移动到 B 点, 松开,此时触发的是 mouseReleased 事件,在 mouseReleased  事件之前,一定会有 mousePressed 和mouseDragged 事件
//	@Overridepublic void mouseReleased(MouseEvent e) {xEnd = e.getX();yEnd = e.getY();g = (Graphics2D)drawPanel.getGraphics();if(commandTool.equals("air_brush")){//����ͰAirBrush airBrush = new AirBrush(x0, y0, xEnd, yEnd, commandColor);shape = airBrush;airBrush.flag = 1;shape.draw(g);repaint();shapelist.addShape(shape);return;}if(commandTool.equals("polygon")){//�����if(myPolygon == null){myPolygon = new MyPolygon(x0, y0, xEnd, yEnd, commandColor);}myPolygon.npoints++;myPolygon.xpoints[myPolygon.npoints-1] = xEnd;myPolygon.ypoints[myPolygon.npoints-1] = yEnd;shape = myPolygon;}if(commandTool.equals("curve")){//����if(step == 1){curveXEnd = e.getX();curveYEnd = e.getY();step = 2;//��һ������ͷţ�ֱ����ɡ��ڶ�����ȷ��ctrlPoint1return;} else if(step == 2){cx1 = e.getX();cy1 = e.getY();
//					curve.cubicCurve2D.ctrlx1 = e.getX();
//					curve.cubicCurve2D.ctrly1 = e.getY();step = 3;//��������ȷ��ctrlPoint2return;} else if(step == 3){
//					curve.cubicCurve2D.ctrlx2 = e.getX();
//					curve.cubicCurve2D.ctrly2 = e.getY();cx2 = e.getX();cy2 = e.getY();curve.cubicCurve2D.setCurve(curveX0, curveY0, cx1, cy1, cx2, cy2, curveXEnd, curveYEnd);shape.draw(g);repaint();shapelist.addShape(shape);step = -1;curve = null;return;}}switch (commandTool) {case "line":	//ֱ直线  shape.draw(g);
//	 	 		repaint();shapelist.addShape(shape);break;case "rect"://方块	   shape.draw(g);repaint();shapelist.addShape(shape);break;case "round_rect":	//圆角方块   shape.draw(g);repaint();shapelist.addShape(shape);break;case "dot_rect"://虚线方块	   shape.draw(g);repaint();shapelist.addShape(shape);break;case "oval":	//椭圆   shape.draw(g);repaint();shapelist.addShape(shape);break;case "pencil":	//铅笔   shape.draw(g);repaint();shapelist.addShape(shape);break;//			case "polygon":	   
//				shape.draw(g);
//				repaint();
//				shapelist.addShape(shape);
//				break;}}}/*** ����϶�* @author ljheee**/class MouseMotionImpl implements MouseMotionListener{@Overridepublic void mouseDragged(MouseEvent e) {xEnd = e.getX();yEnd = e.getY();g = (Graphics2D)drawPanel.getGraphics();//Ǧ�ʻ���Ƥ��if(commandTool.equals("pencil")||commandTool.equals("eraser")){xEnd = e.getX();yEnd = e.getY();shape = new Pencil(x0, y0, xEnd, yEnd, commandColor);if(commandTool.equals("eraser")){shape = new Eraser(x0, y0, xEnd, yEnd, Color.white);}shape.draw(g);repaint();shapelist.addShape(shape);//��������x0 = xEnd;y0 = yEnd;}switch (commandTool) {case "line":	//ֱ直线shape = new Line(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "rect":	//方块shape = new Rectangle(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "round_rect":	//圆角方块shape = new RoundRect(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "dot_rect":	//��߾���   shape = new DottedRectangle(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;case "oval":	//椭圆   shape = new Oval(x0, y0, xEnd, yEnd, commandColor);shape.draw(g);repaint();break;
//			case "curve":	//曲线
//				if(step == 1&&curve==null){
//					curve = new Curve(curveX0, curveY0, xEnd, yEnd, commandColor);
//					curve.cubicCurve2D.setCurve(curveX0, curveY0, curveX0, curveY0, xEnd, yEnd, xEnd, yEnd);
//					curve.draw(g);
//				} else if(step == 2){
//					curve.cubicCurve2D.setCurve(curveX0, curveY0, xEnd, yEnd, xEnd, yEnd, curveXEnd, curveYEnd);
//				} else if(step == 3){
//					curve.cubicCurve2D.setCurve(curveX0, curveY0, cx1, cy1, xEnd, yEnd, curveXEnd, curveYEnd);
//				}
//				
//				shape = curve;	
//				shape.draw(g);
//				repaint();
//				break;default:break;}xPX = e.getX();yPX = e.getY();pathInfo.setText("  "+xPX+","+yPX);//״̬����ʾ�����������Ϣ��}@Overridepublic void mouseMoved(MouseEvent e) {xPX = e.getX();yPX = e.getY();pathInfo.setText("  "+xPX+","+yPX);//״̬����ʾ�����������Ϣ��}}public static void main(String[] args) {new GUI();}}

http://www.taodudu.cc/news/show-1944682.html

相关文章:

  • 【physx/wasm】在physx中添加自定义接口并重新编译wasm
  • excel---常用操作
  • Lora训练Windows[笔记]
  • linux基础指令讲解(ls、pwd、cd、touch、mkdir)
  • InnoDB 事务处理机制
  • 启明云端ESP32 C3 模组WT32C3通过 MQTT 连接 AWS
  • python语言程序设计实践教程答案实验五_Python程序设计实验五
  • C#程序设计实践教程pdf
  • python语言程序设计实践教程答案上海交通大学_计算机二级教程 Python语言程序设计 第5章基本数据类型...
  • python语言程序设计实践教程答案上海交通大学_计算机二级教程 Python语言程序设计 第4章程序的控制结构...
  • python语言程序设计实践教程上海交通大学出版社的答案_高等教育出版社出版社c语言程序设计实践教程习题参考答案...
  • python实验教程_python语言程序设计实践教程实验七
  • python语言程序设计实践教程陈东_《Python语言程序设计实践教程》陈东著【摘要 书评 在线阅读】-苏宁易购图书...
  • c语言程序设计实践教程课后题,《C语言程序设计实践教程》答案-完整版.doc
  • python语言程序设计实践教程实验八答案_Python程序设计实践教程
  • 《C++程序设计实践》实验1
  • 程序设计实践——第二章
  • 【C++程序设计实践】实验十一
  • 程序设计综合实践
  • C程序设计实践——实验指导
  • nvivo三天写论文!社会网络分析实战
  • 语义分析
  • NLPIR系统的中文语义分析模式介绍
  • 语义结构:依存分析
  • 《图像语义分析》学习笔记 (一)
  • 计算机语言语法语义,程序设计语言语义
  • 自然语言处理 4.语义分析
  • 自然语言处理(NLP)语义分析:“词汇级”语义分析【词义消歧、词义表示和学习】、“句子级”语义分析【浅层语义分析(语义角色标注)、深层语义分析】
  • 语义分析的一些方法
  • 语义分析的方法简述之文本基本处理
  • 《图像语义分析》学习笔记 (二)
  • 语义分析的一些方法(一)
  • python 英文语义分析_python语意分析
  • 潜在语义分析(TF-IDF、LSA)
  • NLPIR的语义分析系统
  • 云WAF之语义分析引擎