小编rjd*_*olb的帖子

(使用Azure队列)的最佳实践

我正处于设计基于Azure的应用程序的早期阶段.考虑到我可能期望的需求变化,吸引我进入Azure的一个原因是可扩展性.因此,我试图保持松散耦合,以便我可以在需要时添加实例.

我在构建Azure应用程序时看到的建议包括将Web角色逻辑保持在最低限度,并在工作者角色中完成处理,使用队列进行通信以及某些后端存储(如SQL Azure或Azure表).这对我来说似乎是一个好主意,因为我可以毫无问题地扩展应用程序的任一部分或两部分.但是我很好奇是否有任何最佳实践(或者如果有人有任何经验),最好让网络角色直接与数据存储对话而不是通过队列发送数据?

我正在考虑从web角色进行简单插入的情况 - 我可以将其设置为消息,将其发送到队列中,并让工作者角色拾取并执行插入,它似乎很多双重处理.但是我也很欣赏,从长远来看,这可能是更好的情况,万一web角色不堪重负或者插件需要更复杂的逻辑.

我意识到这可能是一个案例,答案是"它完全取决于情况,检查你的绩效指标" - 但如果有人有任何想法,我会非常感激!

queue azure azure-queues

5
推荐指数
2
解决办法
2405
查看次数

Spring MVC:如何从Pageable获取不区分大小写的排序

当用户单击网页上的列标题时,我试图在Spring MVC应用程序中支持不区分大小写的排序。呈现页面时,Thymeleaf扩展名将创建一个锚点,这href是当前URL,带有受以下参数支持的参数Pageable:即page, size and sort

sort=propertyName,ASC格式可以正常工作,但是我无法从URL得知如何说排序不区分大小写。我可以很容易地用代码完成它,但是标准的Pageable支持似乎并不支持它。

经过一番调试后,似乎标准框架org.springframework.data.web.SortHandlerMethodArgumentResolver不支持org.springframework.data.domain.Sort.Order.ignoreCase

我对此感到有些困惑,并且想知道为什么有充分的理由吗?

我可以考虑创建自己的SortHandlerMethodArgumentResolver类,并使其解析ASCI|DESCI(表示不区分大小写)和ASCS|DESCS(表示区分大小写)并生成适当的Sort对象,但是这给我带来了很多工作和严肃的“代码”闻”。

我不能成为第一个偶然发现此问题的人。有人有建议吗?

spring spring-mvc spring-data-jpa

5
推荐指数
1
解决办法
3721
查看次数

在java中查找n个数组之间的公共元素之和

我有一个程序,它总结了两个数组的共同元素.为此,我使用了两个for循环,如果我有三个,那么我可以使用三个for循环.但是如何总结运行时n中n个数组的公共元素.

我不知道如何在运行时更改循环次数,还是有任何其他相关概念?

这是我试图总结两个数组的代码:

import java.util.Scanner;

