java基础
文章平均质量分 83
lans_g
追求卓越,成功就会在不经意间追上你。
展开
-
关于java中参数传递问题(值传递还是引用传递)
参数传递问题首先要明确,在程序设计语言中,将参数传递给方法(函数)的方式有两种:按值传递:表示方法接收的是调用者提供的值;按引用传递:表示方法接收的是调用者提供的地址。(引用可以理解为地址)一个方法可以修改传递引用所对应的变量值,而不能修改传递值所对应的变量值!因为值传递实际上是对值进行拷贝后再传递,不会影响原来的值。两个重要理解误区:误区一、值传递和引用传递,区分的条件是传递的内容,如果是个值,就是值传递。如果是个引用,就是引用传递。误区二、传递的参数如果是基本数据类型,那就是值传递,原创 2022-05-22 08:57:41 · 389 阅读 · 0 评论 -
由浅入深学习java并发(一文解决多线程、线程池)
一、进程和线程1.进程进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。线程和进程最大的不同在于基本上各进程是独立的,而各线程则不一定,因为同一进程中的线程极有可能会相互影响。线程执行开销小,但不利于资源的管理和保护;而进程正相反。2.线程线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是同类的多个线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地原创 2022-04-13 19:57:44 · 364 阅读 · 0 评论 -
锁系列—浅谈CAS及原理
一、什么是CAS?CAS就是比较并交换(compare and swap)的意思,属于乐观锁的一种。通俗点说,当我们想修改一个值时,我们会先将这个值和原先的值进行比较,如果发现和原先的值一样,那么我们再进行修改。CAS机制当中使用了3个基本操作数:内存地址V,旧的预期值A,要修改的新值B。更新一个变量时,只有当预期值A和内存地址V中的实际值相同时,才会将内存地址对应的值修改为B。如果发现不一致,则会重新进行尝试,这个尝试的过程被称为自旋。二、CAS的缺点1.cpu开销大 自旋锁的目的是为了占原创 2022-05-16 22:33:34 · 4611 阅读 · 0 评论 -
锁系列—Synchronized和ReentrantLock对比
一、 synchronized1.三种使用方式修饰实例方法:给对象实例加锁。修饰静态方法:给当前类加锁。修饰代码块:指定加锁对象(类或者指定对象)。2.底层原理(jvm层面)(1)修饰代码块synchronized 同步语句块使用的是 monitorenter(对应JMM模型lock指令) 和 monitorexit (unlock)指令,其中 monitorenter 指令指向同步代码块的开始位置,monitorexit 指令则指明同步代码块的结束位置。**当执行 monitorent原创 2022-05-16 22:31:50 · 2201 阅读 · 0 评论 -
关于JAVA中的IO模型
一、java中IO的分类java中的IO包括基本IO/BIO/NIO/AIO四种,其实主要是BIO/NIO/AIO三种IO模型。二、基本IO基本IO可以从两种方式上进行分类:传输方式和数据操作。1.传输方式分类(1)字节流:读取单个字节,处理二进制文件(图片,mp3,视频),主要是给计算机看的。(2)字符流:读取单个字符,处理文本文件,主要是给人看的。2.数据操作分类三、BIO(阻塞IO)BIO就是blocking IO。最容易理解、最容易实现的IO工作方式,应用程序向操作系统请求网原创 2022-05-13 15:32:49 · 876 阅读 · 0 评论 -
关于java中比较器Comparator的一些理解
在使用Java自带的排序函数时,往往需要根据自己的需求自定义比较器。**当我们使用Arrays.sort()方法时,这个方法默认是只能对一维数组进行排序的,而如果我们要对二维数组进行排序,就需要重写其中的比较器方法。**以前一直对Comparator的升序降序疑惑。现在记录一下,加深下印象。先给结论:实现Comparator接口,必须实现下面这个函数:@Overridepublic int compare(CommentVo o1, CommentVo o2) { return转载 2022-05-11 09:31:35 · 3786 阅读 · 0 评论