4.16学习总结

MySQL数据库学习(一)

一.MySQL数据库的基本知识

(一).数据库

概念:数据仓库,软件,安装在操作系统之上

作用:存储数据,管理数据

(二).数据库的分类

关系型数据库:SQL(Structured Query Language)

  • MySQL、Oracle、Sql Server、DB2、SQLlite
  • 通过表和表之间,行和列之间的关系进行数据的存储
  • 通过外键关联来建立表与表之间的关系

非关系型数据库:NoSQL(Not Only SQL)

  • Redis、MongoDB
  • 指数据以对象的形式存储在数据库中,而对象之间的关系通过每个对象自身的属性来决定

(三).数据库三层结构

1.所有安装Mysql数据库,就是在主机安装一个数据库管理系统(DBMS),这个管理程序可以管理多个数据库。DBMS(database manage system)

2.一个数据库中可以创建多个表,以保存数据(信息)。

3.数据库管理系统(DBMS)、数据库、表三者之间的关系。

二.SQL语句

(一).SQL语句概述

Structure Query Language(结构化查询语言)简称SQL,它被美国国家标准局(ANSI)确定为关系型数据库语言的美国标准,后被国际化标准组织(ISO)采纳为关系数据库语言的国际标准。数据库管理系统可以通过SQL管理数据库;定义和操作数据,维护数据的完整性和安全性.    原文链接:https://blog.csdn.net/weixin_45851945/article/details/114287877

(二).SQL语句的分类

1、DDL(Data Definition Language) 数据定义语言,用来操作数据库、表、列等; 常用语句:CREATE、 ALTER、DROP
2、DML(Data Manipulation Language) 数据操作语言,用来操作数据库中表里的数据;常用语句:INSERT、 UPDATE、 DELETE
3、DCL(Data Control Language) 数据控制语言,用来操作访问权限和安全级别; 常用语句:GRANT、DENY
4、DQL(Data Query Language) 数据查询语言,用来查询数据 常用语句:SELECT

(三).SQL语句的优点

1、简单易学,具有很强的操作性
2、绝大多数重要的数据库管理系统均支持SQL
3、高度非过程化;用SQL操作数据库时大部分的工作由DBMS自动完成

 三.数据库操作

1.数据库操作

 表操作

 2.数据库的字段属性

1.UnSigned

  • 无符号的
  • 声明了该列不能为负数

2.ZEROFILL

  • 0填充的
  • 不足位数的用0来填充 , 如int(3),5则为005

3.Auto_InCrement

  • 通常理解为自增,自动在上一条记录的基础上默认+1

  • 通常用来设计唯一的主键,必须是整数类型

  • 可定义起始值和步长

4.NULL 和 NOT NULL

  • 默认为NULL , 即没有插入该列的数值
  • 如果设置为NOT NULL , 则该列必须有值

5.DEFAULT

  • 默认的
  • 用于设置默认值
  • 例如,性别字段,默认为"男" , 否则为 “女” ; 若无指定该列的值 , 则默认值为"男"的值

 3.数据库列类型

1.数值类型

2.字符串类型

 3.时间类型

二.网络编程练习

一.要求:

要求在两个项目中实现一个简单的服务端及客户端要求服务端能够同时连接多个客户端且客户端与服务端之间能够持续多次通信

二.设计思路:

分别为客户端和服务端创建多个线程,客户端主线程用来连接服务端,副线程用来对服务端的信息进行监听,服务端,主线程用来监听客户端,保持客户端连接,副线程用于接受发消息.同时,创建多个客户端时,我们应将多个客户端的socket对象放入集合中.

三.代码实现

服务端:

public class Server {
    public static void main(String[] args) {
        List<Socket> socketList=new ArrayList<>();
        //开启线程接收客户端连接
        new Thread(new AcceptSocket(socketList)).start();
        //向所有用户发送消息
        while(true) {
            Scanner scanner=new Scanner(System.in);
            String sendinfo=scanner.nextLine();
            //遍历集合向每一个客户端发送消息
            socketList.forEach(socket -> {
                try {
                    PrintWriter printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));
                    printWriter.println(sendinfo);
                    printWriter.flush();
                } catch (SocketException e) {
                    System.out.println(1);
                } catch (IOException e) {
                    e.printStackTrace();
                }
            });
        }
    }
}

