在许多算法中都要用到一个常量来表示最大值,例如:寻找一个最小数,就要先设定一个值a,如果比a小,a就等于这个数:再如,最短路径中基本的松弛操作: 0 在c++中可以用memset() 来初始化数组成最大值 1if (d[u]+w[u][v]<d[v]) d[v]=d[u]+w[u][v];计算机不会表示出“无穷大”的概念,所以我们只能以一个定值来表示“最大”.那么使用什么值呢? 对于int类型,很自然地,我们想到用 0x7f ff ff ff .这是32-bit的int类型所能表示的最大值.in…
判断一个int值是几位数,要是我自己实现,估计又会想到除法和模运算了,偶然在java标准API源码中发现的写法,很强大. public class Test { final static int[] sizeTable = { 9, 99, 999, 9999, 99999, 999999, 9999999, 99999999, 999999999, Integer.MAX_VALUE }; static int sizeOfInt(int x) { for (int i = 0;; i++)…
要得到最大的int值: 1.利用(unsigned int)-1,这样得到的就是unsigned int表示的最大值. 2.int值只是比unsigned int多一位符号位,所以对(unsigned int)-1右移一位就可以得到最大的int值. 3.也就是(int)((unsigned int)-1>>1);…
聊聊java基础,int值强制类型转换成byte 知识点:byte.short.char在表达式中会自动提升为int 之前做一个应用时,打印IP地址,因为是用4个byte存储的,所以打印的时候值范围是-128~127,考虑了下怎么快速转换成int值.然后今天抽空把整个完整的过程思考下,然后写下来. 首先int强制类型转换成byte,直接取低8位,这个大家可以自己试试,不管int值是多少,转化后的byte二进制与int的第八位二进制一样.所以如果int的第八位是1,转成byte就是负值,否则就是正…
日期: 2014年6月10日 作者: 铁锚 Java针对多线程下的数值安全计数器设计了一些类,这些类叫做原子类,其中一部分如下: java.util.concurrent.atomic.AtomicBoolean; java.util.concurrent.atomic.AtomicInteger; java.util.concurrent.atomic.AtomicLong; java.util.concurrent.atomic.AtomicReference; 下面是一个对比  Atomi…
1.首先看mapper代码,这是个更新语句. <set> <if test="sendmode!='' && sendmode!=null"> send_mode=#{sendmode}, </if> </set> 2.问题:这个语句在oracle可视化界面是没问题,可以运行的,但是我在前台页面输入sendmode为0,后台转为int值(oracle类型为NUMBER),mapper文件中就会认为sendmode为null…
首先我们对读写锁做一个概述: 假设你的程序中涉及到对一些共享资源的读和写操作,且写操作没有读操作那么频繁.在没有写操作的时候,两个线程同时读一个资源没有任何问题,所以应该允许多个线程能在同时读取共享资源.但是如果有一个线程想去写这些共享资源,就不应该再有其它线程对该资源进行读或写,也就是说:读-读能共存,读-写不能共存,写-写不能共存.这就需要一个读/写锁来解决这个问题. 阿里巴巴四面最后的问题就涉及到了读写锁的实现. 问:对JAVA中的读写锁熟悉吗? 我:还可以... 问:简单介绍一下...…
日期: 2014年6月10日 作者: 铁锚 Java针对多线程下的数值安全计数器设计了一些类,这些类叫做原子类,当中一部分例如以下: java.util.concurrent.atomic.AtomicBoolean; java.util.concurrent.atomic.AtomicInteger; java.util.concurrent.atomic.AtomicLong; java.util.concurrent.atomic.AtomicReference; 以下是一个对照  Ato…
要得到最大的int值: 利用(unsigned int)-1,这样得到的就是unsigned int表示的最大值, int值只是比unsigned int多一位符号位,所以对(unsigned int)-1右移一位就可以得到最大的int值, 也就是(int)((unsigned int)-1>>1);…
这一篇讲的是怎样加载整数值到运算栈上.这一类的指令都是以Ldc_I4开头. Ldc_I4类OpCodes的Ldc_I4字段的功能是把一个int值压入运算栈上.它的使用方法是ilGenerator.Emit(OpCodes.Ldc_I4, <整数值>);产生的指令是ldc.i4 <整数值>几个例子 ilGenerator.Emit(OpCodes.Ldc_I4, 2000);//ldc.i4 2000 ilGenerator.Emit(OpCodes.Ldc_I4, -100);//…