自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(90)
  • 收藏
  • 关注

原创 八股文--->并发编程

目录 一:并发编程的优点二:并发编程的缺点三:并发编程三要素是什么?四:在 Java 程序中怎么保证多线程的运行安全?四(1)voliate为什么不能保证原子性五:并行和并发有什么区别?六:什么是JMM模型七:什么是多线程,多线程的优劣?八:什么是进程和线程九:进程和线程的区别十:什么是上下文切换 十一:用户线程和非守护线程十二:形成死锁的四个必要条件 十三:如何避免线程死锁 十四:创建线程的四种方式 十五:继承Thread和实现Runnable区别十六:实现Runnable和Callable的区别十七:线

2022-06-28 17:13:29 1170

原创 【JVM调优】JVM 参数说明 与 《元空间》

遇到宕机等生产事故的时候,解决问题都不是通过一个日志来处理的,需要通过dump日志,gc日志还有jstack日志进行综合分析,才能更快的定位,解决问题本人遇到的实际问题:-XX:MetaspaceSize=1024m 我们测试环境没有去设置这个参数配置,那默认就是21MB,21MB对于我们的系统来说是远远不够的,导致我们的测试环境老是突然挂掉,通过配置打印gc日志,发现短时间内发生了八次full GC。

2024-01-19 16:32:08 968

原创 (线程学习)ibatis中的批量更新过慢

若想要优化批量更新操作,我们需要控制每次批量操作的数量,例如我遇到的生产环境需要导入1.5w条数据,直接for循环后,全部sql放在List集合再去执行,就会很慢,此时我们需要重写batchUpdate方法,控制每次批量执行的sql语句的量(这里我控制每次批量执行3000条sql语句)维护变量时,ThreadLocal为每个使用该变量的线程提供独立的变量副本,所以每一个线程都可以独立地改变自己的副本,而不会影响其它线程所对应的副本。有兴趣的可以看这个博主写的批量更新的源码,跟着他的思路慢慢看就能理顺。

2024-01-11 15:15:15 956

原创 日志级别(因设置错误级别日志导致宕机)

调整log4j2.xml文件,屏蔽不需要打印的日志,并且调整每行最多打印20000个字符(临时解决方案)程序会打印高于或等于所设置级别的日志,设置的日志等级越高,打印出来的日志就越少。日志的默认等级是debug,如果想要看到更低级的日志,需要在配置文件中去修改。:输出每个严重的错误事件将会导致应用程序的退出的日志.调整代码,将大对象日志输出调整日志级别为debug。:最低等级的,用于打开所有日志记录.:输出警告及warn以下级别的日志.:最高等级的,用于关闭所有日志记录.-- 日志输出级别 -->

2024-01-10 17:18:12 510

原创 RocketMQ学习

MQ:MessageQueue,消息队列。队列,是一种FIFO 先进先出的数据结构。消息由生产者发送到MQ 进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就是典型的MQ。MQ的作用主要有以下三个方面:异步例子:快递员发快递,直接到客户家效率会很低。引入菜鸟驿站后,快递员只需要把快递放到菜鸟驿站,就可以继续发其他快递去了。客户再按自己的时间安排去菜鸟驿站取快递。作用:异步能提高系统的响应速度、吞吐量。编辑编辑解耦。

2023-04-02 15:45:27 234 1

原创 RabbitMQ

(1)工作队列模式(2)发布订阅模式(多了一个exchange交换机)(3)路由模式(需要指定routing key路由)(4)通配符模式通配符规则:# 匹配一个或多个词,* 匹配不多不少恰好1个词,例如:item.# 能够匹配 item.insert.abc 或者 item.insert,item.* 只能匹配 item.insert。

2023-02-23 09:49:14 365

原创 SpringBoot常用注解

(3)@Resource,默认按照名称进行装配,名称可以通过name属性进行指定,如果没有指定name属性,当注解写在字段上时,默认取字段名进行名称查找。@ComponentScan注解一般和@Configuration注解一起使用,主要的作用就是定义包扫描的规则,然后根据定义的规则找出哪些需类需要自动装配到spring的bean容器中,然后交由spring进行统一管理。​ @Autowired 是Spring提供的,@Resource 是J2EE提供的。用@Bean标注方法等价于XML中配置的bean。

