有没有办法在python中获取角色的Unicode块?该unicodedata模块似乎并不有我需要什么,我找不到一个外部库吧.
基本上,我需要与Character.UnicodeBlock.of()java中相同的功能.
我有这个小代码库,我正在考虑发布到开源.我想以类似于麻省理工学院许可证的方式发布它,即没有明显的限制,但是我想要求如果你在你的服务器上使用我的库,你必须在你的网站上给我信用.
基本上,我想要一个MIT许可证的许可证,因为AGPL是GPL.
这样的事情是存在的,还是我必须自己编写?
或者这只是一个真正糟糕的想法?
编辑:我想我应该省略"写我自己的"部分.我不是律师,我不想付一个.我只是觉得能够通过一个简单的谷歌搜索判断某人是否正在使用我的lib是一件好事.
uTorrent一直给我留下了深刻的印象,它具有270KB的可执行文件和较小的内存占用,同时与其尺寸为30倍的类似工具竞争.我可以想到我的计算机上的其他几个工具可以使用这样一个"debloated"版本.
应该用什么方法来编写一个300KB以下的Twitter客户端呢?
我不是一个真正的win32程序员,所以这个问题的一部分可能没有意义.我们欢迎更正.
我无法使用Android API示例中显示的标准InputStreamReader方法将扩展字符(例如法语重音字符)读写到文本文件中.当我使用以下方式回读文件时:
InputStreamReader tmp = new InputStreamReader(in);
BufferedReader reader = new BufferedReader(tmp);
String str;
while ((str = reader.readLine()) != null) {
...
Run Code Online (Sandbox Code Playgroud)
字符串读取在扩展字符处被截断,而不是在行尾.然后字符串的后半部分出现在下一行.我假设我需要将我的数据保存为UTF-8,但我找不到任何这样的例子,而且我是Java的新手.
任何人都可以向我提供相关文档的示例或链接吗?
看下面的java行:
Mac.getInstance("HmacSHA1");
Run Code Online (Sandbox Code Playgroud)
如果我把它放在一个简单的测试程序中,它在我的服务器上运行没有问题.但是,如果我在容器中使用此行,我会得到
java.security.NoSuchAlgorithmException: Algorithm HmacSHA1 not available
at javax.crypto.Mac.getInstance(DashoA13*..)
Run Code Online (Sandbox Code Playgroud)
在这两种情况下都使用相同的JDK安装.
谷歌搜索了一下后,我设法通过做两件事来让它工作:
sunjce_provider.jar从$JAVA_HOME/jre/lib/ext容器的lib目录复制.将以下行添加到我的代码中:
java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE());
具体来说,这发生在Apache James mailet中,但我很确定这与JVM选项有关.这是它使用的启动脚本.
虽然我最终得到了它的工作,但解决方案感觉太过黑了,不适合.我会很感激对正在发生的事情的解释,以及更"正确"的解决方案.
相关问题:使用Java加密导致NoSuchAlgorithmException.但是,在这种情况下,我非常确定应该支持开箱即用的HmacSHA1算法.作为证据,这在测试程序中没有问题.
我不知道为什么这不起作用:
我正在使用PEP 372中的odict类,但我想将它用作成员,即:__dict__
class Bag(object):
def __init__(self):
self.__dict__ = odict()
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,我得到了奇怪的结果.这有效:
>>> b = Bag()
>>> b.apple = 1
>>> b.apple
1
>>> b.banana = 2
>>> b.banana
2
Run Code Online (Sandbox Code Playgroud)
但是尝试访问实际的字典不起作用:
>>> b.__dict__.items()
[]
>>> b.__dict__
odict.odict([])
Run Code Online (Sandbox Code Playgroud)
它变得更奇怪了:
>>> b.__dict__['tomato'] = 3
>>> b.tomato
3
>>> b.__dict__
odict.odict([('tomato', 3)])
Run Code Online (Sandbox Code Playgroud)
我感觉非常愚蠢.你能帮我吗?
我有一个用python编写的系统,它使用由具有不同经验水平的几个开发人员编写的插件处理大量数据.
基本上,应用程序启动多个工作线程,然后为它们提供数据.每个线程确定用于项目的插件并要求它处理该项目.插件只是一个定义了特定功能的python模块.处理通常涉及正则表达式,并且不应超过一秒左右.
有时候,其中一个插件需要几分钟才能完成,整个时间将CPU挂起100%.这通常是由次优正则表达式与暴露低效率的数据项配对引起的.
这是事情变得棘手的地方.如果我怀疑罪魁祸首是谁,我可以检查它的代码并找到问题所在.但是,有时我不是那么幸运.
没有将整个架构重写为多处理,我可以通过任何方式找出谁在吃掉我所有的CPU?
补充:回答一些评论:
在python中分析多线程代码是没有用的,因为分析器测量总函数时间而不是活动cpu时间.试试cProfile.run('time.sleep(3)')看看我的意思.(归功于rog [最后评论]).
而之所以会单线程是棘手的,因为只有1 20,000项导致的问题,我不知道它是哪一个.运行多线程允许我在大约一个小时内完成20,000个项目,而单线程可能需要更长的时间(涉及很多网络延迟).还有一些我现在不想进入的并发症.
也就是说,尝试序列化调用插件的特定代码并不是一个坏主意,因此一个的时序不会影响其他的时序.我会尝试并报告回来.
Sun的JVM有两种形式:-client并且-server,服务器VM应该针对长时间运行的流程进行优化,并且建议用于服务器应用程序.
当我java没有参数运行时,它显示使用选项,其中包括以下文本:
The default VM is server,
because you are running on a server-class machine.
看过这个,我没有费心去添加-server进程启动命令.
但是,在最近的JVM崩溃日志中,我注意到文件末尾附近的以下行:
vm_info: Java HotSpot(TM) Client VM (14.0-b16) for linux-x86 JRE (1.6.0_14-b08), built on May 21 2009 02:01:47 by "java_re" with gcc 3.2.1-7a (J2SE release)
在我看来,Java正在使用客户端虚拟机,尽管它在帮助消息中说明了这一点.我要将-server选项添加到我的启动命令中,但现在我很怀疑.所以我的问题是:有没有办法确保我运行的虚拟机真的是服务器虚拟机,而不是强迫JVM崩溃?
操作系统是ubuntu 8.04,但我使用的是从Sun网站下载的JDK 1.6.0_14.
我有一个系统不断耗尽磁盘空间,因为垃圾收集器不会释放持有文件句柄足够快的对象.(文件一直在创建和删除,但由于该进程仍然具有打开的文件句柄,因此操作系统会将其保留在磁盘上).
对象是共享的,所以简单try { ... } finally { close(); }不会这样做.
在我看来,我最好的选择是对对象实现引用计数,并在引用计数为0时关闭文件句柄.但是,我不愿意自己实现它,因为我怀疑存在细微的问题关于并发性.
可悲的是,谷歌搜索"java中的引用计数"并没有带来任何有用的结果.所以我的问题是:是否有任何资源(文章,示例代码,库)可以帮助实现引用计数?
Spring Framework 3似乎即将到来,但GA版本为2.5.6.
如果这是我第一次接触这个主题,我应该从稳定版本开始,还是应该从新版本开始并保存自己的迁移问题?
版本3与版本2有何不同?春天3有多近?
java ×5
python ×3
android ×1
concurrency ×1
cryptography ×1
executable ×1
james ×1
jce ×1
jvm ×1
licensing ×1
memory ×1
open-source ×1
profiling ×1
regex ×1
spring ×1
unicode ×1
utf-8 ×1
winapi ×1