符号计算

【Linux】——压缩算法

我怕爱的太早我们不能终老 提交于 2019-11-27 16:12:28
一、LZ77算法 1、压缩原理 如果文件中有两块内容相同的话,那么只要知道前一块的位置和大小,我们就可以确定后一块的内容。所以我们可以用(两者之间的距离,相同内容的长度)这样一对信息,来替换后一块内容。由于(两者之间的距离,相同内容的长度)这一对信息的大小,小于被替换内容的大小,所以文件得到了压缩。 简单的讲, LZ 算法被认为是字符串匹配的算法。例如:在一段文本中某字符串经常出现,并且可以通过前面文本中出现的字符串指针来表示。当然这个想法的前提是指针应该比字符串本身要短。 例1:在上一段短语“字符串”经常出现,可以将除第一个字符串之外的所有用第一个字符串引用来表示从而节省一些空间。 例2:有一个文件的内容如下 http://jiurl. yeah . net http://jiurl. nease . net 其中有些部分的内容,前面已经出现过了,下面用()括起来的部分就是相同的部分。 http://jiurl. yeah .net ( http://jiurl. )nease( .net ) 我们使用 (两者之间的距离,相同内容的长度) 这样一对信息,来替换后一块内容。 http://jiurl. yeah .net (22,13)nease(23,4) (22,13)中,22为相同内容块与当前位置之间的距离,13为相同内容的长度。 (23,4)中

【数据结构】 栈与队列

