问题列表 - 第12671页

超出范围会释放(字符)数组的内存吗?

我之前的问题非常相关,但我发现这是一个单独的问题,我无法找到一个可靠的答案.

是否超出范围释放(字符)数组使用的内存?

一个例子:

void method1()
{
  char str[10];
  // manipulate str
}
Run Code Online (Sandbox Code Playgroud)

所以在method1调用之后,str(10字节)使用的内存是否被释放,或者我是否需要在此上显式调用free?

我的直觉告诉我这只是一个简单的原始类型数组,因此它会自动释放.我有点怀疑,因为在C中你不能假设任何东西被自动释放.

c memory arrays

11
推荐指数
2
解决办法
7297
查看次数

如何获取包含当前选择的DOM元素?

您可以使用鼠标选择网页的一部分.

我知道我可以获取当前选定的文本,但是如何获取包含当前选择的开头或结尾的DOM元素?

html javascript dom selection

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

什么是并排组件?

在尝试将Debug安装集安装到测试计算机时,我今天第一次遇到了并排程序集.我最终管理了它,但留下了几个问题:

  1. Whare是Side-by-side汇编?
  2. Windows如何以不同于其他程序集的方式处理这些程序集
  3. 依赖于并排组件的应用程序如何处理这些与普通程序集不同的方式
  4. 在什么情况下可能有人想要创建一个并排的程序集?

.net assemblies side-by-side

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

C#自动属性 ​​- + =后仍为空?

这对我来说似乎是个错误......

我接受自动属性,定义如下:

public decimal? Total { get; set; }
Run Code Online (Sandbox Code Playgroud)

首次访问时将为null.它们尚未初始化,因此它们当然是空的.

但是,即使在通过+ =设置它们的值之后,这个十进制?仍然是空的.之后:

Total += 8;
Run Code Online (Sandbox Code Playgroud)

总计仍为空.这怎么可能是正确的?我知道它正在做一个(null + 8),但似乎很奇怪,它没有拿起它意味着它应该只被设置为8 ...

补遗:

我在我的问题中提出了"null + 8" - 但请注意它适用于字符串.所以,它确实为null +"hello"就好了,并返回"hello".因此,在幕后,它将字符串初始化为值为"hello"的字符串对象.对于其他类型,IMO,行为应该是相同的.这可能是因为字符串可以接受null作为值,但是,空字符串仍然不是初始化对象,对吗?

也许这只是因为一个字符串不是可以为空的......

c# initialization automatic-properties

9
推荐指数
3
解决办法
5553
查看次数

字符串数组作为maven插件的命令行参数

我正在编写一个maven插件,其参数是String [].

像这样:

/**
* @parameter expression="${args}"
*/
protected String[] args;
Run Code Online (Sandbox Code Playgroud)

这可以通过POM使用,如下所示:

<args>
  <arg>arg1</arg>
  <arg>arg2</arg>
<args>
Run Code Online (Sandbox Code Playgroud)

但我想从命令行发送它

-Dargs={arg1, arg2}
Run Code Online (Sandbox Code Playgroud)

这可能吗?

command-line maven-2 arguments maven-plugin

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

需要帮助Regex从字符串中提取邮政编码

我需要从字符串中提取邮政编码.字符串看起来像这样:

Sandviksveien 184, 1300 Sandvika
Run Code Online (Sandbox Code Playgroud)

如何使用正则表达式提取邮政编码?在上面的字符串中,邮政编码为1300.

我在路上尝试过这样的东西:

Regex pattern = new Regex(", [0..9]{4} ");
string str = "Sandviksveien 184, 1300 Sandvika";
string[] substring = pattern.Split(str);
lblMigrate.Text = substring[1].ToString();
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

c# regex

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

使用boost :: bind和构造函数

我正在尝试创建新对象并使用boost :: bind将它们添加到对象列表中.例如.

struct Stuff {int some_member;};
struct Object{
    Object(int n);
};
....
list<Stuff> a;   
list<Object> objs;
....
transform(a.begin(),a.end(),back_inserter(objs), 
  boost::bind(Object,
     boost::bind(&Stuff::some_member,_1)
  )
);
Run Code Online (Sandbox Code Playgroud)

这似乎不起作用.有没有办法使用带有boost :: bind的构造函数,还是应该尝试其他方法?

c++ constructor boost bind

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

在Git中将新创建的特定文件夹添加到.gitignore

我有一个干净的工作目录,并在昨晚从Git回购中获得了一个克隆.但现在我的本地服务器已创建并包含一个我想忽略的stats文件夹.

当我运行git状态时,我似乎无法让Git忽略此文件夹.

On branch master
Your branch is ahead of 'origin/master' by 1 commit.

