在Android使用MappedByteBuffer写入遇到对齐访问相关问题,SIGBUS报错

各位大神,本人在Android环境使用FTPClient下载文件,之前使用RandomAccessfile进行多线程并发写入,速率较慢,百度一番后使用Mappedbytebuffer,但是有时报 Fatal signal 7 (SIGBUS) at 0x7cc73000 (code=2)错误会直接中断APP,希望大神给予帮助,我的代码中没有操作C/C++,不知道如何实现对齐访问,恳请指点,谢谢

报错的Logcat如下:
12-05 16:24:16.850 10110-10279/com.ftp.instant A/libc: Fatal signal 7 (SIGBUS) at 0x7cc73000 (code=2), thread 10279 (Thread-161)
12-05 16:24:16.950 155-155/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
12-05 16:24:16.950 155-155/? I/DEBUG: Build fingerprint: 'Android/samsung/samsung:4.4.2/KOT49H/3.7.3.1019:userdebug/test-keys'
12-05 16:24:16.950 155-155/? I/DEBUG: Revision: '0'
12-05 16:24:16.950 155-155/? I/DEBUG: pid: 10110, tid: 10279, name: Thread-161 >>> com.ftp.instant <<<
12-05 16:24:16.950 155-155/? I/DEBUG: signal 7 (SIGBUS), code 2 (BUS_ADRERR), fault addr 7cc73000
12-05 16:24:16.990 155-155/? I/DEBUG: backtrace:
12-05 16:24:16.990 155-155/? I/DEBUG: #00 pc 0003e54a /system/lib/libc.so
12-05 16:24:16.990 155-155/? I/DEBUG: stack:
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7924 00000410

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7928 00000080

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c792c b4ddba92 /system/lib/libdvm.so
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7930 b4ecacb0 /system/lib/libdvm.so
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7934 24b00005

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7938 00000400

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c793c b4d68669 /system/lib/libdvm.so
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7940 b8f7f908 [heap]
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7944 24b00005

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7948 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c794c 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7950 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7954 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7958 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c795c b4ecacb0 /system/lib/libdvm.so
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7960 b8f7f860 [heap]
12-05 16:24:16.990 155-155/? I/DEBUG: #00 7d0c7964 00000400

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7968 b8f7f860 [heap]
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c796c b4d6a70f /system/lib/libdvm.so
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7970 7cc72d54 /storage/emulated/0/ftptmp/ftp5m
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7974 9515dd4c /dev/ashmem/dalvik-heap (deleted)
12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7978 00000400

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c797c 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7980 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7984 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7988 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c798c 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7990 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7994 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c7998 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c799c 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: 7d0c79a0 00000000

12-05 16:24:16.990 155-155/? I/DEBUG: memory map around fault addr 7cc73000:
12-05 16:24:16.990 155-155/? I/DEBUG: 7cac6000-7cc72000 rw- /storage/emulated/0/ftptmp/ftp5m
12-05 16:24:16.990 155-155/? I/DEBUG: 7cc72000-7ce1d000 rw- /storage/emulated/0/ftptmp/ftp5m
12-05 16:24:16.990 155-155/? I/DEBUG: 7ce1d000-7cfc8000 rw- /storage/emulated/0/ftptmp/ftp5m
12-05 16:24:17.040 475-498/system_process I/BootReceiver: Copying /data/tombstones/tombstone_05 to DropBox (SYSTEM_TOMBSTONE)
12-05 16:24:17.040 475-10284/system_process W/ActivityManager: Force finishing activity com.ftp.instant/.MainActivity
12-05 16:24:17.050 475-514/system_process W/InputDispatcher: channel '4a99005c com.ftp.instant/com.ftp.instant.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
12-05 16:24:17.050 475-514/system_process E/InputDispatcher: channel '4a99005c com.ftp.instant/com.ftp.instant.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
12-05 16:24:17.070 475-498/system_process D/dalvikvm: GC_FOR_ALLOC freed 654K, 18% free 9730K/11784K, paused 30ms, total 31ms
12-05 16:24:17.080 475-486/system_process W/InputDispatcher: Attempted to unregister already unregistered input channel '4a99005c com.ftp.instant/com.ftp.instant.MainActivity (server)'
12-05 16:24:17.080 475-486/system_process I/WindowState: WIN DEATH: Window{4a99005c u0 com.ftp.instant/com.ftp.instant.MainActivity}

