自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(50)
  • 收藏
  • 关注

原创 线程池

1. 线程池的组成一般的线程池主要分为以下 4 个组成部分:1.线程池管理器:用于创建并管理线程池2.工作线程:线程池中的线程3.任务接口:每个任务必须实现的接口,用于工作线程调度其运行4.任务队列:用于存放待处理的任务,提供一种缓冲机制Java 中的线程池是通过 Executor 框架实现的,该框架中用到了 Executor,Executors,ExecutorService,ThreadPoolExecutor ,Callable 和 Future、FutureTask 这几个类。Thr

2020-06-07 16:28:59 170

原创 java数据结构-稀疏数组

稀疏数组介绍一、什么叫稀疏数组呢?如果一个数组(包括多维数组)中的大部分元素为0,或者为同一个值的数组时,可以使用稀疏数组来保存该数组,节约空间。一般来说,稀疏数组的处理方法是:1.记录数组一共有几行几列,有多少个不同的数值。2.把具有不同值的元素的行列及记录在一个小规模的数组中,从而缩小程序的规模。图例:从上图可以看出,原始二维数组转稀疏数组的思路:遍历原始二维数组,得到有效元素个数num根据元素个数num创建稀疏数组sparseArray[num+1][l列数]sparseArra

2020-06-01 14:12:26 163

原创 NIO基本知识详解

Java NIO浅析 - 美团技术团队的文章 - 知乎https://zhuanlan.zhihu.com/p/23488863

2020-05-23 16:17:27 217

原创 HashMap详细讲解

Java 8系列之重新认识HashMap - 美团技术团队的文章 - 知乎https://zhuanlan.zhihu.com/p/21673805

2020-05-23 14:35:47 187

转载 java对象内存布局

2.Java对象头HotSpot虚拟机中,对象在内存中存储的布局可以分为三块区域:对象头(Header)、实例数据(Instance Data)和对齐填充(Padding)。普通对象的对象头包括两部分:Mark Word 和 Class Metadata Address (类型指针),如果是数组对象还包括一个额外的Array length数组长度部分。Mark Word:用于存储对象自身的运...

2019-12-16 22:00:17 110

转载 select count(*)、select count(1)、select count(字段)、select count(null)的区别

1.count(1)与count(*)得到的结果一致,包含null值。2.count(字段)不计算null值3.count(null)结果恒为0转载于:https://www.cnblogs.com/Wcy100/p/5476980.html

2019-12-07 08:29:26 498

转载 解决springboot数据库字段与实体类属性名不一致

