目标:将二进制转换为字符串
示例:0111010001100101011100110111010001100011011011110110010001100101 - > testCode(不含空格)
我使用字典和我的功能,我搜索更好的方式,更有效率
from textwrap import wrap
DICO = {'\x00': '00', '\x04': '0100', '\x08': '01000', '\x0c': '01100',
'\x10': '010000', '\x14': '010100', '\x18': '011000', '\x1c': '011100',
' ': '0100000', '$': '0100100', '(': '0101000', ',': '0101100', '0': '0110000',
'4': '0110100', '8': '0111000', '<': '0111100', '@': '01000000',
'D': '01000100', 'H': '01001000', 'L': '01001100', 'P': '01010000',
'T': '01010100', 'X': '01011000', '\\': '01011100', '`': '01100000',
'd': '01100100', 'h': '01101000', 'l': '01101100', 'p': '01110000',
't': '01110100', 'x': '01111000', '|': '01111100', '\x03': '011',
'\x07': …Run Code Online (Sandbox Code Playgroud) 我有一个这样的字符串($字符总是被其他字符包围):
a$b
c$d
e$f
Run Code Online (Sandbox Code Playgroud)
我希望我的字符串方法放在\前面$并删除换行符:
a\$bc\$de\$f
Run Code Online (Sandbox Code Playgroud)
我尝试了这个,但它没有放置\角色:
s=s.replaceAll("\n","").replaceAll("$", "\\$");
Run Code Online (Sandbox Code Playgroud) 人们说继承破坏了封装,我同意。他们说授权更好-尽管授权中的修饰语也可以是公共的/受保护的。
那么,由于超类的公共/受保护修饰符的“敲响”作用暴露于扩展当前子类的任何新类中,因此继承中断封装的真正原因是吗?
最近我开始学习管道以获得乐趣.我已经陷入了几个部分,但是我认为它很大程度上已经找到了,但是我无法弄清楚如何获得输入以转发到程序并同时从该程序输出.
目前我有这个处理管道的Perl脚本:
#!/usr/bin/perl
use strict;
use warnings;
use threads;
use FileHandle;
use IPC::Open2;
my $cv_program = "./test"; #test is the compiled C program below
my $cv_message = "";
my $cv_currentkey = "";
my $pid = open2(*PIN, *POUT, $cv_program);
my $thread_pipeout = threads->create('PIPEOUT', \&PIN);
$thread_pipeout->detach();
while($cv_currentkey ne "\n")
{
$cv_currentkey = getc(STDIN);
$cv_message .= $cv_currentkey;
}
print POUT $cv_message;
sub PIPEOUT
{
my $PIN = shift;
while(<PIN>)
{
print $_;
}
}
Run Code Online (Sandbox Code Playgroud)
然后我有这个C程序只输出一些东西,请求一个字符串,然后打印该字符串:
#include <stdio.h>
int main(int argc, char const *argv[]) …Run Code Online (Sandbox Code Playgroud) 我注意到我的一些环境变量没有被JVM接收.
我在我的.bash_profile定义如下:
IO_HOME='some_value'
export IO_HOME
Run Code Online (Sandbox Code Playgroud)
并通过在shell中做:
echo $IO_HOME
Run Code Online (Sandbox Code Playgroud)
我得到了正确的结果.
但是既没有System.getProperties()也没有System.getenv()显示这个变量.我尝试了Java 6和Java 7.
有什么我想念的吗?
我在SQL Server 2008 Express中设置了一个表,忘了在我的唯一recordid列中添加一个非空约束.之后我尝试添加它,声明如下:
alter table movie_archive alter column RecordID Not null;
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误信息,说"不"的语法错误.我究竟做错了什么?
在处理之前,有三种方法可以将整个文件读入内存:
方法A:
fis = new FileInputStream(file);
bis = new BufferedInputStream(fis);
dis = new DataInputStream(bis);
Run Code Online (Sandbox Code Playgroud)
方法B:
ByteArrayInputStream bi =
new ByteArrayInputStream(
org.apache.commons.io.FileUtils.readFileToByteArray(file))
Run Code Online (Sandbox Code Playgroud)
方法C:
File file = new File(yourFileName);
RandomAccessFile ra = new RandomAccessFile(yourFileName, "rw"):
byte[] b = new byte[(int)file.length()];
try {
ra.read(b);
} catch (Exception e) {
e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)
为什么我更喜欢一种方法呢?
是否有任何特定的用例需要一种方法而不是另一种方法?
为什么不使用固定长度byte[]呢?
根据标准ML的定义(修订):
这个想法是对非扩展表达式的动态评估既不会生成异常也不会扩展内存的域,而对扩展表达式的评估可能会.
[§4.7,p19; 强调我的]
我在网上找到了很多关于ref-cell部分的信息,但几乎没有关于异常部分的信息.(一些消息来源指出,仍然可能会出现多态绑定Bind,并且这种不一致可能会产生类型理论和/或实现后果,但我不确定这是否相关.)
我已经能够想出一个与异常相关的不健全的东西,如果我没有弄错的话,只能通过价值限制来阻止; 但这种不健全并不取决于提出异常:
local
val (wrapAnyValueInExn, unwrapExnToAnyType) =
let exception EXN of 'a
in (EXN, fn EXN value => value)
end
in
val castAnyValueToAnyType = fn value => unwrapExnToAnyType (wrapAnyValueInExn value)
end
Run Code Online (Sandbox Code Playgroud)
那么,任何人都可以告诉我定义的内容,以及它为什么提到例外?
("生成异常"是否可能意味着生成异常名称,而不是生成异常数据包?)
我使用的是库内心深处,有两个相互引用的类-叫他们MR1和MR2-这样MR1.<clinit>会导致MR2被classloaded并MR2.<clinit>导致MR1被classloaded.
该库还具有Util类指MR1的是,例如Util.<clinit>使MR1被classloaded.
最后,它有一个顶级类 - 调用它TopLevel- 其构造函数有一些代码如下:
Util.callStaticUtilMethod();
MR2.callStaticMR2Method();
Run Code Online (Sandbox Code Playgroud)
所以整体依赖图是这样的:
我最近遇到了一个类加载器死锁,其中两个线程碰巧同时实例化TopLevel,而其他类都没有被加载.一个线程卡在MR1.<clinit>里面Util.<clinit>,准备呼叫Util.callStaticUtilMethod(); 另一个成功地过去了Util.callStaticUtilMethod(),并且被困住了MR2.<clinit>,准备打电话MR2.callStaticMR2Method().(然后一堆其他线程卡在了MR2.callStaticMR2Method()线上.)
我不明白的是 - 如果一个线程仍然卡住,死锁,内部Util.<clinit>,那么所有其他线程如何能够通过Util.callStaticUtilMethod()呼叫?是否可以在类完全初始化之前使用它?如果是这样,那么这会走多远; 例如,一个线程在被另一个线程初始化之前是否可以访问静态最终字段?(从其他线程无法通过MR2.callStaticMR2Method()呼叫的事实来看,似乎这并不是一个完全免费的,幸运的是;但我不知道规则可能是什么.)
给定一个数组,如何找到加起来为60的一对(两个值)或一个可被60整除的值.注意:必须比O(N ^ 2)快.
输入:[10,50,30,90]输出:2推理:10 + 50 = 60,30 + 90 = 120(120可被60整除)
输入:[60,60,60]输出:3推理:60 + 60 = 120,60 + 60 = 120,60 + 60 = 120
我下面的代码将在O(N)时间内运行,但我不知道如何处理彼此相等的对(即如果你在数组中有2 30个值会给你的计数器加1 ,但是如果你在数组中有3 30个值可以为你的计数器增加3个).我想我应该创建一个组合函数(即2C2或3C2),但这是一个线性函数,并不会只是使函数回到O(N ^ 2)?
values(myList) {
var obj = {};
var count = 0;
// loop through array and mod each value and insert it into a dictionary
myList.forEach((elem, index) => {
if (!obj.hasOwnProperty(elem % 60)) {
obj[elem % 60] = 1;
} else {
obj[elem % 60]++;
}
});
for (var keys …Run Code Online (Sandbox Code Playgroud) java ×4
string ×2
algorithm ×1
alter-table ×1
big-o ×1
binary ×1
c ×1
classloader ×1
dictionary ×1
environment ×1
exception ×1
file-io ×1
inputstream ×1
javascript ×1
oop ×1
perl ×1
pipe ×1
python ×1
regex ×1
sml ×1
sql ×1
sql-server ×1
system ×1
variables ×1