收缩包装div到一些文本是非常简单的.但是如果由于最大宽度(作为示例)文本换行到第二行(或更多行),那么DIV的大小不会缩小到新包装的文本.它仍然扩展到断点(在这种情况下为最大宽度值),在DIV的右侧产生相当大的余量.当想要使这个DIV居中以使包裹的文本看起来居中时,这是有问题的.它不会,因为DIV不会收缩到多行文本.一种解决方案是使用合理的文本,但这并不总是实用的,并且结果可能是可怕的,并且单词之间存在较大的间隙.
据我所知,没有解决方案可以将DIV缩小为纯CSS中的包装文本.所以我的问题是,如何用Javascript实现这一目标?
这个jsfiddle说明了它:jsfiddle.由于最大宽度,这两个词几乎没有换行,但是DIV不会缩小到新包装的文本,留下一个令人讨厌的右边缘.我想消除这一点并让DIV重新调整到包装文本大概使用Javascript(因为我不相信纯CSS中存在解决方案).
.shrunken {text-align: left; display: inline-block; font-size: 24px; background-color: #ddd; max-width: 130px;}
<div class="shrunken">Shrink Shrink</div>
Run Code Online (Sandbox Code Playgroud) 我有一个枚举的字符串列表(它们是常量,例如国家列表),我希望能够在提供枚举的 int 值时获取该字符串,反之亦然,能够获取枚举的 int 值提供字符串时。这是为了在两者之间进行数据库事务的转换。
var MyData = [...]string {
"string1", // index 0
"string2", // index 1
"string3", // index 2
}
Run Code Online (Sandbox Code Playgroud)
对于像 python 这样的语言来说,这很容易,只需执行 MyData[1] 即可获取“string2”,MyData.index(“string2”) 即可获取 1。
一些可能的解决方案是
说到映射,我们可以访问特定值的键吗?然后我可以简单地拥有一个如下所示的映射,并且能够在提供 int 值时获取字符串键。
var MyData = map[string]int {
"string1": 0,
"string2": 1,
"string3": 2,
}
Run Code Online (Sandbox Code Playgroud)
更新:在我接受我的答案之前,我想更彻底地解释这个问题,我知道这一定是相当普遍的。我基本上有一组恒定的字符串(例如国家列表),每个字符串都有一个关联的整数值。在我的数据库中,我只是存储整数以节省空间,因为有数百万个条目。但是,当我显示数据库中的条目时,我需要显示字符串值,以便用户可读。一个简单的数组就可以做到这一点。但是,我还需要向数据库添加条目(例如新人员及其居住国家/地区),在这种情况下,需要将从表单中输入的国家/地区字符串转换为该整数值。同样,这只是一个示例用例,但目标保持不变。我需要一个可以在字符串值和枚举 int 值之间双向转换的表。最明显的事情是维护一个数组(用于 int 到 string 的转换)和一个映射(用于 string 到 int 的转换)。我不想手动维护这两个变量,因为这很容易出错。因此,我下面的解决方案是仅维护一个数组,并让构造函数方法在程序首次运行时在运行时自动构建地图。这样做的优点是,当我根据字符串获取整数值时,不需要迭代整个数组(这是另一个建议的解决方案)。
我正在使用 Python requests API 通过 HTTP 传输数据,并且需要正确解码二进制数据。每个数据块都以单字节标头(“H”、“N”或“S”)开头,并且这些块包含可变长度字符串(除其他外)。数据是 gzip 压缩的,所以我想使用 .iter_content 自动解压缩数据(而不是 .raw),并且确实想迭代数据以检测每个 1 字节标头。但在每个块的主体内,我需要抓取几个字节并对其进行操作。问题是,不清楚我将如何做到这一点,因为 .iter_content() 是一个生成器,并且我不熟悉如何从中转换或提取数据。这是一个精简的代码块,说明了我想要完成的任务:
resp = self.session.post(myurl, data=payload, stream=True, headers={'Content-Type': 'application/x-www-form-urlencoded'})
if resp.status_code == 200:
for byte in resp.iter_content(1):
if byte == 'H':
print "INFO: Heartbeat"
body = resp.iter_content(9)
print body # THIS DOESN'T WORK SINCE .iter_content IS A GENERATOR
elif byte == 'N':
print "INFO: Snapshot"
len = resp.iter_content(2)
mystr = resp.iter_content(len)
print mystr # ALSO DOESN'T WORK FOR THE SAME REASON
elif byte == 'S':
print …Run Code Online (Sandbox Code Playgroud) 我正在开发一个网站,它将使用Cassandra进行数据库存储,Solr用于索引和搜索该数据库中包含的一些数据(我只想搜索一些数据).我打算使用PHP进行服务器端脚本编写,与Cassandra数据库连接,并根据数据库的内容提供动态HTML内容.
当用户向数据库提交内容时,我设想PHP向Cassandra发出写入,如果是需要搜索的数据,则可以将相同的数据写入Solr索引.问题是,我不一定需要Solr索引中可立即获得的可搜索数据,也不需要通过PHP消耗宝贵资源将其添加到索引的过程,尤其是在高峰时段.有没有办法通过直接从Cassandra传输数据,在后台发生Solr索引的异步更新?也许可以创建一个可搜索数据队列,用于在空闲时间通过某些后台进程更新Solr索引?
我对这一切都很陌生,但我不知何故喜欢Cassandra和Solr之间的链接与主PHP脚本隔离.不确定Cassandra和Solr是否可以通过Java高效链接,只有对Cassandra(用于读取/写入数据库)和Solr(用于查询可搜索数据)的更高级别访问权限可以在PHP中维护以用于Web内容创建.我很感激任何建议.