최근 에 사람들 을 도와 순환 최적화 문 제 를 해결 하 다.
개발 과 연락 해서 알 고 보 니 이런 일 이 었 다.데이터 베 이 스 는 비교적 느 리 기 때문에, 이 사람들 은 데 이 터 를 메모리 에 넣 어 처리 하기 로 결정 했다.10w 줄 정도 의 시계 두 장 에 포 함 된 순환 을 썼 습 니 다.
데이터베이스 데이터 로 메모리 불 러 오기 라 는 말 을 듣 고 memcached 캐 시 를 추가 할 수 있 는 지 생각 났 습 니 다.그러나 sql 을 보 니 각종 복잡 한 논리 와 다 중 표 연결 은 됐 습 니 다.
나 는 그 에 게 너의 이 생각 은 완전히 정확 하지 않다 고 말 했다.데이터베이스 에 문제 가 있 으 면 sql 을 설명해 야 합 니 다. 도대체 어디 가 느 린 지...메모리 불 러 오 는 일 은 vfs 층 의 캐 시 시스템 이 이 루어 져 야 합 니까?만약 당신 이 데이터 베 이 스 를 모두 메모리 에 불 러 와 처리 하고 싶다 면, rdbms 를 만 드 는 것 과 같 지 않 습 니까? 제 가 무슨 능력 이 있 겠 습 니까?
그리고 나 서 나 는 그 에 게 이 메모리 안의 데 이 터 를 데이터 원본 과 동기 화 할 것 이 냐 고 물 었 다.그 는 데 이 터 를 꺼 내 써 서 다 쓰 면 잃 어 버 리 겠 다 고 말 했다.
좋아요.색인 같은 것 도 의미 가 없 나 봐 요.
마지막 으로 그 에 게 O (m + n) 의 알고리즘 을 줄 수 밖 에 없 었 다.demo 를 만들어 서 그 에 게 회색 과 간단 한 것 을 주 었 다.
#!/usr/bin/env python
#coding:utf-8
# data1 data2 key 。 。 sql
# sql :
#select * from data1 where data1.value<5 and data2.value like 'a%' and data1.key=data2.key
import random
#---------------------------------------------
class Data1(object):
'''
'''
__slot__=('key','value')
def __init__(self,key,value):
self.key=key
self.value=value
def __str__(self):
return str((self.key,self.value))
def __repr__(self):
return str((self.key,self,value))
class Data2(object):
'''
'''
__slot__=('key','value')
def __init__(self,key,value):
self.key=key
self.value=value
def __str__(self):
return str((self.key,self.value))
def __repr__(self):
return str((self.key,self.value))
#-------------------------------------------
#where , 。 , , bool
class WhereStratege(object):
@staticmethod
def judge(data):
pass
class Little_Then_5(WhereStratege):
@staticmethod
def judge(data):
if data.value<5:
return True
else:
return False
class Begin_With_A(WhereStratege):
@staticmethod
def judge(data):
if data.value.startswith('a'):
return True
else:
return False
#------------------------------------------------------
# 。python hashtable 。.net hashtable 。
# System.Collectons 。 hashtable 。
# , 。 hashtable 。 hashtable
# 。 load factor 。 hashtable
# 。 2、3 。 , hashtable
# 。 , 。 hashtable
# O(1) 。
# demo result 。 。 struct 。
# 。 。 , 。
# 。 , , hashtable 。 ,
# hashtable。 , 。
# hash , 。 。python 。
# ,hashtable , , , 。
def connect_data(data_list1,data_list2,method1,method2):
hashtable={}
result=[]
for data in data_list1:
if method1.judge(data):
hashtable[data.key]=data
for data in data_list2:
if data.key not in hashtable:
continue
elif method2.judge(data):
result.append(hashtable[data.key])
return result
#---------------------------------------------------------
# 10*10 , 。 , O(m+n) ,demo 。
# key value 10 。 key 5~14 ,value abc 。
# , 。 , 。
def gen_string(length,chartable):
'''
chartable length
'''
return ''.join([random.choice(chartable) for i in range(length)])
def test():
'''
'''
keylist1=range(10)
keylist2=range(5,15)
valuelist1=range(10)
valuelist2=[gen_string(3,['a','b','c']) for i in range(10)]
random.shuffle(keylist1)
random.shuffle(valuelist1)
random.shuffle(keylist2)
datalist1=map(Data1,keylist1,valuelist1)
datalist2=map(Data2,keylist2,valuelist2)
print ' :
'
for data in datalist1:
print data
print '
:
'
for data in datalist2:
print data
print '
:
'
r=connect_data(datalist1,datalist2,Little_Then_5,Begin_With_A)
for data in r:
print data
if __name__=='__main__':
test()
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
깊이 중첩된 객체를 정확히 일치 검색 - PostgreSQL목차 * 🚀 * 🎯 * 🏁 * 🙏 JSON 객체 예시 따라서 우리의 현재 목표는 "고용주"사용자가 입력한 검색어(이 경우에는 '요리')를 얻고 이 용어와 정확히 일치하는 모든 사용자 프로필을 찾는 것입니다. 즐거운 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.