小编viv*_*vri的帖子

反对控制容器反转的论据

似乎每个人都在转向IoC容器.我曾试图"摸清"它一段时间,尽管我不想成为一个在高速公路上走错路的司机,但它仍然没有通过常识测试.让我解释一下,如果我的论点存在缺陷,请纠正/启发我:

我的理解:IoC容器应该在组合不同组件时让您的生活更轻松.这可以通过a)构造函数注入,b)setter注入和c)界面注入来完成.然后以编程方式或在容器读取的文件中"连接"它们.然后按名称召唤组件,然后在需要时手动投射.

我得不到的:

编辑 :( 更好的措辞) 为什么使用一个不是语言惯用的不透明容器,如果组件设计得当(使用IoC模式,松散耦合),你可以用更简洁的方式"连接"应用程序(imho) ?这个"托管代码"如何获得非平凡的功能?(我听过一些关于生命周期管理的提及,但我不一定能理解这比自己动手更好/更快.)

ORIGINAL:为什么要将所有组件存储在一个容器中,以与语言惯用的方式"连接起来",在按名称调用组件时使用相当于"goto labels"的东西,然后通过手动转换失去静态类型语言的许多安全优势,当你通过不执行它获得等效功能时,而是使用现代OO语言给出的所有很酷的抽象功能,例如编程到接口?我的意思是,实际上需要使用组件的部件必须知道它们在任何情况下都在使用它,并且在这里你将使用最自然,惯用的方式进行"连线" - 编程!

ioc-container inversion-of-control

31
推荐指数
2
解决办法
5506
查看次数

PostgreSQL:按计算值的总和排序

我有一个表tips定义如下:

CREATE TABLE tips
(
  tip_id bigserial NOT NULL,
  tip text NOT NULL,
  author text NOT NULL,
  post_date bigint NOT NULL,
  likers character varying(16)[],
  dislikers character varying(16)[],
  likes integer NOT NULL,
  dislikes integer NOT NULL,
  abuse_history character varying(16)[]
);
Run Code Online (Sandbox Code Playgroud)

我需要根据受欢迎程度获得提示,人气的定义是:
喜欢 - 不喜欢 - (size(abuse_history)*5)

无论排序顺序(ASC/DESC)如何,下面的查询都会给出相同的结果.

select * from tips order by (likes - dislikes - (array_length(abuse_history,1) * 5)) ASC limit 2147483647 offset 0
Run Code Online (Sandbox Code Playgroud)

编辑

我插入了3条有以下数值的记录:
1)1喜欢,0不喜欢,0滥用投诉
2)0赞,1不喜欢,0滥用投诉
3)0赞,0不喜欢,0滥用...

无论排序顺序(ASC/DESC)如何,我都会得到以下顺序:{3,1,2}

有谁能请我指出正确的方向?

sql arrays postgresql null

6
推荐指数
1
解决办法
5541
查看次数

Google Application Engine是一个适合高流量聊天网站的好平台吗?

我正在寻找创建一个高流量的聊天网站,可能是视频流与服务器上发生的一些图像处理.

扫描频道API(http://code.google.com/appengine/docs/python/channel/overview.html)让我充满希望,这可以在没有AJAX轮询的情况下完成,而且一般认为GAE具有很强的可扩展性.

我还有一些顾虑:

1)它可以支持数万个同时实时互动的用户而不会滞后吗?CPU使用率是否有上限?

2)我(可能)将它写在J2EE框架之上.GAE是否保证每个新请求都可以访问全局内存数据存储区,只要应用程序在服务器上运行(Java语言中的"ServletContext")并且可能存储数千兆字节的数据,该数据存储区就可用?有记忆帽吗?

3)完整的J2SE和J2EE堆栈是否可用?我能包括我想要的任何图书馆吗?

4)对于这类问题,有没有比GAE更好的解决方案?我一直在考虑租用几台专用服务器,但这将达到数千/月......

提前致谢!

google-app-engine high-load web-traffic video-streaming chatroom

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

有没有办法在J2EE服务器上做一些事情?我正在使用Tomcat

我正在尝试让J2EE服务器主动注册(读取:发送一些消息)与另一台服务器 - 而不是对某些事情的回应.令人惊讶的是,我发现很少有关于是否有扩展的事件和/或类的信息或问题,这将使我能够处理"服务器启动".我总是可以写一个首先部署到服务器的脚本,然后通过请求提示它,但我真的宁愿有一个更清洁的解决方案..

谢谢.

tomcat servlets startup event-handling

3
推荐指数
1
解决办法
1125
查看次数

无法配置apache服务器以代理SSL连接