2023-02-17 10:06:35 370

原创 Dubbo学习

5.count 监控中心(Monitor)来记录provider提供了哪些服务,消费者消费了哪些服务。1.register 把业务层的方法,注册到注册中心(Register)声明服务者提供名称,保证它的唯一性,它是dubbo内部使用的唯一标识。声明消费者提供名称,保证它的唯一性,它是dubbo内部使用的唯一标识。url:远程调用服务接口的url地址(配置注册中心的话就不需要)id:远程接口服务的代理对象名称 (和上面的ref一致)创建两个模块,分别是生产者和消费者。

2023-02-14 17:42:21 409

原创 oracle11g官网直接抵达(2022.11)

oracle11g官网直接抵达(2022.11),废话不说,直接上链接。

2022-11-16 17:03:59 422

原创 JSP基础

此时,不管jsp:useBean是找到了一个现有的Bean,还是新创建了一个Bean实例,jsp:setProperty都会执行。application对象,config对象,session对象,out对象可以通过访问这个对象的属性来导出。out对象是 javax.servlet.jsp.JspWriter 类的实例,用来在response对象中写入内容。pageContext对象也包含了传给JSP页面的指令信息,包括缓存信息,ErrorPage URL,页面scope等。

2022-11-14 16:24:10 790

原创 JS基础学习

1. x = document.getElementById("some id")2. x.innerHTML="Hello JavaScript"; //改变内容3. document.write4. JavaScript在head,body和外部的使用5.JavaScrpit输出数据的方式6.JavaScript的注释7.var,const和let的区别8.JavaScript具有动态的数据类型 以及 typeof9.定义JavaScript对象10.向未声明的

2022-11-06 22:15:50 429

原创 HTML基础

1.HTML的第一个实例2.HTML标题,段落,链接标签3.加粗,放大,斜体,上标,下标4. 定义了所有链接的URL5. img标签6.table标签 注意border7.单元格间距8.有序列表,无序列表9.div布局10.form表单的单选框,复选框,下拉框11.iframe框架12.HTML脚本

2022-11-04 10:54:50 361

原创 oracle的使用sqlplush

oracle和mysql不一样,oracle的连接是通过配置文件,我们在下载的时候,配置文件就已经绑定了我们的主机,只有我们才可以改密码。alter user 用户名 identified by xxx。(为什么可以直接不登录就连接,要是别人连了怎么办)我们先通过不用登录的方式连接到。然后通过alter改密码。连接oracle数据库。

2022-11-03 18:07:22 1038

原创 dubbo

维基百科是这么定义RPC的:在分布式计算,远程过程调用(英语:Remote Procedure Call,缩写为 RPC)是一个计算机通信协议。该协议允许运行于一台计算机的程序调用另一个地址空间(通常为一个开放网络的一台计算机)的子程序,而程序员就像调用本地程序一样,无需额外地为这个交互作用编程(无需关注细节)。RPC是一种服务器-客户端(Client/Server)模式,经典实现是一个通过发送请求-接受回应进行信息交互的系统。如果涉及的软件采用面向对象编程那么远程过程调用亦可称作远程调用或。

2022-10-27 13:44:01 1645

原创 Java中List集合详解

优点: 底层数据结构是数组,查询快,增删慢。缺点: 线程不安全,效率高。

2022-10-23 02:45:26 487

原创 Netty入门学习

TCP作为传输层协议并不不了解上层业务数据的具体含义,它会根据TCP缓冲区的实际情况进行数据包的划分,所以在业务上认为是一个完整的包,可能会被TCP拆分成多个包进行发送,也有可能把多个小的包封装成一个大的数据包发送,这就是所谓的TCP粘包和拆包问题。Netty 对 JDK 自带的 NIO 的 API 进行了良好的封装,解决了上述问题。3)发送长度:发送每条数据的时候,将数据的长度一并发送,比如可以选择每条数据的前4位是数据的长度,应用层处理时可以根据长度来判断每条数据的开始和结束。

2022-10-20 15:03:50 583 1

原创 BIO/NIO/AIO

