自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 深入探讨ThreadLocal和对象引用

因为Entry被map强引用着,所以不会被回收,Entry的value引用所指向的对象被Entry强引用着也不会被回收,所以存在内存泄漏。因此,线程使用完了ThreadLocal需要显式的调用其remove()方法清除对Entry、Value的强引用,这个remove()方法会不管有没有同时清除对Reference对象的软引用。核心问题:ThreadLocalMap中Entry继承了WeekReference,为什么要这样做?只被弱引用关联的对象。

2023-04-29 20:03:16 111 2

原创 操作系统管理内存

因为每个页的大小是相同的,进程可以通过页号来使用一块内存。有内部碎片的产生,因为可能进程用不了一页内存,但还是按一页为最小单位为其分配内存,但内部碎片不会超过一个页的大小。缺点:程序全部装入内存中,因为是按页来分配内存,对于程序来说无法根据程序逻辑装入(比如只装入一个方法),因此会将程序的所有指令和数据都装入到内存中。优点:不用将程序全部装入到内存中,可以只装入某个程序的方法指令和数据,段可以被共享。逻辑地址分两部分:段号、位移量(段内地址)逻辑地址分三部分:段号、段内页号、页内地址。

2023-04-29 12:11:47 80

原创 SpringBoot整合log4j(properties配置)踩坑

springboot1.3及以前版本整合log4j,通过properties配置日志,只需引入spring-boot-starter-logger包。springboot1.3以后版本整合log4j,通过xml配置日志,引入spring-boot-starter-logger包。如果想要通过properties配置,需要排除spring-boot-starter-logger包以及其他包中所有...

2019-04-11 12:09:24 3207

原创 springBoot通过@Value注入json文件踩坑

问题描述测试服务的版本是Spring Cloud Dalston.SR5 在Spring Boot中配置https时,代码如下: @Bean @ConditionalOnExpression("#{ ${self.https.enable:false}}") public EmbeddedServletContainerFactory servletContainer...

2019-04-04 20:06:40 4929

原创 HttpServletRequestWrapper替代HttpServletRequest

本文解析以下两个方面1.HttpServletRequestWrapper的作用HttpServletRequest采用装饰者模式包装了HttpServletRequest,客户端发送请求后,容器实例化了一个org.apache.catalina.connector.RequestFacade对象并赋值给了HttpServletRequest RequestFacade采用外观模式包装了...

2019-04-04 16:15:26 3267 1

原创 Integer != 0(Integer为NULL时NullPointerException的问题)

原因:Integer是int的包装类,在与int做条件判断时,Integer会进行拆箱(转化为int),此时如果Integer为null就会出现NullPointerException————————————包括其他基本数据类型也是如此因此在使用基本数据类型的包装类与基本数据类型做条件判断时,一定要先判断该包装类是否为NULL...

2019-03-14 11:32:24 6402

原创 Spring 不能注入static成员

Spring不能注入static成员,主要有2个原因:1.static成员与类相关,其中static变量及初始化块只会在类加载器第一次加载类时初始化和执行。(初始化了static变量,也就是给该static变量分配内存了)2.spring进行注入时发现该static变量已经被初始化,于是就忽略了该静态变量。 解决方式:1.可以通过获取ApplicationContext类(...

2019-02-02 12:11:48 1043

原创 mysql limit导致索引选择(选择的并不是最佳索引)的处理方案

昨天公司APP项目上线时遇到一个奇葩问题,在这里简单做一个记录,以避免如果再遇到类似问题再去花费时间寻找解决方案。首先贴出cp_orders表中建立的索引使用限制符limit时,mysql使用了idx_order_type索引,扫描了46w行没有使用限制符limit时,mysql使用了idx_agent_order_type索引(联合索引),扫描了9k行解决方案:1...

2019-01-31 14:56:26 8000 6

原创 大而全SQL的利弊(就产品迭代而言:弊大于利)

何为大而全的SQL?1.当SQL不是为了一个业务而服务时,它就是大而全的SQL。大而全SQL的优点:1.复用性大而全SQL的缺点:1.维护性、扩展性差(当SQL服务的业务越来越多时,维护SQL很容易影响其它业务。)...

2018-12-20 15:59:27 495

转载 浅析VO、DTO、DO、PO的概念、区别和用处

概念: VO(View Object):视图对象,用于展示层,它的作用是把某个指定页面(或组件)的所有数据封装起来。 DTO(Data Transfer Object):数据传输对象,这个概念来源于J2EE的设计模式,原来的目的是为了EJB的分布式应用提供粗粒度的数据实体,以减少分布式调用的次数,从而提高分布式调用的性能和降低网络负载,但在这里,我泛指用于展示层与服务层之间的数据传输对象。 DO(...

2018-06-11 15:32:24 138

原创 如何把握SQL与业务代码之间的交互

以前经常被两个问题困惑.....假设一个页面需要多条数据(sql不同),怎样去操作更好?1.ajax请求处理所有的业务,然后返回。2.每一个所需数据都单独发送一个ajax,然后返回。经过对业务的加深及测试,对比如下第一种方案,降低了服务器压力(如果同时又1000万用户同时操作,第一种方案服务器压力相对来说更小)第二种方案,加快了查询效率(相对于一个ajax请求执行多个sql...

2018-04-13 16:15:13 288

原创 关于double/float运算精度问题

假设我用0.0056*1000,结果是5.60000000003。在大多数情况下,使用double和float计算的结果是准确的,但是在一些精度要求很高的系统中,这种问题是非常严重的。在《Effective Java》中提到一个原则,那就是float和double只能用来作科学计算或者是工程计算,但在商业计算中我们要用java.math.BigDecimal,通过使用BigDecimal类我们

2018-02-05 14:49:06 470

原创 idea使用问题集合

切入要点,就不多说废话了。非idea中检出的项目,无法追踪版本号(猜测是因为svn版本不同造成),即便去掉下图中标识的两项选项

2017-07-20 17:03:04 474

转载 git常用命令总结

Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库一、新建代码库# 在当前目录新建一个Git代码库$ git init# 新建一个目录,将其初始化为Git代码库$ git init [project-name]# 下载一个项目和它的整个代码历史$ git clone [url]

2017-05-19 16:19:12 217

原创 xml中直接读取properties键值的解决方式

spring 框架的xml文件如何读取properties文件数据第一步:在spring配置文件中  注意:value可以多配置几个properties文件              class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">         

2017-05-12 00:19:06 3714

转载 深入理解Mybatis中sqlSessionFactory机制原理

对于任何框架而言,在使用前都要进行一系列的初始化,MyBatis也不例外。本章将通过以下几点详细介绍MyBatis的初始化过程。    1.MyBatis的初始化做了什么    2. MyBatis基于XML配置文件创建Configuration对象的过程    3. 手动加载XML配置文件创建Configuration对象完成初始化,创建并使用SqlSession

2017-05-11 16:54:33 6877 1

转载 context-param在web.xml中的作用

的作用:web.xml的配置中配置作用1. 启动一个WEB项目的时候,容器(如:Tomcat)会去读它的配置文件web.xml.读两个节点: 和 2.紧接着,容器创建一个ServletContext(上下文),这个WEB项目所有部分都将共享这个上下文.3.容器将转化为键值对,并交给ServletContext.4.容器创建中的类实例,即创建监听.5.在监听

2017-05-11 16:21:53 379

原创 git每次pull/push到gitHub都要输入密码的解决方案

1.在dos中加入以下cmd2.打开以下目录,打开指定文件3.可以看到.gitconfig文件中多了几行标注中的项

2017-04-28 09:15:53 1293

空空如也

空空如也

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

TA关注的人

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