https://blog.csdn.net/x_r_su/article/details/52252156
相信对绝大部分人而言,MP4视频格式再熟悉不过了。它作为目前一种非常流行的流媒体视频格式,凭借其良好的兼容性而备受用户们的青睐。尽管如此,有时候它也会给用户们带来不便。比如说:当您想在便携MP3播放器上播放MP4格式的视频时,会发现该视频文件无法兼容,除非我们能将其转换为大多数MP3播放器支持的格式。
1、首先我们应该去百度搜索迅捷视频转换器,或者直接去官网下载这款软件。这款视频转换器软件不仅可以满足视频格式转换视频格式,还可以视频格式转换音频格式哦!
2、、软件安装之后就直接打开,然后选择视频转换点击进入其中,然后就要点击软件上面的添加文件按钮把已经下载好的MP4视频文件导入到软件里面。当然也可以使用文件拖拽的方法进行快速导入文件,也能轻松实现。
3、然后就是选择设置转换输出文件的格式了。点击输出格式后方的倒三角,然后点击弹出框上方的音频选项,再选择下方的MP3格式,品质直接选择同原文件就可以了。
4、然后就需要设置输出文件mp3视频的保存位置了。在软件中点击更改路径然后选择一个地址就能设置保存位置了。或者可以把需要保存的地址复制下来,然后粘贴到地址框中然后按回车键也能直接修改。
5、然后就是转换文件格式了。点击软件中的全部转换,然后再等待软件转换到100%就肯定转换完成了。然后点击打开按钮就可以直接到达保存视频的位置了。
这款软件的功能不仅限于此,有很多功能可以使用的哦!感兴趣或者有需要的小伙伴可以试一下哦!
题目描述 编程模拟实现利用LRU(最近最久未使用)替换算法的缓存.
题目分析 LRU算法: 即最近最久未使用算法.
假设最上方为最近使用的元素: 3 4 5 4 -> get(4) -> 3 -> set(5) -> 4 2 2 3 数据结构选取HashMap, 双链表.
HashMap: 记录 键值对:<key, Node<key, value>>.
链表: 记录Node<key, value>
这里使用HashMap, 可以将查找的时间复杂度降低为O(1).
代码 package cn.geek51.nowcoder.class01; /** * 最近最久未使用算法(LRU)实现 * HashMap + 双向链表 */ import java.util.ArrayList; import java.util.HashMap; import java.util.List; class Node<K, V> { public Node<K, V> last; public Node<K, V> next; public K key; public V value; public Node(K key, V value) { this.
我们在日常工作学习中,经常会遇到各类文件格式转换的问题,其实方法也是非常多的。
如果在办公中,需要让你把PDF文件转换为Word文档,大家都会怎么做呢?
今天就来教大家3种方法,如何把PDF转换为Word,有兴趣的一起来学习吧。
一、直接复制粘贴 最直截了当的方法就是复制粘贴,打开一份PDF文件,拖动鼠标选中内容,然后右击选择【复制】,最后打开Word,直接将内容粘贴进去就可以啦。
二、选择打开方式 有时候“Ctrl+C/V”确实可以解决很多事,但如果PDF文件中存在图表,那么就无法复制了,我们还可以换一种打开方式。
1、先将PDF文件放置桌面,随后再新建一个Word文档,打开空白的文档,点击【文件】-【打开】-【浏览】。
2、接着将打开电脑文件夹窗口,在窗口的左下角,将文件类型设置为【PDF Files(*.pdf)】,然后在桌面中找到PDF文件,鼠标双击。
3、最后这个PDF文件中的图表内容,就成功添加到Word文档中了,别忘了按下快捷键【Ctrl+S】,保存这份Word。
文章目录 配置架包1. 使用maven的方式在pow文件里导入需要的架包2. 在plugins中配置tomcat插件 配置XML文件- 新建bean.xml文件,并导入所需的头文件- 配置扫包- 配置连接池- 配置工厂- 配置mybatis的mapper的类 所在的包- 配置spring的事务管理- 开启事务管理的注解- 开启 springmvc的注解- 配置springmvc的视图解析器 List item配置web文件- 配置的springmvc的前端控制器,此处需要导入bean.xml文件- 配置字符集过滤器- 配置支持REST风格 Dao层的实现Service层的实现Controller层的实现前端界面的实现完成展示 配置架包 1. 使用maven的方式在pow文件里导入需要的架包 mysql-connector-java:连接数据库
mybatis:使用MyBatis所需的主要架包
mybatis-spring:使MyBatis与Spring连接所需的架包
spring-context:使用Spring所需要的主要架包
aspectjweaver:Spring面向切面所需要的架包
spring-tx:Spring事务管理所需要的架包
spring-webmvc:SpringMVC所需要的主要架包
javax.servlet-api:使用Servlet,但是只在编译过程中使用,运行中要使用tomcat,所以需要配置<scope>provided</scope>
<dependencies> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.5.3</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> <version>5.1.37</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> <version>1.8.13</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-tx</artifactId> <version>5.2.1.RELEASE</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>5.2.1.RELEASE</version> </dependency> <dependency> <groupId>javax.
相信大家都误删过手机里面的文件,那么如果你误删过手机里面的Excel文档吗?如果误删过的话,那么你就要知道以下的恢复方法了,每一个都非常好用,强大到不可思议。
一、常用恢复 1.回收站还原 首先我们可以打开电脑的回收站,然后点击右键,就可以选择【还原】按钮,将误删的文档进行恢复了,可以说是特别好用了呢。
2.手机或电脑备份 如果你想通过备份来恢复也是可以的,我们只要直接选择手机的【云空间】然后就可以找到【云备份】,就能将之前误删的东西找出来了。
WPS也自带了【备份中心】,实时备份你的Excel文件,各位误删过相关内容的小伙伴也可以看看能不能找到自己误删的Excel文件哦~
二、手机数据恢复大师 1.Excel恢复 如果尝试了以上方法还不能恢复的话,那么你也可以使用手机数据恢复大师,不仅可以进行Excel的恢复,还可以进行微信、QQ、照片、短信、联系人、通话记录、音视频和其他office文件的恢复,可以说是非常好用了。
2.具体操作 打开【office文件恢复】功能,我们就可以将对应的office文档类型进行恢复了,包括Word文档、Excel文档、PPT文档,你都可以在这里轻松恢复。
例如我们打开【Excel文档】功能后,就会自动识别以前误删的文档内容,帮你轻松恢复所有误删的东西啦,是不是特别简单呢!
好了,除此之外你还知道哪些好用的恢复方法呢,欢迎留言区告诉我们哦~觉得文章不错的小伙伴也记得收藏下呀~
不知道大家在工作中,有没有遇到特别冷酷无情的老板,每天都想尽各种办法来刁难你。比如说,甩给你一些数据,让你用Excel制作出一个仪表盘来。小编有一个朋友,他就曾被这样刁难过。不过呢,最后在小编的帮助下,他完美解决了这个问题,还获得老板的赏识呢。
所以啊,今天小编就打算给大家分享一下用Excel制作仪表盘的方法,有需要的朋友,可以学起来,暂时不需要的朋友,也可以留作备用哦~
下面我们先来看一下最终的效果图吧:
一、制作仪表盘 1.准备表盘素材
首先,我们要先准备一个表盘素材。当然你也可以自己制作,不过自己制作的话,耗费的时间会有点多。表盘素材如下:
2.制作指针
表盘有了,接下来我们就要开始制作指针了。具体制作步骤如下:
①选择指针数值,点击菜单栏中的【插入】,点击【图表】,选择第一个二维饼图即可。
②选中刚插入的二维饼图,右键点击选择【设置数据系列格式】,接着在弹出的窗口中,将【第一扇区起始角度】设置成【270度】。
③分别依次选择两大扇区,然后点击【填充与线条】,最后将这两大扇区的颜色设置成【无填充】即可。
设置前:
设置后:
④选中指针,点击【填充与线条】,将其的颜色设置成【红色】即可。
⑤最后,进一步完善指针,并将【图表标题】和底部一些数字删除掉即可。
二、组合表盘和指针 1.组合步骤
指针完成后,解下来我们就可以将表盘和指针组合起来了。具体组合步骤如下:
①点击【Ctrl】键分别选择指针和表盘,然后点击菜单栏中的【格式】,最后将高度、宽度统一一下,比如设置成【6厘米】。
②接着点击【格式】下的【对齐】,再点击【水平居中】和【垂直居中】,最后再点击【组合】,将指针和表盘组合起来即可。
2.效果
指针和表盘组合起来后的效果图是这样子的:
大家可以通过调整指针值来让指针动起来哦~
ok,今天的分享就到这里啦。现在大家知道如何用Excel来制作仪表盘了吧!赶紧去试试吧~如果你还知道其他好用的Excel技巧,欢迎分享出来,一起学习学习哦~
树莓派9层外壳自带一个散热风扇,风扇是2针的,不能控制,插上电源后就一直全速运转,晚上噪音很大。而且,一直运行,风扇寿命也会降低。
考虑加一个电机驱动模块,使用pwm控制风扇电压。cpu温度如果低于一定程度,风扇可以直接停转。自带风扇标记说明5v电压下只有0.16A电流,在淘宝找到一个体积小,价格低的驱动模块DRV8833,淘宝育松电子电只卖2块一个,这家店物美价廉,商品很全。我买了一个电烙铁,排针,焊锡丝,一个备用树莓派散热风扇,2个舵机,一个二轴舵机云台,一个AD模块,几个LED模组,摇杆模组,总共只要50块。DRV8833 这是一个双路H桥,稳定工作电流可达1A,驱动散热风扇绰绰有余了。
模块默认排针是未焊接上的,需要准备一个电烙铁。我们不需要正反转,所以把IN3短接,这样IN4高电平时,out4输出5V电源,OUT3接地,风扇转动。丝印eep是休眠引脚(丝印标错了,正确的是应该是ULT标记,按商品页面说明,调了半天),高电平时模块唤醒,我们的模块一直是工作状态,所以可以通过短接J2 是休眠引脚永远置高,节省一个引脚。焊接好后,风扇红线接OUT4,黑线接OUT3,反了是不转的。VCC接树莓派5V电源针,GND接树莓派GND针。 IN4接树莓派板载12针。
配置文件 tempConfig.ini
[config] mintemp = 65 minDuty = 50 maxtemp = 80 温度小于65摄氏度时,12脚输出pwm占空比为0.风扇停转,大于65时,pwm占空比不为零,最小占空比是50%,到80度时占空比为100%,风扇全速运行。注意的是pwm只能调节电压,电压和转速不是线性相关的,所以,要测试保证设置最小占空比时能够驱动风扇转动。太低的占空比,风扇不转,只会造成发热。
#!/usr/bin/env python3 import configparser import RPi.GPIO as GPIO from time import sleep #风扇控制引脚 fanPin = 12 #配置文件路径 configPath='/home/pi/program/python/tempConfig.ini' Fan = None #读取配置文件 def config(m): cf = configparser.ConfigParser() cf.read(configPath) m['mintemp'] = float(cf.get('config','mintemp')) m['minduty'] = float(cf.get('config','minduty')) m['maxtemp'] = float(cf.get('config','maxtemp')) def init(): GPIO.setmode(GPIO.BOARD) GPIO.setup(fanPin,GPIO.OUT) global Fan Fan=GPIO.PWM(fanPin,1000) def temp(): f = open('/sys/class/thermal/thermal_zone0/temp') if(not f is None): tempv = float(f.
前言:
转载请附上连接,本帖原创请勿照抄。
出现ORA-01034和ORA-27101的原因是多方面的:
1.主要是oracle当前的服务不可用,shared memory realm does not exist,是因为oracle没有启动或没有正常启动,共享内存并没有分配给当前实例.所以,通过设置实例名,再用操作系统身份验证的方式,启动数据库。这样数据库就正常启动了,就不会报ORA-01034和ORA-27101两个启动异常了。
2. ....\dbhome_1\database\INITorcl.ORA、....\dbhome_1\NETWORK\ADMIN\listener.ora、....\dbhome_1\NETWORK\ADMIN\sqlnet.ora、....\dbhome_1\NETWORK\ADMIN\tnsnames.ora 配置出错
3.监听器异常启动不了(主要问题在 2. 配置文件异常所以才会导致监听无法启动)
4.检查环境变量配置是否正确(一般发生在重新卸载安装数据库后路径问题 自行百度查找具体方法)
解决方案 1.一般情况按照一下配置即可解决
1.1 打开cmd 输入 lsnrctl start
1.2 填写自己的实例名 set ORACLE_SID=orcl //一般为orcl
1.3 再输入 sqlplus /nolog
//--------会出现一些系统信息
1.4 再输入 conn / as sysdba
--------会出现已连接
1.5 输入 start
1.6 输入 startup
//--------这里一般会出现LISTENER
//--------ORA-00132: syntax error or unresolved network name 'LISTENER_ORCL'
1.7 修改文件配置属性(....\dbhome_1\database\INITorcl.ORA)
*.local_listener='(ADDRESS = (PROTOCOL = TCP)(HOST = 127.0.0.1)(PORT = 1521))'
注意配置过程中出现空格或者符号没注意打错了也会出现,需要注意细节。
1.8 startup pfile='E:\app\product\11.
IIS(Internet信息服务)英文InternetInformationServer的缩写。它是微软公司主推的服务器。IIS的特点具有:安全性,强大,灵活。 2.Tomcat Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。 3.Zeus Zeus是一个运行于Unix下的非常优秀的Web服务器,据说性能超过Apache,是效率最高的Web服务器之一。 4.Nginx Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。 5.Apache Apache是世界使用排名第一的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。 6.Lighttpd Lighttpd是由德国人JanKneschke领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的webserver环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。支持FastCGI,CGI,Auth,输出压缩(outputcompress),URL重写,Alias等重要功能。
中国营销网 https://www.yingxiaon.com/article/13337.html
21世纪营销网 https://www.21adw.com/yxzx/12013635.html
新华财经网 https://www.newshw.com/caijing/1113410420194104.html
中华消费网 https://www.xjnewsw.cn/xfsh/2019/315517.html
中华食品网 https://www.sxnewsw.cn/spzx/858.html
新华食品网 https://www.shxnews.cn/sprd/2019/314912.html
环球食品网 https://www.hunnews.cn/spzx/1303.html
新华教育网 https://www.jxnewsw.com/jyzx/1850.html
中国科教网 https://www.jsnewsw.cn/cjzx/1766.html
环球教育网 https://www.hbnewsw.cn/jyxw/2019/1113/315910.html
人民教育网 https://www.hljnewsw.cn/jyzx/780.html
新华公益网 https://www.gsnewsw.com/gyzx/1284.html
环球物联网 https://www.hknewsw.com/wlzx/1083.html
中华物联网 https://www.nxnewsw.com/wl/2019/315816.html
新华工控网 http://www.gdnewsw.com/gkxw/1545.html
新华汽车网 https://www.qhnewsw.com/qczx/1286.html
中华汽车网 https://www.hainnews.com/qcxw/2019/2019.html
人民汽车网 https://www.gznewsw.cn/qczx/745.html
中华电动汽车网 https://www.chinaylinfo.com/qczx/1161.html
环球能源网 https://www.globalny.org.cn/a/nynews/2019/1113/315960.html
能源中国网 https://www.energychinaw.com/a/nyzx/201911/c22134-3023966.html
新华能源网 https://www.nmgnewsw.cn/nyzx/923.html
中国能源新闻网 https://www.energynewsw.com/nynews/2401.html
中华能源网 https://www.cnenergyw.com/xinwen/111314B20191466.html
中华环保网 https://www.hebnewsw.com/hbzx/1380.html
环保中国网 https://www.hbchinaw.com/hbnews/411.html
新华电商网 https://www.xinhuadsw.com/dszx/117303.html
中国电商新闻网 https://www.zgdsnews.com/dsxw/685.html
中华电商网 https://www.cnbrandw.com/a/dsnews/2019/1113/315976.html
新华科技网 https://www.itnewsw.com/a/itnews/2019/1113/314660.html
全球电商网 https://www.qqdians.com/a/qqdians/1113140020191400.html
设计中国网 https://www.designcnw.com/gnsj/1113241220192412.html
中华设计网 https://www.designnewsw.com/sjzx/2019/314873.html
第一设计网 https://www.firstdesignw.com/a/zixun/20191113/16025.html
中国设计网 https://www.
添加链接描述
在一个字符串中找出最长的数字串(python解法) 输入abcd12345ed125ss123456789
输出123456789
python3 import re print(max(re.findall(r"\d*", input()), key=len)) 其中findall函数
findall函数是正则表达式中的函数将字符串按照一定规则进行匹配,并且返回一个列表,正则表达式用法
. # 点可代表一切字符 \ # 起转义作用 [...] # 指代方括号中的任意字符 \d # 指代数字0-9 \D # 指代非数字 \s # 指代一切空格,包括tab制表符、空格、换行等 \S # 指代非空格 \w # 指代大小写字母、数字和下划线 \W # 指代非大小写字母、数字和下划线 * # 匹配前面字符 >=0 次 + # 匹配前面字符1次及以上 ? # 匹配前面字符0次或1次 {m} # 匹配m次 {m,n} # 匹配m到n次 {m,} # 至少匹配m次 \d*的意思是将字符串中的连续数字匹配下来
r的意思是将字符串按照原字符串进行传入
**max(list, key=len)**从列表中按照长度进行返回最长的一个元素。
C++ #include<iostream> #include<string> using namespace std; int main() { string str, res, cur; cin >> str; for (int i = 0; i <= str.
错误 在往服务器 上部署项目,运行sql文件后 ,就出现了如下错误:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘USING BTREE, CONSTRAINT tb_roles_menus_ibfk_1 FOREIGN KEY (menu_id) REFERE’ at line 5;
翻译过来为:您的SQL语法有错误;请查看对应于MySQL服务器版本的手册,以获取在“USING BTREE;
原因
意思就是说两个数据库版本不一致,导致错误,后来经过查询发现,mysql 5.1版本有错误;和mysql 5.0以及其他版本在处理到索引语句时有所区别,才会报这种错,后来又用两种版本的导出sql文件 ,专门对比了下
如图:
MySql5.1.6版本
mysql-5.6.44版本
两边的语句有明显差别。
解决办法
1.删除主键primary KEY 主键id后的 USING BTREE;
2.修改 KEY role_id (role_id) USING BTREE, 语句格式为KEY role_id USING BTREE (role_id),错误得到解决。
使用插件:amap_map_fluttify 该插件是在我使用了flutter_map;amap_base等相关插件后权衡确认的;flutter_map使用量不大,作者较长时间不维护;amap_base使用量大,集成中遇到的bug解决办法有点坑爹,需要去改插件源码,改了能解决问题,但是不方便上传代码,用jenkins等打包工具; demo:图片,(具体代码见文章最后)
使用方式:(注意android,ios对应的key是不同的,因为它们2个平台的包名也是不一样的)
高德地图配置(文档还是比较容易的):
高德地图配置地址
1 . 获取SHA1:
Android Studio中打开Terminal,输入:keytool -v -list -keystore key存放的地址
2:申请Key:高德平台上申请:
3:Android 配置:AndroidManifes.xml 设置key
<application .... <meta-data android:name="com.amap.api.v2.apikey" android:value="bf5cd34db3be38d75504bfca327b70ac"/> </application> 4:IOS设置key:
void main() async { AmapService.init('8f3be11ca5cb8df0cd950df596c0dbc2'); runApp(MyApp()); } 5:IOS地图权限设置:
在项目的 Info.plist 添加定位权限申请,根据您的业务需求,选择下列方式设置。
NSLocationWhenInUseUsageDescription 表示应用在前台的时候可以搜到更新的位置信息。
NSLocationAlwaysUsageDescription 申请Always权限,以便应用在前台和后台(suspend 或 terminated)都可以获取到更新的位置数据。
在xcode中进行设置: 可以在对应的文件中设置或者查看:
项目使用到的插件 #高德地图 amap_map_fluttify: ^0.3.3+10e2842 #权限 permission_handler: ^3.0.0 #绘制地图时用 decorated_flutter: ^0.6.1 具体的使用代码:
main.dart
import 'package:amap_map_fluttify/amap_map_fluttify.dart'; import 'package:flutter/material.dart'; import 'package:oktoast/oktoast.dart'; import 'my_map/map_screen.dart'; void main() async { AmapService.
1、MyISAM是MySQL 5.5之前版本默认的存储引擎,从5.5之后,InnoDB开始成为MySQL默认的存储引擎。MyISAM和InnoDB都是使用B+树实现主键索引、唯一索引和非主键索引。
2、InnoDB存储引擎中有页(Page)的概念,页是其磁盘管理的最小单位。InnoDB存储引擎中默认每个页的大小为16KB,可通过参数innodb_page_size将页的大小设置为4K、8K、16K,在MySQL中可通过如下命令查看页的大小:
mysql> show variables like 'innodb_page_size';
而系统一个磁盘块的存储空间往往没有这么大,因此InnoDB每次申请磁盘空间时都会是若干地址连续磁盘块来达到页的大小16KB。InnoDB在把磁盘数据读入到磁盘时会以页为基本单位,在查询数据时如果一个页中的每条数据都能有助于定位数据记录的位置,这将会减少磁盘I/O次数,提高查询效率。B-Tree结构的数据可以让系统高效的找到数据所在的磁盘块。
3、B-Tree定义一:
一棵m阶的B-Tree,或者为空树,或者满足下列特性: 树中每个结点至多有m棵子树; 若根结点不是叶子结点,则至少有两棵子树; 除根节点之外的所有非终端结点至少有[m/2]棵子树; 所有非终端结点中包含下列信息数据: (n,A0,K1,A1,K2,A2……Kn,An) 。其中,n为关键字的数目,K(i)为关键字,且K(i) < K(i+1), Ai为指向子树根结点的指针,且指针A(i-1)所指子树中所有结点的关键字均小于Ki,Ai所指子树中所有结点的关键字均大于Ki; 所有叶子结点都出现在同一层次上; B-Tree定义二:
为了描述B-Tree,首先定义一条数据记录为一个二元组[key, data],key为记录的键值,对于不同数据记录,key是互不相同的;data为数据记录除key外的数据。那么B-Tree是满足下列条件的数据结构:
d为大于1的一个正整数,称为B-Tree的度。h为一个正整数,称为B-Tree的高度。每个非叶子节点由n-1个key和n个指针组成,其中d<=n<=2d。子节点最少包含一个key和两个指针,最多包含2d-1个key和2d个指针,叶节点的指针均为null。所有叶节点具有相同的深度,等于树高h。key和指针互相间隔,节点两端是指针。一个节点中的key从左到右递增排列。如果某个指针在节点node的左右相邻key分别是key1和key2且不为null,则其指向的节点的所有key小于key2且大于key1. 4、B+Tree
与B-Tree相比,B+Tree有以下不同点:
每个节点的指针上限为2d而不是2d+1。内节点不存储data,只存储key;叶子节点不存储指针。非叶子结点的子树指针与关键字个数相同;非叶子结点的子树指针P[i],指向关键字值属于[K[i], K[i+1])的子树(B-Tree左右都是开区间);为所有叶子结点增加一个链指针; 5、数据库中的B+Tree索引可以分为聚集索引(clustered index)和辅助索引(secondary index)。
上面的B+Tree示例图在数据库中的实现即为聚集索引,聚集索引的B+Tree中的叶子节点存放的是整张表的行记录数据。辅助索引与聚集索引的区别在于辅助索引的叶子节点并不包含行记录的全部数据,而是只存储相应行数据的辅助索引值和聚集索引键,即主键。当通过辅助索引来查询数据时,InnoDB存储引擎会遍历辅助索引找到主键,然后再通过主键在聚集索引中找到完整的行记录数据。
6、InnoDB索引实现:
InnoDB采用B+tree作为索引结构,但具体实现方式却与MyISAM不同。
1)主键索引:
MyISAM索引文件和数据文件是分离的,索引文件仅保存数据记录的地址。而在InnoDB中,表数据文件本身就是按B+Tree组织的一个索引结构,这棵树的叶节点data域保存了完整的数据记录。这个索引的key是数据表的主键,因此InnoDB表数据文件本身就是主索引。
(图inndb主键索引)是InnoDB主索引(同时也是数据文件)的示意图,可以看到叶节点包含了完整的数据记录。这种索引叫做聚集索引。因为InnoDB的数据文件本身要按主键聚集,所以InnoDB要求表必须有主键(MyISAM可以没有),如果没有显式指定,则MySQL系统会自动选择一个可以唯一标识数据记录的列作为主键,如果不存在这种列,则MySQL自动为InnoDB表生成一个隐含字段作为主键,这个字段长度为6个字节,类型为长整形。
2)InnoDB辅助索引
InnoDB的所有辅助索引都引用主键作为data域。例如,下图为定义在Col3上的一个辅助索引:
InnoDB 表是基于聚簇索引建立的。因此InnoDB 的索引能提供一种非常快速的主键查找性能。不过,它的辅助索引(Secondary Index, 也就是非主键索引)也会包含主键列,所以,如果主键定义的比较大,其他索引也将很大。如果想在表上定义很多索引,则争取尽量把主键定义得小一些,因为InnoDB 不会压缩索引。
聚集索引这种实现方式使得按主键的搜索十分高效,但是辅助索引搜索需要检索两遍索引:首先检索辅助索引获得主键,然后用主键到主索引中检索获得记录。
不同存储引擎的索引实现方式对于正确使用和优化索引都非常有帮助,例如知道了InnoDB的索引实现后,就很容易明白为什么不建议使用过长的字段作为主键,因为所有辅助索引都引用主索引,过长的主索引会令辅助索引变得过大。再例如,用非单调的字段作为主键在InnoDB中不是个好主意,因为InnoDB数据文件本身是一颗B+Tree,非单调的主键会造成在插入新记录时数据文件为了维持B+Tree的特性而频繁地分裂调整,十分低效,而使用自增字段作为主键则是一个很好的选择。
InnoDB索引和MyISAM索引的区别:
一是主索引的区别,InnoDB的数据文件本身就是索引文件。而MyISAM的索引和数据是分开的。
二是辅助索引的区别:InnoDB的辅助索引data域存储相应记录主键的值而不是地址。而MyISAM的辅助索引和主索引没有多大区别。
3)InnoDB辅助索引与null
值为NULL的二级索引记录被放在了B+树的最左边,这是因为设计InnoDB的大叔有这样的规定:
We define the SQL null to be the smallest possible value of a field. 也就是说他们把SQL中的NULL值认为是列中最小的值。
7、B树(B-树/B+树)插入操作:
题目链接:https://ac.nowcoder.com/acm/contest/1877/S
小乐乐与字符串
题目描述
在庆祝祖国母亲70华诞之际,老师给小乐乐出了一个问题。大家都知道China的英文缩写是CHN,那么给你一个字符串s,你需要做的是统计s中子串“CHN”的个数。
子串的定义:存在任意下标a < b < c,那么“s[a]s[b]s[c]”就构成s的一个子串。如“ABC”的子串有“A”、“B”、“C”、“AB”、“AC”、“BC”、“ABC”。
输入描述:
输入只包含大写字母的字符串s。(1 ≤ length ≤ 8000)
输出描述:
输出一个整数,为字符串s中字串“CHN”的数量。
示例1
输入
CCHNCHN
输出
7
示例2
输入
CCHNCHNCHNCHN
输出
30
思路:这道题一看就是可以用暴力做,但是因为字符串的长度为8000,如果用三重循环的话会超时,所以需要优化。我们可以枚举’C’和’H’,接着其实我们就只需要求’H’以后的区间中出现了多少个’N’,求区间内出现次数,就想到了可以用前缀和来优化。
#include<cstdio> #include<cstring> #include<cmath> #include<iostream> #include<algorithm> using namespace std; #define maxn 100010 #define ll long long #define inf 0x3f3f3f3f #define mod 1000000007 char s[10100]; int a[maxn]; int main() { cin>>s; int l=strlen(s); int sum=0; for(int i=2; i<l; i++) { if(s[i]=='N') a[i]=a[i-1]+1; else a[i]=a[i-1]; } ll ans=0; for(int i=0; i<l; i++) { if(s[i]=='C') { for(int j=i+1; j<l; j++) { if(s[j]=='H') { ans+=(a[l-1]-a[j]); } } } } cout<<ans<<endl; return 0; } }
目录
1. 极大似然估计
2. 估计量的评价准则,无偏性
3. 有效性,均方误差
1. 极大似然估计 极(最)大似然估计的原理介绍 假设在一个罐中放着许多白球和黑球,并假定已经知道两种球的数目之比是1:3,但不知道哪种颜色的球多。如果用放回抽样方法从罐中取5个球,观察结果为:黑、白、黑、黑、 黑,估计取到黑球的概率p.
离散型总体: 连续型总体:
说明:
1)未知参数可能不是一个,设。
2)求的最大值时,可转换为求的最大值,称为对数似然函数
3)若关于某个是单调增(减)函数,则的极大似然估计为的最大(小)值(与样本有关)
4)若是的极大似然估计,则的极大似然估计为
例题 2. 估计量的评价准则,无偏性 从前之前的学习中可以看到,对总体的未知参数可用不同方法求得不同的估计量,如何评价不同估计量的好坏?
常用的评价准则有以下四条:
1)无偏性准则
2)有效性准则
3)均方误差准则
4)相合性准则
无偏估计量 无偏性的统计意义是指在大量重复试验下,由给出的估计的平均恰好是,从而无偏性保证了没有系统误差。
例如,工厂长期为商家提供某种商品, 假设生产过程相对稳定,产品合格率为,虽然一批货的合格率可能会高于或低于,但无偏性能够保证在较长一 段时间内合格率接近,所以双方互不吃亏。但作为顾客购买商品,只有二种可能,即买到的是合格品或不合格品, 此时无偏性没有意义。
例题 根据之前学习的内容,的分布函数为:
纠偏方法 3. 有效性,均方误差 有效性准则 方差较小的无偏估计量是一个更有效的估计量。
例题 均方误差准则 4. 相合性 相合性准则
题目传送门
题目描述 小乐乐从老师口中听到了二段数这个名词,想更深入的了解二段数。
二段数是这样的正整数:恰好包含两种不同的十进制数字s和t,s不是0,并且s的所有出现均排列在所有的t的前面。例如,44444411是二段数(s是4,t是1),41、10000000和5555556也是。但4444114和44444都不是二段数。
这时老师问小乐乐:给你一个任意的正整数n,你能求出比n大并且是n的倍数的最小二段数吗?请你帮助小乐乐解答这个问题。
输入描述 多组输入,每组输入包含一个正整数n (1 ≤ n ≤ 99999)
题目保证测试数据总数不超过500组,当输入n=0时程序结束。
输出描述 对于每组测试用例,输出正整数n,后面紧跟“: ”,输出答案并换行,即比n大且是n的倍数的最小二段数。
输入样例 1
2019
0
输出样例 1: 10
2019: 9999999993
题解: BZOJ2909题解预先计算好两个数列。
数列1:a[1]=1,a[i+1]=(a[i]*10+1) mod N,i = 1,2,3,… a[i]就是连续i个1除以N的余数。
数列2:b[0]=1,b[i+1]=b[i]*10 mod N,i = 0,1,2,3,… b[i]就是10的i次方除以N的余数。
有了这两个数列,只需用O(1)的时间就可以计算任意二段数除以N的余数。假设二段数是由
m个s和n个t组成,二段数m,s,n,t除以N的余数等于(a[m]*b[n]*s+a[n]*t) mod N。
接下来只要枚举m,s,n,t就可以了。按照(m+n)的值从小到大枚举,(m+n)确定后枚举m,则n
可以直接计算出来,不需要枚举。m和n确定之后枚举s和t。一旦找到解,后面的(m+n)值就不
需要继续枚举下去了。为了减少不必要的枚举,可以先进行判断。例如,N是10的倍数时,t只
能取0。 AC-Code #include<cstdio> #include<cstring> #include <algorithm> using namespace std; int ones[9999],tens[999], n, i, j, k, s, t, api, apj, aps, apt; bool ck() { int p, r; if (i > 5) return 1; p = s; r = t; for (int q = 0; q < j; q++) p = p * 10 + s; for (int q = 0; q < i - j; q++) p = p * 10; for (int q = 1; q < i - j; q++) r = r * 10 + t; return p + r > n; } int main() { while (scanf("