多路复用器。

2022-10-19 11:03:09 142

原创 kafka入门学习

Kafka的事务不同于Rocketmq,Rocketmq是保障本地事务(比如数据库)与mq消息发送的事务一致性,Kafka的事务主要是保障一次发送多条消息的事务一致性(要么同时成功要么同时失败),一般在kafka的流式计算场景用得多一点,比如,kafka需要对一个topic里的消息做不同的流式计算处理,处理完分别发到不同的topic里,这些topic分别被不同的下游系统消费(比如hbase,redis,es等),这种我们肯定希望系统发送到多个topic的数据保持事务一致性。2. 监听topic相关的变化。

2022-10-18 18:37:59 394

原创 RocketMq入门学习

MQ:,消息队列。队列,是一种FIFO先进先出的数据结构。消息由生产者发送到MQ 进行排队,然后按原来的顺序交由消息的消费者进行处理。QQ和微信就是典型的MQ。MQ的作用主要有以下三个方面:异步例子:快递员发快递,直接到客户家效率会很低。引入菜鸟驿站后,快递员只需要把快递放到菜鸟驿站,就可以继续发其他快递去了。客户再按自己的时间安排去菜鸟驿站取快递。作用:异步能提高系统的响应速度、吞吐量。解耦例子:《》很经典,但是都是英文,我们看不懂,所以需要编辑社,将文章翻译。

2022-10-13 21:46:33 1298

原创 zookeeper的入门学习

zoo.cfg。

2022-10-12 17:43:31 1081

原创 Mybatis面试合集

(1)Mybatis是一个半ORM(对象关系映射)框架,它内部封装了JDBC,加载驱动、创建连接、创建statement等繁杂的过程,开发者开发时只需要关注如何编写SQL语句,可以严格控制sql执行性能,灵活度高。(2)作为一个半ORM框架,MyBatis 可以使用 XML 或注解来配置和映射原生信息,将 POJO映射成数据库中的记录,避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。

2022-09-26 10:36:30 428

原创 CountdownLatch和Join

join()方法是Thread类中的一个方法,该方法的定义是等待该线程终止。其实就是join()方法将挂起调用线程的执行,直到被调用的对象完成它的执行。

2022-09-23 15:50:49 261

原创 Java实现自定义注解

注解可以看作是一种特殊的标记,可以用在方法、类、参数和包上,程序在编译或者运行时可以检测到这些标记而进行一些特殊的处理。对于一个类或者接口来说,Class类(java.lang包下)中提供了一些方法用于反射注解,当然对于字段、方法来说反射注解的方式很类似。ElementType.TYPE_USE 1.8版本新增,应用于任何使用类型的语句中(例如声明语句、泛型和强制转换语句中的类型)表明使用了@Inherited注解的注解,所标记的类的子类也会拥有这个注解。

2022-09-21 17:13:03 174

原创 Pagehelper分页插件的原理

哦,有点明白了,原来就是赋值保存到本地线程变量里面,这个ThreadLocal是何方神圣,居然有这么厉害,所以查阅了相关博客,链接:https://blog.csdn.net/u013521220/article/details/73604917,个人简单理解大概意思是这个类有4个方法,set,get,remove,initialValue,可以使每个线程独立开来,参数互不影响,里面保存当前线程的变量副本。最后执行的execute方法,再次跟进,进入MapperMethod这个类的execute方法,

2022-09-21 15:21:30 299

原创 小迈科技可能的面试问题

wait 是指在一个已经进入了同步锁的线程内,让自己暂时让出同步锁,以便其他正在等待此锁的线程可以得到同步锁并运行,只有其他线程调用了notify()notify并不释放锁,只是告诉调用过wait()的线程可以去参与获得锁的竞争了,但不是马上得到锁,因为锁还在别人手里,别人还没释放,调用 wait() 的一个或多个线程才会解除 wait 状态,重新参与竞争对象锁,程序如果可以再次得到锁,就可以继续向下运行。加载类—>实例化(为对象分配空间)—>初始化(为对象的属性赋值)—>请求响应(服务阶段)—>销毁。

2022-09-16 12:07:30 312

原创 JWT单点登录

