小编mas*_*asi的帖子

PSObject,Hashtable和PSCustomObject之间的区别

任何人都能解释一下细节吗?如果我使用创建对象

$var = [PSObject]@{a=1;b=2;c=3}
Run Code Online (Sandbox Code Playgroud)

然后我使用getType()PowerShell 查找它的类型告诉我它的类型为Hashtable.

当使用Get-Member(别名gm)来检查对象时,很明显已经创建了一个哈希表,因为它有一个keys和一个values属性.那么"普通"散列表的区别是什么?

另外,使用PSCustomObject有什么好处?使用这样的东西创建一个

$var = [PSCustomObject]@{a=1;b=2;c=3}
Run Code Online (Sandbox Code Playgroud)

对我来说唯一可见的区别是PSCustomObject的不同数据类型.此外,还有一个检查gm显示现在每个键都已添加为NoteProperty对象,而不是键和值属性.

但我有什么优势?我可以通过使用其键来访问我的值,就像在哈希表中一样.我可以在PSCustomObject中存储多个简单的键值对(例如键对象对),就像在哈希表中一样.那有什么好处?有什么重要的区别吗?

powershell powershell-3.0 psobject

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

Spring Data JPA - 注入失败 - BeanCreationException:无法自动装配字段

我按照这里发布的教程获得了一个基础应用程序来使用Spring Data JPA.现在,我如何理解,使用配置

<jpa:repositories base-package="my.package.to.scan" />
Run Code Online (Sandbox Code Playgroud)

应该导致Spring Data JPA扫描的包用于扩展接口JpaRepository并创建它的concreate bean,因此可以使用简单的Spring在我的服务类中的任何地方使用它@Autowired.但它失败了,说它找不到带有className的bean(这是bean在创建时获得的默认名称,只需使用去大写的ClassName).

但是,当我在我的applicationContext中配置bean manualy时,如下所示:

<bean id="ClassName" class="my.package.to.scan.ClassName"/>
Run Code Online (Sandbox Code Playgroud)

Spring能够找到豆子.我当然得到一个错误,因为我想从一个接口创建一个bean,这显然是行不通的.但问题是,似乎Spring Data JPA"自动bean创建"似乎以某种方式失败了.

我附上相关代码,以便您查看.顺便说一句,我应该提一下,我正在开发一个portlet,所以不要奇怪为什么我没有spring-config.我目前只使用applicationConfig和一个MyPortlet-Portlet.xml进行portlet配置(但这不应该与此问题相关).我添加了import语句只是为了确保我没有使用错误的注释/类.

applicationContext.xml中

<beans *** ALL MY XMLN's and XSI's *** />
<context:annotation-config />
<jpa:repositories base-package="model.repositories" />

// JPA specific configuration here: dataSource, persistenceUnitManager exceptionTranslator, entityManagerFactory, SessionFactory, transactionManager - should not be relevant for this problem, tell me if i'm wrong

<bean class="org.springframework.orm.jpa.support.PersistenceAnnotationBeanPostProcessor" />
Run Code Online (Sandbox Code Playgroud)

ICustomerService - 只是CustomerService的一个接口

import model.entities.Customer;
public interface ICustomerService {
        // example method
    public …
Run Code Online (Sandbox Code Playgroud)

java spring annotations spring-data spring-data-jpa

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

亚马逊产品广告API - 获得评论排名

使用亚马逊API似乎不再可能获得产品的评论排名信息.检查此链接的说明是:

自2010年11月8日起,请求内容中仅返回iframe网址.

然而,使用params进行测试他们建议获得Iframe,但现在看来甚至Iframe都不再起作用了.因此,即使在"激励客户购买"一章中的最新API参考中,"评论"部分也完全缺失.

但是:由于我也非常感兴趣,如果它仍然可能以某种方式获得评论排名信息 - 甚至可能不使用亚马逊API而是竞争对手的API获取评论排名信息 - 我希望有人可以提供有关此主题的一些信息.

amazon amazon-web-services amazon-product-api

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

Android Spinner.setSelection()不起作用

我有一个旋转器,里面装满了一个CursorAdapter.现在,当创建该微调器(动态)时,我想将默认选择设置为0(0是CursorAdapter列表中的第一项)

所以我得到了一个在创建对象后调用的作业的setter.但由于某种原因,无论我在该setter中传递什么,0总是被传递给onItemSelected()Spinner中的方法OnItemSelectedListener.

但是,如果我等到第一次初始选择发生并再次运行我的二传手,一切正常.所以,为了使它更清楚,我在调试器中看到的是:

