我有一个枚举,Constants:
enum Constants {
ONE,TWO,THREE;
}
Run Code Online (Sandbox Code Playgroud)
如何比较Thymeleaf中的枚举常量.
谢谢.
我相信,我有一个相对常见的火花流用例:
我有一个对象流,我想根据一些参考数据进行过滤
最初,我认为使用广播变量实现这是一件非常简单的事情:
public void startSparkEngine {
Broadcast<ReferenceData> refdataBroadcast
= sparkContext.broadcast(getRefData());
final JavaDStream<MyObject> filteredStream = objectStream.filter(obj -> {
final ReferenceData refData = refdataBroadcast.getValue();
return obj.getField().equals(refData.getField());
}
filteredStream.foreachRDD(rdd -> {
rdd.foreach(obj -> {
// Final processing of filtered objects
});
return null;
});
}
Run Code Online (Sandbox Code Playgroud)
但是,尽管很少,我的参考数据会定期更改
我的印象是我可以在驱动程序上修改和重新广播我的变量,它会传播给每个工作者,但是Broadcast对象不是也不Serializable需要final.
我有什么替代品?我能想到的三个解决方案是:
将参考数据查找移动到一个forEachPartition或forEachRdd左右,使其完全驻留在工作者上.但是,参考数据存在于REST API中,因此我还需要以某种方式存储计时器/计数器以停止对流中的每个元素访问远程数据库.
每次refdata更改时,使用新的广播变量重新启动Spark上下文.
将参考数据转换为RDD,然后join以我现在流式传输的方式将流转换为流Pair<MyObject, RefData>,尽管这会将参考数据与每个对象一起发送.
我在标准反向代理场景中使用 nginx,将所有请求传递/auth到另一台主机,但是我正在尝试使用非标准端口。
我的最终目标是将X-Forwarded-Port标头设置为请求进入的端口。
这是我在 nginx.conf 中的位置块:
Run Code Online (Sandbox Code Playgroud)location /auth/ { proxy_pass http://otherhost:8090; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_set_header X-Forwarded-Host $host; proxy_set_header X-Forwarded-Port <VAR>; }
这个 nginx 运行在一个 docker 容器中,该容器被配置为将请求从 8085 转发到容器中的 80,这样 nginx 进程就可以监听 80:
0.0.0.0:8085->80/tcp
当我点击网址时:
我正确重定向到http://otherhost:8090,但X-Forwarded-Port标题丢失或错误。
在<VAR>原始块中,我尝试了以下操作:
$server_port - 这是 nginx 正在侦听的端口 (80),而不是请求端口。
$pass_port - 在我的设置中似乎为空,因此 nginx 删除了标头。
$http_port - 这是每个请求的随机端口。
$remote_port - 这是每个请求的随机端口。
我可以在部署时将我的配置更改为硬编码到传入请求的已知端口,但理想情况下,我将能够更改前端端口,而无需对 nginx 配置进行任何更改。
我已经搜索了 …
reverse-proxy nginx docker x-forwarded-for nginx-reverse-proxy
如果我有(简化),则以下docker-compose.yml:
parent:
image: parent
links:
- child
child:
image: child
Run Code Online (Sandbox Code Playgroud)
我可以构建一个不会创建或启动图像的docker-compose.override.yml文件吗?child
一个不受欢迎的(对我来说)解决方案是反转文件,这样默认的yml文件只会创建parent,而覆盖会创建两者.
但是,我希望主配置文件包含最常见的使用方案.
我来自Perl背景,正在使用Spring编写我的第一个Java MVC Web应用程序.
我的webapp允许用户通过调用第三方SOAP服务来提交应用程序同步处理的订单.该项目的下一阶段是允许用户提交批量订单(例如包含500行的CSV)并异步处理它们.这是我现有控制器的片段:
@Controller
@Service
@RequestMapping(value = "/orders")
public class OrderController {
@Autowired
OrderService orderService;
@RequestMapping(value="/new", method = RequestMethod.POST)
public String processNewOrder(@ModelAttribute("order") Order order, Map<String, Object> map) {
OrderStatus orderStatus = orderService.processNewOrder(order);
map.put("orderStatus", orderStatus);
return "new";
}
}
Run Code Online (Sandbox Code Playgroud)
我计划创建一个新的@RequestMapping来处理传入的CSV并修改它OrderService以便能够将CSV分开并将各个订单持久保存到数据库中.
我的问题是:在MVC Spring应用程序中创建后台工作程序的最佳方法是什么?理想情况下,我将有5个线程处理这些订单,并且很可能来自队列.我已经读过@Async或提交过Runnable一个SimpleAsyncTaskExecutorbean,我不知道该走哪条路.一些例子对我有帮助.
我希望将远程git存储库与RTC服务器集成,通过使用它们的RESTful接口将链接附加到gitweb以获得与特定任务相关联的提交.
理想情况下,这将通过git服务器上的post-receive挂钩完成,但git运行的处理用户不允许用户帐户向RTC进行身份验证.
我能想到的最好的解决方案是以某种方式传递一个身份验证令牌(以cookies.txt的形式从RTC获取)以及git push(但没有将它作为提交的一部分).
替代方案是每个客户端存储库上的后推钩,但它有自己的问题(包括没有这样的钩子).
使用静态方法在类中声明Logger(或任何静态字段)时:
public class Foo {
private static final Logger LOGGER = Logger.getLogger(Foo.getClass);
}
Run Code Online (Sandbox Code Playgroud)
我可以断言调用它的方法(用于审计)的正确方法是什么?
以下方法可行,但setField似乎是错误的方法,使@Tested批注的使用无效以允许自动注入.
@Mocked Logger logger
new Expectations() {
{
setField(unitUnderTest, logger);
}
}
Run Code Online (Sandbox Code Playgroud)
JMockIt似乎提供了@UsingMocksAndStubs(Log4jMocks.class)的解决方案,但是这不允许Expectations,因为它导致调用getLogger()返回一个真实但无用的Logger而不是一个模拟的实例.
我在Azure中部署了一个Linux应用服务,使用来自私有Azure容器注册表的映像.
服务正常运行,尽管没有对映像进行任何更改(没有新的推送),但App Service已经重新部署.我理解这是Azure如何处理容器,在其认为合适时交换实例的预期部分.
但是,此映像不再能够成功部署,以下是来自Kudu的日志(名称已更改):
2018-04-09 07:28:11.817 INFO - Starting container for site
2018-04-09 07:28:11.818 INFO - docker run -d -p 36165:8080 --name my-service_0 -e WEBSITES_ENABLE_APP_SERVICE_STORAGE=false -e WEBSITES_PORT=8080 -e WEBSITE_SITE_NAME=my-service -e WEBSITE_AUTH_ENABLED=False -e WEBSITE_ROLE_INSTANCE_ID=0 -e WEBSITE_INSTANCE_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX -e HTTP_LOGGING_ENABLED=1 myacr.azurecr.io/images/my-image:latest
2018-04-09 07:28:14.200 INFO - Issuing docker pull myacr.azurecr.io/images/my-image:latest
2018-04-09 07:28:14.327 ERROR - docker pull returned STDERR>> Error response from daemon: Get https://myacr.azurecr.io/v2/images/my-image/manifests/latest: unauthorized: authentication required
Run Code Online (Sandbox Code Playgroud)
以下是在本地提取图像的结果:
docker pull myacr.azurecr.io/images/my-image:latest
latest: Pulling from images/my-image
53478ce18e19: Already exists
d1c225ed7c34: Already exists
c6724ba0c09a: Already exists …Run Code Online (Sandbox Code Playgroud) azure-web-sites azure-container-service azure-container-registry
我有一个具有这种结构的Gradle项目:
ls -alh
drwxr-xr-x 9 Xelian 4.0K Aug 5 22:39 .
drwxrwxr-x 3 Xelian 4.0K Aug 5 16:19 ..
-rw-rw-r-- 1 Xelian 465 Aug 5 16:19 build.gradle
drwxrwxr-x 8 Xelian 4.0K Aug 5 16:38 buildSrc
drwxrwxr-x 3 Xelian 4.0K Aug 5 16:19 gradle
drwxrwxr-x 3 Xelian 4.0K Aug 5 16:45 .gradle
-rwxrwxrwx 1 Xelian 5.0K Aug 5 17:29 gradlew
-rw-rw-r-- 1 Xelian 2.3K Aug 5 16:19 gradlew.bat
-rw-rw-r-- 1 Xelian 17K Aug 5 16:19 README.md
-rw-rw-r-- 1 Xelian 30 Aug …Run Code Online (Sandbox Code Playgroud) 我正在尝试查找用于在Red Hat Enterprise Linux Server 6.5中显示已安装内存(RAM)的命令。
我发现以下命令:
cat /proc/meminfo | grep MemTotal
Run Code Online (Sandbox Code Playgroud)
但是看起来MemTotal值不是实际的RAM值。我想知道系统的实际RAM(类似于Windows中的Installed memory(RAM))。
谢谢你的帮助。
在我的Java程序中,我已经在一个类中导入了一些Java包。但在那里有1或2个包装被划掉。
为什么会这样?如何解决这种交叉使之交叉?
当我尝试存储字节数组时,为什么会出现java.lang.NullPointerException?你能解释一下为什么它不能这样工作吗?没有NullPointerException,我怎样才能做得更好?
Exception in thread "Thread-3" java.lang.NullPointerException
at test.Screenblocks_Data.set_Image(Screenblocks_Data.java:13)
at desktop_share_client.ScreenBlocks.run(ScreenBlocks.java:120)
Run Code Online (Sandbox Code Playgroud)
public class Screenblocks_Data implements java.io.Serializable {
public int Screenblocks_Counter = 0;
public int[][] positions = new int[200][2];
public Jpeg[] sub_images = new Jpeg[200];
public Screenblocks_Data() {
}
public void set_Image(byte[] temp_image) {
sub_images[Screenblocks_Counter].set_sub_image(temp_image);
}
public byte[] get_Image(int position) {
return sub_images[Screenblocks_Counter].sub_image;
}
}
Run Code Online (Sandbox Code Playgroud)
public class Jpeg {
public byte[] sub_image = null;
public void set_sub_image(byte[] temp_image) {
sub_image = new byte[temp_image.length];
sub_image = temp_image;
}
}
Run Code Online (Sandbox Code Playgroud)