Changes to be committed:
  (use "git reset HEAD <file>..." to unstage)

    new file: app_public/views/pages/privacy.php
    new file: app_public/views/pages/terms.php
    new file: public_html/stats/ctry_usage_200908.png
    new file: public_html/stats/daily_usage_200908.png
    new file: public_html/stats/dns_cache.db
    new file: public_html/stats/hourly_usage_200908.png
    new file: public_html/stats/index.html
    new file: public_html/stats/usage.png
    new file: public_html/stats/usage_200908.html
    new file: public_html/stats/webalizer.current
    new file: public_html/stats/webalizer.hist

Changed but not updated:
    modified: .gitignore
Run Code Online (Sandbox Code Playgroud)

我在.gitignore中添加了一些不同的行,但它仍然试图添加它们:

public_html/stats
public_html/stats/**
public_html/stats/**/*
public_html/stats/*
Run Code Online (Sandbox Code Playgroud)

git gitignore

81
推荐指数
4
解决办法
15万
查看次数

ASP.NET MVC中的访问控制取决于输入参数/服务层?

序言:这是一个哲学问题.我正在寻找更好的"正确"方式来做到这一点而不是"一种"方式来做到这一点.

让我们假设我有一些产品,以及在这些产品上执行CRUD的ASP.NET MVC应用程序: -

mysite.example/products/1
mysite.example/products/1/edit
Run Code Online (Sandbox Code Playgroud)

我正在使用存储库模式,因此这些产品来自何处并不重要: -

public interface IProductRepository
{
  IEnumberable<Product> GetProducts();
  ....
}
Run Code Online (Sandbox Code Playgroud)

我的存储库还描述了一个用户列表,以及他们管理的产品(用户和产品之间的许多产品).在应用程序的其他地方,Super-Admin正在对用户执行CRUD并管理用户与他们被允许管理的产品之间的关系.

任何人都可以查看任何产品,但只允许为特定产品指定为"管理员"的用户调用例如编辑操作.

应该如何在ASP.NET MVC中实现它?除非我错过了什么,否则我不能使用内置的ASP.NET Authorize属性,因为我需要为每个产品使用不同的角色,其次我不知道要检查哪个角色直到我从存储库中检索了我的产品.

显然,您可以将此场景概括为大多数内容管理方案 - 例如,用户只能编辑自己的论坛帖子.StackOverflow用户只能编辑他们自己的问题 - 除非他们有2000或更多代表...

作为一个例子,最简单的解决方案是:

public class ProductsController
{
  public ActionResult Edit(int id)
  {
    Product p = ProductRepository.GetProductById(id);
    User u = UserService.GetUser(); // Gets the currently logged in user
    if (ProductAdminService.UserIsAdminForProduct(u, p))
    {
      return View(p);
    }
    else
    {
      return RedirectToAction("AccessDenied");
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

我的问题:

  • 这些代码中的一部分需要重复 - 假设有几个操作(Update,Delete,SetStock,Order,CreateOffer),这取决于User-Products关系.你必须多次复制粘贴.
  • 它不是很可测试 - 你必须通过我的计数来模拟每个测试的四个对象.
  • 检查用户是否被允许执行操作似乎并不像控制器的"工作".我更倾向于更可插拔(例如通过属性的AOP)解决方案.但是,这是否意味着您必须两次选择产品(一次在AuthorizationFilter中,一次在Controller中)?
  • 如果不允许用户提出此请求,返回403会更好吗?如果是这样,我将如何做到这一点?

我可能会保持这个更新,因为我自己有想法,但我非常渴望听到你的想法!

提前致谢!

编辑

只是在这里添加一些细节.我遇到的问题是,我希望业务规则"只有具有权限的用户可以编辑产品"才能包含在一个且只有一个地方.我觉得确定用户是否可以对"编辑"操作进行GET或POST的相同代码也应该负责确定是否在"索引"或"详细信息"视图上呈现"编辑"链接.也许这不可能/不可行,但我觉得应该...... …

asp.net-mvc

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

将索引添加到gerrund表

所以,我有一个订阅表:

id - int(11) (With Primary Key)
user_id - int(11)
group_id - int(11)
role - int(11)
pending - tinyint(1)
created_at - datetime
updated_at - datetime
Run Code Online (Sandbox Code Playgroud)

我经常查询用户是否具有与此类似的访问权限:

SELECT * FROM `subscriptions` WHERE (group_id = 1 AND user_id = 2 AND pending = 0) LIMIT 1
Run Code Online (Sandbox Code Playgroud)

我想知道subscriptions(group_id, user_id, pending)在这种情况下添加一个独特的索引是否有帮助或阻碍?索引几乎整个表的最佳实践是什么?

mysql sql indexing

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