小编Sys*_*min的帖子

依赖注入和单例设计模式

我们如何确定何时使用依赖注入或单例模式.我在很多网站上都读到过"使用依赖注入超过单一模式"的网站.但我不确定我是否完全赞同他们.对于我的中小型项目,我肯定会看到单例模式的使用直截了当.

例如Logger.我可以使用Logger.GetInstance().Log(...) But,而不是这个,为什么我需要使用logger的实例注入我创建的每个类?

oop design-patterns dependency-injection

75
推荐指数
5
解决办法
4万
查看次数

如何在混洗连续整数数组中找到重复元素?

我最近在某个地方遇到过一个问题:

假设您有一个1001整数的数组.整数是随机顺序,但您知道每个整数在1到1000之间(包括1和1000).此外,每个数字在数组中只出现一次,但一个数字除外,它出现两次.假设您只能访问数组的每个元素一次.描述一个算法来查找重复的数字.如果您在算法中使用了辅助存储,是否可以找到不需要它的算法?

我感兴趣的是第二部分,即不使用辅助存储.你有什么主意吗?

arrays algorithm duplicates

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

C++模板 - 多种类型

考虑以下模板类.

template <class T>
class MyClass
{
   void MyFunc();
}

template <class T>
void MyClass<T>::MyFunc()
{
  //...implementation goes here
}
Run Code Online (Sandbox Code Playgroud)

我需要添加另一个函数MyFunc2,它接受一个额外的模板arg T2

template <class T>
class MyClass
{
   void MyFunc();

   template <class T2>
   static void MyFunc2(T2* data);
}

template <class T>
void MyClass<T>::MyFunc()
{
  //...implementation goes here
}

template <class T, class T2>
void MyClass<T>::MyFunc2(T2* pData)
{
  //...implementation goes here
}
Run Code Online (Sandbox Code Playgroud)

我正在使用VS 2008编译器.我收到了错误

error C2244: unable to match function definition to an existing declaration
Run Code Online (Sandbox Code Playgroud)

在这种情况下,函数定义和声明应该如何.

c++ templates

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

C++中的分号?

真的需要"缺少分号"错误吗?为什么不把它当作警告呢?

当我编译这段代码

int f = 1
int h=2;
Run Code Online (Sandbox Code Playgroud)

编译器聪明地告诉我,我错过了它.但对我而言,就像 - "如果你知道它,就把它视为存在并继续前进.(后来我可以修复警告.)

  int sdf = 1, df=2;
  sdf=1 df =2
Run Code Online (Sandbox Code Playgroud)

即使对于这段代码,它的行为也是一样的.也就是说,即使多个语句(没有;)在同一行中,编译器也知道.

那么,为什么不删除这个要求呢?为什么不表现得像Python,Visual Basic等.

讨论摘要

缺少两个示例/实例,并且分号实际上会导致问题.

1.

return
 (a+b)
Run Code Online (Sandbox Code Playgroud)

这被认为是JavaScript最糟糕的方面之一.但是,在这种情况下,分号插入是JavaScript的问题,但不适用于C++.在C++中,如果;在返回后完成插入,则会出现另一个错误.也就是说,缺少返回值.

2

int *y;
int f = 1
*y = 2;
Run Code Online (Sandbox Code Playgroud)

对于这个我猜,没有比引入语句分隔符更好的方法,即分号.

c c++

23
推荐指数
3
解决办法
4578
查看次数

进程内存限制为64位进程

我目前有一个32位.Net应用程序(在x86 Windows上)需要大量内存.最近它开始抛出System.OutOfMemoryException了.

所以,我打算将它作为64位进程转移到x64平台.因此,这将有助于内存不足异常.我正在从Windows的 MSDN 内存限制中阅读本文

所以,我的问题是如果我编译64位.Net应用程序,它是否将IMAGE_FILE_LARGE_ADDRESS_AWARE设置为默认值(如文章所示)?即我能够利用8GB用户模式虚拟地址空间吗?

.net c# 64-bit memory-management

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

为什么i ++++++++我在python中有效?

我"意外地"遇到了这种奇怪但有效的语法

i=3
print i+++i #outputs 6
print i+++++i #outputs 6
print i+-+i #outputs 0
print i+--+i #outputs 6 
Run Code Online (Sandbox Code Playgroud)

(对于每一个甚至没有:减号,它输出6其他0,为什么?)

这有用吗?

更新(不要采取错误的方式..我喜欢python):Python的一个原则说应该有一个 - 最好只有一个 - 明显的方法来做到这一点.似乎有无限的方法来做i + 1

python

16
推荐指数
3
解决办法
699
查看次数

如何以编程方式崩溃系统

如果我可以写一个会破坏我的操作系统(而不是我的应用程序)的用户程序,我该怎么做?

我想以某种方式将我的usermode程序切换到内核模式并导致内存损坏.可能吗?

注意:我没有创建病毒.好奇而已.

c c++ operating-system kernel

11
推荐指数
3
解决办法
5907
查看次数

动态删除属性的C#属性

我有一组具有一组属性的类如下所示.

class ContactInfo
{
    [ReadOnly(true)]
    [Category("Contact Info")]
    public string Mobile { get; set; }

