java 将数据加载到内存中的操作

将数据加载到内存中

1、建立InitListener.java

package app.util;
import java.util.HashMap;
import java.util.Map;

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;

import org.jboss.logging.Logger;
import org.springframework.web.context.ContextLoader;
import org.springframework.web.context.WebApplicationContext;
import com.test.ResourceService;

/**
 * 加载数据到内存案例
 * @author 浅陌
 *
 */
public class InitListener extends HttpServlet implements ServletContextListener {

  /**
 *
 */
 private static final long serialVersionUID = 1L;
 public static Map<String, Object> contextMap=new HashMap<String,Object>();

  private Logger logger = Logger.getLogger(InitListenerMobileResourceTree.class);
  public void init() throws ServletException{

//  logger.info("====初始化方法运行初完毕====");

  }
  @Override
  public void contextDestroyed(ServletContextEvent arg0) {

    logger.info("this is last destroyeed ");
  }
  @Override
  public void contextInitialized(ServletContextEvent sce) {//获取要加载的数据方法
   try {
 /*
  *如果在获取数据时用到其他项目包中的接口,可以用如下方法
   * WebApplicationContext wac = ContextLoader.getCurrentWebApplicationContext();
  * ResourceService resourceService = (ResourceService) wac.getBean("resourceService");// 跑批接口的实现类
  * 在springMVC.XML 中加入
  * <bean id="resourceService" class="com.test.ResourceService" />
   */
     String JsonStr = 获取加载出来的数据(类型视情况而定)

  //将数据放到定义好的contextMap中
     contextMap.put("JsonStr", JsonStr);     

 } catch (Exception e) {
  e.printStackTrace();
 }
   logger.info(contextMap);
  }
}

2.配置web.xml

<listener>
 <listener-class>app.util.InitListener</listener-class>
</listener>

3.获取内存中的数据

InitListener.contextMap.get("JsonStr");

补充知识:java 字节流——将硬盘中的文件读到内存中,将内存中的数据写入硬盘中

我就废话不多说了,大家还是直接看代码吧~

package com.oracle.core;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;

public class ByteStream_Study
{
 public static void main(String[] args) throws IOException
 {
    // 输入流
 //从硬盘到内存,文件必须存在
 InputStream in=new FileInputStream("D:\\hello.txt");
 //1.分配一块内存空间 临时的空间 存放我文件的数据
 byte[] b=new byte[in.available()];
 //2.将数据读入到内存空间
 in.read(b);
 //3.将数据转换为字符串
   //如果编码是UTF-8 可以省略
 String s=new String(b,"GBK");
 System.out.println(s);
 in.close();

    //  输出流
 //从内存到硬盘
 //文件不存在 输出流会自动创建这样一个文件
 OutputStream out=new FileOutputStream("D:\\haha.txt");
 String s1="再见";
 //输入还是输出流 操作的都是内存空间 字节数组
 out.write(s1.getBytes());
 out.close();
 }
}

