自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(47)
  • 资源 (9)
  • 问答 (1)
  • 收藏
  • 关注

原创 java下载文件工具类

【代码】java下载文件工具类。

2023-05-04 14:29:58 279

原创 java文件上传工具类

【代码】java文件上传工具类。

2023-05-04 14:27:09 311

原创 从字节码角度分析synchronized实现

从字节码角度分析synchronized实现

2022-06-09 23:48:27 140

原创 synchronized8锁问题

synchronized8锁问题

2022-06-09 23:35:50 119

原创 有了二叉查找树、平衡树为啥还需要红黑树?

红黑树算是很难的一种数据结构吧,一般很少考察插入、删除等具体操作步骤,如果遇到要你手写红黑树的面试官,就直接告辞吧。所以,更多是会考察你对红黑树的理解程度,考察的最多的估计就是为什么有了二查找查找树/平衡树还需要红黑树这个问题了。1、二叉查找树的缺点二叉查找树的特点就是左子树的节点值比父亲节点小,而右子树的节点值比父亲节点大。如图所示:基于二叉查找树的这种特...

2020-03-31 00:48:31 211

原创 线程池相关

1.在线程池中使用无界堵塞队列会发生什么问题?面试题:在远程服务异常的情况下,使用无界堵塞队列,是否会导致内存异常飚升?调用超时,队列变得越来越大,此时会导致内存飙升,而且还可能会导致OOM,内存溢出。...

2020-02-15 22:47:45 88

原创 线程池的工作原理与源码解读

一、线程池创建先看一下ThreadPoolExecutor参数最全的构造方法:①corePoolSize:线程池的核心线程数,说白了就是,即便是线程池里没有任何任务,也会有corePoolSize个线程在候着等任务。②maximumPoolSize:最大线程数,不管你提交多少任务,线程池里最多工作线程数就是maximumPoolSize。③keepAliveTime:线程...

2020-02-15 22:15:03 129

原创 细思极恐,你真的会写java吗?

导语自2013年毕业后,今年已经是我工作的第4个年头了,总在做java相关的工作,终于有时间坐下来,写一篇关于java写法的一篇文章,来探讨一下如果你真的是一个java程序员,那你真的会写java吗? 笔者是一个务实的程序员,故本文绝非扯淡文章,文中内容都是干货,望读者看后,能有所收获。其实,本不想把标题写的那么恐怖,只是发现很多人干了几年java以后,都自认为是一个不错的java程序...

2020-01-03 13:16:53 105

原创 24 个必须掌握的数据库面试题~

一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,...

2020-01-03 13:13:41 176

原创 挑战10个最难回答的Java面试题(附答案)

这是我收集的10个最棘手的Java面试问题列表。这些问题主要来自 Java 核心部分 ,不涉及 Java EE 相关问题。你可能知道这些棘手的 Java 问题的答案,或者觉得这些不足以挑战你的 Java 知识,但这些问题都是容易在各种 Java 面试中被问到的,而且包括我的朋友和同事在内的许多程序员都觉得很难回答。1.为什么等待和通知是在 Object 类而不是 Thread 中声明的?一...

2020-01-03 13:11:46 171

原创 碰到Maven依赖冲突,想砸电脑?这个工具必须了解一下!

1、何为依赖冲突Maven是个很好用的依赖管理工具,但是再好的东西也不是完美的。Maven的依赖机制会导致Jar包的冲突。举个例子,现在你的项目中,使用了两个Jar包,分别是A和B。现在A需要依赖另一个Jar包C,B也需要依赖C。但是A依赖的C的版本是1.0,B依赖的C的版本是2.0。这时候,Maven会将这1.0的C和2.0的C都下载到你的项目中,这样你的项目中就存在了不同版本的C,这时Ma...

2020-01-03 13:09:25 118

原创 学习JVM是如何从入门到放弃的?

