解决方案项目过程(合集4篇)

时间:2025-06-12 11:18:02 admin 今日美文

解决方案项目过程 第1篇

在A模块引用B模块,但是在build报错看,找不到资源,原因是默认隔离了两个模块,资源会进行覆盖。打包后,每个module的资源都是独立的,防止资源冲突

解决:在中关闭即可:

解决办法 中:

*********************************************************************************************

解决方案项目过程 第2篇

这个问题在初学者身上经常遇到,直接在build指定如下

在build文件下dependencies引入如下

如果依旧找不到,看jar包是否add上去,如果没有,右键add Library,如果在不行,

在main文件夹下新建jniLibs文件夹,把libs下文件copy进去,

修改build文件android{

sourceSets { main { = ['libs'] } }

、先把项目中引入的包都给列出来,如何列出来,通过task的help来完成

A:代表项目名称

B:代表该项目下的task

C:是help文件夹下的gradle脚本

D:dependencies执行完会列出当前项目中依赖的所有项目

找到冲突包的module name,然后确定和哪个项目有冲突

如果A项目和B项目有冲突,如果剔除冲突?

B:implementation ''

如果 A和B冲突

implementation( __){

//只剔除groupid为下,模块为fire的

//剔除groupid为所有的包

exclude group: ''

 old是低版本

new是当前最高 版本,高版本会覆盖低版本

这种冲突基本来源于包的冲突,可以剔除,如果module libs里面引用jar,其他aar将jar打包上传,

在整个项目中,就会报错Duplicate class xxxx found in modules,因为这个类已出现在其他module里面,即使剔除也不行。

这种解决办法:

需要用到jar的都采用libs加添加,或者都改用aar依赖库。否则还是会报错

解决办法:

1.看错误日志,多什么就将这个复制

2.如果多个项目用到文件,其实可以将做成aar依赖,或者只在一个项目libs中保持一份,这样也可以避免

有时候我们修改了gradle东西,就需要去同步一下,这样很费时,有些场景甚至不需要同步,这时候我们不同步ide可能会提示问题等

解决:我们可以忽略这些

解决方案项目过程 第3篇

报错:OutOfMemoryError: GC overthread limit exceeded。是否可以 采用easyexcel 来替换原本的 poi 方式。

介绍: 虽然POI是目前使用最多的用来做excel解析的框架,但这个框架并不那么完美。大部分使用POI都是使用他的userModel模式。userModel的好处是上手容易使用简单,随便拷贝个代码跑一下,剩下就是写业务转换了,虽然转换也要写上百行代码,相对比较好理解。然而userModel模式最大的问题是在于非常大的内存消耗,一个几兆的文件解析要用掉上百兆的内存。现在很多应用采用这种模式,之所以还正常在跑一定是并发不大,并发上来后一定会OOM或者频繁的full gc。 EasyExcel是一个基于Java的简单、省内存的读写Excel的开源项目。在尽可能节约内存的情况下支持读写百M的Excel。

前提:需要准备一个excel 文件 (历史问卷-混合.xlsx) 大小约为44M 我们直接来看结果对比 左边是poi 方式的,右边是easyExcel方式的,明显easyExcel的内存占用小很多很多 ,内存运行也相对稳定,并且读取速度也比poi方式快很多倍。

控制台打印内存情况(另一个文件, 约14M左右) poi 解析前时间18:31:37 解析后时间:18:32:21 解析前内存:81940KB 解析后内存:3827028KB (3827028KB-81940KB)/1024/1024= easyexcel 解析前l时间18:29:27 解析后时间:18:29:35 解析前内存:81940KB 解析后内存:804407KB (804407KB-81940KB)/1024/1024=

1.引入poi和easyExcel的包 2.编写测试内容–

把easyExcel放入到正常测试环境中

导出占用内存,对于一个 10806 页的问卷明细 导出后压缩包为210M左右的 ,数据量约为11W 文件大小

导出数据量和导出结果时间

说明:内存及时间使用的打印情况(没有开启jprofile,可能开启会有一定的影响),之后的jprofile 又重新导出的一遍

详细步骤图查看 此时重新启动项目,使用 jprofile 监控查看,分了7个图解

1、整体使用情况

2、初始化启动项目时,默认使用左右

3、初始导出时,此时开始执行导出方法, 在从数据库 拿全量数据

4、此时,在拼装数据

5、此时在执行拼装数据

6、后面这是在执行 EasyExcel拼装excel 表头和内容,写出excel。(此时几乎不会增加消耗很多内存)

7、结束后

解决方案项目过程 第4篇

totalMemory()这个方法返回的是java虚拟机现在已经从操纵系统那里挖过来的内存大小,也就是java虚拟机这个进程当时所占用的 所有 内存。假如在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的从操纵系统那里挖的,基本上是用多少挖多少,一直 挖到maxMemory()为止,所以totalMemory()是慢慢增大的。假如用了-Xms参数,程序在启动的时候就会无条件的从操纵系统中挖- Xms后面定义的内存数,然后在这些内存用的差不多的时候,再往挖。

freeMemory()是什么呢,刚才说到假如在运行java的时候没有添加-Xms参数,那么,在java程序运行的过程的,内存总是慢慢的 从操 作系统那里挖的,基本上是用多少挖多少,但是java虚拟机100%的情况下是会稍微多挖一点的,这些挖过来而又没有用上的内存,实际上就是 freeMemory(),所以freeMemory()的值一般情况下都是很小的,但是假如你在运行java程序的时候使用了-Xms,这个时候由于程 序在启动的时候就会无条件的从操纵系统中挖-Xms后面定义的内存数,这个时候,挖过来的内存可能大部分没用上,所以这个时候freeMemory()可 能会有些大。

StopWatch是位于包下的一个工具类,通过它可方便的对程序部分代码进行计时(ms级别),适用于同步单线程代码块。

具体使用