FFT(快速傅里叶变换)中频率和实际频率的关系

一 四个名词:实际物理频率,角频率,圆周频率,归一化频率,数字频率,模拟频率 1、实际物理频率表示AD采集物理信号的频率,fs为采样频率,由奈奎斯特采样定理可以知道,fs必须≥信号最高频率的2倍才不会发生信号混叠,因此fs能采样到的信号最高频率为fs/2。 2、角频率是物理频率的2*pi倍,这个也称模拟频率。(注:由于一个信号周期(如交流电)是360度,即2pi。故角频率就是转了多少个2pi。设置角频率纯粹为了便于计算。) 3、归一化频率是将实际物理频率按fs归一化之后的结果,最高的信号频率为fs/2对应归一化频率0.5,这也就是为什么在matlab的fdtool工具中归一化频率为什么最大只到0.5的原因。 4、圆周频率是归一化频率的2*pi倍,这个也称数字频率。也就是归一化的角频率。 5、数字频率: w = Ω/fs; 其中w 为数字频率,Ω是模拟角频率,模拟信号:x = sin(Ωt)=sin(2πft); x(t)=sin(ΩnT);T为采样周期,x(n) = sin(wn); 总结:Ω--------模拟角频率,f--------------模拟频率,w-------------数字角频率, w/2π = f/fs; fs>= 2f 所以w<= π; 二 有关FFT频率与实际物理频率的分析 做n个点的FFT,表示在时域上对原来的信号取了n个点来做频谱分析,n点FFT变换的结果仍为n个点。 换句话说,就是将2pi数字频率w分成n份,而整个数字频率w的范围覆盖了从0-2pi*fs的模拟频率范围。这里的fs是采样频率。而我们通常只关心0-pi中的频谱,因为根据奈科斯特定律,只有f=fs/2范围内的信号才是被采样到的有效信号。那么,在w的范围内,得到的频谱肯定是关于n/2对称的。 举例说,如果做了16个点的FFT分析,你原来的模拟信号的最高频率f=32kHz,采样频率是64kHz,n的范围是0,1,2...15。(注:这意味着已经将原来的模拟信号采样了8遍。)这时,64kHz的模拟频率被分成了16分,每一份是4kHz,这个叫频率分辨率(注:做FFT用的点越多,频率分辨率越高)。那么在横坐标中,n=1时对应的f是4kHz, n=2对应的是8kHz, n=15时对应的是60kHz,你的频谱是关于n=8对称的。你只需要关心n=0到7以内的频谱就足够了,因为,原来信号的最高模拟频率是32kHz。 这里可以有两个结论。 · 第一,必须知道原来信号的采样频率fs是多少,才可以知道每个n对应的实际频率是多少,第k个点的实际频率的计算为f(k)=k*(fs/n) ·第二,你64kHz做了16个点FFT之后,因为频率分辨率是4kHz,如果原来的信号在5kHz或者63kHz有分量,你在频谱上是看不见的,这就表示你越想频谱画得逼真,就必须取越多的点数来做FFT,n就越大,你在时域上就必须取更长的信号样本来做分析。但是无论如何,由于离散采样的原理,你不可能完全准确地画出原来连续时间信号的真实频谱,只能无限接近(就是n无限大的时候),这个就叫做频率泄露。在采样频率fs不变得情况下,频率泄漏可以通过取更多的点来改善,也可以通过做FFT前加窗来改善,这就是另外一个话题了。 三 离散信号傅里叶变换的周期性讨论 (从下图可以看出:S平面,相当于直角坐标系,它的实轴是复数的实部,虚轴是复数的虚部。在这里可以理解为信号的在此频率下的幅值;Z平面,相当于极坐标系,与Re轴的夹角相当于频率,向量长度相当于幅值。) 要分析这个,我们先从Laplace变换与Z变换之间的关系谈起。 由,得z平面与s平面的关系图 图中的关系有以下几点: · s平面的虚轴映射到z平面的单位圆上 ·s平面的负半轴映射到z平面的单位圆内 ·s平面的正半轴映射到z平面的单位圆外 Laplace变换是用于连续信号的变换,相对应的z变换是应用到z平面的变换。因此从另一个角度,上面谈到的角频率(模拟频率)对应的是s平面,圆周频率对应的是z平面(也是为什么称为圆周频率的原因)。 现在我们来看一下s平面虚轴上模拟频率的变换将会导致z平面单位圆上如何变化: ·当模拟频率在s平面的虚轴上从0变到fs 时,数字频率在z平面单位圆上从0变到2 pi。 ·当模拟频率在s平面的虚轴上从2fs变到4fs时,数字频率在z平面单位圆上仍然从0变到2 pi。 。。。。。。z平面如此循环重复 我们知道离散信号的傅里叶变换对应到单位圆上的z变换,因此上面的结论就验证了为什么离散信号的傅里叶变换是周期性:根本原因所是单位圆上的周期性。 考虑到我们实际应用中可选择一个周期,这也能够解释:因为实际信号的频率总是在fs/2以下,这就对应到z平面单位圆上的0~pi,在一个周期范围内就可以进行信号分析了。 原文博主真的厉害,把这个将的很清楚,原文连接 https://www.sohu.com/a/122159699_464086

ab 命令的安装和使用

https://www.cnblogs.com/terryguan/p/6681055.html https://www.cnblogs.com/php12-cn/p/8472154.html https://www.cnblogs.com/zfying/archive/2012/06/29/2570030.html 安装 ab运行需要依赖apr-util包,安装命令为: yum install apr-util 安装依赖 yum-utils中的yumdownload 工具 如果没有找到 yumdownload 命令可以 yum install yum-utils 或者:yum install httpd-tools 安装完成后执行以下指令 cd /opt mkdir abtmp cd abtmp yum install yum-utils.noarch yumdownloader httpd-tools* rpm2cpio httpd-*.rpm | cpio -idmv 解开后就能得到独立的 ab可执行文件了。 操作完成后 将会产生一个 usr 目录 ab文件就在这个usr 目录中 上述命令成功后,可以在abtmp下的usr/bin中看到一个名为ab的文件,复制到系统PATH下就大功告成 查看系统path echo $PATH 移动文件: cp aaa bbb 最基本的关心两个选项 -c -n ./ab -c 100 -n 10000 http://127.0.0.1/index.php -c 100 即:每次并发100个 -n 10000 即: 共发送10000个请求

Spring的依赖注入的几种方式(1)

开发工具与关键技术:eclipse 作者:Mr_恺 撰写时间:2021.01.8 DI(依赖注入) 组件之间的依赖关系由容器在应用系统运行期来决定, 也就是由容器动态地将某种依 赖关系的目标对象实例注入到应用系统中的各个关联的组件之中。 Spring的依赖注入的方式:只有3种(我们这里只涉及两种) 第一种方式:通过构造函数注入 第二种方式:通过set方法注入 注入的内容: 第一类:基本类型和String类型 第二类:其他的bean类型 第三类:复杂类型(集合类型),不做演示 创建一个java项目,把用到的包和类创建好: 1、 构造函数注入用到的实现类 set方法注入用到的实现类 把Spring的jar包引进来: 创建一个xml文件并命名为bean.xml,导入Spring的约束 <!-- 导入spring的约束spring的IoC约束:beans--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:p="http://www.springframework.org/schema/p" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> 第一种使用构造函数注入 涉及标签: constructor-arg 该标签是写在bean标签内部的子标签 标签的属性: type:指定注入的参数在构造函数中的类型 index:指定要注入的参数在构造函数的索引位置 name:指定参数在构造函数的中的名称 value:指定注入的数据内容,他只能指定基本类型数据和String类型数据 ref:指定其他bean类型数据。写的是其他bean的id。其他bean指的是存在于spring容器中的bean. <bean id="accountService" class="com.itheima.service.impl.AccountServiceImpl"> <constructor-arg name="name" value="凯哥"></constructor-arg> <constructor-arg name="age" value="18"></constructor-arg> <constructor-arg name="birthday" ref="now"></constructor-arg> </bean> <bean id="now" class="java.util.Date"></bean> 第二种使用set方法注入 最常用 涉及标签: property 该标签是写在bean标签内部的子标签 标签的属性: name:指定的是set方法的名称。匹配的是类中set后面的部分 value:指定注入的数据内容,他只能指定基本类型数据和String类型数据 ref:指定其他bean类型数据。写的是其他bean的id。其他bean指的是存在于spring容器中的bean <bean id="accountService2" class="com.itheima.service.impl.AccountServiceImpl2"> <property name="name" value="55"></property>

Spring三种创建Bean对象的方法

开发工具与关键技术:eclipse 作者:Mr_恺 撰写时间:2021.12.28 我们用eclipse创建一个java项目,把那些包创建好: dao包下的接口和实现类: service包下的接口和实现类: 把Spring的jar包引进来: 创建一个xml文件并命名为bean.xml,导入Spring的约束 <!-- 导入spring的约束spring的IoC约束:beans--> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"> bean标签: 作用:用于让spring帮我们读取配置后创建对象 属性: id:对象的唯一标识 Class:要创建对象的全限定类名 factory-method:指定创建bean对象方法。该方法可以是静态时,也可以不是。 factory-bean:指定创建bean对象的工厂bean的id。 bean对象的三种创建方式: 第一种:通过调用构造函数来创建bean对象。 常用 在默认情况下,当我们在spring的配置文件中写了一个bean标签,并提供了Class属性spring就会调用默认构造函数创建对象。 如果没有默认构造函数,则对象创建失败。 <!-- 默认构造函数创建 --> <bean id="accountService"class="com.itheima.service.impl.AccountServiceImpl" scope="singleton" init-method="init" destroy-method="destroy"> </bean> 第二种:通过静态工厂创建bean对象。 工厂类中提供一个静态方法可以返回要用的bean对象 要创建一个类模拟一个静态工厂: <!-- 静态工厂创建 --> <bean id="staticAccountService"class="com.itheima.factory.StaticBeanFactory" factory-method="getBean"> </bean> 要创建一个类模拟一个实例工厂: 第三种: 通过实例工厂创建bean对象 工厂类中提供普通方法可以返回要用的bean对象 <!-- 实例化工厂创建 --> <bean id="fff" class="com.itheima.factory.InstanceBeanFactory"></bean> <bean id="dfd" factory-bean="fff" factory-method="getBean"></bean> 创建一个类模拟表现层运行,根据bean的id获取对象: 运行结果:

Matlab绘图(二)—变色散点图二维、三维绘制

