我是IntelliJ和Java的新手.我正在尝试学习多线程,我遇到了Executors课程.
所以我想测试一下,这是我的代码示例.
import java.util.List;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class LegController {
private List<Runnable> legs;
private ExecutorService execute;
public LegController() {
legs = new ArrayList<>();
for (int i = 0; i < 6; i++) {
legs.add(LegFactory.getLeg("LEFT"));
}
execute = new Executors.newFixedThreadPool(6);
}
public void start(){
//TODO
}
}
Run Code Online (Sandbox Code Playgroud)
但是我收到一个错误:"无法解析符号'newFixedThreadPool'".我尝试了"无效缓存并重新启动",但它没有帮助,我尝试了同步和重建项目,但它也没有用.
我不明白这个问题的来源,因为导入了类Executors.此外,还有自动完成Executors的静态方法.也许输入有问题,但如果是这样,我该怎么办呢?
我一直在关注Java 8的供应商和消费者接口以及我所理解的它可以取代构造函数调用.
我在dzone(链接在这里)上看到了一个使用ShapeFactory的例子.代码非常简单,是一个简单的形状类工厂.
但她如此使用它:
Supplier<ShapeFactory> supplier = ShapeFactory::new;
supplier.get().getShape("rectangle").draw();
Run Code Online (Sandbox Code Playgroud)
但为什么它比做一个简单的经典更好:
ShapeFactory factory = new ShapeFactory();
factory.getShape("rectangle").draw()
Run Code Online (Sandbox Code Playgroud)
这足够简单和有效.此外,如果ShapeFactory类的构造函数具有参数,则Supplier将无法工作,我们将不得不使用Function或其他方法.
那么为什么在这个精确的情况下使用像这样的供应商?
我在Laravel 5.5 API上有一个POST端点,我用邮递员来测试我的路线,这就是问题所在.我想发送一个相同类型的对象的数组,如下所示:
[
{
"name":"test",
"tag":"TEST"
},
{
"name":"test2",
"tag":"TEST_2"
}
]
Run Code Online (Sandbox Code Playgroud)
但我无法正确验证它.
在我的控制器中,我有这个:
$validator = Validator::make($requests->all(), [
'name' => 'required|string',
'tag' => 'required|string'
]);
if($validator->fails())
//Warn user for errors
Run Code Online (Sandbox Code Playgroud)
我也尝试过简单
$this->validate($requests->all() .... )
Run Code Online (Sandbox Code Playgroud)
我试图重新命名规则'.name'和'*.name',但没有成功.
我试图替换$request->all()与$request->input(),但没有成功.
我也试图循环它,但我得到例外
foreach($request as $req){
$validator = Validator::make($req ....)
//rest of the code
}
Run Code Online (Sandbox Code Playgroud)
另一方面,我可以检索这样的数据$datas = $request->all()并存储它们,但没有验证.
似乎唯一有效的解决方案是命名我的数组:
{
"data" : [
{
"name":"test",
"tag":"TEST"
},
{
"name":"test2",
"tag":"TEST_2"
}
]
}
Run Code Online (Sandbox Code Playgroud)
然后命名规则,'data.*.name' …
我有一个 docker-compose 文件,里面有我项目所需的一切。
这个 docker-compose 有一个 nginx 服务器,mysql,phpmyadmin 和 php。在它的顶部,我最近添加了一个有角度的容器。如果我转到 localhost:4200,我在 angular 应用程序上,如果我转到 localhost:80,我在 Laravel 后端,一切都正常。
现在我需要向我的后端 API 发出一个简单的经典请求。我为 angular 设置了一个代理,如下所示:
{
"/api/*": {
"target":"http://localhost:80",
"secure":false,
"changeOrigin":true,
"pathRewrite": {"^/api" : ""},
"logLevel":"debug"
}
}
Run Code Online (Sandbox Code Playgroud)
这是我根据这个主题复制的配置。但是当我尝试拨打电话时,Chrome 说http://localhost:4200/api/test不存在(错误 404),这是正常的。另一方面,角度服务器说
HPM] Error occurred while trying to proxy request /test from localhost:4200 to http://localhost:80 (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)
我猜它来自 docker,但我不知道如何解决这个问题。
[编辑]
version: '2'
services:
web_server:
restart: always
image: nginx:latest
ports:
- "80:80"
volumes:
- /projects/laravel/:/var/www/
- /docker/sites-enabled-nginx:/etc/nginx/sites-enabled/
- /docker/nginx.conf:/etc/nginx/nginx.conf
links:
- php:php …Run Code Online (Sandbox Code Playgroud) 我有一个在 AWS 账户中运行的 RDS 数据库。我想将其复制到另一个帐户以用作应用程序新部署的基础。我像这样使用 CLI:
aws rds create-db-cluster-snapshot \
--db-cluster-snapshot-identifier snapid \
--db-cluster-identifier rdsid
Run Code Online (Sandbox Code Playgroud)
此命令成功(如果我登录 AWS 控制台,我可以看到新的快照)。但是当我尝试使用修改其属性时
aws rds modify-db-snapshot-attribute \
--db-snapshot-identifier snapid \
--attribute-name restore \
--values-to-add '["other_account_id"]'
Run Code Online (Sandbox Code Playgroud)
然后我收到以下错误:
An error occurred (DBSnapshotNotFound) when calling the ModifyDBSnapshotAttribute operation: DBSnapshot not found: snapid
如果我可以共享快照,我就可以使用此快照在另一个帐户中创建一个新实例。
有没有更好的方法来跨账户共享RDS实例?