如果我执行以下操作:
user=> (-> ["1" "2"] (partial apply str))
#<core$partial__5034$fn__5040 clojure.core$partial__5034$fn__5040@d4dd758>
Run Code Online (Sandbox Code Playgroud)
......我得到了部分功能.但是,如果我将它绑定到变量:
user=> (def apply-str (partial apply str))
#'user/apply-str
user=> (-> ["1" "2" "3"] apply-str)
"123"
Run Code Online (Sandbox Code Playgroud)
......代码按照我的意图运作.我认为它们是相同的,但显然事实并非如此.有人可以解释为什么这对我来说?
我对c/c ++的(部分)编译时评估非常感兴趣(不是像c ++中的模板参数).让我们考虑以下情况(取自[1]):
double mypower(double x, int n) {
int i;
double ret = x;
for (i = 1; i < n; i++) {
ret *= x;
}
return ret;
}
Run Code Online (Sandbox Code Playgroud)
然后在代码中的某处调用此函数:
mypower(x,3); // y varies all the time,
Run Code Online (Sandbox Code Playgroud)
然后编译器可以优化它(例如循环展开).我使用的一些常用函数可以从优化中获益(通过手动创建专用函数进行测试).演示文稿[1]描述了一个搜索函数的过程,并由函数的专用版本替换.这似乎有效.但它似乎并不是非常普遍,需要为应该替换的函数编写代码.
该演示文稿似乎是从2008年开始,我找不到比此来源更多的信息.那么从那时起有什么改进吗?我更喜欢某种自动化,它对可能由属性语法控制的所有函数都做同样的事情(例如__attribute__(peval)......).此外,我希望同样适用于面向对象的代码,为不同的对象创建专门的类([2]似乎暗示这是不可能的).
另外,我希望这种专业化不仅适用于代码中的常量.我正在考虑编译为LLVM IR(字节码)的程序可以执行以下操作:
在解释器的初始化阶段运行程序,在初始化阶段,程序可以从文件中读取一些配置.初始化后,解释器停止.
从那一点开始修复一些变量(包括成员变量).提取这些变量(例如,在编译期间由属性标记).
创建专门的函数和类.将这些克隆到字节码中.
运行JIT以创建本机机器代码.
这是我要求的很多,只有少数计算密集型程序可以从这种优化中受益.但是有些人必须在努力.我可能只是不知道正确的搜索条件来提供谷歌.
注意:请不要建议使用非类型参数或手动专业化的模板类,我已经这样做了.我只是希望编译器为我工作.
链接:
[1] 介绍如何在LLVM中进行部分评估
[2] 关于部分评估的论坛信息
我有一个图像的原始字节.我使用以下代码来确定图像是否损坏
public bool IsValidGDIPlusImage(byte[] imageData)
{
try
{
using (var ms = new MemoryStream(imageData))
{
using (var bmp = new Bitmap(ms))
{
}
}
return true;
}
catch (Exception ex)
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
如果图像完全损坏,上面的代码工作正常,但如果我有一个部分损坏的图像?像下面的JPEG

如何确定图像部分损坏?
原始图像下方是一个简单的300x300像素图像,中心有一条对角线.
任何指导都非常感谢.谢谢
我正在尝试使用spring mvc 3.1,tiles 2和jquery对我的网站进行部分渲染.
这是我的春天:
<beans:bean class="org.springframework.js.ajax.AjaxUrlBasedViewResolver">
<beans:property name="viewClass" value="org.springframework.js.ajax.tiles2.AjaxTilesView"/>
</beans:bean>
Run Code Online (Sandbox Code Playgroud)
我的瓷砖conf:
<definition name="productSearch" extends="baseLayout">
<put-attribute name="mainSection">
<definition template="/WEB-INF/views/productSearch.jsp">
<put-attribute name="productSearchResults" value="/WEB-INF/views/productSearchResults.jsp" />
</definition>
</put-attribute>
</definition>
Run Code Online (Sandbox Code Playgroud)
如您所见,有一个名为"productSearchResults"的嵌套属性.这是结果页面,我希望通过ajax重新呈现此页面.
我的控制器:
@RequestMapping(params = "search=true", value = "/", method = RequestMethod.POST)
public String searchHandler(@Valid final SearchFormBean searchformBean, final Model model) {
model.addAttribute("productsList", productsService.findProducts(searchformBean.getSearchCriteria()));
return "productsSearch";
}
Run Code Online (Sandbox Code Playgroud)
我的jsps:
productsSearch.jsp:
<form:form id="product-search-form" method="post" modelAttribute="productSearchFormBean">
<input type="hidden" name="search" value="" />
<form:input path="searchCriteria.name" />
// AND SOME OTHER FIELDS...
<button type="submit" onclick="this.form.search.value='true';">Search</button>
</form>
Run Code Online (Sandbox Code Playgroud)
productSearchResults.jsp:
<div id="products-result">
<div id="search-results-info" …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用以下方法构建一个通用方法来处理MongoDB C#驱动程序的所有部分更新:
public bool UpdateObject<T>(UpdatableObject<T> updatableObject)
where T : new()
{
var builder = GenerateMongoUpdateBuilder(updatableObject.ModifiedFields);
var collection = GetCollection<T>();
var result = collection.Update(Query.EQ("_id", BsonValue.Create(updatableObject.Id)), builder, new MongoUpdateOptions { Flags = UpdateFlags.Multi });
return result.UpdatedExisting;
}
private static UpdateBuilder GenerateMongoUpdateBuilder(Dictionary<string, object> modifiedFields)
{
var builder = new UpdateBuilder();
foreach (var modifiedField in modifiedFields)
{
var type = modifiedField.Value.GetType();
if (type.IsPrimitive || type.IsValueType || (type == typeof(string)))
{
builder.Set(modifiedField.Key, BsonValue.Create(modifiedField.Value));
}
else
{
builder.Set(modifiedField.Key, modifiedField.Value.ToBsonDocument());
}
}
return builder;
}
Run Code Online (Sandbox Code Playgroud)
我不得不挣扎一段时间,直到我找到解决方案通过BsonValue处理原始类型和通过BsonDocument处理非原始类型.一切都运作良好,直到...我们创建了一个包含字典的对象.插入工作完美,但一旦进入更新(使用此方法) - …
这类似于在处理Clojure宏中讨论的问题作为一个函数,但是当在顶部答案中尝试该方法时,我得到了一个错误.希望有太多关于我的特定应用程序的信息是没有必要的,因为它非常复杂,但这是我尝试做的事情的简化版本:
(defmacro make-fn [m arg1]
`(fn [& args#]
(eval `(~'~m ~'~arg1 ~@args#))))
Run Code Online (Sandbox Code Playgroud)
我在这个上下文中使用了宏:
(let [columns (make-columns table-width)
table-name (keyword (str "table_" n))]
(apply (make-fn helpers/tbl table-name) columns))
Run Code Online (Sandbox Code Playgroud)
"helpers/tbl"是一个宏,它需要一个表名关键字和一个包含列规范的可变数量的列表(如[:varchar 100]或其他东西).我正在尝试动态创建随机数据库表规范,以方便一些测试.无论如何,当试图执行上面的代码时,我收到以下错误:
CompilerException java.lang.RuntimeException: Unable to resolve symbol: table-name in this context, compiling:(NO_SOURCE_PATH:1)
Run Code Online (Sandbox Code Playgroud)
我有点理解这个问题:宏扩展是在编译时完成的,我试图在宏扩展中包含一个运行时值,因此奇怪的使用引用和取消引用来使所有内容都设置得恰到好处.我基本上想要部分用于宏,并且我需要能够将这种机制重用于不同命名空间中的不同宏,并且所有的变量分辨率都是正确的.这甚至可能吗?
我有一个索引页面,它有两个部分视图:登录和注册.我正在使用数据模型验证.
Login.cshtml
@model Project.ViewModel.UserModel
<div style="position:inherit;">
@using (Html.BeginForm("_Login", "account"))
{
@Html.ValidationSummary(true)
<div class="label">@Html.Label("Username")</div>
<div class="field">@Html.TextBoxFor(m => m.Username)</div>
<div class="error">@Html.ValidationMessageFor(model => model.Username)</div>
<div class="label">@Html.Label("Password")</div>
<div class="field">@Html.PasswordFor(m => m.Password)</div>
<div class="error">@Html.ValidationMessageFor(model => model.Password)</div>
<input class="field" id="submit" type="submit" value="Login" />
}
Run Code Online (Sandbox Code Playgroud)
Register.cshtml
@model Project.ViewModel.UserModel
<link href="~/Content/Site.css" rel="stylesheet" />
<div style="position: inherit; margin-top: 20px">
@using (Html.BeginForm("_Register","account"))
{
<div class="label">@Html.Label("Name")</div>
<div class="field">@Html.TextBoxFor(m => m.FullName)</div>
<div class="error">@Html.ValidationMessageFor(model => model.FullName)</div>
<div class="label">@Html.Label("Username")</div>
<div class="field">@Html.TextBoxFor(m => m.Username)</div>
<div class="error">@Html.ValidationMessageFor(model => model.Username)</div>
<div class="label">@Html.Label("Password")</div>
<div class="field">@Html.PasswordFor(m => m.Password)</div>
<div …Run Code Online (Sandbox Code Playgroud) asp.net-mvc partial-views partial asp.net-mvc-3 asp.net-mvc-2
我已经开发了一段时间的ASP.NET Forms,现在我正在尝试学习MVC但是如何让它做我想做的事并没有完全意义.也许我需要以不同的方式思考问题.这是我正在尝试用一个简单的例子做的事情:
目标 - 使用部分文件,该部分文件可以放置在站点上接受参数的任何位置.该参数将用于转到数据库并将生成的模型传递回视图.然后,视图将显示一个或多个模型属性.
这不是我的代码,但显示了我正在尝试做的事情.
文件:Controllers/UserController.cs
[ChildActionOnly]
public ActionResult DisplayUserName(string userId)
{
MyDataContext db = new MyDataContext()
var user = (from u in db.Users where u.UserId = userId select u).FirstOrDefault();
return PartialView(user);
}
Run Code Online (Sandbox Code Playgroud)
文件:Views/Shared/_DisplayUserName.cs
@model DataLibrary.Models.User
<h2>Your username is: @Model.UserName</h2>
Run Code Online (Sandbox Code Playgroud)
文件:Views/About/Index.cshtml
@{
ViewBag.Title = "About";
}
<h2>About</h2>
{Insert Statement Here}
Run Code Online (Sandbox Code Playgroud)
我知道此时我需要渲染一个名为DisplayUserName的部分,但是它如何知道要使用哪个视图以及如何将userId传递给部分?
这是我期望的一个非常基本的问题,但我还没有找到一个涵盖这个问题的教程.
在此先感谢您的帮助.
我的情况是,使用我们的API的人需要在我的资源中进行部分更新.我理解HTTP明确指出这是一个PATCH操作,即使我们这边的人都用来发送PUT请求,这就是遗留代码的构建方式.
举例来说,想象一下简单的结构:
type Person struct {
Name string
Age int
Address string
}
Run Code Online (Sandbox Code Playgroud)
在POST请求中,我将提供具有所有三个值(名称,年龄,地址)的有效负载,并在我的Golang后端上相应地验证它们.简单.
但是,在PUT/PATCH请求中,我们知道,例如,name永远不会改变.但是说我想改变它age,然后我只是发送一个包含新的JSON有效载荷age:
PUT /person/1 {age:30}
Run Code Online (Sandbox Code Playgroud)
现在我的真正问题是:name如果我们的API的消费者发送包含该name字段的JSON有效负载,防止有意或无意修改使用/更新的最佳做法是什么?
例:
PUT /person/1 {name:"New Name", age:35}
Run Code Online (Sandbox Code Playgroud)
我想到的可能的解决方案,但我实际上并不喜欢它们,是:
在我的validator方法上,我要么强行删除不需要的字段,要么name回复一条错误消息说name不允许.
创建一个DTO对象/结构,它几乎是我的Person结构的扩展,然后将我的JSON有效负载解组到它中,例如
type PersonPut struct {
Age int
Address string
}
在我看来,这将添加不必要的额外代码和逻辑来抽象问题,但我没有看到任何其他优雅的解决方案.
老实说,我不喜欢这两种方法,我想知道你们是否面临同样的问题,以及你们是如何解决它的.
谢谢!
有没有一种方法可以使用webpack在另一部分中包含html部分?我正在使用html-loader执行此操作:
index.html
<%= require('html-loader!./partials/_header.html') %>
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试在_header.html中包含另一个部分时,它无法呈现它。
这不起作用:
_header.html
<%= require('html-loader!./partials/_nav.html') %>
Run Code Online (Sandbox Code Playgroud) partial ×10
clojure ×2
ajax ×1
api ×1
asp.net-mvc ×1
c# ×1
c++ ×1
controller ×1
corrupt ×1
dictionary ×1
evaluation ×1
go ×1
image ×1
jquery ×1
json ×1
llvm ×1
macros ×1
mongodb ×1
optimization ×1
put ×1
spring-mvc ×1
tiles ×1
variables ×1
webpack ×1