- 浏览: 2652007 次
- 来自: 杭州
文章分类
- 全部博客 (1188)
- webwork (4)
- 网摘 (18)
- java (103)
- hibernate (1)
- Linux (85)
- 职业发展 (1)
- activeMQ (2)
- netty (14)
- svn (1)
- webx3 (12)
- mysql (81)
- css (1)
- HTML (6)
- apache (3)
- 测试 (2)
- javascript (1)
- 储存 (1)
- jvm (5)
- code (13)
- 多线程 (12)
- Spring (18)
- webxs (2)
- python (119)
- duitang (0)
- mongo (3)
- nosql (4)
- tomcat (4)
- memcached (20)
- 算法 (28)
- django (28)
- shell (1)
- 工作总结 (5)
- solr (42)
- beansdb (6)
- nginx (3)
- 性能 (30)
- 数据推荐 (1)
- maven (8)
- tonado (1)
- uwsgi (5)
- hessian (4)
- ibatis (3)
- Security (2)
- HTPP (1)
- gevent (6)
- 读书笔记 (1)
- Maxent (2)
- mogo (0)
- thread (3)
- 架构 (5)
- NIO (5)
- 正则 (1)
- lucene (5)
- feed (4)
- redis (17)
- TCP (6)
- test (0)
- python,code (1)
- PIL (3)
- guava (2)
- jython (4)
- httpclient (2)
- cache (3)
- signal (1)
- dubbo (7)
- HTTP (4)
- json (3)
- java socket (1)
- io (2)
- socket (22)
- hash (2)
- Cassandra (1)
- 分布式文件系统 (5)
- Dynamo (2)
- gc (8)
- scp (1)
- rsync (1)
- mecached (0)
- mongoDB (29)
- Thrift (1)
- scribe (2)
- 服务化 (3)
- 问题 (83)
- mat (1)
- classloader (2)
- javaBean (1)
- 文档集合 (27)
- 消息队列 (3)
- nginx,文档集合 (1)
- dboss (12)
- libevent (1)
- 读书 (0)
- 数学 (3)
- 流程 (0)
- HBase (34)
- 自动化测试 (1)
- ubuntu (2)
- 并发 (1)
- sping (1)
- 图形 (1)
- freemarker (1)
- jdbc (3)
- dbcp (0)
- sharding (1)
- 性能测试 (1)
- 设计模式 (2)
- unicode (1)
- OceanBase (3)
- jmagick (1)
- gunicorn (1)
- url (1)
- form (1)
- 安全 (2)
- nlp (8)
- libmemcached (1)
- 规则引擎 (1)
- awk (2)
- 服务器 (1)
- snmpd (1)
- btrace (1)
- 代码 (1)
- cygwin (1)
- mahout (3)
- 电子书 (1)
- 机器学习 (5)
- 数据挖掘 (1)
- nltk (6)
- pool (1)
- log4j (2)
- 总结 (11)
- c++ (1)
- java源代码 (1)
- ocr (1)
- 基础算法 (3)
- SA (1)
- 笔记 (1)
- ml (4)
- zokeeper (0)
- jms (1)
- zookeeper (5)
- zkclient (1)
- hadoop (13)
- mq (2)
- git (9)
- 问题,io (1)
- storm (11)
- zk (1)
- 性能优化 (2)
- example (1)
- tmux (1)
- 环境 (2)
- kyro (1)
- 日志系统 (3)
- hdfs (2)
- python_socket (2)
- date (2)
- elasticsearch (1)
- jetty (1)
- 树 (1)
- 汽车 (1)
- mdrill (1)
- 车 (1)
- 日志 (1)
- web (1)
- 编译原理 (1)
- 信息检索 (1)
- 性能,linux (1)
- spam (1)
- 序列化 (1)
- fabric (2)
- guice (1)
- disruptor (1)
- executor (1)
- logback (2)
- 开源 (1)
- 设计 (1)
- 监控 (3)
- english (1)
- 问题记录 (1)
- Bitmap (1)
- 云计算 (1)
- 问题排查 (1)
- highchat (1)
- mac (3)
- docker (1)
- jdk (1)
- 表达式 (1)
- 网络 (1)
- 时间管理 (1)
- 时间序列 (1)
- OLAP (1)
- Big Table (0)
- sql (1)
- kafka (1)
- md5 (1)
- springboot (1)
- spring security (1)
- Spring Boot (3)
- mybatis (1)
- java8 (1)
- 分布式事务 (1)
- 限流 (1)
- Shadowsocks (0)
- 2018 (1)
- 服务治理 (1)
- 设计原则 (1)
- log (0)
- perftools (1)
最新评论
-
siphlina:
课程——基于Python数据分析与机器学习案例实战教程分享网盘 ...
Python机器学习库 -
san_yun:
leibnitz 写道hi,我想知道,无论在92还是94版本, ...
hbase的行锁与多版本并发控制(MVCC) -
leibnitz:
hi,我想知道,无论在92还是94版本,更新时(如Puts)都 ...
hbase的行锁与多版本并发控制(MVCC) -
107x:
不错,谢谢!
Latent Semantic Analysis(LSA/ LSI)算法简介 -
107x:
不错,谢谢!
Python机器学习库
16.1k mblog.views.getMBlogListByTag
MultipleObjectsReturned: get() returned more than one Message -- it returned 2! Lookup parameters were {'photo__id': 2077439L, 'category__in': [1, 9]}
这个方法在线上出现16.1k错误,今天终于把这个bug修复了,记录一下处理过程。错误信息显示:
get() returned more than one Message -- it returned 3! Lookup parameters were { 'photo__id': 3288L, 'category__in': [1, 9]}
这个错误的意思是说系统认为 category是1,9, photo_id3288的数据 应该是唯一的,但数据库出现了多条记录。数据库查询了一下 select count(photo_id) from message group photo_id having count(photo_id) >1 and category in (1,9),发现了1000多条记录。不知道什么原因产生了这种脏数据。现在也无法分析原因了,只能想解决办法。
处理过程:
通过代码搜索发现原来这message的getRoot()方法:
def get_root(self): try: self.photo except: return key = "photo:root:%s:" % self.photo.id root = cache.get(key) if root is None: try: root = self.category in [1, 9] and \ self or Message.objects.get(photo__id=self.photo_id, category__in=[1, 9], status__in=[0, 6])[0] except Message.DoesNotExist: pass if root: cache.set(key, root, 3600 * 2) return root and root.status != 5 and root or None
里面的get其实存在大于1这种情况的。修改为:
if root is None: try: root = self.category in [1, 9] and \ self or Message.objects.filter(photo__id=self.photo_id, category__in=[1, 9], status__in=[0, 6])[0] except Message.DoesNotExist: pass except IndexError: pass
小结:
对于这种业务上的唯一性,一定要通过数据库保证唯一性约束
相关推荐
在Android开发中,"安卓热修复"是一种高效的技术,它允许开发者在不发布新版本的情况下,迅速修复线上应用存在的bug,提升用户体验。这种技术的核心思想是,在应用运行时动态替换或修复有问题的代码,实现对应用程序...
"《程序人生》记一次敖丙的线上P2事故1" knowledge points: 1. 程序 BUG 的处理:文章中提到 P2 级别的 BUG,是指系统中出现的严重错误,需要立即修复,以避免更大的损失。 2. 线上事故处理:文章中提到线上事故...
在安卓平台上,热修复技术是一种高效且便捷的解决线上应用bug的方法,它允许开发者在无需发布新版本的情况下,通过远程推送补丁来修正已发布的应用中存在的问题。这大大减少了更新迭代的时间成本,提高了用户体验。...
**JSPatch热修复技术详解** 在iOS应用开发过程中,我们常常遇到这样一个问题:...总结来说,JSPatch是一种有效的热修复工具,尤其适用于紧急修复线上bug。但使用时应结合实际情况权衡利弊,确保应用的安全性和稳定性。
该工具需要两个apk作为输入:一个是原始的、包含bug的apk,另一个是修复后的apk。运行ApkPatch后,会生成一个包含修复后的.dex文件的补丁包。 2. **加载补丁**:补丁生成后,需要将其部署到用户的设备上。通常,...
该项目是基于Unity引擎的代码逻辑热修复解决方案InjectFix的设计源码,共包含100个文件,包括37个C#源文件、23个元数据文件、10个Markdown文件、7个DLL文件、6个项目文件、3个批处理文件、2个Unity项目文件、1个YAML...
针对这个问题,解决方案是下载一个修复后的jar包来替换原有的文件。在提供的文件列表中,我们看到名为"activiti-5.22"的压缩包,这很可能包含了修复此问题的特定版本或补丁。用户只需解压这个文件,找到包含Activiti...
为了解决这个问题,微软发布了一个专门的bug修复补丁。这个补丁针对Windows Server 2008 R2的TCP/IP协议栈进行了优化,改进了socket资源的管理和回收机制,以防止因长时间未关闭或泄漏的socket而导致的资源耗尽。...
DllErrorsFix4.3破解版(Dll错误修复工具)北方...北方星空 2012.1.6 DllErrorsFix 4.3 破解汉化版——Dll错误修复工具 部分杀软报毒,自行斟酌,我不想解释和回复此类回帖,网络软件,自行查毒,是否病毒,自行判断。
1. **白酒**: 8月白酒线上销售额因疫情和淡季因素同降16.78%,销售量同降35.76%,但均价同增29.54%。茅台、五粮液、汾酒等品牌中,五粮液表现强劲,销售额同增66.12%,而茅台则同降47.81%。整体来看,白酒线上市场受...
修复BUG: 1、cxGridWizard文件损坏造成编译报错; 2、cxPivotGridAdvancedCustomization的BUG; FindPanel - The % and _ wildcards work when the UseExtendedSyntax property is disabled 此BUG说明地址:...
6. **安全无风险**:在修复过程中,Recovery Toolbox for PDF不会修改原始文件,而是将修复结果保存为新的PDF文件,避免了进一步损坏原有数据的风险。 使用Recovery Toolbox for PDF时,首先需要下载并安装软件,...
《GTASA 修复BUG的瓦良格》是一个针对游戏《侠盗猎车手:圣安地列斯(Grand Theft Auto: San Andreas,简称GTASA)》的补丁或修改工具,其主要目的是解决游戏中出现的各种错误和问题,提高游戏体验。在游戏开发过程...
报告标题:“国金证券:主要消费产业行业研究-线上线下全景看消费修复” 这份报告由国金证券研究所发布,主要分析了中国主要消费产业在疫情后的线上线下消费修复情况。报告的作者包括分析师廖馨瑶和许孟婕,以及...
在游戏开发领域,热修复技术是一项重要的能力,它允许开发者在游戏已发布并被玩家广泛使用的情况下,无需发布新版本,就能对游戏中的bug进行实时修复。这对于提高用户体验、减少用户流失以及降低维护成本具有显著...
这个“线上教育商城小程序app模板”压缩包文件包含了一个现成的小程序源码,可以作为开发教育类小程序的基础。 首先,我们要了解小程序的基本概念。小程序是腾讯公司推出的一种全新的应用形态,它介于传统APP和网页...
然而,有时用户在尝试共享打印机时可能会遇到0x00000709错误,这是一种与通信失败相关的错误代码,通常表明系统无法建立到目标设备的有效连接。此外,还可能遇到0x00000040错误,这同样是表示网络通信出现问题的代码...
2.6.36内核版本的更新可能涉及了数百甚至数千个bug修复。这些修复可能包括对硬件支持的改进、安全漏洞的修补、内存管理效率的提升,或者是对特定操作系统的兼容性增强。例如,如果一个bug影响到特定的文件系统,...
这一过程通常包括以下几个步骤:检测到线上问题、构建修复补丁、分发补丁、应用内加载并执行补丁。补丁通常包含的是修复后的类或方法的字节码,可以跨进程、跨线程地应用到运行中的应用,确保修复的即时性。 2. **...
开发、需求、测试在执行测试阶段对bug处理相互间形成良好的沟通,对bug的管理形成统一的规范,保证bug有效快速的被修复,保证相互间工作正常进行,提供参考文档