自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

倾心之恋

最怕你碌碌无为,却安慰自己平凡可贵。

转载 Java 并发高频面试题:聊聊你对 AQS 的理解?

一、写在前面这篇文章,我们来聊聊面试时一个比较有杀伤力的问题:聊聊你对AQS的理解?之前有同学反馈,去互联网公司面试,面试官聊到并发时就问到了这个问题。当时那位同学内心估计受到了一万点伤害。。。因为首先,很多人可能连AQS是什么都不知道。或者仅仅是听说过AQS这个名词,但是可能连全称怎么拼写都不知道。更有甚者,可能会说:AQS?是不是一种思想?我们平时开发怎么来用AQS?总结起来,很多同学都对AQS有一种云里雾里的感觉,如果用搜索引擎查一下AQS是什么,估计看几篇文章就直接放弃了,因为密

2020-06-29 18:54:48 116 2

原创 Mybatis延迟加载

定义延迟加载或者也叫惰性加载,懒加载。使用延迟加载可以提高程序的运行效率。Java程序与数据库交互的频次越低,程序运行效率越高,所以我们应该尽量减少Java程序与数据库的交互次数,MyBatis延迟加载就很好的做到了这一点。通过一个具体的业务场景来理解延迟加载:班级(Classes)和学生(Student),当我们查询Student对象时,因为有级联关系,所以会将对应的Classes对象一并查询出来,这样就需要发送两条SQL语句,分别查询classes表和student表中的数据。延迟...

2020-06-29 17:53:14 41

原创 Java 异常

ArithmeticException 异常 :试图除以0NullPointerException 异常:当对象为null的时候调用了其属性或者方法ClassCastException 异常 :类型转换异常

2020-02-13 18:24:17 59

原创 Java基础-变量/接口

局部变量必须初始化 local variable 属于方法成员变量自动被初始化 属于对象静态变量 属于类Break 跳出整个循环,无论是几层循环;continue 终止本次循环;面向过程侧重过程,适合简单的,不需要协作的事务。面向对象需要协作完成。对象 是数据管理体现。 变量-数组(同类型)-对象(不同类型)。——发展历程抽象产生类,程序运行产生对象。类包含属性和方...

2020-02-13 18:14:34 46

原创 策略模式+模板方法的使用

之前了解策略模式,都是看的一些理论知识然后敲了一些小demo。比如,定义:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户处理掉if…else…类型:行为型适用场景系统有很多类,而他们的区别仅仅在于他们的行为不同 一个系统需要动态地在几种算法中选择一种 优点 开闭原则 避免使用多重条件转移语句 提高算法的保密性和安全性 缺点 客户端必须知...

2020-01-16 21:33:55 162

原创 Mybatis中批量处理

批量查询<select id="listStudent" resultType="Student"> SELECT <include refid="Base_Column_List"/> FROM student WHERE id IN <foreach collection="list" open"(" close=")" separator="," i...

2020-01-16 17:46:58 60 1

原创 Mybatis 动态sql

if动态SQL通常要做的事情是根据条件包含where子句的一部风。比如:<select id="find" resultType="Blog"> SELECT * FROM BLOG WHERE state = 'SALE' <if test = "title !=null"> and title like #{title} </if><...

2020-01-03 16:05:45 49

原创 MyBatis一对一association用法

