![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
雨夜潜行
这个作者很懒,什么都没留下…
展开
-
翻转单向链表
首先我们了解下单向链表的结构如图 head往后的节点上一个存着值val一个存着next表示下一个节点翻转我们一般有两种方法1 遍历法public static Node reverseList(Node node){ Node pre = null; Node next= null; while(node){ // 备份next next = node.next; // 断节点 node.next.原创 2021-09-08 17:01:00 · 87 阅读 · 0 评论 -
java传参传的是引用还是值
经常听别人说java传的都是值,但是又会经常碰到传对象进去方法,方法中修改对象,方法外的对象也会改,经过了解发现java所有对象传的都是值,不过这个值是原来堆中对象的一份引用的拷贝,当然有几种特殊情况1.传char int 这类基础类型 由于基础类型是直接在栈里,不存在引用情况,所以当参数是基础类型的时候会复制一份新的值传过去,这时再怎么改变都跟原来的值无关了2.传的是integer,string这类的常用引用类型 string integer这类...原创 2021-09-06 16:54:25 · 157 阅读 · 0 评论 -
io nio 和aio介绍
我们正常传统的通过流读取文件是阻塞式的 效率比较低,今天就来了解下java io的几种方式对比对比总结 BIO NIO AIO IO方式 同步阻塞 同步非阻塞 异步非阻塞 API使用难度 简单 复杂 复杂 可靠性 低 高 高 吞吐量 低 高 高 BIO适用于连接较少,对服务器资源消耗很大,但是编程简单。是同步阻塞的。举例:你到餐馆点餐,然后在那儿等着,什么也做不了,只...原创 2021-09-02 16:31:01 · 229 阅读 · 0 评论 -
高并发场景的几种处理方法
作为后端开发,高并发场景是一个绕不过去的坎,今天就来整理下常见的几种思路(暂时不考虑分布式的情况)一.并发锁 首先我们要知道高并发下会出现某一个时刻流量猛增,还有就是如果是抢购之类的库存类并发可能会导致超卖库存为负数之类的,对于并发锁来说主要是解决抢购超卖问题的,并不能很好的解决流量猛增给服务器带来的压力,有时候甚至会加重服务器的压力,所以我们并发量小及服务器配置比较高的时候可以用并发锁来处理,下面就介绍几种常用的并发锁 1.synchronize(同...原创 2021-08-25 15:44:57 · 5698 阅读 · 0 评论 -
java jvmGC
我们都知道java是依靠jvm进行跨平台的,具体流程是.java文件→编译器(javac)→.class字节码文件→解释器→运行这其中将字节码解释成对应平台的执行集的工作就是交给jvm,这样我们只需要专注写代码,jvm帮我们将操作系统和硬件都隔离开了,所以说,我们为了写的代码都是运行在jvm上的,内存操作也都是通过jvm的,所以我们今天要谈的垃圾回收就要通过jvm来讲。一、jvm内存结构 垃圾回收其实就是对jvm内存中无用的对象进行删除,其中jvm运行时内存主要分为5块它们...原创 2021-08-18 16:30:52 · 236 阅读 · 0 评论 -
bean 自定义初始化,销毁的几种方法
我们都知道bean在声明式定义中可以通过xml文件注入还有@bean,@Component注解来定义bean,不过在spring4以后已经渐渐开始提倡使用注解方式来声明bean了,这里我们就按照注解方式声明来讲了我们都知道bean的生命周期要经历 获取bean名→无参实例化→依赖注入(属性赋值)→(BeanPostProcessor)初始化前→初始化→(BeanPost...原创 2021-08-09 14:21:37 · 723 阅读 · 0 评论 -
ubuntu 安装 elasticsearch7.6 流程
由于elasticsearch是由java写的 我们首先安装java 这里我装的java11sudo apt install openjdk-11-jdk1.这样我们就安装好了java11然后下载安装elasticsearch7.6wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.6.0-linux-x86_64.tar.gztar -zxvf elasticsearch-7.6..原创 2021-07-14 18:18:41 · 605 阅读 · 0 评论 -
JAVA Spring AOP分析与自定义
AOP 也叫面向切片 我们都熟知OOP面向对象,oop主要是封装继承多态,取得了巨大的成功,而aop则是把系统分解,往里面插入编织的网,中,在spring boot中一个很成功的切面就是@Transactional 能直接了当的实现事务功能,aop织入方法有3种 本质上就是一个动态代理编译期:在编译时,由编译器把切面调用编译进字节码,这种方式需要定义新的关键字并扩展编译器,AspectJ就扩展了Java编译器,使用关键字aspect来实现织入; 类加载器:在目标类被装载到JVM时,通过一个..原创 2021-07-09 13:43:48 · 91 阅读 · 0 评论 -
redis 锁生成唯一code(java)
工作中经常需要生成按照顺序的唯一的code,这种数据往往跟日期大小等有关,但是又不能把它们设置为主键,这样就会导致新增的时候可能会并发重复,例如 我要生成一个code为 PO-20191012-1133 这样的一个按照顺序来的code(标识-日期-自增),这样就要我们在代码层生成code然后保存到数据库,java中并发不高的时候我们可以通过查询数据库中的code,获取当前最新code然后通过Atomic来创建新的code,这种一定程度上可以减少错误的发生,但是很显然,查询数据库的过程是...原创 2021-07-08 10:35:34 · 442 阅读 · 0 评论 -
MYSQL 添加索引最左原理
mysql如果发现查询缓慢,添加索引是最直接有效的办法了,下面就来介绍索引的数据结构和各种坑!! 别忘了打开mysql 的慢查询索引的分类主键索引:一张表只能有一个主键索引,不允许重复、不允许为 NULL; 唯一索引:数据列不允许重复,允许为 NULL 值,一张表可有多个唯一索引,但是一个唯一索引只能包含一列,比如身份证号码、卡号等都可以作为唯一索引; 普通索引:一张表可以创建多个普通索引,一个普通索引可以包含多个字段,允许数据重复,允许 NULL 值插入; 全文索引:让搜索关键词更高效的原创 2021-06-29 16:53:42 · 59 阅读 · 0 评论 -
JAVA集合详解
java集合功能非常强大,总的来说主要是List Set Map 这三类1.首先我们来看一下集合与数组的区别1)长度区别:数组长度固定,集合可变2)内容区别:数组可以是基本类型,也可以是引用类型,集合必须是引用类型3)元素区别:数组只能储存一种类型的,集合储存多种,但一般也是一种2.Collention集合List,Set都是继承Collention实现的集合,所以都实现了Collention中的方法,它们是:boolean add(E e) 向集合尾部添加原创 2021-06-29 16:21:21 · 91 阅读 · 0 评论