自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Felix_ar

这个世界上只有一种成功,那就是用自己喜欢的方式生活!

  • 博客(51)
  • 资源 (2)
  • 收藏
  • 关注

原创 Springboot整合easyExcel导入导出Excel

背景:最近公司有个需求要求可以导入、导出excel,因此在此记录学习一下如何使用Springboot整合easyExcel;需求:数据库中有张user表,有个业务要求可以导入、导出“用户名单.xls”表一、准备:创建项目:关于springboot项目如何创建这里不再赘述,放一张项目结构图:1、导入easyexcel、mybatis、mysql依赖 <!-- easyexc...

2019-12-10 19:30:12 4994 6

原创 2020届个人秋招Java面经总结

一、前言两个多月的跌跌撞撞,秋招到现在基本上尘埃落定了。这里分享自己在这个过程中的一些感悟,希望能帮到大家。(1)简历真的很重要,特别是之前没打acm、没竞赛经历的,争取多做几个项目并且找个实习,否则笔试机会都没有(2)算法真的很重要,从现在开始每天多做几道剑指offer和LeetCode,锻炼自己的解题能力,不然笔试会很难过(3)到了面试的时候,要求自己对于简历上写的东西都要很熟悉,基础...

2019-10-24 22:35:23 1116 1

原创 HTTP报文首部与常见HTTP状态码

一、 Http报文首部1、HTTP报文首部HTTP 协议的请求和响应报文中必定包含 HTTP 首部。首部内容为客户端和服务器分别处理请求和响应提供所需要的信息。2、HTTP 请求报文在请求中,HTTP 报文由方法、URI、HTTP 版本、HTTP 首部字段等部分构成。3、HTTP 响应报文在响应中,HTTP 报文由 HTTP 版本、状态码(数字和原因短语)、HTTP 首部字段 3...

2019-06-10 16:28:58 587

原创 Linux(CentOS)下安装部署Redis

一、下载方法1:到redis官网下载安装包,然后将其放到“/tmp”目录下面方法2:直接在“/tmp”目录下,执行以下命令:wget http://download.redis.io/releases/redis-5.0.4.tar.gz注意:若出现wget: unable to resolve host address的问题解决办法:sudo vim /etc/resolv.con...

2019-05-05 23:01:18 223

原创 简单理解Spring Aop

一、什么是AOPAOP是一种思想,也称为“面向切面编程”。AOP 技术利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即方面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的耦合度,并有利于未来的可操作性和可维护性。AOP将...

2019-04-27 17:13:17 499

原创 TCP连接的建立与释放----三次握手与四次挥手

一、TCP连接建立1、TCP连接建立需要经过三次握手:(1)首先由 Client (客户端)发出请求连接即 SYN=1 ACK=0 , TCP 规定SYN=1 时不能携带数据,但要消耗一个序号,因此声明自己的序号是 seq=x(随机产生且不为0),此时客户端进入SYN_SEND(准备发送)状态。(2)然后 Server(服务器端) 进行回复确认,即 SYN=1 ACK=1 seq=y, 确...

2019-04-22 23:58:59 493

转载 杂七杂八-推荐阅读

浅显易懂,推荐一看https://segmentfault.com/a/1190000008131735

2019-04-12 15:57:30 192

原创 CVTE Web后台实习面经(Java)

一面1、.熟悉哪些排序算法?(写了归并排序。)2、.二分查找和冒泡让你选,选哪个?(写了二分查找)3、.项目用到数据库,知道有哪些引擎?说一下区别。4、.了解mysql调优?说一下怎么优化查询。5、.Arraylist和Linkedlist区别?。6、.hashmap的结构?怎么扩容?。7、.线程有哪些状态,线程能从阻塞直接到死亡吗。8、.说一下gc算法。9、mysql底层实现?...

2019-04-12 10:19:55 639

原创 Redis学习之路(2)---- 字典与渐进式rehash

一、了解字典字典,是一种用于保存键值对(key-value)的抽象数据结构,可以简单的理解为hashmap。字典在Redis中的应用十分广泛,比如Redis的数据库就是使用字典来作为底层实现的,对数据库的增删改查也是建立在对字典的操作之上的。redis> SET a “b”OK例如执行上面的命令,在数据库中创建一个键为"a",值为"b"的键值对时,这个键值对就是保存在代表数...

