小编MUG*_*G4N的帖子

JavaScript检查null与undefined以及==和===之间的差异

我知道,我知道必须有一些线索涵盖这个主题.但我使用搜索并没有得到符合我需要的答案.所以我们走了:

  1. 如何检查一个变量,如果是nullundefined,是什么之间的差异nullundefined

  2. "=="和"==="之间有什么区别(Google很难搜索到==)?

javascript null undefined

560
推荐指数
6
解决办法
42万
查看次数

构建coffeescript代码?

在Rails 3.1下,我试图找出如何将一些coffeescript类从我的控制器默认coffeescript文件(home.js.coffee)移到另一个文件中,以便整体构建一下.

有谁知道如何将coffeescript文件"包含"到另一个?

coffeescript ruby-on-rails-3

32
推荐指数
3
解决办法
8679
查看次数

规范和政策之间的区别?

我正在阅读Eric Evans撰写的精彩书籍"领域驱动设计".在他的书中,Eric描述了两个不同的概念:规范模式和策略.

以下是规范的示例:

public interface ProjectSpecification {
  public boolean isSatisfiedBy(Project p);
}

public class ProjectIsOverdueSpecification implements ProjectSpecification {
  public boolean isSatisfiedBy(Project p) { … }
}

//client:
if {
  (projectIsOverdueSpecification.isSatisfiedBy(theCurrentProject) { … }
}
Run Code Online (Sandbox Code Playgroud)

以下是政策的示例:

public class CargoBooking {

  private OverBookingPolicy overBookingPolicy = new OverBookingPolicy();

  public int makeBooking(Cargo cargo, Voyage voyage) {
    if (!overbookingPolicy.isAllowed(cargo, voyage)) 
      return –1;
    int confirmation = orderConfirmationSequence.next();
    voyage.addCargo(cargo, confirmation);
    return confirmation;
  }
}

public OverBookingPolicy {
  public boolean isAllowed(Cargo cargo, Voyage voyage) {
    return (cargo.size() + …
Run Code Online (Sandbox Code Playgroud)

java policy domain-driven-design specifications

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

替代.net核心框架中System.Transaction程序集的TransactionScope

System.Transaction程序集目前不是.net核心框架的一部分(请参阅https://github.com/dotnet/corefx/issues/2949).在我的应用程序(asp.net core mvc)中,我需要使用TransactionScope进行事务处理.

题:

是否存在可与.net核心框架一起使用的备用事务处理?我曾尝试使用Castle.Transactions作为替代方案,目前也不支持.

transactions asp.net-core-mvc asp.net-core

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

我是否必须在单元测试中伪造一个值对象

我使用包含方法(测试中的方法)的TDD编写了一个类,它将一个简单的值对象作为参数(range).

码:

测试中的方法如下所示:

public List<string> In(IRange range)
{
     var result = new List<string>();
     for (int i = range.From; i <= range.To; i++)
     {
          //...
     }
     return result;
}
Run Code Online (Sandbox Code Playgroud)

此外,我有一个单元测试来验证我的测试方法:

[TestMethod]
public void In_SimpleNumbers_ReturnsNumbersAsList()
{
    var range = CreateRange(1, 2);
    var expected = new List<string>() { "1", "2" };
    var result = fizzbuzz.In(range);
    CollectionAssert.AreEqual(expected, result);
}

private IRange CreateRange(int from, int to)
{
    return new Fakes.StubIRange() 
    { 
        FromGet = () => { return from; }, 
        ToGet = () => …
Run Code Online (Sandbox Code Playgroud)

c# tdd unit-testing dependency-injection

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

为什么迭代后自动释放TObjectList类型的列表?

我有一个关于Spring4D框架的TObjectList类的行为的问题.在我的代码创建的几何图形,诸如列表square,circle,triange,各自定义一个单独的类.为了在列表被破坏时自动释放几何图形,我定义了一个类型为TObjectList的列表,如下所示:

procedure TForm1.FormCreate(Sender: TObject);
var
  geometricFigures: TObjectList<TGeometricFigure>;
  geometricFigure: TGeometricFigure;
begin
  ReportMemoryLeaksOnShutdown := true;

  geometricFigures := TObjectList<TGeometricFigure>.Create();
  try
    geometricFigures.Add(TCircle.Create(4,2));
    geometricFigures.Add(TCircle.Create(0,4));
    geometricFigures.Add(TRectangle.Create(3,10,4));
    geometricFigures.Add(TSquare.Create(1,5));
    geometricFigures.Add(TTriangle.Create(5,7,4));
    geometricFigures.Add(TTriangle.Create(2,6,3));

    for geometricFigure in geometricFigures do begin
      geometricFigure.ToString();
    end;
  finally
    //geometricFigures.Free(); -> this line is not required (?)
  end;
end;
Run Code Online (Sandbox Code Playgroud)

如果我运行此代码,geometricFigures即使我没有Free在列表中调用方法,也会自动从内存中释放列表(注意在finally块中注释掉了行).我期望一个不同的行为,我认为该列表需要显式调用Free(),因为局部变量geometricFigures不使用接口类型.

我进一步注意到,如果列表中的项目没有在for-in循环中迭代(我暂时将其从代码中删除),则列表不会自动释放,并且我会收到内存泄漏.

这引出了以下问题:为什么TObjectList(geometricFigures)类型的列表在迭代其项时会自动释放,但如果从代码中删除for-in循环则不会?

更新

我按照塞巴斯蒂安的建议调试了析构函数.列表项被以下代码破坏:

{$REGION 'TList<T>.TEnumerator'}

constructor TList<T>.TEnumerator.Create(const list: TList<T>);
begin
  inherited Create;
  fList := list;
  fList._AddRef;
  fVersion := fList.fVersion;
end;

destructor TList<T>.TEnumerator.Destroy; …
Run Code Online (Sandbox Code Playgroud)

delphi spring4d

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

1:N关系,其中N必须至少为一个条目

您好,我有一个关于数据库设计的简短问题.我也试过搜索但找不到我要找的东西.所以这是我的问题:

我有两个数据库表IdeaMedia(1:N).所以基本上这意味着一个想法可以没有,一个或几个媒体.但我问自己是否有可能定义每个想法必须至少有一个媒体的表格.如果可以,我怎样才能用MS SQL Server 2008实现这一目标?

我希望有人可以帮助我.

很多你的帮助

更新: 这就是目前的样子:

在此输入图像描述

sql database sql-server-2008

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

使用StreamWriter时,进程无法访问该文件

基本上我想创建一个文件,如果不存在然后写入消息.

if (!File.Exists(filePath + fileName))
    File.Create(filePath + fileName);
StreamWriter sr = new StreamWriter(filePath + fileName,false);
Run Code Online (Sandbox Code Playgroud)

如何处理这个错误?

该进程无法访问文件'c:\ blahblah',因为它正由另一个进程使用.

c# file

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

使用WinAPI获取文件夹的选定项目

嘿伙计们,我试图获取用户正在使用的文件夹的选定文件.我有以下代码已经运行,但只在桌面文件上:

private string selectedFiles()
{
    // get the handle of the desktop listview
    IntPtr vHandle = WinApiWrapper.FindWindow("Progman", "Program Manager");
    vHandle = WinApiWrapper.FindWindowEx(vHandle, IntPtr.Zero, "SHELLDLL_DefView", null);
    vHandle = WinApiWrapper.FindWindowEx(vHandle, IntPtr.Zero, "SysListView32", "FolderView");

    //IntPtr vHandle = WinApiWrapper.GetForegroundWindow();

    //Get total count of the icons on the desktop
    int vItemCount = WinApiWrapper.SendMessage(vHandle, WinApiWrapper.LVM_GETITEMCOUNT, 0, 0);
    //MessageBox.Show(vItemCount.ToString());
    uint vProcessId;
    WinApiWrapper.GetWindowThreadProcessId(vHandle, out vProcessId);
    IntPtr vProcess = WinApiWrapper.OpenProcess(WinApiWrapper.PROCESS_VM_OPERATION | WinApiWrapper.PROCESS_VM_READ |
    WinApiWrapper.PROCESS_VM_WRITE, false, vProcessId);
    IntPtr vPointer = WinApiWrapper.VirtualAllocEx(vProcess, IntPtr.Zero, 4096,
    WinApiWrapper.MEM_RESERVE | WinApiWrapper.MEM_COMMIT, WinApiWrapper.PAGE_READWRITE);
    try
    {
        for …
Run Code Online (Sandbox Code Playgroud)

c# windows winapi windows-explorer

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

生成随机mac地址

我在C#中寻找一种生成随机MAC号的方法.谷歌在这方面相当薄弱.

多谢

解:

在Yahia的帮助下,我能够编写以下解决方案.再次!

public static string GenerateMACAddress()
    {
        var sBuilder = new StringBuilder();
        var r = new Random();
        int number;
        byte b;
        for (int i = 0; i < 6; i++)
        {
            number = r.Next(0, 255);
            b = Convert.ToByte(number);
            if (i == 0)
            {
                b = setBit(b, 6); //--> set locally administered
                b = unsetBit(b, 7); // --> set unicast 
            }
            sBuilder.Append(number.ToString("X2"));
        }
        return sBuilder.ToString().ToUpper();
    }

    private static byte setBit(byte b, int BitNumber)
    {
        if (BitNumber < 8 && …
Run Code Online (Sandbox Code Playgroud)

c# networking

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