- 浏览: 21451 次
- 性别:
- 来自: 北京
最新评论
文章列表
这是一个困扰了我接近半个月的生产bug。当问题出现后,采取的措施分别是:打印日志,再仍然查不出问题后,改用其他方式实现,先保证不会对用户使用该系统数据照成影响。
在经过两天时间的跟踪,终于找到问题的根源。详细记录如下:
代码在字符串时逻辑里面用到了
StringUtils.contains()
方法,而这个方法主要是调用
String.indexOf()
方法,
如“
,A,B,C,D,".indexOf("A")
> 0
返回
true
;
"A,B,C,D ...
生产问题之一——文件下载
- 博客分类:
- java技术
今天,生产环境上下载数据文件在
firefox
出错,而在
IE
运行正常的原因。出错信息如下:
The page you are trying to view cannot be shown because an erros in the data transmission was detected。
跟踪server端代码,完全正确,再用IE下载同样的文件也运行正常。
在firefox下,对比正常和非正常下载功能响应头信息。发现能正常下载的头信息的Content-Disposition:attachment;filename=&q ...
单链表比较简单,直接说双向循环链表,用c语言双向链表的结构定义如下:
typedef struct DNode
{
ElemType data;
struct DNode *priror, *next ;
} DNode ,*DoubleList;
如果p指向双链表中某一节点,则有:p->prior->next = p = p->next->prior。
再来看看jdk中LinkedList是如何实现双向链表的:
private static class Entry<E> {
E element;
...
前言:工作将近4年,自认为基础还算可以,实际工作中用到的技术比较广泛,常用框架也有所了解,数据库原理、优化也花时间啃过,分布式hadoop、zookeeper有些了解,mongodb也玩过,但是总感觉无论做什么都没有办法做深 ...
首先,序列化的实现方式:实现Serializable;如果提供了writeObject方法,就会在序列化的时候执行这个方法。看看
ArrayList有是如何实现这个方法的。从如下源码中,很容易看到的一点是循环时i<size而不是
i<elementData.length,看出端倪了吧,原来,序列化时,我们完全没有必要序列化elementData的所有值。
private void writeObject(java.io.ObjectOutputStream s)
throws java.io.IOException{
// Write out e ...
在实际项目中,由于需要把接口返回来的对象存在数据库中,所以用到了jackson组件把对象转成json后再保持到数据库中。由于每天处理的数据量太大,而业务对时间的要求非常严格,即使采用4台机器做分布式后,计算时间仍然在2——3个小时,于是性能优化提上了日程。
用jprofiler工具观察到性能主要在两个地方耗时比较多:1.tojson串转换,2.调用其他系统接口。
调用其他系统接口耗时占比在17%左右,tojson转换耗时占比在20%左右。经过小组讨论,决定采用memcached在运行计算之前就缓存数据。缓存命中率为83.4%的情况下,性能如下:
...
DBA会经常抓取时间长的SQL,为了方便辨别这些SQL是不是我们部门开发的项目中的,需要提取程序中所有sql。于是先把项目运行中的所有SQL事前准备好,提取SQL的方法步骤如下:
1.在项目中加入如下依赖jar包:
<dependency>
<groupId>p6spy</groupId>
<artifactId>p6spy</artifactId>
<version>1.3</version>
</depende ...
首先从一个问题说起。
问题现象:
查询语句如下:
-- sql1
SELECT
w.wid, w.rid
FROM warestock w JOIN product p ON w.wid = p.product_code
WHERE w.rid IN (3, 4, 5, 6, 10)
warestock 在 wid ,rid上创建了联合主键,product_code是product的主键。我期望的输出结果能按照w.wid, w.rid的顺序排序。结果却没有按照这个w.wid, ...