前言只有光头才能变强JVM在准备面试的时候就有看了,一直没时间写笔记。现在到了一家公司实习,闲的时候就写写,刷刷JVM博客,刷刷电子书。学习JVM的目的也很简单:能够知道JVM是什么,为我们干了什么,具体是怎么干的。能够理解到一些初学时不懂的东西 在面试的时候有谈资 能装逼(图片来源:https://zhuanlan.zhihu.com/p/25511795,侵删)声...

2019-12-24 14:04:19 77

原创 数据库两个神器【索引和锁】

前言只有光头才能变强索引和锁在数据库中可以说是非常重要的知识点了,在面试中也会经常会被问到的。本文力求简单讲清每个知识点,希望大家看完能有所收获声明:如果没有说明具体的数据库和存储引擎,默认指的是MySQL中的InnoDB存储引擎一、索引在之前,我对索引有以下的认知:索引可以加快数据库的检索速度 表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,...

2019-12-24 13:59:14 162

原创 Java性能优化的45个细节(珍藏版)

在JAVA程序中,性能问题的大部分原因并不在于JAVA语言,而是程序本身。养成良好的编码习惯非常重要,能够显著地提升程序性能。1. 尽量在合适的场合使用单例使用单例可以减轻加载的负担,缩短加载的时间,提高加载的效率,但并不是所有地方都适用于单例,简单来说,单例主要适用于以下三个方面:第一,控制资源的使用,通过线程同步来控制资源的并发访问;第二,控制实例的产生...

2019-12-23 11:44:32 85

原创 专业解决 MySQL 查询速度慢与性能差

什么影响了数据库查询速度1.1 影响数据库查询速度的四个因素1.2 风险分析QPS:QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS:是 TransactionsPerSecond的缩写,也就是事务数/秒。它是软件测试结果的测量单位。客户机在发送请求时开始计...

2019-12-23 11:41:07 185

原创 一份非常完整的MySQL规范(收藏)

一、数据库命令规范1、所有数据库对象名称必须使用小写字母并用下划线分割2、所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)3、数据库对象的命名要能做到见名识意,并且最后不要超过32个字符4、临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀5、所有存储相同数据的列名和列类型必须一致(...

2019-12-23 11:33:05 89

原创 拼多多的真实面试题:数亿的用户,如何统计独立用户访问量?

众所周至,拼多多的待遇也是高的可怕,在挖人方面也是不遗余力,对于一些工作3年的开发,稍微优秀一点的,都给到30K的Offer,当然,拼多多加班也是出名的,一周上6天班是常态,每天工作时间基本都是超过12个小时,也是相当辛苦的。废话不多说,今天我们来聊一聊拼多多的一道后台面试真题,是一道简单的架构类的题目:拼多多有数亿的用户,那么对于某个网页,怎么使用Redis来统计一个网站的用户访问数呢?使用...

2019-12-23 11:29:52 235

原创 SpringBoot 拦截器

web拦截器作用有权限控制,日志记录等等。SpringBoot 提供 HandlerInterceptor方便我们开发;我们定义一个自定义拦截器 实现HandlerInterceptor接口,实现三个方法,preHandle是 请求处理之前调用,postHandle是请求处理之后并且视图渲染之前调用,afterCompletion请求结束之后并且视图渲染之后调用;(很重要)我们再定义一个类...

2019-11-11 20:58:02 316

原创 为了减少接口的响应时间,有哪些优化措施?

我们在开发过程中,当然是希望自己项目接口的响应时间越短越好,至少我看着自己开发出来的代码,都是毫秒级的响应,会有一种自豪感;那么我们项目做了哪些优化,和大家分享分享。优化代码先从小处着手,代码写的好坏,直接影响到接口的响应速度;当然这里也不可能展开详谈每一行代码怎么写,主要还是说一下措施: ●代码规范:我经常会以自己的标准去衡量其他开发人员代码的好坏,虽然我也不是什么大牛,但毕竟做了...

2019-10-20 13:19:37 1715

原创 防止别人恶意调用API接口

大公司的网络安全比下面复杂的多1、 验证码(最简单有效的防护),采用点触验证,滑动验证或第三方验证码服务,普通验证码很容易被破解2、频率,限制同设备,同IP等发送次数,单点时间范围可请求时长3、归属地,检测IP所在地是否与手机号归属地匹配;IP所在地是否是为常在地4、可疑用户,对于可疑用户要求其主动发短信(或其他主动行为)来验证身份5、黑名单,对于黑名单用户,限制其操作,API...

2019-10-20 13:14:30 2367

原创 一次 MySQL 千万级大表的优化过程

方案概述 方案一:优化现有MySQL数据库。优点:不影响现有业务,源程序不需要修改代码,成本最低。缺点:有优化瓶颈,数据量过亿就玩完了。 方案二:升级数据库类型,换一种100%兼容MySQL的数据库。优点:不影响现有业务,源程序不需要修改代码,你几乎不需要做任何操作就能提升数据库性能,缺点:多花钱。 方案三:一步到位,大数据解决方案,更换newSQL/noSQL数据库。优...

2019-10-20 13:09:53 304

原创 使用RedisTemplate操作Redis数据库

目录一.什么是Redis二.RedisTemplate及其相关方法三.RedisTemplate操作Redis数据库的具体例子四.RedisTemplate和StringRedisTemplate的区别一.什么是RedisRedis是一个非关系型数据库,具有很高的存取性能,一般用作缓存数据库,减少正常存储数据库的压力。Redis可以存储键与5种不同数据结构类型之间的映射,...

2019-10-10 10:30:20 961

原创 分布式事务了解吗?你们是如何解决分布式事务问题的?

分布式事务了解吗?你们是如何解决分布式事务问题的?面试题剖析一般来说,分布式事务的实现主要有以下 5 种方案:XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案两阶段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ...

2019-10-09 17:11:46 153

原创 MySQL 面试高频 100 问

前言本文主要受众为开发人员,所以不涉及到MySQL的服务部署等操作,且内容较多,大家准备好耐心和瓜子矿泉水.前一阵系统的学习了一下MySQL,也有一些实际操作经验,偶然看到一篇和MySQL相关的面试文章,发现其中的一些问题自己也回答不好,虽然知识点大部分都知道,但是无法将知识串联起来.因此决定搞一个MySQL灵魂100问,试着用回答问题的方式,让自己对知识点的理解更加深入一点.此文...

2019-10-07 14:50:23 842

原创 java面试题之-集合框架

1. ArrayList和Vector的区别。这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集 合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态的数组,我 们以后可以按位置索引号取出某个元素,并且其中的数据是允许重复的,这是HashSet之类的集合的最大不同处,HashSet之类的集合不可以按索引号去检索其 中的元素...

2019-09-26 13:57:16 212

原创 java面试题之-tomcat调优

前段时间参加面试,面试过程中提到服务器的调优方案,这里总结一下。首先说一下tomcat的调优方案:Tomcat本身的优化,Java虚拟机调优,Tomcat 优化分为系统优化,接下来一个个介绍:一、Tomcat本身的优化Tomcat 的自身参数的优化,这块很像 ApacheHttp Server。修改一下 xml 配置文件中的参数,调整最大连接数,超时等。此外,我们安装 To...

2019-09-23 10:23:08 497

原创 java面试题之-java代码优化

代码优化最重要的作用应该是避免未知的错误,因此在写代码的时候,从源头开始注意各种细节,权衡并使用最优的选择,将会很大程度上避免出现未知的错误,从长远看也极大的降低了工作量。所以说代码优化的目标是减小代码体积、提高代码运行效率。优化是无止境的,本文也只给出整理的一些常见优化建议。(1)尽量指定类、方法的 final 修饰符。带有 final 修饰符的类是不可派生的。在 Java 核心 API...

2019-09-19 22:43:18 981

原创 java面试题之-springcloud

问题一:什么是Spring Cloud?Spring cloud流应用程序启动器是基于Spring Boot的Spring集成应用程序,提供与外部系统的集成。Spring cloud Task,一个生命周期短暂的微服务框架,用于快速构建执行有限数据处理的应用程序。问题二:使用Spring Cloud有什么优势?使用Spring Boot开发分布式微服务时,我们面临以下问题与分布式系...

2019-09-19 22:40:10 151

原创 java面试题之-springboot

1、什么是 Spring Boot?Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。2、为什么要用 Spring Boot?Spring Boot 优点非常多,如:独立运行 简化配置 自动配置 无代码生成和XML配置 应用监...

2019-09-19 22:35:57 1446

原创 java面试题之-spring

1、Spring是什么?Spring是一个轻量级的IoC和AOP容器框架。是为Java应用程序提供基础性服务的一套框架,目的是用于简化企业应用程序的开发,它使得开发者只需要关心业务需求。常见的配置方式有三种:基于XML的配置、基于注解的配置、基于Java的配置。主要由以下几个模块组成:Spring Core:核心类库,提供IOC服务;Spring Context:提...

2019-09-19 22:30:14 133

原创 java面试题之-线程池

什么是线程池?线程池是一种多线程处理形式,处理过程中将任务提交到线程池,任务的执行交由线程池来管理。如果每个请求都创建一个线程去处理,那么服务器的资源很快就会被耗尽,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以被重复利用,可执行多个任务。为什么要使用线程池?创建线程和销毁线程的花销是比较大的,这些时间有可能比处理业务的时间还要长。这样频繁的创建线程和销毁线程,再...

2019-09-19 22:22:26 143

原创 面试题之-多线程

1、多线程有什么用?一个可能在很多人看来很扯淡的一个问题:我会用多线程就好了,还管它有什么用?在我看来,这个回答更扯淡。所谓"知其然知其所以然","会用"只是"知其然","为什么用"才是"知其所以然",只有达到"知其然知其所以然"的程度才可以说是把一个知识点运用自如。OK,下面说说我对这个问题的看法:1)发挥多核CPU的优势随着工业的进步,现在的笔记本、台式机乃至商用的应用服务器至少也...

