Home
Live In a Dream
Cancel

HTTP报文小结

HTTP报文小结一直感觉自己HTTP这一块挺薄弱的,很多概念掌握的不精。本文是本人对HTTP报文的一些整理与小结。 HTTP报文即用于HTTP协议交互的信息,可以分为请求报文和响应报文。它本身其实就是多行(CRLF作为换行符)数据组成的一个文本。 HTTP报文结构 它大致可以分为首部和主体两部分,两者由空行来分隔。报文主体并不是必须的。   报文首部 空行 报...

CR与LF

CR与LF CR(carriage return),中文名称“回车”;LF(line feed),中文名称“换行”。无论是初学编程的小白还是入行十年的资深,总会有人搞不清楚这两者的区别。回车与换行到底是什么关系呢? CR与LF的来历 首先需要说明的是“回车”指的是’\r’,ASCII码为0xOD(13),而换行符指的是’\n’,ASCII码为0x0A(10)。 关于回车与换行的来历,网上有...

实现TOLock过程中的一处多线程bug

背景 最近在啃《多处理器编程的艺术》,书中的7.6节介绍了时限锁——实现了tryLock方法的队列锁。 书中重点讲解了tryLock的实现,也就是如何实现在等待超时后退出队列,放弃锁请求,并且能让后继线程感知到。 在实现的过程中,我为TOLock补充了lock方法的实现。代码如下所示: public class TOLock implements Lock { private...

发布个人开源项目到maven仓库

背景 对于个人开发的开源Java项目,光是放到github等代码托管网站上仍然是不够的。 比较友好的方式应该将项目发布到maven仓库,在README中告诉用户如何引入项目依赖。 这件事情本身也是属于做过则知道,不做不清楚。本文就这其中过程作整理与介绍。 流程 由于是对公众开放开源项目,所以一般选择发布到maven中央仓库。 准备工作 首先,需要注册一个Sonatype...

MySQL执行计划总结

1. 背景 在工作过程中,有时候会对慢查询进行调优。对于MySQL的SQL语句调优,MySQL本身提供了强大的explain关键字用于查询分析执行计划。 本文对explain执行计划进行分析与整理,文中的内容在未特别注明情况下,以MySQL5.7版本为例。 2. 简介 语法:从语法角度explain和describe/desc是相同的,只是一般更常用desc看表结构,explain来看查询...

MySQL优化小结

最近在迁移历史数据,调试前端效果时,发现了不少慢查询。现在将过程记录下来。 为什么有慢查询 慢查询的主要原因无非就那么几个:表设计的烂;索引加的烂;SQL写的烂 表设计的烂 下面举两个常见的例子 字段膨胀 比如一个金融理财产品表,产品有很多种属性,比如名称,系列,期数,编号,外部编号,风险等级,募集方式,周期类型,个人认购起点金额,企业认购起点金额,挂牌机构,挂牌价格,是否预约,预约额...

一处隐蔽的空指针异常

记录一个遇到的隐蔽的空指针异常。 公司里的测试同事之前发现项目里有处偶现的空指针异常。 大致的代码是这样的:     private void doWriteTransDetails(List<TransDetailDTO> transDetails) {   Map<String, List<TransDetailDTO>> tran...

MySQL中字符串与数字比较的坑

公司项目代码中,某枚举字段数据库表中类型是char(1),在代码中,误以为是TINYINT,所以用数字筛选,后来发现结果不对。发现了一个现象,用数字0筛选会把所有的记录给筛选出来。 经过排查发现是在MySQL查询语句中,’abc’如果和’0’比较结果显然是不等的,但如果’abc’和0比较呢?结果居然是相等的。 随意测试了几下,结果如下: mysql> select 'abc'=0; ...

Docker for Mac与IntelliJ Docker Integration插件的兼容性问题

笔者在自己的Mac上安装的是Docker for Mac,而不是Docker Toolbox。 这两者最主要的区别在于Docker for Mac用HyperKit作为虚拟化解决方案而不是VirtualBox,相比Docker Toolbox,Docker for Mac更加native些。 Docker for Mac 通过/var/tmp/docker.sock暴露API。 JetBr...

记录一个NPE问题

昨天在做公司项目时,我在一处地方加了一个逻辑校验,之后测了下发现在方法调用深处有一处NPE,来源于另一个同事的代码。 其实NPE本应该是个Java编程中老掉牙的问题,但我觉得这一处错误还是比较典型的,值得一提。 这里的CycleTypeEnum是一个枚举类型,code是枚举中的一个int类型。而条件表达式右边的cycleType是Product类的一个Integer类型。 业务上保...