    [Category("Contact Info")]
    public string Name{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)

此类的对象被分配给属性网格,以便用户可以更新现有联系人.你可以看到Mobile被标记为ReadOnly.

但是,当我想添加一个全新的联系人时,我希望用户能够编辑联系人移动设备.为此,我需要在将对象分配给属性网格之前从Type中动态删除Readonly属性.可能吗?

.net c# propertygrid

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

矩阵比较算法

如果你有2个矩阵N*M的矩阵.什么是获得差异的最佳方法?

例:

2 3 2 3 2 3 2 3                      2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3                      2 3 2 3 2 3 2 3
2 3 4 5 4 3 2 3      <--->           2 3 2 3 2 3 2 3
2 3 4 5 2 3 2 3                      2 3 2 3 2 3 2 3
2 3 2 3 2 3 2 3                      2 3 2 3 2 …
Run Code Online (Sandbox Code Playgroud)

c c++ algorithm

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

DLL内存管理

我对Windows如何管理.dll的内存几乎没有疑问.

  • 当.dll加载到主机进程时,如何管理内存?

  • .dll是否可以访问主机进程可用的整个内存或只是其中的一部分?即,当.dll中的函数分配内存时是否存在限制?

  • STL类如dll使用的字符串,向量(动态增加存储)等,在这里没有问题吗?

c c++ dll memory-management

9
推荐指数
2
解决办法
8785
查看次数

Websocket连接设置

我想了解更多关于websocket及其内部实现的信息.但仍然无法理解一些事情.我尝试使用谷歌搜索进行深入解释,但大多数只是给出了高级概述.以下是我的疑惑

1.据我所读,默认情况下,Web套接字服务器(C#/ C++实现)使用端口80.虽然我们可以使用任何端口,但我们最好使用端口80,因为我们不会遇到任何防火墙问题.如果是这样,我们如何在同一个端口(80)上运行web服务器和Web套接字服务器?

2.假设Web套接字服务器在端口81上运行,Web服务器在端口80上运行.

  1. 因此,当浏览器发出初始握手HTTP请求(Upgrade:websocket)时,此请求将发送到端口81.对吗?如果是这样,该请求(见下文)与HTTP协议没有任何关系.但我们仍然使用HTTP协议头.为什么?

           GET /mychat HTTP/1.1
           Host: server.example.com
           Upgrade: websocket
           Connection: Upgrade
           Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw==
           Sec-WebSocket-Protocol: chat
           Sec-WebSocket-Version: 13
           Origin: http://example.com
    
    Run Code Online (Sandbox Code Playgroud)
  2. 为什么他们使用当前在大多数浏览器中实现的相同websocket接口来发出与给定端口的直接TCP/IP连接,而没有任何HTTP内容?

3. 对于从客户端/服务器发送/接收的数据,是否存在数据包大小限制或数据/缓冲区限制?如果是这种情况,我们是否需要构建数据框并自行处理?

4. websocket服务器是否总是需要是一个单独的服务/流程?将来网络服务器(IIS,apache)将包括在其进程空间内托管Web套接字服务器的支持吗?

javascript c# sockets tcp websocket

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

从SQLite从C#代码导入/导出CSV

我试图找出一种使用System.Data.SQLite将CSV文件加载到SQLite DB中的一种方法

我看到命令行的方式来做到这一点,即 .Import mydata.csv mytable

但我需要通过C#代码来做到这一点.任何的想法?

.net c# sqlite

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

WPF路径动画

我创建了以下XAML

<Canvas Background="Gray" Margin="10">    
    <Ellipse x:Name="Node1" Width="20" Height="20" Fill="AliceBlue" Canvas.Left="38" Canvas.Top="136" />
    <Ellipse x:Name="Node2" Width="20" Height="20" Fill="AliceBlue" Canvas.Left="290" Canvas.Top="136" />
    <Ellipse x:Name="object" Width="10" Height="20" Fill="Black" Canvas.Left="43" Canvas.Top="125" />
    <Path Stroke="Black" StrokeThickness="1">
        <Path.Data>
            <PathGeometry>
                <PathGeometry.Figures>
                    <PathFigureCollection>
                        <PathFigure StartPoint="50,145">
                            <PathFigure.Segments>
                                <PathSegmentCollection>
                                    <LineSegment Point="100,100" />
                                    <LineSegment Point="250,100" />
                                    <LineSegment Point="300,145" />
                                </PathSegmentCollection>
                            </PathFigure.Segments>
                        </PathFigure>
                    </PathFigureCollection>
                </PathGeometry.Figures>
            </PathGeometry>
        </Path.Data>
    </Path>
</Canvas>
Run Code Online (Sandbox Code Playgroud)

如您所见,我创建了2个椭圆节点.连接两个节点和位于节点1的对象的路径.我想在这里做的是在node1沿着朝向node2的路径设置对象的动画.

我正在尝试使用代码进行动画,因为我希望动画在点击node2时发生.我一直在与DoubleAnimation,MatrixAnimation,故事板挣扎.很混乱.请分享您如何实现这一目标的知识.我希望相同的代码可以用于曲线和复杂路径.

c# wpf animation

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