@Results(id = “userResult”, value = {@Result(property = “id”, column = “uid”, id = true),@Result(property = “firstName”, column = “first_name”),@Result(property = “lastName”, column = “last_name”)...

2019-12-07 08:28:22 6199

原创 springmvc工作流程

SpringMVC流程1、用户发送请求至前端控制器DispatcherServlet。2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。3、处理器映射器找到具体的处理器(可以根据xml配置、注解进行查找),生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。4、DispatcherServlet调用Handle...

2019-12-07 08:13:59 99

转载 SpringCloud组件原理

一、业务场景介绍先来给大家说一个业务场景,假设咱们现在开发一个电商网站,要实现支付订单的功能,流程如下:创建一个订单之后,如果用户立刻支付了这个订单,我们需要将订单状态更新为“已支付”扣减相应的商品库存通知仓储中心,进行发货给用户的这次购物增加相应的积分针对上述流程,我们需要有订单服务、库存服务、仓储服务、积分服务。整个流程的大体思路如下:用户针对一个订单完成支付之后,就会去找...

2019-12-05 22:40:50 174

转载 RocketMQ保证信息有序性和防止重复

分布式开放消息系统(RocketMQ)的原理与实践分布式消息系统作为实现分布式系统可扩展、可伸缩性的关键组件,需要具有高吞吐量、高可用等特点。而谈到消息系统的设计,就回避不了两个问题:消息的顺序问题消息的重复问题RocketMQ作为阿里开源的一款高性能、高吞吐量的消息中间件,它是怎样来解决这两个问题的?RocketMQ 有哪些关键特性?其实现原理是怎样的?关键特性以及其实现原理...

2019-12-01 21:30:25 1317

原创 面试高频2

1.订单过程的每个状态,如何保持有序执行,不会发生乱序。2.你在开发中是如何分库分表的。3.谈谈你对分布式锁和分布式事务的理解。4.手写一个SQL语句(订单管理系统):查询每个门店这个月对应每天的成功订单数量或信息。5.谈谈你对高并发的处理。6.当内存不够用了,你在开发中是怎么解决的。7.有过搭建Linux redis rabbitmq的经验吗。8.谈谈你对rabbitMq的理解,在...

2019-12-01 20:25:46 106

原创 面试高频1

1.谈谈你对JUC的理解和线程池的的理解。2.spring里面用到的设计模式。比如@service3.Spring里面bean的生命周期。4.分布式锁。5.Synchronized和CAS的区别。6.谈谈你对乐观锁和悲观锁的理解。(乐观锁:CAS算法和版本号控制 悲观锁:加锁 )7.redis的内存淘汰机制。(随机、最近最少使用、抛错、最早过期时间)8.谈谈你对集合的理解。说一下s...

2019-11-30 22:37:23 77

转载 HashMap和ConcurrentHashMap底层实现原理

前言Map 这样的 Key Value 在软件开发中是非常经典的结构,常用于在内存中存放数据。本篇主要想讨论 ConcurrentHashMap 这样一个并发容器,在正式开始之前我觉得有必要谈谈 HashMap,没有它就不会有后面的 ConcurrentHashMap。HashMap众所周知 HashMap 底层是基于 数组 + 链表 组成的,不过在 jdk1.7 和 1.8 中具体实现稍...

2019-11-30 22:33:34 250 1

转载 谈谈对集合的理解

集合​ Java集合是java提供的一个工具包,全部继承自java.util.*。主要包括两大接口Collection接口和Map接口以及相关的工具类(Iterator迭代器接口、Enumeration枚举类、Arrays和Colletions)。(1)Collection是一个接口,包含List列表和Set集合。其中List是有序的队列,元素值可以重复,索引从0开始,实现类有Lin...

2019-11-30 21:47:23 1820

转载 Redis过期策略和内存淘汰策略

Redis的过期策略我们都知道,Redis是key-value数据库,我们可以设置Redis中缓存的key的过期时间。Redis的过期策略就是指当Redis中缓存的key过期了,Redis如何处理。过期策略通常有以下三种:定时过期:每个设置过期时间的key都需要创建一个定时器,到过期时间就会立即清除。该策略可以立即清除过期的数据,对内存很友好;但是会占用大量的CPU资源去处理过期的数据,从...

2019-11-30 21:25:31 65

转载 悲观锁和乐观锁

乐观锁乐观锁:在操作数据是非常乐观,认为别人不会同时修改数据。因此乐观锁不会上锁,只是在执行更新的时候判断一下在此期间别人是否修改了数据:如果别人修改了数据则放弃操作,否则执行操作。悲观锁:悲观锁在操作数据时比较悲观,认为别人会同时修改数据。因此操作数据时直接把数据锁住,直到操作完成后才会释放锁;上锁期间其他人不能修改数据。实现方式悲观锁的实现方式是加锁,加锁既可以是对代码块加锁(如Jav...

2019-11-30 21:19:27 75

原创 java个人收集面试题

java基础private修饰的方法可以通过反射访问,那么private的意义是什么?(1).Java的private修饰符不是为了绝对安全设计的,而是对用户常规使用Java的一种约束。就好比饭店厨房门口挂着“闲人免进”的牌子,但是你还是能够通过其他方法进去。(2)、从外部对对象进行常规调用时,能够看到清晰的类结构java类的初始化顺序?(1)不考虑继承的情况下写一个测试类验...

2019-11-25 21:55:49 133

原创 Spring Cloud

Spring Cloud1.1 Spring Cloud 简介Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它是基于JVM的云应用开发中涉及的配置管理、服务发现、断路器、智能路由、微代理、控制总线、全局锁、决策竞选、分布式会话和集群状态管理等操作提供了一种简单开发方式。1.1.1 微服务架构微服务架构在这几年非常流行,以至于微服务架构相关的开源产品被反复提及...

2019-11-21 21:09:11 120

原创 Shiro安全框架基本介绍

1.Shiro• Apache Shiro 是 Java 的一个安全(权限)框架。Shiro 可以轻松的完成:身份认证、授权、加密、会话管理等功能• Shiro 可以非常容易的开发出足够好的应用,其不仅可以用在JavaSE 环境,也可以用在 JavaEE 环境。功能强大且易用,可以快速轻松地保护任何应用程序 ( 从最小的移动应用程序到最大的Web和企业应用程序。)• 方便的与Web 集成...

2019-10-12 22:43:15 167

原创 Spring进阶——AOP和动态代理

AOPSpring-AOP 是对 AOP框架之一。其他比如还有AspectJAspect-Oriented-Programming(面向切面编程),一种编程思想。切面:Aspect,由切入点和额外功能(增强)组成。作用:提供了新的编程角度,不再只是考虑类、对象,而可以考虑切面。切面和目标形成 代理,解决项目业务中额外功 能冗余的问题。1.为什么用AOP呢?1.1 业务中的问...

2019-09-28 22:31:35 118

原创 Spring进阶——Spring使用和Bean创建原理

1. IOC`Inverse Of Controll`:控制反转反转了依赖关系的满足方式,由之前的自己创建依赖对象,变为由工厂推送。(变主动为被动,即反转)解决了具有依赖关系的组件之间的强耦合,使得项目形态更加稳健2. DI`Dependency Injection`:依赖注入全新的依赖满足方式,体现在编码中就是全新的赋值方式 ==> `在工厂中为属性推送值`如:`<proper...

2019-09-24 22:17:24 1370

原创 Spring入门

一、Spring官网:https://spring.io优秀的java开源框架。作用:项目管理。 管理组件(对象 DAO,Service,Controller)。设计思路:践行工厂模式,打造一个工厂,通过工厂完成对项目的管理。学习思路:分析项目中的问题,引入spring解决方案,打造更好的项目形态。二、spring工厂搭建1.导入依赖<dependency> ...

2019-09-24 21:15:21 77

原创 MyBatis进阶——缓存的使用

一、缓存缓存:将数据库的数据临时的存储起来,以更好的支持查询。问题:如果有数据,查询频繁且更新极少,此种数据如果依然,每次到数据查询,效率较低。解决:将如上程序,临时存储在内存中,提供对外界的查询服务,进而减少和数据库的通信,提高查询效率。原理:当查询数据时,查询结果会被缓存在某个内存区域中,核心存储结构={sql:查询结果}每次发起查询时,会先找到缓存,从中尝试获取数据,如果没有找到数...

2019-09-24 20:05:22 172

原创 MyBatis进阶——高级使用2

第二节:动态sql通过mybatis提供的各种标签方法实现动态拼接sql。需求:根据性别和名字查询用户查询sql:SELECT id, username, birthday, sex, address FROM user WHERE sex = 1 AND username LIKE '%张%';2.1. If标签2.1.1. Mapper.xml文件UserMapper.xml配...

2019-09-20 19:32:15 335

原创 MyBatis进阶——高级使用1

第一节:输入参数和输出参数Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybatis的核心。1.1 环境准备第一步:创建项目添加依赖项目名称:mybatis01依赖信息如下:<dependencies> <dependency> <groupId>mysql&lt...

2019-09-20 17:17:49 235

原创 MyBatis初级——入门

一、MyBatis简介ORM : Object RelationShip MappingMyBatis 本是apache的一个开源项目iBatis, 2010年这个项目由apache software foundation 迁移到了google code,并且改名为MyBatis 。2013年11月迁移到Github。iBATIS一词来源于“internet”和“abatis”的组合,是...

2019-09-20 15:16:33 172

原创 常见的日志框架

1.1常见日志框架在项目开发过程中,我们可以通过 debug 查找问题。而在线上环境我们查找问题只能通过打印日志的方式查找问题。因此对于一个项目而言,日志记录是一个非常重要的问题。因此,如何选择一个合适的日志记录框架也非常重要。在Java开发中,目前常用的日志框架包括Log4j 1,Log4j 2,Commons Logging,Slf4j,Logback,Jul。这些日志记录框架各有各的特点...

2019-09-20 10:33:24 288

原创 Nexus私服搭建

一、 私服正式开发时,不同的项目组开发不同的工程。dao工程开发完毕,发布到私服。service从私服下载dao。​ 公司在自己的局域网内搭建自己的远程仓库服务器,称为私服,私服服务器即是公司内部的maven远程仓库,每个员工的电脑上安装maven软件并且连接私服服务器,员工将自己开发的项目打成jar并发布到私服服务器,其它项目组从私服服务器下载所依赖的构件(jar)。1.1搭建私服环境...

2019-09-20 09:26:10 109

原创 Maven传递依赖

一、 Maven传递依赖1.1什么是传递依赖?当项目依赖一个jar包时,与这个jar包关联的其他jar包也会关联到当前项目,这种现象就是传递依赖。比如A项目依赖B项目,B又依赖C项目, 此时A中也包含了C的依赖。案例演示:步骤1:创建Maven项目project01 project01的基本信息如下 groupId:com.qf.maven artifactId:projec...

2019-09-20 08:51:37 1177

原创 Maven简介以及idea配置

maven简介Maven 翻译为"专家"、“内行”,是 Apache 下的一个纯 Java 开发的开源项目。基于项目对象模型(缩写:POM,Project Object Model)概念,Maven利用一个中央仓库能管理一个项目的构建、报告和文档等步骤。Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。1.1 Maven核心功能传统项目的问题:1 需要把jar复制...

2019-09-19 21:47:13 111

原创 文件的上传和下载

一、文件上传1.1使用file标签上传文件把本地的文件通过html中的file标签上传到服务端WEB-INF/File目录下(WEB-INF目录下的文件不可见,保证安全性),我们都知道当我们上传一个文件的时候,一般程序不会更改原先的文件名称,而是会在原先文件名前加上随机的字符来标识唯一,因此当用户想要把原来的文件下载后,还能保证原先文件名。下面我将给大家讲讲如何实现。首先做一个简单的jsp界...

2019-09-18 21:10:05 137

原创 JavaWeb中Mysql数据库分页

数据库分页原理在Mysql数据库中提供了分页语句:SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offsetLIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。...

2019-09-10 23:14:26 650

原创 重定向和转发

1.重定向重定向就是通过各种方法将网络请求重新定个方向转到其他位置。实现原理客户浏览器发送http请求----》web服务器接受后发送302状态码响应及对应新的location给客户浏览器–》客户浏览器发现是302响应,则自动再发送一个新的http请求,请求url是新的location地址----》服务器根据此请求寻找资源并发送给客户。在这里location可以重定向到任意URL,既然是浏览...

2019-09-02 22:10:11 122

原创 MySQL中的变量和函数

三:MySQL中的变量MySQL中的变量分为四种:1、局部变量2、用户变量3、会话变量4、全局变量会话变量和全局变量叫系统变量。局部变量只在当前begin/end代码块中有效局部变量一般用在sql语句块中,比如存储过程的begin/end。其作用域仅限于该语句块,在该语句块执行完毕后,局部变量就消失了。declare语句专门用于定义局部变量,可以使用default来说明默认值。...

2019-08-25 22:28:44 1507

原创 MySQL视图、存储过程

一:视图什么是视图视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图特点视图是对若干张基本表的引用,一张虚表,查询语句执行的结果,不存储具体的数据(基本表数据发生了改变,视图也会跟着改变)视图一般不执行增删改操作。好处方便操作,特别是查询操作,减少复杂的SQL语句,增强可读性;更加安全,数据库授权命令不...

2019-08-25 22:22:10 133

原创 MySQL多表查询

第二节 多表查询多个表之间是有关系的,那么关系靠谁来维护?多表约束:外键约束。2.1 多表的关系2.1.1 一对多关系客户和订单,分类和商品,部门和员工.一对多建表原则:在多的一方创建一个字段,字段作为外键指向一方的主键.2.1.2 多对多关系学生和课程:多对多关系建表原则:需要创建第三张表,中间表中至少两个字段,这两个字段分别作为外键指向各自一方的主键.2.1.3 一对一关系...

2019-08-25 21:44:51 85

原创 MySQL约束

第一节 数据完整性作用:保证用户输入的数据保存在数据库中是正确的。确保数据的完整性=在创建表时给表中添加约束。完整性的分类:实体完整性:域完整性:引用完整性: 学生表(学号 ,姓名) 成绩表( 学号,科目,成绩)1.1 实体完整性实体:即表中的一行(一条记录)代表一个实体(entity)实体完整性的作用:标识每一行数据不重复。约束类型:主键约束(primary ke...

2019-08-25 21:18:28 98

原创 JavaScript中的DOM和BOM

第一节. JavaScript的DOM1.1 DOM概述通过 HTML DOM,使用 JavaScript访问 HTML 文档的所有元素。当网页被加载时,浏览器会创建页面的文档对象模型(Document Object Model)。HTML DOM 模型被构造为对象的树:通过可编程的对象模型,JavaScript获得了足够的能力来创建动态的HTML。JavaScript 能够改变页...

2019-08-25 18:43:46 171

原创 JavaScript基础

第一节 JavaScript概述1.1 JavaScript简介JavaScript(LiveScript)一种解释性脚本语言,是一种动态类型、弱类型、基于原型继承的语言,内置支持类型。它的解释器被称为JavaScript引擎,为浏览器的一部分,广泛应用于客户端的脚本语言,最早是在HTML(标准通用标记语言下的一个应用)网页上使用,用它给HTML网页增加动态功能。第二节 JavaScript...

2019-08-25 16:46:50 155

原创 CSS层叠样式表

1 css概念CSS :层叠样式表(英文全称:Cascading Style Sheets)是一种用来表现HTML(标准通用标记语言的一个应用)或XML(标准通用标记语言的一个子集)等文件样式的计算机语言。CSS不仅可以静态地修饰网页,还可以配合各种脚本语言动态地对网页各元素进行格式化。多个样式可以层层覆盖叠加,如果不同的css样式对同一个html标签进行修饰,样式有冲突的,应用优先级高的,不...

2019-08-24 22:05:45 568

空空如也

空空如也

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

TA关注的人

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