0 0

关于JavaWeb并发控制10

   
     最近公司在做一个需求,需求如下,一张表里有100W条数据,

  状态都是有效,每一个用户请求一个控制器时,随机取出

  出该表的一个ID,并把该条数据的ID状态设置为无效。该条数据

  已经被读取后,不允许其他用户读取。所以,


  目前要考虑的是,如有N个用户请求时,一条数据不能被两个用户读取,


  各位大虾,有什么解决方案?

 
 
2013年7月26日 22:12

7个答案 按时间排序 按投票排序

0 0

自己写个小的cache组件吧,DBA都是大爷,不好伺候
例如
1每次读取1000条数据到arrayBlockingQueue中
2来一个线程,则从queue里面去掉一条记录,同时将改数据状态改成无效

1000个全部取完了,再重复1-2

2013年7月29日 15:49
0 0

select for update可以提供读加锁

2013年7月28日 11:01
0 0

单web:

  • 做一个队列存储有效状态的数据
  • 定时器(或每次取数据后触发判断,异步执行数据加载):当队列数据<2N时,取新的有效数据到队列中
  • 前台直接从队列里面取



web集群模式:
  • redis做一个list或sorted set存储有效状态的数据
  • 定时器(或每次取数据后触发判断,异步执行数据加载):数据库事务使用串行化,加载最新数据到redis,同时数据状态设置为无效
  • 前台从redis pop数据

2013年7月27日 19:39
0 0

你如果使用hibernate框架的话,它里面有一个乐观锁的功能,这个功能就是用来防止你在查询的时候,别人把值给修改了。它会给每条数据加一个版本,只有最新版本才能去操作。你可以去了解一下。挺简单的。

2013年7月27日 15:51
0 0

设定,这个表,事务的级别,,

2013年7月27日 12:49
0 0

读取之前更新读取者字段,读取之后检查读取者是否为自己。是则更新,否则重新读取。

2013年7月27日 07:47
0 0

加一个状态字段(0,1),先更新状态字段为1再读取,其他读取状态为0的记录,查询出来处理完毕后更新状态字段为0,这样就可以保证一个用户在操作该记录的时候其他用户查询不到该记录而不能修改它,同时需要注意事务级别,保证更新事务未提交的时候禁止读。

2013年7月26日 22:28