我正在使用Apache Portable Runtime运行Tomcat7上的应用程序,我购买了SSL证书并正确配置 - 当我尝试通过ip:端口组合连接时,它连接正常但警告我证书是发给域名的,不是知识产权.

我所使用的VPS没有SELinux(并且安装时出现问题),这是AFAIK要求在apache中配置SSL所需的,所以我想将请求路由到Tomcat,Tomcat就是这样做的.

我将apache配置为代理连接,首先是端口80完美运行:

NameVirtualHost www.mysite.com:80
<VirtualHost www.mysite.com:80>
ProxyPreserveHost On
ProxyRequests Off
ServerName http://www.mysite.com
ServerAlias http://www.mysite.com
ProxyPass / http://localhost:8180/MYSITE/
ProxyPassReverse / http://localhost:8180/MYSITE/
ProxyPassReverseCookiePath /MYSITE/ /
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

然后使用不想因某些原因工作的SSL端口:

NameVirtualHost www.mysite.com:443
<VirtualHost www.mysite.com:443>
        SSLProxyEngine On
        ProxyPreserveHost On
        ProxyRequests Off
        ServerName https://www.mysite.com
        ServerAlias https://www.mysite.com
        ProxyPass / https://localhost:8443/MYSITE/
        ProxyPassReverse / https://localhost:8443/MYSITE/
        ProxyPassReverseCookiePath /MYSITE/ /
        CacheDisable *
</VirtualHost>
Run Code Online (Sandbox Code Playgroud)

编辑:我添加了

RequestHeader set Front-End-Https "On"
Run Code Online (Sandbox Code Playgroud)

指向VirtualHost www.mysite.com:443的指令,见:http://www.gossamer-threads.com/lists/apache/users/396577

这是在Tomcat的server.xml中配置的Tomcat APR连接器 -

<Connector port="8443" maxHttpHeaderSize="16500"
                 maxThreads="150"
                 enableLookups="false" disableUploadTimeout="true"
                 acceptCount="100" scheme="https" secure="true"
                 SSLEnabled="true" …
Run Code Online (Sandbox Code Playgroud)

ssl apache2 virtualhost mod-proxy mod-ssl

3
推荐指数
1
解决办法
9590
查看次数

Scala.js会生产小捆吗?

虽然我喜欢Scala这个语言,而Scala.js就是这个项目,但即使在fullOptJS模式下,我对最终JS包的大小也有点偏差.

我迫切需要创建一个在浏览器中使用的小型库.> 150kb是一个很大的问题,可以说像BuckleScript/ReasonML这样的工具可以保证快速执行和微小的捆绑.

在可预见的未来,Scala.js会开始生产更小的捆绑吗?

scala.js scalajs-bundler

3
推荐指数
1
解决办法
426
查看次数

适用于 Lambda 的 AWS 计划事件规则在 CloudFormation 中不起作用

使用 CloudFormation(实际上,使用 Python 的对流层)将 AWS Lambda 配置为由规则触发时遇到问题->触发器作为计划事件源。这已经花费了我几天时间,任何帮助将不胜感激。

这是相关的 CF JSON 片段 -

        "DataloaderRetrier": {
        "Properties": {
            "Code": {
                "S3Bucket": "mycompanylabs-config",
                "S3Key": "v3/mycompany-component-loader-lambda-0.5.jar"
            },
            "FunctionName": "DataloaderRetriervitest27",
            "Handler": "mycompany.ScheduledEventHandler::handleRequest",
            "MemorySize": 320,
            "Role": "arn:aws:iam::166662328783:role/kinesis-lambda-role",
            "Runtime": "java8",
            "VpcConfig": {
                "SecurityGroupIds": [
                    "sg-2f1f6047"
                ],
                "SubnetIds": [
                    "subnet-ec3c1435"
                ]
            }
        },
        "Type": "AWS::Lambda::Function"
    },
    "DataloaderRetrierEventTriggerPermission": {
        "Properties": {
            "Action": "lambda:InvokeFunction",
            "FunctionName": {
                "Fn::GetAtt": [
                    "DataloaderRetrier",
                    "Arn"
                ]
            },
            "Principal": "events.amazonaws.com",
            "SourceAccount": {
                "Ref": "AWS::AccountId"
            },
            "SourceArn": {
                "Fn::GetAtt": [
                    "DataloaderRetrierEventTriggerRule",
                    "Arn"
                ]
            }
        },
        "Type": "AWS::Lambda::Permission" …
Run Code Online (Sandbox Code Playgroud)

amazon-web-services aws-cloudformation aws-lambda troposphere

2
推荐指数
1
解决办法
2789
查看次数