- 浏览: 1482837 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (691)
- linux (207)
- shell (33)
- java (42)
- 其他 (22)
- javascript (33)
- cloud (16)
- python (33)
- c (48)
- sql (12)
- 工具 (6)
- 缓存 (16)
- ubuntu (7)
- perl (3)
- lua (2)
- 超级有用 (2)
- 服务器 (2)
- mac (22)
- nginx (34)
- php (2)
- 内核 (2)
- gdb (13)
- ICTCLAS (2)
- mac android (0)
- unix (1)
- android (1)
- vim (1)
- epoll (1)
- ios (21)
- mysql (3)
- systemtap (1)
- 算法 (2)
- 汇编 (2)
- arm (3)
- 我的数据结构 (8)
- websocket (12)
- hadoop (5)
- thrift (2)
- hbase (1)
- graphviz (1)
- redis (1)
- raspberry (2)
- qemu (31)
- opencv (4)
- socket (1)
- opengl (1)
- ibeacons (1)
- emacs (6)
- openstack (24)
- docker (1)
- webrtc (11)
- angularjs (2)
- neutron (23)
- jslinux (18)
- 网络 (13)
- tap (9)
- tensorflow (8)
- nlu (4)
- asm.js (5)
- sip (3)
- xl2tp (5)
- conda (1)
- emscripten (6)
- ffmpeg (10)
- srt (1)
- wasm (5)
- bert (3)
- kaldi (4)
- 知识图谱 (1)
最新评论
-
wahahachuang8:
我喜欢代码简洁易读,服务稳定的推送服务,前段时间研究了一下go ...
websocket的helloworld -
q114687576:
http://www.blue-zero.com/WebSoc ...
websocket的helloworld -
zhaoyanzimm:
感谢您的分享,给我提供了很大的帮助,在使用过程中发现了一个问题 ...
nginx的helloworld模块的helloworld -
haoningabc:
leebyte 写道太NB了,期待早日用上Killinux!么 ...
qemu+emacs+gdb调试内核 -
leebyte:
太NB了,期待早日用上Killinux!
qemu+emacs+gdb调试内核
http://coach.iteye.com/blog/738214
package com.unmi; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.nio.channels.FileChannel.MapMode; /** * 往 "共享内存" 写入数据 * @author Unmi */ public class WriteShareMemory { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { RandomAccessFile raf = new RandomAccessFile("c:/swap.mm", "rw"); FileChannel fc = raf.getChannel(); MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, 1024); //清除文件内容 for(int i=0;i<1024;i++){ mbb.put(i,(byte)0); } //从文件的第二个字节开始,依次写入 A-Z 字母,第一个字节指明了当前操作的位置 for(int i=65;i<91;i++){ int index = i-63; int flag = mbb.get(0); //可读标置第一个字节为 0 if(flag != 0){ //不是可写标示 0,则重复循环,等待 i --; continue; } mbb.put(0,(byte)1); //正在写数据,标志第一个字节为 1 mbb.put(1,(byte)(index)); //写数据的位置 System.out.println("程序 WriteShareMemory:"+System.currentTimeMillis() + ":位置:" + index +" 写入数据:" + (char)i); mbb.put(index,(byte)i);//index 位置写入数据 mbb.put(0,(byte)2); //置可读数据标志第一个字节为 2 Thread.sleep(513); } } }
package com.unmi; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; import java.nio.channels.FileChannel.MapMode; /** * 从 "共享内存" 读出数据 * @author Unmi */ public class ReadShareMemory { /** * @param args * @throws Exception */ public static void main(String[] args) throws Exception { RandomAccessFile raf = new RandomAccessFile("c:/swap.mm", "rw"); FileChannel fc = raf.getChannel(); MappedByteBuffer mbb = fc.map(MapMode.READ_WRITE, 0, 1024); int lastIndex = 0; for(int i=1;i<27;i++){ int flag = mbb.get(0); //取读写数据的标志 int index = mbb.get(1); //读取数据的位置,2 为可读 if(flag != 2 || index == lastIndex){ //假如不可读,或未写入新数据时重复循环 i--; continue; } lastIndex = index; System.out.println("程序 ReadShareMemory:" + System.currentTimeMillis() + ":位置:" + index +" 读出数据:" + (char)mbb.get(index)); mbb.put(0,(byte)0); //置第一个字节为可读标志为 0 if(index == 27){ //读完数据后退出 break; } } } }
发表评论
-
tomcat的https的例子
2016-09-22 17:50 463参考http://jingyan.baidu.com/arti ... -
jpa
2014-11-25 20:14 581可以使用jpa生成数据库表 import javax.pe ... -
hadoop复习 1搭建
2014-07-23 17:38 784参考http://hadoop.apache.org/docs ... -
jspwebshell
2014-06-20 12:35 6729<%@ page contentType=" ... -
jvm总结
2013-03-04 19:02 1742分代 年轻代: 所有新生 ... -
java的upload
2013-01-24 19:31 1969好久没写java的东西了 遇到个服务器,不是标准的httpSe ... -
spring lucene rmi例子
2012-09-18 16:24 1906http://www.blogjava.net/freeman ... -
jna的使用
2012-04-22 21:06 2918遇到java调用共享内存的 ... -
hessian
2012-04-10 10:40 928http://hessian.caucho.com/ 这个好 ... -
jvm调优应该知道的一点东西
2012-02-27 18:13 1266概念 概念 Java 工具 jsta ... -
java socket备份
2012-02-22 10:01 1065package org.hao; import java ... -
java操作内存
2011-12-29 00:57 5193How To Write Directly to a Memo ... -
单例模式7中
2011-12-28 09:56 925package com.sohu.zookeeper; // ... -
jprofiler6远程resin
2011-07-07 23:17 2703网上找的破解码:L-Larry_Lau@163.com#784 ... -
eclipse不装插件配置resin,可以debug
2011-06-27 23:41 1837新建java工程 1.目录如下 G:. ├─.settings ... -
session所有信息
2011-06-07 11:32 790转载http://www.99inf.net/Software ... -
看端口号用netstat -abn
2011-05-14 00:27 1312张孝祥讲过个fport,到哪都依赖他看端口被什么占用, 原来n ... -
hessian的helloworld
2011-05-12 11:02 1201参考http://hessian.caucho.com/#Ex ... -
resin日志
2011-05-03 14:40 1469resin-pro-3.1.9\conf\resin.conf ... -
maven-resin
2011-05-02 22:39 2345关于resin http://2hei.net/mt/2008 ...
相关推荐
在Java中,可以通过`java.nio.MappedByteBuffer`类来实现共享内存功能,这被称为内存映射文件(Memory-Mapped File,MMF)。 `MappedByteBuffer`是NIO中的一种特殊缓冲区,它将文件的一部分映射到内存中,使得文件...
标题“IPC.rar_IPC_java i_java ipc_java共享内存_共享内存”以及描述“IPC共享内存,文件映射编程,实现原理详解”都指向了一个核心主题:Java中的进程间通信(IPC)以及如何利用共享内存进行数据交换。在这个话题中...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台中用于高效处理I/O操作的重要框架。它在Java 1.4版本中被引入,替代了传统的IO模型,提供了更高级别的I/O操作机制,以适应并发编程的需求...
4. **线程安全**:在多线程环境下使用NIO时,需要确保对共享资源的正确同步。 总之,Java NIO提供了强大的I/O能力,但同时也需要开发者对非阻塞I/O和多路复用有深入理解,才能充分发挥其优势,避免潜在的陷阱。学习...
在Windows系统中,内存映射文件可以是独立于物理文件的共享内存区域,通过命名来实现不同进程之间的数据共享。而在Java NIO中,MappedByteBuffer总是与特定的物理文件相关联,这意味着创建MappedByteBuffer时必须...
- **线程安全**:NIO操作通常是线程不安全的,所以在多线程环境下,需要对共享的Buffer和Channel进行适当的同步控制。 - **内存管理**:Buffer的容量应合理设置,避免频繁扩容或浪费内存。 - **异常处理**:正确处理...
9. **文件锁(File Locking)**:NIO提供了一种锁定文件部分区域的能力,这对于多线程或多进程共享文件时的数据同步非常重要。 NIO的使用虽然相对复杂,但它提供了更高效、灵活的I/O操作方式,尤其适用于处理大量...
### Java NIO API详解 #### 一、引言 在Java早期版本中,I/O操作主要依赖于`java.io`包中的流式API,这些API虽然简单易用,但其本质是阻塞式的,这意味着每次读写操作都会等待直至完成。这种机制在处理大量并发...
Java内存模型,简称JMM(Java Memory Model),是Java编程语言规范的一部分,它定义了线程如何共享和访问内存,以及在并发编程中如何处理数据一致性的问题。理解JMM对于编写高效、线程安全的Java代码至关重要。 1. ...
Java NIO,全称为Non-Blocking Input/Output(非阻塞输入/输出),是Java平台从J2SE 1.4版本开始引入的一种新的I/O模型,是对传统的BIO(Blocking I/O)模型的一种有效补充。NIO的核心在于提供了一种能够避免线程在...
Java内存模型(Java Memory Model, JMM)是Java虚拟机(JVM)的一部分,用于规定程序中的各种变量(包括实例字段、静态字段和数组元素等)在多个线程共享内存中的读写行为。JMM的主要目的是确保所有线程能够看到一致...
### Java NIO 相关知识点 #### 一、Java NIO 概述 - **Java NIO (New I/O)**:是 Java 平台提供的新 I/O 处理方式,首次出现在 Java SE 1.4 版本中。它提供了一种更高效地处理输入/输出操作的方法。 - **目标**:...
除了上述内存区域外,Java还支持直接内存(Direct Memory),这部分内存并不由JVM直接管理,而是通过NIO(New Input/Output)类调用本地方法直接分配在Java堆外的内存,这些内存可以用来建立大型缓存等,从而提高IO...
### Java内存模型(JMM)详解 #### 1. JMM简介 Java内存模型(Java Memory Model,简称JMM)是Java虚拟机规范中定义的一套规定,用来描述Java程序中的各种变量(包括实例字段、静态字段和数组元素)在并发环境下的...