自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

muzi木子

把简单的事做好,就是不简单! 把平凡的事做好,就是不平凡!

  • 博客(170)
  • 资源 (1)
  • 收藏
  • 关注

原创 2021-06-27数据结构与算法基础

1. 数据结构1.1 数据结构是什么?数据结构是计算机存储、组织数据的一种方式。数据结构是指相互存在一种或多种特定关系的数据元素集合、进行选择的数据结构可以带来更高的程序运行或存储效率。数据结构与高效的检索算法和索引技术有关。1.2 常见的数据结构有哪些?**数组(Array):**数组是最基本的数据结构,它是将具有相同类型的若干变量有序的组织在一起。**栈 (Stack):**栈是一种特殊的线性表,它只能在一个固定的端点进行数据节点的插入和删除操作。栈按照先进先出的原则来存储数据。也就

2021-06-27 13:39:00 516 1

原创 【心得分享】 2. 设计模式——单一职责原则

2. 设计模式——单一职责原则2.1 什么是单一职责单一职责原则(全称:Single Responsibility Princile,简称SRP),它表示一个类只具有某种职能,比如人又生理需求(吃、喝、睡)、生活需求(工作、锻炼),生理需求和生活需求分别当做两个类,他们里边任意方法的改变都不会影响另一个类的正常运行,如果一个类里边具有多种职能,那么意味着一种职能的变化可能会影响另一种职能,那么这个时候就应当将它们才分成两个负责不同职能的类。又比如,我们常用的DAO模式,就是采用的单例模式,比如Use

2021-01-30 16:20:42 795

原创 【心得分享】1.设计模式概述

1.设计模式概述1.1 为什么需要设计模式因为软件开发中,存在很多相似的场景,不管在什么项目(OA、CRM、电商等),而设计模式就是为这些场景提供一种通用的解决方案。设计模式,可以使得我们的代码更加具有可扩展性与可维护性,可以使得代码松耦合,提高代码的可重用性。使得代码更容易理解。1.2 设计模式设计原则(即设计模式是根据什么原则来设计的)设计模式共有七大原则:单一职责原则开闭原则依赖倒置原则里氏替换原则接口隔离原则迪米特法则合成复用法则...

2021-01-30 15:47:33 544

原创 【心得分享】-- 微服务架构演变过程

1. 微服务架构演变过程1.1 传统的架构所有的业务都写在一个工程里边(ALL IN ONE),开发起来比较简单,部署也比较简单,但是程序的耦合度高,业务与业务之间代码耦合在一起,不利于团队开发!1.2 分布式架构就是将原来的单体架构,拆分成多个负责相关业务的服务(降低业务之间的耦合度),每个服务拥有自己的相关资源(数据库、缓存、消息队列),各个服务间通过RPC远程调用进行通信(http、dubbo、grpc)。​1.2.1 SOA面向服务架构什么是面向服务架构呢?面向服务架构即S

2020-12-26 18:41:36 256

原创 【开发技巧】-- MarkDown使用文档

1. MarkDown使用文档1.1 什么是MarkDown?MarkDown是一种非常简单的标记语言,它非常适合于程序员使用因为它支持很多非常好用的基础语法,并且它非常方便使用。1.2 为什么要使用MarkDown编写文档?说到编写文档我们最先想到的一定会是Word文档,但是对于我们程序员而言,我们的文档中往往都会有代码块、图片应用等一些文档元素,而Word文档对于代码块的处理支持的不是那么好,而MarkDown为我们解决了这样的问题,它支持插入代码高亮显示。1.3 快速入门MarkDown1

2020-08-03 00:04:08 291

原创 【心得分享】-- SQL执行分析以及通过索引SQL性能优化的方法

1.1 MySQL简介MySQL是一个关系型数据库,它是由MySQL AB公司主要研发的一款开源免费的数据库产品,现在隶属于Oracle,MySQL主要由:连接层、处理层、引擎层、文件系统层四个部分组成,这里需要注意的是MySQL的存储引擎是可拔插的,也就是说我们可以通过自己的需求选择合适的数据库存储引擎。1.2 MySQL的存储引擎在MySQL5.5之前的版本,MySQL默认使用的是MyISAM存储引擎,在5.5之后,MySQL默认的存储引擎变更为了InnoDB。MyISAM与InnoDB之间有

