自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 秋招面经(三)

第一次被面试官说框架和基础不错,感觉这么久的努力没有白费,这里总结一下面试时模棱两可的问题SpringBoot秒杀系统流程图(redis和ActiveMQ中间件的作用)高并发的留两个及过长的请求路径对应用服务和数据库会造成巨大压力,引入缓存,缩短请求路径,让请求流量不要直接查询数据库来解决大流量redis缓存:用户查询秒杀商品列表时,先到缓存查询数据,如果缓存有用户需要的数据,直接返回给用户,否则查询数据库,将数据库存到缓存中,最后将数据返回给用户消息队列:用来流量削峰,一台服务器处理资源的能力是

2020-09-28 15:24:36 143

原创 秋招面经(二)

答得不是很好,应该多加点自己的理解java三大特性,分别是怎么实现的多线程的核心多线程池的使用SpringBoot和SpringMVC的区别线程锁主要有哪些String字符串怎么拼接String,StringBuffer,StringBuilder的区别Spring的主要特性(IOC和AOP)SpringIOC的主要实现数据库索引的使用数据库和用户的关系如果有百万用户进入到静态界面,怎么优化...

2020-09-27 16:42:33 135

原创 java有用的小知识点

递归的模板public ListNode reverseList(参数0) { if (终止条件) return; 逻辑处理(可能有,也可能没有,具体问题具体分析) //递归调用 逻辑处理(可能有,也可能没有,具体问题具体分析)}leetcode例题String StringBuffer StringBulider的区别String每次修改都会创建新的String对象,浪费内存空间由于 StringBuilder 相较于 StringB

2020-09-26 16:53:54 375

原创 Java面试基础

JDK和JRE的区别JDK:Java Development Kit,是java的开发运行环境JRE:Java Runtime Environment,是java的运行环境JDK包含了JRE,JRE包含了JVM==和equals的区别==是判断两个变量或实例是不是指向同一个内存空间,equals是判断两个变量或实例所指向的内存空间的值是不是相同==是指对内存地址进行比较 , equals()是对字符串的内容进行比较==指引用是否相同, equals()指的是值是否相同hashcode和eq

2020-09-25 10:27:03 162

转载 进程通信 IPC(几种方式),进程与线程定义与区别

进程和线程的区别对于进程来说,子进程是父进程的复制品,从父进程那里获得父进程的数据空间,堆和栈的复制品而线程,相对于进程而言,是一个更加接近于执行体的概念,可以和同进程的其他线程之间直接共享数据,而且拥有自己的栈空间,拥有独立序列进程比作火车,线程比作车厢线程在进程下行进(单纯的车厢无法运行)一个进程可以包含多个线程(一辆火车可以有多个车厢)不同进程间数据很难共享(一辆火车上的乘客很难换到另外一辆火车,比如站点换乘)同一进程下不同线程间数据很易共享(A车厢换到B车厢很容易)进程要比线程消耗

2020-09-24 19:52:55 432

转载 缓存问题

缓存问题主要有两个用途:高性能,高并发,缓存功能就是key-value操作,缓存是走内存的如何保证缓存与数据库的双写一致性解决方案读写请求串行化,但是会导致吞吐量降低,最经典的缓存+数据库的读写模式是Cache Aside Pattern读的时候,先读缓存,缓存没有的话,就读数据库,然后取出数据后放入缓存,同时返回响应。更新的时候,先更新数据库,然后再删除缓存。问题一:先更新数据库,再删除缓存。如果删除缓存失败了,那么会导致数据库中是新数据,缓存中是旧数据,数据就出现了不一致解决方案:

2020-09-24 10:01:29 111

原创 SpringBoot整合ActiveMQ

JMS消息概述JMS的全称是Java Message Service,即Java消息服务。用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信它主要用于在生产者和消费者之间进行消息传递,生产者负责产生消息,而消费者负责接收消息JMS支持两种发送和接收消息的模型P2P模型采用点到点的方式发送信息,P2P模型是基于队列的,消息生产者发送消息到队列,消息消费者从队列中获取消息,P2P每个消息只有一个消费者,发送者和接受者在时间上没有依赖性Pub/Sub模型发布和订阅模型定义了如何向一个内容节

2020-09-21 15:11:17 366

原创 计算机网络

网络七层架构物理层主要定义物理设备标准,如网线的接口类型,光纤的接口类型,各种传输介质的传输速率等,主要作用是传输比特流(就是由 1、0 转化为电流强弱来进行传输,到达目的地后在转化为1、0,也就是我们常说的模数转换与数模转换)这一层的数据叫做比特数据链路层主要将从物理层接收的数据进行MAC地址(网卡的地址)的封装与解封装,这一层的数据叫做帧,在这一层工作的设备时交换机,数据通过交换机传输网络层主要将从下层接收到的数据进行IP地址(例如192.168.0.1)的封装和解封装,在这一层工作的设

2020-09-20 12:49:59 437

原创 数据库总结

存储引擎存储引擎主要有: 1. MyIsam , 2. InnoDB, 3. Memory, 4. Archive, 5. Federated 。主要介绍InnoDB和MyIsamInnoDBInnoDB底层存储结构为B+树,B树的每个节点对应innodb的一个page,page大小是固定的,一般设为 16k。其中非叶子节点只有键值,叶子节点包含完成数据适用场景经常更新的表,适合处理多重并发的请求支持事务可以从灾难中恢复(通过big-log日志等)外键约束支持自动增加列属性auto_

2020-09-19 19:59:25 147

原创 Java算法总结(一)

二分查找又称折半查找,要求待查找的数据有序(假设从小到大),每次取中间的值与待查关键字比较,如果中间位置的值比待查关键字大,则在前半部分查找,反之在后半部分查找这里引用leetcode的题目class Solution { public int search(int[] nums, int target) { int lo=0; int hi=nums.length-1; int mid; while(lo<=hi){

2020-09-19 12:15:29 109

原创 JVM总结

JVM总体结构运行过程Java源文件-编译器-字节码文件字节码文件-JVM-机器码JVM内存区域JVM运行时内存Java堆从GC的角度可以细分为:新生代(Eden区,From Survivor区和To Survivor区)和老年代Eden区Java新对象的出生地,当Eden区内存不够时,会触发MinorGC,对新生代区进行一次垃圾回收SurvivorFrom上一次GC的幸存者,作为这一次GC的扫描者SurvivorTo保留一次MinorGC过程中的幸存者MinorGC的过

2020-09-17 19:30:01 127

转载 重写equals和hashcode方法

重写equals方法原始代码,需要比较每个属性package test;import java.security.PrivateKey;import java.util.Objects;/** * @author xfgg */public class RewriteEquals { /** * 需要重写equals的场景 * 只判断地址相同,学生比较返回true * * */ private String name;

2020-09-17 16:11:57 158

原创 SpringBoot集成MyBatis

引入依赖 <dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>2.0.1</version> </dependency>添加

2020-09-15 12:58:10 76

原创 Quartz定时器和发送邮件

Quartz概述Quartz定时器主要核心组件包括调度器,触发器,作业,调度器作为作业的总指挥,触发器作为作业的操作者,作业为应用的功能模块、Job是一个接口,该接口只有一个方法execute,被调度的作业(类)需要实现该接口的execute方法JobExecutionContext方法提供了调度上下文的各种信息,每次执行该Job都要重新创建一个Job实例,public interface Job{ void execute(JobExecutionContext var1) throws Job

2020-09-14 16:24:15 1045

原创 SpringBoot集成Log4J

引入依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <!--排查SpringBoot默认日志--> <exclusions>

2020-09-14 14:55:47 133

原创 SpringBoot集成Redis

Redis缓存测试引入依赖缓存配置测试监听器Listener开发项目启动缓存数据更新缓存数据测试

2020-09-13 15:07:35 91

原创 Java内存区域和内存溢出异常

运行时数据区域程序计数器程序计数器是一块较小的内存空间,可以看作是当前线程所执行字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行党的字节码指令,是程序控制流的指示器,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成Java多线程是通过线程轮流切换,分配处理器执行时间的方式来实现的,每条线程都需要一个独立的程序计数器,各条线程之间计数器互不影响,独立存储,如果线程正在执行的是一个Java方法,这个计数器值则应为空,Java虚拟机栈与程序计数

2020-09-13 12:34:57 184 1

原创 SpringBoot集成Druid

导入Druid依赖 <dependency> <groupId>com.alibaba</groupId> <artifactId>druid-spring-boot-starter</artifactId> <version>1.1.18</version> </dependency>编写applicat

2020-09-12 13:24:09 284

原创 Java异常和反射详解

java异常分类及处理概念如果某个方法不能按照正常的途径完成任务,就可以通过另一种路径退出方法,在这种情况下会抛出一个封装了错误信息的对象,此时这个方法会立即退出同时不返回任何值,另外,调用这个方法的其他代码也无法执行,异常处理机制会将代码执行交给异常处理器异常分类Throwable是Java语言中所有错误或异常的超类,下一层分为Error和ExceptionErrorError类是指ava运行时系统的内部错误和资源耗尽错误,应用程序不会抛出该类对象,如果出现这样的错误,除了告知用户,

2020-09-09 21:48:16 357

原创 HashMap详解

HashMap(数组+链表+红黑树)特征:键不可重复,值可重复,底层Hash表,线程不安全,允许key为null,值为null。HashMap根据键的hashcode值存储数据,大多数情况下可以直接定位到它的值,因而具有很快的访问速度,但遍历顺序却是不确定的。HashMap最多允许一条键的值为null,允许多条记录为null。HashMap非线程安全,即任一时刻可以有多个线程同时写HashMap,可能导致数据不统一,如果需要满足线程安全可以用Collection的synchronizedMap方法

2020-09-09 15:33:15 227

原创 SSM整合详解

pom.xml依赖文件<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-

2020-09-08 15:44:15 80

原创 MyBatis总结(四)

基于注解的单表增删改查基于注解的一对一关联映射基于注解的一对多关联映射基于注解的多对多关联映射基于注解的动态SQL

2020-09-08 12:25:13 495

原创 MyBatis总结(三)

动态SQLif元素if元素是简单的条件判断,可用来实现简单的条件选择UserInfoMapper.xml映射文件<select id="findUserInfoByUserNameWithIf" parameterType="UserInfo" resultType="UserInfo"> select * from user_info ui <if test="userName!=null and userName!=''"> where ui.userName

2020-09-06 21:34:17 205

原创 MyBatis总结(二)

一对一关联映射一对多关联映射多对多关联映射动态SQL

2020-09-06 11:58:28 149

原创 MyBatis总结(一)

MyBatis和Hibernate区别两个框架都是ORM对象关系映射框架,,都是用于将数据持久化的工具Hibernate较深度的封装了JDBC,只要通过SQL语句操作对象即可完成对数据持久化的操作可移植性较好,比如从mysql数据库要切换到oracle数据库,只需改变一下数据库方言即可开发过程会产生很多不必要的SQL语句耗费程序资源,优化起来不方便,对存储过程的支持也不够强大MyBatis封装JDBC没有像Hibernate那么深,通过在配置文件中编写SQL语句,可以根据需求定

2020-09-05 14:46:16 119

原创 SpringMVC总结(三)

文件上传MultipartResolver用于处理上传请求,将上传请求包装成可以直接获取文件的数据,从而方便操作,MultipartResolve拥有两个实现类StandardServletMultipartResolver:使用servlet3.0标准的上传方式,不用依赖第三方包CommonsMultipartResolver:使用Apache的commons-fileupload完成具体上传操作,需要依赖第三包才能实现单文件上传使用CommonsMultipartResolver实现单

2020-09-04 22:17:26 137

空空如也

空空如也

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

TA关注的人

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