//等待客户端连接,主线程
class AcceptSocket implements Runnable{

    List<Socket> socketlist;

    //构造函数
    public AcceptSocket(List<Socket> socketList){
        this.socketlist=socketList;
    }

    //重写run方法
    @Override
    public void run() {
        ServerSocket serverSocket=null;
        try {
            //创建对象并绑定端口
            serverSocket=new ServerSocket(9000);
            System.out.println("正在监听客户端连接");
            //循环接收客户端的请求
            while(true)
            {
                Socket socket=serverSocket.accept();
                //将接受到后加入到socketList
                socketlist.add(socket);
                //开启处理客户端线程,开启分线程处理客户端消息
                new Thread(new getSocket(socket,socketlist)).start();
            }
        } catch (IOException e) {
            throw new RuntimeException(e);
        }finally {
            //释放资源
            if(null!=serverSocket){
                try {
                    serverSocket.close();
                } catch (IOException e) {
                    throw new RuntimeException(e);
                }
            }
        }
    }
}

//出来客户端的信息,分线程
class getSocket implements Runnable {

    Socket socket=null;
    List<Socket> socketList;

    //构造函数
    public getSocket(Socket socket,List<Socket> socketList){
        this.socket=socket;
        this.socketList=socketList;
    }

    @Override
    public void run() {
        BufferedReader bufferedReader=null;
        try {
            //缓冲流,接收信息
            bufferedReader=new BufferedReader(new InputStreamReader(socket.getInputStream()));
            System.out.println("已连接,准备读取客户端:"+socket.getLocalAddress().toString()+":"+socket.getPort());
            while(true)
            {
                String clientinfo=bufferedReader.readLine();
                //打印信息
                System.out.println(socket.getLocalAddress().toString().substring(1) + ":" + socket.getPort() + "发送的消息是:" + clientinfo);
            }

        } catch (SocketException e) {
            System.out.println(socket.getLocalAddress().toString().substring(1) + ":" + socket.getPort() + "断开连接");
            socketList.remove(socket);
        } catch (IOException e){
            e.printStackTrace();
        } finally {
            try {
                if (null!=bufferedReader){
                    bufferedReader.close();
                }
                if(null!=socket){
                    socket.close();
                }
            }  catch (IOException e){
                e.printStackTrace();
            }
        }
    }
}

客户端:

//客户端,连接服务器
public class Client {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        Socket socket = null;
        PrintWriter printWriter = null;
        try {
            socket = new Socket("localhost", 9000);
            printWriter = new PrintWriter(new OutputStreamWriter(socket.getOutputStream()));

            //开启线程接收服务端的消息
            new Thread(new AcceptServer(socket)).start();
            System.out.println("可以给服务器端发送数据了");
            while (true) {
                // 给服务端发送消息
                String sendInfo = scanner.nextLine();
                printWriter.println(sendInfo);
                printWriter.flush();
            }

        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接
            try {
                if (null != socket) {
                    socket.close();
                }
                if (null != printWriter) {
                    printWriter.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }

        }
    }
}

//接收服务器的信息,分线程
class AcceptServer implements Runnable {

    Socket socket;

    public AcceptServer(Socket socket) {
        this.socket = socket;
    }