public class Sample {
    public static void main(String... args)
    {
        Scanner sc=new Scanner(System.in);
        int arr1[]={1,2,3,4,5},arr2[]={4,5,6,7,8},sum=0;
        for (int i=0;i<arr1.length;i++)
        {
            for (int j=0;j<arr2.length;j++)
            {
                if (arr1[i]==arr2[j])
                {
                    sum+=(arr1[i]);
                }
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

java arrays algorithm data-structures array-algorithms

5
推荐指数
1
解决办法
784
查看次数

空的 Angular2 项目增加了 IE 11 中的内存

我的公司目前正在构建一个用 Angular 2 编写的非常大的 SPA,我们在内存消耗方面存在一些问题。

在我的测试过程中,我已经注释掉了应用程序中的所有代码,只留下主模块和两个完全空的组件。我们使用 Webpack 进行转译。

在 Chrome 中分析时,内存消耗似乎相当一致,但是当我在 IE11 中执行相同操作时(客户端将主要使用此浏览器),即使刷新浏览器窗口,内存似乎也在不断增加。

以下是 IE 分析器和任务管理器的两个屏幕截图。每个尖峰表示浏览器刷新。另请注意,拍摄堆快照显示我的网站的恒定值为 3.16Mb,因此没有任何问题。

这个问题在完整版中变得更糟,经过几个小时的工作,浏览器可以达到 1Gb 以上。

IE 11 内存分析器

任务管理器:

任务管理器

IE11 中不断增加的内存是否是一个已知问题?如果您想了解有关我的实施的更多信息,请询问。

memory memory-leaks internet-explorer-11 angular

5
推荐指数
0
解决办法
1416
查看次数

Angular2错误 - 是否包含平台模块(BrowserModule)?

我只是想在Angular2中运行一个简单的index.html页面,但它在console中的zone.js中显示错误:

    Unhandled Promise rejection: No ErrorHandler. Is platform module (BrowserModule) included? ; Zone: <root> ; Task: Promise.then ; Value: Error: No ErrorHandler. Is platform module (BrowserModule) included?
    at eval (application_ref.ts:364)
    at ZoneDelegate.invoke (zone.js:391)
    at Object.onInvoke (ng_zone.ts:296)
    at ZoneDelegate.invoke (zone.js:390)
    at Zone.run (zone.js:141)
    at NgZone.run (ng_zone.ts:153)
    at PlatformRef_._bootstrapModuleFactoryWithZone (application_ref.ts:359)
    at eval (application_ref.ts:330)
    at ZoneDelegate.invoke (zone.js:391)
    at Zone.run (zone.js:141) Error: No ErrorHandler. Is platform module (BrowserModule) included?
    at eval (http://localhost:3000/node_modules/@angular/core/bundles/core.umd.js:4531:23)
    at ZoneDelegate.invoke (http://localhost:3000/node_modules/zone.js/dist/zone.js:391:26)
    at Object.onInvoke (http://localhost:3000/node_modules/@angular/core/bundles/core.umd.js:3922:33)
    at ZoneDelegate.invoke (http://localhost:3000/node_modules/zone.js/dist/zone.js:390:32)
    at …
Run Code Online (Sandbox Code Playgroud)

javascript angular2-forms angular2-services angular

5
推荐指数
1
解决办法
7289
查看次数

无法使用docker-compose为Postgres设置密码

我无法使用Docker-compose设置Postgres的密码。Postgres正在加载而没有密码,并且使用默认用户名“ postgres”,似乎未应用以下环境变量。以下是我的docker-compose.yml文件的数据库服务:(版本3)

db:
  image: postgres
  container_name: postgres
  environment:
      POSTGRES_USER: user
      POSTGRES_PASSWORD: pass
      POSTGRES_DB: db
  restart: unless-stopped
  volumes:
    - ./postgres-data:/var/lib/postgresql/data
  ports:
    - "5432:5432"
Run Code Online (Sandbox Code Playgroud)

请注意,我也尝试使用了“ -POSTGRES_USER =”,但没有用

另外,我删除了所有旧的容器/卷。

任何的想法?

postgresql yaml docker docker-compose

5
推荐指数
3
解决办法
5118
查看次数

如何优雅安全地最大化分配给Kubernetes中的Java应用程序的堆空间量?

我有一个Kubernetes部署,它基于anapsix/alpine-java映像部署Java应用程序.容器中没有其他任何东西可以用于Java应用程序和容器开销.

我希望最大化Java进程在docker容器中可以使用的内存量,并最小化将保留但从未使用过的ram数量.

例如,我有:

  1. 两个Kubernetes节点,每个节点有8个ram,没有交换
  2. 运行Java进程的Kubernetes部署,最多消耗1 gig堆以实现最佳运行

如何安全地最大化在两个节点上运行的pod的数量,而由于内存限制,从不让Kubernetes终止我的POD?

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 1
  template:
    metadata:
      labels:
    app: my-deployment
    spec:
      containers:
      - name: my-deployment
    image: myreg:5000/my-deployment:0.0.1-SNAPSHOT
    ports:
    - containerPort: 8080
      name: http
    resources:
      requests:
        memory: 1024Mi
      limits:
        memory: 1024Mi
Run Code Online (Sandbox Code Playgroud)

Java 8 update 131+有一个标志-XX:+ UseCGroupMemoryLimitForHeap来使用来自Kubernetes部署的Docker限制.

我的Docker实验向我展示了Kubernetes正在发生的事情

如果我在Docker中运行以下代码:

docker run -m 1024m anapsix/alpine-java:8_server-jre_unlimited java -XX:+UnlockExperimentalVMOptions -XX:+UseCGroupMemoryLimitForHeap -XshowSettings:vm -version
Run Code Online (Sandbox Code Playgroud)

我明白了:

VM settings:
Max. Heap Size (Estimated): 228.00M
Run Code Online (Sandbox Code Playgroud)

这个值很低是因为Java默认情况下将-XX:MaxRAMFraction设置为4并且我得到了大约1/4的ram分配...

如果我在Docker中使用-XX:MaxRAMFraction = 2运行相同的命令:

docker run -m 1024m anapsix/alpine-java:8_server-jre_unlimited java -XX:+UnlockExperimentalVMOptions …
Run Code Online (Sandbox Code Playgroud)

java java-8 kubernetes

5
推荐指数
2
解决办法
3774
查看次数

从 Java android 运行curl

我有这个curl命令

curl -X GET "https://api.spotify.com/v1/search?q=Carlos+Vives&type=artist" -H "Accept: application/json" -H "Authorization: Bearer <My API Key>"
Run Code Online (Sandbox Code Playgroud)

我如何运行它,并从 Android (Java) 获取 JSON 响应?

java android curl

5
推荐指数
2
解决办法
8970
查看次数

Pod的状态始终为ContainerCreating。。活动显示“创建Pod沙箱失败”

我正在尝试在具有一个主节点和两个工作节点的K8s集群上创建部署。集群在3个AWS EC2实例上运行。我一直在使用这种环境玩Kubernetes。三天后,我已经开始看到所有豆荚状态更改为ContainerCreatingRunning。只有计划在主服务器上的Pod显示为Running。在工作程序节点上运行的Pod显示为ContainerCreating。当我运行时kubectl describe pod <podname>,它在事件中显示以下内容

 Events:
  Type     Reason                  Age   From                      Message
  ----     ------                  ----  ----                      -------
  Normal   Scheduled               34s   default-scheduler         Successfully assigned nginx-8586cf59-5h2dp to ip-172-31-20-57
  Normal   SuccessfulMountVolume   34s   kubelet, ip-172-31-20-57  MountVolume.SetUp succeeded for volume "default-token-wz7rs"
  Warning  FailedCreatePodSandBox  4s    kubelet, ip-172-31-20-57  Failed create pod sandbox.
  Normal   SandboxChanged          3s    kubelet, ip-172-31-20-57  Pod sandbox changed, it will be killed and re-created.
Run Code Online (Sandbox Code Playgroud)

这个错误现在困扰着我。我试图在网上搜索有关的错误,但是我没有得到任何具体的信息。我在包含主节点和工作节点的群集上进行了kubeadm重置,然后再次启动了群集。节点状态显示为就绪。但是,每当尝试使用以下命令创建部署时,我都会再次遇到相同的问题:

kubectl run nginx --image=nginx --replicas=2
Run Code Online (Sandbox Code Playgroud)

kubernetes

5
推荐指数
2
解决办法
6526
查看次数

在Java中:如果我将HashMap中的键更改为等于另一个键会发生什么?

我知道我不能在HashMap中有两个相等的键(通过equals() - 方法).如果我尝试使用已存在的密钥向HashMap添加键值对,则旧值将被新值替换.

但是如果我将现有密钥更改为等于另一个现有密钥怎么办?

在这种情况下,map.get()方法将如何表现(应用于其中一个相等的键)?

下面非常简单的例子.

public class Person{
  private int age;
  private String name;

  public Person(int a, String n){
    age = a;
    name = n;
  }

  public void setAge(int a){ age = a; }
  public int getAge(){return age; }
  public String getName() {return name; }

  @Override
  public boolean equals(Object o){
     if(!(o instanceof Person)){return false;}
     Person p = (Person) o;
     return ((p.getName().equals(this.getName())) && (p.getAge() == this.getAge()));
  }

  @Override
  public int hashCode(){return age;}
}

public class MainClass{
 public static void main(String[]args){ …
Run Code Online (Sandbox Code Playgroud)

java equals hashmap

4
推荐指数
1
解决办法
1138
查看次数