java

浅谈Java实现回溯算法之八皇后问题

2021-06-16
目录 一.前言 二.浅谈递归 三.回溯算法 四.八皇后问题 五.八皇后变种 六.总结 一.前言 说起八皇后问题,它是一道回溯算法类的经典问题,也可能是我们大部分人在上数据结构或者算法课上遇到过的最难的一道题-- 二.浅谈递归 对于递归算法,我觉得掌握递归是入门数据结构与算法的关键,因为后面学习很多操作涉及到递归,例如链表的一些操作.树的遍历和一些操作.图的dfs.快排.归并排序等等. 递归的实质还是借助栈实现一些操作,利用递归能够完成的操作使用栈都能够完成,并且利用栈的话可以很好的控制停止,效率

JavaScript实现贪吃蛇游戏

2021-06-16
本文实例为大家分享了JavaScript实现贪吃蛇游戏的具体代码,供大家参考,具体内容如下 通过JavaScript,我们可以实现贪吃蛇游戏,具体功能如下: (1)通过按上下左右键来改变蛇的移动方向 (2)若蛇撞到自己,则游戏结束 (3)蛇移动出地图边缘时,会从地图的另一边进来 (4)长按方向键,蛇加速移动 (5)蛇吃到食物后,重新生成食物 完整代码如下: <!DOCTYPE html> <html lang="en"> <head> <met

详解Java双轴快速排序算法

2021-06-16
目录 一.前言 二.回顾单轴快排 三.双轴快排分析 3.1.总体情况分析 3.2.k交换过程 3.3.收尾工作 四.双轴快排代码 一.前言 首选,双轴快排也是一种快排的优化方案,在JDK的Arrays.sort()中被主要使用.所以,掌握快排已经不能够满足我们的需求,我们还要学会双轴快排的原理和实现才行. 二.回顾单轴快排 单轴快排也就是我们常说的普通快速排序,对于快速排序我想大家应该都很熟悉:基于递归和分治的,时间复杂度最坏而O(n2),最好和平均情况为O(nlogn). 而快排的具体思路也很

新手入门Jvm--jvm概览

2021-06-16
目录 1. 什么是Jvm 2. Jvm组成 2.1 Jdk体系结构 2.2 Jvm体系结构 3. 类加载机制 3.1 流程 3.2 类加载器和双亲委派机制 3.3 类加载器初始化过程 3.4 双亲委派机制 3.5 为什么要设计双亲委派机制? 3.6 全盘负责委托机制 4. Jvm各区域串联 5. 总结 1. 什么是Jvm JVM是Java Virtual Machine(Java虚拟机)的缩写,JVM是一种用于计算设备的规范,它是一个虚构出来的计算机,是通过在实际的计算机上仿真模拟各种计算机功能

基于Spring BeanUtils的copyProperties方法使用及注意事项

2021-06-16
如下所示: package com.demo; import lombok.Data; import org.springframework.beans.BeanUtils; import java.util.Arrays; import java.util.List; /** * @author xiaobu * @version JDK1.8.0_171 * @date on 2019/10/8 10:04 * @description */ public class BeanUtilsTe

springboot利用redis、Redisson处理并发问题的操作

2021-06-16
一.引入问题 在工作中,遇到的接口基本都是长这样的: 如下为一个库存扣减的接口.从redis中获取库存数量,然后扣减一个数量 问题这个接口在并发的情况下是有问题,可以用jmeter测试一下(用postman压力测试了一下,没有测出并发问题.网上有的博客说postman没法测试并发) jmeter设置:100个并发 打印结果: 问题很严重呀 解决方案,优化如下: jmeter设置:101个并发,stock=100,则正确结果是应该会出现一次"扣减失败,库存不足" 打印如下,没毛病 二.如

Java web中 war exploded 的解决方案

2021-06-15
Java web war exploded 解决 当出现这个问题时先不要慌 检查这两个地方的 " / "加上没 改成 或web.xml 中的配置地址时是不是忘了加" / " 导入Java web项目 生成war exploded 遇到的问题: 导入wab项目时,tomcat–>Deployment设置,加入不了新导入的项目的war exploded 解决方案: 1.导入项目:Priject Structure->module---->import

解决spring项目找不到Aspect依赖注解的问题

2021-06-15
spring项目找不到Aspect依赖注解 昨天写一个项目的时候在使用Aspect时一直找不到依赖,alt+enter自动添加Maven依赖还是解决不了问题. 在这里记录下,希望能对大家有帮助. 在pom.xml中添加一下依赖: <dependency> <groupId>org.aspectj</groupId> <artifactId>aspectjweaver</artifactId> </dependency> <dep

Spring实现类私有方法的几个问题(亲测通用解决方案)

