Tcl提供了有效的数学运算和逻辑运算功能。通过expr可以实现对数学表达式的分析和计算。
运算符 | 说明 |
---|---|
- + ~ ! | 一元减(取负)、一元加(取正)、按位反、逻辑非 |
* / % | 乘、除、取余 |
+ - | 加、减(二元操作符) |
<< >> | 左移、右移(二元操作符) |
< <= >= > | 小于、小于等于、大于等于、大于 |
== != | 布尔等于、不等于 |
& | 按位与 |
^ | 按位异或 |
| | 按位或 |
&& | 逻辑与 |
|| | 逻辑或 |
x?y:z | 三元表达式,x满足为y,不满足为z |
函数名 | 说明 | 举例 |
---|---|---|
abs(arg) | 取绝 | set a -10 # a = -10 ; set a [expr abs($a)] |
acos(arg) | 反余弦 | |
asin(arg) | 反正弦 | |
atan(arg) | 反正切 | |
atan2 | 比值取反正切 | |
ceil(arg) | 向上取整 | |
cos(arg) | 余弦 | |
cosh(arg) | 双曲余弦 | |
double(arg) | 转换双精度 | |
exp(arg) | exp运算e的幂 | |
floor(arg) | 向下取整,与ceil相对 | |
fmod | 取余(结果为浮点型) | |
hypot(x,y) | 根据直角三角形两直角边长度计算出斜边长度 | |
int(arg) | 取整 | |
log(arg) | 自然对数 | |
log10(arg) | 以10为底的度数 | |
pow | 幂运算 | |
rand() | 取0-1之间的随机实数 | set a [expr 10*[expr rand()]] |
round(arg) | 四舍五入取整 | set a [expr round(10.5)] |
sin(arg) | ||
sinh(arg) | ||
sqrt(arg) | 求二次根 | |
srand(arg) | 以整数arg为随机数生成器的种子产生随机数 | |
tan(arg) | ||
tanh(arg) |
set var1 5
set var2 3
set res [expr $var1 /$var2] #var1和var2都是整数结果为整数
=>1
set var1 5.0
set res [expr $var1 /$var2] # var1是浮点数,所以结果为浮点数
=>1.66666666667
set var1 3
incr var1 2 # incr a b 将b加到a上,a,b必须都是整数,
# 更改a原有的值
=>5
puts $var1
=>5
incr var1 -4 # var1加上-4,var1的值现在为1
=>1
incr命令根据指定的步长来增加或减少参数的值。当步长为负时,减少参数值;当步长为正时,增加参数值。默认步长+1。
incr varName ?step?
set a 10
incr a
=> a=11
set a 10
incr a -1
=> a=9
题目当自然数n依次取1、2、3、……、N时,算式⌊n/2⌋+⌊n/3⌋+⌊n/5⌋有多少个不同的值?(注:⌊x⌋为取整函数,表示不超过x的最大自然数,即x的整数部分。)输入格式:输入给出一个正整数N(2≤N≤104)。输出格式:在一行中输出题面中算式取到的不同值的个数。输入样例: 2017 结尾无空行 输出样例: 1480 结尾无空行复制解题思路inputInt=int(input()) #inputInt=2017 resDic=dict() foriinrange(1,inputInt+1): res=i//2+i//3+i//5 #字典里面没值就添加 ifresnotinresDic: resDic[res]=1 print(len(resDic))复制
本文来自LeaderAmerica,视频带来了IEEE标准PTP(PrecisionTimeProtocol)协议v2.1版本的新特性,主讲人是来自ALCNetworkX的AndreasHildebrand。主讲人首先介绍了PTP协议的背景。PTP协议主要用于在数据网络中传输数据时钟的时间同步和频率同步,可达到亚微秒级别的传输精度。其前两个版本分别是于2002年发布的v1和2008年发布的v2。其采用一个主-从时钟系统,多个“从”时钟(SlaveClock)与“主”时钟(MasterClock)同步,而媒体自身的时钟则由各个“从”时钟分别生成。其大致原理如下图所示:随后,他强调了本次版本的向后兼容性(BackwardCompatibility)。他强调最新的v2.1版本是向后兼容的,即完全不会影响原本的2008版本的使用,而2008版本的“从”时钟将会与v2.1版本的主时钟同步。此后,他开始详细介绍PTP协议v2.1的新特性。主要分为以下四个部分:1.将标准的制定描述得更加清晰2.增加了协议的灵活性3.增加了协议的鲁棒性4.增加了精确度灵活性方面,新版本的PTP协议带来了混合广播/单播
实验环境此次实验的环境如下MySQL5.7.26Redhat6.10操作系统账号:mysql数据库备份账号:backup上节我们说了如何进行部分备份,这部分我们说如何对其进行还原关于还原部分备份,只有一个注意点,即不能使用传统的prepare和copyback命令,需要使用export和import的形式1.prepare阶段上节我们介绍了如何使用innobackupex对数据库进行部分备份结束后我们得到了一个非一致性的备份文件,即需要对未提交的事务进行回滚对提交的事务进行前滚这个过程在xtrabackup中叫做准备阶段(preparestage)对部分备份的数据文件需要加上--export选项1.1prepare备份使用--apply-log--export进行恢复动作,相当于Oracle的recover动作后面接部分备份的目录如果内存有空闲,可使用--use-memory加快速度innobackupex--apply-log--export--use-memory=1G/oradata/data/mysql/xtra/2019-11-06_10-39-58 复制在apply-log
在运行到一些诡异的代码,这时的程序已经无法继续运行,需要退出,那么如何在记完日志之后在退出程序记录更多信息?可以通过Environment.FailFast里面添加字符串告诉用户当前的进程无法继续运行在dotnet中有Environment.FailFast可以用来表示程序无法继续使用需要退出,这个方法和Exit不一样的是可以传入字符串如判断因为林德熙逗比无法继续运行if(str=="林德熙是逗比") { Environment.FailFast(str); }复制这时程序退出,可以在Windows日志里面的应用程序找到这个信息通过这个方法不仅可以记日志,还可以自动创建一个DUMP文件,至于这个DUMP放在哪里,请看win10uwp收集DUMP文件同时这个方法调用的时候finally里面的代码是无法执行的stringstr="林德熙是逗比"; try { if(str=="林德熙是逗比") { Environment.FailFast(str); } } finally { Console.WriteLine("其实
============================================================================= =============================================================================涉及到的知识点有: 0:基本概念概述 1:运算 2:运算符 3:操作数 4:表达式 1:运算符(掌握) (1)算术运算符(掌握) (2)赋值运算符(掌握) (3)比较(关系)运算符(掌握) (4)逻辑运算符(掌握) (5)位运算符(了解) (6)三元(三目/条件)运算符(掌握) 2:键盘录入(掌握) 3:流程控制语句 4:if语句(掌握) (1)三种格式: (2)注意事项: (3)案例: (4)三元运算符和if语句第二种格式的关系:============================================================================= =======
最大化利用工厂等影响6格建筑的六边形网格规划(2016-10-27增加五、六节,19城+133锤方案,37城+259锤方案) 作者:zyl910 一、原理 文明6里有一些特殊的建筑及奇观,它们不仅对所属城市有效,还能覆盖一定范围内的城市。 工业区(IndustrialZone)建筑—— 工厂(Factory):所在工业区6格半径范围内的所有城市产能+3,大工程师点数+1 发电厂(PowerPlant):所在工业区6格半径范围内的所有城市产能+4,大工程师点数+1 娱乐区(EntertainmentComplex)建筑—— 动物园(Zoo):所在娱乐中心6格半径范围内的所有城市满意度(娱乐)+1 体育场(Stadium):所在娱乐中心6格半径范围内的所有城市满意度(娱乐)+2 奇观—— 罗马斗兽场(Colosseum):所在格周围6格半径范围内的所有城市文化+2、且满意度(娱乐)+3 另外有个城邦还可能增加这个影响范围—— 多伦多(Toronto):宗主国的工业区与娱乐中心的区域效应范围增加3格 故可通过仔细规划城市布局,构建一个共享区域,使范围内的城市享受同时被多个工业
本方案并非原创,但由于笔者在网上苦苦寻找许久才找到这一可行方法,故记录下来。在此感谢原作者yinflying的努力与无私共享。原文已失效,后来网友JackieMium也写过一篇博文。本篇博文无意抄袭,只是希望为后来人指路。 问题 在Ubuntu19及以前,尽管Mendeley不支持fcitx中文输入,但只需要将/usr/lib/x86_64-linux-gnu/qt5/plugins/platforminputcontexts/libfcitxplatforminputcontextplugin.so拷贝至Mendeley安装目录下的对应位置(如/opt/mendeleydesktop/plugins/qt/plugins/platforminputcontexts)即可使得Mendeley支持fcitx中文输入。但Ubuntu20.04后,该方法不再适用。 解决 yinflying提供了自行编译的libfcitxplatforminputcontextplugin.so文件(见这里),经笔者验证,将该文件而非系统自带的/usr/lib/x86_64-linux-gnu/qt5/plu
{ "builder":{ "gc":{ "defaultKeepStorage":"20GB", "enabled":true } }, "debug":true, "experimental":true, "features":{ "buildkit":true }, "insecure-registries":[], "registry-mirrors":[ "https://6ua7riiy.mirror.aliyuncs.com", "https://mirror.ccs.tencentyun.com", "https://reg-mirror.qiniu.com", "https://docker.mirrors.ustc.edu.cn", "https:
[root@crushlinux~]#catsecurehost.sh#!/bin/bash awk'/Failed/{print$(NF-3)}'/var/log/secure|sort|uniq-c|awk'{print$2"="$1}'>/tmp/ip.txt foriin$(cat/tmp/ip.txt)do ip=$(echo$i|awk-F='{print$1}') cishu=$(echo$i|awk-F='{print$2}') if[$cishu-ge5] then echo"sshd:$ip">>/etc/hosts.deny else echo"$ip$cishu次登录异常">>/tmp/ssh-error.txt fidone 作者:房佳亮 邮箱:crushlinux@163.com 出处:http://www.cnblogs.com/crushlinux/ 文章内容
启动:bin/start.up.bat双击运行该文件 访问:127.0.0.1:8080 或者ip:8080 或者localhost:8080 正常关闭:1点击shutdown.bat 2ctrl+c; 配置: 部属项目的方式: 1直接将项目放到webapps目录下面即可 *localhost:8080/hello/hello.html 8080/项目的访问路径--》虚拟目录 简化部属:将项目打成war包,在将war包放在webapp目录下,可以自动解压缩,删除之后也会自动将文件夹删除 2配置conf/server.xml文件 在<Host>标签体中配置--------不安全 <ContextdocBase="D:\hello"path="/hehe"/> docBase:项目存放的路径 path:虚拟目录 3在conf\Catalina\localhost创建任意名称的xml文件
寒假学习计划 课程及选择理由 课程:C++程序设计--西北工业大学魏英 课时:前面的一些内容与c语言重复,因此从25讲开始看起,共有23讲 选择理由:之前看的是郭恺老师的慕课,但听不大懂,便换成这个慕课,较浅显易懂。 学习计划 毎天观看两节微课 完成情况: 2.7--(1)第一个c++程序,(2)什么是对象;(面向对象程序设计--c++,教师:翁恺)——已完成 2.8--(1)面向对象基本原理,(2)自动售票机例;(面向对象程序设计--c++,教师:翁恺)——已完成 2.9--(1)定义类及成员的访问限制,(2)类的数据成员,类的成员函数,类的声明;——已完成 2.10--(1)对象的定义及对象的动态建立和释放(2)对象成员的引用,对象的赋值,对象的指针;——已完成 2.11--(1)什么是构造函数及构造函数的定义,(2)构造函数的重载、带默认参数的构造函数;——已完成 2.12--(1)定义默认构造函数、隐式类类型转换(2)复制构造函数与合成复制构造函数;——已完成 2.13--(1)析构函数的定义与合成析构函数,(2)何时需要编写析构函数;——已完成 2.14--(1)对象数组及指
WebService学习总结(二)——WebService相关概念介绍 一、WebService是什么? 1.基于Web的服务:服务器端整出一些资源让客户端应用访问(获取数据) 2.一个跨语言、跨平台的规范(抽象) 3.多个跨平台、跨语言的应用间通信整合的方案(实际) 二、为什么要用Webservice? webservice能解决: 跨平台调用 跨语言调用 远程调用 三、什么时候使用webService? 1.同一家公司的新旧应用之间 2.不同公司的应用之间 3.一些提供数据的内容聚合应用:天气预报、股票行情 四、WebService中的几个重要术语 4.1、WSDL(webservicedefinitionlanguage) WSDL是webservice定义语言,对应.wsdl文档,一个webservice会对应一个唯一的wsdl文档,定义了客户端与服务端发送请求和响应的数据格式和过程 4.2、SOAP(simpleobject accessprotocal) SOAP是"简单对象访问协议" 是一种简单的、基于HTTP
一、Airtest框架简介 AirtestProject是网易开发的一个开源自动化测试框架。与其他自动化测试框架相比,Airtest项目具有以下两个优点: 大大降低了编写和维护自动化脚本的成本 Airtest希望以所见即所得的方式完成脚本的录制。即使测试人员不知道脚本,他们也可以通过正常的单击和拖动操作自动记录脚本,这可以大大降低企业和项目的自动维护成本。 解决游戏测试的痛点 AirtestProject希望通过支持不同的游戏引擎,成为一个真正的跨引擎和跨平台的自动化测试平台。 底部的主要测试框架是Airtest和Poco。两者之间的区别是: Airtest:这是基于图像识别原理的基于Python的跨平台UI自动化测试框架,适用于游戏和应用程序。 Poco:基于UI控件搜索的自动化测试框架。它的核心优势在于,它不仅支持Android和IOS,还支持游戏。它还支持微信小程序,微信小游戏和H5应用程序。 官方文档:https://airtest.doc.io.netease.com/tutorial/0_automated_testing
unity编辑器xml数据库插件 注:9月9日更新,其中MyXML.cs中有一句代码写错,查找功能失误,文中已经修改! 注:9月1日更新说明:xml存储结构,因为在用xml之前不知道正规的xml数据结构,所以是自创的结构。虽然也能完成功能,但是据说策划配置时不方便,所以为了统一,不使用节点的方式存储数据, 而是通过添加属性,设置属性的方式来存取数据。 直接上图看的清楚些: 我之前设计的格式: 现在的格式: 关于这部分的代码我会贴在最后。 程序和数据分离的意义我就不多说了,大家自己脑补或者百度。在使用unity开发时,数据的调试是非常频繁和重要的。我们可以制作一个简单的编辑器插件,将数据显示在Inspector面板上,并进行编辑操作。这样测试人员就可以非常方便的管理测试数据了。 需求很简单,具体的效果是,能读取资源内的类,将其属性显示在面板上,可以对此进行增删改查的操作。如下图所示(对象组,相当于数据库所有的表。对象,相当于表的所有记录)。 当需要创建一条新记录的时候,先填上主键,然后点击创建按钮。编辑完成后点击插入即可。 &n
[Luogu3952]NOIP2017时间复杂度 <题目链接> 一年的时间说长不长,说短,也不短。 一年之内无数次觉得难得可怕的题目,原来也就模拟这么回事儿。 #include<cstdio> #include<iostream> #include<set> #include<stack> #include<string> intT; structLayer { std::stringname; intstate; Layer(std::stringname,intstate):name(name),state(state){} }; intSolve(std::strings) { if(s=="O(1)") return0; intans=0; for(inti=4;s[i]!=')';++i) ans=ans*10+s[i]-'0'; returnans; } intNumber(std::strings) { if(s[0]=='n') return0; intans=0; for(inti=0;
1、观察者模式: /** *抽象观察目标 */ publicabstractclassSubject{ protectedArrayList<Observer>observers=newArrayList<>();//定义一个观察者集合用于存储所有观察对象 //注册方法,用于向观察者集合中添加一个观察者 publicvoidattach(Observerobserver){ observers.add(observer); } //注销方法,用于在观察者集合中删除一个观察者 publicvoiddetach(Observerobserver){ observers.remove(observer); } //抽象通知方法 publicabstractvoidnotifyObserver(); } /** *具体观察目标 */ publicclassConcreteSubjectextendsSubject{ //通知所有观察者 @Override publicvoidnotifyObserver(){ for(Objectobs:
MySQL简介: MySQL是一个关系型数据库管理系统,由瑞典MySQLAB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(RelationalDatabaseManagementSystem,关系数据库管理系统)应用软件。 MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。 MySQL所使用的SQL语言是用于访问数据库的最常用标准化语言。MySQL软件采用了双授权政策,分为社区版和商业版,由于其体积小、速度快、总体拥有成本低,尤其是开放源码这一特点,一般中小型网站的开发都选择MySQL作为网站数据库。 由于其社区版的性能卓越,搭配PHP和Apache可组成良好的开发环境。 MySQL下载: 官网提供的安装MySQL的方式有三种: 在线安装版:mysql-installer-web-community.msi 离线安装版:mysql-installer-community.msi 解压缩版:mysql-8.0.13-
Java Java是一种跨平台的面向对象编程语言,具有封装、继承、多态的特性。 同时具有有一次编写,多处运行的优势。由JVM支持在多种操作系统上运行。 类加载器 Bootstrap:根加载器由c++编写,用于引导Java程序,是虚拟机的一部分 Extendsion:扩展加载器由Java编写,加载jre/lib/ext下的Java平台的扩展包 Application:用户加载器由Java编写,加载用户类路径下的类库,加载器位于rt.jar包中com.java.lang.ClassLoader 双亲委派机制:防止类冲突,一个类加载器收到类加载请求时,会将请求委托给父类加载器去完成,层层递进,当父类加载器无法完成加载请求时,会委托给子类加载器。如果出现相同包路径相同类名,则以更高级别类加载器的返回结果为准。 类加载过程: 加载:将class文件字节码内容加载到内存中,并转换为方法区的运行时数据结构,然后生成这个类的java.lang.Class对象 链接:将Java类的二进制代码合并到JVM的运行状态中的过程。包括验证(确认类信息符合JVM规范)、准备(为static变量分配内存并设
之前学习的二分,现在感觉突然理解许多,补一下总结 首先,二分能够解决什么样的问题呢,个人认为,二分能够快速解决已经知道答案范围(线性)但是不知道确切答案的问题,例如在一个有序序列中查找某一元素出现的(最早,最晚)位置,求某单调(或在给定区间上单调)函数的零点,最大化最小值或者最小化最大值等等 二分的模板大体如下: intl=x;//x表示元素可能出现的最小(最左边)的情况 intr=y;//y表示元素可能出现的最大(最右边)的情况 intans,mid; while(i<=l) { mid=(l+r)/2;//二分 if(check(mid))//判断中点的情况 { l=mid+1; ans=mid;//或者ans=max(ans,mid)等,ans用于保存答案,如果需要所有可行答案中的最大值或者最小值加上max或者min即可 } else { r=mid-1; } } 复制 总体来讲二分的思想还是比较简单的,但是问题的难点经常不是考虑不到二分,而是考虑到二分却不知道如何判断要查找的元素在mid的情况下能否可行,即如何编写check(mi
使用Xcode和Instruments调试解决iOS内存泄露 发布于:2012-12-0409:30阅读数:45854 虽然iOS5.0版本之后加入了ARC机制,但由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存 “” 阅读器 虽然iOS5.0版本之后加入了ARC机制,但由于相互引用关系比较复杂时,内存泄露还是可能存在。所以了解原理很重要。 这里讲述在没有ARC的情况下,如何使用Instruments来查找程序中的内存泄露,以及NSZombieEnabled设置的使用。 本文假设你已经比较熟悉Obj-C的内存管理机制。 实验的开发环境:XCode4.5.2 1、运行Demo。 先下载一个实现准备好的内存泄露的Demo吧: leakapp 下载下来,打开运行,程序是一个寿司的列表,列出各种寿司卷。试着选择里面的几行,应该是选第二行的时候就崩溃了。崩溃截图: 在崩溃的地方断住了,知道crash的地方了,但是不知道具体crash的原因。
1、ElasticSearch简介 1.1、简介 官网:https://www.elastic.co/ Elasticsearch(简称ES)是一个基于ApacheLucene构建的开源、分布式、RESTful接口的全文搜索引擎,Elasticsearch通过对Lunece的封装,隐藏了复杂性,提供了使用简单的RESTfulApi。Elasticsearch还是一个分布式文档数据库,其中每个字段均可被索引,而且每个字段的数据均可被搜索,因为对文档进行了分词处理。ES能够横向扩展至数以百计的服务器存储以及处理PB级的数据,可以在极短的时间内存储、搜索和分析大量的数据。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。 Tip:ElasticSearch底层的全文检索是基于Lucene实现的。 1.2、为什么要使用它 在业务开发中,基于ES的特性,通常有下面这些场景需要使用它: 存储大量数据。通过在使用mysql存储的时候,数据的单位是G。使用E