Other

MySql中索引的一些知识

概述 数据库的索引常见的有B树索引、B+树索引、哈希索引,接下来我们队B树索引和B+树索引做一些分析 B树索引 BTree结构 BTree又叫做多路平衡搜索树,一棵M叉BTree特性如下: 树中每个节点最多包含m个孩子 除根节点与叶子结点外,每个节点至少有[ceil(m/2)]个孩子 若根节点不是叶子结点,则至少你有两个孩子 所有的叶子结点都在同一层 每个非叶子节点由n个key和n+1个指针组成,其中[ceil(m/2)-1]<=n<=m-1 以5叉BTree为例,key的数量:公式推导[ceil(m/2)-1]<=n<=m-1,所以2<=n<=4,当n>4时,中间节点向上分裂到父节点,两边节点也分裂成两个节点。 B+Tree结构 B+Tree索引是BTree索引的变种,B+Tree与BTree的区别为: n叉B+Tree最多包含n个key,而BTree最多包含n-1个key B+Tree的叶子结点保存所有的key信息,依据key大小顺序排列 所有的非叶子节点都可以看做是key的索引部分。

nginx + nginx-rtmp-module搭建直播流服务器实现推流实时直播功能

业务需求 最近公司在做养老相关的业务,现在需要子女从小程序端对家里的老人通过家庭终端交互屏进行实时看护。 解决方案 第三方的一些现成的服务:腾讯音视频通话、直播功能; 阿里的音视频通信;两者都挺好的,但是需要收费因此放弃决定自己搭建一套直播流服务; 先看效果(自己服务器配置低有延迟、放到公司服务器上很流畅、清楚) 使用工具 Nginx、Nginx-Rtmp-Module 下载地址 Nginx:https://nginx.org/en/download.html Nginx-Rtmp-Module:https://github.com/arut/nginx-rtmp-module 软件安装 1、下载Nginx wget https://nginx.org/download/nginx-1.21.6.tar.gz 2、将压缩包移到需要的安装目录下 mv nginx-1.21.6.tar.gz /usr/local 3、下载Nginx-Rtmp-Module git clone https://github.com/arut/nginx-rtmp-module.git 4、将文件移到需要安装目录下 mv nginx-rtmp-module /usr/local 5、进入目录 cd /usr/local 6、解压Nginx压缩包 tar -zxvf nginx-1.21.6.tar.gz 7、进入Nginx目录 cd nginx-1.21.6 8、配置 ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module 9、安装 make && make install 10、配置 nginx.conf 文件(/usr/local/nginx/conf下) #user nobody; # multiple workers works ! worker_processes 2; #pid logs/nginx.pid; events { worker_connections 8192; } rtmp { server { listen 1935; chunk_size 4000; application live { live on; record all; record_path /tmp/av; record_max_size 1K; record_unique on; allow publish all; deny publish all; allow play all; } } } http { include mime.

20220427-day47:将csv文件的内容录入到MySQL数据库

import datetimeimport pymysqldef insert_db(multi_row_list): # 连接指定数据 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', passwd='root123', charset=utf8, db=day25db) cursor = conn.cursor() # 单独增加数据 sql = 'insert into news(nid,title,url) values(%s,%s,%s);' cursor.executemany(sql, multi_row_list) conn.commit() # 关闭数据库连接 cursor.close() conn.close()def run(): with open('data.csv', mode='rt', encoding='utf-8') as file_object: # 批量在数据库中插入,每次最多插入10条 part_list = [] for line in file_object: nid, others = line.strip().split(,, maxsplit=1) title, url = others.rsplit(',', maxsplit=1) part_list.append([nid, title, url]) if len(part_list) == 10: insert_db(part_list) part_list.clear() if part_list: insert_db(part_list)if __name__ == '__main__': run()

C#中的深度学习(一):使用OpenCV识别硬币

