![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
山鬼谣弋痕夕
学习,记录,改变
展开
-
别让数据类型问题害了你的系统
一、数据类型,熟悉吗?数据是代码中重要组成部分,而数据类型的选择和使用也影响着代码逻辑的正确性和服务的性能。在接口测试过程中,你仔细端详过数据类型吗?我们会发现:数据类型,很容易被忽略,很容易出问题。二、数据类型概述Java决定了每种简单类型的大小,这些大小并不随着机器结构的变化而变化。数据类型其大小的不可更改的特点正是Java程序具有很强移植能力的原因之一。下表列出...原创 2020-04-11 20:33:24 · 578 阅读 · 0 评论 -
java当中的四种引用
1.java当中的四种引用强引用,软引用,弱引用,虚引用。不同的引用类型主要体现在GC上: 强引用:如果一个对象具有强引用,它就不会被垃圾回收器回收。即使当前内存空间不足,JVM也不会回收它,而是抛出 OutOfMemoryError 错误,使程序异常终止。如果想中断强引用和某个对象之间的关联,可以显式地将引用赋值为null,这样一来的话,JVM在合适的时间就会回收该对象。 软...转载 2018-09-03 09:14:54 · 429 阅读 · 0 评论 -
垃圾回收机制详细分析
http://www.importnew.com/26821.html垃圾回收机制是 Java 非常重要的特性之一,也是面试题的常客。它让开发者无需关注空间的创建和释放,而是以守护进程的形式在后台自动回收垃圾。这样做不仅提高了开发效率,更改善了内存的使用状况。今天本文来对垃圾回收机制进行讲解,主要涉及下面几个问题:什么是堆内存? 什么是垃圾? 有哪些方法回收这些垃圾? 什么是分代...转载 2018-09-12 15:56:44 · 286 阅读 · 0 评论 -
邮箱校验以及电话号码校验
https://blog.csdn.net/zhang89xiao/article/details/51303056合法E-mail地址: 1. 必须包含一个并且只有一个符号“@” 2. 第一个字符不得是“@”或者“.” 3. 不允许出现“@.”或者.@ 4. 结尾不得是字符“@”或者“.” 5. 允许“@”前的字符中出现“+” 6...转载 2018-09-28 16:18:41 · 1602 阅读 · 0 评论 -
什么是OOM?如何解决OOM问题
1、什么是OOM?程序申请内存过大,虚拟机无法满足我们,然后自杀了。这个现象通常出现在大图片的APP开发,或者需要用到很多图片的时候。通俗来讲就是我们的APP需要申请一块内存来存放图片的时候,系统认为我们的程序需要的内存过大,及时系统有充分的内存,比如1G,但是系统也不会分配给我们的APP,故而抛出OOM异常,程序没有捕捉异常,故而弹窗崩溃了2、为什么会有OOM?因为Android系统的APP...转载 2018-10-17 10:43:42 · 1190 阅读 · 0 评论 -
接口和抽象类、类的区别
抽象类1.抽象类中可以构造方法。2.抽象类中可以存在普通属性,方法,静态属性和方法。3.抽象类中可以存在抽象方法。4.如果一个类中有一个抽象方法,那么当前类一定是抽象类;抽象类中不一定有抽象方法。5.抽象类中的抽象方法,需要有子类实现,如果子类不实现,则子类也需要定义为抽象的。接口1.在接口中只有方法的声明,没有方法体。2.在接口中只有常量,因为定义的变量,在编译的...原创 2018-05-08 17:23:23 · 1771 阅读 · 0 评论 -
java中的NaN和检测NaN
在java浮点数值计算都遵循IEEE 754规范,具体来说,下面是用于表示溢出和出错情况的三个特殊的浮点数值:正无穷大 负无穷大 NaN(不是一个数字)例如,一个正整数除以0的结果为正无穷大,计算0/0或者负数的平方根结果为NaN。常量Double.POSITIVE_INFINITY,Double_NEGATIVE_INFINITY和Double.NaN分别表示这三个特殊的值。检...原创 2018-10-27 14:54:12 · 14599 阅读 · 0 评论 -
java数据类型和类型转换(必须清楚)
数据类型分类:主要分为 基本类型、引用类型两大类; 基本类型 转换原则 类型转换主要在在 赋值、方法调用、算术运算 三种情况下发生。 另外还有是直接数的赋值:先通过直接数判断其类型,然后基本原则和上面谈到的赋值原则基本一致;只是直接数是整数时特殊一点,当在可表示范围内时,可以直接赋值给 byte short char三种类型;算术运算 中的类型转换: 基本就是先转换...原创 2018-10-27 16:07:05 · 354 阅读 · 0 评论 -
一个简单的方式打印数组中的所有值
用简单的方式打印数组中的所有值,即利用 Arrays类的 tostring方法。调用 Arrays.toString(a),返回一个包含数组元素的字符串,这些元素被放置在括号内,用逗号分隔。要想打印数组,可以调用System.out.printIn(Arrays.toString(a));代码演示:import java.util.Arrays;public class...原创 2018-11-02 16:39:35 · 7513 阅读 · 0 评论 -
聊聊java中的枚举类
1、枚举类是 java.lang.Enum 类的子类,其中RED、GREEN、YELLOW都是Light预定义好的Light的实例。在运行期间,我们无法再创建新的Enum的实例public enum Light { // 利用构造函数传参 RED (1), GREEN (3), YELLOW (2); // 定义私有变量 p...原创 2018-11-10 09:35:20 · 305 阅读 · 0 评论 -
Java中BigDecimal的使用
https://blog.csdn.net/cen_s/article/details/76472834在日常开发中我们经常会碰到小数计算,而小数直接计算的话会出现一些小小的错误,如下System.out.println(1.01 + 2.02);你说能输出什么?3.03?实际上输出的是3.0300000000000002。这是因为不论是float 还是double都是浮点数,而计算...转载 2018-09-04 17:58:57 · 161 阅读 · 0 评论 -
Forward和Redirect的区别
https://www.cnblogs.com/selene/p/4518246.html 用户向服务器发送了一次HTTP请求,该请求可能会经过多个信息资源处理以后才返回给用户,各个信息资源使用请求转发机制相互转发请求,但是用户是感觉不到请求转发的。根据转发方式的不同,可以区分为直接请求转发(Forward)和间接请求转发(Redirect),那么这两种转发方式有何区别呢...转载 2018-08-12 09:40:07 · 108 阅读 · 0 评论 -
JAVA实现邮件认证学习(一):工具安装
1、下载需要的软件:易邮邮件服务器Foxmail.exe2、安装易邮邮件服务器点击工具->服务器设置,设置域名这里设置的是miao.com,那么在这里注册的邮箱的域名都是以@miao.com为结尾的,点击确定就设计好了。3、由于我们的邮箱客户端不能从网页端注册,这里在界面的新账号进行邮箱账号的新建,实现邮件的收发,我们需要至少两个邮箱,这里新建两个,分别为user01和user024、邮件客...原创 2018-05-16 21:40:23 · 383 阅读 · 0 评论 -
LinkedList的使用(详细举例)
转载自:https://blog.csdn.net/sinat_36246371/article/details/53709625,微小变动,有的地方原作者有笔误LinkedList是我们在数据结构中的链表,这种数据结构有这样的特性:分配内存空间不是必须是连续的;插入、删除操作很快,只要修改前后指针就OK了,时间复杂度为O(1);访问比较慢,必须得从第一个元素开始遍历,时间复杂度为O(n);在Ja...转载 2018-06-22 16:24:49 · 5710 阅读 · 0 评论 -
PriorityQueue实现大顶堆
使用PriorityQueue实现大顶堆PriorityQueue默认是一个小顶堆,然而可以通过传入自定义的Comparator函数来实现大顶堆。如下代码实现了一个初始大小为11的大顶堆。这里只是简单的传入一个自定义的Comparator函数,就可以实现大顶堆了。private static final int DEFAULT_INITIAL_CAPACITY = 11;PriorityQueu...原创 2018-06-29 22:45:53 · 20559 阅读 · 1 评论 -
Math.pow(x,y)使用注意事项
首先明确Math.pow(x,y)的作用就是计算x的y次方,其计算后是浮点数,这里先看一个例子:例1:153是一个非常特殊的数,它等于它的每位数字的立方和,即153=1*1*1+5*5*5+3*3*3。编程求所有满足这种条件的三位十进制数。输出格式:按从小到大的顺序输出满足条件的三位十进制数,每个数占一行。public class Main { static int a ,b ,c; pub...原创 2018-06-30 13:15:47 · 47426 阅读 · 1 评论 -
并发之线程同步学习
知识点:1、顺序一致的概念:如果数据总是以顺序一致的方式出现,就不需要额外的同步。当多个线程并不能观察到数据的不一致时,那么操作就是顺序一致的。在现代计算机系统中,存储访问需要多个总线周期,多处理器的总线周期通常在多个处理器上是交叉的,所以无法保证数据是顺序一致的。2、线程安全概念:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是...转载 2018-06-19 10:51:39 · 335 阅读 · 0 评论 -
JAVA中comparator的使用
Collections.sort(list,new Comparator<Integer>(){ public int compare(Integer str1,Integer str2){ String s1=str1+""+str2; String s2=str2+""+str1; ...原创 2018-06-30 16:28:39 · 13495 阅读 · 0 评论 -
继承、组合、代理学习
转载自:https://blog.csdn.net/yangquanhui1991/article/details/49684309一:继承 继承按现有类创建一个对象,不改变现有类,采用现有类的形式向其中添加新代码; (编译器强制你去初始化基类,是is_a 的关系,比如说Student继承Person,则说明Student is a Person。继承的优点是子类可以重写父类的方法来方便地...转载 2018-06-19 17:12:48 · 243 阅读 · 0 评论 -
String数组初始化
在java 中,声明一个数组时,不能直接限定数组长度,只有在创建实例化对象时,才能对给定数组长度.。如下,1,2,3可以通过编译,4,5不行。而String是Object的子类,所以上述BCF均可定义一个存放50个String类型对象的数组。1. String a[]=new String[50];2. String b[];3. char c[];4. String d[50];5. char ...原创 2018-06-28 22:53:26 · 13810 阅读 · 0 评论 -
NumberUtils的简单举例使用
int数据类型和long数据类型int占32位,long占64位,long表示的数据更大;public static int toInt(String str) NumberUtils.toInt(null) = 0 NumberUtils.toInt("") = 0 NumberUtils.toInt("1") = 1说明:将一个字符串转换成int...转载 2018-07-30 16:36:01 · 1772 阅读 · 0 评论 -
Java方法参数使用
Java 中方法参数的使用情况:•一个方法不能修改一个基本数据类型的参数 (即数值型或布尔型)。•一个方法可以改变一个对象参数的状态。•一个方法不能让对象参数引用一个新的对象。这三句话需要怎么理解呢?下面用具体的实例来演示这个过程:public class PramTest { public static void main(String[] args){ ...原创 2018-11-20 16:21:11 · 308 阅读 · 0 评论 -
《Java核心技术 卷l 卷II 高级特性(原书第9版)》【PDF】直接下载
废话不多说,直接附上链接:https://pan.baidu.com/s/1Ec_WzbQuES86IU0sYmf50w 密码:gr3lhttps://pan.baidu.com/s/1Ec_WzbQuES86IU0sYmf50w#list/path=%2F 密码:gr3l原创 2018-11-30 15:47:58 · 6847 阅读 · 11 评论 -
秒懂Java 注解 (Annotation)
原文:https://blog.csdn.net/briblue/article/details/73824058 Annotation 中文译过来就是注解、标释的意思,在 Java 中注解是一个很重要的知识点,但经常还是有点让新手不容易理解。我个人认为,比较糟糕的技术文档主要特征之一就是:用专业名词来介绍专业名词。比如:Java 注解用于为 Java 代码提供元数据。作为元数据,...转载 2018-12-26 22:43:13 · 272 阅读 · 0 评论 -
socket编程------聊天工具
编写聊天工具是学习网络编程比较有代表性的案例。基于TCPsocket聊天工具的框架图如下:其中,标准输入是键盘,标准输出是显示器的控制台。具体过程如下:首先客户端通过键盘输入字符串,通过标准输入流读取字符串; 通过socket获得输出流,将字符串写入输出流; 服务器通过socket获得输入流,从输入流中读取来自客户端的字符串; 通过标准输出流输出到显示器的控制台。...原创 2019-03-05 15:02:42 · 588 阅读 · 0 评论 -
一个简单例子理解java多态
发生多态要有三个前提条件继承 覆盖 声明的变量类型是父类类型,但实例则指向子类实例举例:public class Figure { //绘制几何图形方法 public void onDraw() { System.out.println("绘制Figure..."); }}//几何图形三角形public class Triangle extends Figu...原创 2019-03-03 11:57:45 · 898 阅读 · 2 评论 -
几个例子轻松理解Lambda表达式
Lambda表达式介绍Lambda表达式是一个匿名函数(方法)代码块,可以作为表达式、方法参数和方法返回值。Lambda表达式标准语法形式如下:(参数列表) -> { //Lambda表达式}Lambda表达式实现的接口不是普通的接口,称为函数式接口,这种接口只能有一个方法。如果接口中声明多个抽象方法,那么Lambda表达式会发生编译错误。@Functiona...转载 2019-03-03 21:10:06 · 438 阅读 · 0 评论 -
Java 网络IO编程总结
Linux五种IO模型https://blog.csdn.net/weixin_30363263/article/details/88106286IO的方式通常分为几种,同步阻塞的BIO、同步非阻塞的NIO、异步非阻塞的AIO。一、BIO编程 1.1、传统的BIO编程网络编程的基本模型是C/S模型,即两个进程间的通信。服务端提供IP和监听端口,客户端通过连接...转载 2019-03-06 16:49:15 · 460 阅读 · 0 评论 -
Java程序员应该知道的20个有用的库
Java程序员20个有用的开源库1.日志库2. JSON解析库3.单元测试库4.通用库5. HTTP库6. XML解析库7. Excel库8.字节码库9.数据库连接池库10.消息传递库11. PDF库12.日期和时间库13.Collection库14.Email API15. HTML解析库16.Cryptographic库17....转载 2019-03-04 14:13:30 · 302 阅读 · 0 评论 -
Java枚举:优雅而干净的小小enum
《Java编程思想》中有这么一句话:“有时恰恰因为它,你才能够‘优雅而干净’地解决问题”——这句话说的是谁呢?就是本篇的主角——枚举(Enum)——大家鼓掌了。在之前很长时间一段时间里,我都不怎么用枚举,因为总感觉它没什么用处——这其实就是“自我认知”的短见。当一个人一直蹲在自己的深井里而不敢跳出来的话,那他真的只能看到井口那么大点的天空。随着时间的推移,我做的项目越来越多,和枚举见面的机...转载 2019-03-16 16:10:16 · 252 阅读 · 0 评论 -
看图理解java数组怎样产生
Java 数组Java 数组在内存中的存储是这样的:数组对象(这里可以看成一个指针)存储在栈中。数组元素存储在堆中。如下图所示:只有当 JVM 执行 new String[] 时,才会在堆中开辟相应的内存区域。数组对象 array 可以视为一个指针,指向这块内存的存储地址。...原创 2019-03-17 11:05:10 · 236 阅读 · 0 评论 -
从ArrayList、LinkedList、Vector的区别来聊一下Collection
先来看幅图:我们可以看到Java的集合框架,Collection接口是所有集合的根,然后扩展开提供了三大集合,分别是:List、Set、Queue1) ListList集合代表一个元素有序、可重复的集合,集合中每个元素都有其对应的顺序索引。List集合允许加入重复元素,因为它可以通过索引来访问指定位置的集合元素。List集合默认按元素的添加顺序设置元素的索引 ...原创 2018-12-21 11:44:51 · 259 阅读 · 0 评论 -
新手学习消息队列知识梳理
转载地址:https://juejin.im/post/5c1731466fb9a049af6d2a83本文内容思维导图: 消息队列其实很简单 “RabbitMQ?”“Kafka?”“RocketMQ?”...在日常学习与开发过程中,我们常常听到消息队列这个关键词。我也在我的多篇文章中提到了这个概念。可能你是熟练使用消息队列的老手,又或者你是不懂消息队列的新手,不论你了...转载 2018-12-20 17:29:55 · 298 阅读 · 0 评论 -
透彻解析Java类加载机制
原文转载:https://mp.weixin.qq.com/s?__biz=MzAxMjEwMzQ5MA==&mid=2448886478&idx=1&sn=0a1ff147078ca37573bba768ac982374&chksm=8fb550e3b8c2d9f5b68a62cef3b66c04ce878c1817127f5204b9d6628c0ed2fe98...转载 2018-12-14 21:13:55 · 137 阅读 · 0 评论 -
继承的设计技巧
继承的设计技巧摘自《java核心技术》第五章继承设计技巧1. 将公共操作和域放在超类这就是为什么将姓名域放在 Person 类中, 而没有将它放在 Employee 和 Student 类中的原因。 2. 不要使用受保护的域有些程序员认为, 将大多数的实例域定义为 protected 是一个不错的主意,只有这样,子类才能够在需要的时候直接访问它们。然而, protected 机...原创 2018-11-21 10:55:10 · 298 阅读 · 0 评论 -
绘制UML图详解
https://blog.csdn.net/shift_wwx/article/details/79205187一、前言在软件开发过程中会经常整理文档,不是所有的信息都可以通过文字来表达,而换成图之后会更加的直观、有效,其中频繁使用的就是UML图。结合自己实践总结一下,希望对大家都能有所帮助。本文中的UML图都是用visio 绘制,source code展示是Java 语言。二、U...转载 2018-11-20 09:48:31 · 8267 阅读 · 3 评论 -
Java定时任务调度工具Timer详解
做项目很多时候会用到定时任务,比如在深夜,流量较小的时候,做一些统计工作。早上定时发送邮件,更新数据库等。这里可以用Java的Timer或线程池实现。Timer可以实现,不过Timer存在一些问题。他起一个单线程,如果有异常产生,线程将退出,整个定时任务就失败。Timer定时任务原理基本理解:单线程 + 最小堆 + 不断轮询Timer有四种用法四种用法,通过其参数名称也可以...原创 2018-11-23 16:27:00 · 279 阅读 · 0 评论 -
如何判断一个元素在亿级数据中是否存在?
如何判断一个元素在亿级数据中是否存在?https://juejin.im/post/5bfc90be5188254e2a04374b前言最近有朋友问我这么一个面试题目:现在有一个非常庞大的数据,假设全是 int 类型。现在我给你一个数,你需要告诉我它是否存在其中(尽量高效)。需求其实很清晰,只是要判断一个数据是否存在即可。但这里有一个比较重要的前提:非常庞大的数据。...转载 2018-11-29 16:32:24 · 326 阅读 · 0 评论 -
PO、VO、DAO、BO、POJO的含义
一、PO: persistant object 持久对象,可以看成是与数据库中的表相映射的java对象。最简单的PO就是对应数据库中某个表中的一条记录,多个记录可以用PO的集合。PO中应该不包含任何对数据库的操作。二、VO:value object值对象。通常用于业务层之间的数据传递,和PO一样也是仅仅包含数据而已。但应是抽象出的业务对象,可以和表对应,也可以不,这根据业务的需...原创 2018-11-28 10:53:26 · 392 阅读 · 0 评论 -
反射和动态代理
转载地址:https://segmentfault.com/a/1190000017339972反射和动态代理放有一定的相关性,但单纯的说动态代理是由反射机制实现的,其实是不够全面不准确的,动态代理是一种功能行为,而它的实现方法有很多。要怎么理解以上这句话,请看下文。一、反射反射机制是 Java 语言提供的一种基础功能,赋予程序在运行时自省(introspect,官方用语)的能力。通过...转载 2018-12-14 09:55:48 · 365 阅读 · 0 评论