Matlab绘图(二)—散点图绘制 前言二维散点图scatter函数gscatterr函数思考 三维散点图scatter3函数 前言 总结一下最近针对散点图的绘制学习到的scatter与gscatter函数以及当我们需要绘制散点图,并按照一定的规律对这些二维散点进行分类,分类结果用颜色来进行区分时,自己的一些想法。 二维散点图 scatter函数 scatter - 散点图 此 MATLAB 函数 在向量 x 和 y 指定的位置创建一个包含圆形的散点图。该类型的图形也称为气泡图。 scatter(x,y) x数据 y数据 scatter(x,y,sz) sz是圆圈的大小 可以用矩阵来设置对应x y点的圆圈大小 scatter(x,y,sz,c) c控制颜色,其颜色可直接赋值 r、 g 、k、 b等,也可以用矩阵来设置对应x、y点对应圆圈的颜色分布 scatter(___,'filled') 颜色填充 scatter(___,mkr) scatter(___,Name,Value) scatter(ax,___) s = scatter(___) gscatterr函数 gscatter - Scatter plot by group This MATLAB function creates a scatter plot of x and y, grouped by group. gscatter(x,y,group) x y是对应的坐标数据,group是数据的分类矩阵 gscatter(x,y,group,clr,sym,siz) gscatter(x,y,group,clr,sym,siz,doleg) gscatter(x,y,group,clr,sym,siz,doleg,xnam,ynam) h = gscatter(...) 关于这两个函数的详细用法,大家可以直接help scatter、help gscatterr

mysql数据库函数详解_MySQL数据库之字符函数详解

MySQL数据库中的函数根据功能可以划分为字符函数、数值运算符与函数、比较运算符与函数、日期时间函数、信息函数、聚合函数、加密函数以及自定义函数等。 1.CONCAT() CONCAT()函数用于字符连接,如下图所示: 2.CONCAT()函数也可用于将一个数据表中的两个字段的所有记录进行字符连接,如下图所示: 3.CONCAT_WS() CONCAT_WS()函数使用指定的分隔符进行字符连接,该函数的第一个参数是指定分隔符,如下图所示: 4.FORMAT() FORMAT()函数主要用于数字格式化,最终返回一个字符型数字。第一个参数为待格式化的数字,第二个参数为要保留的小数位数,如下图所示: 5.LOWER() LOWER()函数将字符转换成大写字母。 6.UPPER() UPPER()函数将字符转换成小写字母,如下图所示: 7.LEFT() LEFT()函数用于获取左侧字符。 8.RIGHT() RIGHT()函数用于获取右侧字符,如下图所示: 9.LENGTH() LENGTH()函数用于获取字符串长度,如下图所示: 10.LTRIM() LTRIM()函数用于删除前导空格。 11.RTRIM() RTRIM()函数用于删除后续空格。 12.TRIM() TRIM()函数用于删除前导和后续空格,如下图所示: 13.REPLACE() REPLACE()函数用于字符串替换,如下图所示: 14.SUBSTRING() SUBSTRING()函数用于字符串截取,第一个参数是开始截取的起始位置,第二个参数是截取的字符数目 [注意]这里是从1开始计数的,而不是从0开始的,如下图所示: 15.如果省略第二个参数,则一直截取到字符串的结尾,如下图所示: 16.[NOT] LIKE [NOT] LIKE用于模式匹配,其中%代表0个或多个字符,_代表任意1个字符。返回1表示匹配,0表示不匹配,如下图所示:

mysql repeated read_mysql事务之可重复读(Repeated Read)

1,Repeated Read 在可重复读(REPEATABLE READS)隔离级别中,基于锁机制并发控制的DBMS需要对选定对象的读锁(read locks)和写锁(write locks)一直保持到事务结束,但不要求“范围锁(range-locks)”,因此可能会发生“幻影读(phantom reads)” 在该事务级别下,保证同一个事务从开始到结束获取到的数据一致。这是Mysql的默认事务级别。 设置我们的数据库事务为该级别。 SET SESSION TRANSACTION ISOLATION LEVEL REPEATABLE READ;SET GLOBAL TRANSACTION ISOLATION LEVEL REPEATABLE READ; 2,场景 开启事务1,在我们数据库中对student表修改,事务不提交。 start TRANSACTION; select * from student; update student set name = 'a2' where id = 1; select * from student; 开启事务2,查询student表数据,事务不提交 start TRANSACTION;select * from student; 提交事务1。 start TRANSACTION; select * from student; update student set name = 'a2' where id = 1; select * from student;

mysql dba 之路_Mysql DBA修炼之路

通过本章学习您可以对Mysql的背景及发展史有所了解 通过本章的学习,您可以独立完成Mysql5.6 5.7 8.0版本安装,密码重置 通过本章学习,您可以独立完成Mysql用户管理及权限控制 通过本章学习,您可独立完成SQL函数使用,压力测试报告,连接故障解决 本章我们了解mysql库的诞生、数据库的创建、删除,数据库常用信息查询,数据表的基础设计和结构更新,这些东西很基础,但是非常贴合日常工作 本章着重讲解mysql系统体系运行流畅,理论性地讲解数据库引擎、文件系统,为了是让大家对mysql有个系统且基础的认识 今天直接从数据库事务开始,讲解引擎、事务、索引、sql的关系 本章节主要学习Mysql数据库的数据导出导入备份等相关内容,通过本章节的学习,可以完成一些基础的数据库的备份以及数据导出分析工作。 通过本篇的学习,我们可以深入了解到MySQLdump备份的基本原理与实际操作,另外包括我们备份的方法的选择以及我们线上备份时应该如何考虑等等。希望大家可以多多练习如有问题的话,可以通过微信群进行交流。 本章我们对mysql多线程备份工具mydumper工具包进行了讲解,较为系统的总结了日常工作中,工具的来源,安装,备份,恢复以及备份的全库,单库,单表的情况,工具用法看起相对是简单的,能掌握基础备份恢复使用方法即可,重点希望大家能深入理解一下工具的实现原理,从而对数据备份有个系统且全面的认识 本章着重讲解了Xtrabackup工具备份数据库的方法,主要掌握xtrabackup工具全库备份,增量备份恢复的用法,希望大家多多练习,可以熟练的使用这些备份工具,备份是保障数据安全的重要手段之一。 本章主要讲究了mysql二进制日志的定义与作用,常用的日志格式:statement,row,mixed,几种格式的异同等,其中需要掌握的内容有,含义,有缺点,binlog配置方法,定时删除binlog日志的设置即可,理论偏多实践偏少,大家对概念性的东西能区分清楚即可 本章节主要讲解mysqlbinlog,以及binlog文件内容,要求必须掌握,必须掌握,必须掌握,DBA的必备技能哈 本章给大家介绍数据回滚工具binlog2sql,大家安装好以后,重点掌握基础用与生产案例,其他内容了解即可; 主从复制是一个老生常谈的问题,小事小视,要求能掌握主从搭建模型,手画主从同步过程图,主从过程1234步,主从同步模式分别含义,这是一个DBA必须掌握的技能 本章主要对工作可能会遇到的一些主从同步问题进行了总结,总体来说比较粗,要求大家重点掌握1062和1032报错问题的解决思路,手动模拟一下,尽量避免出现1045、1146错误 本章主要讲解生产中主从切换的案例,从实际生产情况下考虑,要求必须手动主从切换,一主多从主从切换,主从切换DBA必备技能之一,也是大概率会遇到的问题,希望大家实践然后手动画图,将流程梳理清晰 本章讲解了MM+keepalived的搭建过程,内容有点长,如果搭建熟练的同学发现其实是看着内容较多,本质上是主从搭建+配置keeplived虚拟vip,主要多花时间掌握keeplived,虽然这个框架已经非常out了,在生产环境部署很容易导致数据延迟的问题,但是相对来说很简单经典 本章是中间件的开篇之作,主要目的在于介绍中间件实现分布式数据库集群这一功能,重点掌握mycat的安装,结构和基本配置方法,了解中间件实现的分布式集群的意义,这也是必须掌握技能系列,请到服务器上自行实践一遍 本章是mycat功能的核心,要求理解数据切分的两种模式,水平分表和垂直分表,掌握分库分表的配置方法,必须掌握系列,come on对着脑图实践一遍 本章着重讲解了ProxySQL这样一个轻量级的中间件,入门建议大家有时间多了解一些proxysql的相关知识 MHA(Master High Availability)是一款开源的mysql高可用程序,是目前在MySQL高可用方面是一个相对成熟的解决方案;在MySQL故障切换过程中,MHA能做到在0~30秒之内自动完成数据库的故障切换操作,并且在进行故障切换的过程中,MHA能在最大程度上保证数据的一致性,以达到真正意义上的高可用。

Linux实战001:VMware下安装Ubuntu18.04(服务器版)

要想做好一个程序员,基本的服务器构架的能力还是需要有的。除了在本地开发,我们还要学会如何去部署我们开发好的系统。由于Linux的开源免费且功能强大,性能卓越。很多企业都会选择将服务部署在Linux系统上,所以我们对Linux也需要有一定的了解这样才能将工作做的更好,这里我比较喜欢Ubuntu版本的Linux。如果你没有其他的电脑来搭建Linux我们可以利用虚拟机安装,如果你电脑配置不高的话可以选择安装服务器版本,这样基本不影响你电脑的运行。 前期准备 我们需要先下载好系统和VMware虚拟机,系统可以进Ubuntu官网下载你认为合适的版本,我下载的是 ubuntu-18.04.2-live-server-amd64.iso 服务器版本(无图形界面)。VMware虚拟机百度一下就可以找到了,我们找个绿色版本就可以了(安装简单无需激活)。 VMware新建Ubuntu虚拟机 运行VMware并点击新建虚拟机,在弹出的“新建虚拟机向导”窗口中选择-->自定义(高级)-->硬件兼容这里我默认选了Workstation14.x,下一步选择我们下载好的服务器镜像文件ubuntu-18.04.2-live-server-amd64.iso 。接下来配置下服务器的相关信息,处理器和内存大小可以根据自己电脑性能适当的调整,网络选择NAT其他的都选择推荐即可。 这里需要注意的是Ubuntu中root用户是保留用户所以用户名不能用root 安装ubuntu系统 配置号之后VMware会启动虚拟机并加载ubuntu镜像,等加载完成之后便进入了安装Ubuntu界面。首先我们需要选择系统使用的语言,服务器版本没有中文这里我们选择English即可(按键盘Enter键确认选择)。 Please choose your preferred language。 Please select your keyboard layout below,or select "Identify keyboard" to detect your layout automatically 接着要我们选择键盘布局(默认时美式键),我们也可以通过“Identify keyboard”选择来自动检测布局。这里可以保持默认设置,直接回车。 Welcome to Ubuntu ! The world's favourite platform for clouds, clusters, and amazing internet things. This is the installer for Ubuntu on servers and internet devices. 这里我们选择安装【Install Ubuntu】,后面两个是云端服务可以暂时略过。 Configure at least one interface this server can use to talk to other machines,and which preferably provides sufficient access for updates.

mysql插入数据方式有几种_mysql大批量插入数据的4种方法示例

