Mac 10.13.6 High Sierra 在这里。作为 C 开发新手,我正在尝试使用最新的稳定/推荐的 GCC 版本进行设置,我相信(请诚实地说)是 10.2。
当我进入终端查看已安装的内容时:
$ gcc --version
Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
$ gcc -dumpversion
4.2.1
Run Code Online (Sandbox Code Playgroud)
好的...很惊讶地在输出中看到 LLVM/clang 相关的内容。所以我尝试这个:
$ clang --version
Apple LLVM version 9.1.0 (clang-902.0.39.1)
Target: x86_64-apple-darwin17.7.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin
Run Code Online (Sandbox Code Playgroud)
所以它几乎就像...我两者都clang安装gcc了,但是我的clang安装已经同化了我的 GCC 安装?!否则为什么gcc --version输出引用会发出叮当声?
这是 Mac 设置的典型情况吗?
我需要做什么才能在我的计算机上正确安装 GCC 10.2?
我的项目目录结构:
myapp/
src/
Dockerfile
docker-compose.yml
docker-deploy.sh
wait-for-it.sh
.env
Run Code Online (Sandbox Code Playgroud)
wait-for-it.sh著名的等待脚本的副本在哪里?
我的Dockerfile:
FROM node:16
WORKDIR /usr/src/app
COPY package*.json ./
COPY wait-for-it.sh ./
COPY docker-deploy.sh ./
RUN chmod +x docker-deploy.sh
RUN npm install --legacy-peer-deps
COPY . .
RUN npm run build
ENTRYPOINT ["docker-deploy.sh"]
Run Code Online (Sandbox Code Playgroud)
并且docker-deploy.sh是:
#!/bin/bash
# make wait-for-it executable
chmod +x wait-for-it.sh
# call wait-for-it with passed in args and then start node if it succeeds
bash wait-for-it.sh -h $1 -p $2 -t 300 -s -- …Run Code Online (Sandbox Code Playgroud) 我正在尝试遵循此 Spring Boot/Vaadin 指南 ,但我使用的是 Gradle,而不是Maven。
在该指南的最顶部,他们说使用以下 Maven XML:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.vaadin</groupId>
<artifactId>vaadin-bom</artifactId>
<version>10.0.11</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
Run Code Online (Sandbox Code Playgroud)
但是我没有看到dependencyManagement可以通过 Gradle 执行的任务。所以我问:如何<dependencyManagement/>在“Gradle land”中复制与上面的 XML 元素相同的行为?
dependencyManagement {
imports {
mavenBom 'com.vaadin:vaadin-bom:10.0.11'
}
}
Run Code Online (Sandbox Code Playgroud)
唯一的问题是,当我将其添加到我的build.gradle然后运行时./gradlew clean,我收到以下 Gradle 错误:
“找不到参数的方法 dependencyManagement()... ”
Java 8在这里。寻找一种(可能基于流的)“ Java 8”替换和/或删除对象的方法List。这是我的代码:
public void applyChanges(List<Fizz> fizzes, Action action, Fizz toModify) {
int i = 0;
for (Fizz fizz : fizzes) {
i++;
if (fizz.getId() == toModify.getId()) {
switch(action) {
case Replace:
// Here we want to replace 'fizz' in the list
// with 'toModify' however order/sequence doesn't matter.
fizzes.remove(i);
fizzes.add(toModify);
break;
case Delete:
default:
// Here we just want to remove the Fizz with the matching
// ID from 'fizzes'.
fizzes.remove(i);
break;
}
}
}
} …Run Code Online (Sandbox Code Playgroud) 我最近正在收听Martin Odersky的视频,他试图解释功能语言(例如Scala,当然不一定是 Scala)的基本优势,而不是 OOP或程序语言.
他解释说,摩尔定律最近使我们失败,因此为了使处理器"更快",而不是能够使核心中的晶体管数量增加一倍,CPU制造商只是提供更多核心.这反过来又使CPU可以通过并发/多线程应用程序更充分地利用CPU.因此主要的用处是:应用程序并发的越多,其代码的更多代码段在不同的内核上同时运行,并且CPU上的内核越多,程序执行的总体速度就越快.
到现在为止还挺好.
他未能解释的(或者更可能的是,我没有掌握的内容)是为什么像Scala 这样的函数式语言能够使其与其他非函数式语言更加并发.由于我们碰巧讨论的是JVM空间,让我们快速比较Java和Scala.什么是Scala程序,如果它是用纯Java实现的,会使并行化/并发化更加困难,特别是如果它全部编译为JVM字节码并在具有相同本机功能的相同JVM上运行??
意思是我有两个JVM应用程序,用Java编写的App1和用Scala编写的App2.他们都完成相同的任务并完成相同的任务.两者都被编译为JVM字节码,并在安装了相同JVM的同一台计算机上运行.Scala应用程序如何"利用"JVM功能使其更适合并发性而不是Java(因此,在具有更多内核的CPU上更快)?
在本地存储库的根目录中,我从功能分支切换回develop:
$ git checkout develop
Switched to branch 'develop'
Your branch is up to date with 'origin/develop'.
Run Code Online (Sandbox Code Playgroud)
请注意最后一条信息消息:您的分支已更新为 'origin/develop'。对我来说,这意味着我的分支完全跟上了HEAD,origin/develop并且没有新的更改需要拉动。
但当我这样做时...
$ git pull
remote: Counting objects: 10, done.
Unpacking objects: 100% (10/10), done.
From ssh://my-code-commit/v1/repos/myproj
5840bf6..cc91737 develop -> origin/develop
Updating 5840bf6..cc91737
Fast-forward
src/main/java/com/me/myapp/processor/Fizzbuzz.java | 39 +++++++++++++++++++++++++++++++++++++++
src/main/java/com/me/myapp/processor/Foobar.java | 6 ++----
src/main/resources/META-INF/spring/routes/FlimFlam.xml | 21 +++++++++++++++++++++
Run Code Online (Sandbox Code Playgroud)
哇啊啊啊?!怎么会这样?!develop如果我的本地“是最新的” ,怎么可能进行远程更改origin/develop?!
这是一个误导性的消息,还是我从根本上误解了 git 说我是最新的意味着什么?
我有以下Java方法:
public List<GrantedAuthority> toAuthorities(Set<Role> roles) {
List<GrantedAuthority> authorities = new ArrayList<>();
if (null != roles) {
for (Role role : roles) {
for (Permission permission : role.getPermissions()) {
authorities.add(new SimpleGrantedAuthority("ROLE_" + permission.getLabel()));
}
}
}
return authorities;
}
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用Java 8流重写它.迄今为止我最好的尝试:
public List<GrantedAuthority> toAuthorities(Set<Role> roles) {
List<GrantedAuthority> authorities = new ArrayList<>();
if (null != roles) {
roles.stream().filter(role -> ???).collect(Collectors.toList());
}
return authorities;
}
Run Code Online (Sandbox Code Playgroud)
但我不知道我在流过滤器中所添加的内容(替代???)......任何想法?
Java 8 在这里。我需要在两个 POJO 列表中搜索一个字符串,并希望正确使用 Stream/Optional API。
如果名称出现在第一个列表 (" lunches") 中,那么我想返回一个包含它的可选项。否则,如果名称出现在第二个列表 (" dinners") 中,那么我想返回一个包含它的可选项。否则,Optional.empty()如果该名称不存在于任一列表中,我想返回。迄今为止我最好的尝试:
public class Restaurant {
private String id;
private String name;
private List<Food> lunches;
private List<Food> dinners;
public Optional<Food> findFoodByName(String name) {
return Optional.of(lunches.stream()
.filter(food -> food.getName()
.equalsIgnoreCase(name))
.findFirst())
.orElse(dinners.stream()
.filter(food -> food.getName()
.equalsIgnoreCase(name))
.findFirst());
// .orElse(null); TODO: how to return empty optional if neither in 'lunches' nor 'dinners'?
}
}
Run Code Online (Sandbox Code Playgroud)
谁能帮我在这里越过终点线?
我有一个 Java 8/Spring Boot/Maven 应用程序,可以在我的 IntelliJ IDE 中运行。当我单击绿色箭头(下方右上角)时,会显示一个控制台,一切都会正常启动,我可以在浏览器中使用该应用程序,通过curl 访问端点等。
我现在正在尝试让调试器工作。当我停止应用程序,然后通过单击调试器(上面的屏幕截图中播放图标旁边的绿色错误图标)重新启动它时,应用程序再次启动,没有任何问题。问题是,我设置的断点(在运行之前)没有执行!这意味着当应用程序遇到一行设置了断点的代码时,该过程不会暂停,并且我没有看到 IntelliJ 挂在该代码行(等待我采取行动),就像我在其他项目中习惯的那样。
例如,上面的SpringApplication.run(...)方法上设置了一个断点。但是当我在调试模式下启动它时,它只是启动并且永远不会在那一行停止!
这是我对该项目的编辑配置设置:
有什么看起来不对劲吗?我是否需要设置一些不同/特殊的东西才能进行调试?提前致谢。
我有以下项目目录结构:
myapp/
docker/
docker-compose.yml
.env
src/
<my source code here>
config.properties
Run Code Online (Sandbox Code Playgroud)
这是我的.env文件:
ENV=local
SERVICE_DB_HOST=0.0.0.0
SERVICE_DB_PORT=3306
SERVICE_DB_ROOT_PASSWORD=12345
SERVICE_DB_APP_USER=my-service-user
SERVICE_DB_APP_PASSWORD=23456
Run Code Online (Sandbox Code Playgroud)
这是我的docker/docker-compose.yml:
version: "3.7"
services:
myapp-main-db:
env_file:
- ../.env
image: mysql:8
container_name: myapp-main-db
command: --default-authentication-plugin=mysql_native_password
restart: always
ports:
- $SERVICE_DB_PORT:$SERVICE_DB_PORT
environment:
MYSQL_ROOT_PASSWORD: $SERVICE_DB_ROOT_PASSWORD
MYSQL_DATABASE: myapp_service_db_$ENV
MYSQL_USER: $SERVICE_DB_APP_USER
MYSQL_PASSWORD: $SERVICE_DB_APP_PASSWORD
volumes:
- myapp-service-db-data:/var/lib/mysql
volumes:
myapp-service-db-data:
Run Code Online (Sandbox Code Playgroud)
当我docker-compose -f docker/docker-compose.yml up -d从项目根目录运行时,我看到 MySQL 容器毫无问题地启动,并通过docker ps.
但是,我无法使用预期的连接字符串和凭据连接到它,我确信这是正确的。这让我相信 Docker Compose 没有../.env按照我的预期加载文件,因此中定义的任何变量都../.env不会作为环境变量注入。
有人能发现我哪里出了问题吗?
java ×4
java-8 ×3
java-stream ×3
docker ×2
maven ×2
clang ×1
concurrency ×1
debugging ×1
dockerfile ×1
gcc ×1
git ×1
gradle ×1
macos ×1
multicore ×1
node.js ×1
scala ×1
spring-boot ×1