昨天,Computerphile上传了一段关于代码高尔夫和bitshift变化的视频,我真的对生成音乐的程序非常着迷.这是我在视频中的代码格式化版本.
int g(int sample, int x, int t, int overdrive) {
return (
(
3 & x & (
sample *
(
(
3 & sample >> 16
?
"BY}6YB6%"
:
"Qj}6jQ6%"
)[t % 8]
+
51
) >> overdrive
)
) << 4
);
}
int main(int n, int s) {
for (int sample=0 ;; sample++)
putchar(
g(sample, 1, n=sample >> 14, 12)
+
g(sample, s=sample >> 17, n^sample >> 13, 10)
+
g(sample, s/3, n + …Run Code Online (Sandbox Code Playgroud) 我花了很长时间试图弄清楚如何验证XML文件,并且我已经使用预先生成的XSD架构.但是,我希望在没有创建文件的情况下动态生成模式,基于我指定的注释类,我试图不向SchemaFactory指定任何参数,但是它似乎只是创建一个空模式(请参阅下面的注释) .
以下是我用于JAXB读取和写入XML文件的两个类.
这是XMLTranslationWrapper类的代码:
@XmlAccessorType(XmlAccessType.FIELD)
@XmlRootElement(namespace = "my.package.namespace")
public class XMLTranslationWrapper {
@XmlElementWrapper(name = "TRANSLATIONS")
@XmlElement(name = "TRANSL")
public ArrayList<XMLTranslationNode> translations;
public XMLTranslationWrapper(){
translations = new ArrayList<XMLTranslationNode>();
}
public void setTranslations(ArrayList<XMLTranslationNode> translations){
this.translations = translations;
}
public XMLTranslationNode getTranslation(String code){
for(XMLTranslationNode transl : translations){
if(transl.getCode().equals(code))
return transl;
}
return null;
}
public void addTranslation(XMLTranslationNode translation){
this.translations.add(translation);
}
}
Run Code Online (Sandbox Code Playgroud)
这是XMLTranslationNode类的代码:
@XmlAccessorType(XmlAccessType.PROPERTY)
@XmlRootElement(name = "TRANSL")
@XmlType(propOrder = { "severity", "translation" })
public class XMLTranslationNode {
private String severity;
private String code;
private …Run Code Online (Sandbox Code Playgroud) 调试优化代码似乎是不可能的.我花了太长时间试图超越编译器.由于编译器优化了我的代码,我很难做一个简单的检查,如果我的struct是否为null,请不要误解我的意思是我想保留-O3选项,如果可能的话加速我的代码,但是如果由于编译器优化,我不断收到很多错误,我可能会把它关掉.
我有一个线程,它将尝试从数组中将结构条目出列并将它们放入数据库中但由于某种原因结构已经过优化.
void *queue_func(void *param){
LogArgs* largs;
pthread_mutex_t *mx = (pthread_mutex_t*) param;
InitQueue();
while(!needQuit(mx)){
if((largs = Dequeue()) != NULL){ // the boolean result is true here
interrupt_log(largs->event, largs->rawtime); // yet largs is NULL here!!!
}
usleep(50000);
}
return NULL;
}
Run Code Online (Sandbox Code Playgroud)
这里参考的是Dequeue函数和struct:
LogArgs* Dequeue(){
LogArgs* largs;
if(isEmpty()) return NULL;
else{
largs = &queue[++head % MAX_SIZE];
return largs;
}
}
Run Code Online (Sandbox Code Playgroud)
这是结构:
typedef struct {
time_t *rawtime;
char event[129];
} LogArgs;
Run Code Online (Sandbox Code Playgroud)
有没有办法防止拉格斯被优化?