2019-09-19 22:18:16 150

原创 面试题之-sql优化

数据库的优化问题一、问题的提出 在应用系统开发初期,由于开发数据库数据比较少,对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,但是如果将应用 系统提交实际应用后,随着数据库中数据的增加,系统的响应速度就成为目前系统需要解决的最主要的问题之一。系统优化中一个很重要的方面就是SQL语句的优 化。对于海量数据,劣质SQL语句和优质SQL语句之间的速度差别可以达到上百倍...

2019-09-19 22:09:18 975

原创 合理配置线程池

要想合理的配置线程池,就必须首先分析任务特性,可以从以下几个角度来进行分析:任务的性质:CPU密集型任务,IO密集型任务和混合型任务。任务的优先级:高,中和低。任务的执行时间:长,中和短。任务的依赖性:是否依赖其他系统资源,如数据库连接。任务性质不同的任务可以用不同规模的线程池分开处理。CPU密集型任务配置尽可能少的线程数量,如配置Ncpu+1个线程的线程池。IO密集型任务则由...

2019-09-17 13:58:50 91

原创 线程池之-newFixedThreadPool

newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。示例如下:package com.executor.test;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @author 作者:wx * ...

2019-09-17 11:29:10 376

原创 线程池之-newCachedThreadPool

newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。package com.executor.test;import java.util.concurrent.ExecutorService;import java.util.concurrent.Executors;/** * @author 作者:...

2019-09-16 14:58:07 1286

原创 堵塞队列-BlockingQueue

阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。这两个附加的操作是:在队列为空时,获取元素的线程会等待队列变为非空。当队列满时,存储元素的线程会等待队列可用。阻塞队列常用于生产者和消费者的场景,生产者是往队列里添加元素的线程,消费者是从队列里拿元素的线程。阻塞队列就是生产者存放元素的容器,而消费者也只从容器里拿元素。BlockingQueue即阻塞队列,从阻...

2019-09-16 13:58:05 189

原创 倒计时器:CountDownLatch

CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch是一个非常实用的多线程控制工具类。常用的就下面几个方法:CountDownLatch(int count) //实例化一个倒计数器,...

2019-09-12 14:39:49 165

原创 Volatile关键字

什么是VolatileVolatile 关键字的作用是变量在多个线程之间可见。代码:package com.thread.test;/*** @author 作者:wx* @createDate 创建时间:Aug 30, 2019 3:14:49 PM*/public class ThreadVolatileTest { public static void main(...

2019-08-30 16:16:40 70

原创 Java内存模型

共享内存模型指的就是Java内存模型(简称JMM),JMM决定一个线程对共享变量的写入时,能对另一个线程可见。从抽象的角度来看,JMM定义了线程和主内存之间的抽象关系:线程之间的共享变量存储在主内存(main memory)中,每个线程都有一个私有的本地内存(local memory),本地内存中存储了该线程以读/写共享变量的副本。本地内存是JMM的一个抽象概念,并不真实存在。它涵盖了缓存,写缓冲...

2019-08-30 16:00:15 151

activemq性能与高可用性测试

activemq性能与高可用性测试,activemq性能与高可用性测试。

2018-04-27

redis安装以及测试文档

redis安装以及测试,redis安装以及测试,redis安装以及测试。

2018-04-27

RocketMQ单机环境搭建

RocketMQ单机环境搭建,RocketMQ单机环境搭建,RocketMQ单机环境搭建.

2018-04-27

2018Java最新面试题集合

2018Java最新面试题集合,2018Java最新面试题集合,加薪利器。

2018-04-27

java实战高并发

java实战高并发,一书在手,天下我有。进阶加薪利器。

2018-04-27

redis数据库

redis数据库解压包,redis数据库解压包,redis数据库解压包

2018-04-27

2018年Java面试宝典

2018年Java面试宝典,有参考答案,再也不怕面试官了!

2018-04-11

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

TA关注的人

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