浮点运算

MySQL数据类型与优化

泄露秘密 提交于 2020-03-26 21:20:15
原创itcats_cn 最后发布于2019-11-07 22:07:01 阅读数 713 收藏 展开 关于数据类型的优化 1、假如只需要存0~255之间的数,无负数,应使用tinyint unsigned(保证最小数据类型) 2、如果长度不可定,如varchar,应该选择一个你认为不会超过范围的最小类型 比如: varchar(20),可以存20个中文、英文、符号,不要无脑使用varchar(150) 3、整形比字符操作代价更低。比如应该使用MySQL内建的类型(date/time/datetime)而不是字符串来存储日期和时间 4、应该使用整形存储IP地址,而不是字符串 5、尽量避免使用NULL,通常情况下最好指定列为NOT NULL,除非真的要存储NULL值 6、DATETIME和TIMESTAMP列都可以存储相同类型的数据:时间和日期,且精确到秒。然而TIMESTAMP只使用DATETIME一半的内存空间,并且会根据时区变化,具有特殊的自动更新能力。另一方面,TIMESTAMP允许的时间范围要小得多,有时候它的特殊能力会变成障碍 整数类型 1、TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT分别使用8(-127~127或0~255)、16(0~65535)、24(0~1600万)、32、64位存储空间。 2、整数类型有可选的UNSIGNED属性

错误提示,解决方案java.lang.UnsatisfiedLinkError: Couldn't load easemobservice from loader dalvik.system.PathClassLoad

