
Java
文章平均质量分 69
JavaEE、JVM、API、原理
龙行天下_LXTX
这个作者很懒,什么都没留下…
展开
-
Java中==和equals的区别,包装类对比、String和new String
可以看出,无论哪种方式访问基本类型和引用类型的实例数据,基本类型的内存上是保存值,而引用类型的内存上是保存指针(地址)。 String不用new声明,首先会在常量池中找字符串值,若有则该变量保存的是这个字符串值的地址,若没有找到字符串值 == 可以理解为比较图中栈内存的数据。所以基本类型就是比较值,引用类型就是比较地址。equals是个方法,只有引用类型才能调用,基础类型如int等是无法调用的。该方法在Object中就存在,实际就是调用 ==来比较,代码如下:原创 2023-06-27 02:18:24 · 1836 阅读 · 0 评论 -
Nacos报9848
问题:Connection refused: no further information: localhost/0:0:0:0:0:0:0:1:9848这里是springboot集成springcloud后,把application.yml改成bootstrap.yml就可以了,不然读取不到nacos配置。原创 2023-06-26 01:28:39 · 2716 阅读 · 0 评论 -
十大排序算法
一、概览 排序算法基本分为:选择排序、冒泡排序、插入排序、希尔排序、快速排序、堆排序、归并排序(合并排序)、计数排序、桶排序、基数排序。 其中,冒泡排序和快速排序属于交换排序,插入排序和希尔排序属于插入排序,选择排序(简单选择排序)和堆排序属于选择排序。原创 2023-06-26 01:00:47 · 1032 阅读 · 0 评论 -
Mybatis plus:兼容多数据库时解决databaseId为空问题
用调用xml的SQL报错 Invalid bound statement (not found),离谱的是调用部分数据源pg数据源正常,调用mysql数据源就包这个错,debug发现原始的configuration的statusments里就没把这个xml的方法加载进去。很明显,配置的DatabaseIdProvider的key和数据源的数据库名称没匹配上!这个配置加上那个源码解释了pg可以而mysql不行的原因,所以将其中的Mysql改成MySQL就行了。原创 2023-05-19 19:52:05 · 2511 阅读 · 0 评论 -
jsoup+httpclient 抓取网页并解析网页
上面用Hutool的HttpUtil进行查询页面,接着哟昂Jsoup将页面转化为Document,再用选择器筛选出a标签,再轮询获取href属性的链接,最后一一访问。原创 2023-03-30 15:28:17 · 565 阅读 · 0 评论 -
NIO 缓冲区
buffer若不需要追加读,则只需要 get()读取前调用flip()方法从头读取,put()方法前调用clear()重置position从头写入覆盖历史数据。buffer需要追加读,则put()前需要调用mark()记录下写入的起始点,写完后直接调用reset()将position调整为新内容的起始点mark。接着再调用get()方法进行读取。原创 2023-03-30 15:08:43 · 648 阅读 · 0 评论 -
NIO Reactor模型(含代码)
概览 我们知道NIO就是调用系统内核的的select/poll/epoll方法来实现,这些系统内核方法会扫描或监控IO,每次将所有的IO的状态返回给NIO线程。让NIO线程可以选择处理读取可读状态的IO流,也可以选择继续监控轮询监控IO的其它状态。reactor模型也叫做Dispatcher模型,即分发模型,NIO中分发线程和处理线程策略不同而衍生出了四种网络编程模型:单Reactor单线程、单Reactor多线程、多Reactor多线程。原创 2023-03-29 21:03:50 · 1595 阅读 · 0 评论 -
IO的类型(BIO、NIO、AIO)
首先,我们需要明白什么是IO?IO从字面意思可以理解为输入输出,对于Java进程来讲,输入就是将数据输入到Java内存的缓存区,供Java读取使用,输出就是Java进程将数据写入到缓存区,进而输出到文件或网络数据流。IO有两种:File IO和Stream IO,其中File IO缓存区图如下: I/O就是对缓存区的读写,可以看出InputStream.read()实际就是调用底层的“read()",将内核缓冲区的数据写入到Java进程的缓冲区,而OutputStream.write()就是原创 2023-03-29 17:12:19 · 1922 阅读 · 0 评论 -
Java容器类详解(Collection与Map,含多线程性能对比)
Collection细分为Set、List、Queue,无key,直接存储数据元素。而Map不但存储数据元素,还有key进行映射。List List是一个有序集合,主要有:ArrayList、LinkedList、Vector、CopyOnWriteArrayList,它们的各自特点如下: ArrayList 底层是数组,内部维护Object[]。它线程不安全,查询快,但增删慢,物理内存是连续的。线程不安全是若多线程同时给线程添加数据,可能出现多个线程读取到同一个副本然后都将添加后原创 2023-03-23 18:59:00 · 1124 阅读 · 0 评论 -
线程:线程池ThreadPoolExecutor解析
一、线程池类:java.util.concurrent.ThreadPoolExecutor,调用构造方法下面解释下一下构造器中各个参数的含义:corePoolSize:核心池的大小,在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待有任务到来才创建线程去执行任务,除非调用了prestartAllCoreThreads()或者prestartCoreThread()方法,从...原创 2019-03-09 23:30:39 · 334 阅读 · 0 评论 -
java文件的运行
运行java文件,首先要有程序入口,即:public static void main(String[] args){}方法,当有类有这个方法后,可以用javac命令编译并用java命令(已配置好java环境变量)来执行该文件。 环境变量作用:当配置java环境变量后,输入java命令则会使windows直接在变量里配置的目录中找到java.exe运行。 本文分析的源码为jdk8源...原创 2019-02-17 11:14:42 · 16098 阅读 · 0 评论 -
jdk以及jvm源码查找
目前市场上主要有两个jdk版本,一个是oracle的jdk版本,另一个为openjdk的jdk版本,oracle的jdk源码目前找不到,大家可以找openjdk的源码,这两个jdk源码绝大多数是相同的。编译出的jvm等处理逻辑也是一样的。 openjdk的官网为:http://openjdk.java.net/源码查找如下图所示: 点击Mercurial进入下图...原创 2019-02-04 21:18:25 · 1157 阅读 · 1 评论