Computer >> कंप्यूटर >  >> प्रोग्रामिंग >> Python

पायथन में डिजाइन लॉग स्टोरेज सिस्टम

मान लीजिए कि हमारे पास कुछ लॉग हैं, कि प्रत्येक लॉग में एक अद्वितीय आईडी और टाइमस्टैम्प होता है। टाइमस्टैम्प एक स्ट्रिंग है जिसका प्रारूप है:वर्ष:माह:दिन:घंटा:मिनट:दूसरा, उदाहरण के लिए, 2019:01:01:23:59:59। सभी डोमेन शून्य-गद्देदार दशमलव संख्याएँ हैं।

हमें निम्नलिखित कार्यों को लागू करने के लिए एक लॉग स्टोरेज सिस्टम डिजाइन करना होगा -

  • शून्य पुट (इंट आईडी, स्ट्रिंग टाइमस्टैम्प):यह लॉग की विशिष्ट आईडी और टाइमस्टैम्प लेगा, और यह स्टोरेज सिस्टम में लॉग को स्टोर करता है।

  • int [] पुनः प्राप्त करें (स्ट्रिंग प्रारंभ, स्ट्रिंग अंत, स्ट्रिंग ग्रैन्युलैरिटी):यह उन लॉग की आईडी लौटाएगा जिनके टाइमस्टैम्प प्रारंभ से अंत तक पैरामीटर की सीमा के भीतर हैं। ग्रैन्युलैरिटी पैरामीटर विचार के लिए समय स्तर को इंगित करता है। उदाहरण के लिए, प्रारंभ ="2019:01:01:23:59:59", अंत ="2019:01:02:23:59:59", और ग्रैन्युलैरिटी ="दिन", इसका मतलब है कि हमें खोजने की जरूरत है 1 जनवरी 2019 से 2 जनवरी 2019 की सीमा के भीतर लॉग।

तो, अगर इनपुट पसंद है

  • put(1, "2019:01:01:23:59:59");

  • put(2, "2019:01:01:22:59:59");

  • put(3, "2018:01:00:00:00:00");

  • पुनः प्राप्त करें ("2018:01:01:01:01:01", "2019:01:01:23:00:00", "वर्ष");

  • पुनः प्राप्त करें ("2018:01:01:01:01:01", "2019:01:01:23:00:00", "घंटा");

तब आउटपुट [1,2,3] होगा क्योंकि हमें 2018 और 2019 और [1,2] के भीतर सभी लॉग वापस करने की आवश्यकता है, क्योंकि हमें 2018:01:01:01 से 2019 तक सभी लॉग वापस करने की आवश्यकता है:01:01:23, जहां लॉग 3 सीमा के बाहर छोड़ा गया है।

इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -

  • प्रारंभकर्ता को परिभाषित करें।

  • लॉग :=एक नई सूची

  • फ़ंक्शन पुट () को परिभाषित करें। यह आईडी, टाइमस्टैम्प लेगा

  • लॉग के अंत में आईडी, टाइमस्टैम्प डालें

  • एक फ़ंक्शन को पुनः प्राप्त करें परिभाषित करें ()। इसमें s, e, gra लगेगा

  • अनुक्रमणिका :=एक नक्शा जैसे {'वर्ष':5, 'माह' :8, 'दिन' :11, 'घंटा' :14, 'मिनट' :17, 'दूसरा' :20}[gra]

  • प्रारंभ :=s[सूचकांक 0 से अनुक्रमणिका तक]

  • अंत:=ई[सूचकांक 0 से सूचकांक तक]

  • वापसी (प्रत्येक tid के लिए tid, लॉग में टाइमस्टैम्प यदि प्रारंभ हो <=टाइमस्टैम्प [इंडेक्स 0 से इंडेक्स तक] <=अंत)

उदाहरण

आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -

class LogSystem(object):
   def __init__(self):
      self.logs = []
   def put(self, id, timestamp):
      self.logs.append((id, timestamp))
   def retrieve(self, s, e, gra):
      index = {'Year':5, 'Month' : 8, 'Day' : 11, 'Hour' : 14, 'Minute' : 17, 'Second' :20}[gra]
      start = s[:index]
      end = e[:index]
      return (tid for tid, timestamp in self.logs if start <= timestamp[:index] <= end)
ob = LogSystem()
ob.put(1, "2019:01:01:23:59:59")
ob.put(2, "2019:01:01:22:59:59")
ob.put(3, "2018:01:01:00:00:00")
print(list(ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Year")))
print(list(ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Hour")))

इनपुट

ob.put(1, "2019:01:01:23:59:59")
ob.put(2, "2019:01:01:22:59:59")
ob.put(3, "2018:01:01:00:00:00")
ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Year")
ob.retrieve("2018:01:01:01:01:01","2019:01:01:23:00:00","Hour")

आउटपुट

[1, 2, 3]
[1, 2]

  1. मैक पर सिस्टम स्टोरेज को कैसे डिलीट करें

    यदि आपका मैक स्टोरेज पर कम है तो यह समस्याएं पैदा कर सकता है - उदाहरण के लिए, आपको एक संदेश दिखाई दे सकता है कि आपकी स्टार्ट-अप डिस्क लगभग भर चुकी है, और यदि आप इसे अनदेखा करते हैं तो आप पाएंगे कि आप अपना मैक शुरू भी नहीं कर सकते हैं! कम स्टोरेज आपके मैक को धीमा भी कर सकता है और अन्य मुद्दों को इसे

  1. मैक पर सिस्टम स्टोरेज को कैसे कम करें

    मैक अक्सर उन उपयोगकर्ताओं के लिए सबसे लोकप्रिय विकल्प है जो उत्पादकता और पोर्टेबिलिटी के लिए कंप्यूटर खरीदना चाहते हैं। हालाँकि, हाल ही में मैक उपयोगकर्ताओं द्वारा प्रकाश में लाया गया एक मुद्दा यह था कि कैसे उनका सिस्टम स्टोरेज सामान्य से अधिक जगह ले रहा था और यह उपयोगकर्ताओं के लिए स्टोरेज की कमी प

  1. स्विफ्टयूआई के साथ डिजाइन सिस्टम कैसे बनाएं

    एक उत्पाद का समर्थन करने के लिए एक डिज़ाइन सिस्टम बनाना आसान नहीं है - स्केलेबिलिटी के लिए इसे एक ही समय में मजबूत और लचीला होना चाहिए। हालांकि चुनौतीपूर्ण, बहुत सारे महान संसाधनों ने उपयोगी सिद्धांतों और दृष्टिकोणों को साझा किया है जो टीमों को दृष्टि से और प्रोग्रामेटिक रूप से एक अच्छी प्रणाली बनान