六月ゝ 毕业季﹏ 提交于 2020-02-28 00:33:31
解决方案: 在libs下面创建一个armeabi-v7a文件夹 把armeabi *.so的文件复制一份 放在armeabi-v7a运行测试通过 关于 armeabi和armeabi-v7a 区别如下: armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips的就悲催的被忽视了),不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm cpu。 在android.mk里可配置以下宏: TARGET_CPU_API := armeabi APP_ABI := armeabi 现在还有x86的了,其实armeabi 、armeabi-v7a 和x86是编译 NDK 库时,可以使用三种支持的应用二进制接口(ABI): ‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。 ‘armeabi-v7a’ – 创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。 ‘x86’ – 生成的二进制代码可支持包含基于硬件的浮点运算的 IA-32 指令集。 希望能够帮助你。 丶贰九 转发,请注明出处:[url

解决浮点运算精度不准确,BigDecimal 加减乘除

半腔热情 提交于 2020-01-28 21:42:19
package com.kflh.boxApi.utils.util; import java.math.BigDecimal; /** * @program: BoxApi * @description: 计算浮点数 * @author: eterntiyz * @create: 2019-01-17 11:10 */ public class DoubleCalendar { /** * @Description: 浮点加法 * @Param: [] * @return: java.lang.Double * @Author: tonyzhang * @Date: 2019-01-17 11:27 */ public static Double add(String str1,String str2) { BigDecimal bignum1 = new BigDecimal(str1); BigDecimal bignum2 = new BigDecimal(str2); BigDecimal bignum3 = bignum1.add(bignum2); return bignum3.doubleValue(); } /** * @Description: 浮点减法 * @Param: [] * @return: java.lang.Double * @Author:

CUDA C编程权威指南 第一章

断了今生、忘了曾经 提交于 2020-01-21 05:05:46
基础 CUDA(Compute Unified Device Architecture)是NVIDIA提出 CPU和GPU是的PCI-Express总线相连 cpu CPU则负责管理设备端的资源; CPU核心比较重,用来处理非常复杂的控制逻辑,以优化串行程序执行。 CPU线程:操作系统必须交替线程使用启用或关闭CPU执行通道以提供多线程处理功能。上下文的切换缓慢且开销大 gpu GPU用来提高计算密集型应用程序中并行程序段的执行速度, GPU代表了一种众核架构(many cores),包含多线程、MIMD(多指令多数据)、SIMD(单指令多数据),以及指令级并行。英伟达称:SIMT(单指令多线程) GPU核心较轻,用于优化具有简单控制逻辑的数据并行任务,注重并行程序的吞吐量。 GPU线程,GPU上的线程是高度轻量级的。 GPU性能 GPU容量特征:1. CUDA核心数 2. 内存大小 GPU性能评估: 1. 峰值计算性能,用GFlops(每秒十亿次浮点运算),TFlops(每秒万亿次浮点运算) 2. 内存带宽读取或写入数据的比率,GB/s 带宽是单位时间内可处理的数据量,通常表示为MB/s或GB/s。 吞吐量是单位时间内成功处理的运算数量,通常表示为gflops(即每秒十亿次的浮点运算数量) 异构架构 异构应用包含:主机代码和设备代码

armeabi和armeabi-v7a 以及x86

蹲街弑〆低调 提交于 2019-12-22 11:43:17
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 原文:http://blog.csdn.net/dxpqxb/article/details/7721156 armeabi和armeabi-v7a 在我们android APK的根目录有一个 libs文件夹,此文件夹下包含了armeabi 和armeabi-v7a两个文件夹,我们的c代码编译成的本地库(各种.so)就会放在这两个文件夹其中的一个。那armeabi-v7a 与 armeabi有什么区别,都是什么意思呢? armeabi和armeabi-v7a是表示cpu的类型,我们知道一般的手机或平板都是用arm的cpu(mips的就悲催的被忽视了),不同的cpu的特性不一样,armeabi就是针对普通的或旧的arm v5 cpu,armeabi-v7a是针对有浮点运算或高级扩展功能的arm v7 cpu。 在android.mk里可配置以下宏: TARGET_CPU_API := armeabi APP_ABI := armeabi 当你编译时出现一些链接动态库的undefine错误,或你的apk运行时出现装载.so动态库错误时,不妨看一下这个cpu类型的配置是否有误。 ======================================================================

计算机组成原理复习问题

孤街浪徒 提交于 2019-12-10 07:44:54
第二章: 1.在用补码阵列乘法器,求乘积x*y 时,如果是负值 为什么要取反? 2.溢出判断 为什么要还原 3.浮点运算方法 x+y x-y 浮点运算方法 X*Y 4.不恢复余数除法 来源: CSDN 作者: ao_mike 链接: https://blog.csdn.net/ao_mike/article/details/103465486

Android so文件是32位时,如何在64位手机上运行。

▼魔方 西西 提交于 2019-12-06 22:46:32
今天遇到一个很蛋疼的问题,使用了网上的开源二维码扫描,所用的so文件是32位的,在64位手机上报错,解决的办法是在项目目录下的build.gradle文件中添加如下字段 然后在项目文件夹下的gradle.properties文件中加入 android.useDeprecatedNdk=true 这时你的32位SO文件就可以在64位手机上运行了。 首先要明白ABI的概念: ABI(Application Binary Interface)实际就是指应用程序基于哪种指令集来进行编译,我们能用到的ABI 也就四种 armeabi armeabi-v7a x86 和mips ,前两者是最常见的。 其次这4个编译选项的含义: 1.‘armeabi’ – 默认选项,将创建以基于 ARM* v5TE 的设备为目标的库。 具有这种目标的浮点运算使用软件浮点运算。 使用此 ABI 创建的二进制代码将可以在所有 ARM* 设备上运行。 2.‘armeabi-v7a’ – 创建支持基于 ARM* v7 的设备的库,并将使用硬件 FPU 指令。 3.‘x86’ – 生成的二进制代码可支持包含基于硬件的浮点运算的 IA-32 指令集. 4.mips — 支持应用二进制接口 总结: APP_ABI 赋值,就是为了交叉编译生成相应芯片可执行的指令集。直观的看就是如果你将 APP_ABI := armeabi

shell运算、双括号、双中括号

冷暖自知 提交于 2019-12-05 12:11:42
在bash中计算i=i+1有三种办法: 1.i=$(($i+1)) 2.i=`expr $i + 1` 3.let “i=i+1″ 其中第一种和第二种是可以在sh里面使用的,第三种只能在bash里使用,还是第一种最简单,通用。 双括号还有妙用 for ((i=1;i<=num;i++)) shell里面是不允许if [ $a != 1 || $b = 2 ]出现的,要用 if [ $a != 1 ] || [ $b = 2 ]] 用双括号可以解决 if [[ $a != 1 || $b = 2 ]] if [ "$a" -lt "$b" ]也可以改成双括号的形式 ((“$a” < “$b”)) 在刚刚学习写shell 批处理时候,进行逻辑运算中,少不了需要进行基础的:四则运算,这里说说在linux shell 里面简单的实现方法。 1.简单方法 [chengmo@centos5 ~]$ b=$((5*5+5-3/2)) [chengmo@centos5 ~]$ echo $b 29 在linux shell中,我们可以使用 $(()) 将表达式放在括号中,即可达到运算的功能。 2.其它方法: 用:expr 实现运算 [chengmo@centos5 ~]$ expr 5 - 4 1 注意:将需要运算的表达式写入在expr 后面即可,保证 参数与运算符号中间有空格隔开。 类别 语法

armel、armhf和arm64

て烟熏妆下的殇ゞ 提交于 2019-12-04 19:43:06
armel、armhf和arm64 转帖 1 这些名词是什么的缩写 1.1 armel 是arm eabi little endian的缩写。eabi是软浮点二进制接口,这里的e是embeded,是对于嵌入式设备而言。 1.2 armhf 是arm hard float的缩写。 1.3 arm64 64位的arm默认就是hf的,因此不需要hf的后缀。 2 armel和armhf的区别 它们的区别体现在浮点运算上,它们在进行浮点运算时都会使用fpu,但是armel传参数用普通寄存器,而armhf传参数用的是fpu的寄存器,因此armhf的浮点运算性能更高。 gcc编译的时候,使用-mfloat-abi选项来指定浮点运算使用的是哪种,soft不使用fpu,armel使用fpu,使用普通寄存器,armhf使用fpu,使用fpu的寄存器。 编译时,kernel、rootfs和app的指定必须一致才行。 1 这些名词是什么的缩写 1.1 armel 是arm eabi little endian的缩写。eabi是软浮点二进制接口,这里的e是embeded,是对于嵌入式设备而言。 1.2 armhf 是arm hard float的缩写。 1.3 arm64 64位的arm默认就是hf的,因此不需要hf的后缀。 2 armel和armhf的区别 它们的区别体现在浮点运算上

Java及Javascript中的浮点运算

霸气de小男生 提交于 2019-12-04 06:03:29
在进行金额计算,及某些精确计算时,会出现意想不到的很多小数的情况。 对Java   采用BigDecimal,如下代码示例 package number; import java.math.BigDecimal; public class NumberTest { public static void main(String[] args){ double a = 2.05d; BigDecimal c = new BigDecimal(a); System.out.println("using double--"); System.out.println("a * 100 = " + a + " * 100 = " + a*100); System.out.println("using BigDecimal--"); BigDecimal m = new BigDecimal("2.05").multiply(new BigDecimal(100)); //<-- please use this. System.out.println("a * 100 = " + a + " * 100 = " + m); BigDecimal n = new BigDecimal(2.05d).multiply(new BigDecimal(100)); System.out.println(