2020-07-05 23:46:42 221

原创 【心得分享】-- 类的加载机制深度解析

1. 类的加载机制深度解析1.1 类的加载运行过程如上图所示,Java中的类的加载靠的是类加载器实现的,其中通过loadClass进行类加载的时候会经历:加载》》验证》》准备》》解析》》初始化几个步骤。加载:查找磁盘中的类的字节码文件并通过io操作读入,只有类被真正使用的时候才会被加载验证:验证字节码是否符合规范准备:为静态变量分配内存空间,并且赋上默认的初始值。int类型赋值0、boolean类型赋值false、对象类型赋值null解析:将符号引用(静态方法)转换为直接引用初始化:为静态

2020-07-04 18:00:39 199

原创 【心得分享】-- 关系型数据库中七种常见的join(连接)查询

1.1 什么是join查询?join查询,即连接查询,当我们需要查询两张或两张以上表的关联数据的时候就需要使用连接查询,数据库中的连接查询分为:内连接查询(INNER JOIN)、左外连接查询(LEFT OUTER JOIN 或 LEFT JOIN)、右连接查询(RIGHT OUTER JOIN或RIGHT JOIN)以及全连接查询(FULL OUTER JOIN)。1.2 内连接、外连接、全连接查询之间的区别是什么?类型描述图示INNER JOIN内连接查询,会把关联表中,有

2020-06-29 18:23:15 1672 1

原创 【经验分享】-- API安全设计-接口安全加密传输(对称加密与非对称加密)

1.1 为什么要对API接口进行加密?因为http协议是明文传输,它是不够安全的,比如进行get请求的时候,请求参数会直接附加在URL后边,即使是post请求其实也是不够安全的,如果用户连接了不安全的网络,这个时候黑客可能可以通过抓包工具直接获取请求信息,并且黑客可能对请求参数进行非法篡改,所以API接口加密就显得至关重要了!1.2 常见的接口加密方式有哪些?使用https协议(相比较与http协议,https协议加入了ssl证书,并且https是基于ssl的密文传输方式)、参数加密使用对称加密或非

2020-06-28 15:16:22 3623

原创 【开发技巧】-- SpringBoot快速整合ActiveMQ

1.1 什么是ActiveMQ?ActiveMQ是由Apache开源组织维护的一个消息中间件项目,它是基于JMS规范开发的一个消息中间件,它是由Java语言编写的。1.2 为什么要使用ActiveMQ?在分布式/微服务的系统中,有一部分业务是需要跨越多个服务进行执行的,所以会设计到服务与服务之间的调用,因为要跨越多个服务所以业务处理速度上会有些慢,而如果整合ActiveMQ的话可以将需要执行的业务信息放入队列中,这样服务可以快速响应。通过整合ActiveMQ可以实现:业务的解耦、流量的削峰、消息的异

2020-06-17 18:08:36 210

原创 【心得分享】-- 秒杀业务的设计与实现

