![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
学习之路
文章平均质量分 85
一颗白菜o
GitHub:https://github.com/Cerr146417
展开
-
2021届双非本科的心酸秋招经历总结及经验分享
前言本人2021年应届毕业生,秋招时间线为8-11月,拿了几个offer,写下这篇文章对自己的秋招做一个总结,如果能给别人带来启发那更好了。文章分为几个部分:背景偏:主要讲述自己的一些基本情况简历篇:主要讲述下根据自己秋招的心得,简历要如何准备知识篇:主要讲述下应该储备的知识面经篇:主要分享自己的一些面经个人背景双非二本计算机专业,求职的方向也是互联网行业,岗位是Java研发,一段小公司实习经历,两个比较一般般的项目(SpringBoot+redis+kafka),获奖经历的话三个水水的省原创 2021-01-20 10:26:02 · 6901 阅读 · 15 评论 -
详解redis的持久化机制
本文目录一、RDB持久化二、AOF持久化1、redis4.0对持久化的优化2、关于AOF重写3、AOF重写过程很多时候我们需要将Redis进行持久化也就是说将存储在内存中的数据写入到硬盘中,大部分原因是为了之后重用数据(比如说机器重启),或者是为了防止系统故障而进行的备份。Redis提供两种持久化的机制,一种是快照持久化(RDB) ,另一种是只追加文件持久化(AOF) 。下面我们分别来介绍下面两种持久化机制。一、RDB持久化我们可以通过创建快照来获取存储在内存中的数据在某个时间点上的副本,Redis原创 2020-10-06 20:34:40 · 312 阅读 · 0 评论 -
详解缓存雪崩,缓存穿透,缓存击穿及其解决方案
目录如下:一、正常情况二、缓存雪崩1、解决方法三、缓存击穿1、解决方法四、缓存穿透1、解决方法一、正常情况正常情况下的流程是这样的,先查缓存,缓存无就查数据库。二、缓存雪崩缓存雪崩是指缓存中的数据大批量的过期 ,而查询量巨大,造成数据库压力过大而崩溃。1、解决方法尽量保证redis集群的高可用性,当发现机器坠机时尽快补上。选择合适的缓存淘汰策略。缓存的过期设置随机时间,防止大量数据同时过期。利用redis持久化机制保存的数据尽快恢复缓存。三、缓存击穿缓存击穿是指缓存中没有数据,而原创 2020-10-06 20:30:38 · 682 阅读 · 0 评论 -
详解布隆过滤器,并教你自己实现一个布隆过滤器
最近在学习Redis缓存穿透等知识的时候看到了布隆过滤器可以用于解决缓存穿透问题,因此对布隆过滤器进行了学习,并记录下此篇笔记。文章目录如下:一、简介二、布隆过滤器的原理1、添加元素2、判断元素是否在过滤器中三、自己实现一个布隆过滤器一、简介根据百度百科可知,布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都比一般的算法要好的多,缺点是有一定的误识别率和删除困原创 2020-10-06 17:06:54 · 2765 阅读 · 0 评论 -
设计模式 | 详解代理模式
代理模式1、代理模式的基本介绍2、静态代理静态代理模式的基本介绍静态代理案例静态代理的优缺点3、JDK代理JDK模式的基本介绍JDK生成代理对象的APIJDK代理案例4、Cglib代理Cglib代理的基本介绍Cglib代理实现步骤cglib代理案例1、代理模式的基本介绍1、代理模式:为一个对象提供一个替身 ,以控制对这个对象的访问。即通过代理对象访问目标对象。这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能。2、被代理的对象可以有三种:远程对象、创建开销大的对象 或原创 2020-09-05 20:59:29 · 185 阅读 · 0 评论 -
从源码角度解析ArrayList扩容的原理
从源码角度解析ArrayList扩容的原理1、ArrayList的构造方法2、ArrayList的add方法3、总结1、ArrayList的构造方法看源码先看构造方法,我们首先看看ArrayList 的构造方法,它有三个构造方法:public ArrayList(int initialCapacity); //传入一个数组的大小public ArrayList(); //空参构造public ArrayList(Collection<? extends E> c); //传入一个Col原创 2020-08-06 11:17:56 · 207 阅读 · 0 评论 -
设计模式 | 用实际案例详解工厂模式
我们来看一个具体需求看一个披萨的项目,要便于披萨种类的扩展,要便于维护,有以下要求:披萨的种类很多(比如GreekPizz、CheesePizz等)披萨的制作有prepare,bake,cut,box完成披萨店订购功能首先我们先编写一个Pizza抽象类:package com.cxc.factory.simplefactory.pizzastore.pizza;/** * 抽...原创 2020-06-06 22:22:45 · 1182 阅读 · 0 评论 -
设计模式 | 详解单例模式(饿汉式、懒汉式、静态内部类、枚举、JDK源码剖析)...
一、单例模式介绍所谓类的单例设计模式,就是采取一定的方法保证在整个的软件系统中,对于某个类只能存在一个对象实例,并且该类只提供一个取得其对象实例的方法(静态方法)。比如Hibernate的SessionFactory,它充当数据存储源的代理,并负责创建Session对象。SessionFactory并不是轻量级的,一般情况下,一个项目通常只需要一个SessionFactory就够,这时就会使用...原创 2020-06-06 19:15:39 · 345 阅读 · 0 评论 -
设计模式 | 详解设计模式的七大原则
一、设计模式的目的编写软件的过程中,程序员面临着来自耦合性,内聚性以及可维护性,可扩展性,重用性,灵活性等多方面的挑战,设计模式是为了让程序具有更好的:代码重用性(即相同功能的代码,不用多次编写)可读性(即编程规范性,便于其他程序员的阅读和理解)可扩展性(即当需要增加新功能时,非常方便,称为可维护)可靠性(即当我们增加新的功能后,对原来的功能没有影响)使程序呈现高内聚,低耦合的特性...原创 2020-06-06 11:06:25 · 355 阅读 · 0 评论 -
SpringBoot | 关于SpringBoot2.x以上版本废弃EmbeddedServletContalnerCustomizer
springboot1.x版本中修改嵌入式Servlet容器配置的方法在Springboot1.x的版本中有EmbeddedServletContalnerCustomizer类,该类可以来修改嵌入式Servlet容器的配置。当我学习到此处时,由于教程使用的SpringBoot版本是1.x,所以自己在实践时没有找到EmbeddedServletContalnerCustomizer类,通过网上...原创 2020-03-23 20:28:51 · 338 阅读 · 0 评论 -
SpringBoot | 详解SpringBoot配置文件及其原理
目录一、配置文件二、YAML语法1、基本语法2、值的写法(1)、字面量:普通的值(数字,字符串,布尔)(2)、对象、Map(属性和值)(3)、数组(List、Set)三、配置文件值注入1、一个简单的示例2、@Value获取值和@ConfigurationProperties获取值比较3、数据校验4、使用@PropertySource加载指定的配...原创 2019-12-21 19:29:56 · 4021 阅读 · 0 评论 -
通过git上传项目到github上&&更新项目到github上
目录一、安装git二、在github上新建仓库三、通过git上传项目到github上四、通过git更新项目到github上一、安装git可以点此去官网下载安装git,但是官网的下载很慢,因此在此推荐在此下载:点此下载。下载之后就安装,此处很简单就不叙述。二、在github上新建仓库在github中点击new,然后在下面填入信息:...原创 2019-12-23 09:11:36 · 280 阅读 · 0 评论 -
JavaWeb学习笔记 | 关于JSP
1.JSP的概述1.JSP是简化Servlet编写的一种技术,将Java代码和HTML语句混合在同一个文件中编写。只对网页中的要动态产生的内容采用java编写。而对静态内容采用普通静态HTML页面来编写。2.JSP简单来说就是在HTML页面中编写Java代码的页面,其文件的扩展名为.jsp3.JSP中编写Java代码的位置在body节点内:<% java代码 %>De...原创 2019-07-31 21:57:00 · 147 阅读 · 0 评论 -
SpringMVC学习笔记 | SpringMVC中处理模型数据的几种方法(ModelAndView|@SessionAttributes|@ModelAttribute)以及运行原理...
目录一、处理模型数据1、ModelAndView2、Map或Model3、@SessionAtttibutes4、@ModelAttribute(1)、需求的解决(2)、@ModelAttribute的运行原理(3)、SpringMVC确定目标方法POJO类型入参的过程(4)、关于@ModelAttribute的两种用法一、处理模型数据SpringMVC...原创 2019-10-27 16:56:23 · 534 阅读 · 0 评论 -
SpringMVC学习笔记 | 视图及视图解析器 | 重定向 | Spring的表单标签及静态资源的处理
目录一、视图与视图解析器1、视图2、视图解析器(1)、InternalResourceViewResolver(2)、自定义视图解析器二、关于重定向三、使用Spring的表单标签1、from标签四、处理静态资源一、视图与视图解析器请求处理方法执行完成后,最终返回一个ModelAndView对象。对于那些返回String,View或ModelMap等类型的...原创 2019-11-15 14:03:22 · 425 阅读 · 0 评论 -
SpringMVC学习笔记 | 数据转换、数据格式化、数据校验
目录一、数据绑定1、数据绑定流程2、@InitBinder二、类型转换1、自定义类型转换器2、Spring支持的转换器3、关于mvc:annotation-driven二、数据格式化1、日期格式化2、数值格式化三、数据校验1、JSR3032、Hibernate Validator扩展注解3、SpringMVC数据校验4、Spr...原创 2019-11-16 22:42:37 · 321 阅读 · 0 评论 -
SpringMVC学习笔记 | 返回JSON数据 、HttpMessageConverter<T>
处理JSON的步骤加入jar包 编写目标方法,使其返回JSON对应的对象或集合package com.cerr.springmvc.test;import com.cerr.springmvc.crud.dao.EmployeeDao;import com.cerr.springmvc.crud.entities.Employee;import org.springframewo...原创 2019-11-19 15:32:00 · 155 阅读 · 0 评论 -
SpringMVC学习笔记 | SpringMVC中文件的上传
文件的上传SpringMVC为文件上传提供了直接的支持,这种支持是通过MultipartResolver实现的,其中有一个其实现类:CommonsMultipartResovler。SpringMVC上下文中默认没有装配MultipartResolver,因此默认情况下不能处理文件的上传工作,如果想使用SpringMVC的文件上传功能,需在上下文中配置MultipartResolver。...原创 2019-11-19 19:14:11 · 133 阅读 · 0 评论 -
SpringMVC学习笔记 | 在SpringMVC中的国际化
目录一、国际化需要解决的问题1、使用jstl的fmt标签来对文本进行本地化处理2、在bean中获取国际化资源文件Locale对应的消息3、通过超链接切换Locale一、国际化需要解决的问题 在页面上能够根据浏览器语言设置的情况对文本,时间,数值进行本地化处理 解决:使用JSTL的fmt标签 可以在bean中获取国际化资源文件Locale对应的消息 解决...原创 2019-11-19 19:14:37 · 226 阅读 · 0 评论 -
SpringMVC学习笔记 | SpringMVC拦截器详解:自定义拦截器、拦截器执行顺序的分析
一、自定义拦截器SpringMVC可以使用拦截器对请求进行拦截处理,用户可以自定义拦截器来实现特定的功能,自定义拦截器必须实现HandlerInterceptor接口。1、步骤编写一个拦截器类,需要实现HandlerInterceptor接口。package com.cerr.springmvc.interceptor;import org.springframework.w...原创 2019-11-19 21:45:24 · 428 阅读 · 0 评论 -
SpringMVC学习笔记 | 关于异常处理
目录一、概述二、ExceptionHandlerExceptionResolver三、ResponseStatusExceptionResolver四、DefaultHandlerExceptionResolver五、SimpleMappingExceptionResolver一、概述SpringMVC通过HandlerExceptionResolver处理程序的...原创 2019-11-20 13:26:56 · 185 阅读 · 0 评论 -
解决IDEA使用maven导入依赖时卡在Resolving Maven dependencies
选择File-Settings,然后设置VM options for importer的值为-Xms1024m -Xmx2048m。参考自文章:Idea卡在Resolving Maven dependencies的解决方案原创 2019-12-14 20:49:40 · 2700 阅读 · 2 评论 -
JavaWeb学习笔记 | Filter简介
1. Filter简介Filter的基本功能是对Servlet容器调用Servlet的过程进行拦截,从而在Servlet进行响应处理的前后实现一些特殊的功能。在Servlet API中定义了三个接口类来供开发人员编写Filter程序:Filter,FilterChain,FilterConfigFilter程序是一个实现了Filter接口的Java类,与Servlet程序相似,它由Ser...原创 2019-05-27 21:31:27 · 133 阅读 · 0 评论 -
poj1190:生日蛋糕(DFS+剪枝)
描述7月17日是Mr.W的生日,ACM-THU为此要制作一个体积为Nπ的M层生日蛋糕,每层都是一个圆柱体。设从下往上数第i(1 <= i <= M)层蛋糕是半径为Ri, 高度为Hi的圆柱。当i < M时,要求Ri > Ri+1且Hi > Hi+1。由于要在蛋糕上抹奶油,为尽可能节约经费,我们希望蛋糕外表面(最下一层的下底面除外)的面积Q最小。令Q = Sπ...原创 2018-10-04 23:30:34 · 185 阅读 · 0 评论 -
poj2815:城堡问题(DFS)
描述 1 2 3 4 5 6 7 #############################1 # | # | # | | # #####---#####---#---#####---#2 # # | # # # # # #---#####---#####---#####---...原创 2018-09-05 23:22:10 · 811 阅读 · 0 评论 -
DP算法之最长上升子序列
1.问题描述描述一个数的序列bi,当b1 < b2 < ... < bS的时候,我们称这个序列是上升的。对于给定的一个序列(a1, a2, ..., aN),我们可以得到一些上升的子序列(ai1, ai2, ..., aiK),这里1 <= i1 < i2 < ... < iK <= N。比如,对于序列(1, 7, 3, 5, 9, 4, 8)...原创 2018-09-04 21:14:11 · 1404 阅读 · 2 评论 -
动态规划 | 数字三角形
题目重述描述73 88 1 02 7 4 44 5 2 6 5上面给出了一个数字三角形。从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,你的任务就是找到最大的和。注意:路径上的每一步只能从一个数走到下一层上和它最近的左边的那个数或者右边的那个数。输入输入的是一行是一个整数N (1 < N <= 100),给出三角形的行数。...原创 2018-08-02 11:22:04 · 277 阅读 · 0 评论 -
分治算法之求排列的逆序数
描述在Internet上的搜索引擎经常需要对信息进行比较,比如可以通过某个人对一些事物的排名来估计他(或她)对各种不同信息的兴趣,从而实现个性化的服务。对于不同的排名结果可以用逆序来评价它们之间的差异。考虑1,2,…,n的排列i1,i2,…,in,如果其中存在j,k,满足 j < k 且ij> ik, 那么就称(ij,ik)是这个排列的一个逆序。一个排列含有逆序的个数称...原创 2018-08-01 10:59:14 · 11486 阅读 · 5 评论 -
MyBatis | 详解MyBatis的运行流程
目录一、MyBatis的运行流程1、获取SqlSessionFactory对象2、获取SqlSession对象3、获取接口的代理对象4、执行增删改查二、总结一、MyBatis的运行流程1、获取SqlSessionFactory对象根据配置文件创建SqlSessionFactory对象,解析全局配置文件和sql映射文件。最后创建的对象包含了一个Configurat...原创 2019-12-13 19:03:39 · 380 阅读 · 1 评论 -
MyBatis | MyBatis中使用插件、使用PageHelper插件、自定义类型处理器
目录一、插件原理二、插件编写(单个插件)1、编写Interceptor的实现类2、使用@Intercepts注解完成插件的签名3、将写好的插件注册到全局配置文件中三、多个插件时的执行顺序四、使用PageInterceptor插件1、导包2、在全局配置文件中注册PageInterceptor插件3、编码五、使用BatchExecutor进行批量操作...原创 2019-12-14 19:46:12 · 546 阅读 · 0 评论 -
JavaWeb | 基于maven整合SSM框架(Spring+SpringMVC+MyBatis)
目录一、目录总览二、创建maven项目三、完善项目目录1、新建目录2、添加web目录3、配置tomcat四、maven添加依赖1、添加数据库驱动依赖2、添加SpringMVC依赖3、添加spring的一系列依赖4、添加MyBatis及其与Spring整合的依赖5、添加其它依赖五、配置1、新建数据源资源文件dbconfig.propert...原创 2019-12-18 16:01:50 · 335 阅读 · 0 评论 -
SpringBoot | 使用Spring Initializr来快速创建一个SpringBoot项目
目录一、新建项目二、编码三、测试一、新建项目新建项目,选择Spring Initializr选择模块,我们选择一个Web模块:自动给我们创建了整个目录架构:二、编码新建c...原创 2019-12-21 19:36:17 · 252 阅读 · 0 评论 -
SpringBoot | SpringBoot入门介绍及其分析HelloWorld项目
目录一、SpringBoot介绍1、SpringBoot简介2、微服务二、使用maven创建SpringBoot项目1、创建一个maven工程2、导入Springboot依赖3、编写一个主程序:启动SpringBoot4、编写Controller5、启动方式6、简化部署三、对上述项目的探究1、POM文件2、主程序类(主入口类)四、使用Spri...原创 2019-12-21 19:43:02 · 181 阅读 · 0 评论 -
MyBatis | Mybatis整合第三方缓存包(EHcache)
目录一、导入jar包1.下载2.导包二、编写chcache.xml文件三、在SQL映射文件中配置标签四、MyBatis的缓存运行示意图(与第三方缓存包结合)一、导入jar包1.下载需要下载第三方缓存包及其与MyBatis整合的适配包。可以点此下载所需jar包2.导包图1:导入的包二、编写ehcache.xml文件<...原创 2019-12-12 16:12:36 · 441 阅读 · 0 评论 -
Mybatis | 逆向工程(创建一个逆向工程并分析)
目录一、创建一个逆向工程的步骤1、环境的准备(1)、准备mybatis-config.xml文件:(2)、创建数据库配置文件dbconfig.properties(3)、准备其它相关的包2、导入相关的包3、配置逆向工程的xml文件4、创建方法来运行我们配置的逆向工程二、分析1、指定创建的映射文件2、配置需要连接的数据库3、配置类型解析器4、...原创 2019-12-12 21:53:49 · 496 阅读 · 0 评论 -
SpringMVC学习笔记 | SpringMVC的运行流程图、Spring整合SpringMVC
目录一、SpringMVC的运行流程图二、Spring整合SpringMVC一、SpringMVC的运行流程图二、Spring整合SpringMVCSpring整合SpringMVC的原因通常情况下,类似于数据源、事务、整合其他框架都是放在Spring的配置文件中,而不是放在SpringMVC的配置文件中。实际上放入Spring配置文件对应的IOC容...原创 2019-11-20 15:24:59 · 137 阅读 · 0 评论 -
MyBatis学习笔记 | MyBatis的下载、编写一个HelloWorld的MyBatis、使用接口式编程改进HelloWorld...
目录一、MyBatis下载二、建立一个HelloWorld1.建表2.创建项目3.创建全局配置文件4.配置sql映射文件5.编码三、改进:使用接口式编程1、接口式编程2、如何绑定3、上面HelloWorld的改进(1)、新建接口(2)、修改EmployeeMapper.xml配置文件(3)、编码四、总结MyBatis是一个半自动化,轻...原创 2019-11-20 22:53:10 · 179 阅读 · 0 评论 -
MyBatis小工具 | 使用log4j在控制台输出SQL语句
目录1.下载log4j-1.2.17.jar2.在项目中添加jar包3.配置log4j.properties文件4.测试我们在使用MyBatis时候想看看其发送的SQL语句,可以使用log4j-1.2.17.jar和log4j.properties来显示。1.下载log4j-1.2.17.jar点此进入官网下载,然后选择对应的版本:...原创 2019-11-28 13:55:04 · 218 阅读 · 0 评论 -
MyBatis笔记 | 详解resultType和resultMap
目录一、resultType1、select返回List2、select记录封装Map3、返回单个实体类的Map4、返回多个实体类的Map二、resultMap1、通过resultMap实现高级结果映射集2、使用resultMap进行关联查询3、使用级联属性封装结果来进行关联查询4、使用association定义关联对象封装规则5、使用associati...原创 2019-11-28 21:41:03 · 1121 阅读 · 0 评论 -
MyBatis笔记 | 详解参数处理(多种类型的参数处理、源码分析、读取参数的两种格式的区别)...
目录一、MyBatis的参数处理1、单个参数2、多个参数3、命名参数4、参数处理(1)传入POJO(2)传入Map(3)传入List二、从源码来看参数处理的过程(即如何封装Map)1、 确定names的值2、封装Map四、参数处理中#{}与${}的区别五、#{}取值时指定参数的相关规则一、MyBatis的参数处理从参数的个数来看,可分为单...原创 2019-11-28 21:51:18 · 423 阅读 · 0 评论