小编Nay*_*uki的帖子

Git正在丢失单个文件的历史/内容

我在一家小公司工作,我们的Git回购有点搞砸了.我刚刚做了一个git pull,我今天早些时候做出的改变都消失了!

当我在主分支上的HEAD上工作时,在其历史记录中git log显示我的最后一次提交b94940c63ef965ce45b0d64ccfba4359134d2552.

现在,如果我git log filename为丢失更改的有问题的文件执行操作,则不显示该提交(仅显示先前的提交).

执行git log --follow filename,我的提交b94940c63ef965ce45b0d64ccfba4359134d2552显示为最新.

果然,如果我这样做:

git checkout b94940c63ef965ce45b0d64ccfba4359134d2552
git log filename
Run Code Online (Sandbox Code Playgroud)

然后显示提交,我的更改在文件中!

换句话说,我所做的提交显示在分支历史记录中(阻止分支合并),但是单个修改过的文件在其历史记录中没有该提交!(除非我明确签出该提交).

问题:

  1. 这究竟是怎么发生的?

  2. 我如何解决它?(我们的仓库中有多个文件存在问题)

git git-log

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

是否有任何双向搜索Dijkstra算法的实现?

我正在寻找Java中Dijkstra(或任何其他源到目的地最短路径算法)的双向搜索(也称为"中间相遇"算法)的实现.

由于双向搜索处理比它看起来更棘手(图算法,第26页),我想在重新发明轮子之前考虑现有的实现!

PS:我说的是双向搜索,不要与双向图混淆)

以下是一个棘手的图表示例:

在此输入图像描述

java algorithm graph-theory dijkstra shortest-path

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

Python中的分数

无论如何在Python中计算一个分数,例如2/3或1/2,而不导入math模块?

代码片段很简单:

# What is the cube root of your number
n = float(raw_input('Enter a number: '))
print(n**(1/3))
Run Code Online (Sandbox Code Playgroud)

非常简单的代码,但我看到它告诉我导入math模块.我只是想将该片段添加到我正在处理的更大的代码中.我一直得到1作为我的答案,因为Python感觉像1/3是0而不是.333333333.我可以把.33333,但这只是一个临时修复,我想知道如何为未来的项目执行这个非常基本的计算.

python fractions

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

Euler项目的非强力解决方案25

项目欧拉问题25:

Fibonacci序列由递归关系定义:

F n = F n-1 + F n-2,其中F 1 = 1且F 2 = 1.因此前12项将是F 1 = 1,F 2 = 1,F 3 = 2,F 4 = 3 ,F 5 = 5,F 6 = 8,F 7 = 13,F 8 = 21,F 9 = 34,F 10 = 55,F 11 = 89,F 12 = 144

第12个学期F 12是第一个包含三位数的术语.

Fibonacci序列中包含1000位数的第一项是什么?

我在Python中制作了一个强力解决方案,但计算实际解决方案绝对是永远的.任何人都可以提出非暴力解决方案吗?

def Fibonacci(NthTerm):
    if NthTerm == 1 or NthTerm == 2:
        return 1 # Challenge defines 1st and 2nd term …
Run Code Online (Sandbox Code Playgroud)

python brute-force fibonacci

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

列表中对的乘积之和

这是我的问题.给出一个清单

xList = [9, 13, 10, 5, 3]
Run Code Online (Sandbox Code Playgroud)

我想计算每个元素的总和乘以后续元素

sum([9*13, 9*10, 9*5 , 9*3]) + 
sum([13*10, 13*5, 13*3]) + 
sum([10*5, 10*3]) + 
sum ([5*3])
Run Code Online (Sandbox Code Playgroud)

在这种情况下,答案是608.

有没有办法做到这一点或许itertools本地numpy

以下是我提出的功能.它完成了这项工作,但它远非理想,因为我想添加其他东西.

    def SumProduct(xList):
        ''' compute the sum of the product 
        of a list 
        e.g. 
        xList = [9, 13, 10, 5, 3]
        the result will be 
        sum([9*13, 9*10, 9*5 , 9*3]) + 
        sum([13*10, 13*5, 13*3]) + 
        sum([10*5, 10*3]) + 
        sum ([5*3])
        '''
        xSum = 0
        for xnr, x in …
