当前位置: 首页 > news >正文

做网站可以没有框架吗东莞seo代理

做网站可以没有框架吗,东莞seo代理,大型的网站建设,王野苏婉卿1、select for update 的基本语法 SELECT * FROM table_name WHERE condition FOR UPDATE;2、select for update 的定义及作用 2.1 、select for update的含义是在查询数据的同时对所选的数据行进行锁定,以保证数据的一致性和并发控制。在并发环境下,多…

1、select for update 的基本语法

SELECT * FROM table_name WHERE condition FOR UPDATE;

2、select for update 的定义及作用

2.1 、select for update的含义是在查询数据的同时对所选的数据行进行锁定,以保证数据的一致性和并发控制。在并发环境下,多个事务可能同时对同一数据进行读取和修改。如果不加任何锁机制,就会出现脏数据的情况,即一个事务读取了另一个事务尚未提交的数据,导致数据不一致。
2.2、通过使用select for update,我们可以在查询数据的同时对所选的数据行进行锁定,确保其他事务无法对这些数据行进行修改。这种加锁机制可以有效地避免脏数据的问题,保证数据的一致性。

3、基于select for update 实现数据库分布式锁

注意事项

  1. select for update 必须在事务中才会生效。
  2. 该语法适用于mysql的innodb 数据库引擎。

java实现

package com.monika.main.system.lock.impl;import com.monika.main.system.lock.Lock;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.jdbc.core.ResultSetExtractor;
import org.springframework.stereotype.Component;
import org.springframework.transaction.support.TransactionTemplate;
import org.springframework.beans.factory.InitializingBean;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.HashMap;
import java.util.Map;/*** @author:whh* @date: 2024-05-11 18:47* <p></p>*/@Component
public class JdbcRowLock implements Lock,InitializingBean {private static final Logger LOG = LoggerFactory.getLogger(JdbcRowLock.class);private static final String LOCK_NAME = "JDBC_LOCK_NAME";private static final int LOCK = 1;private static final int UNLOCK = 0;private static final String SELECT_SQL = "select lock_name,lock_status from tb_lock where lock_name = ? for update";private static final String UPDATE_SQL = "update tb_lock set lock_status = ? where lock_name = ?";private JdbcTemplate jdbcTemplate;/*** 事务*/private TransactionTemplate transactionTemplate;@Overridepublic boolean lock() {Boolean lock = transactionTemplate.execute(action -> {Map<String, Object> result = jdbcTemplate.queryForMap(SELECT_SQL, LOCK_NAME);int lockStatus = (int) result.get("lock_status");if (LOCK == lockStatus) {LOG.info("线程{}获取锁[{}]失败,当前锁已被占用", Thread.currentThread().getName(), LOCK_NAME);return false;}jdbcTemplate.update(UPDATE_SQL, ps -> {ps.setInt(1, LOCK);ps.setString(2, LOCK_NAME);});LOG.info("线程{}获取锁[{}]成功", Thread.currentThread().getName(), LOCK_NAME);return true;});return lock;}@Overridepublic void unlock() {jdbcTemplate.update(UPDATE_SQL, ps -> {ps.setInt(1, UNLOCK);ps.setString(2, LOCK_NAME);});LOG.info("线程{}释放锁[{}]成功", Thread.currentThread().getName(), LOCK_NAME);}@Overridepublic void interrupt() {jdbcTemplate.update(UPDATE_SQL, ps -> {ps.setInt(1, UNLOCK);ps.setString(2, LOCK_NAME);});}/**
*  初始化时重置状态锁
*/@Overridepublic void afterPropertiesSet()throws Exception{jdbcTemplate.update(UPDATE_SQL, ps -> {ps.setInt(1, UNLOCK);ps.setString(2, LOCK_NAME);});}@Autowiredpublic JdbcRowLock(JdbcTemplate jdbcTemplate, TransactionTemplate transactionTemplate) {this.jdbcTemplate = jdbcTemplate;this.transactionTemplate = transactionTemplate;}
}
http://www.hrbkazy.com/news/7599.html

相关文章:

  • 幼儿园网站建设方案结语2023年8月新冠又来了
  • 怎么免费制作一个网站网上竞价
  • 选择网站模板注意事项最新疫情最新情况
  • 东莞网站推广外包seo如何快速排名
  • 花多少钱能把网站做到页面网站推广业务
  • 学做吃的网站有哪些会员卡营销策划方案
  • 1个g网站空间多少钱论坛推广的步骤
  • 手机微信网站教育培训机构加盟十大排名
  • 磁力棒沈阳关键词seo
  • 邢台网络运营中心处理中心seo网站推广是什么意思
  • 网页设计与网站建设基础百度竞价点击一次多少钱
  • 滕州外贸网站建设百度热榜实时热点
  • 网站开发公司简介怎么写网站seo外链平台
  • 做赛事预测网站百度推广网址是多少
  • 代理网站系统兰州疫情最新情况
  • 虎门有没有做网站公司买淘宝店铺多少钱一个
  • 高端大气企业网站成功的营销案例及分析
  • 网站开发工程师和前端怎样才能上百度
  • 想给孩子找点题做 都有什么网站百度信息流广告代理
  • dede网站打不开北京网站优化快速排名
  • 福田附近公司做网站建设哪家效益快百度流量统计
  • 小熊代刷推广网站下拉框关键词软件
  • 我的网站百度搜不到深圳关键词自动排名
  • 牛商网网站建设廊坊自动seo
  • 进网站后台显示空白千峰培训出来好就业吗
  • 邢台做网站推广的公司企业网站seo方案案例
  • 滕州建网站湖南网站建设推广
  • 阜宁县住房与城乡建设局网站南宁seo服务优化
  • 网站建设 inurl:.bbs建立网站需要什么
  • 做网站的每天打电话咋办饥饿营销的十大案例