代码在楼下贴出

0

2个回答


package com.ftp.utils;
import android.text.TextUtils;
import de.greenrobot.event.EventBus;
import com.ftp.bean.CheckEvent;
import org.apache.commons.net.ftp.FTPClient;
import org.apache.commons.net.ftp.FTPFile;
import rx.Observable;
import rx.Subscriber;

import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.RandomAccessFile;
import java.lang.reflect.Method;
import java.net.SocketTimeoutException;
import java.nio.MappedByteBuffer;
import java.nio.channels.FileChannel;
import java.security.AccessController;
import java.security.PrivilegedAction;
import java.util.IllegalFormatCodePointException;

import static com.ftp.utils.Utils.getDownloadfile;
import static com.ftp.utils.Utils.isStop;

/**
* 使用FTPClient下载FTP服务器文件
*/
public class DownloadRunnable implements Runnable {
   private EventBus eventBus;
   private FTPClient ftpClient;
   private int threadno;//当前线程编号
   private int threadnum;//线程总数
   private String remotepath;//远端文件路径
   private MappedByteBuffer bytebuffer;//内存映射缓冲区
   private long bufferMax; //缓冲区允许放置的字节级数据量
   private long currentPos;    //缓冲区中未刷入内存的大小即缓冲区写入模式下的起始位置
   private RandomAccessFile accessFile;    //可随意写入的文件实例
   private FileChannel fileChannel;
   public DownloadRunnable(FTPClient client, int threadno, int threadnum) {
       this.ftpClient = client;
       this.threadno = threadno;
       this.threadnum = threadnum;
       this.remotepath = "/ltedown/ftp5m";
       if (!TextUtils.isEmpty(Utils.getRemotePath()))
           this.remotepath = Utils.getRemotePath();
       this.bufferMax=512*1024;    //设置允许的512KB的缓存数
       setRandomAccessFile();
   }


   @Override
   public void run() {
       try {
           showLog(threadno + "线程 开始下载");
           //在这里计算文件的起始值
           long require_length, start = 0, localsize = 0;//文件起始值,需下载的长度,已下载的长度
           long totalFileSize = Utils.getTotalFileSize();//远端文件的总长度
           require_length = totalFileSize / threadnum;
           start = (threadno - 1) * require_length;
           if (totalFileSize % threadnum != 0)
           {
               if (threadno == threadnum)
                   require_length = require_length + totalFileSize % threadnum;
           }
           ftpClient.setRestartOffset(start);
           InputStream input = ftpClient.retrieveFileStream(remotepath);
           if (input == null) {
               showLog(threadno + "线程无法获取InputStream");
           }
           fileChannel=accessFile.getChannel();
           bytebuffer = fileChannel.map(FileChannel.MapMode.READ_WRITE, start, require_length);
           showLog(threadno + "线程成功获取Map");
           long tmp;
           int length = 0;
           byte[] b = new byte[1024];
           setCurrentPos(0);   //开始写入前设置起始位置为0
           while ((length = input.read(b)) != -1) {
               if (isStop())
                   break;
               if(length==0)
                   showLog(threadno + "线程获取byte数为0");
               if(getCurrentPos()+length>=bufferMax)
               {
                   flush();    //当缓冲区未处理数据达到Max时flush数据
               }
               tmp = localsize + length;
               if (tmp >= require_length)
               {
                   length = (int) (require_length - localsize);
                   bytebuffer.put(b, 0, length);
                   addCurrentPos(length);
                   Utils.addFileSize(length);
                   localsize = localsize + length;
                   break;
               }
               showLog(threadno + "线程 当前tmp大小"+tmp);
               bytebuffer.put(b, 0, length);
               addCurrentPos(length);
               Utils.addFileSize(length);
               localsize = localsize + length;
           }
           input.close();
           showLog(threadno + "线程" + " 下载:" + localsize + "/" + require_length);
           if (!isStop())
               showLog(threadno + "线程" + " 下载完成");
       } catch (Exception e) {
           showLog(threadno + "线程 捕捉到下载异常");
           Utils.ftpRelatedStatus.setDownloadError(true);
           e.printStackTrace();
       } finally {
           try {
               //测试完成在这里作 传出信号的操作且无论下载过程有无异常均上报下载结束
               Utils.addFinish();
               if (accessFile != null) {
                   unmap();    //释放资源,释放前会flush数据
                   fileChannel.close();
                   accessFile.close();
               }
               ftpClient.completePendingCommand();
               ftpClient.logout();
               ftpClient.disconnect();
               showLog(threadno + "线程 结束战斗");
           }
           catch (IOException e) {
               showLog(threadno + "线程 FTPClient释放异常");
               e.printStackTrace();
           }
       }
   }