相关推荐

    JavaWeb并发编程与高并发解决方案.docx

    - J.U.C(Java Util Concurrency):Java并发工具包,提供多种并发控制工具类。 - AQS(AbstractQueuedSynchronizer):抽象队列同步器,许多并发工具的基础。 - ThreadLocal:线程局部变量,用于解决线程间的...

    Javaweb商城系统.zip

    为了应对高并发和大数据量的挑战,JavaWeb商城系统可能需要进行缓存策略设计,如使用Redis或Memcached进行数据缓存。另外,通过负载均衡、数据库读写分离、分库分表等手段,可以提高系统的扩展性和性能。 总的来说...

    javaweb实现的博客源代码

    5. 评论模块:用户可以对博客文章进行评论,需要处理并发访问和防止重复提交的问题。 6. 安全性:考虑到Web应用的安全性,项目可能包含了CSRF(跨站请求伪造)防护、XSS(跨站脚本攻击)过滤、SQL注入防范等措施。 ...

    javaweb英语论文原文+翻译

    在高并发、大数据量的JavaWeb应用中,JMS常用于处理后台任务和事件通知。 6. **Web安全**:论文可能还会讨论JavaWeb的安全机制,如HTTPS、表单认证、权限控制、防止SQL注入和跨站脚本攻击(XSS)等,这些都是开发...

    学生选课系统 Javaweb版的

    在本系统中,Servlet作为控制器,处理用户的请求;JSP用于生成动态网页内容,展示给用户;而JSTL则简化了页面逻辑,使代码更易于维护。 二、数据库设计 选课系统通常需要存储学生信息、课程信息、选课记录等数据。...

    Javaweb笔记.zip

    1. **Java基础**:这是学习JavaWeb的基础,主要包括Java语言的基本语法,如变量、数据类型、运算符、流程控制语句(if-else、switch、for、while等)、类与对象、封装、继承、多态等概念。此外,还会涉及异常处理、...

    javaWEB的网上书城

    在本项目中,我们探讨的是一个基于JavaWEB技术构建的网上书城系统。这个系统的主要目的是为用户提供在线浏览、搜索、购买图书的服务。通过使用JavaWEB技术,我们可以创建一个高效、稳定且用户友好的网络平台,使用户...

    JAVAWeb技术与应用-青软实训教材配套资源

    4. MVC架构:Model-View-Controller模式是JavaWeb开发中常用的设计模式,将应用分为模型、视图和控制器三个部分,分别负责数据处理、用户界面展示和用户交互控制,有利于提高代码组织和维护性。 5. JDBC(Java ...

    javaWeb学生成绩管理系统

    - **MVC(Model-View-Controller)**:模型-视图-控制器设计模式,广泛应用于JavaWeb开发,用于分离业务逻辑、数据和用户界面。 5. **开发工具与框架**: 开发JavaWeb应用时,常常会使用IDE(如Eclipse、IntelliJ...

    JavaWeb用户管理系统

    此过程需处理并发问题,确保数据一致性。 5. **分页查询**:为了提高用户体验,通常会使用分页展示大量用户数据。这需要在后端计算总条数,确定页数,并根据当前页码获取相应的数据块。在JSP中,可以使用诸如...

    javaweb图书馆管理系统

    原有的博研图书馆管理系统可能存在一些错误,比如SQL查询问题、数据验证错误、并发控制问题等。修复这些错误可能涉及到对代码逻辑的调整、异常处理的优化以及性能的提升。 6. **前端技术** 管理系统的用户界面...

    javaweb贴吧

    9. **权限控制**:JavaWeb贴吧可能需要实施权限控制,如管理员可以删除、编辑帖子,普通用户只能发帖和回复。这需要设计一套角色权限模型,并在代码中实现相应的逻辑判断。 10. **扩展性**:为了满足未来的需求,...

    javaweb网络在线考试系统源代码

    2. **MVC架构**:大多数JavaWeb项目会采用Model-View-Controller(模型-视图-控制器)架构来组织代码。模型负责业务逻辑,视图展示用户界面,控制器处理用户请求并协调模型和视图。 3. **数据库设计**:考试系统...

    Javaweb实验打包文件.rar

    EJB可以用于事务管理、安全性和并发控制。虽然EJB在现代JavaWeb开发中使用较少,但在某些企业级应用中仍然重要。 7. **JTA(Java Transaction API)**:用于管理分布式事务的API。在处理多资源的事务时,如数据库和...

    javaweb论坛系统毕业设计 源码+sql脚本+论文 完整源码

    首先,SSH框架是JavaWeb开发中常用的三大框架集成,包括Struts负责控制层,Spring负责业务层和服务层,Hibernate则处理数据持久化。Struts提供了MVC设计模式的实现,使得前端视图和后端逻辑得以分离,提高了代码的可...

    javaweb-选课管理系统

    在选课管理系统中,Struts负责控制应用程序的流程,处理用户的请求,将数据传递到模型层进行业务处理,并将结果显示到视图层。它通过Action类来处理HTTP请求,ActionForm用于封装请求参数,而配置文件struts-config....

    基于javaweb的bbs论坛

    10. **性能优化**:考虑到论坛可能有大量并发用户,优化技术如缓存(使用Ehcache或Redis)、数据库索引、负载均衡(如Nginx反向代理)等可以提高系统性能。 11. **部署与运维**:项目部署涉及将应用打包成WAR文件,...

    javaweb聊天源码6

    模型(Model)负责业务逻辑,视图(View)展示数据,控制器(Controller)处理用户请求并协调模型和视图。 6. **数据库操作**: 为了持久化聊天记录,需要与数据库交互。JavaWeb常使用的数据库连接API有JDBC(Java...

    JavaWeb项目开发全程实录明日科技源码.rar

    在这个项目中,你将学习到Spring框架、Hibernate ORM、MyBatis等技术,以及如何处理并发控制、安全性、性能优化等问题。支付系统的实现可能还会涉及第三方支付接口的对接。 4. **JavaWeb核心技术**: JavaWeb项目...

    javaweb当当网源码

    通过分析和学习这个源码,开发者不仅可以掌握JavaWeb开发的基本技术,还能了解如何在实际项目中组织代码结构、优化性能、处理并发问题以及实现安全控制。对于初学者来说,这是一个很好的实践平台,有助于提升实际...

Global site tag (gtag.js) - Google Analytics