自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Mick_^_^的博客

生命不止代码不朽

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

原创 Java类的加载机制(类加载和初始化顺序)

Java类加载机制中最重要的就是程序初始化过程,其中包含了静态资源,非静态资源,父类子类,构造方法之间的执行顺序。这类知识经常会出现在面试题中,如果没有搞清楚其原理,在复杂的开源设计中可能无法梳理其业务流程,是java程序员进阶的阻碍。 public class CodeBlockForJava extends BaseCodeBlock { { System.out.println("这里是子类的普通代码块"); } publi

2020-10-14 14:55:28 363 2

转载 面试官看完我手写的单例直接惊呆了!

转载自掘金:https://juejin.im/post/6877202342266175496前言单例模式应该算是 23 种设计模式中,最常见最容易考察的知识点了。经常会有面试官让手写单例模式,别到时候傻乎乎的说我不会。之前,我有介绍过单例模式的几种常见写法。还不知道的,传送门看这里:设计模式之单例模式本篇文章将展开一些不太容易想到的问题。带着你思考一下,传统的单例模式有哪些问题,并给出解决方案。让面试官眼中一亮,心道,小伙子有点东西啊!以下,以 DCL 单例模式为例。DCL

2020-10-12 11:44:57 86

转载 Java中volatile详解

絮叨这一篇也算是Java并发编程的开篇,看了很多资料,但是轮到自己去整理去总结的时候,发现还是要多看几遍资料才能完全理解。还有一个很重要的点就是,画图是加深印象和检验自己是否理解的一个非常好的方法。一、Volatile怎么念?看到这个单词一直不知道怎么发音英 [ˈvɒlətaɪl] 美 [ˈvɑːlətl]adj. [化学] 挥发性的;不稳定的;爆炸性的;反复无常的复制代码那Java中volatile又是干啥的呢?二、Java中volatile用来干啥...

2020-09-25 18:11:37 1464 5

原创 Java 静态代理、Java动态代理、Cglib动态代理

前言代理模式(Proxy Pattern),23种java常用设计模式之一。代理模式的定义:代理类对被代理对象提供一种代理以控制对这个对象的访问。代理类主要负责为委托类预处理消息、过滤消息、把消息转发给委托类,以及事后处理消息等。个人理解:在生活中我们常常把不必要的事情丢给别人去完成,而这些不必要的部分相当于他们代替我们完成的,这就相当于是代理模式。例如:1、明星与经纪人:就假设在和甲方谈商演的时候,影视明星只负责决定是否去演出,而经纪人就需要先去联系甲方并和甲方商定角色和报酬,然后将结果告诉影

2020-09-25 10:35:38 109

转载 40K+Star!Mall电商实战项目开源回忆录

转载自:https://juejin.im/post/6873254935560093709摘要最近看了下我的Github,发现mall项目已经突破40K+Star,有点小激动!记得去年8月的时候mall项目刚过20K+Star,时隔1年多已经增长到了40K+Star。今天跟大家聊聊mall项目的发展历程,希望对大家有所启发!最近情况Github上面有个Java Topic排行榜,mall项目目前排在第9位,有很多小伙伴早就发现了,这里附上地址:github.com/topics/jav

2020-09-17 15:24:56 255

原创 编程知识不错的博客网站推荐

1、掘金:https://juejin.im/2、简书:https://www.jianshu.com/3、CSDN:https://www.csdn.net/4、bugstack虫洞栈:https://bugstack.cn/5、codercc:http://www.codercc.com/backend/basic/juc/6、博客园:https://www.cnblogs.com/7、GitHub:https://github.com/8、w3school:https:/.

2020-09-17 12:38:55 948

转载 值得一看的好书

读不在三更五鼓,功只怕一曝十寒!岁月从不辜负奋斗的人,愿努力拼搏学习的你,都能收获美好的前程!承遇朝霞,年少正恰。 整装戎马,刻印风华。目录一、推荐-日常推荐优秀书籍 二、Java/Spring-16本提升基本功的书籍 三、DB-2本数据库优秀书籍 四、Redis-深入学习Redis 五、架构&设计-提升架构能力和编写优秀代码 六、号主原创书籍[免费下载]-收集优秀原创技术号主PDF书籍 七、其他系列-拓展学习技能增强个人能力 八、人性-...

2020-09-17 12:21:12 1287

转载 工作两年简历写成这样,谁要你呀!

转载自:https://bugstack.cn/一、前言最近有伙伴问小傅哥,我的简历怎么投递了都没有反应,心里慌的很呀。工作两年了目前的公司没有什么大项目,整天的维护别人的代码,有坑也不让重构,都烦死了。荒废我一身技能无处施展,投递的简历也没人看。我是不动物园里的猩猩,狒狒了!我要加班,我要996,我要疯狂编码,求给我个机会…在程序这条职业发展的道路上,如果想专心走技术,并不断提升自己。那么,选择进入一个有挑战项目和一个可以跟随学技术的人,是非常重要的。而这样的资源和人脉基本还是来自一些

2020-09-17 12:07:32 274

转载 一次代码评审,差点过不了试用期!

沉淀、分享、成长,让自己和他人都能有所收获!????

2020-09-17 11:40:39 332

原创 Java如何设计一个类

1. 类和成员最小化可访问性 问题 要区分设计良好的模块和设计不好的模块,最重要的因素在于,这个模块对于外部其他模块而言,是否隐藏其内部数据和其他细节。设计良好的模块会隐藏所有的实现细节,把它的API与它的实现清晰的隔离起来,模块之间只通过它们的API进行通信,那么,在设计类和成员时有怎样的设计原则? 解决 设计类和成员有这样几个基本原则: 尽可能使每个类或者成员不被外界访问,应该使用与你正在编写的软件的对应功能相一致的、尽可能最小的访问级别;对于成员(域、方法、嵌套类或者嵌套接

2020-09-17 10:42:17 4098

原创 Java 集合

大致分类:List、Set、Queue、MapIterableCollection 接口中继承 Iterable 接口。这个接口为 for each 循环设计、接口方法中有返回Iterator对象public interface Iterable<T> { Iterator<T> iterator(); default void forEach(Consumer<? super T> action) { Objec...

2020-09-16 20:36:37 118

原创 Java之集合

ListJava中常用的数据类型。List是有序的collection。一共有三个实现类ArrayList:最常用的list的实现类,内部通过数组实现,数组的缺点是每个元素之间不能有分隔,但数组的大小不能满足需要,需要增加存储能力,就要将已经有数组的数据复制到新的存储空间。适合随机查询,不利于删除,插入。 Vector:与ArrayList一样,也是通过数组来实现,不同的是它支持多线程的同步,即某一个时刻只有一个线程能够写vector,避免多线程同时写引起的数据不一致,当实现同步也...

2020-09-16 16:18:48 135

原创 HashMap:存储结构、扩容机制和线程不安全解决

1.什么是HashMap1.1 什么是map?1.key-value格式存储集合类 2.key必须唯一,无重复值 3.map是与collection同一个等级的接口复制代码1.2 什么是hash?1.把任意长度的输入,通过(hashCode()方法),变换成固定长度的哈希值(hashCode,这种函数就叫做**哈希函数**,而**计算哈希值的过程就叫做哈希**。 2.哈希的主要应用是哈希表和分布式缓存。 3.哈希函数是哈希算法的一种实现。 参考:https://b

2020-09-16 15:54:40 212

原创 dubbo 支持的9种协议

文章目录一、9种协议 1、dubbo 协议 (默认) 2、rmi 协议 3、hessian 协议 4、http 协议 5、webservice 协议 6、thrift 协议 7、memcached 协议 8、redis 协议 9、rest ( 就是 RestFull) 二、多协议配置 不同服务使用不同协议 同时使用多种协议 三、面试题:Dubbo支持dubbo、rmi、hessian、http、webservice、thrift、redis等多种协

2020-09-11 16:31:13 300

转载 Service Mesh服务网格

Service Mesh(服务网格)会是今年微服务生态的主角吗?从趋势来看,众多企业正在将这项理微服务复杂性的技术/工具,搬进他们的IT“火药库”之中。什么是Service Mesh?根据Linkerd CEO William Morgan定义,Service Mesh是用于处理服务间通信的基础设施层,用于在云原生应用复杂的服务拓扑中实现可靠的请求传递。在实践中,Service Mesh通常是一组与应用一起部署,但对应用透明的轻量级网络代理。Service Mesh与传统基础设施层不同之处在

2020-09-11 16:05:10 158

转载 SOA架构、微服务架构、Service Mesh分析

本文目标:搞清楚什么是SOA架构、微服务架构,两者区别是什么?Service Mesh是什么,跟微服务有什么关系?一、SOA架构提到SOA架构(Service-Oriented Architecture,面向服务架构),就一定会讲到ESB(Enterprise Service Bus,企业服务总线)。ESB作为SOA中的核心概念,首先我们就来看看ESB是什么,以及它在SOA架构中扮演的角色。在企业计算领域,企业服务总线是指由中间件基础设施产品技术实现的、 通过事件驱动和基于XML消息引擎,为更

2020-09-11 16:02:29 766

转载 PaaS 平台的架构、现状及未来

说起云计算平台,大家可能都知道有IaaS、PaaS和SaaS。IaaS和SaaS的概念大部分人都能很清晰的认知。说到IaaS大多会讲:存储、计算和网络这三大基础资源,说到SaaS大家会想到各种类型的应用,但是说到PaaS就没有一个非常明确的共识。做大数据平台的厂商会数自己的大数据平台是PaaS,做容器云的厂商会数自己的容器平台是PaaS,甚至传统的IaaS厂商会数自己的平台也是PaaS。那么PaaS究竟是什么呢?PaaS的定义云计算相关概念我们来说PaaS的定义时就要先理解什么是云计算。云计算是

2020-09-11 15:53:09 5332

原创 云原生(Cloud Native)概念与实践

云原生介绍所谓云原生,它不是一个产品,而是一套技术体系和一套方法论,而数字化转型是思想先行,从内到外的整体变革。更确切地说,它是一种文化,更是一种潮流,是云计算的一个必然导向。云原生概念云原生(Cloud Native)的概念,由来自Pivotal的MattStine于2013年首次提出,被一直延续使用至今。这个概念是Matt Stine根据其多年的架构和咨询经验总结出来的一个思想集合,并得到了社区的不断完善,内容非常多,包括DevOps、持续交付(Continuous Delivery)、

2020-09-11 15:41:47 1647

原创 java连接ftp服务器

使用Java连接Ftp并且实现文件的上传下载1.使用maven工程的话需要引入Maven的pom <!--连接ftp使用--> <dependency> <groupId>commons-net</groupId> <artifactId>commons-net</artifactId> <version>3.3&

2020-09-11 14:03:27 3976 3

原创 Java连接Redis

首先使用Java连接Redis分两种,一种是直接使用Jedis单连接,另一种是使用JedisPool连接池。一、第一种使用Jedis单连接1、引入jar包 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version>

2020-09-01 15:25:21 213

原创 Jedis常用方法API

一、首先在Maven的pom文件中加入依赖 <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> <type>jar</type> <scope>compile</

2020-09-01 11:12:45 210

转载 java中哪些集合是线程安全的,哪些是线程不安全的

1. 常见集合这里自己总结了一些比较常见的java集合,对于这些集合的特点和区别后期博客中会进行总结介绍:2.什么叫“集合是线程不安全的”首先我们来了解一下什么叫集合是线程不安全的:当多个并发同时对非线程安全的集合进行增删改的时候会破坏这些集合的数据完整性;例如:当多个线程访问同一个集合或Map时,如果有超过一个线程修改了ArrayList集合,则程序必须手动保证该集合的同步性。3. 线程安全和线程不安全的集合Vector、HashTable、Properties是线程安全的;

2020-09-01 10:18:32 3455 2

转载 两个栈实现一个队列

用栈实现队列1、栈的特点栈的特点是先进后出,进出元素都是在同一端(栈顶)。入栈:出栈:2、队列的特点队列的特点是先进先出,出入元素是在不同的两端(队头和队尾)。入队:出队:3、两个栈实现队列我们拥有两个栈,可以让其中一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老的元素。队列的主要操作无非有两个:入队和出队。在模拟入队操作时,每一个新元素都被压入到栈A当中。 让元素1“入队”:...

2020-09-01 10:04:14 210

原创 Linux上防火墙操作

CentOS7默认的防火墙不是iptables,而是firewalle.安装iptable iptable-service#先检查是否安装了iptablesservice iptables status#安装iptablesyum install -y iptables#升级iptablesyum update iptables#安装iptables-servicesyum install iptables-services禁用/停止自带的firewalld服务#停止fire.

2020-08-31 17:59:22 216

原创 Linux系统中安装Redis

第一步:安装Redis第一步:下载redis安装包地址:https://www.redis.net.cn/download/ 这里选择比较稳定的Redis4.0版本第二步:解压压缩包tar -zxvfredis-4.0.11.tar.gz第三步:yum安装gcc依赖yum install gcc第四步:跳转到redis解压目录下cd /home/redis-4.0.11第五步:编译安装make MALLOC=libc  在/usr/..

2020-08-31 17:15:48 158

转载 Twitter的分布式自增ID算法snowflake (Java版)

概述分布式系统中,有一些需要使用全局唯一ID的场景,这种时候为了防止ID冲突可以使用36位的UUID,但是UUID有一些缺点,首先他相对比较长,另外UUID一般是无序的。有些时候我们希望能使用一种简单一些的ID,并且希望ID能够按照时间有序生成。而twitter的snowflake解决了这种需求,最初Twitter把存储系统从MySQL迁移到Cassandra,因为Cassandra没有顺序ID生成机制,所以开发了这样一套全局唯一ID生成服务。结构snowflake的结构如下(每部.

2020-08-31 11:30:46 173

原创 CentOS 7 命令行安装 Oracle 11gR2

目的:在华为云买了个云服务器,是CentOs7.6的系统,打算在上面装一个Oracle11g的数据库,之前没有在Linux系统上装过Oracle数据库,所以各种百度和实验,终于搞成了,写一篇博客供大家参考,尽量少踩坑。一、安装步骤1、Oracle 11gR2 64位 Linux版安装包下载地址:https://www.oracle.com/cn/database/enterprise-edition/downloads/oracle-db11g-linux.html2、安装依赖包...

2020-08-26 16:18:42 1086

转载 微服务与SOA区别

SOA(面向服务的架构):面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。微服务:微服务架构是一种将单个应用程序作为一套小型服务开发的方法,每种应用程序都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务是围绕业务功能构建的,可以通过全自动部署机制

2020-08-19 14:49:47 254

原创 Spring面试,IoC和AOP的理解

spring 的优点?1.降低了组件之间的耦合性 ,实现了软件各层之间的解耦2.可以使用容易提供的众多服务,如事务管理,消息服务等3.容器提供单例模式支持4.容器提供了AOP技术,利用它很容易实现如权限拦截,运行期监控等功能5.容器提供了众多的辅助类,能加快应用的开发6.spring对于主流的应用框架提供了集成支持,如hibernate,JPA,Struts等7.spring属于低侵入式设计,代码的污染极低8.独立于各种应用服务器9.spring的DI机制降低了业务对象...

2020-08-17 17:53:44 319

转载 Tomcat的性能与最大并发量

转载来自:http://blog.chinaunix.net/uid-7374279-id-4470247.html 当一个进程有500个线程在跑的话,那性能已经是很低很低了。Tomcat默认配置的最大请求数是150,也就是说同时支持150个并发,当然了,也可以将其改大。 当某个应用拥有250个以上并发的时候,应考虑应用服务器的集群。具体能承载多少并发,需要看硬件的配置,CPU越多性能越高,分配给JVM的内存越多性能也就越高,但也会加重GC...

2020-08-17 16:50:59 1210

转载 Java 定时任务的几种实现方式

介绍三种实现方式:JDK 自带的定时器实现Timer类 这个类允许你调度一个java.util.TimerTask任务。主要有以下几个方法:void schedule(TimerTasktask, Datetime) 安排在指定的时间执行指定的任务。 void schedule(TimerTasktask, DatefirstTime, longperiod) 安排指定的任务在指定的时间开始进行重复的固定延迟执行...

2020-08-17 15:07:43 248

原创 数据库事务的四大特性(ACID)

ACID,指数据库事务正确执行的四个基本要素的缩写。包含:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)。一个支持事务(Transaction)的数据库,必需要具有这四种特性,否则在事务过程(Transaction processing)当中无法保证数据的正确性,交易过程极可能达不到交易方的要求。一.事务定义:所谓事务,它是一个操作序列,这些操作要么都执行,要么都不执行,它是一个不可分割的工作单位。⑴ 原子性(Atom

2020-08-07 14:57:28 1441

原创 客户端禁止 cookie,session 还能用吗?

一般默认情况下,在会话中,服务器存储 session 的 sessionid 是通过 cookie 存到浏览器里。如果浏览器禁用了 cookie,浏览器请求服务器无法携带 sessionid,服务器无法识别请求中的用户身份,session失效。但是可以通过其他方法在禁用 cookie 的情况下,可以继续使用session。通过url重写,把 sessionid 作为参数追加的原 url 中,后续的浏览器与服务器交互中携带 sessionid 参数。 服务器的返回数据中包含 sessionid,

2020-08-07 12:47:32 1486

转载 @RequestParam @RequestBody @PathVariable 注解详解

简介:handler method 参数绑定常用的注解,我们根据他们处理的Request的不同内容部分分为四类:(主要讲解常用类型)A、处理requet uri 部分(这里指uri template中variable,不含queryString部分)的注解: @PathVariable;B、处理request header部分的注解: @RequestHeader, @CookieValue;C、处理request body部分的注解:@RequestParam, @Request...

2020-08-07 12:42:03 634

转载 @RequestBody和@RequestParam区别

@RequestParam注解@RequestParam接收的参数是来自requestHeader中,即请求头。RequestParam可以接受简单类型的属性,也可以接受对象类型。@RequestParam有三个配置参数:required表示是否必须,默认为true,必须。 defaultValue可设置请求参数的默认值。 value为接收url的参数名(相当于key值)。@RequestParam用来处理Content-Type为application/x-www-fo...

2020-08-07 12:07:13 721

原创 Thread的run()与start()的区别

java的线程是通过java.lang.Thread类来实现的。VM启动时会有一个由主方法所定义的线程。可以通过创建Thread的实例来创建新的线程。每个线程都是通过某个特定Thread对象所对应的方法run()来完成其操作的,方法run()称为线程体。通过调用Thread类的start()方法来启动一个线程。在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。  第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。  第二是就绪状态。当调用了线程

2020-08-07 10:51:24 148

转载 java中的对于多态的理解

面向对象: 类:具体的对象抽象而来,可以抽象的表示一类具有相同特征和行为的对象 对象:是由类的实例化而来,对象是类的一个实例java中关于多态的理解打个比方 父亲person有行为这个方法,里面包括几个动作:吃饭,睡觉,走路 父亲有三个儿子,三个儿子都继承了父亲的行为方法,所以三个儿子都有吃饭,睡觉,走路这些动作,但是三个儿子又分别有自己的动作--大儿子A会弹吉他,二儿子B会唱歌,三儿子C会打鼓 ...1.Person person = new A(); 不是父类对...

2020-08-07 09:35:04 133

原创 ArrayList 和 LinkedList 的区别

ArrayList 和 LinkedList 的区别ArrayList基于动态数组实现的非线程安全的集合;LinkedList基于链表实现的非线程安全的集合。 对于随机index访问的get和set方法,一般ArrayList的速度要优于LinkedList。因为ArrayList直接通过数组下标直接找到元素;LinkedList要移动指针遍历每个元素直到找到为止。 新增和删除元素,一般LinkedList的速度要优于ArrayList。因为ArrayList在新增和删除元素时,可能扩容和复制数组;

2020-08-07 09:31:52 124

原创 Nginx的作用

Nginx能做什么——反向代理——负载均衡——HTTP服务器(动静分离)——正向代理反向代理反向代理应该是Nginx做的最多的一件事了。反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。简单来说就是真实的服务器不能直接被外部网络访问,所以需要一台代理服务器,而代理服务器能被外部网络访问的同时又跟

2020-08-06 10:02:33 151

转载 Redis五种用途

简介Redis是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点:- Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。- Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。- Redis支持数据的备份,即master-slave模式的数据备份。五种用途1.全页面缓存整页缓存。如果你正在使用服务器端呈现的内容,...

2020-08-06 09:27:20 7247

LINUX教程:.pdf

Linux初级入门的一些命令和在Linux系统下一些软件的安装教程,对于初学Linux系统的小白很好用

2020-06-02

Java基础知识总结

Java基础知识整理,非常清晰有理。

2018-11-07

空空如也

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

TA关注的人

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