https://www.cnblogs.com/hhhnicvscs/p/14167449.html  在本系列文章中,我们将使用深度神经网络(DNN)来执行硬币识别。具体来说,我们将训练一个DNN识别图像中的硬币。 在本文中,我们将描述一个OpenCV应用程序,它将检测图像中的硬币。硬币检测是硬币完整识别之前的一个常见阶段。它包括从给定图像中检测和提取硬币。           本系列附带的代码将使用Keras在C#中实现。在本系列的最后一篇文章中,我们将简要地使用ML.NET。在众多选择中,为什么要使用Keras.NET呢?Keras.NET 非常容易学习,因为它基本上是从Python编写的经典TensorFlow到C#的直接映射。对于不熟悉机器学习的读者来说,这比用其他方法创建示例要容易得多。 硬币检测过程分为三个阶段: 转换图像到灰度。颜色增加了检测任务的复杂性,而且在很多情况下,它们不能传递任何可以从图像亮度中获取的相关信息。 应用高斯模糊。因为硬币通常包含一个内圆,我们应用这个变换来模糊图像。这确保了任何内圆被下一步中的操作忽略,所以我们的算法不会意外地认为它们是一个单独的硬币。 应用霍夫变换。这是为了检测圆形。 首先,让我们在Visual Studio Community 2019中创建一个.net Framework 4.7.2控制台应用程序。我们将把我们的解决方案和项目命名为“CoinRecognitionExample”,并在其中创建一个Detection文件夹,创建一个CoinDetector类。 我们将使用OpenCVSharp,所以我们可以继续在Visual Studio中从Nuget包管理器安装依赖项。要做到这一点,请点击Tools > Nuget Package Manager. 我们可以看到需要安装OpenCVSharp的依赖项。 具体的实现发生在CoinDetector类中: 1 public class CoinDetector 2 { 3 private Mat _image; 4 private Mat _originalImage; 5 private string _pathToFile; 6 7 public CoinDetector(string pathToFile) 8 { 9 _pathToFile = pathToFile; 10 } 11 12 public void ImagePreprocessing() 13 { 14 _image = new Mat(_pathToFile, ImreadModes.

前端基础之JavaScript

目录JavaScript简介JavaScript与Java的关系JavaScript简称JS的缺陷JavaScript与ECMAScript常用版本变量与注释注释语法结束符号变量声明常量声明数据类型数值类型字符类型布尔类型对象数组 JavaScript简介 JavaScript与Java的关系 JavaScript与Java之间没有关系,之所以取名javascript主要是蹭当时Java的热度 JavaScript简称 JavaScript简称JS,也是一门前端的编程语言。前端由于非常受制于后端,所以有一些人异想天开想要通过js来编写后端代码一统江湖,由此开发了一个叫nodejs的工具:支持js跑在后端服务器上。 JS的缺陷 JS最初由一个程序员花了七天时间开发的里面存在很多bug,为了解决这些bug一直在编写相应的补丁,结果补丁本身又有bug。最后导致了js中有很多不符合逻辑的地方。 JavaScript与ECMAScript JavaScript原先由一家公司开发,希望其他公司都使用,最后为了避免商标问题改名 常用版本 ECMA5 ECMA6 变量与注释 注释语法 // 单行注释 /多行注释/ 结束符号 ;分号结束 例如: console.log('hello world'); 变量声明 在js中定义变量需要使用关键字声明 var var name = 'jeyce' let let name = 'jeyce' var声明都是全局变量,let可声明局部变量 常量声明 const pi = 3.141592653 数据类型 数值类型 Number NaN:属于数值类型 意思是'不是一个数字'(not a number) parseInt('abc') 不报错返回NaN parseFloat('abc') 不报错返回NaN 字符类型 String 默认只能是单引号和双引号 var name1 = 'jeyce' var name2 = jeyce 格式化字符串小顿号 var name3 = jeyce

ubuntu20.04时区设置为上海

将系统时间设置为时区为上海,24小时制方便查看日志,cron保证集群时间同步。 apt install chrony -y systemctl status chrony systemctl enable --now chrony find / -name Shanghai ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime echo LC_TIME=en_DK.UTF-8 >> /etc/default/locale apt install ntpdate -y ntpdate time1.aliyun.com echo */5 * * * * ntpdate time1.aliyun.com &> /dev/null && hwclock -w >> /var/spool/cron/crontabs/root reboot 个人网站:https://cxupup.com

MySQL_查询汇总(一)

