我正在研究一个程序,它struct在许多地方使用泛型来绕过相关的值.该结构包含一个字段char* s.
许多功能修改s; 但是,有时结构用于将信息传递给只读取它的函数.在这些情况下,用于初始化的字符串通常s是a const char*.但是,将其分配会s导致编译器警告.
虽然技术上是正确的,但这个警告感觉不对,因为该功能不会修改s.有没有办法绕过这个警告,除了扔掉const?有没有办法让函数承诺它会将struct成员视为const?
例:
#include <stdio.h>
struct mystruct{
int i;
char* s;
};
void i_only_read(const struct mystruct *m){
printf("mystruct: i=%d, s=%s\n", m->i, m->s);
}
int main(int argc, char **argv){
const char* cstr = "Hello";
struct mystruct m;
m.i=99;
/* gcc warning: assignment discards ‘const’ qualifier
* from pointer target type
*/
m.s=cstr;
i_only_read(&m);
}
Run Code Online (Sandbox Code Playgroud)
笔记
const char* s,因为大多数指向结构的函数都会修改s …我在全 JSF 平台上使用 Rich Editor 作为用户输入文本框。我试图避免对此文本字段的 XSS 攻击。
要求是
<显示<,所以问题是,由于我们必须正确显示值,所以我们输入escape=false了输出文本,但它随后变得容易受到 XSS 攻击。
我尝试使用 jsoup 来过滤 HTML 标签,但似乎输入会自动编码并且无法使用 jsoup 。
所以我的问题如下。
escape=false?在 Spring 中,我可以javax.persistence.EntityManager
使用 annotation将 an 注入到 Spring bean 中@javax.persistence.PersistenceContext,如下所示:
@Service
public class MyRepository {
@PersistenceContext
private EntityManager entityManager;
}
Run Code Online (Sandbox Code Playgroud)
这在 Spring 文档的第20.5.2章实现基于普通 JPA 的 DAO 中有所记录。
如果我不使用 Java EE 容器,有没有办法使用 CDI(特别是 Weld)来做到这一点?
特别是,是否可以重用@PersistenceContextCDI的注释(因为现有代码将它与 Spring 一起使用)?
据我了解:使用 Java EE 容器时,容器会解释注解并注入 EntityManager。那是对的吗?有没有办法在没有 Java EE 容器的情况下使用 Weld 使其工作?
我尝试使用 Weld(在 Tomcat 中,没有 Java EE)将上面的类注入到另一个类中。发生了注入,因此 Weld 正确创建了 的实例MyRepository,但是字段MyRepository.entityManager是null,就好像注释@PersistenceContext被忽略了一样。
这里发生了什么(或者更确切地说,没有发生)?
在TypeScript中,如果启用了严格的null检查,我希望编译器阻止我向变量赋值null或undefined值,除非它允许null。
但是,数组访问似乎可以绕开此检查。
例:
let a: string[] = ["Hello"];
let s: string;
// 1) this produces an error, as expected
s = undefined
// 2) s is undefined here, too, but no error
s = a[3];
console.log(s);
Run Code Online (Sandbox Code Playgroud)
TypeScript Playground上的可运行版本(注意:必须在“选项”对话框中启用“严格的空检查”)。
这里发生了什么?
我收到了这个错误:
Database problem occur, please try again later.
- Error in query: INSERT INTO main SET title ='', url='www.jerseymurah.com', kod='jerseymurah', owner='Hasbul Aqill', tag='jersey, football, world cup', since='Feb 2010', desc='ssfsfsfsfs'
- Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'desc='ssfsfsfsfs'' at line 1 (Error #1064)
- File: /home/yosh/domains/yosh.my/public_html/demo/admincp/tambah-save.php
Run Code Online (Sandbox Code Playgroud)
这是我的mysql查询代码:
$query = "INSERT INTO main SET title ='".$ttile."', url='".$url."',
kod='".$kod."', owner='".$owner."', tag='".$tag."', since='".$since."',
desc='".$desc."'"; …Run Code Online (Sandbox Code Playgroud) 我用git-new-workdir一个git存储库有两个工作树.这通常很有效,但是如果在两个工作树中检出相同的分支,我会在提交某些内容后得到有趣的行为:
结果:
显示的更改与我在A中提交的提交相反.例如,如果A中的提交添加了一行,则B中的"要提交的更改"显示此行已被删除.
这里发生了什么?这是git-new-workdir的已知限制吗?有没有办法避免这个问题?或者我应该避免在两个副本中签出同一分支时检入?
我也有兴趣了解内部发生的事情(我对git的内部结构知之甚少).
注意:
我发现git reset--hard如果B在A中提交之前没有未提交的更改,那么只需在B中运行就可以轻松解决问题
.
但是,如果我在A中提交B中存在未提交的更改,则真正未提交的更改会与提交中的伪造更改混合在一起,并且似乎没有简单的方法可以解开它们.因此问题.
当我反汇编ELF可执行文件时,我看到一个GNU_HASH似乎包含哈希的部分.我认为这是一个签名,以检查可执行文件是否被病毒修补或感染.
有没有办法检查这个签名?Linux在运行程序时是否会自动检查此签名?
我有一个我从CSV文件创建的SQL文件.它包括美国所有大都市区的名称,以及一些有关其人口的统计数据.我编写了一个PHP脚本,它接收填充数据,将其转换为图表,并将其粘贴到城市的行中,位于不同的列中.这个剧本运行良好,直到它来到爱达荷州Coeur d'Alene.我认为这是因为城市名称中的撇号(单引号).这是代码:
$query = "UPDATE population SET `$columnname`='$chart_url' WHERE name = '$cityname'";
mysql_query($query) or die;
Run Code Online (Sandbox Code Playgroud)
因此它通过将其与城市名称相匹配来找到该行.由于数据的原因,没有任何其他方法可以做到这一点.有没有办法处理SQL文件中已经没有未转义字符的数据?
到目前为止,我对git的使用主要是通过IDE进行的,我对我认为简单的事情有点噩梦.
在远程服务器上,我运行gitolite似乎工作正常,我的本地机器可以连接到服务器并执行简单的任务.
我在服务器上有一个repo,其名称与我本地的repo相同,但是本地repo在服务器版本之前创建了很长时间.
经过大量阅读后,建议克隆遥控器,然后推送到服务器.所以:
$ git clone ***server***:***repo***
Cloning into ***repo***...
warning: You appear to have cloned an empty repository.
Run Code Online (Sandbox Code Playgroud)
当我这样做时,我得到一个鼓舞人心的信息:
$ git push origin master
Counting objects: 4070, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3737/3737), done.
Writing objects: 100% (4070/4070), 15.16 MiB | 588 KiB/s, done.
Total 4070 (delta 867), reused 0 (delta 0)
To ***server***:***repo***.git
* [new branch] master -> master
$
Run Code Online (Sandbox Code Playgroud)
一切看起来都不错...... 但文件不在服务器上?
我应该合并,还有什么关于rebase ...这是我的知识完全崩溃的地方.我试过阅读git-scm文档,但我必须诚实......这是我的想法,这似乎应该是一件非常简单的事情.
我有这个
abc@abc-ubuntu:~/project1/wh-app-ios$ git branch -a -v -v
* master 1d35af1 [origin/master: ahead 2] Adding 123 to hello
remotes/gitb/gh-pages e3dad9d boom
remotes/gitb/integration 1d3fcd5 Adding 55_Glossary chapter
remotes/gitb/master 86d1d30 Merge remote-tracking branch 'origin/master'
remotes/gitb/pt_BR dc9d991 Revisions at 03, 07, 08, 09, 10, 11 and 50
remotes/origin/HEAD -> origin/master
remotes/origin/master 1ae426b Update README.md
Run Code Online (Sandbox Code Playgroud)
我做
abc@abc-ubuntu:~/project1/wh-app-ios$ git checkout gitb/master
Note: checking out 'gitb/master'.
You are in 'detached HEAD' state. You can look around, make experimental
changes and commit them, and you can discard any …Run Code Online (Sandbox Code Playgroud) 我在下面的例子中遇到了一个字节序问题.在这个main()传递地址的32位整数和myfunc()接收它在64位.
#include <stdint.h>
#include <stdio.h>
void myfunc(uint64_t *b)
{
printf("%llx\n", *b);
if ((*b & 255) == 127)
printf("\n It works\n");
else
printf("\n Not working\n");
}
main()
{
uint32_t a = 127;
printf("\n%lx\n", a);
myfunc(&a);
}
Run Code Online (Sandbox Code Playgroud)
它在小端平台(Windows)上正常工作.
7f
28ff780000007f
Run Code Online (Sandbox Code Playgroud)
有用
但它在big endian(AIX)上失败了.
7f
7fdeadbeef
Run Code Online (Sandbox Code Playgroud)
不工作
我认为当我们传递32位的地址并在64位接收时,在大端平台上它接收到其他32位.但我不确定.请帮助我了解这背后发生的事情.我不能在这里正确编写第一行程序.
非常感谢安