以上这篇java 将数据加载到内存中的操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • java将数据写入内存,磁盘的方法

    内存:读写快,断掉后数据清空: 磁盘:读写慢, 断掉后数据不清空: 1.写入内存:一般使用HashMap.list或者是一些缓存框架,如:(ehcache.memcache) 2.写入磁盘:一般使用文件输出流,如: 以上这篇java将数据写入内存,磁盘的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们. 您可能感兴趣的文章: java写入文件的几种方法分享 Java获取磁盘空间的两种代码示例

  • 详解Java虚拟机管理的内存运行时数据区域

    详解Java虚拟机管理的内存运行时数据区域 概述 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同数据区域.这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的启动而存在,有些区域则是依赖用户线程的启动和结束而建立和销毁. 程序计数器 程序计数器是一块较小的内存空间,它可以看作是当前线程所执行的字节码的行号指示器.在虚拟机的概念模型里,字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基

  • 解决Java导入excel大量数据出现内存溢出的问题

    问题:系统要求导入40万条excel数据,采用poi方式,服务器出现内存溢出情况. 解决方法:由于HSSFWorkbook workbook = new HSSFWorkbook(path)一次性将excel load到内存中导致内存不够. 故采用读取csv格式.由于csv的数据以x1,x2,x3形成,类似读取txt文档. private BufferedReader bReader; /** * 执行文件入口 */ public void execute() { try { if(!path.

  • Java内存模型与JVM运行时数据区的区别详解

    首先,这两者是完全不同的概念,绝对不能混为一谈. 1.什么是Java内存模型? Java内存模型是Java语言在多线程并发情况下对于共享变量读写(实际是共享变量对应的内存操作)的规范,主要是为了解决多线程可见性.原子性的问题,解决共享变量的多线程操作冲突问题. 多线程编程的普遍问题是: 所见非所得 无法肉眼检测程序的准确性 不同的运行平台表现不同 错误很难复现 故JVM规范规定了Java虚拟机对多线程内存操作的一些规则,主要集中体现在volatile和synchronized这两个关键字. vo

  • java 将数据加载到内存中的操作

    将数据加载到内存中 1.建立InitListener.java package app.util; import java.util.HashMap; import java.util.Map; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.ServletException; import javax.servlet.http.

  • java自定义ClassLoader加载指定的class文件操作

    继承ClassLoader并且重写findClass方法就可以自定义一个类加载器,具体什么是类加载器以及类加载器的加载过程与顺序下次再说,下面给出一个小demo 首先定义一个类,比如MyTest,并且将其编译成class文件,然后放到一个指定的文件夹下面,其中文件夹的最后几层就是它的包名,这里我将这个编译好的类放到 : /Users/allen/Desktop/cn/lijie/MyTest.class package cn.lijie; public class MyTest { public

  • PostgreSQL将数据加载到buffer cache中操作方法

    我们都知道数据在缓存中访问远比在磁盘中访问速度要快,那么我们怎么在pg中将指定的数据加载到缓存中呢,这有点类似于Oracle的in-memory. 当然要注意并不是把数据加载到内存中就一定是好的,因为相较于磁盘,内存总是有限的,所以一帮我们只是在特殊场合下将需要的数据加载到内存中来加快访问的速度. 我们可以使用pg_prewarm插件来将指定的表加载到OS Buffer或者pg shared buffer中. 安装: bill=# create extension pg_prewarm ; CR

  • 解决pytorch load huge dataset(大数据加载)

    问题 最近用pytorch做实验时,遇到加载大量数据的问题.实验数据大小在400Gb,而本身机器的memory只有256Gb,显然无法将数据一次全部load到memory. 解决方法 首先自定义一个MyDataset继承torch.utils.data.Dataset,然后将MyDataset的对象feed in torch.utils.data.DataLoader()即可. MyDataset在__init__中声明一个文件对象,然后在__getitem__中缓慢读取数据,这样就不会一次把所

  • SpringBoot实现加载yml文件中字典数据

    将字典数据,配置在 yml 文件中,通过加载yml将数据加载到 Map中 Spring Boot 中 yml 配置.引用其它 yml 中的配置.# 在配置文件目录(如:resources)下新建application-xxx 必须以application开头的yml文件, 多个文件用 "," 号分隔,不能换行 项目结构文件 application.yml server: port: 8088 application: name: VipSoft Env Demo spring: pro

  • Java类的加载连接和初始化实例分析

    本文实例讲述了Java类的加载连接和初始化.分享给大家供大家参考,具体如下: 一 点睛 1 类加载 当程序主动使用某个类时,如果该类还未被加载到内存中,系统会通过加载.连接.初始化三个步骤来对该类进行初始化,如果没有意外,JVM将会连续完成这三个步骤,所以有时也把这三个步骤统称为类加载或类初始化. 类加载指的是将类的class文件读入内存,并为之创建一个java.lang.Class对象,也就是说当程序使用任何类时,系统都会为之建立一个java.lang.Class对象. 2 类数据的来源 通过

  • 详解Java 类的加载、连接和初始化

    系统可能在第一次使用某个类时加载该类,也可能采用预加载机制来加载某个类.本节将会详细介绍类加载.连接和初始化过程中的每个细节. JVM 和类 当调用 java 命令运行某个 Java 程序时,该命令将会启动一个 Java 虚拟机进程,不管该 Java 程序有多么复杂,该程序启动了多少个线程,它们都处于该 Java 虚拟机进程里.正如前面介绍的,同一个 JVM 的所有线程.所有变量都处于同一个进程里,它们都使用该 JVM 进程的内存区.当系统出现以下几种情况时,JVM 进程将被终止. 程序运行到最

  • Java类的加载时机与过程

    目录 1 开门见山 2 类的加载时机 3 何时开始类的初始化 4 被动引用例子 5 类的加载过程 5.1 加载 5.2验证 5.3准备 5.4 解析 5.5 初始化 1 开门见山 以前曾经看到过一个java的面试题,当时觉得此题很简单,可是自己把代码运行起来,可是结果并不是自己想象的那样.题目如下: class SingleTon { private static SingleTon singleTon = new SingleTon(); public static int count1; p

  • Android加载图片内存溢出问题解决方法

    1. 在Android软件开发过程中,图片处理是经常遇到的. 在将图片转换成Bitmap的时候,由于图片的大小不一样,当遇到很大的图片的时候会出现超出内存的问题,为了解决这个问题Android API提供了BitmapFactory.Options这个类. 2. 由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出.Bitmap会将图片的所有像素(即长x宽)加载到内存中,如果图片分辨率过大,会直接导致内存OOM,只有在BitmapFactory加载图片时使用BitmapFact

  • android中图片加载到内存的实例代码

    本文演示android中图片加载到内存 首先设计界面: 代码如下: <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="matc

随机推荐