通俗地说,JWT的本质就是一个字符串,它是将用户信息保存到一个Json字符串中,然后进行编码后得到一个JWT token,并且这个JWT token带有签名信息,接收后可以校验是否被篡改,所以可以用于在各方之间安全地将信息作为Json对象传输当然使用Session可以实现这个功能,但是使用Session的同时也会增加服务器的存储压力,而JWT是将存储的压力分布到各个客户端机器上,从而减轻服务器的压力。JWT由3个子字符串组成,分别为以及Signature。...

2022-08-27 08:53:42 1179

原创 Redis分片

这就好比不要把鸡蛋放在同一个篮子里,这样一旦一个篮子掉在地上,摔碎了,别的篮子里还有没摔碎的鸡蛋,不至于一个不剩。算笔账,假设系统QPS 1w,每次调用会访问10次缓存或DB的数据,则当缓存命中率仅减少1%,DB每s就增加1w * 10 * 1% = 1000次请求。不利于扩展,当需要扩展的时候,前三个数据库的数据都可能需要迁移到第四个redis数据库中,发生大规模的数据迁移。这样,当某节点故障,其备份节点可顶替它继续服务。,考虑将数据分片,依照分片算法将数据打散到多个不同节点,每个节点存储部分数据。...

2022-08-26 00:31:46 3218 1

原创 分布式锁的实现原理

谈到锁,首先我们想到的就是lock和synchronized,但是这都是基于JVM的锁,JVM进程管不到其他的服务实例的线程,分布式锁油然而生。

2022-08-22 20:12:04 614

原创 Mysql考察

如果 from 子句中的表数目多余两个表,那么就将vt3和第三个表连接从而计算笛卡尔乘积,生成虚拟表,该过程就是一个重复1-3的步骤,最终得到一个新的虚拟表 vt3。on是建立关联关系在生成临时表时候执行,where是在临时表生成后对数据进行筛选的。:接下来便是应用on筛选器,on 中的逻辑表达式将应用到 vt1 中的各个行,筛选出满足on逻辑表达式的行,生成虚拟表 vt2。:应用having筛选器,生成vt7。:应用where筛选器,对上一步生产的虚拟表引用where筛选器,生成虚拟表vt4。

2022-08-20 22:57:47 94

原创 有遇到过内存泄漏吗,说说你的处理

我们通常把一些对象的引用加入到了集合容器(比如ArrayList)中,当我们不需要该对象时,并没有把它的引用从集合中清理掉,这样这个集合就会越来越大。一般有单例造成的内存泄漏,由于单例的静态特性使得其生命周期和应用的生命周期一样长,如果一个对象已经不再需要使用了,而单例对象还持有该对象的引用,就会使得该对象不能被正常回收,从而导致了内存泄漏。这是典型的内存泄漏,简单说就是所有堆空间都被无法回收的垃圾对象占满,虚拟机无法再在分配新空间。2.设置 -XX:MaxPermSize=16m。集合容器中的内存泄露。

2022-08-19 11:03:54 375

原创 力扣-->#剑指Offer 416. 分割等和子集

如果考虑nums[i] nums[i][j] = nums[ i-1 ] [ j-nums[i] ](2)确定递归公式 如果不考虑nums[i] nums[i][j] = nums[i-1][j];(1)确定dp函数 dp[i][j]表示第i个数能否和前面的数(或自己单独)凑成j。(3)dp数组如何初始化 初始化目标对准第一行和第一列。(4)确定遍历顺序 先便利数组的数字,再遍历纵坐标。看到这个我们第一步要想到是,这是一个01背包问题。本质上就是求是否可以让数相加等于总和的一半。...

2022-08-18 01:08:45 1044

原创 Linux基本命令(逐渐更新完善)

tail -n 1000:显示最后1000行tail -n +1000:从1000行开始显示,显示1000行以后的 +k的意义是从第k行开始,输出所有行head -n 1000:显示前面1000行head- n +1000:显示前面 1000行从第1000行开始,显示1000行。即显示1000~1999行.显示1000行到3000行.这样你就可以只查看文件的第5行到第10行。...

2022-08-04 15:41:32 3345