  • 对象(微调器)已创建
  • 附加微调器监听器
  • setter运行,一个数字,让我们说4(微调器包含多于4个选项的方式)传递给setSelection()方法
  • 等一会儿
  • 现在onItemSelected()是第一次运行,但该方法的位置为0!
  • 等一下
  • 我们再次运行二传手
  • 再次onItemSelected()运行,这个时间,给出的位置是4,因为它应该是!

现在那是有线的.似乎不可能设置该微调器直到第一个初始选择(始终为0)运行.那么为什么它是这样的,我该怎么做才能设置初始选择?

android spinner

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

使用远程文件服务器上的Copy-Item的UnauthorizedAccessException

我正在尝试将大约10个文件夹复制到远程文件共享上,每个文件夹包含一个〜3KB .txt文件,延迟时间为几秒.我正在使用Copy-Item像这样的Powershells :

try
{
    Copy-Item -Path $source -Destination $destination -Recurse -ErrorAction Stop
}
catch
{
    Write-Error $_.Exception.ToString()
}
Run Code Online (Sandbox Code Playgroud)

运行脚本的用户对文件服务器共享和本地源具有读,写和执行权限.

首次运行时,目标文件夹为空.一切正常.第二次运行时,文件和文件夹已存在.因此,在运行上面的代码之前,我首先运行检查Test-Path,如果文件夹存在使用Remove-Item这样的删除:

try
{
    if(Test-Path -Path $path -ErrorAction Stop)
    {
         Remove-Item -Recurse -Path $path -ErrorAction Stop
    }
}
catch
{
    Write-Error $_.Exception.ToString()
}
Run Code Online (Sandbox Code Playgroud)

没有其他人编辑这些文件.但是,当运行脚本时,偶尔会出现一些我不明白的原因,我在复制时突然收到某些文件夹的UnauthorizedAccessException错误.确切的错误是:

System.UnauthorizedAccessException:access denied ---> System.ComponentModel.Win32Exception:System.Management.Automation.SessionStateInternal.IsItemContainer(CmdletProvider providerInstance,String path,CmdletProviderContext)中的Microsoft.PowerShell.Commands.FileSystemProvider.NativeDirectoryExists(String path)中的访问被拒绝上下文

请注意:在远程文件服务器上的旧文件删除成功完成后,我收到了这些错误.

powershell powershell-3.0

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

使用非默认的AlgorithmIdentifier解密EnvelopedCms

我正在尝试解密使用非默认AlgorithmIdentifier加密的EnvelopedCms,如下所示:

ContentInfo contentInfo = new ContentInfo(data);
EnvelopedCms envelopedCms = new EnvelopedCms(contentInfo, new AlgorithmIdentifier(new System.Security.Cryptography.Oid("2.16.840.1.101.3.4.1.42")));
CmsRecipientCollection recipients = new CmsRecipientCollection(SubjectIdentifierType.IssuerAndSerialNumber, certificates);
envelopedCms.Encrypt(recipients);
byte[] encryptedData = envelopedCms.Encode();
Run Code Online (Sandbox Code Playgroud)

加密按预期工作.现在,当我尝试解密envelopedCms使用这样的东西时:

EnvelopedCms envelopedCms = new EnvelopedCms();
envelopedCms.Decode(encryptedData );
envelopedCms.Decrypt(certificates);
byte[] decryptedData = envelopedCms.ContentInfo.Content;
Run Code Online (Sandbox Code Playgroud)

我注意到.)对证书的访问需要很长时间(比使用默认的AlgorithmIdentifier时更长)和b.)我收到此错误消息:

System.Security.Cryptography.CryptographicException: Access was denied because of a security violation.
Run Code Online (Sandbox Code Playgroud)

其中,查看失败的来源可能不是问题.任何人都可以使用智能卡获得上述解密代码吗?

// EDIT1请注意,只有在使用的证书放在智能卡上并且如果指定了默认值(3DES)之外的AlgorithmIdentifier时,才会出现此问题,如示例代码中所示.如果使用默认的AlgorithmIdentifier或者未将证书放在智能卡上,一切正常.它本身似乎不是SC问题,因为它使用默认的AlgorithmIdentifier.更确切地说,SC和AES AlgorithmIdentifier的组合引起了问题,但我无法找到可行的解决方案.

// EDIT2演示此问题的完整示例,请阅读评论以获取详细信息:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Cryptography.X509Certificates;
using System.Text;
using System.Threading.Tasks;
using System.Security.Cryptography;
using System.IO;
using System.Reflection;
using System.Diagnostics; …
Run Code Online (Sandbox Code Playgroud)

.net c# encryption cryptography

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