前言 本文主要给大家介绍了关于mysql大批量插入数据的4种方法,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧 方法一:循环插入 这个也是最普通的方式,如果数据量不是很大,可以使用,但是每次都要消耗连接数据库的资源。 大致思维如下 (我这里写伪代码,具体编写可以结合自己的业务逻辑或者框架语法编写) for($i=1;$i<=100;$i++){ $sql = 'insert...............'; //querysql } foreach($arr as $key => $value){ $sql = 'insert...............'; //querysql } while($i <= 100){ $sql = 'insert...............'; //querysql $i++ } 因为太过普通同时也没什么难度同时也不是我今天主要写的所以这里我不多说 方法二:减少连接资源,拼接一条sql 伪代码如下 //这里假设arr的key和数据库字段同步,其实大多数框架中在php操作数据库的时候都是这么设计的 $arr_keys = array_keys($arr); $sql = 'INSERT INTO tablename (' . implode(',' ,$arr_keys) . ') values'; $arr_values = array_values($arr); $sql .= " ('" . implode("','" ,$arr_values) . "'),"; $sql = substr($sql ,0 ,-1); //拼接之后大概就是 INSERT INTO tablename ('username','password') values

oozie com.mysql.jdbc.driver_CDH 安装组件java.lang.ClassNotFoundException: com.mysql.jdbc.Driver 解决方法...

在安装CDH的时候报如下错误: https://www.cndba.cn/dave/article/3376https://www.cndba.cn/dave/article/3376https://www.cndba.cn/dave/article/3376 仅完成 0/1 个步骤。首个失败:命令 (Create Hive Metastore database tables (127)) 已失败https://www.cndba.cn/dave/article/3376https://www.cndba.cn/dave/article/3376 Tue Apr 30 13:32:40 CST 2019 Current working directory: /opt/cm-5.16.1/run/cloudera-scm-agent/process/80-hive-metastore-create-tables Launching one-off process: /opt/cm-5.16.1/lib64/cmf/service/hive/hive.sh create_metastore_tables Tue Apr 30 13:32:40 CST 2019 JAVA_HOME=/usr/java/jdk1.8.0_211-amd64 using /usr/java/jdk1.8.0_211-amd64 as JAVA_HOME using 5 as CDH_VERSION using /opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hive as HIVE_HOME using /opt/cm-5.16.1/run/cloudera-scm-agent/process/80-hive-metastore-create-tables as HIVE_CONF_DIR using /opt/cloudera/parcels/CDH-5.16.1-1.cdh5.16.1.p0.3/lib/hadoop as HADOOP_HOME using /opt/cm-5.16.1/run/cloudera-scm-agent/process/80-hive-metastore-create-tables/yarn-conf as HADOOP_CONF_DIR CONF_DIR=/opt/cm-5.16.1/run/cloudera-scm-agent/process/80-hive-metastore-create-tables CMF_CONF_DIR=/opt/cm-5.16.1/etc/cloudera-scm-agent Metastore connection URL: jdbc:mysql://hadoop-cm:3306/hive?useUnicode=true&characterEncoding=UTF-8 Metastore Connection Driver : com.mysql.jdbc.Driver

mysql成绩是什么数据类型_mysql数据类型

1、整型 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为(0~256)。 int(m)里的m是表示SELECT查询结果集中的显示宽度,并不影响实际的取值范围,没有影响到显示的宽度,不知道这个m有什么用。 2、浮点型(float和double) 设一个字段定义为float(5,3),如果插入一个数123.45678,实际数据库里存的是123.457,但总个数还以实际为准,即6位。 3、定点数 浮点型在数据库中存放的是近似值,而定点类型在数据库中存放的是精确值。 decimal(m,d) 参数m<65 是总个数,d<30且 d 4、字符串(char,varchar,_text) char和varchar: 1.char(n) 若存入字符数小于n,则以空格补于其后,查询之时再将空格去掉。所以char类型存储的字符串末尾不能有空格,varchar不限于此。 2.char(n) 固定长度,char(4)不管是存入几个字符,都将占用4个字节,varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),所以varchar(4),存入3个字符将占用4个字节。 3.char类型的字符串检索速度要比varchar类型的快。 varchar和text: 1.varchar可指定n,text不能指定,内部存储varchar是存入的实际字符数+1个字节(n<=255)或2个字节(n>255),text是实际字符数+2个字节。 2.text类型不能有默认值。 3.varchar可直接创建索引,text创建索引要指定前多少个字符。varchar查询速度快于text,在都创建索引的情况下,text的索引似乎不起作用。 5.二进制数据(_Blob) 1._BLOB和_text存储方式不同,_TEXT以文本方式存储,英文存储区分大小写,而_Blob是以二进制方式存储,不分大小写。 2._BLOB存储的数据只能整体读出。 3._TEXT可以指定字符集,_BLO不用指定字符集。 6.日期时间类型 若定义一个字段为timestamp,这个字段里的时间数据会随其他字段修改的时候自动刷新,所以这个数据类型的字段可以存放这条记录最后被修改的时间。 数据类型的属性

mysql显示nan_Python将dataframe连接到MySQL时出现NaN[mysqlconnector]

我使用Python将pandas数据帧中的一些列插入MySQL。我用的是熊猫15.2。以及mysql.connector. 在import mysql.connector cte = mysql.connector.connect(user=xxxxxxxxx, password=xxxxxxx, host=xxxxxx) cursor = cte.cursor() for index, row in pets.iterrows(): home_pets = (row['cats'], row['dogs'], row['goldfish'], row['rabbits'], row['mice'], row['parrots']) add_pets = """ INSERT INTO pets (cats, dogs, goldfish, rabbits, mice, parrots) VALUES (%s, %s, %s, %s, %s, %s) """ cursor.execute(add_pets, home_pets) cte.commit() 我的一个整型列中有“NaN”值。我刚刚添加了这一点,因为之前一切正常,所以我确信这是导致问题的专栏。这是一个varchar(5)(was int(5))列,未设置为“not NULL”。 编辑:此列(鹦鹉)包含数字0到5作为响应。它还有“NaN”,即受访者没有回答问题。在 尝试在表中插入数据时收到以下错误消息: ^{pr2}$ 我希望将int列保留为int,如果可能的话,不必将其更改为object(然后每次从MySQL数据库将数据读入Python时都要来回地修改)。这可能吗?感谢你的帮助。在

Flink源码剖析:Jar包任务提交流程

