小编Ren*_*ink的帖子

如何在交互式编辑期间从vim内部中止git rebase

当我做一个互动的rebase,例如

git rebase -i HEAD~3
Run Code Online (Sandbox Code Playgroud)

rebase交互式编辑器(在我的情况下为vim)打开,让我编辑提交到rebase

pick c843ea2 Set Vim column limit to 80 (OS X)
pick fc32eac Add Bash alias for `pbcopy` (OS X)
....
Run Code Online (Sandbox Code Playgroud)

如果我现在决定我要中止rebase并且:q仍然使用rebase启动退出vim .我1.9.0.msysgit.0在Windows上使用git版本.

当然我可以删除所有pick行,但如果我更长历史可能会有很多事情要做.还有另外一种方法吗?

如何退出rebase交互式编辑器(vim)并中止rebase?

git vim git-rebase

127
推荐指数
3
解决办法
3万
查看次数

清洁建筑设计模式

在此输入图像描述

https://8thlight.com/blog/uncle-bob/2012/08/13/the-clean-architecture.html

我对这种模式有一些疑问.数据库处于更高层,但实际上如何运作?例如,如果我有一个微服务,只是管理这个实体:

其中一个用例是管理人员.管理人员正在保存/检索/ ..人员(=> CRUD操作),但要做到这一点,Usecase需要与数据库通信.但这将违反依赖性规则

使该体系结构工作的首要规则是依赖规则.此规则表明源代码依赖性只能指向内部.

  1. 这甚至是一个有效的用例吗?
  2. 如果它在外层?如何访问数据库?(依赖性Iversion?)

如果我得到一个GET /person/{id}请求我的微服务应该像这样处理吗?

在此输入图像描述

但使用依赖倒置将是违反

内圈中的任何东西都不能知道外圈中的某些东西.特别是,内圈中的代码不得提及在外圈中声明的内容的名称.这包括功能,类.变量或任何其他命名的软件实体.


跨越边界.在图的右下方是我们如何穿过圆边界的示例.它显示控制器和演示者与下一层中的用例通信.注意控制流程.它从控制器开始,在用例中移动,然后在演示者中执行.还要注意源代码依赖性.他们中的每一个都指向用例.

我们通常使用依赖性倒置原则来解决这个明显的矛盾.例如,在像Java这样的语言中,我们将安排接口和继承关系,使得源代码依赖性反对跨越边界的正确点处的控制流.

例如,考虑用例需要调用演示者.但是,此调用不能是直接的,因为这会违反依赖关系规则:内圈中不能提及外圈中的名称.因此我们在内部圆圈中使用用例调用接口(此处显示为用例输出端口),并使外部圆圈中的演示者实现它.

相同的技术用于跨越体系结构中的所有边界.我们利用动态多态来创建反对控制流的源代码依赖关系,这样无论控制流向何种方向,我们都可以符合依赖关系规则.

Use Case层是否应声明将由DB Package(框架和驱动程序层)实现的存储库接口

在此输入图像描述

如果服务器收到一个GET /persons/1请求,PersonRest会创建一个PersonRepository,并将这个Repository + ID传递给ManagePerson :: getPerson函数,getPerson不知道PersonRepository但知道它实现的接口,所以它不违反任何规则吗?ManagePerson :: getPerson会使用该Repository来查找实体,并将Person Entity返回给PersonRest :: get,它会将Json Objekt返回给客户端吗?

遗憾的是英语不是我的母语,所以我希望你们能让我知道我是否理解了这种模式是正确的,也许可以回答我的一些问题.

Ty提前

java rest design-patterns microservices clean-architecture

9
推荐指数
1
解决办法
2038
查看次数

为什么intellij想法不会立即终止调试过程?

我正在使用创意2016.1.1并想知道为什么当我点击停止按钮时想法不会立即终止调试过程.

例如,使用这段代码重现它

public class Main {

