自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 JAVA面试题2020

Springcloud 主要组件请分别说明适合使用容器和虚拟机的场景请描述微服务架构的特点和适用场景清楚描述常见的23种java设计模式(中的三种)请说明CMS或G1垃圾回收器的特点和优化思路描述HDFS客户端向服务器端写入文件的过程当节点故障时,HBase节点如何保证数据不丢失Web开发考虑哪几个方面的安全问题请说明关系数据库几种事务等级的级别Linux系统通过应用的端口获取应用的内存和cpu使用情况为保证关系型数据库的性能,需要在数据库结构设计时考虑哪些因素举例3种java并发集.

2020-08-12 10:32:25 350 1

原创 浅谈Callable与Future

Callablejava5引入java.util.concurrent包,其中包含了locks包、atomic包、线程池(Executors)、阻塞队列(BlockingQueue)、Callable、Future等相关多线程解决方案。Callable的出现解决Runable没有返回值,无法抛出异常的问题。同时先线程池Executors 提供了许多方法,可以操控 Callable 在线程池中运行。FutureExecutors 执行 Callable 时会返回一个 Future 对象。使用 Futu

2020-11-05 18:18:18 209

原创 Java的引用机制

java引用机制对于Java中这几种引用的理解,有助于理解JVM的回收内存的机制。先说下在JVM执行垃圾回收时,如何处理它们所引用的对象:1)强引用,任何时候都不会被垃圾回收器回收,如果内存不足,宁愿抛出OutOfMemoryError。2)软引用,只有在内存将满的时候才会被垃圾回收器回收,如果还有可用内存,垃圾回收器不会回收。3)弱引用,只要垃圾回收器运行,就肯定会被回收,不管还有没有可用内存。4)虚引用,虚引用等于没有引用,任何时候都有可能被垃圾回收。强引用(Strong Refer

2020-10-29 16:25:50 197

原创 SpringBoot Bean加载优先级问题

spring容器载入bean顺序是不确定的,spring框架没有约定特定顺序逻辑规范。但spring保证如果A依赖B(如beanA中有@Autowired B的变量),那么B将先于A被加载。同一个类中加载顺序Constructor >> @Autowired >>@ PostConstruct>>@Bean@DependsOn控制顺序如果A不依赖B,但是A需要在B后面初始化,可以使用@DependsOn(value=“Bbeanname”)。B的@Bea.

2020-10-29 14:31:14 5727

原创 IDEA 快捷键mac版

打开设置 command+,代开项目结构 command+;查找 command+F全局查找 command+shift+F全局替换 command+shift+R查找方法引用 option+F7格式化 command+option+L下一个错误 F2上一个错误 shift+F2下一行 shift+回车自定义方法块 command+option+T单元测试类 shift+command+T优化Import control+shift+O调试下一步 F8进入方法

2020-10-14 14:23:45 141

原创 http的理解

http的三个特点:1.http协议是无状态的就是说每次HTTP请求都是独立的,任何两个请求之间没有什么必然的联系。但是在实际应用当中并不是完全这样的,引入了Cookie和Session机制来关联请求。2.多次http请求在客户端请求网页时多数情况下并不是一次请求就能成功的,服务端首先是响应HTML页面,然后浏览器收到响应之后发现HTML页面还引用了其他的资源,例如,CSS,JS文件,图片等等,还会自动发送HTTP请求这些需要的资源。现在的HTTP版本支持管道机制,可以同时请求和响应多个请求,大大提

2020-09-10 09:52:18 822

原创 SpringAOP的实现

AOP 代理其实是由 AOP 框架动态生成的一个对象,该对象可作为目标对象使用。AOP 代理包含了目标对象的全部方法,但 AOP 代理中的方法与目标对象的方法存在差异:AOP 方法在特定切入点添加了增强处理,并回调了目标对象的方法。Spring 的 AOP 代理由 Spring 的 IoC 容器负责生成、管理,其依赖关系也由 IoC 容器负责管理。因此,AOP 代理可以直接使用容器中的其他 Bean 实例作为目标,这种关系可由 IoC 容器的依赖注入提供。Spring提供了两种方式来生成代理对象: JD

2020-09-07 19:28:18 104

原创 在静态方法和非静态方法上加 Synchronized的区别

Synchronzied 修饰非静态方法==》对象锁Synchronzied 修饰静态方法==》其实是类锁,因为是静态方法,它把整个类锁起来了;情况1:同一个对象在两个线程中分别访问该对象的两个同步方法结果:会产生互斥。解释:因为锁针对的是对象,当对象调用一个synchronized方法时,其他同步方法需要等待其执行结束并释放锁后才能执行。情况2:不同对象在两个线程中调用同一个同步方法结果:不会产生互斥。解释:因为是两个对象,锁针对的是对象,并不是方法,所以可以并发执行,不会互斥。形象的来说就

2020-09-07 19:25:56 481

原创 Spring事务传播行为

所谓事务传播机制,也就是在事务在多个方法的调用中是如何传递的,是重新创建事务还是使用父方法的事务?父方法的回滚对子方法的事务是否有影响?这些都是可以通过事务传播机制来决定的。事务的传播行为,默认值为 Propagation.REQUIRED。可以手动指定其他的事务传播行为,如下:Propagation.REQUIRED如果当前存在事务,则加入该事务,如果当前不存在事务,则创建一个新的事务。Propagation.SUPPORTS如果当前存在事务,则加入该事务;如果当前不存在事务,则以非事务的方式

2020-09-07 19:20:43 96

原创 线程的生命周期

线程的生命周期包含5个阶段,包括:新建、就绪、运行、阻塞、销毁。新建:就是刚使用new方法,new出来的线程;就绪:就是调用的线程的start()方法后,这时候线程处于等待CPU分配资源阶段,谁先抢的CPU资源,谁开始执行;运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,run方法定义了线程的操作和功能;阻塞:在运行状态的时候,可能因为某些原因导致运行状态的线程变成了阻塞状态,比如sleep()、wait()之后线程就处于了阻塞状态,这个时候需要其他机制将处于阻塞状态的线程唤醒,比如调

2020-09-07 19:16:49 321

原创 数据库隔离级别

多用户并发操作可能会发生的问题1. 脏读脏读是指一个事务读取了未提交事务执行过程中的数据。2. 不可重复读不可重复读是指对于数据库中的某个数据,一个事务执行过程中多次查询返回不同查询结果,这就是在事务执行过程中,数据被其他事务提交修改了。不可重复读同脏读的区别在于,脏读是一个事务读取了另一未完成的事务执行过程中的数据,而不可重复读是一个事务执行过程中,另一事务提交并修改了当前事务正在读取的数据。3. 虚读(幻读)幻读是事务非独立执行时发生的一种现象,例如事务T1批量对一个表中某一列列值为1的数

2020-09-07 19:14:32 171

原创 乐观锁与悲观锁

悲观锁:每次访问数据线程都是处于阻塞的状态,这样提高安全性,像读锁,写锁都是用到了悲观锁,以及synchronize关键字(独占锁);缺点:可能会导致优先级高的线程等待优先级低的线程导致优先级倒序;加锁,放锁次数过多,引起性能问题乐观锁:每次访问数据线程都是运行状态,这样可以提高数据吞吐量。就假定不会发生并发冲突,最后通过比较数据来查看是否真的发生了冲突,并交由用户来决定。最典型的实现方式是CAS(compare and swap)像乐观锁适用于写比较少的情况下(多读场景),即冲突真的很少发生

2020-09-07 19:11:33 90

原创 java为什么是单继承

    Java是从C++语言上优化而来,而C++也是面向对象的, c++是多继承,经常出问题。    假设说Java是可以多继承的,比方说,我现在有一个A类,我又编写了两个类B类和C类,并且B类和C类分别继承了A类,并且对A类的同一个方法进行了重写。接下来,我再写了一个D类,并且D类以多继承的方式同时集成了B类和C类,那么D类也会继承B类和C类从A类中重写的方法,那么问题来了,D类也开始犯迷糊了,我到底应该哪个继承哪个类中的方法呢,因为类是结构性的,这样就会造成结构上的混乱。这就是多继承的菱形继承问题。

2020-09-07 19:09:16 339

原创 java内存泄漏的原因

静态集合类各种连接,如数据库连接、网络连接和IO连接等变量不合理的作用域:一般而言,一个变量的定义的作用范围大于其使用范围,很有可能会造成内存泄漏。另一方面,如果没有及时地把对象设置为null,很有可能导致内存泄漏的发生。内部类持有外部类:改变哈希值缓存泄漏监听器和回调内存泄漏八种原因总结...

2020-09-07 19:07:24 69

原创 微服务架构的特点和适用场景

微服务的特点:单一职责原则:每个服务应该负责单独的功能,正是SOLID原则之一。独立部署、升级、扩展和替换:每个服务都可以单独部署及重新部署而不影响整个系统。这使得服务很容易升级。支持异构/多种语言:每个服务的实现细节都与其他服务无关,这使得服务之间能够解耦,团队可以针对每个服务选择最合适的开发语言、工具和方法。轻量级:微服务通常有轻量级的分布式服务框架承载,采用了P2P通信,无中心节点,性能可以线性增长;第三方软件依赖减少,减少类冲突和冗余依赖,集成和升级更方便。微服务使用场景:团队规模

2020-09-07 19:05:12 1095

原创 Springcloud 主要组件

Eureka:注册中心   Eureka就好比是一个公司的后台,负责管理、记录服务提供者的信息。我们只要将我们的微服务注册到Eureka中去,我们的服务调用者在调用微服务的时候,就无需自己寻找服务,而是把自己的需求告诉Eureka,然后Eureka会把符合你需求的服务告诉你,从而完成微服务的调用。Eureka架构中的三个核心角色:①服务注册中心Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo②服务提供者提供服务的应用,可以是SpringBoot应用,..

2020-09-07 19:03:14 894

原创 阻塞队列

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

2020-08-31 20:44:03 107

转载 CountDownLatch

简单易懂的文章

2020-08-31 20:01:45 70

原创 JAVA线程池ExecutorService

线程池的优势降低系统资源消耗,通过重用已存在的线程,降低线程创建和销毁造成的消耗;提高系统响应速度,当有任务到达时,通过复用已存在的线程,无需等待新线程的创建便能立即执行;方便线程并发数的管控。因为线程若是无限制的创建,可能会导致内存占用过多而产生OOM,并且会造成cpu过度切换(cpu切换线程是有时间成本的(需要保持当前执行线程的现场,并恢复要执行线程的现场))。提供更强大的功能,延时定时线程池。线程池主要参数public ThreadPoolExecutor(int corePoolSi

2020-08-31 17:33:24 184 1

原创 WeakHashMap

java引用机制对于Java中这几种引用的理解,有助于理解JVM的回收内存的机制。先说下在JVM执行垃圾回收时,如何处理它们所引用的对象:1)强引用,任何时候都不会被垃圾回收器回收,如果内存不足,宁愿抛出OutOfMemoryError。2)软引用,只有在内存将满的时候才会被垃圾回收器回收,如果还有可用内存,垃圾回收器不会回收。3)弱引用,只要垃圾回收器运行,就肯定会被回收,不管还有没有可用内存。4)虚引用,虚引用等于没有引用,任何时候都有可能被垃圾回收。强引用(Strong Refer

2020-08-29 10:08:31 158 1

原创 ActiveMQ入门介绍与整合SpringBoot使用

MQ是消息中间件,是一种在分布式系统中应用程序借以传递消息的媒介,常用的有ActiveMQ,RabbitMQ,kafka。ActiveMQ是Apache下的开源项目,完全支持JMS1.1和J2EE1.4规范的JMS Provider实现。ActiveMQ是一种开源的基于JMS(Java Message Servie)规范的一种消息中间件的实现,ActiveMQ的设计目标是提供标准的,面向消息的,能够跨越多语言和多系统的应用集成消息通信中间件。 ActiveMQ常被应用与系统业务的解耦,异步消息的推送,增加系

2020-07-30 20:41:07 131

原创 JQuery重置form

form重置方式$("#searchForm").resetForm();外部class重置方式$(".ul-form input:not(.btn)").val("");$("select[name='selectname']").select2().val("").trigger("change");

2020-07-15 15:29:44 261

原创 MySQL数据类型简要说明

日期类型官网说明The DATE type is used for values with a date part but no time part. MySQL retrieves and displays DATE values in ‘YYYY-MM-DD’ format. The supported range is ‘1000-01-01’ to ‘9999-12-31’.The DATETIME type is used for values that contain both da

2020-06-15 14:27:07 183

原创 SpringCloud+Druid+Mysql8+MybatisPlus环境搭建

maven依赖mybatis-plus里包含了spring-boot-jdbc-starter,所以无需重复引入 <mybatis-plus.version>3.1.0</mybatis-plus.version> <druid.version>1.1.10</druid.version> <fastjson.version>1.2.47</fastjson.version> &lt

2020-06-12 17:41:49 850

原创 Maven Dependency配置说明

Dependency ScopeDependency scope is used to limit the transitivity of a dependency, and also to affect the classpath used for various build tasks.There are 6 scopes available:compileThis is the default scope, used if none is specified. Compile dependen

2020-06-12 11:26:15 1014

转载 JQuery实现table冻结列

由于公司代码框架古老使用静态html画的页面,无法使用bootstrap或easyui实现冻结列最终再github上面找到的冻结列的实现github地址https://qiuyaofan.github.io/jqTable/html展示<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><h

2020-06-09 17:31:04 2508

原创 JQuery Ajax请求(发布确认单)

var data = {};$.ajax({type:'post',url: url,data: data,dataType:"json",success: function(data){}});运行时报错415与400data = JSON.stringify(data); 解决400错误contentType:’application/json;charset=UTF-8’解决415错误

2020-06-05 16:15:32 100

原创 Oracle实现存在更新不存在插入merge into

使用merge into 实现存在即更新不存在即插入类似 mysql的on duplicate key updatemerge into BUSI_TASERIAL_STATUS btsusing ( select 'cs0001' as taserialno,'0' as notify_status from dualunion allselect 'cs0002' as taserialno,'0' as notify_status from dualunion allselect 'cs

2020-06-05 13:49:44 477

原创 MySQL实现存在更新不存在插入on duplicate key update

如果写成if not exists (select node_name from node_status where node_name = target_name) insert into node_status(node_name,ip,...) values('target_name','ip',...)else update node_status set ip = 'ip',site = 'site',... where node_name = target_name

2020-06-05 13:41:02 291 2

原创 SpringBoot配置文件读取、环境切换

面试机试:做一个根据路径动态读取propertis文件的Demo可以下通过两种方式实现:1.使用java.util.Properties通过反射将配置文件读取到实体类中2.通过SpringBoot的ConfigurationProperties自动读取文件,然后在pom文件中配置profiles,通过profiles切换Spring配置文件与properties文件第一种方法比较古老了工具类代码public static <T> T readPropertiesToObject(Cl

2020-05-15 16:41:25 414

原创 IDEA @Autowrite红线解决

File – Settings – Inspections -Spring Core – Autowring for Bean Class

2020-05-14 16:26:03 785

原创 java通过反射修改变量的值

修改带有将带有annotation的变量需要setAccessible(true)后才能修改变量的值public BaseCrawlerRequest convertToCrawlerBean(BaseCrawlerRequest bean) throws Exception { Field nameField = getNameField(bean.getClass());...

2020-05-07 16:44:47 1551 1

原创 Springboot上传下载文件,poi解析文件

上传Excel模板在controller中使用MultipartFile接收文件 /** * @Description: 通过Excel批量添加微信号 * @return: String * @Author: xpWang * @Date: 2019-12-11 */ @PostMapping("/addWeixinByExcel")...

2020-04-09 16:53:19 417

原创 Jvm加载顺序

爱的色放aasdf s

2020-04-04 10:58:37 201

原创 SpringAop实现权限校验与日志打印

使用springboot+aop实现用户的权限校验与日志的打印Base切面/** * @Description 基础切面类 * @author xpWang * @date 2020/1/6 16:13 */public class BaseAspect { protected Method method; protected Class clazz; @Po...

2020-01-15 17:39:17 443

原创 树列表查询JAVA+MYSQL

项目中用到的服务器返回给前端树列表代码实现使用sql将根节点下所有子节点都查询出来返回给Java端,只根据parentId查询,没有Level等级的需求select node_id,parent_id,ischild from ( select t1.node_id, parent_id, if(find_in_set(parent_id, @pids) > 0, @p...

2020-01-15 16:57:04 1244

原创 MySQL存储过程使用及异常处理

批量向权限表插入数据(待修改,应该加入事务处理)DROP PROCEDURE IF EXISTS proc_initData;DELIMITER $CREATE PROCEDURE proc_general_role (IN roleId INT,IN beginIndex INT,IN endIndex INT) BEGINWHILE beginIndex <= endInde...

2020-01-14 17:05:55 907

原创 SpringBoot拦截器使用

拦截器配置类@Configurationpublic class InterceptorConfig implements WebMvcConfigurer { @Autowired private MyInterceptor myInterceptor; //注册拦截器 @Override public void addInterceptors(I...

2020-01-14 16:06:20 190

原创 java程序调用wget.exe下载文件

wget命令e:\wget -r -c --limit-rate=1M -t 10 -T 60 -o d:\wgetlog\result.txt -O E:\projectTest/rhq-agent-update.log http://xxxx:8280/../opt/app/install/rhq-agent-update.log程序关键代码String cmd = wgetPath+"

2017-01-10 11:00:51 2703

原创 JSCH通过sftp下载文件

使用jsch通过ftps连接服务器端下载文件 Session session=jsch.getSession(ftpUserName, ftpHost, ftpPort); session.setPassword(ftpPassword); session.connect(); ChannelSftp channel = (ChannelSftp) session.openChannel(“

2017-01-10 10:49:04 7102

空空如也

空空如也

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

TA关注的人

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