0 0

关于大并发修改变量值的存储容器的问题5

现要实现这样一个功能:有很多一个网址导航网站,上面的链接每被点击一次,该链接的访问量就加一,链接在数据库中的id是int型,每被点击一次,服务器就后收到被点击的链接的id,初步设想是用变量存储各链接访问量增加值,并异步同步到数据库.现在的问题是,这个些变量应该用什么容器来存储会比较好,应为需要注意的是,链接有可能随时被管理员在后台增加的,增加后也马上投入到访问数的统计中。
2012年8月01日 08:02

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

0 0

过滤的url配置为xml文件,过滤器去解析xml,然后计数,后台管理员添加url后代码修改xml,就可以保证修改后立即生效了。

2012年8月01日 09:34
0 0

这种需求不应该实时更新到数据库。用map存储,当达到最大的阀值或者通过定时间隔更新数据库。

map中,key:url,value:count。当增加一个链接,反映到map中,也就是增加一个key。
不过这个map需要线程安全。
如果是集群架构的,需要同步更新各server

2012年8月01日 08:40

相关推荐

    并发编程实践,全面介绍基础知识、JVM同步原语、线程安全、低级并发工具、线程安全容器、高级线程协作工具、Executor部分等

    - **存储模型**:Java内存模型(JMM)定义了线程如何访问和修改共享变量,以确保正确性。 2. **JVM同步原语** - **volatile**:保证共享变量的可见性和禁止指令重排序,使得所有线程能获取到最新值。 - **CAS...

    Java-并发容器之ConcurrentHashMap

    【Java并发容器之ConcurrentHashMap】是Java编程中用于高效并发操作的重要工具。相比于HashMap,ConcurrentHashMap在多线程环境下提供了线程安全的保证,避免了因扩容导致的CPU资源消耗过高问题。传统的线程安全解决...

    深入Java多线程和并发编程

    由于`ready`和`number`变量没有被声明为`volatile`,主线程修改了这两个变量后,其他线程可能看不到最新的值。这种情况下,可以通过添加`volatile`关键字或其他同步机制来解决可见性问题。 #### Java并发工具与容器...

    Java并发编程与高并发解决方案.txt

    JMM的主要目标是定义程序中各种变量(线程共享变量)的访问规则,以及在并发环境中这些变量的存储与读取行为。 ##### 2.2 volatile关键字 `volatile`关键字用于标记一个变量为易变变量,在多线程环境下能够保证该...

    Java并发理论,如何理解线程安全.docx

    Java并发理论是编程中至关重要的一个领域,尤其是在多核处理器和高并发应用环境下。线程安全是并发编程的核心...开发者应关注并发编程的三大属性:原子性、有序性和可见性,并利用Java提供的并发机制来避免潜在问题。

    oracle变量定义详解.docx

    在 Oracle 数据库中,变量是存储数据的容器,它们在 PL/SQL 程序块(如过程、函数和匿名块)中广泛使用。理解如何正确地定义和使用变量是编写高效、健壮的 Oracle 应用程序的关键。本文将深入解析 Oracle 变量的定义...

    Java多线程和并发知识点详细总结_并发_java_

    3. 集合框架:ArrayList、LinkedList、HashSet、HashMap等是Java集合框架的基本组件,提供了存储和操作对象的容器。 4.IO流:Java的IO流模型处理输入和输出,分为字节流和字符流,有输入流和输出流,以及缓冲流、...

    Java并发编程示例(九):本地线程变量的使用

    Java并发编程中的本地线程变量(ThreadLocal)是一种强大的工具,用于在线程内部维护独立的、隔离的变量副本。在上述示例中,问题在于多个线程共享同一个`startDate`属性,导致它们看到的是相同的值,而不是各自独立...

    Tomcat并发优化方法介绍

    Tomcat是Apache软件基金会Jakarta项目中的一个核心项目,是一个开源的Java Servlet容器,广泛用于部署Web应用程序。在高并发环境下,优化Tomcat的性能至关重要,以确保系统能够处理大量并发请求,提高响应速度和整体...

    深入研究Servlet线程安全性问题.pdf

    在多线程环境中,如果多个线程同时修改相同的实例变量,则可能导致数据不一致性问题。例如,在上面给出的`ConcurrentTest` Servlet示例中,`PrintWriter output` 是一个实例变量,它在`service`方法中被赋值。当只有...

    Lambda函数对S3对象的并发控制forEachmapreducefilter

    在Lambda中处理S3对象时,可以将处理结果累积到一个全局变量或使用DynamoDB等持久化存储来存储中间结果。最后,所有结果汇总到一起,形成最终结果。 4. **filter**:filter函数用于创建一个新数组,包含通过测试的...

    Java集合容器面试题(2022最新版)-重点.docx

    - **定义**:集合容器是一种用于存储数据的容器,其设计目的是为了提供一种统一且标准的方式来进行数据的存储和操作。 - **组成**:集合框架主要包括对外的接口、接口的具体实现以及针对集合进行的各种算法。 #### ...

    ThreadLocal 线程本地变量 及 源码分析.rar_开发_设计

    - 控制并发:例如在Servlet容器中,每个请求可以分配一个ThreadLocal变量,存储请求特有的数据。 - 容器内部使用:例如Spring框架中的TransactionTemplate就是利用ThreadLocal来管理事务的。 以上是对ThreadLocal...

    Go语言基本知识和概念

    变量是存储数据的容器。在Go语言中,所有的变量在声明后必须被使用,否则编译器会报错。变量可以声明在不同的作用域中,例如函数内或全局。Go语言的变量类型包括数值类型、字符串、布尔类型、指针类型、数组、切片...

    Java面试题和答案80道.docx

    - `ConcurrentHashMap`、`CopyOnWriteArrayList`等并发容器提供线程安全的数据结构,适用于高并发环境下的数据存储和访问。 了解并掌握这些知识点对于Java开发者来说至关重要,它们不仅可以帮助解决实际开发中的...

    java程序设计大学教程试题+课件

    1. **基本语法**: 学习者应掌握变量声明、数据类型(如整型、浮点型、字符型、布尔型)、运算符、控制结构(如if-else、switch、for、while循环)以及流程控制语句。 2. **类与对象**: Java是面向对象的语言,理解...

    Java_upload_1.rar_JAVA 上传_java uplo_java upload_javauplo

    本示例"Java_upload_1.rar"提供了一个自定义的Java上传类,它支持多文件同时上传,并具有处理上传请求中变量值和过滤文件等实用功能。这个压缩包包含两个文件:www.pudn.com.txt和upload。 首先,我们关注的是`...

    badboy user guide

    编辑变量允许用户修改已定义的变量值。这对于动态改变测试逻辑或调试脚本非常有用。 ##### 7.4 使用变量 Badboy 支持在脚本中广泛使用变量。例如,可以将变量用作URL参数、表单字段的值等。 ##### 7.5 变量值列表...

    javascript教程

    变量是存储值的容器,数据类型包括基本类型(如字符串、数字、布尔值)和引用类型(如对象)。操作符用来进行计算或逻辑判断,而语句则构成了程序的主体,如条件语句(if...else)和循环语句(for、while)。函数是...

    高级Java经典面试题2019

    它通过每个线程的`ThreadLocalMap`存储变量值,解决了线程间的数据冲突问题。 #### InheritableThreadLocal的实现原理 `InheritableThreadLocal`允许子线程继承父线程中的变量值。它的实现基于`Thread`类中的`...

Global site tag (gtag.js) - Google Analytics