  public static void main(String[] args) {
    int i = 0;
    while (true) {
      i++;
      System.out.print("I'm still alive: ");
      System.out.println(i);
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

在循环开始之前设置断点.

在此输入图像描述

启动调试会话,等到它休息并按红色停止按钮(CTRL-F2).

在此输入图像描述

我希望该过程立即停止,并且它不会打印任何内容,但它会打印:

"C:\Program Files\Java\jdk1.6.0_38\bin\java" ....
Connected to the target VM, address: '127.0.0.1:54394', transport: 'socket'
Disconnected from the target VM, address: '127.0.0.1:54394', transport: 'socket'
I'm still alive: 1
I'm still alive: 2
I'm still alive: 3
I'm still alive: 4
...
I'm still alive: 319
I'm still alive: 320 …
Run Code Online (Sandbox Code Playgroud)

debugging intellij-idea

8
推荐指数
2
解决办法
2518
查看次数

如何克隆WebSphere 8概要文件

我想克隆现有的配置文件,启动服务器并通过管理控制台进行修改.

我已经阅读了IBM的文档

 manageprofiles.bat
Run Code Online (Sandbox Code Playgroud)

但manageprofiles工具不包含以下内容:

 # would be nice if a clone action exists
 manageprofiles.bat -clone -profileName base -targetProfileName base1
Run Code Online (Sandbox Code Playgroud)

这就是我需要的,我没有看到实现这一目标的方法.该工具可以创建,删除,备份和还原配置文件.

我已经尝试过了什么

  1. 复制配置文件目录并重命名
  2. 编辑bin/setupCmdLine.bat中的路径
  3. 将配置文件添加到AppServer/properties/profileRegistry.xml
  4. 执行manageprofiles -validateAndUpdateRegistry

但WAS尚未认可该概况.我可以通过执行验证这一点

manageprofiles -listProfiles
Run Code Online (Sandbox Code Playgroud)

如何克隆或复制配置文件?

有手动方式吗?

如果是这样,必须编辑配置文件目录中的哪些文件?

websphere websphere-8

7
推荐指数
2
解决办法
2万
查看次数

使用自定义分隔符生成具有弹簧引导的DDL

我想使用带有JPA - Hibernate 5.0.11的spring boot v1.4.3生成create和drop ddl脚本.

我找到的大多数答案都使用了javax.persistence.schema-generation属性.例如/sf/answers/2587649361/

这种方法的问题是它输出没有分隔符的sql语句.例如

create table ... (...)
create table ... (...)
Run Code Online (Sandbox Code Playgroud)

我希望它用分隔符输出语句 ;

create table ... (...);
create table ... (...);
Run Code Online (Sandbox Code Playgroud)

但我找不到任何javax.persistence.schema-generation属性来配置它.

所以我想使用SchemaExportfrom hibernate,因为你可以设置delimiter属性.但要创建一个SchemaExport我需要一个MetadataImplementor(非删除的api).

我无法弄清楚如何MetadataImplementor从春季靴子中获得一个.

有没有人知道是否有

  • javax.persistence.schema-generation用于定义分隔符的属性
  • 或者如何创建SchemaExport(获取依赖项)
  • 还是有其他解决方案?

这是您可以使用的一些代码

@SpringBootApplication
@ComponentScan(basePackageClasses = Application.class)
@EntityScan(basePackageClasses = User.class)
public class Application {

    @Bean
    public ApplicationRunner getApplicationRunner() {
        return new ApplicationRunner() {

            public void run(ApplicationArguments args) throws Exception …
Run Code Online (Sandbox Code Playgroud)

ddl spring hibernate spring-data-jpa spring-boot

7
推荐指数
2
解决办法
2909
查看次数

我应该在 vue 3 ref 变量中使用 let 还是 const ?


我正在创建一个新的 Vue 3 项目,我看到很多人在网上声明这样的引用。
const myVariable = ref(false)

为什么我们在 Vue 3 中突然使用const ?
我知道refs以某种方式包装它们以使它们可编辑,但我仍然不明白为什么不这样声明它们:我
let myVariable = ref(false)

知道这对于 Vue 3 开发人员来说可能听起来是一个愚蠢的问题,但我无法理解将值更改为常量背后的原因

与此同时,我在组合 API 中使用 const 声明,但我想承认背后的原因

coding-style vue.js vuejs3 vue-composition-api

7
推荐指数
1
解决办法
3841
查看次数

使用CriteriaQuery API进行多态JPA查询

我有以下实体结构:

   +-----------+                +-------------+        
   |  User     | -------------> |    Role     |
   +-----------+                +-------------+
                                       ^
                                       |
                               +-------+---------+
                               |                 |
                        +-----------+      +-----------+           +------------+
                        |   Role1   |      |  Role2    |-------->  | SomeEntity |
                        +-----------+      +-----------+           +------------+
Run Code Online (Sandbox Code Playgroud)

我想获取其Role2具有SomeEntity并具有特定属性值的所有User的名称.我需要使用JPA标准API执行此操作.

到目前为止我所做的是:

CriteriaBuilder cb = ...
CriteriaQuery<String> query = cb.createQuery(String.class);
Root<User> user = query.from(User.class);
SetJoin<User, Role> userRolesJoin = user.join(User_.roles);

// As you can see the userRolesJoin is of type Role and a Role doesn't have
// an property someEntity. So how to "cast" the userRolesJoin into an 
// …
Run Code Online (Sandbox Code Playgroud)

java api jpa

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

如何将websphere服务器配置(datasources,jms,...)分发到多个实例?

对于开发人员团队而言,每个人都必须设置和配置应用程序服务器.在我们的例子中,我们使用的是websphere 8.5.

我正在寻找一种简单的方法来做到这一点.通常,您使用位于WAS_HOME/bin/ProfileManagement中的配置文件管理工具来执行此操作,此工具可以很好地运行.但是在安装websphere服务器之后,仍然需要配置服务器配置文件 - 创建数据源,JMS队列,总线,变量等.所以我认为如果有办法将这些配置应用于现有配置文件会更好.

我的第一次尝试是只配置一个配置文件,然后使用配置备份

 %WAS_HOME%/bin/backupConfig.bat
Run Code Online (Sandbox Code Playgroud)

但配置包含例如主机名和其他依赖于主机的配置.所以backupConfig.bat工具不是我想要的.

我想到的下一个想法是,我可以创建一个特殊的profileTemplate.以便其他人可以使用配置文件管理工具并使用此模板.但模板结构似乎不是为了定制.很多文件和几乎没有文档可以找到如何创建自己的配置文件模板.

所以我遇到了扩充模板.使用这些模板(顾名思义)将特定配置添加到现有配置文件.我发现了很多关于如何将扩充应用于现有配置文件但没有关于如何创建扩充的文档的文档.

最后我认为必须有一些方法可以导出websphere数据源,总线,jms等配置并将它们应用到其他配置文件中,因为在非常大的安装中,操作团队必须具备此功能.

我知道我可以向EAR添加特定于容器的描述符.例如META-INF/ibmconfig/cells/defaultCell/applications/defaultApp/resources.xml.但我不想构建特定于环境的EAR文件,因为它将我们的构建耦合到基础架构,因此我们必须在操作更改基础结构(例如主机名,IP,密码)时构建和重新部署.

有谁知道如何管理数据源,总线,jms等分布到多个websphere安装?

websphere websphere-8

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

如何在git中查找其历史记录中包含提交的所有引用

让我们假设你在git中有以下结构

    A <-- refs/heads/somebranch
    |
    B 
    | \
    C  D <-- refs/tags/TAG1
    |  |
    E  F
    |  | \
    G  H  I <-- refs/heads/branch1                
    |
    J <-- refs/heads/master
Run Code Online (Sandbox Code Playgroud)

现在我想B在历史记录中找到包含提交的所有引用.

如果我能这样做会很好

$ git refs --contains B
refs/tags/TAG1
refs/heads/branch1
refs/heads/master
Run Code Online (Sandbox Code Playgroud)

我看了一下git decumentation,发现git branch -a --contains <commit_id>哪个列出了包含a的所有分支commit_id.

$ git branch -a --contains 4af9822
  master
  remotes/origin/someBranch
  ...
Run Code Online (Sandbox Code Playgroud)

然后我找到了命令 git tag --contains 9338f2d

$ git tag --contains 9338f2d
  someTag
  anotherTag
  ...
Run Code Online (Sandbox Code Playgroud)

我当然可以这样做,

$ git branch -a --contains 4af9822 && …
Run Code Online (Sandbox Code Playgroud)

git git-tag git-branch

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

Git:我有一个80多次提交的功能分支.如何在不破坏历史的情况下将其安全地合并到开发/生产中?

我已经在一个功能部门工作了几个星期,并且有大约80个提交的历史,涉及我们项目的许多部分的工作.对于小功能,我只需要重新定义,将提交压缩成一个简洁的提交,合并它以进行开发,然后推送它.但在这里,我已经积累了很长的历史,承诺涉及许多不同的部分.

我想将它们拆分成较小的提交,即"功能F的完成部分A""完成部分B"等等,但是工作不是线性的,并且每个部分都是同时建立的.

我可以将它们全部压缩成一个提交并推送它,但是我会失去所有的历史记录,这可能会使调试在未来变得很痛苦,因为它是如此大的变化.

我不熟悉在专业环境中使用git,所以我不确定最佳实践.你对这种情况有什么看法?

git merge

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

如何防止SimpleDateFormat解析错误的格式化日期?

SimpleDateFormat用来解析字符串到Date对象,我想知道为什么结果不是我所期望的.

例如:

DateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd");

Date date = yyyyMMdd.parse("20100725");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

按预期工作和输出

Sun Jul 25 00:00:00 CEST 2010
Run Code Online (Sandbox Code Playgroud)

Date date = yyyyMMdd.parse("2010-07-25");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

工作和输出

Mon Dec 07 00:00:00 CET 2009
Run Code Online (Sandbox Code Playgroud)

我期待一个ParseException,但似乎SimpleDateFormat将月份部分-07和日期部分解释-25为负数.首先,我无法弄清楚它是如何到达12月7日的.所以我尝试了另一个值:

Date date = yyyyMMdd.parse("2010-7-25");
System.out.println(date);
Run Code Online (Sandbox Code Playgroud)

而且它的结果

Sun Apr 05 00:00:00 CEST 2009
Run Code Online (Sandbox Code Playgroud)

因此,它似乎以某种方式减去了可能是5月1 7日的2010那一个月,以及25几天,所以结果是2009年4月5日.

yyyyMMdd在服务实现中使用该模式的图像和某个客户端意外地将日期发送为yyyy-MM-dd.你不会得到例外.相反,你会得到完全不同的日期.我想这不是你所期望的.

例如

String clientData = "2010-05-23";

DateFormat yyyyMMdd = new SimpleDateFormat("yyyyMMdd"); …
Run Code Online (Sandbox Code Playgroud)

java date simpledateformat

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

yield()方法无法按预期工作

public class YieldDemo extends Thread{

   public static void main(String[] args) {
        YieldDemo y1 = new YieldDemo();
        YieldDemo y2= new YieldDemo();

        y1.start();
        y2.start();
   }

   public void run() {
      for(int i=0;i<=5;i++) {
           if(i==3) {
               Thread.yield();
           } else
               System.out.println(i+Thread.currentThread().toString());
           }
   }
}
Run Code Online (Sandbox Code Playgroud)

根据yield()的文档,thread-1应该产生并允许thread-2在第3次循环之后进行处理.但是,输出并不像预期的那样.相同的线程继续跳过第3次迭代.在一个线程完成循环后,其他线程以相同的行为执行.请解释.

输出:

0Thread[Thread-1,5,main] 
1Thread[Thread-1,5,main] 
2Thread[Thread-1,5,main] 
4Thread[Thread-1,5,main] 
5Thread[Thread-1,5,main] 
0Thread[Thread-0,5,main] 
1Thread[Thread-0,5,main] 
2Thread[Thread-0,5,main] 
4Thread[Thread-0,5,main] 
5Thread[Thread-0,5,main] 
Run Code Online (Sandbox Code Playgroud)

java multithreading

0
推荐指数
1
解决办法
458
查看次数

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