我经常在Android应用程序中使用列表.现在我正在创建一个Twitter页面,其中列出了最多50个用户的"推文".
我有一个像这样定义的List:
List<Tweet> tweets = new ArrayList<Tweet>(MAX_TWEETS);
哪个Tweet是包含twitter更新信息(文本,日期,用户名等)的自定义对象类型,并且MAX_TWEETS是一个常量整数值(50).
问题:
List如果有的话,设置此初始容量有什么好处?
当我知道我的名单会这么小时,我是否应该费心设置容量?什么时候我/我应该不设置容量?
当我有StringBuilder一个容量为5 的空,我写"你好,世界!" 对它来说,C#标准是否指定了新的容量StringBuilder?我有一个模糊的记忆,它是新字符串长度的两倍(以避免每个新附加的字符串改变容量).
阅读此问题的优秀答案后:
我决定将初始容量设置为一个很大的猜测,然后在读取所有值后进行调整。我怎样才能做到这一点?也就是说,如何修剪字典,以便gc稍后收集未使用的空间?
我的目标是优化。我经常有大型数据集,小型数据集的时间损失是可以接受的。我想避免在大型数据集上重新分配和复制初始容量较小的数据所产生的开销。
我操作 Synology NAS 设备,该设备包含 600 多个用户数据。
用户备份数据为税务会计数据。因此,大约一个用户的文件夹有 200,000 个文件。
我必须向每个用户提供他们的备份数据使用信息,但是由于目录和文件du太多,命令执行时间太长。
有人可以为我提供一种以更快的方式检查每个用户的磁盘使用情况的方法吗?
在我的Android应用程序中,我使用Amazon DynamoDB.我创建了10个表,其中包含读取容量10和写入容量5.今天我收到了来自亚马逊的电子邮件.它花了我11.36美元.
我不明白免费等级的含义.以下是我从亚马逊上读到的内容:
DynamoDB客户可获得25 GB的免费存储空间,以及最多25个写入容量单元和25个读取容量单位的持续吞吐量容量(足够的吞吐量以处理每月多达2亿个请求)和250万个来自DynamoDB Streams的读取请求.
请更清楚地告诉我有关免费等级的含义:25个读取和25个写入容量单位!
我正在使用以下代码计算对象(正在填充的列表)的大小:
long myObjectSize = 0;
System.IO.MemoryStream memoryStreamObject = new System.IO.MemoryStream();
System.Runtime.Serialization.Formatters.Binary.BinaryFormatter binaryBuffer = new System.Runtime.Serialization.Formatters.Binary.BinaryFormatter();
binaryBuffer.Serialize(memoryStreamObject, myListObject);
myObjectSize = memoryStreamObject.Position;
Run Code Online (Sandbox Code Playgroud)
并且它似乎随着流内容的增加而增加。那么在这种情况下容量的目的是什么?
#include<iostream>
#include<vector>
#include<list>
#include<queue>
#include<map>
using namespace std;
class dog{
public:
string name;
dog();
dog(const dog & d);
void barkname(){
cout<<"bark "<<name<<endl;
}
virtual ~dog(){
//cout<<"delete dog "<<name<<endl;
}
};
dog::dog(){
cout<<"blank dog"<<endl;
this->name="blank";
}
dog::dog(const dog &d){
cout<<"copy dog"<< " "+d.name<<endl;
string temp=d.name;
this->name=temp+" copied";
}
int main(){
dog d;
d.name="d";
dog dd;
dd.name="dd";
dog ddd;
ddd.name="ddd";
vector<dog> doglist;
doglist.push_back(d);
doglist.push_back(dd);
doglist.push_back(ddd);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
你好,我是cpp的新手.我试图在我的班级狗中使用复制构造函数.我使用push_back三次将三只狗推入载体.所以我期望复制构造函数被调用三次.但是,执行代码后,我发现复制构造函数被调用了六次,结果如下:
blank dog
blank dog
blank dog
copy dog d
copy dog dd
copy …Run Code Online (Sandbox Code Playgroud) 为什么StringBuilder的默认容量是16个字符?这是某种优化吗?
StringBuilder builder = new StringBuilder();
Console.WriteLine("builder capacity: '{0}'", builder.Capacity);
Run Code Online (Sandbox Code Playgroud)
输出:
builder capacity: '16'
Run Code Online (Sandbox Code Playgroud) 以下代码确保内部容量为11,
ArrayList list = new ArrayList(11);
Run Code Online (Sandbox Code Playgroud)
那么为什么/何时我应该在外部使用公共方法ensureCapacity()?
list.ensureCapacity(11);
Run Code Online (Sandbox Code Playgroud)
如果没有用,为什么要公开?
public void ensureCapacity(int minCapacity) {
int minExpand = (elementData != DEFAULTCAPACITY_EMPTY_ELEMENTDATA)
// any size if not default element table
? 0
// larger than default for default empty table. It's already
// supposed to be at default size.
: DEFAULT_CAPACITY;
if (minCapacity > minExpand) {
ensureExplicitCapacity(minCapacity);
}
}
Run Code Online (Sandbox Code Playgroud) 我想以编程方式从实习存储中读取确切的容量。
我使用的是 Samsung Galaxy S7 Edge 32GB 设备。
在预装的三星文件管理器(德语:Eigene Dateien)中,它显示了 32GB 的总容量。即使在菜单 => 设置 => 存储中,它也显示 32GB。
(如截图所示)
当我使用下面的代码时,它显示总容量为 24,4GB。
(在帖子末尾的日志中显示)
问:如何获得我设备的准确 32GB 总容量?
截图
完整代码:
package spicysoftware.com.space;
import android.os.Environment;
import android.os.StatFs;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import java.text.DecimalFormat;
public class MainActivity extends AppCompatActivity {
StatFs stat = new StatFs(Environment.getExternalStorageDirectory().getPath());
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String InternalFreeSpace = convertBytes(getInternalFreeSpace());
Log.v("InternalFreeSpace : ", InternalFreeSpace);
String InternalTotalSpace = convertBytes(getInternalTotalSpace());
Log.v("InternalTotalSpace : ", InternalTotalSpace);
String InternalUsedSpace = convertBytes(getInternalUsedSpace());
Log.v("InternalUsedSpace …Run Code Online (Sandbox Code Playgroud)