1.1 业务背景随着电子商务的发展,网上购物的用户越来越多,各大网络商家为了达到促销的目的,通常会将一些商品的价格设置为超低的价格,这个时候就导致大量用户前来抢购这一商品。 正式因为这样的促销活动,引发了一次又一次的技术架构革新,并且引起了大量关于解决高并发、高性能、高可用解决方案的讨论。1.2 秒杀业务存在的挑战1.2.1 服务的可用性(大量的请求可能会导致应用服务器以及数据库服务负载过重)1.2.2 数据的一致性和完整性(因为系统需要在一瞬间就处理大量的请求,所以如果稍不谨慎就可能导致数据不一致

2020-06-09 17:27:23 397

原创 【Java高频面试题】--类的初始化过程以及实例的初始化过程

1.1 类的初始化过程要创建一个类的实例,必须加载和初始化该类。main()方法所在的类,会被优先加载并初始化子类初始化前,会先加载并初始化它的父类初始化一个类,其实质上就是执行了<client>()方法<client>()方法包含了,静态变量显式赋值代码以及静态代码块静态变量显式赋值代码以及静态代码块的执行顺序,由它们的先后顺序执行,先声明的先执行<client>()方法只会执行一次如以下代码://静态变量显式赋值代码private

2020-05-11 15:26:21 492 2

原创 【Java高频面试题】-- 单例模式

1. 什么是Singleton?Singleton,即单例,在Java中表示的是单例模式,所谓的单例模式,指的就是在程序中,有且仅有一个该实例对象。单:唯一,单独。例:实例对象。2. 单例模式有几种创建方式?2.1 饿汉式(在程序启动过程中,就开始创建实例对象,饿汉式是线程安全的,它的缺点是不管程序是否需要该实例都会创建)2.1.1 直接创建实例对象(简介明了)将构造方法私有化。提供一个static修饰的常量对象。package com.qingyun.demo.single.test

2020-05-11 11:27:04 351 1

原创 【Java高频面试题】--Java运算执行流程分析

1. Java高频面试题(一)-- Java运算流程分析 public static void main(String[] args) { int i=1; i=i++; int j=i++; int k=i+++i*i++; System.out.println("i="+i); System.out.println("j="+j); System.out.println("k=

2020-05-11 11:10:45 306 7

原创 【面试题解析】-- 20200429Java软件开发工程师面试题解析

1. 如果让你对一个线上应用进行优化,你有哪些方案?分析哪些数据是热点数据,然后对这些数据做缓存处理。对内容不变动或很少变动的页面做静态化处理。跟踪程序中是否存在慢SQL查询,如果有则对SQL进行优化。2. 你如何实现访问限流操作?用户限流通常都是在网关层进行实现的,一般我们会在nginx中对用户访问进行控制,实现用户限流可以使用以下两种算法:令牌桶算法、漏桶算法。3. redis...

2020-04-30 10:23:42 204

原创 【面试题解析】-- 20200428Java软件开发工程师面试题解析

1. 什么是SSO?SSO(Single Sign On,单点登录),它指的是一次性对用户登录进行鉴别,之后在访问与该身份认证平台相关联的系统,都能够不用再次登录即可访问,认证中心起到用户身份校验以及发放令牌的作用。2. 你所了解的微服务技术有哪些?微服务基础框架:Duoob、SpringCloud服务注册与发现:Eureka、Nacos、Zookeeper服务调用:Restful、R...

2020-04-29 10:09:49 296

原创 【面试题解析】-- 20200427Java软件开发工程师面试题解析

1. 什么是熔断器?它的工作原理是什么?熔断器,是微服务系统中的一种链路保护机制,它可以有效地防止级联故障。熔断器的工作原理以Hystrix为例,首先我们在程序初始化初期就设置了允许请求失败的一个阈值,当在一定时间内请求失败达到这个阈值就会触发熔断,经过一段时间后熔断器会半开半闭,如果此时后端服务恢复,那么熔断器失效,否则重新等待相同时间。2. 谈谈什么是单点故障?单点故障是在分布式系统中,...

2020-04-28 10:58:15 213

原创 【面试题解析】--20200424Java软件开发工程师面试题解析

1. 在Spring中,为什么默认将Bean设置为单例?减少新生成实例所需要的性能消耗。可以减少JVM回收垃圾的次数。可是使用获取JavaBean更快,因为第一次获取需要查找,后面在获取都是从缓存中直接获取。2. Spring中对象的作用域有哪些?单例,在整个应用程序中只会创建一个。原型,每次获取都会重新创建。会话,为每一次会话创建一个实例。请求,没每个请求创建一个实例。...

2020-04-25 10:49:43 150

原创 【面试题解析】-- 20200423Java软件开发工程师面试题解析

1. 在涉及到金钱交易的计算,在程序中你是如何处理的?在涉及到金钱交易的计算时,在Java中通常可以使用BigDecimal类型,在Java中BigDecimal是可以用于高精度计算的,它不会向Double等数据类型一样会丢失精度。2. Java中实现多线程的方式有哪几种?Java中实现多线程的方式有两种,一种是继承Thread类,一种是实现Runnable接口,因为Java语言是一门单继承...

2020-04-24 10:46:01 157

原创 【面试题解析】-- 20200422Java软件开发工程师面试题解析

1. 你在软件开发的过程中,遇到过什么问题?你是如何解决这个问题的?比如在进行软件开发时出现的乱码问题,如果是在对请求进行处理时,请求乱码,那么可以通过request的setCharacterEncoding方法对请求进行统一编码,从而解决乱码问题。2. 什么是继承?继承是在已经存在的类上进行的,它就是指将已存在类的内容作为自己的内容,并且可以加入新的内容。继承是子类自动共享父类成员的一种方...

2020-04-23 10:29:44 166

原创 【面试题解析】-- 20200421Java软件开发工程师面试题解析

1. 什么是ORM?常见的ORM框架有哪些?ORM即对象关系映射,一般指的是数据库字段与对象属性之间的映射关系,常见的ORM框架有MyBatis、Hibernate等。2. 谈谈mybatis有什么优势?mybatis是一个半自动化的ORM框架,它要求我们自行编写SQL语句,所以mybatis的灵活性比较好,并且使用mybatis大大简化了我们的开发。3. 什么是MVC设计模式?MVC...

2020-04-22 09:51:46 116

原创 【面试题解析】-- 20200420Java软件开发工程师面试题解析

1. 你知道的集合类有哪些?请简要介绍其中两种比如List和Set,这两个集合类都继承自Collection类,List在父类的基础上增加有序的特性,Set在父类的基础上增加了唯一的特性。2. Class.forName()的作用是什么?Class.forName()可以通过传入的字符串参数搜索并加载指定类,如果被加载的类在之前已经加载过了那么将直接返回实例对象,否则将按照类的委托机制,搜索...

2020-04-21 10:04:40 115

原创 【面试题解析】-- 20200417Java软件开发工程师面试题解析

1. 在程序中大量使用session会导致什么后果?session需要占据服务器端内存,如果session使用得过多,会导致服务器端负载过重,严重的话可能导致服务器宕机。2. cookie与session之间有什么区别?保存位置上:cookie是保存在客户端浏览器上的,session是保存在服务器端的。安全性上: cookie不是很安全,别人可能通过某种手段获取cookie性能上: co...

2020-04-18 10:11:26 120

原创 【面试题解析】-- 20200416Java软件开发工程师面试题解析

1. String和StringBuffer之间有什么区别?String是不可被更改的字符串数据,StringBuffer是动态可变化的字符串数据。2. Java虚拟机是如何加载类文件的?Java虚拟机加载类文件,靠的是ClassLoader与它的子类共同实现的,ClassLoader是Java程序运行时一个非常重要的系统组件。3. 什么是垃圾回收?在Java中,垃圾回收指的是JVM提供...

2020-04-17 11:03:48 120

原创 【面试题解析】-- 20200415Java软件开发工程师面试题解析

1. ThreadLocal的作用是什么?ThreadLocal一般被称为线程本地变量,它是一种特殊的线程绑定机制,它可以将变量与线程绑定在一起,为每一个线程维护一个独立的变量副本,它可以将对象的可见性范围限制在同一个线程内。2. 多个线程产生死锁了该如何处理?对竞争资源引入序号,线程只能先获取序号较小的资源,然后才能获取序号较大的资源。在Java代码中,增加同步关键字的使用。‘3....

2020-04-16 09:34:51 114

原创 【面试题解析】-- 20200414Java软件开发工程师面试题解析

1. 请你谈谈服务雪崩?服务雪崩一般发生在微服务项目中,指的是一个服务的不可用,而导致其他需要依赖它的服务也不可用进而导致级联故障或整个系统不可用。2. 什么是SpringData?SpringData的使命是在保证底层存储特殊性的前提下,为数据访问提供一个熟悉的,一致性的,基于Spring的数据访问编程模型。3. 请你谈谈你对位运算的理解位运算包含了左移运算和右移运算,向右移是当前值与...

2020-04-15 10:01:08 142

原创 【面试题解析】-- 20200413Java软件开发工程师面试题解析

1. SOA与SOAP分别是什么?SOA是一种面向服务的架构,它就是将相同的业务逻辑抽取出来组成一个单独的服务。SOAP是WebService面向服务协议,它采用xml进行数据交互。2. 微服务与SOA有什么区别?微服务,是团队级别的实现,微服务就是将一个系统拆分成多个服务,微服务集成简单。SOA,是企业级的实现,它指的是一个服务由多个子系统组成,它是集成式服务。3. 什么是RPC远程...

2020-04-14 10:12:11 92

原创 【面试题解析】--20200411Java软件开发工程师面试题解析

1. 你在项目的什么地方使用到了AOP?权限控制、日志记录,权限控制和日志记录,是系统中两个非常重要的功能,基本上也是每个功能模块会涉及到的功能,所以将这些功能抽取出来,通过AOP实现。2. spring、springmvc、springboot三者之间的区别是什么?spring是一个轻量级的,开放源代码的框架,它提供了AOP和IOC两大核心,用以简化开发,SpringMVC是Spring提...

2020-04-13 09:36:47 153

原创 【面试题解析】-- 20200410Java软件开发工程师面试题解析

1. 什么是缓存穿透?如何解决缓存穿透?所谓的缓存穿透,指的就是因为在数据库中不存在某行数据,然后在缓存中也不存在对应key值,导致请求这行数据时总是直接访问数据库。解决缓存穿透,只需要在数据库访问后,如果没有查询到指定值,就保存一个空值到缓存中即可。2. 什么是缓存雪崩?如何解决缓存雪崩?所谓的缓存雪崩,指的是多个缓存key几乎在同一时间失效。要解决缓存雪崩,只需要为每个缓存设置不一样的过...

2020-04-11 09:47:56 107

原创 【面试题解析】-- 20200409Java软件开发工程师面试题解析

1. 负载均衡与反向代理的作用是什么?负载均衡,就是将多个访问同一地址的请求,通过一定的策略将请求分发到指定服务器上,而反向代理,可以将一个请求转发到真实的应用服务器。2. 你在使用缓存的时候是否有遇到过什么问题?你是如何解决这个问题的?比如缓存穿透,缓存穿透是由于在数据库中没有某个key的指定数据行,然后在缓存中也不存在该key,所以导致请求直接访问数据库,而给数据库带来压力。要解决这个问...

2020-04-10 10:04:32 88

原创 【面试题解析】-- 20200408Java软件开发工程师面试题解析

1. 什么是线程池?线程池,其实质上就是一个存放对象池,为了提高程序的效率,在程序初始化初期就创建了一定数量的线程对象,保存到线程池中,之后要使用多线程,直接从线程池中取出一个线程对象即可。2. 你是否用过nosql?为什么要使用?NoSQL(Not Only SQL,不仅仅是SQL),即非关系型数据库,常见的有Redis、Memcache、ES等,使用缓存的目的是为了提高程序的效率,减轻数...

2020-04-09 08:51:02 94

原创 【面试题解析】-- 20200407Java软件开发工程师面试题解析

1. 在Java中你如何实现对象的序列化?所谓的序列化就是指将Java对象转换成字节流,或者是将字节流转换成一个Java对象,要在Java中实现序列化非常简单,只需要实现Serializeable接口即可。2. Java中有哪几种形式的流?根据流的方向可分为:输入流(InputStream)、输出流(OutPutStream)根据流的类型可分为:字节流、字符流3. 面向对象编程的特征...

2020-04-08 09:49:58 126

原创 【开发技巧】-- 一篇女朋友也能看懂的Spring整合第三方支付(微信支付-扫码支付实现篇)

1.1 为什么要在项目中使用微信支付?众所周知,支付宝与财付通(微信支付)是如今第三方支付的两大领头企业,同是微信是一个拥有大量用户群体的一个软件,在项目中整合微信支付在一定程度上可以方便用户购物支付。1.2 如何在Spring项目(SpringBoot)中整合微信支付?1.2.1 前置准备下载微信支付官方SDK,进行相关配置修改(比如自动装配,以适应SpringBoot开发环境)我这...

2020-04-07 10:39:21 1296 7

原创 【面试题解析】-- 20200403Java软件开发工程师面试题解析

1. 请说明一下Spring中BeanFactory和ApplicationContext的区别是什么?BeanFactory是Spring中比较原始的工厂类,并且它无法支持Spring中的插件,比如AOP实现的功能。ApplicationContext是BeanFactory的子类,它基本上替代了BeanFactory的所有功能,并且它以一种更面向框架的方式对上下文进行分层和继承,并且在此基...

2020-04-07 09:09:42 163

原创 【面试题解析】-- 20200402Java软件开发工程师面试题解析

1. 什么是单点登录?单点登录又称SSO(Single Sign On),指的是用户在多系统群的某个系统登录,之后再访问其它系统无需再次登录授权便可访问。2. 你如何实现单点登录?单点登录的实现需要有Client,还要有Server,在Client中需要拦截系统中未登录的用户请求,并跳转至认证中心,接收并保存认证中心发送的令牌,当用户再次登录时校验token的有效性。Server也就是认证中...

2020-04-03 09:33:50 292

原创 【开发技巧】-- 什么你还在使用本地作为文件保存服务器?本文将带你了解,如何使用SpringBoot优雅的将文件上传至阿里云OSS、FastDFS(分布式文件系统)

1.1 业务背景当今互联网项目,需求日渐增多,并且应用服务器的压力也日渐增大,这时就引入了分布式系统的概念,然后又有了动静分离,即动态资源与静态资源分开,使后端的应用服务器专注业务请求的处理,并降低因为请求静态资源而为应用服务器带来的压力。1.2 文件上传的实现方式有哪些?直接上传到应用服务器(缺点:增加应用服务器的压力)。通过搭建私有云,比如通过FASTDFS搭建一个分布式文件系统。...

2020-04-02 16:25:55 1492 10

原创 【面试题解析】-- 20200331Java软件开发工程师面试题解析

1. ClassLoader是如何加载类的?主要靠的是三个类加载器:BootStrap ClassLoader(启动类类加载器)、Extentions ClassLoader(扩展类加载器)、APP ClassLoader(系统类加载器),然后通过类的委托机制搜索并加载相关类。2. 谈谈你对Spring的理解Spring是一个开源的轻量级的框架,它的主要核心是AOP、IOC、DI,它可以很容...

2020-04-01 09:29:32 274

原创 【面试题解析】-- 20200330 Java软件开发工程师面试题解析

1. 什么是MVC设计模式?MVC设计模式是一种架构风格,就是将程序拆分成,Model(模型)、View(视图)、Controller(控制器)这三个部分。2. MVC设计模式有什么优点?有利于开发中的分工。可以提高各个组件之间的可重用性。各个组件各司其职,互不干扰。3. SpringBoot有什么优点?开箱即用,无须外部容器支持。提供了大量的启动器,能够大大提高开发效率。...

2020-03-31 10:44:12 273

原创 【面试题解析】-- 20200328Java软件开发工程师面试题解析

1. 为什么函数不能根据返回类型来区分重载?在Java中,重载的概念是:在同一个类中,方法名相同,参数列表完全不同的方法。如果我们声明返回值不同、参数列表完全相同的两个方法,那么程序将不知道该调用哪个方法,所以我们不能根据返回值类型区分重载。2. 在开发中遇到过内存溢出么?原因有哪些?解决方法有哪些?引起内存溢出的原因有很多种,常见的有以下几种:内存中加载的数据量多于庞大,如一次从数据库...

2020-03-30 09:11:40 208

原创 【面试题解析】-- 20200327Java软件开发工程师面试题解析

1. http 的长连接和短连接有什么区别?http长连接在http1.1是默认开启的,而短连接在http1.0是默认开启的,长连接是客户端与服务器端建立连接后长时间保持连接状态,而短连接是每进行一次http操作就建立一次连接。2. http 常见的状态码有哪些?200请求成功。302请求重定向。404资源未找到。403请求方法不正确。405请求参数不正确。500服务器内部错误。...

2020-03-28 09:35:20 350

mysql-connector-java-5.1.44.rar

mysql-connector-java-5.1.44.jar——JDBC访问mysql数据库所必须jar包

2019-10-07

空空如也

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

TA关注的人

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