跳转至内容
0
  • 版块
  • 讨论
  • 最新
  • 标签
  • 热门
  • 顶端
  • 用户
  • 版块
  • 讨论
  • 最新
  • 标签
  • 热门
  • 顶端
  • 用户
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠
JIKE社区
  1. 首页
  2. 讨论区
  3. 技术专区
  4. 翻译成golang代码

翻译成golang代码

已定时 已固定 已锁定 已移动 技术专区
3 帖子 2 发布者 672 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • 我是小马甲~M 在线
    我是小马甲~M 在线
    我是小马甲~
    🤫
    发表于 最后由 编辑
    #1
    import os
    import time
    import redis
    
    env = os.environ.get
    
    
    REDIS_CONF = {
        "host": env("ALONE_REDIS_HOST", ""),
        "port": env("ALONE_REDIS_PORT", 6378),
        "password": env("ALONE_REDIS_PASSWORD", ""),
        "db": env("BUZZERS_REDIS_DB_LOCK", 1),
        "socket_timeout": None,
        "encoding": "utf-8",
        "encoding_errors": "strict",
        "decode_responses": True
    }
    connection_pool = redis.ConnectionPool(**REDIS_CONF)
    redis_lock = redis.Redis(connection_pool=connection_pool)
    redis_lock.ping()
    
    
    class RedisLock(object):
        """
        redis原子锁
        """
    
        def __init__(self, prefix="redis_lock", key="",
                     expire_time=2, timeout=2,
                     interval=0.2):
            """
            :param prefix: 原子锁前缀
            :param expire_time: 锁过期时间
            :param timeout: 最长等待秒数,默认2秒(timeout=0获取不到锁则立即返回)
            :param interval: 时间间隔
            """
            self.key = key
            self.prefix = prefix
            self.expire_time = expire_time
            self.timeout = timeout
            self.interval = interval
            self._lock = False  # 是否获得锁
    
        @property
        def rds_key(self):
            return "%s|%s" % (self.prefix, self.key)
    
        def __del__(self):
            """
            该对象释放的时候 删除锁
            :return:
            """
            if self._lock:
                self.delete_lock()
    
        def acquire(self):
            """
            获取用户锁,默认最长2秒等待
            :return: True 获取到锁 False 获取锁失败
            """
            start_time = time.time()
            end_time = start_time + self.timeout
            while time.time() < end_time:
                result = redis_lock.set(
                    self.rds_key,
                    1,
                    ex=self.expire_time,
                    nx=True
                )
                if result:
                    self._lock = True
                    return True
                time.sleep(self.interval)
            return False
    
        def release(self):
            """
            删除用户锁
            :return:
            """
            redis_lock.delete(self.rds_key)
            self._lock = False
    
        def __enter__(self):
            if not self._lock:
                return self.acquire()
            return False
    
        def __exit__(self, type, value, traceback):
            if self._lock:
                self.release()
    
        def __del__(self):
            self.release()
    
    

    请将上面代码用golang实现一下 @ChatGPT

    唐宋元明清,连排小工兵!

    我是小马甲~M 1 条回复 最后回复
    0
    • 我是小马甲~M 我是小马甲~
      import os
      import time
      import redis
      
      env = os.environ.get
      
      
      REDIS_CONF = {
          "host": env("ALONE_REDIS_HOST", ""),
          "port": env("ALONE_REDIS_PORT", 6378),
          "password": env("ALONE_REDIS_PASSWORD", ""),
          "db": env("BUZZERS_REDIS_DB_LOCK", 1),
          "socket_timeout": None,
          "encoding": "utf-8",
          "encoding_errors": "strict",
          "decode_responses": True
      }
      connection_pool = redis.ConnectionPool(**REDIS_CONF)
      redis_lock = redis.Redis(connection_pool=connection_pool)
      redis_lock.ping()
      
      
      class RedisLock(object):
          """
          redis原子锁
          """
      
          def __init__(self, prefix="redis_lock", key="",
                       expire_time=2, timeout=2,
                       interval=0.2):
              """
              :param prefix: 原子锁前缀
              :param expire_time: 锁过期时间
              :param timeout: 最长等待秒数,默认2秒(timeout=0获取不到锁则立即返回)
              :param interval: 时间间隔
              """
              self.key = key
              self.prefix = prefix
              self.expire_time = expire_time
              self.timeout = timeout
              self.interval = interval
              self._lock = False  # 是否获得锁
      
          @property
          def rds_key(self):
              return "%s|%s" % (self.prefix, self.key)
      
          def __del__(self):
              """
              该对象释放的时候 删除锁
              :return:
              """
              if self._lock:
                  self.delete_lock()
      
          def acquire(self):
              """
              获取用户锁,默认最长2秒等待
              :return: True 获取到锁 False 获取锁失败
              """
              start_time = time.time()
              end_time = start_time + self.timeout
              while time.time() < end_time:
                  result = redis_lock.set(
                      self.rds_key,
                      1,
                      ex=self.expire_time,
                      nx=True
                  )
                  if result:
                      self._lock = True
                      return True
                  time.sleep(self.interval)
              return False
      
          def release(self):
              """
              删除用户锁
              :return:
              """
              redis_lock.delete(self.rds_key)
              self._lock = False
      
          def __enter__(self):
              if not self._lock:
                  return self.acquire()
              return False
      
          def __exit__(self, type, value, traceback):
              if self._lock:
                  self.release()
      
          def __del__(self):
              self.release()
      
      

      请将上面代码用golang实现一下 @ChatGPT

      我是小马甲~M 在线
      我是小马甲~M 在线
      我是小马甲~
      🤫
      发表于 最后由 编辑
      #2

      malaohu 说:

      import os
      import time
      import redis
      
      env = os.environ.get
      
      
      REDIS_CONF = {
          "host": env("ALONE_REDIS_HOST", ""),
          "port": env("ALONE_REDIS_PORT", 6378),
          "password": env("ALONE_REDIS_PASSWORD", ""),
          "db": env("BUZZERS_REDIS_DB_LOCK", 1),
          "socket_timeout": None,
          "encoding": "utf-8",
          "encoding_errors": "strict",
          "decode_responses": True
      }
      connection_pool = redis.ConnectionPool(**REDIS_CONF)
      redis_lock = redis.Redis(connection_pool=connection_pool)
      redis_lock.ping()
      
      
      class RedisLock(object):
          """
          redis原子锁
          """
      
          def __init__(self, prefix="redis_lock", key="",
                       expire_time=2, timeout=2,
                       interval=0.2):
              """
              :param prefix: 原子锁前缀
              :param expire_time: 锁过期时间
              :param timeout: 最长等待秒数,默认2秒(timeout=0获取不到锁则立即返回)
              :param interval: 时间间隔
              """
              self.key = key
              self.prefix = prefix
              self.expire_time = expire_time
              self.timeout = timeout
              self.interval = interval
              self._lock = False  # 是否获得锁
      
          @property
          def rds_key(self):
              return "%s|%s" % (self.prefix, self.key)
      
          def __del__(self):
              """
              该对象释放的时候 删除锁
              :return:
              """
              if self._lock:
                  self.delete_lock()
      
          def acquire(self):
              """
              获取用户锁,默认最长2秒等待
              :return: True 获取到锁 False 获取锁失败
              """
              start_time = time.time()
              end_time = start_time + self.timeout
              while time.time() < end_time:
                  result = redis_lock.set(
                      self.rds_key,
                      1,
                      ex=self.expire_time,
                      nx=True
                  )
                  if result:
                      self._lock = True
                      return True
                  time.sleep(self.interval)
              return False
      
          def release(self):
              """
              删除用户锁
              :return:
              """
              redis_lock.delete(self.rds_key)
              self._lock = False
      
          def __enter__(self):
              if not self._lock:
                  return self.acquire()
              return False
      
          def __exit__(self, type, value, traceback):
              if self._lock:
                  self.release()
      
          def __del__(self):
              self.release()
      
      

      请将上面代码用golang实现一下

      @ChatGPT

      唐宋元明清,连排小工兵!

      ChatGPTC 1 条回复 最后回复
      0
      • 我是小马甲~M 我是小马甲~

        malaohu 说:

        import os
        import time
        import redis
        
        env = os.environ.get
        
        
        REDIS_CONF = {
            "host": env("ALONE_REDIS_HOST", ""),
            "port": env("ALONE_REDIS_PORT", 6378),
            "password": env("ALONE_REDIS_PASSWORD", ""),
            "db": env("BUZZERS_REDIS_DB_LOCK", 1),
            "socket_timeout": None,
            "encoding": "utf-8",
            "encoding_errors": "strict",
            "decode_responses": True
        }
        connection_pool = redis.ConnectionPool(**REDIS_CONF)
        redis_lock = redis.Redis(connection_pool=connection_pool)
        redis_lock.ping()
        
        
        class RedisLock(object):
            """
            redis原子锁
            """
        
            def __init__(self, prefix="redis_lock", key="",
                         expire_time=2, timeout=2,
                         interval=0.2):
                """
                :param prefix: 原子锁前缀
                :param expire_time: 锁过期时间
                :param timeout: 最长等待秒数,默认2秒(timeout=0获取不到锁则立即返回)
                :param interval: 时间间隔
                """
                self.key = key
                self.prefix = prefix
                self.expire_time = expire_time
                self.timeout = timeout
                self.interval = interval
                self._lock = False  # 是否获得锁
        
            @property
            def rds_key(self):
                return "%s|%s" % (self.prefix, self.key)
        
            def __del__(self):
                """
                该对象释放的时候 删除锁
                :return:
                """
                if self._lock:
                    self.delete_lock()
        
            def acquire(self):
                """
                获取用户锁,默认最长2秒等待
                :return: True 获取到锁 False 获取锁失败
                """
                start_time = time.time()
                end_time = start_time + self.timeout
                while time.time() < end_time:
                    result = redis_lock.set(
                        self.rds_key,
                        1,
                        ex=self.expire_time,
                        nx=True
                    )
                    if result:
                        self._lock = True
                        return True
                    time.sleep(self.interval)
                return False
        
            def release(self):
                """
                删除用户锁
                :return:
                """
                redis_lock.delete(self.rds_key)
                self._lock = False
        
            def __enter__(self):
                if not self._lock:
                    return self.acquire()
                return False
        
            def __exit__(self, type, value, traceback):
                if self._lock:
                    self.release()
        
            def __del__(self):
                self.release()
        
        

        请将上面代码用golang实现一下

        @ChatGPT

        ChatGPTC 离线
        ChatGPTC 离线
        ChatGPT
        发表于 最后由 编辑
        #3

        malaohu说:

        malaohu 说:

        import os
        import time
        import redis
        
        env = os.environ.get
        
        
        REDIS_CONF = {
            "host": env("ALONE_REDIS_HOST", ""),
            "port": env("ALONE_REDIS_PORT", 6378),
            "password": env("ALONE_REDIS_PASSWORD", ""),
            "db": env("BUZZERS_REDIS_DB_LOCK", 1),
            "socket_timeout": None,
            "encoding": "utf-8",
            "encoding_errors": "strict",
            "decode_responses": True
        }
        connection_pool = redis.ConnectionPool(**REDIS_CONF)
        redis_lock = redis.Redis(connection_pool=connection_pool)
        redis_lock.ping()
        
        
        class RedisLock(object):
            """
            redis原子锁
            """
        
            def __init__(self, prefix="redis_lock", key="",
                         expire_time=2, timeout=2,
                         interval=0.2):
                """
                :param prefix: 原子锁前缀
                :param expire_time: 锁过期时间
                :param timeout: 最长等待秒数,默认2秒(timeout=0获取不到锁则立即返回)
                :param interval: 时间间隔
                """
                self.key = key
                self.prefix = prefix
                self.expire_time = expire_time
                self.timeout = timeout
                self.interval = interval
                self._lock = False  # 是否获得锁
        
            @property
            def rds_key(self):
                return "%s|%s" % (self.prefix, self.key)
        
            def __del__(self):
                """
                该对象释放的时候 删除锁
                :return:
                """
                if self._lock:
                    self.delete_lock()
        
            def acquire(self):
                """
                获取用户锁,默认最长2秒等待
                :return: True 获取到锁 False 获取锁失败
                """
                start_time = time.time()
                end_time = start_time + self.timeout
                while time.time() >             result = redis_lock.set(
                        self.rds_key,
                        1,
                        ex=self.expire_time,
                        nx=True
                    )
                    if result:
                        self._lock = True
                        return True
                    time.sleep(self.interval)
                return False
        
            def release(self):
                """
                删除用户锁
                :return:
                """
                redis_lock.delete(self.rds_key)
                self._lock = False
        
            def __enter__(self):
                if not self._lock:
                    return self.acquire()
                return False
        
            def __exit__(self, type, value, traceback):
                if self._lock:
                    self.release()
        
            def __del__(self):
                self.release()
        
        

        请将上面代码用golang实现一下

        package redis
        
        import (
        	"github.com/go-redis/redis/v7"
        	"time"
        )
        
        type RedisLock struct {
        	Prefix       string
        	Key          string
        	ExpireTime   int
        	Timeout      int
        	Interval     int
        	_lock        bool
        	redisClient  *redis.Client
        	redisOptions *redis.Options
        }
        
        func NewRedisLock(prefix string, key string, expireTime int, timeout int, interval int) *RedisLock {
        	return &RedisLock{
        		Prefix:      prefix,
        		Key:         key,
        		ExpireTime:  expireTime,
        		Timeout:     timeout,
        		Interval:    interval,
        		_lock:       false,
        		redisClient: nil,
        	}
        }
        
        func (lock *RedisLock) GetRedisKey() string {
        	return lock.Prefix + "|" + lock.Key
        }
        
        func (lock *RedisLock) InitRedisClient(options *redis.Options) {
        	lock.redisClient = redis.NewClient(options)
        	lock.redisOptions = options
        }
        
        func (lock *RedisLock) Acquire() bool {
        	startTime := time.Now().Unix()
        	endTime := startTime + int64(lock.Timeout)
        	for time.Now().Unix() < endTime {
        		result := lock.redisClient.SetNX(lock.GetRedisKey(), 1, time.Duration(lock.ExpireTime)*time.Second).Val()
        		if result {
        			lock._lock = true
        			return true
        		}
        		time.Sleep(time.Duration(lock.Interval) * time.Second)
        	}
        	return false
        }
        
        func (lock *RedisLock) Release() {
        	lock.redisClient.Del(lock.GetRedisKey())
        	lock._lock = false
        }
        
        func (lock *RedisLock) Lock() bool {
        	if !lock._lock {
        		return lock.Acquire()
        	}
        	return false
        }
        
        func (lock *RedisLock) Unlock() {
        	if lock._lock {
        		lock.Release()
        	}
        }
        

        帖子内容中 @ChatGPT(注意前后空格,发帖后名称变色才行)。必须@才会回答

        1 条回复 最后回复
        0

        你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

        厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

        有了你的建议,这篇帖子会更精彩哦 💗

        注册 登录
        回复
        • 在新帖中回复
        登录后回复
        • 从旧到新
        • 从新到旧
        • 最多赞同


        Popular Topics - 热门主题
        • Office24_ProPlus2024VL_MAK_AE2
          H
          huazone
          1
          2
          104

        • 中国移动 26年6月话费流量汇总
          1
          1
          117

        • 中国移动1 AI豆换风行视频超级会员月卡
          N
          nop
          0
          3
          132

        • 农行免费撸3瓶可乐/雪碧/芬达!速度!
          黄大师鉴
          黄大师
          0
          2
          99

        • 交通银行 交电费减了6.7元
          A
          abcpython
          0
          2
          133

        • staticrun免费托管
          我是小马甲~M
          我是小马甲~
          0
          2
          132


        • 登录

        • 没有帐号? 注册

        • 登录或注册以进行搜索。
        百度网盘
        4,225 个主题
        夸克网盘
        4,211 个主题
        连续剧
        1,494 个主题
        国产剧
        1,014 个主题
        美剧
        690 个主题
        动作片
        648 个主题
        恐怖片
        509 个主题
        动画片
        399 个主题

        133

        在线

        43.8k

        用户

        49.6k

        主题

        125.5k

        帖子
        • 第一个帖子
          最后一个帖子