形如下面的类student和role。假设一个学生只能对应一种角色,是班长或者是文艺委员或者是什么。是一对一的关系。package com.example.demo;public class Role { private Long roleId; private String roleName; private Student student; pu...

2019-12-07 00:56:54 51

原创 MyBatis一对多collection用法

形如下面的一个类package com.example.demo;import java.util.List;public class ClassDemo { private Long classId; private String className; private List<Student> studentList; publ...

2019-12-07 00:55:28 40

原创 map集合解决双重for循环的性能问题

现在有个需求,需要将student表和class表的所有数据返回回去,关联条件时class_id。如果用sql很容易实现,直接连表查询就可以了,但是现在项目是微服务,不能连表查询了,所以得在代码里面修改。定义三个类,student类,class类,还有返回所有数据的studentAndClass类。import java.util.ArrayList;import java.util....

2019-12-02 01:50:47 559

原创 Navicat Premium12下载安装及汉化

安装:搜索https://xclient.info/网址下载Navicat Premium12安装即可。汉化:安装TNT版主程序 下载https://www.pipipan.com/fs/13114864-217250713中文包 安装完成之后 复制汉化文件夹放到/Applications/Navicat Premium.app/Contents/Resources 汉...

2019-11-16 16:57:47 196 1

原创 Java8中 Date和LocalDateTime的相互转换

数据库存的是timestap,java后端实体存的是date类型的,用的是java8的localdatetime,需要把localdatetime转换成date类型。1.使用atZone()方法将LocalDateTime转换为ZonedDateTime2.将ZonedDateTime转换为Instant,并从中获取Date代码示例:import java.time.I...

2019-11-04 12:18:46 136

原创 数据库导出markdown database-doc-generator

database-doc-generator数据库文档生成器,可以生成.doc .html md文档,支持Mysql、postgresql,可以使用下载zip包或者下载源码的方式。本文介绍的是通过下载源码的方式进行的。从码云上找到的下载资料https://gitee.com/enilu/database-doc-generator按照文档一步一步执行即可。找到了一个springb...

2019-10-26 14:49:01 198

原创 亿级请求下多级缓存

什么是多级缓存所谓多级缓存,即在整个系统架构的不同系统层级进行数据缓存,以提升访问效率,这也是应用最广的方案之一。整体流程如上图所示:1)首先接入Nginx将请求负载均衡到应用Nginx,此处常用的负载均衡算法是轮询或者一致性哈希,轮询可以使服务器的请求更加均衡,而一致性哈希可以提升应用Nginx的缓存命中率,相对于轮询,一致性哈希会存在单机热点问题,一种解决办法是热点直接推送到接...

2019-10-12 17:15:37 58

原创 CDN

1.什么是CDN?空间换时间的策略。CDN的全称是Content Delivery Network,内容分发网络。CDN是构建在网络之上的内容分发网络。 CDN使用户就近获取所需内容,降低网络阻塞,提高用户访问响应速度和命中率。 CDN依靠部署在各地的边缘服务器,包括中心平台的负载均衡、内容分发、调度等功能模块。2.有CDN的时候用户流量web流程和无CDN的时候有什么区别?...

2019-10-12 16:48:47 31

原创 各种排序算法的时间与空间复杂度

各种排序算法的时间复杂度和空间复杂度排序算法 平均时间复杂度 最好情况 最坏情况 空间复杂度 冒泡排序 O(n2) O(n) O(n2) O(1) 选择排序 O(n2) O(n2) O(n2) O(1) 插入排序 O(n2) O(n) O(n2) O(1) 希尔排序 O(n l...

2019-10-10 20:34:41 40

原创 Mysql的常用配置参数

基本配置:datadir:指定mysql的数据目录位置,用于存放mysql数据库文件、日志文件等。  配置示例:datadir=D:/wamp/mysqldata/Datadefault-character-set:mysql服务器默认字符集设置。  配置示例:default-character-set=utf8skip-grant-tables:当忘记mysql用户密码的时候...

2019-10-10 00:31:08 40

原创 Java Web基础

Http协议HTTP是实现客户端和服务器端通信的重要协议。一个完整的请求消息是由请求行、请求头和实体内容三部分组成。HTTP请求行包含三个部分,分别是请求方式、资源路径和使用的HTTP版本。GET /index.html HTTP/1.1GET是请求方式,index.html是请求资源路径,HTTP/1.1是通信使用的协议版本。GET方式参数放在请求行中的资源路径后面...

2019-10-09 20:53:57 34

转载 Java NIO核心组件学习

背景知识同步、异步、阻塞、非阻塞首先,这几个概念非常容易搞混淆,但NIO中又有涉及,所以总结一下[1]。同步:API调用返回时调用者就知道操作的结果如何了(实际读取/写入了多少字节)。 异步:相对于同步,API调用返回时调用者不知道操作的结果,后面才会回调通知结果。 阻塞:当无数据可读,或者不能写入所有数据时,挂起当前线程等待。 非阻塞:读取时,可以读多少数据就读多少然后返回,写...

2019-10-09 20:36:23 26

原创 Java找出数组中第二大的值

题目:给出一个数组{7,3,19,40,4,7,1};找出第二大的值思路:定义两个变量:一个变量用来存储数组的最大值,初始为数组首元素。另一个变量用来存储数组元素的第二大数,初始值为最小负整数,然后遍历数组元素。实现: public static int findSecMax(int[] arr) { int max = arr[0]; //...

2019-10-09 20:14:43 399

原创 Java 求 1到n各阶乘的和

题目:1-n阶乘之和分析:1的阶乘是1 2的阶乘是1*2 3的阶乘是1*2*3 4的阶乘是1*2*3*4 .........代码:public static long factorialSum(int num) { long sum = 0; long temp = 1; for (int i = 1; i <= n...

2019-10-09 19:37:34 503

原创 Dubbo的服务启动依赖检查配置

dubbo的服务启动依赖检查,指的是当启动服务时,如果存在不可用的依赖时,直接抛出异常,从而阻断spring初始化完成,以便在上线时发现问题。这种看似非常合理的检查,有时候却会给系统带来很大的困扰。比如A的consumer依赖了B的provider,同时B的consumer也依赖A的provider,这是什么?这就叫循环依赖。如果依赖双方均没有启动着的实例(比如所有的服务都挂了,等待重启),那...

2019-10-08 10:14:27 56

原创 Java的锁

常见的锁有synchronized、volatile、偏向锁、轻量级锁、重量级锁、公平锁/非公平锁、独享锁和共享锁。1.synchronizedsynchronized是并发编程中接触的最基本的同步工具,是一种重量级锁,也是Java内置的同步机制,synchronized提供了互斥性和可见性,可以保证并发的安全。synchronized实现原理synchronized是内置在JVM...

2019-10-07 21:33:35 44

原创 数据库三范式

数据库设计要遵循三范式规则。数据表的设计规范,一套越来越严格的规范体系(如果需要满足N范式,首先要满足N-1范式)。第一范式1NF:字段原子性字段原子性,字段不可再分割。关系型数据库,默认满足第一范式注意比较容易出错的一点,在一对多的设计中使用逗号分隔多个外键,这种方法虽然存储方便,但不利于维护和索引(比如查找带标签java的文章)第二范式:消除对主键的部分依赖...

2019-10-06 20:41:00 31

原创 Mysql优化

概述为什么要优化系统的吞吐量瓶颈往往出现在数据库的访问速度上 随着应用程序的运行,数据库的中的数据会越来越多,处理时间会相应变慢 数据是存放在磁盘上的,读写速度无法和内存相比如何优化设计数据库时:数据库表、字段的设计,存储引擎 利用好MySQL自身提供的功能,如索引等 横向扩展:MySQL集群、负载均衡、读写分离 SQL语句的优化字段设计尽量使用整型表示字符串,存储...

2019-10-06 20:33:08 38

原创 Java常用的加密算法

本文从对称加密和非对称加密展开论述。简介:对称加密: 加密和解密的秘钥使用的是同一个. 非对称加密:与对称加密算法不同,非对称加密算法需要两个密钥:公开密钥(publickey)和私有密钥(privatekey)。对称加密算法:密钥较短,破译困难,除了数据加密标准(DES),另一个对称密钥加密系统是国际数据加密算法(IDEA),它比DES的加密性好,且对计算机性能要求也没有那么高....

2019-10-06 15:20:26 100

原创 Hystrix使用方式

1.Hystrix是什么Hystrix是一款开源容错插件,具有依赖隔离,系统容错降级等功能,还有请求合并等功能。2、为什么要进行隔离实际工作中,分布式、微服务遍地开花,一个服务经常要调用其他的服务,dubbo的RPC调用,http调用,在调用过程中,因为网络等原因,造成某个服务调用超时,如果没有熔断机制,此时的调用链路会一直阻塞在这里,在高并发的环境下,如果每个请求都卡在这个的话,服务...

2019-10-05 21:58:06 42

原创 Hystrix功能介绍

1、什么是Hystrix在一个分布式系统中,必然会有部分系统的调用会失败。Hystrix是一个通过添加超时容错和失败容错逻辑来帮助你控制这些分布式系统的交互。Hystrix通过隔离服务之间的访问,阻止他们之间的级联故障以及提供后背选项来实现这些,所有新而这些都用来提高系统的整体弹性。2、Hystrix用来做什么Hystrix被设计用来解决一下几个方面通过第三方(一般来源...

2019-10-05 21:38:18 246

原创 Dubbo入门

dubbo作为当前国内热门的RPC框架,其基本原理、配置调优等是面试中会经常问到的,了解这些或者知道这些配置项的存在对工作也会事半功倍,遇到类似的问题可以不再去问那个广告满天飞的某度了。1. Dubbo简介Dubbo |db|是一个由阿里巴巴开源的、分布式的RPC(Remote Procedure Call Protocol-远程过程调用)和微服务框架,现为Apache顶级项目。Dub...

2019-10-04 20:28:29 25

原创 策略模式

定义:定义了算法家族,分别封装起来,让它们之间可以互相替换,此模式让算法的变化不会影响到使用算法的用户处理掉if...else...类型:行为型适用场景系统有很多类,而他们的区别仅仅在于他们的行为不同 一个系统需要动态地在几种算法中选择一种优点开闭原则 避免使用多重条件转移语句 提高算法的保密性和安全性缺点客户端必须知道所有的策略类,并自行决定用哪一个策略类 ...

2019-10-04 19:51:42 29

原创 观察者模式

定义:定义了对象之间一对多依赖,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,它的所有观察者都会收到通知并更新类型:行为型适用场景关联行为场景,建立一套触发机制优点观察者和被观察者之间建立一个抽象的耦合 观察者模式支持广播通信缺点观察者之间由过多的细节依赖,提高时间消耗及程序复杂度 使用要得当,要避免循环调用实现观察者模式使用三个类 Subject...

2019-10-04 19:43:23 35

原创 Java链表反转

反转一个单链表。示例:输入: 1->2->3->4->5->NULL输出: 5->4->3->2->1->NULLJavapublic ListNode reverseList(ListNode head) { if (head == null || head.next == null) return he...

2019-09-29 20:39:23 36

原创 Java 判断一个链表是否成环

成环:可以是循环单链表,即首位相连;也可以是部分成环,即尾部和其他节点相连。判断是否成环:使用快慢指针遍历链表:慢指针:从头节点开始,一次跳一个节点。快指针:从头节点开始,一次跳两个节点。如果是成环的,这两个指针一定会相遇。代码如下: public static void main(String[] args) { Node n...

2019-09-23 22:28:25 177

原创 Java语言找出数组中的最大值

代码如下:public class Practice{ //找最大值 public static int max(int [] array){ int max=0; int i=0; for(i=0;i<array.length;i++){ if(array[i]>max){ max=array[i]; } } return max; ...

2019-09-23 22:22:13 62 3

原创 Java语言实现一个队列

【前言】以前写代码总是用的jdk自带的工具类,如果要想明白底层是怎么实现的,必须得自己亲自写一个。【过程】用Java语言实现一个队列,符合先进先出的原则。代码如下:/** * Created by 郝雨烁 on 2019/9/23. */public class Queue { private Object[] data; //队列头 privat...

2019-09-23 22:20:03 39

原创 适配器模式

定义:将一个类的接口转换成客户希望的另一个接口使原本不兼容的类可以一起工作类型:结构型适用场景已经存在的类,它的方法和需求不匹配时(方法结果相同或相似) 不是软件设计阶段考虑的设计模式,是随着软件维护,由于不同产品、不同厂家造成功能类似而接口不相同情况下的解决方案优点能提高类的透明性和复用性,现有的类复用但不需要改变 目标类和适配器类解耦,提高程序扩展性 符合开闭原则...

2019-09-15 11:46:01 34

原创 单例模式

单例模式定义:保证一个类仅有一个实例,并提供一个全局访问点类型:创建型适用场景想确保任何情况下都绝对只有一个实例优点在内存里只有一个实例,减少了内存开销 可以避免对资源的多重占用 设置全局访问点,严格控制访问缺点没有接口,扩展困难重点私有构造器 线程安全 延迟加载 序列化和反序列化安全 反射懒汉式使用的时候才初始化public class...

2019-09-15 11:26:22 41

原创 职责链模式

前言项目中有考勤请假审批这个模块,可以用到职责链模式。过程请一天假,请示小组长,请三天假,请示项目经理,请五天及五天以上的假,请示CTO。提出请假的人便是Client,而组长、经理、CTO三者其实是同一类人,即都是请求处理者(ConcreteHandler),而他们都是抽象的处理者(Handler)的子类。Client: 调用者; Request: 请求体,用于封装...

2019-09-15 11:13:45 70

原创 SpringMVC拦截器

目录定义拦截器测试拦截器应用定义拦截器public class HandlerInterceptor1 implements HandlerInterceptor { //在执行handler之前来执行的 //用于用户认证校验、用户权限校验 @Override public boolean preHandle(HttpServletReque...

2019-09-14 16:52:48 33

原创 docker+k8s实现微服务部署

目录服务docker化docker服务彼此通讯docker仓库服务编排框架-k8s服务docker化https://mp.csdn.net/postedit/92760924docker服务彼此通讯https://mp.csdn.net/postedit/92762239docker仓库公有和私有,经常用的是私有的harbor仓库。服务编排框架-k8s...

2019-09-14 16:51:59 589

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