1.问题描述 笔者正常安装完zookeeper,之后运行:./zkServer.sh start 命令,结果如下,一切正常。
但是使用dubbo的时候却发现无法启动,报错如下:
Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) 2.如何解决 找到zookeeper的安装目录,找到conf目录,编辑,zoo.cfg文件,在下面新增一行:admin.serverPort=8081(由于浏览器占用了8080端口,导致zookeeper启动失败问题)
以上是我的问题的解决方法。
3.如何定位问题 当时我为了找这个问题,搜索了好多个方法都没有用上。
后来查看了下日志…才发现是端口被占用,查看日志的方法,在zookeeper的安装目录下的log目录中就有,如笔者的mac中的日志文件和内容如下:
(图3.1 日志文件列表)
(图3.2 日志内容)
最近在做深度学习CNN玉米病害识别,模型训练完成需要绘制混淆矩阵作为模型性能评估的指标之一。
下面附上混淆矩阵的绘制代码:
import numpy as np import matplotlib.pyplot as plt # classes = ['A','B','C','D','E'] # confusion_matrix = np.array([(9,1,3,4,0),(2,13,1,3,4),(1,4,10,0,13),(3,1,1,17,0),(0,0,0,1,14)],dtype=np.float64) # 标签 classes=[' 小斑病 ','大斑病',' 锈病','健康'] # 标签的个数 classNamber=4 #表情的数量 # 在标签中的矩阵 confusion_matrix = np.array([[233 , 0 , 0 , 0], [ 0 ,200 , 0 , 0], [ 0, 0, 404 , 0], [ 0 , 0 , 2 ,158]],dtype=np.float64) plt.imshow(confusion_matrix, interpolation='nearest', cmap=plt.cm.Oranges) #按照像素显示出矩阵 plt.title('混淆矩阵') plt.colorbar() tick_marks = np.arange(len(classes)) plt.xticks(tick_marks, classes, rotation=-45) plt.
一、常规方法 在Vue项目中,通常使用封装组件的方法是
1.import 导入组件
2.在 components 中注册组件
3.在模板引擎中使用组件
常规方法的弊端 但在实际开发过程中,有一些组件会在多个地方频繁使用,并且组件还有一些自己的方法,如果使用常规方法来使用这些组件,不仅要完成上面三个步骤,还需要在封装好的组件中 $emit 方法,并在使用组件的地方监听,这样使用起来十分复杂,那么有没有一种方法,可以在需要使用组件的地方用一两句简单的代码来完成对组件的使用呢?答案是有的。
二、插件形式 废话不多说,先看结果
// 注册完成组件后,在需要的地方使用 toast 组件 // 第一个参数是当前 toast 组件要展示的数据,第二个参数是展示时间 this.$toast.show('我是要使用的toast组件', 2000); 由此可以看出来,插件形式使用组件是十分便捷的,省去了导入、注册两个繁琐且重复的步骤。接下来展示具体的组件封装过程
1.为要封装的组件创建 index.js 和 Toast.Vue 两个文件 components/toast/index.js // 定义一个对象并导出 const obj = {} export default obj; components/toast/Toast.Vue
该 Vue 文件和常规方法封装组件的 Vue 文件内容一样,下面展示我当前封装 Toast 组件的代码 <template> <div class="toast" v-show="isShow"> {{ message }} </div> </template> <script> export default { name: "Toast", data() { return { message: "", isShow: false, }; }, methods: { // 用于展示 toast // message 为要展示的信息 // duration 为展示时间,默认2000ms show(message, duration = 2000) { this.
OpenCV 是流行的计算机视觉库。 最近因项目需要,要在树莓派上编译构建 OpenCV C++ 项目。踩了不少坑,分享出来。
编译 OpenCV 源码 OpenCV 目前的最新版本是 4.5.1,但项目使用版本 3.4.12。
在树莓派 Home 目录下,新建 opencv-project 文件夹
cd ~ mkdir opencv-project 下载 3.4.12 版本 opencv 源码,然后解压到当前目录
cd opencv-project wget https://github.com/opencv/opencv/archive/3.4.12.tar.gz tar xvzf 3.4.12.tar.gz 注:OpenCV 的所有版本可以从 Releases · opencv/opencv 找到
进入解压后的 opencv 源码目录,新建 _build、_output 两个目录(_build 用于暂存编译中间产物,_output 用于存放编译结果)
cd opencv-3.4.12 mkdir \_build \_output 进入 _build 目录,执行 cmake 以生成 makefile 文件
cmake -DCMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=/home/pi/opencv-project/opencv-3.4.12/\_output .. -D 是 cmake 的构建参数。CMAKE_BUILD_TYPE=RELEASE 表示构建成正式版(还有一个取值是 DEBUG,表示构建成调试版,产物里会添加调试代码);CMAKE_INSTALL_PREFIX 是构建产物安装目录,这里指定到上一步的 _output 目录,方便获取所有构建产物。最后的 .
c++和java都是当下最热门的编程语言,二者各有各的优势。java与c++都是面向对象的语言,但java晚于c++发布,部分语法和思想也参考了c++,只是java 没有头文件、指针、运算符重载、虚基类等等,算是c++语言的“纯净版”。
c++和java的主要区别
1、指针
java语言让编程者无法找到指针来直接访问内存无指针,并且增添了自动的内存管理功能,从而有效地防止了c/c++语言中指针操作失误,如野指针所造成的系统崩溃。但也不是说java没有指针,虚拟机内部还是使用了指针,只是外人不得使用而已。这有利于java程序的安全。
2、多重继承
c++支持多重继承,这是c++的一个特征,它允许多父类派生一个类。尽管多重继承功能很强,但使用复杂,而且会引起许多麻烦,编译程序实现它也很不容易。java不支持多重继承,但允许一个类继承多个接口(extends+implement),实现了c++多重继承的功能,又避免了c++中的多重继承实现方式带来的诸多不便。
3、数据类型及类
java是完全面向对象的语言,所有函数和变量部必须是类的一部分。除了基本数据类型之外,其余的都作为类对象,包括数组。对象将数据和方法结合起来,把它们封装在类中,这样每个对象都可实现自己的特点和行为。而c++允许将函数和变量定义为全局的。此外,java中取消了c/c++中的结构和联合,消除了不必要的麻烦。
4、操作符重载
java不支持操作符重载。操作符重载被认为是c十十的突出特征,在java中虽然类大体上可以实现这样的功能,但操作符重载的方便性仍然丢失了不少。java语言不支持操作符重载是为了保持java语言尽可能简单。
c++和java哪个好找工作
1、从两者语言入门来说:java入门相对简单,C++入门相对难,精通更难!
2、从学习侧重来说:java侧重于企业级应用开发,C++则注重底层应用开发。
3、从就业来说:C++前期工资要高,工作机会少。java招聘多,工作机会多。
4、从前景来说:java、C++长期在编程排行榜前几位,所以学习哪个都可以。
5、从未来来说:无论你学习java还是学习C++,只要有多年的经验,工资都会高,不过在工作期间也要注重提升自己!
总而言之,好不好找工作,这个主要取决于你自己,而不是看的是哪一门编程语言,你要是基础技术学得不好不扎实,哪个都不好找。只要是手里面有东西,对基础技术的理解比较深,学习什么都是有前途的,都是好找工作的。技术主导的行业里面,看的是技术。
一、定点数 定点数就是数据中小数点位置是固定的,分为纯小数和纯整数。
纯小数 用一个n+1位来表示一个定点纯小数,首位为符号位,1表示定点数为负数,0表示定点数为正数,小数点就位于符号位之后。
纯小数的范围大小 纯小数绝对值最大计算:尾数都为1,2-1+2-2+…+2n(等比数列计算和)=1-2-n
纯小数绝对值最小:尾数都为0
纯整数 与纯小数区别就是小数点位于尾数最后一位之后。
纯整数的范围大小 纯整数绝对值最大计算:尾数都为1:20+21+…+2n=2n-1
纯小数绝对值最小:尾数都为0
二、浮点数 当我们用定点数来表示数据时,会受到很大的局限性,如果要表示更大的数该怎么办,因此引出浮点数的表示。
浮点表示法的特点:将数据的精度和范围分别表示。
尾数是一个定点小数,尾数部分有效数字的位数决定了浮点数的范围。
阶码是一个整数,阶码指定小数点在数据中的位置,因此决定了浮点数的范围。
阶符和数符分别表示阶码和尾数正负。
今天学习了测试用例,由于没有听太懂在实操的时候,出现了很多问题,看到别人都在顺利的操作,我很心急,但是我又不会,于是我问了老师,于是我豁然开朗,所以 有问题 一定要问,不要憋着 ,有时候当局者迷。
catch(java.io.IOException e){
ECLIPSE下LWUIT问题啊??java.lang.ClassNotFoundException'>java.lang.ClassNotFoundException:prj3_2/CopyOfHelloMidletatcom.sun.midp.midlet.MIDletState.createMIDlet(+29)atcom.sun.midp.midlet.Scheduler.schedu...
2518
热度
java.io.IOException: response already committed 解决方法
java.io.IOException:responsealreadycommitted解决办法
?
祥见下面地址
?
http://www.iteye.com/problems/61587
5
热度
java.io.IOException: Cannot run program "preverify.
netbeans下polish项目运行报错这段报错信息是怎么引起的java.io.IOException:Cannotrunprogram"preverify.exe":CreateProcesserror=2,??Õ?»µ½?¶atjava.lang.ProcessBuilder.start(ProcessBuilder.ja...
7607
热度
Java.io.IOException: error 3 during http over WSP 这个是什么东东
Java.io.IOException'>IOException:error3duringhttpoverWSP这个是什么错误?Java.io.IOException:error3duringhttpoverWSP这个是什么错误?什么情况下会报这个错误?color='#e78608'>------解决方案-----------------------------------------------...
9426
热度
联网有时会报java.io.IOException: error 10054 during TCP read异常
联网有时会报java.io.IOException'>java.io.IOException:error10054duringTCPread错误我现在做一个项目,就是从服务器上读取一些信息然后在手机上进行展示,但我联网的时候有时会报java.io.IOException'>IOException:error10054duringTCPread错误,然后再连又能连上。联网其实就一句话,Javacod...
2916
热度
文件抛java.io.IOException: at com.sun.midp.io.j2me.file.Protocol.delete错误
文件抛java.io.IOException'>java.io.IOException:atcom.sun.midp.io.j2me.file.Protocol.delete异常点击右边红色标题查看本文完整版:文件抛java.io.IOException'>IOException:atcom.sun.midp.io.j2me.file.Protocol.delete异常!文件抛java.io.IO...
3925
热度
java.io.IOException: storageOpen(): No such
诺基亚模拟器的问题!java.io.IOException:storageOpen():Nosuchfileordirectory,C:\DocumentsandSettings\����3\LocalSettings\Temp\ueiemulator181.tmp\RYMIDlet.jad我的诺基亚模拟器总是...
4576
热度
关于Vista启动TOMCAT错误问题java.io.IOException: Cannot rename original ...
关于Vista启动TOMCAT错误问题java.io.IOException:Cannotrenameoriginalfileto
刚刚安装了Vista
配置好SSH
发生如下错误
解决方法如下:(最后)
2008-9-3017:25:11org.apache.catalina.core.AprLifecycleListenerinit
现有功能需求需将word模板转成pdf的方式,进行在线预览或打印,实现这个需求有几种当时,如下:
1、使用jacob:word模板需要创建书签,以替换书签的方式来填充数据。然后转成pdf的格式。使用简单方便,但是只能在windows环境下使用,不能在linux环境使用
2、使用aspose.words:通过创建word模板的一个域的标识,来替换相应的数据,具体百度,也是使用特别方便的一个组件,基本上手就能用,能在windows和Linux下使用,可惜是商用的,项目需要发布上线的话还是先获取版权的好,个人使用的话倒是没所谓。
3、使用POI:word模板需要创建特殊的标识,如:{name},来标识需要替换的数据位置,操作word文档简单,可在windows和Linux下使用,但是使用POI将word转成pdf时,会出现pdf与word模板格式不一致的问题,格式会错乱。
综上考虑实现word转pdf,并能在Linux环境下使用,采用POI+Libreoffice的方式实现,其中POI实现替换word模板中特殊标识去替换数据,使用Libreoffice是将替换好的word文档转成pdf,转成的pdf格式和word模板的一致。
文末附上实现的代码案例,使用Libreoffice需先本机安装
windows环境下安装Libreoffice 准备好安装包,双击安装 安装好的目录如下:program
安装完后需要编写一个 Libreoffice的启动脚本 Libreoffice的启动脚本命名为:startLibreOffice.bat
脚本位置随意,调用的时候需要用到,配置文件写明位置即可
编辑脚本如下:其中E:\Install\program\soffice.exe为我的Libreoffice安装路径文件启动位置,个人安装目录不同自行修改
taskkill /f /fi "IMAGENAME eq soffice.exe" taskkill /f /fi "IMAGENAME eq soffice.bin" ping -n 5 127.0.0.1 E:\grFile\Install\program\soffice.exe -headless -nologo -nofirststartwizard -accept="socket,host=127.0.0.1,port=8100;urp;" echo "start complete" exit 到此,windows环境下Libreoffice安装完毕
遇到个问题,多次试验,安装的文件名尽量不要使用中文以及含空格的文件名
linux环境下安装Libreoffice 准备好Linux版本的安装包,上传到linux服务器上 将Libreoffice的安装包上传到 /opt 目录下
打指令
1. cd /opt 2. tar -zxvf LibreOffice_5.3.6_Linux_x86-64_rpm.tar.gz 解压到当前路径 3. sudo yum install ./LibreOffice_5.3.6_Linux_x86-64_rpm/RPMS/*.rpm 安装 4. cd /opt/libreoffice5.3/program,这里就是程序目录了 开始调试是否安装完成,运行以下指令
/opt/libreoffice5.3/program/soffice.bin -headless --nologo --nofirststartwizard --accept="
其实官网已经说的很清楚了,并且给出了QQ邮箱的范例(BAT还是屌的)
1. 编辑/etc/gitlab/gitlab.rb文件(加到文件最后面就好了)。以QQ企业邮箱为例:
gitlab_rails['smtp_enable'] = true
gitlab_rails['smtp_address'] = "smtp.exmail.qq.com"
gitlab_rails['smtp_port'] = 465
gitlab_rails['smtp_user_name'] = "gitlab@fayfox.com"
gitlab_rails['smtp_password'] = "******"
gitlab_rails['smtp_authentication'] = "login"
gitlab_rails['smtp_enable_starttls_auto'] = true
gitlab_rails['smtp_tls'] = true
gitlab_rails['gitlab_email_from'] = 'gitlab@fayfox.com'
有的教程可能会说去改/opt/gitlab/etc/gitlab.rb,是错的,一切以官网文档为准
2. 重新配置gitlab
gitlab-ctl reconfigure
3. 通过命令行测试邮件是否发送成功(也可以不测)
gitlab-rails console
irb(main):003:0> Notify.test_email('369281831@qq.com', 'Message Subject', 'Message Body').deliver_now
第二类修正贝塞尔函数的零阶和一阶,分别怎样用mat书上说 (0和1都是下标) K0(z), the zeroth order modified Bessel funct首先双击matlab软件图标,打开matlab软件,可以看到matlab软件的操作窗口。
使用syms命令,创建七个符号变量a、b、c、d、x、y、z。
使用符号变量c,创建函数A,其中A=sin(c)。
使用函数diff(A),CSS布局HTML小编今天和大家分享解函数A的一阶微分。
CSS布局HTML小编今天和大家分享助,第一类零阶贝塞尔函数积分和sinc函数之间有也就是下面的这个等式怎么得出来的。
如何用matlab实现第一类零阶bessel函数直接调用Matlab函数besselj(0,x) 其中0表示零阶bessel函数,x是自变量,以此类推,一阶bessel函数就是besselj(1,x)... 希望能解决你的问题。
0阶贝塞尔函数的零点是不是近似相差3.14
CSS布局HTML小编今天和大家分享解零阶贝塞尔函数的解
怎么CSS布局HTML小编今天和大家分享解x的值
第二类零阶修正贝塞尔函数的符号积分问题-matlab
此问题是切削工件表面热应力CSS布局HTML小编今天和大家分享解:
公式二中的被积函数的指出:需要对第二类零阶修正贝塞尔函数的符号积分问题-matlab 此问题是切削工件表面热应力CSS布局HTML小编今天和大家分享解:
公式二中的被积函数的指出:需要对公式一T3CSS布局HTML小编今天和大家分享大X和大Y的偏导,然后得到公式
MATLAB如何产生符合含有第一类零阶贝塞尔函数的积概率密度函数如图,z为积分变量,r为自变量,b0,d0,u,为给定参数
问题可以这样处理,利用第一类零阶贝塞尔函数besseli(0,x)和积分函数int(f,0,inf),组成下列代码,可以CSS布局HTML小编今天和大家分享得 >> b0=1;d0=1;u=0.5;r=0.5;Pr=besseli_rand(b0,d0,u,r) Pr =0.16164811585454793981159395534094
Matlab中零阶二类修正贝塞尔函数的积分问题
方程式是这样的: 括号里面的整个式子是K0的零阶二类修正贝塞尔函数里面你运行一下。
在MATLAB中怎样画出零阶修正贝塞尔函数
写论文急需。。。。望高手指点,我是MATLAB6.5的初学者,需要用它绘制函数图形BESSELJ Bessel function of the first kind. J = BESSELJ(NU,Z) is the Bessel function of the first kind, J_nu(Z). The order NU need not be an integer, but must be real. The argument Z can be complex.
单例模式
单例模式(Singleton),保证一个类仅有一个实例,并提供一个访问它的全局访问点。
懒汉模式
即在第一次调用该类实例的时候才产生一个新的该类的实例,并在以后仅返回该类实例。
double-check静态成员实例的懒汉模式
这是一个基于double-check模式实现的单例类,它的缺点是有大量数据需要处理时,锁会成为性能瓶颈(注意,这里的性能不要以正常的思维考虑性能瓶颈的问题,因为CPU的运算速率非常非常快),它另外一个致命缺点是非线程安全。
非线程安全的原因是,会有多个线程进入if判断,而new运算符实际上不是原子操作,它被分为三个步骤,分配内存,在分配好的内存上构造对象,令指针指向这一内存区域然后因为硬件优化的原因,在实际执行new操作的时候,它的顺序可能并不是我们设想的这样,第二步和第三步可能会被颠倒,那么此时假设有A、B两个线程进入了上述getInstance()的代码段,B线程先进来,此时指针为空,那么它去执行锁内的操作,假设此时new操作的顺序是先分配内存,然后令指针指向分配好的内存然后在该内存区域上创建对象,那么在执行到第二步的时候由于CPU线程调度,B线程被挂起了,于此同时A线程此时看到的m_Instance指针不为空,可是它并没有指向实际对象,但是A线程不知道,由此产生了数据竞争的问题。
C++11为标准库提供了std::once_flag和std::call_once来处理这种情况,每个线程都使用std::call_once,到std::call_once返回时,指针将会被某个线程初始化(完全同步的形式)。基于此,我们对上述代码改造可以得到一个线程安全的单例,示例代码如下:
注:这个例子写的并不好,请斧正
内部静态实例的懒汉模式
在C++11中保证了局部static变量是线程安全的,它在时间控制首次经过其声明时发生,初始化被定义为只能发生在一个线程上并且其它线程不可以继续直到初始化完成。
饿汉模式
即无论是否使用该类的实例,在程序开始时都创建一个该类的实例,并在以后只返回这个实例,示例代码:
全局static变量的初始化发生在main函数开始之前,所以这种形式下的单例是线程安全的。
但是上述单例模式依然存在问题,假设我们有一些操作,例如关闭文件,需要在析构函数中完成。程序在结束的时候,系统会自动析构所有的全局变量。事实上,系统也会析构所有的类的静态成员变量,就像这些静态成员也是全局变量一样。利用这个特征,我们可以在单例类中定义一个这样的静态成员变量,而它的唯一工作就是在析构函数中删除单例类的实例。这个垃圾回收类具有如下特点:
类CGarbo被定义为CSingleton的私有内嵌类,以防该类被在其他地方滥用。
程序运行结束时,系统会调用CSingleton的静态成员Garbo的析构函数,该析构函数会删除单例的唯一实例。
使用这种方法释放单例对象有以下特征:
在单例类内部定义专有的嵌套类;
在单例类内定义私有的专门用于释放的静态成员;
利用程序在结束时析构全局变量的特性,选择最终的释放时机;
使用单例的代码不需要任何操作,不必关心对象的释放。
示例代码:
参考:
https://blog.csdn.net/fu_zk/article/details/11892095
我们在完成项目开发以及功能测试之后,修改必要的配置属性之后,使用maven进行jar包生成。
一、打包 注意:启动类在哪个模块就通过哪个模块生成jar包。一般多模块项目的启动类在multi-controller中
双击clean清楚target文件夹下旧的jar包,然后双击package生成新的jar包
二、打包失败 解决办法:
1、首先检查本地的java -version 是否和项目javac -version版本一直
2、检查所有项目的字符编码
3、逐个项目清理
首先运行最大范围的pom文件引入依赖的maven clean、maven install命令,然后再对multi-controller项目进行maven clean、maven install。最后生成的jar包在本模块的target目录下
三、java -jar运行出错 在命令符窗口运行项目jar包时,显示 这是由于pox.xml文件没有maven的plugin插件
<build> <plugins> <!-- spring-boot-maven-plugin 插件配置在启动类所在的模块--> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
mysql查询结果拼接group_concat 转载请标明出处^_^ 原文首发于: https://www.zhangruibin.com 本文出自于: RebornChang的博客 作为数据库操作人员,经常会遇到业务上的人说,你帮我整个数据报表,比如说某个月的订单差额为X单,这X单的订单号分别为xxx,xxxxx,xxxxxxx,这时候我们就可以用mysql自带的函数group_concat来实现,先来看下效果
如上图所示,图中所显示的就是一条sql在数据库执行之后的查询效果:差异的订单数是3,后面会有差异的订单号的拼接字符串,这样可以直接看到订单号是哪些,这时候就用到了group_concat。
举例:
select a.provider,group_concat(a.orderId) ids,group_concat(a.remark separator '|') remarks from order_tab a where a.dingdanhao is null; 在上面那条sql里面,有两个group_concat,第一个group_concat(a.orderId),是将查询出来的结果集的orderId给拼接起来,默认的是使用逗号进行拼接;group_concat(a.remark separator ‘|’)是使用 | 进行拼接。
那这时候就会有一个问题,查询group_concat相关资料会发现,group_concat默认拼接字符串长度是有限制的,默认长度为1024字节,那我遇到拼接出来的结果超过1024字节的话,默认是1024字节之后的是不显示的,这时候就需要我们修改系统设置,修改的方法大致分为以下两种:
直接在mysql控制台设置,此方法不用重启数据库,但是当数据库重启之后设置会失效
先查看数据库的group_concat长度 SELECT @@global.group_concat_max_len; show variables like "group_concat_max_len";
然后可以直接修改, 使用以下语句设置,设置为1024000,不够的话再加:
SET GLOBAL group_concat_max_len=1024000; SET SESSION group_concat_max_len=1024000; 修改mysql的配置文件,然后重启数据库生效: 在my.ini里面增加配置项:
#[mysqld] group_concat_max_len=1024000 然后重启mysql服务,即可生效。
四次挥手流程 第一次挥手:客户端A的应用进程先向服务端TCP发出连接释放报文文段(FIN=1,序号seq=u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1(终止等待1)状态,等待服务端B的确定。第二次挥手:服务端B收得到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号sep=v),服务端B进入CLOSE-WAIT(关闭等待)状态,此时的TCP处于半关闭状态。A收到B的确认后,进入FIN-WAIT-2(终止等待2)状态,等待B发出的连接释放报文段。第三次挥手:服务端B没有要向客户端A发出的数据,B发出连接释放报文段(FIN=1,ACK=1,序号seq=w,确认号ack=u+1),B进入LAST-ACK(最后确认)状态,等待A的确认。第四次挥手:客户端A收到服务端B的连接释放报文段后,对此发出确认报文段(ACK=1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSED状态。
出现原因1 该函数没有在本文件包含的头文件中定义,而只在其他c文件的头文件中有定义,也就是间接地有定义。这样是不规范的。
解决办法1 把出现问题的函数所在头文件包含进来。且如果包含进来还未解决,可能是头文件包含的先后顺序有关。
出现原因2 头文件和C文件中的函数声明不完全相同,可能出现函数名有细微差别,比如字母大小写不一致等情况。
解决办法2 回去仔细看一下出现问题的函数是否在声明和调用时使用了完全一致的函数名称和变量。
文章目录 <查找><排序> <查找> <排序>
实验六4PSK和4ASK的MATLAB仿真
一、实验目的:
学会利用MATLAB软件进行4PSK和4ASK调制的仿真。通过实验提高学生实际动手能力和编程能力,为日后从事通信工作奠定良好的基础。
二、实验内容:
利用MATLAB软件编写程序,画出4PSK和4ASK图形,进一步了解4PSK和4ASK 调制的原理。
(1)设二进制数字序列为0 1 0 1 1 0 0 0 1 1 0 1 0 0,编程产生4PSK调制信号波形。
(2)设二进制数字序列为1 1 0 0 1 1 0 0 1 0 0 1 1 1,编程产生4ASK调制信号波形。
三、程序和实验结果:
(1)4PSK程序
clf
clc
clear
T=1;
M=4;
fc=1/T;
N=500;
delta_T=T/(N-1);
input=[0 1 0 1 1 0 0 0 1 1 0 1 0 0]
input1=reshape(input,2,7)
t=0:delta_T:T
for i=1:7
hold on
if input1([1 2],i)==[0;0]
u=cos(2*pi*fc*t);plot(t,u)
elseif input1([1 2],i)==[1;0]
main.c #include "stm32f10x.h" // 相当于51单片机中的 #include <reg51.h> #include "bsp_led.h" #include "bsp_systick.h" int main(void) { LED_GPIO_Config(); //LED灯初始配置 while(1) { SysTick_Delay_ms(500); LED_G_ON; SysTick_Delay_ms(500); LED_G_OFF; } } bsp_systick.h #ifndef __BSP_SYSTICK_H #define __BSP_SYSTICK_H #include "stm32f10x.h" //必须先于core_cm3.h,否则IRQn未定义。 #include "core_cm3.h" void SysTick_Delay_us(uint32_t us); void SysTick_Delay_ms(uint32_t ms); #endif /* __BSP_SYSTICK_H */ bsp_systick.c #include "bsp_systick.h" #if 0 static __INLINE uint32_t SysTick_Config(uint32_t ticks) { //判断tick的值是否大于2^24,如果大于,则不符合规则 if (ticks > SysTick_LOAD_RELOAD_Msk) return (1); /* Reload value impossible */ //初始化reload寄存器的值 SysTick->LOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; /* set reload register */ //配置中断优先级,配置为15,默认为最低的优先级 NVIC_SetPriority (SysTick_IRQn, (1<<__NVIC_PRIO_BITS) - 1); /* set Priority for Cortex-M0 System Interrupts */ //初始化counter的值为0 SysTick->VAL = 0; /* Load the SysTick Counter Value */ //配置systick的时钟为72M //使能中断 //使能systick SysTick->CTRL = SysTick_CTRL_CLKSOURCE_Msk | SysTick_CTRL_TICKINT_Msk | SysTick_CTRL_ENABLE_Msk; /* Enable SysTick IRQ and SysTick Timer */ return (0); /* Function successful */ } #endif void SysTick_Delay_us(uint32_t us) { uint32_t i; SysTick_Config(72); //1us for(i=0; i<us; i++) { while( !
给出 n 本书的阅读时间以及 A,B 是否愿意读,1 表示愿意,0 表示不愿意,A,B 每个人都要看 k 本书,但如果两个人都喜欢看一本书,那么只要有一个人看了,两个人就算都看了,问两人看完所有书花费的最小时间
const int N=2e5+5; int n,m; int i,j,k; int a[N]; vector<int> u,v,w; int main() { while(~sdd(n,k)){ ll ans=0; forn(i,1,n){ int c,x,y; sddd(c,x,y); if(x && y) w.pb(c); else if(x) u.pb(c); else if(y) v.pb(c); } sort(u.begin(),u.end()); sort(v.begin(),v.end()); sort(w.begin(),w.end()); if(u.size()+w.size()<k ||w.size()+v.size()<k){ pd(-1); continue; } int i=0,j=0,cur=0; while(k>0){ if(i>=u.size() || j>=v.size() || (cur<w.size() && w[cur]<u[i]+v[j])) cur++,k-=1,ans+=w[cur-1]; else i++,j++,k-=1,ans+=u[i-1]+v[j-1]; } pll(ans); } //PAUSE; return 0; }