可以说我有一个模型:
public class MyModel
{
public string Name { get; set; }
public string[] Size { get; set; }
public string Weight { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和Json这样:
{
"name" : "widget",
"details" : {
"size" : [
"XL","M","S",
]
"weight" : "heavy"
}
}
Run Code Online (Sandbox Code Playgroud)
我一直试图找到一种方法来序列化我的对象,而不是为"名称"创建一个模型,为"细节"创建一个模型,因为这不能很好地映射到我的数据库,所以需要一点点玩杂耍来填充类.
我可以在JsonConvert.PopulateObject()上进行多次传递,如:
var mod = new MyModel();
JsonConvert.PopulateObject(json.ToString(), mod);
JsonConvert.PopulateObject(json["details"].ToString(), mod);
Run Code Online (Sandbox Code Playgroud)
但在我的真实代码中,我运行多个线程,PopulateObject不是线程安全的,它会阻塞应用程序.PopulateJsonAsync()的注释表示不使用它,而是在PopulateObject()上使用Task.Run().
这不起作用,当我调用它时仍然锁定应用程序:
await Task.Run(() => JsonConvert.PopulateObject(response.ToString(), productDetail));
if (response["results"].HasValues)
{
await Task.Run(() => JsonConvert.PopulateObject(response["results"][0].ToString(), productDetail));
}
Run Code Online (Sandbox Code Playgroud)
一些人通过,但最终应用程序完全线程锁定.如果我删除PopulateObject线程都终止正常,所以我很确定这个函数不是线程安全的.
是否有一个简洁的线程安全的方法来一步填充我的对象?
我正在尝试找到一种使用 CSS 来均匀地垂直排列列表项的方法。
我希望每个列表项都有一个不改变的固定高度。我希望每个列表项之间的边距自动延伸,以便它具有相同的空间量,但 margin:auto; 不管用。
这是片段:
.container {
border: 1px solid black;
height: 500px;
width: 400px;
}
.spaced {
padding: 0;
list-style: none;
}
.spaced li {
border: 1px solid blue;
height: 60px;
margin: 15px;
}Run Code Online (Sandbox Code Playgroud)
<div class="container">
<ul class="spaced">
<li>item </li>
<li>item </li>
<li>item </li>
<li>item </li>
</ul>
</div>Run Code Online (Sandbox Code Playgroud)
因此,对于这个片段,我需要它,以便蓝色框将保持相同的高度并在垂直方向上均匀分布。如果黑框的高度发生变化,则蓝框仍将均匀分布。
我怎样才能做到这一点?
在我的生产服务器上,我通过添加以下内容来设置环境变量/etc/environment:
ASPNETCORE_ENVIRONMENT=Production
Run Code Online (Sandbox Code Playgroud)
我检查了它printenv ASPNETCORE_ENVIRONMENT在重启后记录了.
我的服务器是Ubuntu 14.04,我使用的是asp.net核心1.1.
它正在加载我appsettings.Development.json而不是appsettings.Production.json.
这是我的startup.cs构造函数
public Startup(IHostingEnvironment env)
{
var builder = new ConfigurationBuilder()
.SetBasePath(env.ContentRootPath)
.AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
.AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true)
.AddEnvironmentVariables();
Configuration = builder.Build();
}
Run Code Online (Sandbox Code Playgroud)
在我的日志文件中我可以正确地看到它说Hosting environment: Production但如果我从配置文件中输出值来查看,那么它是来自内容的值appsettings.Development.json.
我甚至尝试appsettings.Development.json从服务器删除并重新启动整个服务器,但它仍然提取相同的值,我想它必须在某处编译.
我也尝试将其添加到.csproj:
<ItemGroup>
<None Include="appsettings.*.json" CopyToPublishDirectory="Always" />
</ItemGroup>
Run Code Online (Sandbox Code Playgroud)
我的设置文件显示嵌套在VS2017中,如下所示:
默认的appsettings.json只有一个defualt值用于记录,它不包含我提取的值.
我无法弄清楚问题是什么.
有没有办法将对象类型转换为类类型,以便遵守默认属性值?
例如:
class Person {
name: string = "bob";
age: number;
sex: string;
}
var data = {
"age": 23,
"sex": "male"
}
var p = <Person>data;
console.log(p.name); // -> undefined
Run Code Online (Sandbox Code Playgroud)
p.name鲍勃最简单的方法是什么?
*编辑
这似乎有效:
var record : Person = Object.assign(new Person(), p);
Run Code Online (Sandbox Code Playgroud)
这是好还是坏的做法?
我有两个组件,我在其中使用 ChangeDetectionStrategy.OnPush。父组件:
@Component({
changeStaregy: ChangeDetectionStrategy.OnPush,
template:`
<button (click)="onClick()">clear</button>
<div>
<test [model]="model"></test>
</div>`
})
export class AppComponent {
model: TestModel;
constructor(){
this.model = { id: 1, text: 'bla bla bla'}
}
onClick() {
this.model = new TestModel();
}
}
Run Code Online (Sandbox Code Playgroud)
和一个只显示数据的子组件:
@Component({
changeStrategy: ChangeDetectionStrategy.OnPush,
selector: 'test',
template: `
<div>
<div> {{model.id}} </div>
<div> {{model.text}} </div>
</div>`
})
export class TestComponent {
@Input() model: TestModel;
}
Run Code Online (Sandbox Code Playgroud)
当我单击“清除”按钮时,它会调用 onClick() 函数,该函数将一个空实体分配给“模型”。这会触发更改检测,因为输入已更改(OnPush 策略)。但是,如果我使用异步调用包装分配,则更改检测不起作用,因此 UI 不会更新:
onClick() {
setTimeout(() => {
this.model = new TestModel();
}, 2000); …Run Code Online (Sandbox Code Playgroud) 我已经将 Azure 管道与团队松弛通道集成在一起,这很好,它告诉我们构建何时完成并发布部署。但真正糟糕的是,它不会报告构建或发布失败的时间,这可以说是更重要的信息。
我进入设置尝试查看是否有任何事件,但似乎答案是否定的。我还想看看是否可以用 Zapier 之类的其他东西来完成,但我不知道如何做。
如何配置管道,以便我们的团队都能收到有关构建损坏或发布失败的通知?
我正在从 C# 批量导入 PostgreSQL,其中一条记录给出了此错误:
22021:编码“UTF8”的字节序列无效:0x00
我用谷歌搜索了一下,一般建议是这指的是一个空字段,但在我的例子中情况并非如此。我找到了导致错误的字符串,它是:
解决以下问题:设 $A$ 为 Banach 代数,并设 $\sum:\0\rightarrow I\rightarrow\mathfrak A\overset\pi\to\longrightarrow A\rightarrow 0$ 为 $A$ 的扩展,其中 $\mathfrak A$ 是 Banach 代数,$I$ 是 $\mathfrak A$ 中的封闭理想。
我正在从 XML 文件中读取此内容,并在文件流上定义了 UTF-8。
我的反序列化 C# 类上的转义字符串是:
"Addresses the following: Let $A$ be a Banach algebra, and let $\\sum\\:\\0\\rightarrow I\\rightarrow\\mathfrak A\\overset\\pi\\to\\longrightarrow A\\rightarrow 0$ be an extension of $A$, where $\\mathfrak A$ is a Banach algebra and $I$ is a closed ideal in $\\mathfrak A$."
Run Code Online (Sandbox Code Playgroud)
显然,字符串有些不对劲。我猜测应该存在某种数学符号,但是这到底是什么破坏了导入并使 PostgreSQL 报告它是一个空字段?应该以什么格式读取?
如果我手动覆盖此字段,则导入有效,因此该字符串 100% 存在问题。
我想弄清楚如何使用 CRACO ( https://github.com/gsoft-inc/craco ) 来禁用创建反应应用程序中的文件分块。
我创建了以下 craco.config.js:
// craco.config.js
module.exports = {
output: {
fileName: 'static/js/bundle.js',
},
}
Run Code Online (Sandbox Code Playgroud)
但它没有任何效果。使用 CRACO 在 CRA 中禁用文件分块的配置应该是什么样的?
我正在尝试让 wordpress 块编辑器加载到反应项目中:https : //www.npmjs.com/package/@wordpress/block-editor。
我已经完全按照 npm 页面上的示例进行了设置,但它给出了一个无效的钩子错误。我认为这可能是由于错误提示的版本不匹配?
这是代码:
import {
BlockEditorProvider,
BlockList,
WritingFlow,
ObserveTyping
} from "@wordpress/block-editor";
import { SlotFillProvider, Popover } from "@wordpress/components";
import { useState } from "@wordpress/element";
import "@wordpress/components/build-style/style.css";
import "@wordpress/block-editor/build-style/style.css";
export default function MyEditorComponent() {
const [blocks, updateBlocks] = useState([]);
return (
<BlockEditorProvider
value={blocks}
onInput={(blocks) => updateBlocks(blocks)}
onChange={(blocks) => updateBlocks(blocks)}
>
<SlotFillProvider>
<Popover.Slot name="block-toolbar" />
<WritingFlow>
<ObserveTyping>
<BlockList />
</ObserveTyping>
</WritingFlow>
<Popover.Slot />
</SlotFillProvider>
</BlockEditorProvider>
);
}
Run Code Online (Sandbox Code Playgroud)
和典型的钩子错误:
Error
Invalid hook call. Hooks …Run Code Online (Sandbox Code Playgroud) 我正在关注本教程:https : //kubernetes.io/docs/tasks/configure-pod-container/assign-memory-resource/
我已经创建了 memory pod 演示,我正在尝试从 pod 中获取指标,但它不起作用。
我通过克隆安装了指标服务器:https : //github.com/kubernetes-incubator/metrics-server
然后从顶层运行此命令:
kubectl create -f deploy/1.8+/
Run Code Online (Sandbox Code Playgroud)
我正在使用 kubernetes 版本 1.10.11。
pod 肯定是这样创建的:
? kubectl get pod memory-demo --namespace=mem-example
NAME READY STATUS RESTARTS AGE
memory-demo 1/1 Running 0 6m
Run Code Online (Sandbox Code Playgroud)
但是 metics 命令不起作用并给出错误:
? kubectl top pod memory-demo --namespace=mem-example
Error from server (NotFound): podmetrics.metrics.k8s.io "mem-example/memory-demo" not found
Run Code Online (Sandbox Code Playgroud)
我做错了什么?
c# ×3
reactjs ×2
angular ×1
asp.net-core ×1
azure-devops ×1
craco ×1
css ×1
html ×1
json.net ×1
kubernetes ×1
postgresql ×1
typescript ×1