public static long GetNextKeyValueLong(String keyID) { KeyDAO keyDAO = new KeyDAO(); KeyEntity keyEntity = null; cache.TryGetValue(keyID, out keyEntity); long keyValue = 0; if (keyEntity == null) {//双重检查防止并发 lock (myLock) { cache.TryGetValue(keyID, out keyEntity); if (keyEntity == null) { keyEntity = keyDAO.Load(keyID); if (keyEntity == null) { keyEntity = new KeyEntity { Steps = defaultKeyCount, Key_id = keyID, Max_value = defaultKeyCount, LastValue = 0 }; keyDAO.Insert(keyEntity); } else { keyDAO.UpdateMaxValue(keyID, keyEntity.Steps); keyEntity.LastValue = keyEntity.Max_value; keyEntity.Max_value += keyEntity.Steps; } cache[keyID] = keyEntity; } } } lock (keyEntity) { keyValue = keyEntity.GetNextValue(); if (keyValue == 0) { //缓存里的值已经用完,再次申请 keyDAO.UpdateMaxValue(keyID, keyEntity.Steps); keyEntity.LastValue = keyEntity.Max_value; keyEntity.Max_value += keyEntity.Steps; } } return(keyValue); }
public IActionResult Register(string mail, string pass, string key) { Usuario usuario = new Usuario(mail, pass); var confirm = KeyDAO.getInstance().verificarKey(key); var confirm2 = UsuarioDAO.getInstance().verificarUsuario(usuario); if (confirm && !confirm2) { UsuarioDAO.getInstance().agregarUsuario(usuario); KeyDAO.getInstance().borrarKey(key); ViewBag.msg = "El usuario fue creado correctamente"; return(View("Registro")); } else if (!confirm) { ViewBag.msg = "La key ingresada ya está en uso o es inexistente"; return(View("Registro")); } else { ViewBag.msg = "El usuario ya existe"; return(View("Registro")); } }
public static void MiMain() { KeyDAO.getInstance().generarKeys(); }