当从hibernate支持的webapp传递时,我有一个需要加密的数据库列.webapp在tomcat 6,Hibernate 4和Mysql上作为后备存储.
但问题是加密/解密此字段的密码只能在程序运行时使用.最初我曾希望使用AES_ENCRYPT/DECRYPT方法,这里概述得很好:
和这里:
(虽然这确实是指hibernate的3.6版,但我相信它应该在4.0中相同).
但是,由于这使用以下表示法:
@Column(columnDefinition= "LONGBLOB", name="encryptedBody")
@ColumnTransformer(
read="AES_DECRYPT(encryptedBody, 'password')",
write="AES_ENCRYPT(?, 'password')")
public byte[] getEncryptedBody() {
return encryptedBody;
}
public void setEncryptedBody(byte[] encryptedBody) {
this.encryptedBody = encryptedBody;
}
Run Code Online (Sandbox Code Playgroud)
这要求在注释本身中指定密码,并且不能是变量.
有没有办法以这种方式通过hibernate使用数据库方法,但是将密码作为变量?有更好的方法吗?
我正在使用Jackson将Java对象映射到JSON,该对象是一个非常简单的pojo类,如下所示:
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonProperty;
@JsonAutoDetect
public class Area {
@JsonProperty("Id")
public int Id;
@JsonProperty("Name")
public String Name;
public Area() {
Name = "";
}
public int getId() {
return Id;
}
public void setId(int id) {
Id = id;
}
public String getName() {
return Name;
}
public void setName(String Name) {
this.Name = Name;
}
}
Run Code Online (Sandbox Code Playgroud)
映射代码如下所示:
ObjectMapper mapper = new ObjectMapper();
mapper.setVisibilityChecker(mapper.getSerializationConfig().getDefaultVisibilityChecker()
.withFieldVisibility(JsonAutoDetect.Visibility.ANY)
.withGetterVisibility(JsonAutoDetect.Visibility.NONE)
.withSetterVisibility(JsonAutoDetect.Visibility.NONE)
.withCreatorVisibility(JsonAutoDetect.Visibility.NONE));
areaJSON = mapper.writeValueAsString(area);
Run Code Online (Sandbox Code Playgroud)
但此时areaJSON的值如下:
{"id":0,"name":"","Name":"","Id":0}
Run Code Online (Sandbox Code Playgroud)
请注意具有不同情况的多个值.
我究竟做错了什么?
比如说我有以下数据:
ab
cd
ef
zy
ba
cd
Run Code Online (Sandbox Code Playgroud)
我希望能够以匹配第一个字符的方式匹配它,然后根据第一个字符的捕获组匹配第二个字符.
上例中的每一行都应该匹配,而类似cc
或af
不应该匹配.
详细说明,我的想法看起来像这样:
(基于ruby的正则表达式)
/^(?<first>[a-z])\g<first>$/
Run Code Online (Sandbox Code Playgroud)
然而,这匹配aa
或ac
两者都无效,以及预期ab
.
有没有办法修改捕获组,或用类似于我想要的语法包围它?
使用Unity和新的1.1版本的ARCore,API公开了一些获取相机信息的新方法.但是,我找不到任何好的示例,例如将其作为文件保存为本地存储作为jpg.
ARCore示例有一个很好的示例,可以检索相机数据,然后在此处执行操作:https://github.com/google-ar/arcore-unity-sdk/blob/master/Assets/GoogleARCore/Examples/ComputerVision/ Scripts/ComputerVisionController.cs#L212并且有一些检索该类中的摄像机数据的示例,但没有任何保存该数据的示例.
我已经看过:如何使用Unity ARCore SDK拍摄并保存图片/屏幕截图?它使用较旧的API获取数据的方式,并没有真正详细说明保存.
我理想的是Frame.CameraImage.AcquireCameraImageBytes()
通过Unity 将数据从API转换为磁盘上存储的jpg的方法.
更新
我已经开始工作了主要是在ARCore github页面上挖掘这个问题:https://github.com/google-ar/arcore-unity-sdk/issues/72#issuecomment-355134812并修改下面的Sonny的答案,所以一个人被接受是公平的.
如果其他人试图这样做,我必须执行以下步骤:
OnImageAvailable
在图像可用时,向Start方法添加回调以运行方法:
public void Start()
{
TextureReaderComponent.OnImageAvailableCallback += OnImageAvailable;
}
Run Code Online (Sandbox Code Playgroud)将TextureReader(从SDK提供的计算机视觉示例)添加到您的相机和脚本中
你OnImageAvailable
应该看起来像这样:
/// <summary>
/// Handles a new CPU image.
/// </summary>
/// <param name="format">The format of the image.</param>
/// <param name="width">Width of the image, in pixels.</param>
/// <param name="height">Height of the image, in pixels.</param>
/// <param name="pixelBuffer">Pointer to raw image buffer.</param>
/// <param …
Run Code Online (Sandbox Code Playgroud)我正在尝试使用 scrapy 编写一个递归抓取整个网站的蜘蛛。
然而,虽然它似乎可以很好地抓取第一页,但它随后会找到该页面上的链接,但不会跟随它们并抓取这些页面,这正是我所需要的。
我创建了一个 scrapy 项目并开始编写一个如下所示的蜘蛛:
# -*- coding: utf-8 -*-
import scrapy
from scrapy.http import Request
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from urlparse import urljoin
class EventsSpider(scrapy.Spider):
name = "events"
allowed_domains = ["www.foo.bar/"]
start_urls = (
'http://www.foo.bar/events/',
)
rules = (
Rule(LinkExtractor(), callback="parse", follow= True),
)
def parse(self, response):
yield {
'url':response.url,
'language':response.xpath('//meta[@name=\'Language\']/@content').extract(),
'description':response.xpath('//meta[@name=\'Description\']/@content').extract(),
}
for url in response.xpath('//a/@href').extract():
if url and not url.startswith('#'):
self.logger.debug(urljoin(response.url, url))
scrapy.http.Request(urljoin(response.url, url))
Run Code Online (Sandbox Code Playgroud)
然后,当使用以下方式运行蜘蛛时scrapy crawl events -o events.json …
迭代遍历地图时:
val powers = Map("Spark man" -> "Electricity", "Bubble man" -> "Fires Bubbles", "Guts man" -> "No idea")
println(powers.size)
println(powers.foreach(man => println(man._1 + " -> " + man._2)))
Run Code Online (Sandbox Code Playgroud)
为什么在打印时似乎产生第四个项目:
3
Spark man -> Electricity
Bubble man -> Fires Bubbles
Guts man -> No idea
()
Run Code Online (Sandbox Code Playgroud)
最后一行的括号是令我困惑的部分.
你可能会说我对这门语言很陌生,所以它可能很简单,但我似乎无法找到与此相关的任何内容.