Flink基于用户程序生成JobGraph,提交到集群进行分布式部署运行。本篇从源码角度讲解一下Flink Jar包是如何被提交到集群的。(本文源码基于Flink 1.11.3) 1 Flink run 提交Jar包流程分析 首先分析run脚本可以找到入口类CliFrontend,这个类在main方法中解析参数,基于第二个参数定位到run方法: try { // do action switch (action) { case ACTION_RUN: run(params); return 0; case ACTION_RUN_APPLICATION: runApplication(params); return 0; case ACTION_LIST: list(params); return 0; case ACTION_INFO: info(params); return 0; case ACTION_CANCEL: cancel(params); return 0; case ACTION_STOP: stop(params); return 0; case ACTION_SAVEPOINT: savepoint(params); return 0; case "-h": case "--help": ... return 0; case "-v": case "--version": ... default: ... return 1; } } 在run方法中,根据classpath、用户指定的jar、main函数等信息创建PackagedProgram。在Flink中通过Jar方式提交的任务都封装成了PackagedProgram对象。

【Endnote X9服务器运行失败】

【问题】:使用Endnote在word中插入文献的时候,显示服务器运行失败。 【环境】:win10+office2016(家庭版)+Endnote X9 【解决方法】: 方法一: 先打开word,然后在word中打开endnote就不会报错了。 方法二:卸载office2016家庭版,安装专业版。 【吐槽】:厂家预装的软件都是阉割版,包括但不限于输入法和office全家桶。(电脑品牌:dell) 输入法:预装的输入法是单语言版,只能添加英语一种语言,添加其他语言可以加到系统里,但是在切换的时候只能看到一种。现在这个限制貌似已经修复,博主一通设置之后可以切换中、英、日三种语言了。(虽然还有点不流畅,但是可以用了) 例:李さんの日本語本当に上手。 office:预装的office是家庭版,并且!找不到卸载的位置!程序-卸载里找不到office。家庭版office的问题是,使用mathtype向word中写公式的时候会卡死,使用endnote向word中插入文献引用时会报错。 【找不到office卸载的地方怎么办?】: 直接安装专业版的office,虽然安装完之后office的版本显示还是家庭版,但是之前mathtype和endnote在word出现的问题已经不再出现。

linux运行conda create -n your_env_name python=3.6遇到的问题

问题: conda create -n your_env_name python=3.6 Collecting package metadata (repodata.json): failed CondaHTTPError: HTTP 000 CONNECTION FAILED for url https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64/repodata.json Elapsed: - An HTTP error occurred when trying to retrieve this URL. HTTP errors are often intermittent, and a simple retry will get you on your way. ‘https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/linux-64’ 解决方法: 执行conda config --remove-key channels后再运行就行了. 原因是换的源里没有python3.6,把清华源删了就好了(来自一位学弟的解释)

今天第一天进来,以后在这里记录我学习嵌入式的学习过程

这里写自定义目录标题 欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片 学习内容:学习时间:学习产出:生成一个适合你的列表创建一个表格`在这里插`在这里插入代码片`入代码片`设定内容居中、居左、居右SmartyPants 创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。 新的改变 我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客: 全新的界面设计 ,将会带来全新的写作体验;在创作中心设置你喜爱的代码高亮样式,Markdown 将代码片显示选择的高亮样式 进行展示;增加了 图片拖拽 功能,你可以将本地的图片直接拖拽到编辑区域直接展示;全新的 KaTeX数学公式 语法;增加了支持甘特图的mermaid语法1 功能;增加了 多屏幕编辑 Markdown文章功能;增加了 焦点写作模式、预览模式、简洁写作模式、左右区域同步滚轮设置 等功能,功能按钮位于编辑区域与预览区域中间;增加了 检查列表 功能。 功能快捷键 撤销:Ctrl/Command + Z 重做:Ctrl/Command + Y 加粗:Ctrl/Command + B 斜体:Ctrl/Command + I 标题:Ctrl/Command + Shift + H 无序列表:Ctrl/Command + Shift + U 有序列表:Ctrl/Command + Shift + O 检查列表:Ctrl/Command + Shift + C 插入代码:Ctrl/Command + Shift + K 插入链接:Ctrl/Command + Shift + L

mysql1054错误insert_mysql数据表插入数据出现#1054 - Unknown column '1' in 'field list'

展开全部 mysql数据表插入数据出现#1054 - Unknown column '1' in 'field list',这个错误是指32313133353236313431303231363533e4b893e5b19e31333431366339 '1' 这个字段不存在,所以mysql给出了错误原因。 INSERT INTO `tab`(`table_id`, `table_name`, `table_des`, `table_time`) VALUES (`1`,`椅子`,`3`,`1992`); 这个sql语句报错的原因是英文values()中的值应该用单引号''来引用而不是反引号``。 扩展资料 mysql中单引号和反引号的用法介绍: 1、单引号 SQL 使用单引号来环绕文本值。如果是数值,请不要使用引号。 按照别的说法来说就是Varchar类型(也可以说是String、字符串类型)这一些在数据库语句中使用的时候应该使用单引号,而不是直接使用。 而对于数值类型的,反而是不能使用单引号。 2、反引号 是为了区分MYSQL的保留字与普通字符而引入的符号。 有MYSQL保留字作为字段的,必须加上反引号来区分! 所谓的保留字就是select database insert 这一类数据库的sql指令,当我们不得已要拿他们来做表名和字段名的时候 我们必须要加反引号来避免编译器把这部分认为是保留字而产生错误。 保留字既不能作为表名,也不能作为字段名,如果非要这么操作,请记住要增加反引号。

mysql数据库成绩数据类型_mysql数据库基本数据类型

1,整型 tinyint 8 位 有/无符号 smallint 16位 有/无符号 mediumint 24位 有/无符号 int 32位 有/无符号 bigint 64位 有/无符号 2,浮点型 float(m,d) m总位数,d小数位数(约小数点后7位) double(m,d) m总位数,d小数位数 3,时间类型 year、time、date、datetime、timestamp五种类型,主要使用datestamp类型 4,字符类型 char(m) 最大255字节 255B varchar(m) 最大65535字节 64KB tinytext 256KB text 64KB mediumtext 16MB longtext 4GB enum('value1','value2'...) 枚举类型,多选一 set('value1','value2'...) 组合类型 总结:这都是基本的数据类型,应该还有别的,字符型的大小计算不太对!

mysql dba 之路_MySQL DBA 成长之路

如何成为MySQL DBA 互联网高速发展的成功,得益于MySQL数据库的给力支持。MySQL本身发展的速度较快,性能方面提升显著,让传统企业也有想法使用MySQL提供服务。目前看来MySQL DBA的缺口非常大。所以欢迎加入到MySQL DBA的团队中来。 有同学一提到MySQL DBA或是DBA都把高难度入门联系到一块。我从事MySQL DBA差不多10几年了,在这里我也给大家讲述一下怎么成为一名MySQL DBA, 少走湾路,快速成为MySQL DBA。 首先MySQL大多是跑在Linux环境上的,所以我们需要学习一下Linux的知识,最基础的需要了解:Linux的安装及目录结构意义 常用的Linux命令,大概20多个 网络基本知识,进一步了解网关及路由相关概念,dhcp 撑握一定的Linux网络服务,如果LAMP结构,dns, ftp 等 其实具备上面的条件,你就可以开始MySQLDBA的学习之路了,其它的知识,可以在学习中补。 MySQL DBA比较特殊,不像别的数据库分为开发DBA,运维DBA,基本上MySQLDBA要把所有的活都干下来,因为MySQL太简单了,很好搞定。 那么下面给大家说一下MySQL DBA的学习路径:了解MySQL的版本意义 学习MySQL的安装方式,从根本上理解MySQL的启动原理 学习SQL语言,把高中数学中集合知识好好在学习一下,再来看SQL语言 学习SQL在MySQL使用中的一些规范(这些最好找有经验的请教一下,或是看看大会中别人分享的学习思考) 学习MySQL的高级特性: 触发器,事件,存储过程编程,分区等 学习MySQL的复制,了解复制原理及实现和相关高可用架构中有什么不足 学习PXC结构的实现,了解运维中的坑 系统的学习一下MySQL的体系结构,思考如何做MySQL优化,总结配置优化 学习MySQL的备份恢复,这块可能需要多一些时间好好的系统的学习一下 掌握几种压力测试的方法,方便优化后能做一个验证 深入理解Innodb的体系结构,全面理解一下事务及锁的实现,能解析出来一个update tb1 set col1=col1+1 where pk=10; 这样的语句在Innodb都干了什么了。 可以说上面的东西并不是很难,基本上只要认真努力,都可以进入到MySQL DBA的大门了。当然如果想进入更高级的DBA工作环境,还是需要点更高级的知识:理解MySQL的特点,方便在实际环境决择 理解操作系统的IO调度,内存分配,CPU使用等 理解复制的优缺点及改善的方法 理解系统监控及系统瓶颈点分析 有一定的问题排查思路 可以全面的理解高可用的实现及自定义实现高可用架构 有一定的平台管理意识及实现能力 理解拆分的作用及实现的方法 ×××长征始于足下,整体上来说踏上技术这条路,就要学会保持学习,能持续更新,敢于多关注最新的资源,利用现有的资源走上更的境界:了解现有硬件的特点 了解业务的实现及难点 了解常见NoSQL的使用 关注新技术 进入MySQL DBA架构师级别可以进行容量的规划 如果想系统提高一下MySQL DBA技术的,如果你是在职人员,可以利用周六时间来参加一下我的《MySQLDBA周末提高加班》,如果你现在没有工作,那可以考虑拼博3个月参加一下我组织的《MySQL DBA零基础就业脱产班》 一同走上MySQL DBA岗位。请联系我QQ: 1037447289/微信:zhangdh1113. 2016年一起腾飞。 在技术的成长之路,还有有一个比较重要的路径:多参加同行业技术交流,关注行业技术实现。推荐: MySQL中国用户组,FireFlyClub 也欢迎各位加入。

mysql timestamp转date_Mysql中时间戳转为Date的方法示例

前言 在工作中遇到一个情况: 日志系统的表中,时间字段存储的是13位时间戳timestamp而不是日期数据,而在业务中,我们需要通过时间和ip来进行分组查询给定日期的数据. 当然你可以选择在业务层先将传入的日期转为时间戳,再去进行查询,但是既然mysql既然可以直接进行转换,那么省去在业务层的操作何乐而不为呢? 1.首先介绍一下mysql中将时间戳和日期互相转换的函数: 时间戳转换成日期FROM_UNIXTIME(): FROM_UNIXTIME(1429063399,'%Y-%m-%d %H:%i:%s') 如果不需要时分秒,'%Y-%m-%d'就好 上面例子中使用的是10位时间戳,若是13位时间戳需要/1000,如下: FROM_UNIXTIME(1429063399123/1000,'%Y-%m-%d %H:%i:%s') 日期转换为时间戳UNIX_TIMESTAMP(): UNIX_TIMESTAMP('2015-04-15') %Y年、%m月、%d日、%H时、%i分、%s秒最为常用 2.实际使用 在我实际使用中,我还将 DATE_FORMAT()函数(DATE_FORMAT(data,format) 函数用于以不同的格式显示日期/时间数据)和FROM_UNIXTIME()来进行转换: DATE_FORMAT(FROM_UNIXTIME(DateTime/1000),'%Y-%m-%d') SELECT ip,DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d') as date,count(*) FROM s_page where DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d') = ? GROUP BY ip,DATE_FORMAT(FROM_UNIXTIME(timestamp/1000),'%Y-%m-%d') ?为占位符 总结 到此这篇关于Mysql中时间戳转为Date的文章就介绍到这了,更多相关Mysql时间戳转为Date内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

mysql设置两个字段唯一索引吗_mysql多个字段唯一索引