Run Code Online (Sandbox Code Playgroud)

python numpy python-itertools pandas

8
推荐指数
3
解决办法
1904
查看次数

初始化一个大的锯齿状数组需要占用1 GB的RAM并且会因StackOverflowException而崩溃

当我编译这段C#代码(全文)并运行ArrayTest.exe时,该进程会挂起几秒钟,消耗1 GB的RAM,并与StackOverflowException崩溃.为什么?

public struct Point { }

public class ArrayTest {
    public static void Main(string[] args) {
        Point[][] array = {
            new Point[]{new Point(), new Point(), /* ... 296 omitted ... */, new Point(), new Point()},
            new Point[]{new Point(), new Point(), /* ... 296 omitted ... */, new Point(), new Point()},
            /* ... 296 omitted ... */
            new Point[]{new Point(), new Point(), /* ... 296 omitted ... */, new Point(), new Point()},
            new Point[]{new Point(), new …
Run Code Online (Sandbox Code Playgroud)

c# arrays

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

Visual C++启用控制台

我在Visual C++中创建了一个空项目,但现在我需要控制台来显示调试输出.

如何在不重新创建项目的情况下启用控制台或在VS输出窗口中显示输出?

c++ console visual-c++

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

有没有办法在32位计算机上执行64位程序?

只是一个简单的问题:有没有办法在32位机器上运行在64位Windows环境(使用mingw64)下编译的程序?我可以使用任何DLL或任何兼容层?

windows 64-bit 32-bit 32bit-64bit

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

Python函数返回索引0处的值?

Python标准库是否具有返回索引0处的值的函数?换一种说法:

zeroth = lambda x: x[0]
Run Code Online (Sandbox Code Playgroud)

我需要在高阶函数中使用它map().我问,因为我相信使用可重用的函数而不是定义自定义函数更清楚 - 例如:

pairs = [(0,1), (5,3), ...]

xcoords = map(funclib.zeroth, pairs)  # Reusable
vs.
xcoords = map(lambda p: p[0], pairs)  # Custom

xcoords = [0, 5, ...]  # (or iterable)
Run Code Online (Sandbox Code Playgroud)

我也问,因为Haskell确实有一个函数Data.List.head,它可以用作高阶函数的参数:

head :: [a] -> a
head (x:xs) = x
head xs = xs !! 0

xcoords = (map head) pairs
Run Code Online (Sandbox Code Playgroud)

python lambda dictionary list

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

这种非标准Java同步模式是否有效?

假设我有两个运行方式:

  • 线程A在更新共享图像的像素的同时执行计算
  • 线程B定期读取图像并将其复制到屏幕上

线程A快速执行工作,比如说每秒100万次更新,所以我怀疑经常在锁/互斥锁/监视器上锁定和解锁是个坏主意.但是如果没有锁定并且无法建立从线程A到线程B的先发生关系,那么通过Java内存模型(JMM规范),线程B根本不能保证看到A对图像的任何更新.

所以我认为最小的解决方案是线程A和B在同一个共享锁上定期同步,但在synchronized块内部实际上不执行任何工作 - 这就是使模式非标准和可疑的原因.用半实半伪代码来说明:

class ComputationCanvas extends java.awt.Canvas {

    private Object lock = new Object();
    private int[] pixels = new int[1000000];

    public ComputationCanvas() {
        new Thread(this::runThreadA).start();
        new Thread(this::runThreadB).start();
    }

    private void runThreadA() {
        while (true) {
            for (1000 steps) {
                update pixels directly
                without synchornization
            }
            synchronized(lock) {}    // Blank
        }
    }

    private void runThreadB() {
        while (true) {
            Thread.sleep(100);
            synchronized(lock) {}    // Blank
            this.repaint();
        }
    }

    @Override
    public void paint(Graphics g) {
        g.drawImage(pixels, 0, 0);
    } …
Run Code Online (Sandbox Code Playgroud)

java multithreading synchronization java-memory-model happens-before

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