    @Override
    public void run() {
        BufferedReader bufferedReader = null;
        try {
            bufferedReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            while (true) {
                String serverInfo = bufferedReader.readLine();
                System.out.println("服务器的消息为:" + serverInfo);
            }
        } catch (SocketException e) {
            System.out.println("服务器异常关闭");
            // 退出
            System.exit(0);
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            // 关闭连接
            try {
                if (null != bufferedReader) {
                    bufferedReader.close();
                }
                if (null != socket) {
                    socket.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/550891.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

创建k8s deploy yaml文件的imagePullSecrets语句

镜像仓库是harbor kubectl create secret docker-registry key --docker-server192.168.0.190 --docker-usernameadmin --docker-passwordHarbor12345

Fluke ADPT连接器(隔离版)----发布1

代替手工记录、记录后在整理的麻烦&#xff0c;轻点鼠标&#xff08;单次采集、自动时间间隔采集自由选择&#xff09;即可完成&#xff0c;测试数据导出图片、导出数据到EXCEL文件随意选择&#xff1b; 所需设备&#xff1a; 1、Fluke ADPT连接器&#xff1b;内附链接 主要…

docker网路和主机通讯问题

#注 1&#xff0c;安装docker和启动容器服务的时候如果防火墙处于开启状态&#xff0c;那么重启docker里面的容器的时候必须开启防火墙&#xff0c;否则会出现iptable错误&#xff1b; 2&#xff0c;linux开启防火墙会导致主机和docker网络之间单向通讯&#xff0c;主机可以访…

Ubuntu 部署ChatGLM3大语言模型

Ubuntu 部署ChatGLM3大语言模型 ChatGLM3 是智谱AI和清华大学 KEG 实验室联合发布的对话预训练模型。 源码&#xff1a;https://github.com/THUDM/ChatGLM3 部署步骤 1.服务器配置 Ubuntu 20.04 8核(vCPU) 32GiB 5Mbps GPU NVIDIA T4 16GB 硬盘 100GiB CUDA 版本 12.2.2/…

专业143总分428学硕第一东南大学920专业基础综合考研经验电子信息与通信工程,海洋工程,电路系统,鲁汶,真题,大纲,参考书。

24考研基本已经尘埃落定&#xff0c;总归要为回忆留下点什么。回想起这一年的备考之路&#xff0c;至今仍觉得时间过得很快&#xff0c;有些感到恍惚&#xff0c;似乎不能接受。但是仔细思考一下&#xff0c;这一年经历了很多&#xff0c;走过很多弯路也取得一些阶段性的小成功…

Hive-Sql复杂面试题

参考链接&#xff1a;hive sql面试题及答案 - 知乎 有哪些好的题目都可以给我哦 我来汇总到一起 1、编写sql实现每个用户截止到每月为止的最大单月访问次数和累计到该月的总访问次数 数据&#xff1a; userid,month,visits A,2015-01,5 A,2015-01,15 B,2015-01,5 A,2015-01,…

独角数卡发卡系统源码hyper模版首页产品列表添加库存数量显示的方法

默认的独角数卡hyper模版商品列表只显示标题和价格&#xff0c;没有显示库存数量 如图&#xff1a; 对于买家来说&#xff0c;无法通过首页快捷的知道某事产品的库存数量 故此在此列出显示库存数量的修改方法。 首先找到根目录下文件/resources/views/hyper/static_pages/ho…

Servlet-Filter实现反爬虫

以前用DotNetCore实现过反爬虫功能。在tomcat里面可以利用Servlet的Filter类实现请求的控制来达到反爬虫功能&#xff0c;进而增强JRT的web安全。 实现黑名单过滤器&#xff0c;对在黑名单列表的IP的所有请求都跳转到警告页面&#xff0c;业务各种请求自行定义加入黑名单 /* …

Vanna-ai 大模型开源项目 基于RAG的TextToSql框架 安装和使用教程

github项目地址&#xff1a;vanna-ai/vanna: &#x1f916; 与 SQL 数据库聊天&#x1f4ca;。通过 LLMs使用RAG进行准确的TextToSQL的生成工作 &#x1f504; 。 Vanna 是 MIT 许可的开源 Python RAG&#xff08;检索增强生成&#xff09;框架&#xff0c;用于 SQL 生成和相关…

逻辑回归模型-逻辑回归算法原理-逻辑回归代码与实现-笔记整合

通过一段时间的学习&#xff0c;总算把逻辑回归模型弄清楚了 《老饼讲解-机器学习》www.bbbdata.com中是讲得最清晰的&#xff0c;结合其它资料&#xff0c;整理一个完整的笔记如下&#xff0c;希望能帮助像我这样入门的新人&#xff0c;快速理解逻辑回归算法原理和逻辑回归实…

【解决去除springboot-内嵌tomcat的异常信息显示】去掉版本号和异常信息

调用这个&#xff0c;能复现tomcat的报错 http://localhost:8182/defaultroot/DownloadServlet?modeType2&pathhtml&FileName…\login.jsp&name123&fiewviewdownload2&cdinline&downloadAll2 springboot项目如何隐藏&#xff1f; springboot内嵌了to…

人类连接的桥梁:探索Facebook如何连接世界

随着技术的发展和全球化的进程&#xff0c;我们的世界正在变得越来越紧密相连。在这个过程中&#xff0c;社交媒体平台扮演了一个至关重要的角色&#xff0c;为人们提供了一个跨越国界、文化和语言的交流平台。其中&#xff0c;Facebook作为全球最大的社交媒体平台&#xff0c;…

学习BOM

目录 前言: 1. BOM组成&#xff1a; 1.1Window 对象&#xff1a; 1.1Location 对象&#xff1a; 1.2Navigator 对象&#xff1a; 1.2.1 navigator 对象包含了关于浏览器的信息包括&#xff1a; 1.3History 对象&#xff1a; 1.4常用的history的方法和属性: 1.4Document…

手写spring IOC底层源码来模拟spring如何利用多级缓存解决循环依赖的问题

在文章开始之前&#xff0c;先来看一张spring IOC加载过程的脑图吧 Spring IOC的加载过程 首先,当我们去new了一个applicationContext,它底层呢就会把我们配置的bean进行扫描,然后创建成一个一个的beanDefinition放在我们的beanDefinitionMap中,此时就有了一切创造bean的原料信…

智慧园区解决方案一站式资料大全:标准规范顶层设计指南、供应商整体解决方案及售前PPT、标准白皮书、全国前50智慧园区集成商方案等全套600份,一次性打包下载

关键词&#xff1a;智慧园区解决方案&#xff0c;智慧园区整体解决方案&#xff0c;智慧园区建设总体方案设计&#xff0c;智慧园区综合管理系统&#xff0c;智慧产业园区解决方案&#xff0c;智慧产业园区规划方案&#xff0c;智慧园区建设规划方案&#xff0c;智慧工业园区建…

【数据结构1-基本概念和术语】

这里写自定义目录标题 0.数据&#xff0c;数据元素&#xff0c;数据项&#xff0c;数据对项&#xff0c;数据结构&#xff0c;逻辑结构&#xff0c;存储结构1.结构1.1逻辑结构1.2存储结构1.2.1 顺序结构1.2.2链式结构 1.3数据结构1.3.1基本数据类型1.3.2抽象数据类型1.3.2.1一个…

基于ssm幼儿资源互助共享平台的设计论文

目 录 摘 要 I Abstract II 第1章 前 言 2 1.1 研究背景 3 1.2 研究现状 3 1.3 系统开发目标 3 第2章 系统开发环境 5 2.1 SSM框架 5 2.2 JAVA简介 6 2.3 ECLIPSE 开发环境 7 2.4 Tomcat服务器 7 2.5 MySQL数据库 7 第3章 需求分析 9 3.1 需求分析 9 3.2 系统可行性分析 9 3.3…

ICV:《中美量子产业融资比较分析》

近日&#xff0c;全球前沿科技咨询公司ICV发布了A Comparative Analysis of Quantum Industry Financing in the U.S and China&#xff08;美国和中国量子产业融资比较分析&#xff09;报告。该报告旨在对中美两国在量子技术领域的投融资情况进行比较分析&#xff0c;探讨其差…

服务器数据恢复—xfs文件系统节点、目录项丢失的数据恢复案例

服务器数据恢复环境&#xff1a; EMC某型号存储&#xff0c;该存储内有一组由12块磁盘组建的raid5阵列&#xff0c;划分了两个lun。 服务器故障&#xff1a; 管理员为服务器重装操作系统后&#xff0c;发现服务器的磁盘分区发生改变&#xff0c;原来的sdc3分区丢失。由于该分区…

目标检测算法——YOLOV9——算法详解

一、主要贡献 深度网络输入数据在逐层进行特征提取和空间变换时&#xff0c;会丢失大量的信息。针对 信息丢失问题&#xff0c;研究问题如下&#xff1a; 1&#xff09;从可逆功能的角度对现有深度神经网络架构进行了理论分析&#xff0c;解释了许多过去难以解释的现象&#xf…