方法: unique index(字段一,字段二) 例子:CREATE TABLE IF NOT EXISTS `ppserver`.`eventTable`( `userId` INT UNSIGNED NOT null, `taskId` INT UNSIGNED NOT null, `date` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `createTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `endTime` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, `taskStatus` INT DEFAULT NULL, `addGoldCoin` int DEFAULT NULL, `addCash` FLOAT DEFAULT NULL, `eventId` INT UNSIGNED AUTO_INCREMENT DEFAULT null, unique index(`userId` ,`taskId`,`date`), PRIMARY KEY ( `eventId`)

mybatis只能连接mysql嘛_Mybatis连接Mysql8.0遇到的坑

先贴一下错误 com.mysql.jdbc.exceptions.jdbc4.MySQLNonTransientConnectionException: Could not create connection to database server. at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:389) at com.mysql.jdbc.Util.getInstance(Util.java:372) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:958) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872) at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2316) at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2069) at com.mysql.jdbc.ConnectionImpl.(ConnectionImpl.java:794) at com.mysql.jdbc.JDBC4Connection.(JDBC4Connection.java:44) at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:422) at com.mysql.jdbc.Util.handleNewInstance(Util.java:389) at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:399) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325) at java.sql.DriverManager.getConnection(DriverManager.java:664) at java.sql.DriverManager.getConnection(DriverManager.java:270) at com.personal.integral.test.JdbcClass.main(JdbcClass.java:16) Caused by: java.lang.NullPointerException at com.mysql.jdbc.ConnectionImpl.getServerCharset(ConnectionImpl.java:2989) at com.mysql.jdbc.MysqlIO.sendConnectionAttributes(MysqlIO.java:1873) at com.mysql.jdbc.MysqlIO.proceedHandshakeWithPluggableAuthentication(MysqlIO.java:1802) at com.

cass批量选目标快捷键_很土很管用!一招搞定批量修改图形高程

最近有个童鞋私信我,遇到了一个棘手难题:我的图做图时使用A高程系统,现在要输出B高程系统成果。A系统比B系统低10m,图形已经用CASS绘制完成。如何用CASS批量修改全图的等高线和高程点的高程值? 分析过程:将已知数据和目标数据对比,找到差距和解决的方法。 已知数据:为A坐标系图形,包括等高线和高程点 处理方式:将全图的等高线和高程点,批量加一个高程常数10,并更新高程注记。 一、批量加高程常数 将全图高程点和等高线的Z值增加10。 操作步骤: 1.新建图形 菜单:文件-新建图形文件 2.插入A坐标系图形 菜单:工具-插入图块 按下图所示设置插入参数 3.检查修改的结果 分别查看等高线和高程点的Z值是否已经增加10。 操作:按住Ctrl键+1,打开对象特性对话框。按下图所示查询修改的结果 二、更新高程注记 1.等高线注记 等高线高程注记,没有随高程值改变而更新。请删除注记后,重新标注。 2.高程点注记 高程点的Z值已经更新,但高程注记未同步更新。可以执行两步操作,高程注记就批量自动更新。 点击菜单:绘图处理-高程点处理-打散高程注记。点击菜单:绘图处理-高程点处理-合成打散高程注记 PS:看起来是逆操作,可是很土很管用!看看下图操作前后的高程点注记。 修改前的高程点 修改后的高程点 复盘总结 解决批量处理全图高程问题,先用插入图块命令,将插入点的高程设置为一个常数,解决批量改高程问题。接着用高程点注记打散和合并操作,将高程点注记更新,解决高程注记更新问题。看起来很土很笨的方法,实实在在的解决了这个棘手的问题。 CASS的民间高手们,也编写了CAD插件解决这个问题,你们还有更好更快的方法吗?请到生态圈(http://o.southgis.com)和大家一起讨论吧!

mysql 刷新_MYSQL FLUSH 刷新缓存

MYSQL当做了权限操作,新加用户,或者是其他表的操作后。要其生效有两种方式,一种是重启服务,另外一种是使用FLUSH命令。第二个方式,使用FLUSH必须有reload权限。 下面是FLUSH命令的主要参数 HOSTS 清空主机缓存表。如果你的某些主机改变IP数字,或如果你得到错误消息Host ... isblocked,你应该清空主机表。当在连接MySQL服务器时,对一台给定的主机有多于max_connect_errors个错误连续不断地发生,MySQL认定某些东西错了并且阻止主机进一步的连接请求。清空主机表允许主机再尝试连接。见18.2.3 Host '...' isblocked错误)。 LOGS 关闭并且再打开标准和更新记录文件。如果你指定了一个没有扩展名的更新记录文件,新的更新记录文件的扩展数字将相对先前的文件加1。 PRIVILEGES 从MySQL数据库授权表中重新装载权限。 TABLES 关闭所有打开的表。 STATUS 重置大多数状态变量到0。 一般情况,例如新增了用户,或者修改了某个用户的权限之后,就需要使用flush命令,跟随参数 privileges flush privileges;

Maven详解及实例

1 什么是Maven Maven对项目进行模型抽象,充分运用的面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。简单的来说Maven是一个项目管理工具,它包含了一个项目对象模型(POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),用来运行在生命周期阶段中插件目标的逻辑。 2 为什么要使用maven 使用maven主要有2点:依赖管理和生命周期 (1)依赖管理:对第三方的jar包进行统一的管理 ①添加第三方jar包:开发时使用第三方jar包最简单的方法就是复制粘贴到WEB-INF目录下的lib目录下,每个新工程都要复制粘贴,从而造成工作区中存在大量重复的文件。通过maven只需要维护一个文本形式的jar包的引用,称之为“坐标”,自动从maven仓库中下载到工程(体现了代码重用的原则) ②jar包之间的依赖关系:jar包往往不是孤立存在的,很多jar包都需要在其他jar包的支持下才能够正常工作,Maven就可以替我们自动的将当前jar包所依赖的其他所有jar包全部导入进来,无需人工参与不必了解这个依赖关系。 ③jar包之间的冲突:前面是jar包少了无法工作,有时jar包多了项目仍然无法正常工作,Maven中内置了两条依赖原则:最短路径者优先和先声明者优先 (2)生命周期 生命周期的一键构建,提供了一套对项目生命周期管理的标准,开发人员,测试人员统一使用maven进行项目的构建.项目的生命周期管理:编译,测试,打包,部署,运行 3 Maven的核心概念 核心概念包括以下几个方面:POM,约定的目录结构,坐标,依赖,仓库,生命周期,插件和目标,继承,聚合 3.1 POM Project Object Model:项目对象模型。将Java工程的相关信息封装为对象作为便于操作和管理的模型。Maven工程的核心配置,配置Maven就是pom.xml文件中的配置。 3.2 约定的目录结构 JavaEE开发领域普遍认同一个观点:约定>配置>编码。意思就是能用配置解决的问题就不编码,能基于约定的就不进行配置。而Maven正是因为指定了特定文件保存的目录才能够对我们的Java工程进行自动化构建。 目录结构含义参见前面的描述。 3.3 坐标 Maven的坐标使用三个向量在Maven的仓库中唯一的确定一个Maven工程: ①groupId:公司或组织的域名倒序+当前项目名称 ②artifactId:当前项目的模块名称 ③version:当前模块的版本 <groupId>com.quinto</groupId> <artifactId>rtwd-parent</artifactId> <version>1.0-SNAPSHOT</version> 将上面3个向量连起来:com.quinto.rtwd-parent的字符串作为目录结构到仓库中查找:com/quinto/rtwd-parent/1.0-SNAPSHOT/rtwd-parent-1.0-SNAPSHOT.jar 注意:自己的Maven工程必须执行安装操作才会进入仓库。安装的命令是:mvn install 3.4 依赖 依赖:当A jar包需要用到B jar包中的类时,我们就说A对B有依赖。 当前工程会到本地仓库中根据坐标查找它所依赖的jar包,配置的基本形式是使用dependency标签指定目标jar包的坐标。如下: <dependencies> <dependency> <!--坐标--> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>${junit.version}</version> <!--依赖的范围--> <scope>test</scope> </dependency> </dependencies> 直接依赖和间接依赖:如果A依赖B,B依赖C,那么A→B和B→C都是直接依赖,而A→C是间接依赖。 3.4.1 依赖的范围 (1)compile ①main目录下的Java代码可以访问这个范围的依赖 ②test目录下的Java代码可以访问这个范围的依赖 ③部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下 如:对主程序的依赖。主程序、测试程序和服务器运行时都需要用到。 (2)test ①main目录下的Java代码不能访问这个范围的依赖 ②test目录下的Java代码可以访问这个范围的依赖 ③部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下 如:对junit的依赖。仅仅是测试程序部分需要。

ROS学习笔记(2)——ROS通信机制

ROS的通信机制主要有话题通信,服务通信和参数,这里先简单介绍一下话题通信和服务通信。在介绍这两者之前先简单介绍一下节点与节点管理器的内容。 节点 执行具体任务的进程、独立运行的可执行文件;不同节点可使用不同的编程语言,可分布式运行在不同的主机;节点在系统中的名称必须是唯一的。 一个节点即为一个执行单元,通过节点管理器建立与其他节点之间建立联系完成通信。 节点管理器 为节点提供命名和注册服务;跟踪和记录话题/服务通信,辅助节点相互查找、建立连接;提供参数服务器,节点使用此服务器存储和检索运行时的参数。 节点管理器是整个ROS运行的核心。通过roscore可以启动节点管理器,通过rosrun可运行所需要的节点,这些节点受节点管理器运行、记录和维护。 具体关系图如下: 话题通信 话题通信是ROS通信机制中最为频繁最为复杂的通信模式。上面的这张图很好的体现了话题通信的内容。ROS Master(节点管理器)管理所有结点。这里有两个主要节点,分别是发布者和订阅者。这两个节点的启动顺序没有先后关系。当publisher节点启动后会发布一个消息,这个消息会通过topic这个总线管道把数据传输给subscriber,subscriber订阅得到这个消息并执行相应的操作。看到个很形象的比喻,就好比微信群里某个人(publisher)发了个消息,其他的人(subscriber)就都能看到。 服务通信 对于服务通信,在上图中有两个主要节点。client客户端先产生一个请求,通过Serivce服务传递给Server端。Server端收到请求后会执行相应的操作,同时会有一个反馈Response反馈给client,这样客户端也会知道服务端的指令是否执行成功。这里的服务端和之前的话题通信中的订阅者有相似之处,它的代码实现中回调函数是十分重要的部分。 话题与服务的区别 由于话题和服务通信模式的不同,适用的场景也不尽相同。话题通信更适合用于连续高频的数据发布和接收,而服务通信则适合用于偶尔调用或执行的某一项功能。同时话题通信数据传输的可靠性比较低,若要考虑高精度传输,则应优先选择服务通信。 以上则是ROS通信机制的一个简单介绍,若有疑问或错误的地方可在评论区留言,共同讨论。

布线问题(队列式分支限界)

计算机算法设计与分析(第5版)王晓东著 p178 0:电路板中可行的方格 1:障碍物 2:起点 是按课本上来的,初始起点设为2 是为了和 0,1进行区分 起点:1,1 终点: 4,6 1.path[] 数组是存放的起点到终点的路径方格 2.电路板最外面的一层全部赋值为1,表示围墙 3.数据结构是用的循环队列,循环队列中的最后一个位置是不存放值的,我这里的MAX是设的足够大,先进先出(FIFO)的方式满足队列式分支限界法 实现结果: C代码: //穷举+回溯 #include<stdio.h> #include<stdlib.h> #include<math.h> #include<malloc.h> #define n 5 //方格行 #define m 6 typedef struct{ //方格 int row; //行 int col; }Position; #define MAX 100 //循环队列大小 typedef struct{ Position *base; int front,rear; }CqQueue; //初始化队列 void InitQueue(CqQueue &Q) { Q.base=(Position*)malloc(MAX*sizeof(Position)); if(!Q.base) exit(0); Q.front=Q.rear=0; } //判断队列是否为空 bool QueueEmpty(CqQueue Q) { if(Q.front==Q.rear) return true; ///exit用于退出程序,return退出当前的函数 return false; } //尾插队列 int EnQueue(CqQueue &Q,Position e) { if((Q.

creo分割实体_Proe/Creo曲面分割·这个新功能你会用了吗?

原标题:Proe/Creo曲面分割·这个新功能你会用了吗? 见过UG的曲面分割功能,对实体零件曲面进行分割(对一个实体零件的某个面直接拆分成两个曲面,或者等分拆分曲面),如同在Proe里面的曲面修剪一样的方便, 而新版本的Creo软件也有了这个功能,利用“分割曲面”特征可将曲面的某个区域从原始曲面中分离出来,以便可以独立于该曲面的剩余部分对分割的区域进行处理。分割的曲面可以是实体几何,也可以是面组。 如上图所示,当我们只需要选择某一个单独的曲面时,在之前的proe版本中操作则相对繁琐,而利用分割曲面则只需从原始曲面中分离出选定的轮廓,即可形成独立曲面。 具体步骤如下: STEP1:选择要进行分割的曲面或实体表面,并从编辑的下拉菜单下选择“分割曲面”功能 STEP2:从分割曲面的控制面板中,选择要进行分割的轮廓,然后确定便可以实现单块曲面的分割,如下图所示 STEP3:完好操作即可将整块面按照选定轮廓进行分割 注: 分别针对每个选定的轮廓:为每个选定轮廓创建一个单独的曲面。 同时针对所有选定的轮廓:为所有选定轮廓创建一个单一曲面。 [责任编辑]:一加一学院·思琪 流群请加下方群,练习方法讨论将会在『交流群』中交流分享, 版权声明: 本文由一加一学院原创整理编辑,版权均为“一加一学院”独家所有,其他媒体转载请注明出处,并添加源链接返回搜狐,查看更多 责任编辑:

千兆路由器怎么设置网速最快_如何设置路由器使网速最快

有些时候我们自己家路由器的网速达不到办理宽带时的要求,通讯商又说那边没有问题,改怎么办呢?其实我们可以设置一下路由器进行加快网速,下面是学习啦小编整理的设置路由器网速最快的方法,供您参考。 设置路由器网速最快的方法 在浏览器里输入路由器IP地址,192.168.1.1大多数默认是它。账号密码默认是admin。 找到无线设置下的基本设置 开启wds功能, 点击下面的扫描 由图中可以看出,3信道信号最强,11、6信道最多,这三个不要选择,设置为其他数字的信道为佳,最好相差2个信道,我这里可以设置8,9信道网络连接速度最好。 点击返回,在无线设置里修改信道吧,最好选用40Mhz带宽,重启路由会有惊喜的。ps:20Mhz覆盖范围广,速度慢一些,40Mhz覆盖范围窄,不过速度快。 提高电脑网速的方法 在【搜索栏】也就是左下角开始按钮处打开后的最下面,搜索:gpedit.msc,上面的现示区就出现了这个程序。【双击】 双击后就出现如图的情况,不专业呀,找到计算机配置下的【管理模板】 【双击】就出现了它的子项,找到【网络】 【双击】在它的子项中找【Qos数据包计划程序】 【双击】找到【限制可保留带宽】 【双击】显示情况是未配置,这种情况下是默认保留20%。 点选启用,并把限制百分比设为零。 确定,完成,你释放了保留带宽,试试是不是快了。

aspose 转pdf表格大小乱了_java下用aspose.cell基于Excel模板导出PDF文件异常

我用Spire.XLS for Java类库来进行Excel转PDF没出现这个问题呢,Excel表格过宽的话,导出来的PDF宽度也会相应变宽,同时还可进行页面大小设置。你可下载免费版试试。https://www.e-iceblue.cn/Downloads/Free-Spire-XLS-JAVA.html 以下代码可供参考: import com.spire.xls.*; public class toPdfWithChangePageSize { public static void main(String[] args) { //Create a workbook Workbook workbook = new Workbook(); workbook.loadFromFile("C:\Users\Test1\Desktop\Sample.xlsx"); for(int i = 0; i < workbook.getWorksheets().getCount(); i ++) { Worksheet worksheet = workbook.getWorksheets().get(i); //Change the page size worksheet.getPageSetup().setPaperSize(PaperSizeType.PaperA3); } //Save to PDF file workbook.saveToFile("output/toPdfWithChangePageSize.pdf", FileFormat.PDF); } }

vmoptions默认配置_idea VM options参数优化

idea 如果不优化相关的配置会很卡,而且热加载也会很慢,每一次保存都在那儿等很久,所以配置好 VM options会好很多。 具体操作如下: 1.打开设置页面 Settings 2.选择:Bulid,Execution,Deployment>Bulid Tools>Maven>Runner 3.找到:VM Options 5.Apply vm options 优化参数如下: -Xms2048m -Xmx2048m -XX:MaxMetaspaceSize=512m -XX:MetaspaceSize=512m -XX:InitialBootClassLoaderMetaspaceSize=64M -XX:NewRatio=2 -XX:SurvivorRatio=8 -XX:MaxTenuringThreshold=6 -XX:+UseConcMarkSweepGC -XX:CMSFullGCsBeforeCompaction=5 -XX:+CMSParallelRemarkEnabled -XX:+CMSClassUnloadingEnabled -Xss1024k -XX:+DisableExplicitGC -XX:+ExplicitGCInvokesConcurrentAndUnloadsClasses -XX:ReservedCodeCacheSize=240m -XX:SoftRefLRUPolicyMSPerMB=50 -ea -Dsun.io.useCanonCaches=false -Djava.net.preferIPv4Stack=true -XX:+HeapDumpOnOutOfMemoryError -XX:-OmitStackTraceInFastThrow -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -Xloggc:D:/temp/gclog/idea.gc.log -XX:+PrintHeapAtGC

打印机总是打一张停一下_条码打印机走纸不准怎么办?解决办法都在这了

最近经常接到客户反映条码打印机走纸不准,每次都是走一张半,或者打一张空一张,还有客户反映打印后的撕纸位置不对,这就是条码打印机的校准或者是打印模式出了问题,遇到这种情况我们该怎么解决呢,砹石科技给大家做了个简单的总结: 1、请先确定纸张和碳带是否装好? 一般在打印机的内部都有实线和虚线的标注,分别代表了标签的色带的走纸通道,如果出现走纸不准首先确定一下耗材的安装有无问题 2、确定介质类型和打印模式是否正确 条码打印机的打印介质分为连续纸和不连续纸两种类型,如果设置为连续纸类型,打印机是不识别纸张位置的,可以进入打印机 或者驱动查看相应设置,打印模式则分为回卷Rewind、撕纸Tear off、剥离Peel off、切刀Cutter等模式,最常用的是撕纸模式Tear off, 如果设置为剥离模式会造成打印之后回退的现象造成撕下位置不对,同样可以在驱动和打印机之中做确认,优先确认驱动,因为一般 驱动设置是会覆盖打印机的设置的。如果是打印方式不对,比如热转印选择成了热敏是不会影响打印机找纸的,只是在打印过程中可能会 报错,所以您在使用过程中注意区分。 2、检查纸张感应器是否调在纸的宽度范围内(吊牌纸请调在洞上纸边)。 如果您是桌面机的话感应器一般都是固定的,如果您是打孔耗材请确认耗材绕向有无问题,确认一下孔的位置和耗材留孔位置 是否对的上,如果您是台式机的话稍微复杂一点,以斑马105sl PLUS为例,感应器为上下一对,您需要确认感应器在纸张范围内 ,而且上下正对,有些纸张比较窄有可能避开了感应通道,需要您手动移动一下感应器的位置,上下反射式感应器,所以需要上下 位置一致。 3、检查感应器是否被纸粘到或有脏东西。如果有请将纸张清掉或拿吹气球或者小毛刷清理感应器。 4、查看页面设置的标签长度是否与实际纸张相同。如果设置不同也会造成条码打印机走纸不准的情况 5、感应器灵敏度调整 如果上述几种方法都不能解决的话,可以尝试一下手动校准,具体操作步骤请查看相应机器的用户手册 如果以上几种方法还不能排除故障极有可能是硬件出了问题,这边建议您联系您的采购商做保处理 如果您有标签需求或者您在标签使用过程中有任何问题,都可以随时联系我们,会有专人为您答疑

伺服电机回原点的原理_高档的数控机床及中心机的原点档块都是机械式而不会是感应式的,且其长度一定大于电机一圈转换为直线距离的长度!...

关注我 每天帮你涨知识 回原点的原理基本上常见的有以下几种: 一、伺服电机寻找原点时,当碰到原点开关时,马上减速停止,以此点为原点。 这种回原点方法无论是选择机械式的接近开关,还是光感应开关,回原的精度都不高,受温度、噪音、粉尘、电源波动等等的影响,信号的反应时间会每次有差别. 再加上从回原点的高速突然减速停止过程,可以百分百地说,就算排除机械原因,每次回的原点差别在丝级以上。 二、回原点时直接寻找编码器的Z相信号,当有Z相信号时,马上减速停止。这种回原方法一般只应用在旋转轴,且回原速度不高,精度也不高。 三、应用在数控机床上比较精准的方式:电机先以第一段高速去找原点开关,有原点开关信号时,电机马上以第二段速度寻找电机的Z相信号,第一个Z相信号一定是在原点档块上。 (所以你可以注意到,其实高档的数控机床及中心机的原点档块都是机械式而不会是感应式的,且其长度一定大于电机一圈转换为直线距离的长度)。 找到第一个Z相信号后,此时有两种方试,一种是档块前回原点,一种是档块后回原点(档块前回原点较安全,欧系多用,档块后回原点工作行程会较长,日系多用)。 以档块后回原为例,找到档块上第一个Z相信号后,电机会继续往同一方向转动寻找脱离档块后的第一个Z相信号。一般这就算真正原点,但因为有时会出现此点正好在原点档块动作的中间状态,易发生误动作,且再加上其它工艺需求,可再设定一偏移量; 此时,这点才是真正的机械原点。此种回原方法是最精准的,且重复回原精度高。 END

ROS学习笔记(1)——工作空间与功能包的创建和配置

ROS中的工作空间类似于我们平常使用Visual Studio或者其他IDE来创建的工程文件。我们所有功能包的源码、配置、编译都在此工作空间下完成。 首先在开始前有必要介绍一下工作空间(workspace)下包含的文件夹及其作用。工作空间下共包含四个文件夹,分别是: src: 代码空间,是用来放置所有功能包的代码,配置文件,以及后面会学到的launch文件等,都是放在src文件夹中。 build: 编译空间,放置编译过程中所产生的中间文件,基本不用去关心这个文件夹。 devel: 开发空间,用来放置编译生成的可执行文件,一些库和脚本,在以后的编程中会用到 install: 安装空间,用install指令的安装结果放置的文件夹。 这里devel和install文件夹在功能上是有些类似的,在ROS2.0中对其进行了改变。 创建工作空间 首先在/home目录也就是主目录下单独建立一个catkin_ws文件夹作为工作空间的文件夹,这里文件夹名称可根据需求自定义。在catkin_ws文件夹下定义src文件夹,这个名字就不能更改只能是src了。 mkdir -p ~/catkin_ws/src 然后切换路径到刚刚创建的src的目录下: cd ~/catkin_ws/src 然后在这里初始化工作空间: catkin_init_workspace 执行完这些步骤后会发现在src文件夹的下面多出一个文件 接着返回到工作空间catkin_ws文件夹下 cd ~/catkin_ws/ 然后对这个工作空间编译,每次编译都必须在工作空间根目录下进行 catkin_make 这时文件夹里虽然没有代码,但会对这个空的文件夹进行编译,同时会产生build和devel两个文件夹。 install文件夹的产生还需要输入这个指令: catkin_make install 这样就可以看到了 创建功能包 创建代码的时候,必须先在src目录下创建一个功能包,而不是直接将代码放在src目录下进行编译。功能包是ROS里放置源码的最小单元,在功能包里才能放置编写的代码文件。并且功能包的创建要将路径切换到src目录下 cd ~/catkin_ws/src 创建功能包的格式如下: catkin_create_pkg <package_name> [depend1] [depend2] [depend3] 这里catkin_create_pkg是创建功能包的指令,package_name是功能包的名称,自定义。后面的几项depend是这个功能包所需要的依赖项(包括官方提供的一些库啥的)。例如: catkin_create_pkg test_pkg std_msgs rospy roscpp 我们可以看到在/catkin_ws/src的目录下又多了一个test_pkg文件夹。打开这个文件夹,我们可以看到里面有两个文件夹,其中src就是我们平常放代码的地方。还有两个文件,这两个文件在后面编译的时候会用到。 这时,我们再来编译一下,依旧是先回到工作空间的目录下 cd ~/catkin_ws catkin_make 这时编译后的结果就如上图所示,我们可以看到他也检测到了那个功能包并对它进行了编译。 若是功能包里有代码,我们想去运行某个程序时,必须先设置一下环境变量 source ~/catkin_ws/devel/setup.bash 这个指令在每次程序的编译后都要进行一遍。如果怕忘了,还有另外一个方法。在主文件夹的下面的隐藏文件里找到.bashrc文件并打开。 在文件的最后一行加上环境配置的指令。 这里devel前面是自己文件的路径。根据自己的情况而定。 基本的工作空间和功能包的创建和配置就这些,还有一些会需要在功能包的CmakeList.txt和package.xml文件里需要设置的一些添加项,到时候结合具体的例子再说吧。最后要注意的一点是: 在同一个工作空间下,不允许存在同名功能包,在不同的工作空间下可以存在同名功能包。

Educational Codeforces Round 102

一. A.Replacing Elements A题链接 (1)题意: 给你一个数组,可以选择其中三个不同位置的数i,j,k,使得a[i] = a[j] + a[k],问能不能经过0次或者多次操作使得数组里面的数都小于等于d (2)题解: 能够使数组在任何时候都小于等于d的话,要么是存在两个数相加都不超过d,就可以使得任何一个数都 = 这两个数相加,要么就是所有数都已经不超过d,直接满足条件 (3)代码: #include <bits/stdc++.h> using namespace std; typedef long long ll; int t,a[1000]; void solve(){ int n,d,flag = 0; cin>>n>>d; for(int i = 1; i <= n; i++){ cin>>a[i]; if(a[i] > d) flag = 1; } if(!flag) { puts("YES"); return ; } sort(a+1,a+1+n); if(a[1] + a[2] <= d) puts("YES"); else puts("NO"); } int main(){ cin>>t; while(t--) solve(); return 0; } 二.

八数码(双向BFS和A *和康托展开)

八数码(双向BFS和A * 和康托展开) https://www.luogu.com.cn/problem/P1379(传送门) 一道题用三种方法来写 题目大意 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字。棋盘中留有一个空格,空格用0来表示。空格周围的棋子可以移到空格中。要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了使题目简单,设目标状态为123804765),找到一种最少步骤的移动方法,实现从初始布局到目标布局的转变。 输入格式 输入初始状态,一行九个数字,空格用0表示 输出格式 只有一行,该行只有一个数字,表示从初始状态到目标状态需要的最少移动次数(测试数据中无特殊无法到达目标状态数据) 输入 #1复制 283104765 输出 #1复制 4 样例可变成这样 一、康托展开 康托展开 函数cantor()实现的功能是 : 输入一个排列,计算出它的cantor值 即在全排列中是第几个。 例如 12345 cantor值是 1; 12354 cantor值是 2;12435cantor值是 3; 那么如何实现呢?很简单 比如说求2143是{1.2.3.4}的全排列第几大的数 1、比首位2小的只有1这一个数,后面3个数的排列有3!种,所以ans+=1 × \times × 3!; 2、首位为2,比第二位1小的数的个数为0,后面两个数的排列有2!种,所以ans+=0 × \times × 2!; 3、前面为21,比第三位4小的只有3一个(因为前面21已经用了),后面的一个数的排列有1!种,所以ans+=1 × \times × 1!; 4、前三位为214,emmm,不用看也是0了(因为总共只有四位) 总的来说就是 从第一位依次往后遍历,看在未出现的元素中比当前位小的有多少个,然后乘上后面的位数个数的阶乘。累积起来即可。 代码 int cantor(string x){ int len=x.length(); int ans=0; for(int i=0;i<len;i++){ int t=0;//记录在当前位之后比当前位小的数的个数 for(int j=i+1;j<len;j++){ if(x[j]<x[i]) t++; } ans+=t*(len-i-1)!

python中scipy.optimize_使用Python优化(scipy.optimize)

有时,数值优化器无论出于何种原因都不起作用.我们可以将问题的参数化略有不同,它只会起作用. (并且可能更快) 例如,对于(0,1)的边界,我们可以有一个变换函数,使得(-inf,inf)中的值在被转换后最终会在(0,1)中结束. 我们可以用等式约束做类似的技巧.例如,我们可以将维度从3减少到2,因为x中的最后一个元素必须是1-sum(x). 如果它仍然不起作用,我们可以切换到不需要衍生信息的优化器,例如Nelder Mead. In [111]: def trans_x(x): x1 = x**2/(1+x**2) z = np.hstack((x1, 1-sum(x1))) return z def F(x, y, gamma = 0.2): z = trans_x(x) return -(((z/y)**gamma).sum())**(1./gamma) In [112]: opt = minimize(F, np.array([0., 1.]), args=(np.array(y),), method='Nelder-Mead') opt Out[112]: status: 0 nfev: 96 success: True fun: -265.27701747828007 x: array([ 0.6463264, 0.7094782]) message: 'Optimization terminated successfully.' nit: 52 结果是: In [113]: trans_x(opt.x) Out[113]: array([ 0.29465097, 0.33482303, 0.37052601]) 我们可以通过以下方式对其进行可视化:

thiefbook怎么用_到底有没有用?Touch Bar的正确打开方式

如果你是一个Mac用户或者正在纠结是否购买Mac电脑,一定都曾经纠结过Touch Bar的问题。看起来很炫酷,但实际上用处似乎并没有很多,而且还要付出高昂的价格。 所以这篇文章我整理了一些Touch Bar的优缺点,看完之后相信你对这个功能应该就会有一个客观的评价。Touch Bar现在也成了Mac的标配,所以还是有了解的必要性。 Touch Bar有什么缺点 影响视觉 这算是我比较个人的观点。我们在使用电脑的时候,一般是眼睛看着屏幕,而手操作键盘。尤其是对键盘熟悉之后,基本上不会看,这样效率是最高的。 而Touch Bar因为是一块显示器,还会依据不同软件的适配显示不同的快捷功能。表面上看上去似乎很不错,但实际体验下来我觉得并没有很好,因为你的视线一直在换来换去。 容易误触 刚开始使用的时候,真的非常头疼这个问题。尤其是解锁电脑的时候,经常误触Siri,非常麻烦。而且Touch Bar并没有提供振动反馈(可以通过安装第三方软件实现),所以你必须要看它才行。 不过我们可以对Touch Bar默认的选项进行修改,在【设置】中选择【键盘】中的【自定功能栏】,强烈建议把Siri替换掉,随便换一个常用的就可以。 软件适配并不好 除了苹果一些自带的应用,基本上第三方软件对Touch Bar的支持都不算太好。功能都比较鸡肋,算不上很实用。尤其是在Touch Bar的价格对比下,就觉得这些功能不存在似乎影响也不大。 Touch Bar可以怎么用 说了很多缺点,但其实Touch Bar还是有一定用处的。我在平时的使用过程中,也发现了一些Touch Bar还不错的地方。也许适用性并不广泛,仅供参考。 快速切换PPT 这个功能我还挺喜欢的,因为有时候会外出校园讲座或者企业上课,Touch Bar会直接显示所有的PPT,切换起来就会快很多。 对一个讲师而言,最重要的就是自由控制演讲节奏了。而演讲者模式只能看到下一张,Touch Bar则可以看到全部并任意切换。 辅助剪辑视频 如果使用音频或视频播放软件,在Touch Bar可以直接控制播放进度,滑动就可以调节。用起来也还行,但也只是及格的水平。 再比如在用Final Cut Pro剪辑视频的时候,就可以通过Touch Bar来调节时间线的位置和长度。但是我觉得用起来一般,最多只能算锦上添花,不如快捷键来得效率高。 当成一个额外的Dock栏 默认状态下,一般Touch Bar不会显示内容,感觉这样有点浪费。我们其实可以把它当成一个额外的Dock栏,不过这需要安装一款第三方工具:TouchSwitcher。 这是一款免费开源的软件,下载地址:https://hazeover.com/touchswitcher.html 安装好之后,你的Touch Bar会多一个App Store的图标,点击它就可以直接看到应用图标了,而且从左到右也会有一个透明度的变化,左边暗一些右边亮一些。 除了使用TouchSwitcher,还有另外一个差不多的工具:Pock,同样也是免费,下载地址:https://pock.dev/ 它和TouchSwitcher基本功能差不多,区别在于Pock是直接复刻Dock栏,所以它没有滑动的效果。不过它可以在Touch Bar上看电池、WiFi等信息,这是TouchSwitcher所不具备的。 看歌词、小说 Touch Bar可以直接显示歌词,这个功能我还挺喜欢的。对效率没有什么帮助,但是看起来还是挺酷的。安装一个QQ音乐,然后点击歌词显示就可以了。 而如果你想在Touch Bar看小说,需要安装一款软件:Thief Book,用它你就可以在Touch Bar上看小说了,而如果你还炒股,也可以把股票的实时信息放到这里。 Thief Book也是免费的软件,还同时有翻页功能和老板键。下载地址: https://github.com/cteamx/Thief-Book 如何让Touch Bar震动 默认状态下,在Touch Ba上点击任何内容都不会有震动反馈。如果你想实现这个功能,需要安装一款软件:Haptic Touch Bar。 安装好之后,你在使用的时候每按一下MacBook都会震动一下,不过没有分区域震动。当然用这个的缺点就是在于耗电量会迅速增加,所以大家根据个人情况选择。 写在最后 最后还有一个关于Touch Bar的小操作,按住键盘上的Com+Shift+6可以直接截图Touch Bar,虽然这个功能平时用的几率应该不多。 整体使用下来,我的观点是:Touch Bar确实有一定的用处,但它绝对不是一个必需的功能,尤其是在多出的价格对比下。

python实现进程调度算法_python中FCFS调度等待时间的计算算法

processes = [ {"pid": "P0", "burst_time": 5, "arrival_time": 0, "service_time": None, "waiting_time": None}, {"pid": "P1", "burst_time": 3, "arrival_time": 1, "service_time": None, "waiting_time": None}, {"pid": "P2", "burst_time": 8, "arrival_time": 2, "service_time": None, "waiting_time": None}, {"pid": "P3", "burst_time": 6, "arrival_time": 3, "service_time": None, "waiting_time": None} ] # No waiting time for first process processes[0]["waiting_time"] = 0 # Service_time of the first process is it's arrival time processes[0]["service_time"] = processes[0]["arrival_time"] for i in range(1, len(processes)):

设计模式总结

一.单例模式七种写法: 1.第一种(懒汉,线程不安全): public class Singleton { private static Singleton instance; private Singleton (){} public static Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 这种写法lazy loading很明显,但是致命的是在多线程不能正常工作。 2.第二种(懒汉,线程安全): public class Singleton { private static Singleton instance; private Singleton (){} public static synchronized Singleton getInstance() { if (instance == null) { instance = new Singleton(); } return instance; } } 这种写法能够在多线程中很好的工作,而且看起来它也具备很好的lazy loading,但是,遗憾的是,效率很低,99%情况下不需要同步。 3.第三种(饿汉):

Java中集合整理

总图: 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。 概述: List , Set, Map都是接口,前两个继承至Collection接口,Map为独立接口Set下有HashSet,LinkedHashSet,TreeSetList下有ArrayList,Vector,LinkedListMap下有Hashtable,LinkedHashMap,HashMap,TreeMapCollection接口下还有个Queue接口,有PriorityQueue类 注意: Queue接口与List、Set同一级别,都是继承了Collection接口。 看图你会发现,LinkedList既可以实现Queue接口,也可以实现List接口.只不过呢, LinkedList实现了Queue接口。Queue接口窄化了对LinkedList的方法的访问权限(即在方法中的参数类型如果是Queue时,就完全只能访问Queue接口所定义的方法 了,而不能直接访问 LinkedList的非Queue的方法),以使得只有恰当的方法才可以使用。 SortedSet是个接口,它里面的(只有TreeSet这一个实现可用)中的元素一定是有序的。 总结: Collection接口: — List 有序,可重复 ArrayList 优点: 底层数据结构是数组,查询快,增删慢。 缺点: 线程不安全,效率高Vector 优点: 底层数据结构是数组,查询快,增删慢。 缺点: 线程安全,效率低LinkedList 优点: 底层数据结构是链表,查询慢,增删快。 缺点: 线程不安全,效率高 —Set 唯一 HashSet 底层数据结构是哈希表。(无序,唯一) 如何来保证元素唯一性? 1.依赖两个方法:hashCode()和equals() LinkedHashSet 底层数据结构是链表和哈希表。(FIFO插入有序,唯一) 1.由链表保证元素有序 2.由哈希表保证元素唯一 TreeSet 底层数据结构是红黑树。(唯一,有序) 1. 如何保证元素排序的呢? 自然排序 比较器排序 2.如何保证元素唯一性的呢? 根据比较的返回值是否是0来决定 针对Collection集合我们到底使用谁呢?(掌握) 唯一吗? 是:Set 排序吗? 是:TreeSet或LinkedHashSet 否:HashSet 如果你知道是Set,但是不知道是哪个Set,就用HashSet。 否:List 要安全吗? 是:Vector 否:ArrayList或者LinkedList 查询多:ArrayList 增删多:LinkedList 如果你知道是List,但是不知道是哪个List,就用ArrayList。 如果你知道是Collection集合,但是不知道使用谁,就用ArrayList。 如果你知道用集合,就用ArrayList。 Map接口: Map接口有三个比较重要的实现类,分别是HashMap、TreeMap和HashTable。 TreeMap是有序的,HashMap和HashTable是无序的。Hashtable的方法是同步的,HashMap的方法不是同步的。这是两者最主要的区别。 这就意味着:

输出为pdf怎么居中_新手必看:1分钟将几千张CAD图纸保存为PDF格式

CAD图纸怎么保存为PDF格式呢?很多小伙伴刚入门的时候都会问这个问题。将CAD图纸保存为PDF不仅可以减少占用内存,而且也方便我们的查看,防止在传输过程中图纸乱掉。那么,今天小编就来给萌新们科普CAD图纸保存为PDF格式的方法,1分钟就能搞定上千张图纸! 1、单个文件转换法 当我们绘制完图纸的时候,我们可以点击左上角的【文件】——【打印】。 在打印机/绘图仪一栏选择DWG TO PDF.PC3,再选择【居中打印】,然后在【打印范围】下方的【显示】旁边有个小小的三角形,点击它,选择打印范围~ 然后我们在文件类型中选择.pdf格式,点击保存,这样我们的图纸就被保存为PDF格式了! 2、批量转换法 上面的方法是针对单张图纸的,如果当我们遇到需要转换多张图纸的时候,那么上面这个方法效率就有点低了,那么有什么方法能够批量保存为PDF格式吗?当然有!小编这就来告诉你! 首先先打开我们的CAD软件,点击菜单中的【打印】——【批处理打印】。 此时会弹出一个窗口,我们可以在这里导入我们所有要转换为PDF的图纸,我们按Ctrl键就可以同时多选了。 将文件导入进来之后,我们在【发布为】中选择PDF格式,然后在发布选项中设置储存位置,点击确定。 最后点击【发布】即可,这样我们就可以到我们刚刚设置的储存位置去找我们的图纸啦!这个批量转换的方法十分快速哦! 这两个方法大家都学起来了没有?关键时刻绝对能派上用场的!不会的话赶紧学起来哦!

python utc 时间

python中,我们使用datetime处理日期、时间相关。 获取当前时间,主要有两个方法: datetime.now datetime.now():读取的时间是系统的本地时间,也就是说,如果系统时区默认没有设置,那么读取的就是世界标准。 datetime.utcnow() datetime.utcnow():读取的时间一直都是系统的“世界标准时间”,不管系统的本地时区是否设置,读取的时间不会随这些设置变化。 本地时间与utc时间的转化 rom datetime import datetime, timedelta now_time = datetime.now() utc_time = now_time - timedelta(hours=8) # UTC只是比北京时间提前了8个小时 utc_time = utc_time.strftime("%Y-%m-%d %H:%M:%S") print(utc_time) 参考文章: Python中datetime.now() 和 datetime.utcnow()的用法和区别 python UTC时间转换

手机拨出等待时间长_手机打不出去电话怎么回事 一分钟轻松排查原因

近段时间,有网友询问,手机出现打不出电话的情况,这是咋回事呢?针对这个问题,我们罗列出了几种可能性,一起来看一下是什么造成这种情形的吧。 具体方法: 第一步、我们将手机重启,并且长按电源键几秒钟,重新开机。如果没有回应,就需要插拔电板,再开机。 第二步、 查看手机上角是否显示有信号,若无信号,或者连信号图标都不显示,如下图,那就重新插拔sim卡或 更换sim卡尝试。 第三步、检查手机是否为飞行模式或者离线模式,此模式下网络是断开的,自然也打不了电话。这就需要大家取消该模式就好了。 第四步、实际如果也不是飞行模式或者离线模式,并且前一秒还能打电话。可能的原因就是运行程序过多导致死机,我们清除内存;或者就是系统问题了,这个可以重置手机或者刷机。 问:手机可以上网,但打不出去电话,别人打进来还提示关机是怎么回事啊,谁能告诉我? 网友回答:看下设置——通话设置——呼叫限制,是不是开了。 苹果手机打不出电话的原因和解决方法: 一、信号或电话运营商问题 1、有时候当在一些信号不好地方,会遇到这样的问题,出现呼叫失败,需要重拨的情况。这种情况一般是由于当前信号不好导致的,换一个地方再重新拨打就可以了。 二、关机 1、如果不是信号的问题,可以尝试先关机再开机的操作。可以通过长按 iPhone 的电源键,当出现关机选项时,滑动关机。 三、插拨电话卡 1、如果关机也不能解决问题的话,可以通过重新插拨手机卡来尝试一下。可以用 iPhone 自带的取卡针或其它类似的物件来取卡。 2、接着在 iPhone 的右侧有一个专门用于取卡的小孔,用取卡针即可弹出电话卡了。取出来以后,清洁一下电话卡,再按照原位放回去,最后再试下看是否可以还拨打电话。 四、还原网络设置 1、如果以上的方法尝试了,还是不能够解决问题的话,可以尝试还原一下 iPhone 的网络设置。在设置列表里请点击“通用”一栏, 2、在通用列表的底部,找到“还原”一栏,点击进入。 3、接着在还原列表里请点击“还原网络设置”一栏选项, 4、随后再请点击底部弹出的“还原网络设置”按钮,确认还原即可。等待系统还原成功以后,看看是否可以正常拨打电话。

函数相关系数大小意义_相关系数的意义

●李传亮 相关系数是衡量观测数据之间相关程度的一个指标,一般情况下,相关系数越大表明相关程度就越高。但是,相关系数只有相对意义,没有绝对意义。也就是说,0.99不代表相关程度一定就高,0.44也不代表相关程度一定就低,这与样本空间的大小有关。实际工作中,只要相关关系显著,不必刻意追求高的相关系数。 不同样本空间大小有一个临界相关系数值,若统计值高于它,就代表相关关系显著,否则为不显著。若有30组数据,临界相关系数为0.361,0.44的相关系数代表相关关系显著;若只有3组数据,临界相关系数为0.997,0.99的相关系数仍代表相关关系不显著。因此,统计相关系数必须与临界相关系数对比之后才有意义。 许多人在做相关分析时,得到了0.9的相关系数,就得出相关关系很好的结论,实在是太离谱了,因为0.9很可能代表相关关系极不显著,^_^ 若在论文中标注相关系数的数值时,必须同时标注临界相关系数的数值才有意义,很多人对此并不了解,以为有一个较高的数值即可,其实是误解了相关系数的真正含义。 详细内容,请参阅《油藏工程原理》的附录A。

小白如何通过markdown文件自制kindle的 MOBI 格式文档

文章目录 背景简介三个工具操作步骤1. 下载安装相关文件2. 把一个markdown文件转成mobi文件1. 使用Typora将markdown导出为epub电子书2. 使用calibre 将epub导出为mobi电子书3. 多个epub合并 最新进度 背景简介 有些时候我们从github上看到一些好的论文或者书本翻译,是markdown格式的,我们想要在kindle上方便的阅读这些文档,我们该怎么做呢,本文分享一个自己试探后得出的方法,不需要有任何编程基础,我都是借助第三方工具来完成这个处理。 三个工具 在这个过程中要用到三个工具 Typora ,一个markdown阅读工具,可以很方便的的阅读本地的markdown文件,支持本地的图片展示等功能,而且渲染的非常简洁舒适,地址Pandoc, Pandoc是由John MacFarlane开发的标记语言转换工具,可实现不同标记语言间的格式转换,堪称该领域中的“瑞士军刀”, Typora使用pandoc来将渲染的markdown导出到其他的格式类型(后面会具体介绍)calibre,calibre是一个功能强大且易于使用的电子书管理器,可以支持很多格式转换功能,还能合并多个mobi文件,但是直接将本地的markdown转为mobi会出现图片缺失的问题 操作步骤 1. 下载安装相关文件 Typora 这个Typora非常轻量,直接在这个地址下载安装即可在Typora中安装pandoc 安装calibre 直接在这里下载安装即可 2. 把一个markdown文件转成mobi文件 1. 使用Typora将markdown导出为epub电子书 如下图,导出后可以使用阅读工具打开检验一下是否正常 2. 使用calibre 将epub导出为mobi电子书 使用添加书籍将刚才导出的epub添加到calibre当中,然后选择转换书籍 这里将输出设置为mobi格式即可 3. 多个epub合并 有时候有多个markdown文件需要合并为一本书,可以使用calibre合并为一个大的epub之后再转为mobi文件,合并参考这里 最新进度 其实可以用gitbook来直接生成mobi格式,参考下面两篇文章 https://github.com/GitbookIO/gitbook/blob/master/docs/ebook.md https://zhuanlan.zhihu.com/p/34946169