2019-03-26 19:05:07 387

原创 死锁产生的原因及条件

一、死锁的定义:死锁 :是指两个或两个以上的进程在执行过程中,因争夺资源而造成的一种互相等待的现象,若无外力作用,它们都将无法推进下去。二、原因:(1) 因为系统资源不足。(2) 资源分配不当等。(3) 进程运行推进顺序不合适。如果系统资源充足,进程的资源请求都能够得到满足,死锁出现的可能性就很低,否则就会因争夺有限的资源而陷入死锁。其次,进程运行推进顺序与速度不同,也可能产生死锁。...

2019-03-01 15:24:45 2874

原创 Java虚拟机之----类加载器&双亲委派模型

一、前言紧接着上篇文章,类加载阶段中有一个动作是“通过一个类的全限定名来获取描述此类的二进制字节流”,这个动作是放到Java虚拟机外部去实现的,实现这个动作的代码模块被称为“类加载器”。二、类与类加载器类加载器虽然只用于实现类的加载动作,但它在Java程序中起到的作用却远远不限于类加载阶段。对于任意一个类,都需要由加载它的类加载器和这个类本身一同确立其在Java虚拟机中的唯一性,每一个类加...

2019-02-28 16:41:17 162

原创 Java虚拟机之----类加载机制

一、前言虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。二、类加载机制在Java语言里面,类的加载、连接和初始化过程是在程序运行期间第一次使用时完成的(运行期动态加载和动态连接)1、类加载时机类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载(Loadin...

2019-01-30 11:12:12 173

原创 Java虚拟机之----垃圾收集算法&内存分配与回收策略

一、前言上篇博文简单介绍了Java虚拟机的垃圾收集机制,本文就接着讲一讲常用的垃圾收集算法、垃圾收集器还有内存分配与回收策略。二、垃圾收集算法1、标记-清除算法标记-清除算法是最基础的收集算法,因为后续的收集算法都是基于该算法的思路并对其不足进行改进而得到的,可分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收所有被标记的对象。缺点:一个是效率问题,...

2019-01-15 13:17:59 186

原创 Java虚拟机之----垃圾收集机制

一、前言上一篇博文介绍了Java虚拟机的内存结构等内容,前面说到,虚拟机栈、本地方法栈和程序计数器这三者属于线程私有,随着线程而生也随着线程而灭;对于这三者,当方法或者线程结束后,内存也自然跟着被回收,故而不需要对这三个区域进行垃圾回收。因此垃圾收集主要是对堆和方法区而言。二、垃圾收集(Garbage Collection,GC)1、 判断一个对象是否“存活”在堆里面存放着Java世界...

2019-01-14 13:28:18 185

原创 计算机网络体系结构

前言计算机网络体系结构是由网络层次结构模型与各层协议组成的一、OSI参考模型OSI参考模型可分为以下7个层次:应用层表示层会话层传输层网络层数据链路层物理层应用层:实现协同工作的应用程序之间的通信过程控制表示层:负责通信系统之间的数据格式变换、数据加密与解密、压缩与恢复会话层:维护两个会话主机之间连接的建立、管理和终止以及数据的交换传输层:为不同位置的计算机的进程通...

2018-12-31 23:26:04 308

原创 设计模式课程设计---使用5个以上不同的设计模式完成

设计模式期末课程设计本文记录一下我设计模式期末的课程设计,要求用使用5个以上不同的设计模式完成其实就是一个小系统,代码挺简单的,但要融合多个设计模式,所以代码还是挺多的(大概18~19个类),因此这里代码就不贴出来了,文章最后会给出源代码的下载链接本系统模拟可乐代理商从进货到可乐公司生产发货以及销售给顾客的整个过程。可细分为以下三个部分:(1)可乐代理商选择进货,同时发送邮件通知可乐公司...

2018-12-19 13:05:53 17297 44

转载 Java Socket网络编程:实现简单的局域网共享文件(PeertoPeer)

介绍代码很简单,只需要两个java文件:Server.java和Client.java。代码不是我写的,出自:这里(感兴趣的可以自行下载,这里就不贴出来了)运行结果简要说一下怎么运行:(1)同时运行Server.java和Client.java文件,出现如下界面:客户端中ip是socket设置的服务端ip,否则无法接受文件(2)服务端点击“浏览”,然后这里选择我电脑D盘的test....

2018-12-17 00:01:31 1353

原创 设计模式之----观察者模式

观察者模式当对象间存在一对多关系时,则使用观察者模式(ObserverPattern)。比如,当一个对象被修改时,则会自动通知它的依赖对象。观察者模式属于行为型模式。意图:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。主要解决:一个对象状态改变给其他对象通知的问题,而且要考虑到易用和低耦合,保证高度的协作。何时使用:一个对象(目...

2018-12-15 10:04:07 518

原创 Linux下常用命令(附其他链接)

1、linux特点1)开源:用户可以通过网络和其他途径免费获得,并可以任意修改其源代码。(!=免费)2)多用户:各个用户对于自己的文件设备有自己特殊的权利,保证了各用户之间互不影响3)多任务:可以多个程序同时独立地运行(类似window系统一边下载大片、一边听着音乐、一边浏览着你“亲爱的她”的空间美照)4)良好的界面:Linux同时具有字符界面和图像界面。建议使用字符界面(也被称为命令行界...

2018-12-12 23:23:30 164

原创 设计模式之----组合模式

组合模式介绍:组合模式,将对象组合成树形结构以表示“部分-整体”的层次结构,组合模式使得用户对单个对象和组合对象的使用具有一致性。有时候又叫做部分-整体模式,它使我们树型结构的问题中,模糊了简单元素和复杂元素的概念,客户程序可以像处理简单元素一样来处理复杂元素,从而使得客户程序与复杂元素的内部结构解耦。结构:1、Component (抽象构件):是组合中的对象声明接口,在适当的情况下,...

2018-12-08 19:34:48 500

原创 设计模式之----原型模式

原型模式介绍:在软件系统中,有时候需要多次创建某一类型的对象,为了简化创建过程,可以只创建一个对象,然后再通过克隆的方式复制出多个相同的对象,这就是原型模式的设计思想。定义:原型模式是一种对象型模式,可指定创建对象的种类,并通过复制这些原型创建新的对象。结构:1、Prototype(抽象原型类)2、ConcretePrototype(具体原型类)3、Client(客户类)模式实例...

2018-12-08 19:19:43 211

原创 我的springboot之路(2)----springboot自定义配置详解

一、前言我的springboot之路(1)介绍了springboot的诞生背景以及优点等,我们知道springboot简化了编程配置,它体现出了一种 约定优于配置,也称作按约定编程,是一种软件设计范式,旨在减少软件开发人员需做决定的数量,获得简单的好处,而又不失灵活性。 一般情况下默认的配置足够满足日常开发所需,但在某些情况下,我们可能需要用到自定义属性配置、自定义文件配置等一系列功能。那么,这...

2018-12-08 14:28:13 216

原创 Redis学习之路(1)----初识Redis

一、什么是RedisRedis官网上的介绍是这样的:Redis is an open source (BSD licensed), in-memory data structurestore, used as a database, cache and message broker. It supports datastructures such as strings, hashes, ...

2018-12-05 11:33:00 229

原创 我的springboot之路(1)----初识springboot

一、什么是springboot网上关于springboot的介绍很多,这里就不一一赘述了,简要说下其诞生背景和作用1、SpringBoot 是为了简化 Spring 应用的创建、运行、调试、部署等一系列问题而诞生的产物,自动装配的特性让我们可以更好的关注业务本身而不是外部的XML配置,我们只需遵循规范,引入相关的依赖就可以轻易的搭建出一个 WEB 工程2、springboot具有自动装配的特...

2018-12-02 12:41:32 391

原创 java并发之----实现生产者/消费者模式(操作值&一对一交替打印)

实现生产者/消费者模式1、一生产与一消费:操作值利用synchronized 实现,代码如下:public class Producer { private String lock; public Producer(String lock){ this.lock = lock; } public void setValue(){ try{ synchronized ...

2018-11-28 15:00:34 1366

转载 java并发之----原子性,可见性和有序性(转载)

一、并发编程中的三个概念在并发编程中,我们通常会遇到以下三个问题:原子性问题,可见性问题,有序性问题。我们先看具体看一下这三个概念:1.原子性原子性:即一个操作或者多个操作 要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。一个很经典的例子就是银行账户转账问题:比如从账户A向账户B转1000元,那么必然包括2个操作:从账户A减去1000元,往账户B加上1000元。试想一下,...

2018-11-24 16:15:20 854

原创 java并发之----volatile关键字

一、volatile在java中,volatile关键字解决的是变量在多个线程之间的可见性,一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义:(1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的。(2)禁止进行指令重排序。注:不了解“原子性,可见性和有序性”的同学可以看下笔者之前的...

2018-11-24 14:48:01 604

原创 java集合之----ArrayList源码分析(基于jdk1.8)

ArrayList1、随机访问:ArrayList实现了RandomAccess接口,支持随机访问,ArrayList底层基于数组实现,数组天然支持随机访问,知道下标直接可以得到其值,无需遍历。这是LinkedList无法做到的。//实现RandomAccess接口public class ArrayList&amp;amp;lt;E&amp;amp;gt; extends AbstractList&amp;amp;lt;E&amp;amp;gt; ...

2018-11-21 11:50:43 198

原创 两个单链表相交的系列问题

题目在本题中,单链表可能有环,也可能无环。给定两个单链表的头节点 head1和head2,这两个链表可能相交,也可能不相交。请实现一个函数, 如果两个链表相交,请返回相交的第一个节点;如果不相交,返回null 即可。 要求:如果链表1的长度为N,链表2的长度为M,时间复杂度请达到 O(N+M),额外空间复杂度请达到O(1)分析:1、首先判断两个单链表L1,L2是否有环,并返回入环结点思路...

2018-11-19 00:17:44 323

原创 java并发之----线程的创建方法

一、线程的创建(1)继承Thread类需要实现run方法,通过调用start方法启动线程public class MyThread extends Thread{ @Override public void run(){//实现run方法 //以下根据自己的需要来写,这里打印示例1~9 for(int i=1; i&amp;amp;amp;lt;10; i++){ System.out.print...

2018-11-17 16:39:36 190

原创 设计模式之----单例模式

单例模式1.适用场合:(1)需要频繁的进行创建和销毁的对象;(2)创建对象时耗时过多或耗费资源过多,但又经常用到的对象;(3)工具类对象;(4)频繁访问数据库或文件的对象。2.单例模式可以分为懒汉式和饿汉式:懒汉式单例模式:在类加载时不初始化。饿汉式单例模式:在类加载时就完成了初始化,所以类加载比较慢,但获取对象的速度快。单例模式的八种写法:(1)饿汉式(静态常量)[可用]p...

2018-11-14 23:40:24 297

原创 输入一个字符串,按字典序打印出该字符串中字符的所有排列(剑指offer)

题目输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。简单解释下什么是字典序,简单理解就是像英文字典那样排序,设想一本英语字典里的单词,何者在前何者在后?显然的做法是先按照第一个字母、以 a、b、c……z 的顺序排列;如果第一个字母一样,那么比较第二个、第三个乃至后面...

2018-11-13 23:17:25 6247

原创 输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表(剑指offer)

题目输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表。要求不能创建任何新的结点,只能调整树中结点指针的指向。分析:在二叉搜索树中,每个结点都有两个分别指向其左、右子树的指针,左子树结点的值总是小于父结点的值,右子树结点的值总是大于父结点的值。在双向链表中,每个结点也有两个指针,它们分别指向前一个结点和后一个结点。所以这两种数据结构的结点是一致,二叉搜索树和双向链表,只是因为两个指针...

2018-11-13 23:07:20 2246

原创 如何将暴力递归改为动态规划?

暴力递归1、把问题转化为规模缩小了的同类问题的子问题2、有明确的不需要继续进行递归的终止条件3、有当得到了子问题的结果之后的决策过程4、不需要记录每一个子问题的解动态规划1、从暴力递归中来2、将每一个子问题的解记录下来,避免重复计算(这是动态规划优于递归的本质原因)3、把暴力递归的过程,抽象成了状态表达4、并且存在化简状态表达,使其更加简洁的可能话不多说,先来一道题感受一下如何...

2018-11-12 23:43:02 1083

原创 java并发之----简要介绍java对锁的几种优化

引言新版本java对锁的实现引进了许多技术进行优化,如偏向锁、轻量级锁、自旋锁、适应性自旋锁、锁消除、锁粗化等锁主要存在四种状态,依次是:无锁状态、偏向锁状态、轻量级锁状态、重量级锁状态,他们会随着竞争的激烈而逐渐升级。注意锁可以升级不可降级,这种策略是为了提高获得锁和释放锁的效率。java中关于锁的名词很多,若不注意区分很容易混淆,我们可以按照类别来记忆,例如下面介绍的“偏向锁、轻量级锁、...

2018-11-10 00:26:21 270

原创 java并发之----synchronized与ReenTrantLock

Java 提供了两种锁机制来控制多个线程对共享资源的互斥访问,第一个是 JVM 实现的 synchronized,而另一个是 JDK 实现的 ReentrantLock。synchronizedsynchronized关键字最主要几种使用方式:(1)同步一个代码块:只作用于同一个对象,如果调用两个对象上的同步代码块,就不会进行同步。public void func() { syn...

2018-11-10 00:07:04 349

原创 java集合之----HashMap源码分析(基于JDK1.7与1.8)

一、什么是HashMap百度百科这样解释:简而言之,HashMap存储的是键值对(key和value),通过key映射到value,具有很快的访问速度。HashMap是非线程安全的,也就是说在多线程并发环境下会出现问题(死循环)二、内部实现(1)结构HashMap是由数组+链表实现的(jdk1.7),如下图:jdk1.8之后HashMap是由数组+链表+红黑树实现,如下图:前...

2018-11-07 12:04:47 665 1

转载 什么是LRU算法?

LRU一、LRU究竟是个什么东西呢,听上去是那么的高大上。Least Recently Used就是LRU的真面目,翻译过来是:最近最少使用,什么意思呢,请看下面这个示例。我们要在有限的内存中存放一些&amp;amp;amp;amp;lt;K,V&amp;amp;amp;amp;gt;键值对,这些键值对很多,所有的键值对所占内存大于物理可用内存,并且每个键值对被访问的情况也是不一样的。当内存用尽的时候,这时新来了一个键值对,这时我们要如何处理呢?从内存中删...

2018-11-03 22:53:31 3879

原创 斐波那契数列&青蛙跳台阶问题(剑指offer)

斐波那契数列大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。n&amp;lt;=39(百度对斐波那契数列的定义) 斐波那契数列 指的是这样一个数列:1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递推的方法定义:F(1)=1,F(2)=1, F(3)=2,F(n)=F(n-1)+F(n-2)(n&amp;gt;=4,n∈N*)...

2018-11-03 22:07:54 350

转载 10 道 Java 泛型面试题(转载)

本文转载自腾讯云社区Java中的泛型是什么 ? 使用泛型的好处是什么?这是在各种Java泛型面试中,一开场你就会被问到的问题中的一个,主要集中在初级和中级面试中。那些拥有Java1.4或更早版本的开发背景的人都知道,在集合中存储对象并在使用前进行类型转换是多么的不方便。泛型防止了那种情况的发生。它提供了编译期的类型安全,确保你只能把正确类型的对象放入集合中,避免了在运行时出现ClassCa...

2018-11-03 18:59:03 211

剑指offer题解(Java代码实现)

这个pdf文件主要记录了个人刷剑指offer的过程,一共67道题目,代码都是Java代码,希望对各位有所帮助!另外本文档已经开源在我的github上面了,没有积分的同学可以fork一下我的github仓库,顺便给个star,谢谢!https://github.com/Felixgitcode/JianZhi_Offer

2019-02-02

设计模式课程设计---使用5个以上不同的设计模式完成(java)

本系统使用Java代码实现,是设计模式的期末课程设计,共使用了5种设计模式,分别是**原型模式、单例模式、抽象工厂模式、代理模式、建造者模式。*,希望对各位有帮助

2018-12-19

空空如也

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

TA关注的人

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