原创 面试必考之HashMap底层以及扩容机制

hash值的每个二进制位用abcde来表示,那么,hash和新旧table按位与的结果,最后4位显然是相同的,唯一可能出现的区别就在第5位,也就是hash值的b所在的那一位,如果b所在的那一位是0,那么新table按位与的结果和旧table的结果就相同,反之如果b所在的那一位是1,则新table按位与的结果就比旧table的结果多了10000(二进制),而这个二进制10000就是旧table的长度16。可以看出,有三个不同的元素经过&运算得出了同样的结果,严重的hash碰撞了。这就容易出现问题了。

2022-07-25 21:12:10 2373

原创 八股文--->Redis

一:关系型数据库和非关系型数据库区别二:什么是Redis三:Redis的优缺点四:Redis支持事务持久化--- RDB 和 AOF五:为什么要用Redis/为什么要用缓存六:为什么Redis这么快七:Redis有哪些数据类型StringListSetSorted SetHash八:Redis的过期键和删除策略九:MySQL里有2000w数据,redis中只存20w的数据,如何 保证redis中的数据都是热点数据十:Redis的内存淘汰策略有哪些全.

2022-07-20 17:45:36 4229

原创 Redis--Cluster集群运维与核心原理剖析

1、Redis集群方案比较在redis3.0以前的版本要实现集群一般是借助哨兵sentinel工具来监控master节点的状态,如果master节点异常,则会做主从切换,将某一台slave作为master,哨兵的配置略微复杂,并且性能和高可用性等各方面表现 一般,特别是在主从切换的瞬间存在访问瞬断的情况,而且哨兵模式只有一个主节点对外提供服务,没法支持很高的并发,且单个主节点内存也不宜设置得过大,否则会导致持久化文件过大,影响数据恢复或主从同步的效率redis集群是一个由多个主从节点群组成.

2022-07-11 23:29:17 150

原创 力扣-->#剑指Offer 142.环形链表

public ListNode detectCycle(ListNode head) { ListNode fast=head; ListNode slow=head; while(fast!=null&&fast.next!=null){ fast=fast.next.next; slow=slow.next; if(fast==slow){ ...

2022-05-25 13:08:12 94

原创 八股文--->JAVA基础

一:JVM,JDK,JRE的关系(1)JVM(Java Virtual Machine)是JAVA虚拟机,JAVA程序需要在虚拟机上运行,不同的平台有自己的虚拟机,因此JAVA实现跨平台(2)JDE(Java Runtime Environment)是JAVA运行环境,包含JVM和JAVA核心类库(如基本数据类型、基本数学函数、字符串处理、线程、异常处理类等),想要运行好JAVA程序,只需要一个JRE即可(3)JDK(Java Development Kit)是提供给开发人员使用的,包含了JRE

2022-05-24 16:37:49 1343

原创 java8新特性 stream().map().collect()

有一个集合:List users = getList(); //从数据库查询的用户集合现在想获取User的身份证号码;在后续的逻辑处理中要用;常用的方法我们大家都知道,用for循环,List idcards=newArrayList();//定义一个集合来装身份证号码for(int i=0;i<users.size();i++){idcards.add(users.get(i).getIdcard());}这种方法要写好几行代码,有没有简单点的,有...

2022-05-19 16:53:19 305

原创 反射面试大全

一:什么是反射反射即是用来描述一组类,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为 Java 语言的反射机制。二:反射的范围 class:用来描述类本身 Packge:用来描述类所属的包 Field:用来描述类中的属性 Method:用来描述类中的方法 Constructor:用来描述类中的构造方法 Annotation:用来描述..

2022-05-08 09:52:49 307

原创 亚信科技面试

(1)队列有哪几种形式(2)poll和remove(3)hashmap和treemap的区别(4)线程安全锁的种类(5)线程创建常用的四种方式(6)进程和线程的区别(7)ClassNotFoundException和NoClassDeFoundError区别(8)常见的异常类型(9)常见的RuntimeException异常有哪些?(10)hashMap的扩容机制(10)说说队列的基本操作(11)常见的队列有哪些,以及使用场景(12)java中如何确保一个集合

2022-05-05 20:49:24 732

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除