08 2020 档案

摘要:相信有一定java开发经验的人或多或少都会遇到OutOfMemoryError的问题,这个问题曾困扰了我很长时间,随着解决各类问题经验的积累以及对问题根源的探索,终于有了一个比较深入的认识。 在解决java内存溢出问题之前,需要对jvm(java虚拟机)的内存管理有一定的认识。jvm管理的内存大致包 阅读全文
posted @ 2020-08-28 18:07 edda_huang 阅读(301) 评论(0) 推荐(0) 编辑
摘要:一个应用占用CPU很高,除了确实是计算密集型应用之外,通常原因都是出现了死循环。(友情提示:本博文章欢迎转载,但请注明出处:hankchen,http://www.blogjava.net/hankchen) 以我们最近出现的一个实际故障为例,介绍怎么定位和解决这类问题。 根据top命令,发现PID 阅读全文
posted @ 2020-08-28 17:52 edda_huang 阅读(249) 评论(0) 推荐(0) 编辑
摘要:每个人的简历上但凡写到了数据库,都会在后面顺便写一句,会数据库调优。但是问题就来了,面试官一问到数据库调优的,大家就说加索引,除了加索引大家还知道别的么?或者索引相关的点你全部都知道么?聚簇索引,非聚簇索引,普通索引,唯一索引,change buffer,表锁、行锁、间隙锁以及行锁并发情况下的最大T 阅读全文
posted @ 2020-08-28 17:02 edda_huang 阅读(199) 评论(0) 推荐(0) 编辑
摘要:为了测试sql语句的效率,有时候要不用缓存来查询。 使用 SELECT SQL_NO_CACHE ... 语法即可 SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。 目前流传的SQL_NO_CACHE不外乎两种解释: 1.对当前query不使用 阅读全文
posted @ 2020-08-28 15:16 edda_huang 阅读(3757) 评论(0) 推荐(0) 编辑
摘要:数据库优化的几个方面:SQL语句以及有效索引、数据结构、系统配置、硬件 1. SQL以及索引的优化是最重要的。首先要根据需求写出结构良好的SQL,然后根据SQL在表中建立有效的索引。但是如果索引太多,不但会影响写入的效率,对查询也有一定的影响。2. 要根据一些范式来进行表结构的设计。设计表结构时,就 阅读全文
posted @ 2020-08-28 11:27 edda_huang 阅读(756) 评论(0) 推荐(0) 编辑
摘要:我在面试 Java初级开发的时候,经常会问:你有没有重写过hashcode方法?不少候选人直接说没写过。我就想,或许真的没写过,于是就再通过一个问题确认:你在用HashMap的时候,键(Key)部分,有没有放过自定义对象?而这个时候,候选人说放过,于是两个问题的回答就自相矛盾了。 最近问下来,这个问 阅读全文
posted @ 2020-08-16 00:07 edda_huang 阅读(448) 评论(0) 推荐(0) 编辑
摘要:1、做MySQL优化,我们要善用EXPLAIN查看SQL执行计划 2、SQL语句中IN包含的值不应过多 MySQL对于IN做了相应的优化,即将IN中的常量全部存储在一个数组里面,而且这个数组是排好序的。但是如果数值较多,产生的消耗也是比较大的。再例如:select id from t where n 阅读全文
posted @ 2020-08-15 23:43 edda_huang 阅读(95) 评论(0) 推荐(0) 编辑
摘要:在面试时,经过寒暄后,一般面试官会让介绍项目经验 。常见的问法是,说下你最近的(或最拿得出手的)一个项目。 根据我们的面试经验,发现有不少候选人对此没准备,说起来磕磕巴巴,甚至有人说出项目经验从时间段或技术等方面和简历上的不匹配,这样就会造成如下的后果。 1 第一印象就不好了,至少会感觉该候选人表述 阅读全文
posted @ 2020-08-15 22:43 edda_huang 阅读(245) 评论(0) 推荐(0) 编辑
摘要:我一直认为Code Review(代码审查)是软件开发中的最佳实践之一,可以有效提高整体代码质量,及时发现代码中可能存在的问题。包括像Google、微软这些公司,Code Review都是基本要求,代码合并之前必须要有人审查通过才行。 然而对于我观察到的大部分软件开发团队来说,认真做Code Rev 阅读全文
posted @ 2020-08-15 21:57 edda_huang 阅读(132) 评论(0) 推荐(0) 编辑
摘要:前言 结合自己的工作和平时学习的体验重新谈一下为什么要进行代码优化。在修改之前,我的说法是这样的: 就像鲸鱼吃虾米一样,也许吃一个两个虾米对于鲸鱼来说作用不大,但是吃的虾米多了,鲸鱼自然饱了。 代码优化一样,也许一个两个的优化,对于提升代码的运行效率意义不大,但是只要处处都能注意代码优化,总体来说对 阅读全文
posted @ 2020-08-15 20:23 edda_huang 阅读(142) 评论(0) 推荐(0) 编辑
摘要:以往进行web项目开发都需要在web.xml配置servlet、filter、listener,在Servlet3.0可以通过注解的方式配置它们(注意:必须用tomcat7以上版本) @WebServlet @WebServlet("/hello") public class HelloServle 阅读全文
posted @ 2020-08-13 16:14 edda_huang 阅读(278) 评论(0) 推荐(0) 编辑
摘要:AnnotationConfigApplicationContext(IOC容器)的有参构造方法中,在refresh()里对这些组件进行初始化 BeanPostProcessor bean后置处理器,bean创建对象初始化前后进行拦截工作的 BeanFactoryPostProcessor refr 阅读全文
posted @ 2020-08-12 23:34 edda_huang 阅读(190) 评论(0) 推荐(0) 编辑
摘要:一、环境搭建 导入Spring-jdbc模块 @EnableTransactionManagement 开启基于注解的事务管理功能 等同于xml配置<tx:annotation-driven/> 配置事务管理器来控制事务 @Bean public PlatformTransactionManager 阅读全文
posted @ 2020-08-12 00:11 edda_huang 阅读(100) 评论(0) 推荐(0) 编辑
摘要:1、实现ServletContextListener、ApplicationContextAware两个接口,在销毁方法里借助ApplicationContextAware注入的application对象使用2、实现ApplicationListener,自己添加需要用到的依赖对象(参考https: 阅读全文
posted @ 2020-08-11 11:37 edda_huang 阅读(147) 评论(0) 推荐(0) 编辑
摘要:在spring容器初始化bean和销毁bean的以前的操作有很多种, 目前我知道的有:在xml中定义的时候用init-method和destory-method,还有一种就是定义bean的时候实现DisposableBean和InitializingBean 这两个接口,打开Initializing 阅读全文
posted @ 2020-08-10 16:58 edda_huang 阅读(737) 评论(0) 推荐(0) 编辑
摘要:InitializingBean顾名思义,应该是初始化Bean相关的接口。 先看一下该接口都定义了哪些方法: public interface InitializingBean { void afterPropertiesSet() throws Exception; } 看方法名,应该是在读完Pr 阅读全文
posted @ 2020-08-10 16:53 edda_huang 阅读(472) 评论(0) 推荐(0) 编辑
摘要:一、动态代理 在程序运行期间动态的将某段代码切入到指定方法指定位置进行运行的编程方式 导入aop依赖(spring-aspects) 业务逻辑组件和切面类生成的实例对象都必须是注册在ioc容器中的(自己创建的对象是不会执行切面方法的);在定义的切面类上标注@Aspect、配置类上标注@EnableA 阅读全文
posted @ 2020-08-08 17:54 edda_huang 阅读(113) 评论(0) 推荐(0) 编辑
摘要:Spring利用依赖注入(DI)完成对IOC容器中中各个组件的依赖关系赋值 一、@Autowired 默认优先按照类型去容器中找对应的组件(applicationContext.getBean(BookDao.class)) 如果找到多个相同类型的组件,再将属性的名称作为组件的id去容器中查找(ap 阅读全文
posted @ 2020-08-07 00:03 edda_huang 阅读(176) 评论(0) 推荐(0) 编辑
摘要:一、@Value 基本数值 可以写SpEL; #{} 可以写${}取出配置文件【properties】中的值(在运行环境变量里面的值) @Value("张三") private String name; @Value("#{20-2}") private Integer age; @Value("$ 阅读全文
posted @ 2020-08-06 22:52 edda_huang 阅读(130) 评论(0) 推荐(0) 编辑
摘要:https://www.jianshu.com/p/70b935f2b3fe bean的生命周期 bean创建 初始化 销毁的过程 容器管理bean的生命周期 对象创建:容器启动后调用bean的无参构造函数创建bean 单实例:在容器启动的时候创建对象 多实例:在每次获取的时候创建对象 初始化:对象 阅读全文
posted @ 2020-08-06 17:56 edda_huang 阅读(405) 评论(0) 推荐(0) 编辑
摘要:一、@Configuration+@Bean @Configuration:配置类==配置文件 @Bean:给容器中注册一个Bean;类型为返回值的类型,默认是用方法名作为id @Bean("person") public Person person01(){ return new Person() 阅读全文
posted @ 2020-08-05 23:31 edda_huang 阅读(200) 评论(0) 推荐(0) 编辑
摘要:在Executor、StatementHandler、parameterHandler、resultSetHandler创建的时候都有一步这样的操作xxxHandler=interceptorChain.pluginAll(xxxHandler);而这个方法会获取到所有的Interceptor(拦截 阅读全文
posted @ 2020-08-05 14:22 edda_huang 阅读(102) 评论(0) 推荐(0) 编辑
摘要:分页插件 使用pageHelper参考官方https://github.com/pagehelper/Mybatis-PageHelper/blob/master/wikis/zh/HowToUse.md 批处理 mybatis批处理 修改构建sqlsession对象的方式即可 SqlSession 阅读全文
posted @ 2020-08-04 16:55 edda_huang 阅读(213) 评论(0) 推荐(0) 编辑
摘要:一、mybatis分层图 二、运行流程 根据全局配置文件创建sqlSessionFactory对象 根据全局配置文件的io流来构建SqlSessionFactoryBuilder对象: 解析(XmlConfigBuilder遍历全局配置文件的每一项节点)全局配置文件里的每一个配置项;每一个配置项都会 阅读全文
posted @ 2020-08-03 23:56 edda_huang 阅读(195) 评论(0) 推荐(0) 编辑
摘要:缓存原理 一级缓存(本地缓存) sqlSession级别的缓存(map) 工作机制 与数据库同一次会话期间查询到的数据会放在本地缓存中,以后如果需要获取相同的数据,直接从缓存中拿,没必要再去查询数据库 一级缓存失效情况 sqlSession不同;(多个sqlSession对象发出相同的查询请求,都会 阅读全文
posted @ 2020-08-03 21:33 edda_huang 阅读(94) 评论(0) 推荐(0) 编辑
摘要:一、导入依赖 spring的相关jar mybatis相关jar mybatis、mybatis-spring整合的jar以及数据库驱动、数据源 框架配置 mybatis配置 全局配置文件(可以留下一些经常变动的配置,其他在spring配置SqlSessionFactoryBean的时候创建) ma 阅读全文
posted @ 2020-08-03 16:25 edda_huang 阅读(135) 评论(0) 推荐(0) 编辑
摘要:一、增删改查 mybatis允许增删改的方法直接定义返回值为Integer、Long、Boolean、void这些类型的,mybatis会自动帮我们封装返回值 sqlSessionFactory.openSession(),获取到的SqlSession不会自动提交数据,我们需要手动提交数据;sqlS 阅读全文
posted @ 2020-08-01 19:25 edda_huang 阅读(152) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示