2021-06-15
现实的业务场景中,可能需要对Spring的实现类的私有方法进行测试. 场景描述: 比如XXXService里有 两个函数a.函数b. 而实现类XXXServiceImpl中实现了函数a.函数b,还包含私有方法函数c和函数d. 要写一个XXXTestController来调用XXXServiceImpl的函数c. 面临几个问题: 1.如果注入接口,则无法调用实现类的私有类. 2.如果注入实现类,则需要将实现类里的私有方法改为公有的,而且需要设置@EnableAspectJAutoProxy(pro

redis分布式锁RedissonLock的实现细节解析

2021-06-15
redis分布式锁RedissonLock 简单使用 String key = "key-lock"; RLock lock = redisson.getLock(key); lock.lock(); try { // TODO } catch (Exception e){ log.error(e.getMessage(), e); } finally { lock.unlock(); } String key = "key-tryLock"; long maxWa

说说@ModelAttribute在父类和子类中的执行顺序

2021-06-15
@ModelAttribute在父类.子类的执行顺序 被 @ModelAttribute 注解的方法会在Controller每个方法执行之前都执行,因此对于一个Controller中包含多个URL的时候,要谨慎使用. 执行顺序: 先执行子类 @ModelAttribute 注解的方法,再执行父类中 @ModelAttribute 注解的方法. @ModelAttribute原理概述以及使用注意点 @ModelAttribute注解修饰的方法: 1.从数据库中取出对象,把对象放到Map中,键为us

MapStruct到底是什么?

2021-06-15
一.简介 现在的分布式系统中模块划分越来越细,不同模块的实体.DTO.DO等需要进行转换,这么多工程处理起来不是那么简单. MapStruct 就是这样的一个属性映射插件,用于为Java Bean生成类型安全且高性能的映射.它基于编译阶段生成get/set代码,此实现过程中没有反射,不会造成额外的性能损失.只需要定义一个 Mapper 接口,MapStruct 就会自动实现这个映射接口,避免了繁琐的映射实现.

浅谈Java开发架构之领域驱动设计DDD落地

2021-06-15
目录 一.前言 二.开发目标 三.服务架构 3.1.应用层{application} 3.2.领域层{domain} 3.3.基础层{infrastructrue} 3.4.接口层{interfaces} 四.开发环境 五.代码示例 六.综上总结 一.前言 整个过程大概是这样的,开发团队和领域专家一起通过 通用语言(Ubiquitous Language)去理解和消化领域知识,从领域知识中提取和划分为一个一个的子领域(核心子域,通用子域,支撑子域),并在子领域上建立模型,再重复以上步骤,这样周而

MyBatis拦截器的原理与使用

2021-06-15
目录 二.拦截器注册的三种方式 1.XML注册 2.配置类注册 3.注解方式 三.ParameterHandler参数改写-修改时间和修改人统一插入 四.通过StatementHandler改写SQL 一.拦截对象和接口实现示例 MyBatis拦截器的作用是在于Dao到DB中间进行额外的处理.大部分情况下通过mybatis的xml配置sql都可以达到想要的DB操作效果,然而存在一些类似或者相同的查询条件或者查询要求,这些可以通过拦截器的实现可以提升开发效率,比如:分页.插入和更新时间/人.数据权

解决BeanUtils.copyProperties不支持复制集合的问题

2021-06-15
工作中,经常使用Spring的工具类BeanUtils.copyProperties对bean属性进行复制,这里的复制属于浅复制.且不能复制集合和数组.本文会对该工具进行一些测试. 文末会提出复制集合属性的解决方案 准备工作:准备测试需要的类 @Data public class Class { private People[] member; private People teacher; private List<People> student; } @Data @NoArgsConstr

解决Beanutils.copyproperties实体类对象不一致的问题

2021-06-15
今天给大家分析一个解决Beanutils.copyproperties实体类对象名不一致的解决方法,一般我们在两个对象拷贝的问题上,我个人用的比较多的就是Beanutils.copyproperties,字段名如果不一致的话就去实体类中使用重载,把当前实体类的对象赋值给另外一个对象,也有用到set(),当然这些也都能解决Beanutils.copyproperties实体类属性不一致的问题,不过今天要给大家分享的是,不用set()和实体类的重构,使用类的反射机制去完成! 话不多说直接开始: 我是

一篇带你入门Java垃圾回收器

2021-06-15
目录 1 垃圾回收算法 1-1 标记清除算法 算法思想 1-2 标记整理算法 1-3 复制算法 2 JVM分代回收算法 2-1 概述 2-2 分代垃圾回收示例 2-3 分代垃圾回收的总结 对象首先分配在伊甸园区域 2-5 垃圾回收案例分析 2 垃圾回收器 2-1 垃圾回收器概述 2-2 串行垃圾回收器 2-3 吞吐量优先的垃圾回收器 2-4 响应时间优先的垃圾回收器(CMS垃圾回收器) 总结: 第一阶段:串行垃圾回收器:jdk1.3.1之前Java虚拟机仅仅只支持Serial收集器 第二阶段:并

基于javaMybatis存进时间戳的问题

2021-06-15
java Mybatis存进时间戳 封装了一个实体类,里面有个字段 Integer createTime. 要利用这个实体类将一个时间戳存进数据库中. 刚开始的时候出现错误: Data truncation: Incorrect datetime value: '123456789' for column 'create_time' at row 1 是存进数据库的时候出现了问题,个人理解应该是Integer类型和数据库中的Timestamp类型不匹配. 之后把封装类里createTime的类型

SpringAOP切入点规范及获取方法参数的实现

2021-06-15
切入点规范 @Pointcut("execution(* com.example.server.service.TeacherService.*(..))") 上面的切入点会切入com.example.server.service.TeacherService下面的所有方法. 下面来详细介绍一下切入点表达式的规范. 1.execution():表达式主体. 2.第一个位置:表示返回类型, *号表示所有的类型. 3.第二个位置:表示需要拦截的包名.类名.方法名(方法参数). 需要注意的是

mybatis框架order by作为参数传入时失效的解决

2021-06-15
mybatis order by作为参数传入失效 mxl中的语句如下 <select id="statToday" resultType="com.dahua.la.business.model.vo.StatSysResultVO"> select a, b, count(1) as total from table where a is not null and b is not null and operateTime >= #{startT