是否有用于备份数据库中数据的rake任务?
我已经备份了我的架构,但我想备份数据.这是一个小型的MySQL数据库.
我有一个代码如下的类
private readonly object m_lock = new object();
private IClient m_client
private object m_context;
Run Code Online (Sandbox Code Playgroud)
设置客户端和上下文时,我按如下方式锁定
lock(m_lock)
{
m_client = theClientFromSomewhere;
m_context = contextObject;
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,如果我只需要m_client自己解决,这样做是否安全?
var localClient = m_client;
Debug.Assert(localClient != null);
localClient.DoStuff();
Run Code Online (Sandbox Code Playgroud)
m_client读取(在分配时localClient)保证是原子的,因此这应该在单个CPU上正常工作.
我可以(也在理论上)制作m_client变量volatile,然后通过防止其他CPU的无序读取,这在多个cpu中是安全的,但问题是,写入时锁定是否可以安全地读取不稳定?
写入"刷新"CPU缓存时是否锁定,以便在读取时不会出现乱序?
我正在开发一个Windows客户端应用程序,并希望缓存一些数据.这是一个非常简单的场景,基本上只是将一些数据保存在内存中,以便应用程序可以避免在网络连接中断时崩溃.
我可以推出自己的缓存解决方案,或使用EntLib缓存块,但在提交之前我正在寻找更多的替代方案.
问题是,我所做的所有搜索都显示:
当然还有其他一些内存缓存库吗?
谢谢
我有一个使用HTTPS客户端证书进行身份验证的系统,但根据以下过程生成证书本身:
我们有这个系统在iOS上工作,我正在尝试移植到android,但遇到了很多问题,因为Android的文档记录不清,安全API混乱.
我的代码大致如下:
生成证书
keyStore = KeyStore.getInstance(ANDROID_KEYSTORE);
keyStore.load(null);
Date startDate = new Date();
Date endDate = new Date(startDate.getTime() + FORTY_YEARS_IN_MILLISECONDS);
KeyPairGeneratorSpec spec = new KeyPairGeneratorSpec.Builder(context)
.setAlias(alias)
.setKeySize(2048)
.setKeyType(KeyProperties.KEY_ALGORITHM_RSA)
.setSubject(new X500Principal("CN=" + alias))
.setSerialNumber(BigInteger.TEN)
.setStartDate(startDate)
.setEndDate(endDate)
.build();
KeyPairGenerator generator = KeyPairGenerator.getInstance(KeyProperties.KEY_ALGORITHM_RSA, ANDROID_KEYSTORE);
generator.initialize(spec);
KeyPair keyPair = generator.generateKeyPair(); // this will put a certificate and key pair in the keyStore.
dumpKeyStore(keyStore);
byte[] entireKey = keyPair.getPublic().getEncoded();
// chop off first 24 bytes; the java key pair generator puts an object …Run Code Online (Sandbox Code Playgroud) Swift编程的普遍共识(截至2018年5月,Swift 4.1,Xcode 9.3)是结构应该是首选,除非您的逻辑明确要求对象的共享引用.
我们知道,结构的一个问题是它们是按值传递的,因此在将结构传递给函数或从函数返回时会产生一个副本.如果你有一个大的结构(比如说有12个属性),那么这种复制可能会变得昂贵.
这通常由人们说,swift编译器和/或LLVM可以删除副本(即传递对结构的引用,而不是复制它),并且只有在实际改变结构时才需要复制.
这一切都很好,但它总是在理论上被谈到 - "作为优化,LLVM 可以忽略副本"和类似的东西.
我的问题是,任何人都可以告诉我们什么实际发生了什么?编译器是否真的忽略了副本,或者它只是一天可能存在的理论上的未来优化?(例如,C#编译器理论上也可以删除struct副本,但它实际上从未实现过,并且Microsoft建议您不要对大于16字节的事物使用结构[1])
如果swift确实存在elide结构副本,那么是否以及何时执行此操作会有一些解释或启发式吗?
注意:我在谈论用户定义的结构,而不是像数组和字典这样的stdlib内置
[1] https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/choosing-between-class-and-struct
我有以下3个rails类,它们都存储在一个表中,使用rails的单表继承.
class Template < ActiveRecord::Base
class ThingTemplate < Template
class StockThingTemplate < ThingTemplate
Run Code Online (Sandbox Code Playgroud)
如果我有一个StockThingTemplateID,150那么我应该在逻辑上能够做到这一点:
ThingTemplate.find(150)
=> #returns me the StockThingTemplate
Run Code Online (Sandbox Code Playgroud)
而事实上这个工程,有时
当它工作时,它会生成以下SQL查询:
SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') OR (templates.`type` = 'StockThingTemplate' ) )
Run Code Online (Sandbox Code Playgroud)
如果它不起作用,它会生成以下SQL查询:
SELECT * FROM templates WHERE (templates.`id` = 159) AND ( (templates.`type` = 'ThingTemplate') )
Run Code Online (Sandbox Code Playgroud)
sql正在做它应该做的事情,但问题是,为什么它一次生成一组SQL,另一次生成另一组.它的字面意思完全相同.
笔记:
require 'stock_thing_template'在不同的地方尝试过了.它要么没有效果,要么引起其他问题使用PowerShell时,有时我只想显示文件的名称或全名.
从我可以收集到的,这样做的方法是使用Get-ItemProperty(别名gp)和传递-n fullname,例如
PS C:\Dev> gp . -n fullname
Run Code Online (Sandbox Code Playgroud)
值得注意的是我要在更长的脚本与结合使用该foreach和where,等
然后Powershell显示全名,但它还显示了一堆其他内容,如下所示:
PSPath : Microsoft.PowerShell.Core\FileSystem::C:\Dev
PSParentPath : Microsoft.PowerShell.Core\FileSystem::C:\
PSChildName : Dev
PSDrive : C
PSProvider : Microsoft.PowerShell.Core\FileSystem
fullname : C:\Dev
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何让powershell 只显示我想要的属性(fullname),而不是将所有其他东西都显示出来.是Get-ItemProperty即使这样做的正确方法?
如果我这样做:
ls -r | ?{ $_.fullname -match "foo" }
Run Code Online (Sandbox Code Playgroud)
这给了我一系列列表,每个目录一个,显示每个目录中的所有'foo'文件.我想要做的是巩固这些多个列表成一个单一的名单,并没有显示Mode,LastWriteTime,Length或任何其他不相关的东西.如果Get-ItemProperty不是展示这些东西的正确方法,那是什么?
在C#中,您可以使用属性修饰函数返回值,如下所示:
[return: MarshalAs(UnmanagedType.IUnknown)]
object LoadStuff();
Run Code Online (Sandbox Code Playgroud)
我的问题是,如何在C++/CLI中执行此操作?我有这个:
[return: MarshalAs(UnmanagedType::IUnknown)]
Object^ LoadStuff();
Run Code Online (Sandbox Code Playgroud)
但编译器出错了'return' : unknown attribute qualifier.
是否有一种我无法找到的替代语法?
我有一个像这样的swift结构:
struct LogicalState {
let a: String?
let b: Bool
let c: Int
}
Run Code Online (Sandbox Code Playgroud)
以及这种状态的可变实例.注意状态中的属性都是let,所以struct本身是不可变的.
var _state: LogicalState
Run Code Online (Sandbox Code Playgroud)
我想要做的是强制执行一种模式,允许更新状态,但所有更新必须是原子的 - 我不想简单地使a,b和c变为可变,因为这将允许a和b独立更改.我需要控制更新并应用验证(例如,要强制执行,如果更改a,您还必须同时更改b)
我可以通过简单地覆盖整个结构来做到这一点
_state = LogicalState(a: "newA", b: false, c: _state.c)
Run Code Online (Sandbox Code Playgroud)
但是,正如您所看到的,必须为不改变的属性显式引用旧状态(_state.c)是烦人且有问题的,尤其是当您有更多属性时.我的真实世界的例子有10个.
在kotlin中,他们有"数据类",它们公开了一个"复制"方法,它允许你只改变你想要的参数.如果swift支持这样的东西,语法将如下所示
func copy(a: String? = self.a, b:Bool = self.b, c:Int = self.c) ...
Run Code Online (Sandbox Code Playgroud)
问题是,= self.aswift中不存在语法,我不确定我有哪些其他选项?
如何解决这个问题的任何解决方案将非常感激
c# ×3
ruby ×2
swift ×2
.net ×1
android ×1
attributes ×1
c++-cli ×1
caching ×1
client ×1
database ×1
inheritance ×1
java ×1
keystore ×1
locking ×1
mysql ×1
powershell ×1
rake ×1
volatile ×1
windows-8.1 ×1