一、MySQL常用命令 完整看完就能掌握MySQL中大部分的查询问题了 -- 查看所有数据库 show databases; -- 选择使用哪个数据库 use <数据库名>; -- 创建数据库 create database <数据库名>; -- 查看所有数据表。(前提是要先选择使用哪个数据库) show tables; -- 查看表结构 desc <表名>; -- 导入数据(*.sql文件)注意路径中不要有中文 source <.sql文件路径> -- 查看MySQL版本号 select version(); -- 查看正在使用的数据库。 select database(); -- 中止sql语句的输入 \c -- 退出MySQL exit; 二、SQL分类 DQL:数据库查询语言 凡是带有select关键字的都是查询语句。 select 查 DML:数据库操作语言 凡是对表当中的数据进行增删改的都是DML。 insert 增 delete 删 update 改 DDL:数据定义语言 凡是带有create、drop、alter的都是DDL。DDL主要操作的是表的结构,不是表中的数据。 create 新建 drop 删除 alter 修改 TCL:事务控制语言 事务提交:commit 事务回滚:rollback DCL:数据控制语言 授权:grant 撤销权限:revoke 三、查询语句 1.

CentOS操作系统上网卡不见了,解决办法!

Centos操作系统,远程连不上Linux 操作系统,执行 ifconfig 发现网卡不见了 解决办法: 按顺序执行以下命令 都是在root的权限下 systemctl stop NetworkManager systemctl disable NetworkManager systemctl start network.service 最后重启网卡 重启网卡 service network restart 查看网卡 ifconfig 消失的网卡出现了,一切恢复正常

Java基础14

break continue break在任何循环语句的主题部分,均可用break控制循环的流程,break用于强行退出循环,不执行循环中剩余的语句.(break语句也在switch语句中使用) continue语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定 关于goto关键字 goto关键字很早就在程序设计语言中出现,尽管goto仍是Java的一个保留字,但并未在语言中正式得到使用:Java没有goto,然而,在break和continue这两个关键字的身上,我们仍然能看到一些goto的影子---带标签的break和continue. ​标签是指后面跟一个冒号的标识符,例如 label: 对Java来说唯一用到标签的地方是在循环语句之前,而在循环之前设置标签的唯一理由是:我们希望在其中嵌套另一个循环,由于break和continue关键字通常只中断当前循环,但若随同标签使用,他们就会中断到存在标签的地方  break在任何循环语句的主体部分,均可用break控制循环的流程 break用于强行退出循环,不执行循环中剩余的语句,(break语句也在switch语句中使用) continue 语句用在循环语句体中,用于终止某次循环过程,即跳过循环体中尚未执行的语句,接着进行下一次是否执行循环的判定    

celery介绍、架构、快速使用、包结构,celery执行异步、延迟、定时任务,django中使用celery,定时更新首页轮播图效果实现,数据加入redis缓存的坑及解决

今日内容概要 celery介绍,架构 celery 快速使用 celery包结构 celery执行异步任务 celery执行延迟任务 celery执行定时任务 django中使用celery 定时更新轮播图接口 内容详细 1、celery介绍,架构 # celery: 分布式(放在多台机器)的 异步任务 框架 Celery是一个简单、灵活且可靠的,处理大量消息的分布式系统 Celery is a project with minimal funding, so we don’t support Microsoft Windows. Please don’t open any issues related to that platform. # celery:能做什么事,解决什么问题? 异步任务---》项目中同步的操作,可以通过celery把它做成异步 延迟任务---》等一会再执行任务 定时任务---》每隔多长时间干什么事 如果你的项目仅仅想做定时任务,没有必要使用celery,使用apscheduler -https://www.cnblogs.com/xiao-xue-di/p/14081790.html # 大白话理解celery 1)可以不依赖任何服务器,通过自身命令,启动服务 2)celery服务为为其他项目服务提供异步解决任务需求的 注:会有两个服务同时运行,一个是项目服务(django),一个是celery服务,项目服务将需要异步处理的任务交给celery服务,celery就会在需要时异步完成项目的需求 人是一个独立运行的服务 | 医院也是一个独立运行的服务 正常情况下,人可以完成所有健康情况的动作,不需要医院的参与;但当人生病时,就会被医院接收,解决人生病问题 人生病的处理方案交给医院来解决,所有人不生病时,医院独立运行,人生病时,医院就来解决人生病的需求 # 中间件:不是django中间件 中间件概念非常大 数据库中间件:应用程序和数据之间有一个东西 服务器中间件:web服务和浏览器之间有个东西:nginx 消息队列中间件:程序和程序之间:redis,rabbitmq # celery架构图 broker:任务中间件,消息队列中间件,存储任务,celery本身不提供,需要借助第三方:redis,rabbitmq.. worker:任务执行单元,真正指向任务的进程,celery提供的 backend:结果存储,任务执行结果存在某个地方,借助于第三方:redis 2、快速使用 # 安装: pip install celery ##### 第一步:写一个py文件,celery_task.