假设我刚刚使用a BufferedInputStream
将UTF-8编码的文本文件的字节读入字节数组.我知道我可以使用以下例程将字节转换为字符串,但是这样做是否有更高效/更智能的方法,而不仅仅是迭代字节并转换每个字节?
public String openFileToString(byte[] _bytes)
{
String file_string = "";
for(int i = 0; i < _bytes.length; i++)
{
file_string += (char)_bytes[i];
}
return file_string;
}
Run Code Online (Sandbox Code Playgroud) 我想创建一个Elastic Beanstalk配置,允许我部署.NET Windows服务但不部署Web应用程序.
我刚刚阅读了这篇博客文章,其中解释了如何使用.ebextensions在Web应用程序旁边部署Windows服务,但是有没有可以在不为Web应用程序部署Web Deploy软件包的情况下运行.ebextensions的方案?
我唯一的选择是创建一个包含.ebextensions目录的空Web应用程序,然后部署Web Deploy包吗?
Elastic Beanstalk常见问题解答提到了部署非Web应用程序的能力(此处),我在AWS开发人员论坛(此处)上发现了类似(未答复)的问题.
由于这个问题缺乏活动,而且我无法在互联网上找到任何其他信息,我只是假设这个问题的答案是"不"(至少目前为止).
我最终创建了一个空的Web应用程序,并使用它通过.ebextensions YAML配置部署我的Windows服务.
作为旁注,我想从亚马逊的文档中突出显示这个页面,我发现这是创建这些特殊配置文件的非常有用的指南.
在实现上述方法之后,我发现Elastic Beanstalk没有.ebextensions
为新的Beanstalk实例执行我的脚本.因此,在创建新实例时无法安装Windows服务.我不得不跳过几个环节,最终得出一个可扩展的解决方案.如果您需要最终解决方案的详细信息,请与我们联系.
最终,看起来Elastic Beanstalk似乎不是用于部署可扩展的Windows服务.
我不习惯发布源代码,因为它不是用于个人项目,但这是我当前部署解决方案的基本结构:
要部署新代码:将安装.zip存档(包含Windows服务和install.bat文件)上载到S3存储桶,并终止Elastic Beanstalk应用程序的所有EC2实例.在重新创建实例时,引导程序将下载/安装新更新的代码.
当然,如果我重新开始,我将跳过使用Elastic Beanstalk并使用标准的AWS自动扩展以及类似的部署方案.最重要的是,如果您没有Web应用程序,请不要使用Elastic Beanstalk; 您最好使用标准的AWS自动缩放功能.
亚马逊最近宣布了一些似乎解决部署问题的新代码部署/管理服务:http://aws.amazon.com/blogs/aws/code-management-and-deployment/
我还没有使用这些新服务(我甚至不确定它们是否已经发布),但它们看起来很有前景.