- 博客(32)
- 资源 (1)
- 收藏
- 关注
原创 关于踩坑:swagger中参数和实际代码中不一致的问题
突然前端说:接口不好使,我试了试发现好用呀,前端扔过来一张图片:传的参数和我定义的完全不一样,撕逼一通发现是swagger的问题swagger中的参数和实际代码中不一样,经过咨询度娘发现定义@ApiModel的时候,有两个类的value值相同,这样的情况下swagger认为这个同一个东西,会优先取第一个(盗一个图,原作者看到的备注下原博文的链接哈)写代码还是要多多注意噻~...
2021-04-09 10:45:44
4151
5
原创 学习设计模式的第一天:单例模式Singleton
一 什么是单例模式单例单例,顾名思义,就是在内存中确保存在一个实例对象。单例模式下类不会对外暴露new方法,而是提供一个自定义的方法来获取类的对象,比如getInstance()方法。二 使用场景什么情况下会使用单例模式呢?1、会频繁new对象 用完又销毁的情况下,可以考虑单例2、频繁读io文件的时候,比如各种配置...
2021-04-08 16:33:59
112
1
原创 经验:关于springBoot打包war包后,无法在外部tomcat中启动
情况分析:1、tomcat启动成功2、没有加载项目解决方法:1、检查启动类是否实现 SpringBootServletInitializer 类2、内置tomcat问题
2020-04-13 16:21:42
596
转载 Spring事务失效的 8 大原因
用 Spring 的@Transactional注解控制事务有哪些不生效的场景?1、数据库引擎不支持事务这里以 MySQL 为例,其 MyISAM 引擎是不支持事务操作的,InnoDB 才是支持事务的引擎,一般要支持事务都会使用 InnoDB。根据 MySQL 的官方文档:https://dev.mysql.com/doc/refman/5.5/en/storage-en...
2020-01-07 13:10:00
2468
1
原创 HashMap源码分析与实现
HashMap源码分析与实现一、什么是HashMap二、源码分析三、手写实现四、从伸缩性角度看不足一、什么是HashMapHash散列将一个任意的长度通过某种(hash函数算法)算法转换成一个固定的值。移位Map:地图 x,y存储总结:通过Hash出来的一个值,然后通过这个值定位到map然后把value存储到这个map中。二、源码分析/*** 初始化容量,1左移4位 16容量*/...
2019-03-28 09:26:05
241
原创 关于sql优化问题
定位:查找、定位慢查询优化手段:创建合适的索引,我们就可以现在索引中查询,查询到以后直接找对应的记录。 分表 :当一张表的数据比较多或者一张表的某些字段的值比较多并且很少使用时,采用水平分表和垂直分表来优化 读写分离:当一台服务器不能满足需求时,采用读写分离的方式进行集群 缓存:使用redis来进行缓存 一些常用优化技巧查找慢查询并定位慢查询(mysql)...
2019-03-27 21:52:13
233
原创 Linux 常用命令
pwd 获取当前路径cd 跳转到目录su -u 切换到管理员ls 或者 ll列举目录文件操作命令:文件tail 查看rm -rf 删除文件vi 修改文件夹mkdir 创建rm -r 删除远程连接Linux服务器ssh服务端,22端口 如:Xshellsftp服务器,25端口,如fileZilla、ftp...
2019-03-27 21:06:26
116
转载 Hibernate的状态以及缓存问题
Hibernate的状态临时状态/瞬时状态(transient):刚刚用new语句创建,没有被持久化不处于session中(没有使用session的方法去操作临时对象)。该对象成为临时对象持久化状态/托管状态(persistent):已经被持久化,加入到session的缓存中。session是没有关闭该状态的对象为持久化对象。游离状态/脱管状态(detached):已经被持久化,但...
2019-03-27 20:58:16
429
原创 iBatis(mybatis)与Hibernate有什么不同
相同点:都是java中orm框架、屏蔽jdbc api的底层访问细节,使用我们不用与jdbc api打交道,就可以完成对数据库的持久化操作。jdbc api编程流程固定,还将sql语句与java代码混杂在了一起,经常需要拼凑sql语句,细节很繁琐。ibatis的好处:屏蔽jdbc api的底层访问细节;将sql语句与java代码进行分离;提供了将结果集自动封装称为实体对象和对象...
2019-03-27 20:29:23
382
原创 SpringMVC执行流程
1. 核心控制器捕获请求2. 查找Handler3. 执行Handler4. 选择ViewResolver5. 通过ViewResolver渲染视图并返回
2019-03-27 20:25:38
118
原创 MVC模式和框架
MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写最简单的、最经典就是Jsp(view) +Servlet(controller) + JavaBean(model)当控制器收到来自用户的请求 控制器调用JavaBean完成业务 完成业务后通过控制器跳转JSP页面的方式给用户反馈信息 Jsp...
2019-03-27 19:15:28
256
原创 Struts2框架原理以及步骤
浏览器发送请求,经过一系列的过滤器后,到达核心过滤器(StrutsPrepareAndExecuteFilter). StrutsPrepareAndExecuteFilter通过ActionMapper(Action映射)判断当前的请求是否需要某个Action处理,如果不需要,则走原来的流程。如果需要则把请求交给ActionProxy(代理)来处理 ActionProxy(代理)通过Co...
2019-03-27 19:07:36
420
转载 面试经验:Mybatis中#和$的区别
动态 sql 是 mybatis 的主要特性之一,在 mapper 中定义的参数传到 xml 中之后,在查询之前 mybatis 会对其进行动态解析。mybatis 为我们提供了两种支持动态 sql 的语法:#{} 以及 ${}。在下面的语句中,如果 username 的值为 zhangsan,则两种方式无任何区别:select * from user where name = #{name}...
2019-03-27 15:51:31
166
原创 面试经验:求集合A、B 非交集的部分
求集合A、B 非交集的部分方法一:循环一个数组,利用list的contains方法方法二:多次循环匹配,利用list的contains方法方法三:利用removeAll方法方法四:利用map方法有很多种,我能想到哪些尽量写出来,大家可以在评论中继续补充List<String> a=new ArrayList<String>();a.add("aaa");a.add(...
2019-03-27 15:11:45
1006
原创 笔记:JVM垃圾回收机制
垃圾回收机制GC发生在JVM什么位置GC(分代收集算法)的分类GC 的算法引用计数法复制算法(Coping)标记清除(Mark-Sweep)标记压缩(Mark-Compact)标记清除压缩(Mark-Sweep-Compact)GC发生在JVM什么位置GC是发生在堆里面GC(分代收集算法)的分类次数频繁收集年轻区 Young区—— Minor GC次数上较少收集老年区Old区—— F...
2019-03-20 17:08:52
150
原创 经验:mysql什么时候创建索引
索引什么是索引优势劣势什么时候需求创建索引哪些情况不要创建索引什么是索引MySQl官方对索引的定义为:索引(index)是帮助Mysql高效获取数据的数据结构索引通常以索引文件的形式存储在磁盘上优势类似大学图书馆建书目索引,提高检索数据的效率,降低数据库的IO成本通过索引对数据进行排序,降低数据排序的成本,降低CPU的消耗劣势虽然索引提高了查询速度,同时却会降低更新表的速...
2019-03-20 16:44:12
2491
原创 笔记:Redis持久化
Redis持久化分类RDB特点备份如何执行优点缺点AOF备份过程优点缺点分类RDB特点在指定的时间间隔内将内存中的数据快照写入磁盘,也就是行话2将的Snapshot快照,它回复时是将快照文件直接读到内存里备份如何执行备份时会单独创建(fork)一个进程来持久化,会先将数据写入一个临时文件中,再做全量替换整个过程中,主进程是不进行任何IO操作的,确保了极高的性能。如果需要进行大规模...
2019-03-20 16:35:04
103
原创 经验:git 分支相关命令
分支命令创建分支切换分支合并分支删除分支创建分支git branch <分支名>git branch-v 查看分支切换分支git checkout <分支名>一步完成创建并进入:git checkout -b <分支名>合并分支先切换到主干: git checkout mastergit merge <分支名>删除分支先切换到主...
2019-03-20 16:24:56
103
原创 经验:linux系统,常用的命令
linux命令Service(centos6)运行级别runlevel(centos6)systemctl(centos7)Service(centos6)注册在系统中的标准化程序有方便统一的管理方法(常用方法)service 服务名 startservice 服务名 stopservice 服务名 restartservice 服务名 status查看服务的方法 /etc...
2019-03-20 16:16:23
123
原创 经验:MyBatis中当实体类中的属性名和表中字段不一致的处理方式
方法一:查询sql语句时起别名方法二:mybatis的全局配置文件中开启驼峰命名规则mybatis-config.xml可以将数据库中的下划线映射为驼峰命名例如:last_name可以映射为lastName<configuration><settings> <setting name="mapUnderscoreToCamelCase" val...
2019-03-20 16:01:44
620
原创 笔记:SpringMVC的工作流程
SpringMVC工作流程处理模型数据的两种方法处理模型数据的两种方法将方法的返回值设置为ModelAndView在方法的入参里面设置为Map、Model或ModelMap,返回String不管将处理器方法的返回值设置为ModelAndView还是在方法的入参中传入Map、Model或者ModelMap,SpringMVC都会转换为一个ModelAndView对象...
2019-03-20 15:54:08
120
原创 笔记:SpringMVC中如何解决POST/GET请求中文乱码问题
中文乱码解决POST中文乱码问题解决GET中文乱码问题关于CharacterEncodingFilter解决POST中文乱码问题在web.xml中添加CharacterEncodingFilter过滤器,设置编码格式 <filter> <filter-name>CharacterEncodingFilter</filter-name> ...
2019-03-20 15:18:51
301
原创 笔记:Spring之常用数据库事务传播属性和事务的隔离级别
Spring事务传递传播属性什么是事务传播属性Spring定义的7种类传播行为实现1. REQUIRED2. REQUIRES_NEW3. 其他几种同理**事务的隔离级别****数据库事务并发问题****脏读****不可重复读****幻读**事物隔离级别读未提交 Isolation.READ_UNCOMMITTED读已提交 Isolation.READ_COMMITTED可重复读: Isola...
2019-03-20 15:02:30
664
原创 笔记:关于Java代码中方法执行顺序问题——进阶
关于Java代码中方法执行顺序问题——进阶1、类初始化过程2、 实例初始化3、方法的重写Override4、对象的多态性5、关于this6、代码实例代码加载过程分析最终执行结果1、类初始化过程一个类要创建实例需要先加载并初始化该类main方法所在的类需要先加载和初始化一个子类要初始化需要先初始化父类一个类初始化就是执行()方法:类初始化方法()方法由静态类变量显示赋值代码和静态代码块组...
2019-03-20 13:09:27
419
原创 笔记:关于参数传递问题
关于参数传递问题形参与实参不同数据类型赋值代码示例形参与实参形参:在被调用的时候才会分配内存,调用结束后立即释放(局部变量)。实参:各种数据类型(常量、变量、表达式、函数等),在进行调用时必须有确定的值。不同数据类型赋值基本数据类型:数据值(八种数据类型)引用数据类型:地址值代码示例以下为代码实例,关于方法参数传递机制public class Exam4 { pu...
2019-03-20 13:09:22
123
原创 笔记:6种单例模式
6种单例模式什么是单例模式代码要点分类饿汉模式: 直接创建对象,不存在线程安全问题直接实例化(简洁直观)枚举式(最简洁)静态代码块饿汉式(适合复杂实例化)懒汉式:延迟创建对象线程不安全(适用于单线程)线程安全(适用于多线程)静态内部类形式(适用于多线程)总结:什么是单例模式Singleton:单例设计模式,某各类在整个系统中只能有一个实例对象可被获取和使用的代码模式例如:jvm运行环境的R...
2019-03-20 13:09:16
226
原创 笔记:Java从入门到精通之数组排序(冒泡、直接、反转)
Java从入门到精通之数组排序(冒泡、直接、反转)一、冒泡排序:思路代码二、直接排序算法思路与冒泡排序相比代码三、反转排序思路代码练习题:将二维数组的行和列互换位置一、冒泡排序:思路对比相邻的元素值,如果满足条件就交换元素值,把比较小的元素移动到数组前面,把大的元素移动到数组后吗,这样较小的元素就像旗袍一样从底部上升到顶部代码public class BubbleSort { p...
2019-03-20 13:09:08
286
原创 笔记:关于成员变量和局部变量问题
关于成员变量和局部变量问题区别声明位置不同修饰符值存储的位置作用域生命周期局部变量和其他类型变量区分代码示例区别声明位置不同局部变量:方法体{}中,形参,代码块{}中成员变量:类中方法外类变量:有static修饰实例变量:没有static修饰修饰符局部变量:final成员变量:public、protected、private、final、static值存储的位置...
2019-03-20 13:08:58
241
原创 笔记:Spring的Bean实例的作用域
Spring bean 实例作用域作用域类型代码测试作用域类型在Spring中,可以在元素的属性中设置bean的作用域,以决定这个bean是单例的还是多实例的默认情况下,Spring只为每个在IOC容器里生命的bean创建唯一一个实例,整个IOC容器范围内都能共享该实例:所有后续的getBean()调用和bean引用都将返回这个唯一bean实例。该作用于被称为singleton,它是所有be...
2019-03-20 13:08:53
199
原创 java线程问题
两种实现方式1、继承java.lang.Thread2、实现java.lang.Runnable调用Thread子类的start()方法,产生一个新的线程,该线程运行Thread子类的run()方法线程的生命周期出生状态:线程被创建时处于的状态,在调用start()前都是出生状态就绪状态:调用start()方法后运行状态:线程得到系统资源后进入运行状态,t.notify...
2019-03-13 15:28:17
74
原创 关于Java代码中方法执行顺序问题
方法的执行顺序:静态代码块>构造代码块>构造函数>普通代码块 public class RunSortTest { private static int a=0; static{ System.out.println("static code 1 run"); } public RunSortTest(){ ...
2019-03-11 13:32:30
283
原创 Java从入门到精通之类的三大特性
面向对象程序设计的三大特点封装性 继承性 多态性封装封装是面向对象编程的核心思想。将对象的属性和行为封装起来,其载体就是类,类通常对客户隐藏其实现细节,这就是封装的思想采用封装的思想保证了类内部数据结构的完整性,应对该类的用户不能轻易地直接操作次数据结构,只能执行类允许公开的数据眯着眼就避免了外部操作对内部数据的影响,提高了程序的可维护性。继承继承性主要利用特定对象之间...
2019-03-05 15:19:19
83
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人