Android Imagebutton焦点发光/颜色色调

所以,当使用ImageButton时

android:background="@drawable/icon"
Run Code Online (Sandbox Code Playgroud)

默认情况下定义每个默认的android按钮附带的焦点/按下效果上的发光缺失.我知道我可能会使用一个选择器在不同的状态下使用不同的图像,但这不是Android所做的,那不是我正在寻找的.

我希望android 在我聚焦/按下时将默认外部发光效果添加到我的图像按钮.我认为(也许它以不同的方式完成,不知道!)android正在使用色调.然而.使用色调选择器并像这样定义:

android:tint="@color/tint_selector"
Run Code Online (Sandbox Code Playgroud)

损坏了我的应用程序.使用静态颜色作为色调不会破坏它但是没有可见的色调.

所以我的问题:

  1. android是如何发光的
  2. 如果使用色调完成,如何定义适用于API 7的色调选择器和>用于图像按钮,以及选择器在不同状态下应该如何看待不同的颜色?
  3. 如果它使用色调完成,是否有一个我可以使用的静态资源,所以我得到"默认发光颜色",所以我得到每个Android API上的默认发光颜色?@ color/glow之类的东西?

android android-layout android-xml

6
推荐指数
1
解决办法
1661
查看次数

在没有作业信息的情况下从Powershell作业返回数据

我正在经营一份看起来像这样的工作

$myjob =
{
  # regerate some $data
  return $data
}
Run Code Online (Sandbox Code Playgroud)

我开始接受这样的工作:

Start-Job -ScriptBlock $myjob -Name "job1"
Wait-Job -Name "job1"
$result = Receive-Job -Job "job1"
Run Code Online (Sandbox Code Playgroud)

现在我希望我$result只包含$data返回的内容.但是,在检查$result除$ data之外的时候,我会看到更多我不希望被包含在我的$data数组中的信息.混乱的数据开始像这样:

(返回的数据:)

State         : Running
HasMoreData   : True
StatusMessage : 
Location      : localhost
Command       :  # regerate some $data
                 return $data
JobStateInfo  : Running
Finished      : System.Threading.ManualResetEvent
InstanceId    : f7c63b33-d270-4fa8-8042-111edf9d86a6
Id            : 270
Name          : job1
ChildJobs     : {Job271}
PSBeginTime   : 03.12.2012 14:06:26
PSEndTime …
Run Code Online (Sandbox Code Playgroud)

powershell powershell-3.0

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

Get-Help about*不适用于非英语系统

我正在使用德语PS版本,我正在尝试使用该命令显示powershell v.3.0的主题

Get-Help about_*
Run Code Online (Sandbox Code Playgroud)

这似乎是列出主题的正确命令.我还使用了更新了PS帮助

Update-Help
Run Code Online (Sandbox Code Playgroud)

CMDlet,以防万一有关主题遗失.无论如何:Get-Help cmdlet处理并返回:什么都没有.使用fl格式化输出或将输出保存到变量没有帮助,根本找不到about主题.但是,通常情况下,通配符似乎有效.运行

get-help get-*
Run Code Online (Sandbox Code Playgroud)

奇迹般有效.有任何想法吗?

powershell culture localization powershell-3.0

6
推荐指数
1
解决办法
3358
查看次数

Python Click - 如果父命令成功执行,则执行子命令

我正在使用Click来构建一个Python CLI,并遇到了一个问题,即如何在Click中处理异常.

我不确定这里的措辞("子命令","父命令"),但从我的例子中你会得到我希望的想法.我们假设这段代码:

@click.group()
@click.option("--something")
def mycli(something):
    try:
        #do something with "something" and set ctx
        ctx.obj = {}
        ctx.obj["somevar"] = some_result
    except:
        print("Something went wrong")
        raise

    #only if everything went fine call mycommand

@click.group()
@click.pass_context
def mygroup(ctx):
    pass

@mygroup.command(name="mycommand")
@click.pass_context
def mycommand(ctx):
    #this only works if somevar is set in ctx so don't call this if setting went wrong in mycli
Run Code Online (Sandbox Code Playgroud)

当应用程序启动时,这称为:

if __name__ == "__main__":
    mycli.add_command(mygroup)
    mycli()
Run Code Online (Sandbox Code Playgroud)

然后我开始这样的程序:

python myapp --something somevalue mycommand
Run Code Online (Sandbox Code Playgroud)

预期的行为:首先mycli调用它,然后执行其中的代码.如果抛出异常它被except块捕获,则会打印一条消息并引发异常.因为我们没有其他try/except块,所以会导致脚本终止.mycommand …

python python-click

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