![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java基础
文章平均质量分 62
三七有脾气
我是“三七有脾气”,一个在互联网“苟且偷生”的程序员
展开
-
5种全局ID生成方式、优缺点及改进方案
5种全局ID生成方式、优缺点及改进方案原创 2022-11-30 23:37:42 · 1282 阅读 · 0 评论 -
Java 在new一个新对象的时候内存中发生了什么
Java 在new一个新对象的时候内存中发生了什么java在new一个对象的时候,是经过了以下的步骤的①首先是JVM虚拟机编译对象所在的class文件,将class文件放入方法区中②JVM虚拟机读取main方法的入口,将main方法入栈,执行创建对象的代码,如Person p =new Person();③在main方法所在的栈内存中分配引用 p ④在堆中分配内存,将创建的Person对象放入堆内存 ⑤将栈中的引用p, 指向Person对象以上就是创建一个对象是,内存发生了什么的具体介绍,接原创 2020-08-02 17:35:55 · 3327 阅读 · 1 评论 -
Java中List和数组转换的使用
关于数组和List的互相转换,大家都是耳熟能详了,毕竟是经典八股文之一。但是这里还是再次强调一些事项吧数组转List经典八股文,脱口而出的答案就是Arrays.asList()。但是我不推荐,两个理由:①对于数组的类型有要求。这也是为什么在网上搜数组转List的示例都是如:String[] strings = {“aa”,“bb”,“cc”}这种了。如果用int这种基本类型的数组呢:答案是不行。必须用Integer[],Double[]这种装箱后的类型,或者说必须引用类型。如果是方法限定原创 2021-12-14 17:18:11 · 760 阅读 · 1 评论 -
eclipse导入项目后有红叉
eclipse导入项目后有红叉今天重装系统弄的有点晚了,然后又来了感觉想要看看系统重装后我能否部署我的毕业设计,说干就干,结果导入之后就有红叉了,而且我的红叉全在xml文件上(嗯,这个不重要)解决红叉的办法有两个,两个配合使用基本必定能行首先第一个就是我们最熟悉的 项目-----》右键-------》Java Build Path-------》library看看library中的jdk和Tomcat有没有哪个是显示“”unbound”的,哪个有unbound就移除它,然后add Library,原创 2020-08-02 16:46:44 · 500 阅读 · 0 评论 -
java实现堆排序
排序算法之堆排序现在是2020年3月3日上午9点,看了好久好久的堆排序还是无法理解其运算到底是如何排序的,很不甘,但是就是听不懂,好吧,我会回来的,先照着代码先打一遍,理解了一半堆排序百度百科(废话)堆排序(英语:Heapsort)是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。堆排序基本介绍堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度原创 2020-08-04 19:40:15 · 191 阅读 · 1 评论 -
Java的Arrays.sort()方法到底用的什么排序算法
Java的Arrays.sort()方法到底用的什么排序算法.转:https://www.cnblogs.com/baichunyu/p/11935995.html.暂时网上看过很多JDK8中Arrays.sort的底层原理,有些说是插入排序,有些说是归并排序,也有说大于域值用计数排序法,否则就使用插入排序。。。其实不全对。让我们分析个究竟:// Use Quicksort on small arraysif (right - left < QUICKSORT_THRESHOLD)原创 2020-08-03 08:42:55 · 8783 阅读 · 1 评论 -
Java8新特性之线程安全的时间日期API尝试
Java8新特性之线程安全的时间日期API尝试嗯,这篇博客只有代码,重要的是线程安全package cn.ycl.test;import java.time.LocalDate;import java.time.format.DateTimeFormatter;import java.util.ArrayList;import java.util.List;import java.util.concurrent.Callable;import java.util.concurrent.E原创 2020-08-02 17:29:58 · 549 阅读 · 0 评论 -
Java 8 之 新日期时间API
Java 8 之 新日期时间API1.系统时间```java1.LocalDate date = LocalDate.now(); 2.System.out.println(date.getYear() + "/" + date.getMonthValue() + "/" + date.getDayOfMonth()); // 2020/3/13 3. `在这里插入代码片`4.LocalTime time = LocalTime.now(); 5.System.out.println原创 2020-08-02 17:28:16 · 186 阅读 · 1 评论 -
浅析http的实现原理
http的实现原理http的实现原理其实就是数据在传输过程中的,基于TCP/IP 的通信协议,主要分为四步:1.连接:客户端与服务端建立连接,写入scoket虚拟文件后就表示建立连接2.请求:通过TCP套接字,客户端向Web服务器发送一个文本的请求报文,一个请求报文由请求行、请求头部、空行和请求数据4部分组成3.应答:Web服务器解析请求,定位请求资源。服务器将资源复本写到TCP套接字,由客户端读取。一个响应由状态行、响应头部、空行和响应数据4部分组成。4.断开连接:若connection原创 2021-06-26 15:18:32 · 808 阅读 · 0 评论 -
Java基础之文件的写入与读取
Java基础之文件的写入与读取1.Java中将数据写入磁盘//创建一个文件 File file2=new File("e:\\a.txt"); FileWriter fWriter=null; try { //将创建的文件作为被写入的对象fWriter=new FileWriter(file2);//要被写入的对象String a="袁昌亮是最帅的";//将a写入file2中fWriter.write(a);fWriter.f原创 2021-06-26 15:15:34 · 1608 阅读 · 0 评论 -
什么是类加载器以及双亲委派模型
说一下类装载的执行过程类装载分为以下 5 个步骤:。· 。加载:根据查找路径找到相应的 class 文件然后导入; 。· 。验证:检查加载的 class 文件的正确性; 。·。准备:给类中的静态变量分配内存空间; 。·。解析:虚拟机将常量池中的符号引用替换成直接引用的过程。符号引用就理解为一个标示,而在直接引用直接指向内存中的地址; 。·。初始化:对静态变量和静态代码块执行初始化工作。双亲委派模型:如果一个类加载器收到了类加载的请求,它首先不会自己去加载这个类,而是把这个请求委派给父类原创 2021-06-26 13:57:56 · 153 阅读 · 0 评论 -
美团笔试题之查找幸运星
美团笔试题之查找幸运星题目其实很简单,特别简单,当时看一眼题目我心中就有思路了,问题就是我卡在了如何循环输入上了,简直是不可思议,当时我想复杂了,现在看来如此简单的问题我卡了这么久,实在是不应该啊,写这篇博客的目的就是记录一下如何循环输入。题目:本地IDE中的解答,原来循环输入这么简单package cn.ycl;import java.util.Scanner;//美团笔试题第一题,找幸运星public class Main { public static void main(Stri原创 2021-06-22 17:40:53 · 791 阅读 · 1 评论 -
http的长连接和短连接的区别
http的长连接和短连接的区别一、长连接与短连接:长连接:客户端与服务端先建立连接,连接建立后不断开,然后再进行报文发送和接收。这种方式下由于通讯连接一直存在。短连接:客户端与服务端每进行一次报文收发交易时才进行通讯连接,交易完毕后立即断开连接。此方式常用于一点对多点通讯。二、长连接与短连接的操作过程:短连接的操作步骤是:建立连接——数据传输——关闭连接…建立连接——数据传输——关闭连接长连接的操作步骤是:建立连接——数据传输…(保持连接)…数据传输——关闭连接三、长连接与短连接的使用时机:转载 2021-06-22 17:39:19 · 5442 阅读 · 0 评论 -
Java中的对象池技术---解决各种判断引用是否相等的情况
Java中的对象池技术java中的对象池技术,是为了方便快捷地创建某些对象而出现的,当需要一个对象时,就可以从池中取一个出来(如果池中没有则创建一个),则在需要重复重复创建相等变量时节省了很多时间。对象池其实也就是一个内存空间,不同于使用new关键字创建的对象所在的堆空间。本文只从java使用者的角度来探讨java对象池技术,并不涉及对象池的原理及实现方法。个人认为,如果是真的专注java,就必须对这些细节方面有一定的了解。但知道它的原理和具体的实现方法则不是必须的。1,对象池中对象和堆中的对象p原创 2021-05-31 15:20:03 · 162 阅读 · 0 评论 -
为什么使用restTemplate会返回null呢,因为你少了关键的一步
问题相信你在使用restTemplate的时候,应该是在类中进行注入,@Autowiredprivate RestTemplate restTemplate;然后在方法中去调用String result = restTemplate.postForObject(........);结果返回的数据result一直都是nullnull如果你就是这样使用restTemplate的话,肯定会返回空的解决方法会出现这种结果就是因为大家没有初始化restTemplate我们需要在类中定义初始原创 2021-04-28 10:17:25 · 9038 阅读 · 4 评论 -
从零开始,Java个人项目部署上线,并能在公网访问
从零开始,Java个人项目部署上线,并能在公网访问当我写这篇文章时,标志着,我从学习java以来,最大的盲点,最深的执著,最强的好奇心,都被满足。不管你有没有参加工作,这篇文章都能给你带来或多或少的启发,也有一些公司就是使用这种方法,将正式项目部署上线的。就算你只有一台电脑,一个项目,其他什么也没有,也可以通过这篇文章实现项目部署上线,并在公网访问。第一步:在阿里云申请一个试用的免费服务器(人人都可以,不需要是学生)阿里云地址:https://www.aliyun.com/①点击"最新活动"原创 2021-03-16 14:49:54 · 13496 阅读 · 4 评论 -
spring boot实现发送邮件以及群发邮件
spring boot实现发送邮件以及群发邮件2021年上班第一天,老板就让我写一个功能,要求将项目中的设备在线情况,发送邮件到老板和甲方老板的邮箱里,然后我花了正好一天的时间,将功能写了出来,如下要想通过软件自动发送邮件,就需要一些前置步骤,以qq邮箱示例1、在qq邮箱开通POP3/SMTP服务,很快可以弄好点击设置点击账户开启SMTP服务,如图,我是已经点击开启的状态点击生成授权码,需要发送短信,按他要求就可以,也很快,将授权码保存下来,待会要用接下来就是要开始写代码了可以原创 2021-02-22 14:16:07 · 2549 阅读 · 4 评论 -
corn表达式实现定时任务,以及基于quartz实现定时任务
corn表达式实现定时任务,以及基于quartz实现定时任务如果只是基于corn表达式实现最简单的定时任务,那是特别简单的,一般可以分为三步1.基于corn表达式实现定时任务1.第一步:在启动类上加@EnableScheduling注解2.第二步:写一个定时方法,方法上面加上corn表达式/** * @Author YuanChangLiang * @Date 2020/9/22 * @Desc 最简单的定时发送短信的定时任务 */@Component@EnableSchedu原创 2020-11-30 18:12:14 · 724 阅读 · 0 评论 -
happens-before规则,是什么?怎么理解?有哪些规则?
最近项目比较轻松,就来复习以下基础知识吧happens-beforeA happens-before B就是A先行发生于B(这种说法不是很准确),定义为hb(A, B)。在Java内存模型中,happens-before的意思是前一个操作的结果可以被后续操作获取。为什么需要happens-beforeJVM会对代码进行编译优化,会出现指令重排序情况,为了避免编译优化对并发编程安全性的影响,需要happens-before规则定义一些禁止编译优化的场景,保证并发编程的正确性。happens-be.原创 2020-10-11 15:05:55 · 1334 阅读 · 0 评论 -
FastJSON中的类型转换,String,Map,Json,类对象之间的相互转换
FastJSON中的类型转换FastJSON相信是大多数人类型转换的选择,但是FastJSON实在是太多功能了,每次想要类型转换的时候都会懵,这里提供了最常用的String,Map,Json,类对象之间的相互转换。这次做的项目频繁用到了这些转换,就特地总结了一下,方便所有人不再迷茫,觉得好用别忘记点赞收藏哈1.String转MapMap infoMap= JSONObject.parseObject(info,Map.class);2.String转json对象JSONObject json原创 2020-08-25 17:34:27 · 3026 阅读 · 0 评论 -
原创:Java8中,hashmap的容量大小为什么必须是2的幂次方?
Java8中,hashmap的容量大小为什么必须是2的幂次方?最近在复习基础知识,在复习到hashmap的时候,看到hashmap的容量大小必须是2的幂次方,我当时脑子想到的就是:为了使每一个桶发生哈希冲突的概率相同,从而避免某些桶大量发生哈希冲突,而某些桶不发生哈希冲突的情况,浪费资源但是在沾沾自喜之后,我又想:为什么呢?为什么2的幂次方就能够保证每一个桶发送哈希冲突的概率相同? 于是我去了看源码,于是,有了这篇文章。前提需知我们知道,hashmap的默认大小是16,负载因子是0.75。ha原创 2020-08-17 09:33:57 · 2606 阅读 · 5 评论 -
新手也可以理解的计算机原码,补码,和反码
我作为一个计算机专业毕业的,对反码,补码都还是不清晰,不知道所以然,但是我现在明白了,就是通过这篇文章,原文链接如下,https://blog.csdn.net/chenchao2017/article/details/79733278最近花了点时间对计算机的原码,反码和补码进行了研究,对为什么要有反码和补码以及他们这么设计的原因有了一定的理解机器数一个数在计算机中的表现形式叫做机器数,这个数有正负之分,在计算机中用一个数的最高位(符号位)用来表示它的正负,其中0表示正数,1表示负数。例如正数.转载 2020-08-05 10:37:22 · 172 阅读 · 0 评论 -
Java基础之重写和重载的区别
Java基础之重写和重载的区别关于重写(override),重载(overload)的区别,相信在所有java的学习者接触Java时就已经接触过了,但是,不知道有没有人跟我一样,总是忘记。这个东西就和静态与非静态方法谁能调用谁一样,记一次,忘一次(还好,之前有一次彻彻底底地弄懂了静态与非静态的问题,几个月还没有混淆,还好还好)。至少在我学习完Java基础后,起码有三次在我总结复习的时候,想起重写和重载的具体区别还是无法概述,甚至会无法区分,脑子记了又忘,忘了碰到又想要记,毕竟这个很重要,所以只能写在博原创 2020-08-04 19:48:33 · 324 阅读 · 0 评论