网站开发有哪些软件有哪些xampp 开发网站

当前位置: 首页 > news >正文

网站开发有哪些软件有哪些,xampp 开发网站,如何用c 做网站,上海专业网站建设平台目录 引出Java中基本类型使用建议建议21#xff1a;用偶判断#xff0c;不用奇判断建议22#xff1a;用整数类型处理货币建议23#xff1a;不要让类型默默转换建议24#xff1a;边界、边界、还是边界建议25#xff1a;不要让四舍五入亏了一方 建议26#xff1a;提防包装… 目录 引出Java中基本类型使用建议建议21用偶判断不用奇判断建议22用整数类型处理货币建议23不要让类型默默转换建议24边界、边界、还是边界建议25不要让四舍五入亏了一方 建议26提防包装类型的null值建议27谨慎包装类型的大小比较建议28优先使用整型池建议29优先选择基本类型建议30不要随便设置随机种子 深入认识JVMJVM内存分配类加载创建对象的4种方法总结垃圾回收GCJVM调优Arthas使用 认识多线程创建多线程方法了解线程池多线程下-1非原子性问题即解决再论线程创建、生命周期 总结 引出 程序人生——Java中基本类型使用建议 Java中基本类型使用建议 建议21用偶判断不用奇判断 不要使用奇判断i%2 1 ? “奇数” : “偶数”使用偶判断i%2 0 ? “偶数” : “奇数”。原因Java中的取余%标识符算法测试数据输入1 2 0 -1 -2奇判断的时候当输入-1时也会返回偶数。 // 模拟取余计算dividend被除数divisor除数 public static int remainder(int dividend, int divisor) { return dividend - dividend / divisor * divisor;}建议22用整数类型处理货币 不要使用float或者double计算货币因为在计算机中浮点数“有可能”是不准确的它只能无限接近准确值而不能完全精确。不能使用计算机中的二进制位来表示如0.4等的浮点数。 解决方案1、使用BigDecimal优先使用2、使用整型
建议23不要让类型默默转换 基本类型转换时使用主动声明方式减少不必要的Bug public static final int LIGHT_SPEED 30 * 10000 * 1000;long dis2 LIGHT_SPEED * 60 * 8;以上两句在参与运算时会溢出因为Java是先运算后再进行类型转换的。因为dis2的三个运算参数都是int类型三者相乘的结果也是int类型但是已经超过了int的最大值所以越界了。解决方法在运算参数60后加L即可。 建议24边界、边界、还是边界 数字越界是检验条件失效边界测试检验条件if(order0 ordercurLIMIT)输入的数大于0加上cur的值之后溢出为负值小于LIMIT所以满足条件但不符合要求 建议25不要让四舍五入亏了一方 Math.round(10.5输出结果11Math.round(-10.5)输出结果-10。这是因为Math.round采用的舍入规则所决定的采用的是正无穷方向舍入规则根据不同的场景慎重选择不同的舍入模式以提高项目的精准度减少算法损失 建议26提防包装类型的null值 泛型中不能使用基本类型只能使用包装类型null执行自动拆箱操作会抛NullPointerException异常因为自动拆箱是通过调用包装对象的intValue方法来实现的而访问null的intValue方法会报空指针异常。谨记一点包装类参与运算时要做null值校验即i!null ? i : 0 建议27谨慎包装类型的大小比较 大于或者小于比较时包装类型会调用intValue方法执行自动拆箱比较。而等号用来判断两个操作数是否有相等关系的如果是基本类型则判断数值是否相等如果是对象则判断是否是一个对象的两个引用也就是地址是否相等。通过两次new操作产生的两个包装类型地址肯定不相等 建议28优先使用整型池 自动装箱是通过调用valueOf方法来实现的包装类的valueOf生成包装实例可以显著提高空间和时间性能valueOf方法实现源码 public static Integer valueOf(int i) { final int offset 128; if (i -128 i 127) { return IntegerCache.cache[i offset]; } return new Integer(i); }class IntegerCache { static final Integer cache[] new Integer[-(-128) 127 1]; static { for (int i 0; i cache.length; i) cache[i] new Integer(i - 128); }}cache是IntegerCache内部类的一个静态数组容纳的是-128到127之间的Integer对象。通过valueOf产生包装对象时如果int参数在-128到127之间则直接从整型池中获得对象不在该范围的int类型则通过new生成包装对象。在判断对象是否相等的时候最好是利用equals方法避免“”产生非预期结果。 建议29优先选择基本类型 int参数先加宽转变成long型然后自动转换成Long型。Integer.valueOf(i)参数先自动拆箱转变为int类型与之前类似 建议30不要随便设置随机种子 若非必要不要设置随机数种子Random r new Random(1000);该代码中1000即为随机种子。在同一台机器上不管运行多少次所打印的随机数都是相同的。在Java中随机数的产生取决于种子随机数和种子之间的关系遵从以下两个规则1、种子不同产生不同的随机数2、种子相同即使实例不同也产生相同的随机数。Random类默认种子无参构造是System.nanoTime()的返回值这个值是距离某一个固定时间点的纳秒数所以可以产生随机数。java.util.Random类与Math.random方法原理相同 深入认识JVM JVM内存分配类加载 Java进阶1——JVM的内存分配 反射Class类的类对象 创建对象的几种方式 类加载何时进入内存JVM 注解 反射注解的案例 创建对象的4种方法总结 Java进阶4——结合类加载JVM的过程理解创建对象的几种方式new反射Class克隆clone拷贝序列化反序列化 垃圾回收GC Java进阶垃圾回收GC——理论篇JVM内存模型 垃圾回收定位清除算法 JVM中的垃圾回收器 简介本篇博客介绍JVM的内存模型对比了1.7和1.8的内存模型的变化介绍了垃圾回收的语言发展阐述了定位垃圾的方法引用计数法和可达性分析发以及垃圾清除算法然后介绍了Java中的垃圾回收器由串行、到并行再到并发最后到G1的演变最后给出了垃圾回收器的对比和使用指引。 JVM调优Arthas使用 Java进阶JVM调优——阿里云的Arthas的使用 安装和使用 死锁查找案例重新加载案例慢调用分析Java进阶JVM调优——JVM调优参数 JDK自带工具使用 内存溢出和死锁问题案例 GC垃圾回收 认识多线程 创建多线程方法了解线程池 Java进阶5——创建多线程的方法extends Thread和implements Runnable的对比 线程池及常用的线程池 多线程下-1非原子性问题即解决 Java进阶6——抢购问题中的数据不安全非原子性问题 Java中的synchronize和ReentrantLock锁使用 死锁及其产生的条件 再论线程创建、生命周期 Java进阶再论线程——线程的4种创建方式 线程的生命周期 线程的3大特性 集合中的线程安全问题 主要内容 1.线程创建的方式继承Thread类实现Runable接口实现Callable接口采用线程池 2.线程生命周期 join()运行结束再下一个 yield()暂时让出cpu的使用权deamon()守护线程最后结束sleep()如果有锁不会让出 3.线程3大特性原子性可见性有序性 4.list集合中线程安全问题hash算法问题 总结 程序人生——Java中基本类型使用建议