网站计数器必须注意以下三个问题:

(1)网站的来访人数可能会很多,有可能超过20位数,所以必须使用大整数累——BigInteger累完成。

(2)用户每次在第一次访问时才需要进行计数的操作,在执行计算之前必须使用isNew()判断。

(3)在进行更改、保存时需要进行同步操作。

Java

BigInteger count=null;  //定义成全局变量

%>

public BigInteger load(File file){   //读取计数文件

BigInteger count=null;  //接受计数文件

try{

if(file.exists()){  //如果文件存在,则读取

Scanner scan=null; //定义Scanner对象

scan=new Scanner(new FileInputStream(file));//从文件中读取

if(scan.hasNext()){   //存在内容

count=new BigInteger(scan.next());//将内容放到BigInteger类中

}

scan.close(); //关闭输入流

}else{       //文件不惨在则创建新的

count=new BigInteger("0"); //第一次访问

save(file.count); //调用save(),保存新的文件

}

}catch(Exception e){

e.printStackTrace();

}

return count; //返回读取后的数据

}

public void save(File file,BigInteger count){  //保存计数文件

try{

PrintStream ps=null;  //定义输出流对象

ps=new PrintStream(new FileOutputStream(file));//打印流对象

ps.println(count);//保存数据

ps.close();//关闭输出流

}catch(Exception e){

e.printStackTrace();

}

}

%>

String fileName=this.getServletContext().getRealPath("/")+"count.txt";   //文件路径

File file =new File(fileName);

if(session.isNew()){

synchronized(this){   //必须进行同步操作

count=load(file);

count=count.add(new BigInteger("1"));//自增操作

save(file,count);  //保存修改后的数据

}

}

%>

您是第位访客!

本程序中,首先定义了一个全局变量BigInteger,这样即使用户刷新页面,BigInteger对象也不会重复声明。程序中为了保存和读取操作的方便,分别定义了save()和load()方法。load()中首先判断文件是否存在,如果存在,则将已有内容读取进来;如果文件不存在,则创建一个新的count.txt文件(此文件默认保存在Web项目的根目录中),并且将其中的内容设置为0.如果用户是第一次访问,则要执行文件的更新操作,在同步代码中首先对内容进行修改(让内容加1,由于使用的BigInteger,所以要使用其中的add()完成操作),然后将新的内容重新保存在文件中。

java 网站计数器_网站计数器——Java实现相关推荐

  1. java并发计数器_浅谈java并发之计数器CountDownLatch

    CountDownLatch简介 CountDownLatch顾名思义,count + down + latch = 计数 + 减 + 门闩(这么拆分也是便于记忆=_=) 可以理解这个东西就是个计数器 ...

  2. java虚拟机编程_深入理解Java虚拟机(一)

    一.运行时数据区域 1.程序计数器: 当前线程执行字节码的行号指示器(通过改变计数器的值来选择下条需要执行的字节码指令) 每个线程有独立的程序计数器(线程私有,为了切换线程时能恢复到挣钱的执行位置) ...

  3. java开发分支_如何选择Java 的分支?

    问题阐述 听说Java 无所不能,从简单的手机游戏到世界500 强的官方网站都能开发,作为一名Java 的初学者,我该如何入手? 专家解答 自诞生之日起,Java 语言就处于不断的发展中.目前,其主要 ...

  4. A002、java环境搭建_第一个java程序

    目录 1.内容介绍 2.软件开发概述 2.1 软件开发概念 2.2 软件开发示例 2.3 软件开发语言 2.3.1 计算机语言概述 2.3.2 计算机语言分类 2.4 小结 3.Java概述 3.1 ...

  5. 新手java安装教程_新手安装Java开发工具图文教程

    类型:编程工具大小:403.4M语言:英文 评分:7.1 标签: 立即下载 写这些文字的目的是为了给像我一样的想学习Java的非计算机专业的人员提供一个简单明了和快速安装Java的方法,这里提到的可能 ...

  6. java ear包_简单介绍Java 的JAR包、EAR包、WAR包区别

    原标题:简单介绍Java 的JAR包.EAR包.WAR包区别 WAR包 WAR(Web Archive file)网络应用程序文件,是与平台无关的文件格式,它允许将许多文件组合成一个压缩文件.War专 ...

  7. 百度商桥放在php网站哪里_网站优化的几个重要技巧,你知道吗?

    说起网站优化,相信大家并不陌生.网站做好之后,一般都是需要通过各种方法对网站进行优化,才能让用户搜索到你,从而给你带来更多流量.那么对于一个刚上线的新站,我们如何对它进行优化呢?下面迈为科技小编大致介 ...

  8. 马士兵 java 学习笔记_马士兵java教程笔记1

    ---恢复内容开始--- 前记 虽然已经是个研究生了,但是会的东西还是特别的少 甚至连java都不能说是很会 所以准备从现在开始能好好的学习java 变成java master 标识符 标识符是由字母 ...

  9. java 02-cf_cf活动如何设置java环境变量_如何设置java环境变量

    cf助手怎么连接wifi_连接无线网设置 对于刚刚学习java的win7用户来说,首先要学会安装jdk和配置java环境变量,这是学习java的唯一途径,否则编写的代码运行时会出现bug.关于这一点, ...

  10. java 字符串乱码_这份Java面试题含答案解析竟然真的让你不用在面试上“如履薄冰”...

    面试题集共分为以下十部分: 一.Core Java: 1 - 95 题1 - 24 页 基础及语法: 1 - 61 题1 - 13 页 异常: 62 - 69 题13 - 15 页 集合: 70 - ...

最新文章

  1. 王者又连跪了?快让 AI 帮你上分!
  2. 关于transform的3D变形函数
  3. 【杂谈】如何让你的2020年秋招CV项目经历更加硬核,可深入学习有三秋季划4大领域32个方向(2020.7.23号后涨价)
  4. 漫画:如何用Zookeeper实现分布式锁?
  5. php 删除服务器上的文件,php如何删除服务器文件
  6. 好友消息和群消息区别
  7. 如何在Kubernetes上运行PostgreSQL
  8. (12)Verilog HDL可综合与不可综合区别(第3天)
  9. mysql中数据定义和数据控制语言_MySQL的DDL数据定义语言和DCL数据控制语言
  10. postgresql 增量备份
  11. windows系统远程桌面相关内容
  12. java实现三级联动查询_jeefast和Mybatis实现三级联动的示例代码
  13. mysql fetch field_PHP mysql_fetch_field() 函数
  14. 实现文字跟随鼠标移动--[转]
  15. VB6制作一个简单小程序(税收计算)
  16. 软设考点精要,精确到每页!
  17. UML-----实现图(构件图、部署图)
  18. android 基带版本,基带是什么 基带版本是什么
  19. Anroid Studio开发---日记本App
  20. sharemouse切窗口就锁定了什么原因_使各大网课软件监控功能和锁定功能“失效”...

热门文章

  1. 产品经理面试技巧及常见问题
  2. 虚拟机是ubuntu,windows映射盘符方式访问虚拟机
  3. 使用windows内存-内存映射文件
  4. 开源项目之Windows读取Ext4分区的工具 Ext2Read
  5. UCOS操作系统——信号量实验(十)
  6. oracle awr报告提取,Oracle AWR报告提取方法
  7. CentOS系统如何修改语言
  8. win10的自带ie浏览器打不开,点击无反应解决方法 网上提供的重置ie浏览器、卸载ie重装、安装多播协议都没管用
  9. python办公自动化实例(四):批量生成CAD图纸
  10. Win10无法安装 文鼎CS行楷.TTF