   private synchronized void flush()
   {
       if(bytebuffer!=null)
           bytebuffer.force();
       setCurrentPos(0);
   }

   private void showLog(String s) {
       Utils.showLog(s);
   }

   /**
    * 显式回收MappedByteBuffer实例
    */
   private void unmap() {
       flush();        //刷入数据
       if(bytebuffer==null)
           return;
       bytebuffer.clear();
       bytebuffer=null;
//        System.gc();
   }

   public void setRemotepath(String remotepath) {
       this.remotepath = remotepath;
   }


   public long getCurrentPos() {
       return currentPos;
   }

   public void setCurrentPos(long currentPos) {
       this.currentPos = currentPos;
   }

   public void addCurrentPos(int variable)
   {
       setCurrentPos(this.currentPos + variable);
   }

   public  synchronized void setRandomAccessFile()
   {
       try {
           accessFile = getDownloadfile(remotepath);
       } catch (IOException e) {
           e.printStackTrace();
       }
   }

}
0

想问下你后来是怎么解决的?

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
使用MappedByteBuffer读取大文件(1G以上)和释放MappedByteBuffer的资源
package newFeatures8; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.lang.reflect.Method; import java.nio.MappedByteBuffer; import java.nio.channels
[例] 用MappedByteBuffer更新文件内容
import java.io.IOException; import java.io.RandomAccessFile; import java.nio.MappedByteBuffer; import java.nio.channels.FileChannel; public class Test_00 { public static void main(String[
高效的文件拷贝之MappedByteBuffer
我们经常对文件进行操作,但是效率却一般。最近在研究MappedByteBuffer的用法,下面是例子: void MappedByteBufferTest() { try { RandomAccessFile source = new RandomAccessFile("F:\\cmb-flume\\flume\\logs\\relog\\paas0.log", "r")
MappedByteBuffer基本使用与优点
有些文件太大,而不能全部放入内存操作,内存映射文件允许我们创建和修改那些因为太大而不能放入内存的文件。有了内存映射文件, 我们就可以假定整个文件都放在内存中,而且可以完全把它当做非常大的数组来访问。 MappedByteBuffer由ByteBuffer继承而来,因此它具有ByteBuffer的所有方法。使用MappedByteBuffer似乎我们可以一次访问到整个文件, 但是其实是只有一部
关于MappedByteBuffer资源释放问题
关于MappedByteBuffer资源释放问题 JDK1.4中加入了一个新的包:NIO(java.nio.*)。这个库最大的功能(我认为)就是增加了对异步套接字的支持。其实在 其他语言中,包括在最原始的SOCKET实现(BSD SOCKET),这是一个早有的功能:异步回调读/写事件,通过选择器动态选择感兴趣的事件,等等。 先谈谈操作系统的内存管理。一般操作系统的内存分两部分:物理内存
java大文件读写操作,java nio 之MappedByteBuffer,高效文件/内存映射
http://langgufu.iteye.com/blog/2107023        java处理大文件,一般用BufferedReader,BufferedInputStream这类带缓冲的Io类,不过如果文件超大的话,更快的方式是采用MappedByteBuffer。  MappedByteBuffer是java nio引入的文件内存映射方案,读写性能极高。NIO
关于MappedByteBuffer占用内存和文件关闭
问题:MappedByteBuffer内存占用和文件关闭等不确定问题,被MappedByteBuffer打开的文件只有在垃圾收集时才会被关闭。 业务场景 定时任务:操作文件 scheduExec.scheduleWithFixedDelay(new CreateCPWordToFSExecutorTask(), 0, PERIOD_DAY, TimeUnit.MILLISECONDS);//
安卓开发中遇到的奇奇怪怪的问题(三)
https://github.com/dstmath/HWFramework/blob/master/Honor5C-7.0/src/main/java/java/lang/Daemons.java https://github.com/dstmath/HWFramework/blob/master/P9-8.0/src/main/java/java/lang/Daemons.java https...
MappedByteBuffer强制释放后读取引发jvm crash
  这几天使用MappedByteBuffer对系统进行了实现,在压测过程中发现启动多个group订阅时服务端会发生jvm crash ,排查后找到了原因,记录一下。   部分信息如下: # # A fatal error has been detected by the Java Runtime Environment: # #  EXCEPTION_ACCESS_VIOLATI...
MappedByteBuffer的使用(转)
其实掌握MappedByteBuffer并不难,只要记住“三方三法三特性”(我自己总结的,呵呵~~不要扔鸡蛋哦。。。)这句话就可以轻松搞定!MappedByteBuffer 只是一种特殊的 ByteBuffer ,即是ByteBuffer的子类。 MappedByteBuffer 将文件直接映射到内存(这里的内存指的是虚拟内存,并不是物理内存,后面说证明这一点)。通常,可以映射整个文件,如果文件比
为何要在Java中使用内存映射文件(Memory Mapped File)或者MappedByteBuffer
尽管从JDK 1.4版本开始,Java内存映射文件(Memory Mapped Files)就已经在java.nio包中,但它对很多程序开发者来说仍然是一个相当新的概念。引入NIO后,Java IO已经相当快,而且内存映射文件提供了Java有可能达到的最快IO操作,这也是为什么那些高性能Java应用应该使用内存映射文件来持久化数据。这在一些交易非常频繁的场合已经应用得很多,这些场合要求电子交易系统...
嵌入式 SIGBUS和SIGSEGV详解
 一、导致SIGSEGV      1.试图对只读映射区域进行写操作 。     2.访问的内存已经被释放,也就是已经不存在或者越界。 3.官方说法是: SIGSEGV --- Segment Fault. The possible cases of your encountering this error are:  (1)buffer overflow --- usuall
(原创)用MappedByteBuffer解析大…
最近在写一个txt文本小说阅读器,在解析几M以上的txt文件时,总是由于内存溢出报错,要不然就是运行太慢,在网上找了集中方法后,最后觉得MappedByteBuffer最合适,不仅解决了以上的问题,还方便了阅读时的分章。 -----------------MappedByteBuffer在java帮助文档的解析------------------- public abstract cla
关于MappedByteBuffer使用后无法删除问题
网上已经提供了些方法,我zhi
FileChannel、ByteBuffer对文件操作过程对比
#内存映射文件# 文章背景:对文件进行MD5操作时获取到文件的途径多样及处理方式略有不同,博主经过对比希望得出较为合理的方式。 FileChannel:用于读取、写入、映射和操作文件的通道。 (以下解释源自JavaAPI文档) 文件通道在其文件中有一个当前 position,可对其进行查询和修改。该文件本身包含一个可读写的长度可变的字节序列,并且可以查询该文件的当前大小。写入的字节超出文
内存_用户空间程序出现非法页错误
一、 段错误原因分析          1 使用非法的指针,包括使用未经初始化及已经释放的指针(指针使用之前和释放之后置为NULL)          2 内存读/写越界。包括数组访问越界,或在使用一些写内存的函数时,长度指定不正确或者这些函数本身不能指定长度,典型的函数有strcpy(strncpy),sprintf (snprint)等等。          3 对
nginx常见问题解决
使用windows版本的nginx启动时遇到(1113: No mapping for the Unicode character exists in the target multi-byte code page)这个错误 把nginx的版本升高了,依旧报错 后来查阅发现是因为解压的路径里面包含有中文的缘故,只要把解压后的文件剪切到没有包含中文的目录即可解决问题 ...
整理几个前端遇到的问题
1. 兼容问题: 时间格式,在安卓上可以,但ios不可以,例如:2017-01-02 11:11:00 解决方式:startDiffTime.replace(/\-/g, "/"); 把2017-01-02 11:11:00转化为2017/01/02 11:11:00格式  safari不识别 2. 关于1px input在ios上面会出现一个蓝点 text-indent: -9999
android 导入module遇到的问题
1.Error:(2, 0) Plugin with id 'com.github.dcendents.android-maven' not found解决办法在写程序的时候,我们经常会从gifhub上下载一些别人的代码来学习或是下载一些第三方的插件来使用,这个时候我们就要把对方的library文件导入到我们的项目中,问题来了,有时候会提示 Error:(2, 0) Plugin with id ...
Liunux 编程遇到的SIGBUS信号
linux下编程我们最常遇到的一个信号应该是段错误信号SIGSEGV,一般表示你访问了一个不合法地址。但有时会遇到SIGBUS信号,这个信号在我的印象中是硬件故障的意思,平时没太关注,但最近一个进程老打印收到这个信号,想来这信号里面应该还有其他蹊跷。 什么时候会产生这个信号?   UNIX高级编程上讲:指示一个实现定义的硬件故障。当出现某种类型的内存故障时,实现常常产生此种信号。  
用java内存映射实现读取文件行(readline)
下面代码使用两种方式读取日志文件,一种是流方式,一种是内存映射:       import java.io.BufferedReader; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; im...
【Android开发那点破事】解决Andriod使用HttpURLConnection 失败问题
在Android的Activity中使用HttpURLConnection连接到服务端时抛出异常,Access denied。第一个想到是权限问题。然后就尝试将INTERNET权限加上:在Manifest中加上: 还是抛异常!看异常信息,和StrictMode有关,想到和Android版本有关,然后在Activity中加上如下代码,问题解决: StrictMode.setThreadPol
Spark中遇到的一些问题和相应的解决办法
前言:最近在公司实习,用到了spark的应用。说真的很多spark出现的问题在百度上基本搜索不到相应的结果,还是在google上容易搜到解决办法。(安利一下翻墙插件:xx-net) 1.在spark中读取csv文件 介绍如何使用Spark 1.3+的外部数据源接口来自定义CSV输入格式的文件解析器。这个外部数据源接口是由databricks公司开发并开源的(地址:https://g
CPU访问内存时的地址对齐问题
CPU 通过地址总线和数据总线访问内存。内存类似一个大的矩阵阵列,通过地址总线找到相应的位置,然后将数据发送到数据总线上。CPU通过高速缓存Cache读取数据。 在CPU的寻址空间中,字节(Byte,8 bits)是表示存储容量的唯一单位。 32位存储系统(内存)的每个存储单元都是4字节(32 bits)。一个总线周期内,CPU从内存读写4字节(32 bits)。CPU 要在能够被4整除的地址上...
关于Redis集群部署以及遇到的问题
要在单台机器上搭建Redis集群,方式是通过不同的TCP端口启动多个实例,然后组成集群,同时记录在搭建过程中踩过的坑。环境centos版本:7redis版本:4.0.9安装方式:源码安装服务器:虚拟机1台, ip地址192.168.106.133操作过程参照: Java微服务实战(赵计刚)操作步骤此处默认已安装好单台redis,如果不会可以参照https://blog.csdn.net/u0106...
C/C++内存池管理中出现 结构字节对齐问题 及 linux下程序 bus error 错误
某一款ARM设备界面程序开发: 为避免通讯过程中重复申请内存增加内存碎片率并影响效率,开始申请足够大小空间作为内存池供通讯数据使用,根据界面程序收到通讯数据大小在内存池中找到未被利用的内存块,使用完毕之后释放,归还至内存池。 1.    收到通讯数据并转化为字节对齐结构,转化成功,但是在获取该结构中具体值时偶尔会出现程序奔溃情况(会报BUS Err错误), 2.    将该段内存数据转化为ch...
使用mpvue开发过程中遇到的一些问题
使用mpvue开发过程中遇到的一些问题1、获取本地缓存时需要注意异步同步的问题。2、mpvue引入echarts等第三方图库时,在低版本性能手机上会报内存溢出的错。3、注意低版本的ios系统的兼容问题。4、利用canvas画图并保存在本地。以下是自己用mpvue做的小程序,写的比较烂,大家可以扫一扫,欢迎提意见,感兴趣的可以加我qq交流。qq: 10041412。 1、获取本地缓存时需要注意异步同...
STM32F0非对齐访问引起的硬件错误及其排除
前段时间在用STM32L0芯片时遇到一个硬件错误,主要是内存的非对齐访问导致的。 注:CM3内核支持非对齐访问,而CM0不支持非对齐访问。 先科普一下,什么是非对齐访问 如上图所示,若要访问的变量是int、double、u32类型的(占4字节),则这些变量在内存中,只能以图中0、4、8为起始地址; 若要访问的变量是short、u16类型的(占2字节),则这些变量在内存中,只能以0、
用MappedByteBuffer进行特大文件拷贝分割
目的: 有时候用U盘转移大文件时,U盘空间太小,想写一个小程序能把文件分割方便转移。 问题一:用Buffer直接将文件(1G以上)映入内存,不可能直接进物理内存。 解决方案:将文件用Map映射到一个MappedByteBuffer中 问题二:报告“java.io.IOException: 存储空间不足,无法处理此命令。”异常。 解决方案:将文件分段映射。注...
ARM Linux中的非对齐内存访问(Alignment trap警告的原因)
介绍ARM Linux中进行编程时非对齐内存地址访问时需要注意的问题,以及Alignment trap警告的原因。
android在使用recyclerView时遇到的问题
在项目开发时,我将recyclerview套嵌在listview里面,实现横向拖动时,出现了一旦横向拖动时就会出现数据错乱的现象。 在debug时发现,每次拖动recyclerview时它都会进行自动数据刷新,然后发生错乱。 结局方法就是在viewholder中添加一句代码 holder.setIsRecyclable(false); 查阅资料后发现这局话是用于关闭它的调用,即可消除错乱...
百度地图api遇到的问题
1.移动端点聚合下载百度地图提供的TextIconOverlay.js和TextIconOverlay_min.js文件。在TextIconOverlay.js文件中添加点击事件。T.event.on(this._domElement, &quot;touchend&quot;, function(e){        g.dispatchEvent(eventExtend(e, new BaseEvent(&quot;onc...
memcpy内存对齐访问
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.dui0472k/chr1359124947629.html http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.faqs/ka3934.html
组件化中遇到的问题
android组件化方案整理 之前整理过组件化的知识点以后,就开始弄公司的项目了。这里把暂时遇到的几个问题整理一下。 AAR的引入问题 情景: 把aar放到commentLibrary里面,在其他project或者library中调用其中的方法,就避免了重复复制的问题。 在commentLibrary里配置好以后,你所有引入这个library中都再需要配置一下: 在android节点内: rep...
Android开发中常见问题及解决方案
1、接口对接中的关键字解析 在日常接口对接中,经常会出现接口返回的数据节点是java中的关键字(类似接口返回 extends 节点),会导致解析异常。针对这种情况有以下的解决方案:1、fastjson 解析的情况下可以使用以下注解如:public class DataBean implements Serializable { @JSONField(name = &quot;extends&quot;) priv...
安装fastdfs遇到的问题
参照网上fastdfs安装,有可能会出现一些问题。这是是我安装遇到的问题。希望可以帮到大家。
ObjectOutputStream 追加写入读取错误
问题描述: 用类ObjectOutputStream向文件写读对象时,碰到一个问题:新建一个文件,用输出流ObjectOutputStream向文件连续写几个对象,关闭输出流,然 后读取,这些对象都可以读出;这时在向该文件增加对象,新写的对象就读不出了 问题出现的原因: ObjectOutputStream建立后第一次写入一个对象时, 会在对象数据前写入一些标志的数据“AC ED
Linux mmap学习及遇到的问题解决
Linux mmap的学习 本来以前mmap是很简单的,看下参数用法就ok,结果遇到了一大堆麻烦,google了很多博客,都写得很浅显,就介绍一下参数然后再给了一个简单得不得了的代码,就完了,所以纠结了我差不多一天时间。 mmap怎么用我就不说了,网上很多,在这里就把我犯的错误经验分享出来,先贴一下我用mmap实现拷贝任意文件的代码: #include #include #include
【Java8源码分析】NIO包-Buffer类:内存映射文件DirectByteBuffer与MappedByteBuffer(二)
转载请注明出处:http://blog.csdn.net/linxdcn/article/details/72896616
android app开发遇到的一些问题(二)
android 6.0 动态权限
文章热词 设计制作学习 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 大数据学习遇到的问题 java学习中遇到的问题