≯℡__Kan透↙ 提交于 2019-11-27 12:37:32
栈的概念 栈是一种受限制的 线性表 ,是只能在表尾进行插入和删除操作。 在我们日常生活中,一些软件的撤回功能,每次撤回到上一步,还有浏览器的后退键也是和栈的原理大同小异。 允许插入和删除的一端被称为栈顶,另一端被称为栈底,栈遵循 后进先出 的原则。 栈的插入操作,叫做入栈,栈的删除操作,叫做出栈。 栈的应用--四则运动表达式求值 使用逆波兰表示法:从左到右遍历每一个数字和符号,如果是数字就输出,如果是符号,就判断其与栈顶符号的优先级,是右括号或者优先级不高于栈顶符号,则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最后输出完整表达式。 举例:9+(3-1)*3+10/2 1.初始化空栈,用来存放符号 2.第一个数字是9,输出9,后面符号是“+”,进栈。 3.第三个符号是“(”,进栈。 4.第四个数字是3,输出,接着是“-”,进栈,然后再输出1: 5.在后面是符号“)”,此时需要匹配前面的“(”,因此栈顶一次出栈,知道“(”出栈为止。”()“不用输出 6.接下来是“ * ”入栈,发现比栈顶的“+”优先级高,继续进栈,然后后面的3输出 7.之后是符号“+”,优先级低于栈顶的 “ * ”和栈底的“+”,因此先输出 * ,然后“+”也出栈输出,那3后面的这个“+”就入栈 8.接着输出10,剩下最后一个符号入栈“: 9.因为到了最后了,因此栈内的符号全部出栈: 计算方法

一维条形码生成与识别技术

ぃ、小莉子 提交于 2019-11-27 07:28:51
核心提示: 1引言 条形码(简称条码)技术是集条码理论、光电技术、计算机技术、通信技术、条码印制技术于一体的一种自动识别技术,条形码是由宽度不同、反射率不同的条(黑色)和空(白色),一维条形码生成与识别技术,按照一定的编码规则编制而成,用以表达一组数字或字母符号信息的图形标识符,参考文献1.熊小寒.条形码技术与标准化[M].天津: 1引言 条形码(简称条码)技术是集条码理论、光电技术、计算机技术、通信技术、条码印制技术于一体的一种自动识别技术。条形码是由宽度不同、反射率不同的条(黑色)和空(白色),按照一定的编码规则编制而成,用以表达一组数字或字母符号信息的图形标识符。条形码符号也可印成其它颜色,但两种颜色对光必须有不同的反射率,保证有足够的对比度。条码技术具有速度快、准确率高、可靠性强、寿命长、成本低廉等特点,因而广泛应用于商品流通、工业生产、图书管理、仓储标证管理、信息服务等领域。  本文针对EAN-13条码,介绍了其格式、编码规则等技术特点,并在Visual C++ 6.0环境下实现了一维条码的图像生成与识别,具有较好的应用价值。 2  EAN-13条形码简介 一维条码主要有EAN和UPC两种,其中EAN码是我国主要采取的编码标准。EAN是欧洲物品条码(European Article Number Bar Code)的英文缩写,是以消费资料为使用对象的国际统一商品代码

1027 打印沙漏 (20 分)C++ PAT (Basic Level) Practice

喜你入骨 提交于 2019-11-27 05:47:42
1027 打印沙漏 (20 分) 本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印 ***** *** * *** ***** 所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。 给定任意N个符号,不一定能正好组成一个沙漏。要求打印出的沙漏能用掉尽可能多的符号。 输入格式: 输入在一行给出1个正整数N(≤1000)和一个符号,中间以空格分隔。 输出格式: 首先打印出由给定符号组成的最大的沙漏形状,最后在一行中输出剩下没用掉的符号数。 输入样例: 19 * 输出样例: ***** *** * *** ***** 2 PAT通过代码 //1027 打印沙漏 (20 分) # include <stdio.h> # include <math.h> int N ; int firstColsCharNum ; int firstColsNum ( int sum ) { //firstColsNum()为计算首行的*号个数 int n ; for ( int i = sqrt ( sum ) ; i < sum ; i ++ ) { //用sqrt()防超时 //i为行数 n = i * 1 + i * ( i - 1 ) ; if ( n > sum

OGNL, JSTL, STRUTS2标签中符号#,$,%的用法示例

◇◆丶佛笑我妖孽 提交于 2019-11-27 04:19:25
取Session中的值 <c:out value="${sessionScope.user.userId}"></c:out><br> <c:out value="${user.userLoginName}"></c:out><br> <s:property value="#session.user.userId"/><br> ${session.user.userId}<br> ${sessionScope.user.userId}<br> 基本语法 一、EL简介 1.语法结构 ${expression} 2.[]与.运算符 EL 提供.和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如: ${sessionScope.user[data]}中data 是一个变量 3.变量 EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、Application范围查找。 假如途中找到username,就直接回传

struts2标签#、%、$取值

自闭症网瘾萝莉.ら 提交于 2019-11-27 04:18:55
转载: http://www.cnblogs.com/xly1208/archive/2011/11/19/2255500.html http://www.cnblogs.com/duqiao/archive/2012/11/06/2756447.html 首先了解下 OGNL的概念 : OGNL是 Object-Graph Navigation Language的缩写,全称为 对象图导航语言,是一种功能强大的表达式语言,它通过简单一致的语法,可以任意存取对象的属性或者调用对象的方法,能够遍历整个对象的结构图,实现对象属性类型的转换等功能。 此外,还得先需弄懂OGNL的一些知识: 1.OGNL表达式的计算是围绕OGNL上下文进行的。 OGNL上下文实际上就是一个Map对象,由ognl.OgnlContext类表示。它里面可以存放很多个JavaBean对象。它有一个上下文根对象。 上下文中的根对象可以直接使用名来访问或直接使用它的属性名访问它的属性值。否则要加前缀“#key”。 2.Struts2的标签库都是使用OGNL表达式来访问ActionContext中的对象数据的。如:<s:propertyvalue="xxx"/>。 3.Struts2将ActionContext设置为OGNL上下文,并将值栈作为OGNL的根对象放置到ActionContext中。 4.值栈

基础位运算基本原理和应用

十年热恋 提交于 2019-11-26 21:08:16
微信公众号 位运算是编程语言的基础,在看源码的时候会看到很多位运算代码,但是在项目代码中很少会看到位运算。因为应用代码中,有很多判断和计算都可以直接用数值的判断和计算完成,没有必要去用位运算,以至于这些基础的东西慢慢用的越来越少,慢慢也就忘了。导致的一个结果就是看源代码很费力,因为大量的位运算逻辑,看不懂。 作为程序员感觉数据位运算是非常必要,有点如下: 看源码时能够更好的理解 位运算更接近计算机的习惯,执行的效率会更高 装逼利器,在项目中使用位运算,体现逼格 N种基本的位运算 位运算 -- 与运算符(&) 运算规则: 操作数1 0 0 1 1 操作数2 0 1 0 1 与运算 0 0 0 1 规则总结:只有两个操作数都是1的时候运算结果才为1,其他都是0。换句话说就是只要包含0就是0。 运算如下: 位运算 -- 或运算符(|) 运算规则: 操作数1 0 0 1 1 操作数2 0 1 0 1 或运算 0 1 1 1 规则总结:只有两个操作数都是0的时候运算结果才为0,其他都是1。换句话说就是只要包含1就是1。 运算如下: 位运算 -- 非运算符(~) 运算规则: 操作数 1 0 或运算 0 1 规则总结:取反操作,1变0,0变1。 位运算 -- 异或运算符(^) 运算规则: 操作数1 0 0 1 1 操作数2 0 1 0 1 或运算 0 1 1 0 规则总结:操作数相同

Python学习笔记---第二周

馋奶兔 提交于 2019-11-26 20:30:53
1.整型 符号:int 用处:用于计算和比较 python3:全部都是整型 python2:整型,长整型long 123--十进制 转二进制方法:十进制数除2,取余数从下往上排;print(bin(十进制数)) 10101--二进制 转十进制方法:1 * 2 ** 0+0 * 2 ** 1+1 * 2 ** 2+0 * 2 ** 3+1 * 2 **4 print(int("二进制数",2)) 2.布尔值 整型转布尔值==print(bool(数字)) ,整型中只要非零就是True 布尔值转整型==print(int(True/False)), 布尔值True=1,False=0 字符串转布尔值==print(bool(" ")), 字符串中只要没有内容就是False 布尔值转字符串==print(str(True/False)) 3.字符串 python中只要是引号引起来的就是字符串 作用:用于存储少量数据 字符串中每一个字母或字符都称为元素 3.1 索引(下标) 符号:a[索引位置] -- 索引位置不能超出索引最大值 从左往右排,从0开始排;从右往左排,从-1开始排 3.2 切片 返回结果是原数据本身 print(a[起始位置:终止位置])-- 顾头不顾尾(包括起始位置,不包括终止位置) 索引位置可以超过索引值,索引位置不写时默认起始位置为第一位,终止位置为最后一位 3.3

MySQL的数据类型

删除回忆录丶 提交于 2019-11-26 17:14:57
一、MySQL的数据类型 主要包括以下五大类: 整数类型:BIT、BOOL、TINY INT、SMALL INT、MEDIUM INT、 INT、 BIG INT 浮点数类型:FLOAT、DOUBLE、DECIMAL 字符串类型:CHAR、VARCHAR、TINY TEXT、TEXT、MEDIUM TEXT、LONGTEXT、TINY BLOB、BLOB、MEDIUM BLOB、LONG BLOB 日期类型:Date、DateTime、TimeStamp、Time、Year 其他数据类型:BINARY、VARBINARY、ENUM、SET、Geometry、Point、MultiPoint、LineString、MultiLineString、Polygon、GeometryCollection等 1、整型 MySQL数据类型 含义(有符号) tinyint(m) 1个字节 范围(-128~127) smallint(m) 2个字节 范围(-32768~32767) mediumint(m) 3个字节 范围(-8388608~8388607) int(m) 4个字节 范围(-2147483648~2147483647) bigint(m) 8个字节 范围(+-9.22*10的18次方) 取值范围如果加了unsigned,则最大值翻倍,如tinyint unsigned的取值范围为

mysql类型参照

狂风中的少年 提交于 2019-11-26 16:40:53
mysql数据库内容总结 数字类型: Tinyint(M) unsigned zerofull 1个字节 默认的是有符号的-128~127 unsigned: 无符号整数 范围0~255 M: 代表宽度 (在zerofull时才有意义),只是一个显示效果,不会影响到实际的数据长度 zerofull: 零填充(如果某列是zerofull默认就是unsigned) 因为不会有 0000-1 的情况 零填充(例: 0005,多少个零就是M限制宽度) 列一般不要为null 原因一,null不好比较(等号比较不可用,只可用is null 或 is not null); 原因二,null执行效率更低,可用not null default 0 指定默认值 Smallint 同tinyInt用法 2个字节 默认有符号范围-32768~32767; 无符号范围0~65535 Mediumint 同tinyInt用法 3个字节 默认有符号范围-8388608~8388607;无符号范围0~16777215 Int 同tinyInt用法 4个字节 默认有符号范围-2147483648~2147483647; 无符号范围0~4294967295 BigInt 同tinyInt用法 8个字节 默认有符号范围-9223372036854775808-9223372036854775807;无符号范围0