我有一个字符串(基本上是一个遵循命名约定的文件名) abc.def.ghi
我想在第一个之前提取子字符串.(即一个点)
在java doc api中,我似乎无法在String中找到一个方法.
我错过了什么吗?怎么做?
我遇到了一个采访问题"如果你正在设计一个网络爬虫,你将如何避免进入无限循环?"我试图回答它.
这一切从一开始就是如何开始的.比如谷歌开始时,一些中心页面上说有数百个(首先如何找到这些中心页面是一个不同的子问题).当Google跟踪来自页面的链接等时,它是否继续制作哈希表以确保它不遵循先前访问过的页面.
如果同一页面有2个名称(URL),如果我们有URL缩短器等,那么该怎么办呢?
我以谷歌为例.虽然谷歌没有泄漏其网络爬虫算法和页面排名等的工作方式,但任何猜测?
search-engine large-data-volumes web-crawler google-search data-structures
问题:如何使用gcc编译器编译C++程序?
info.c:
#include<iostream>
using std::cout;
using std::endl;
int main()
{
#ifdef __cplusplus
cout << "C++ compiler in use and version is " << __cplusplus << endl;
#endif
cout <<"Version is " << __STDC_VERSION__ << endl;
cout << "Hi" << __FILE__ << __LINE__ << endl;
}
Run Code Online (Sandbox Code Playgroud)
当我尝试编译 info.c
$ gcc info.C
Undefined first referenced
symbol in file
cout /var/tmp/ccPxLN2a.o
endl(ostream &) /var/tmp/ccPxLN2a.o
ostream::operator<<(ostream &(*)(ostream &))/var/tmp/ccPxLN2a.o
ostream::operator<<(int) /var/tmp/ccPxLN2a.o
ostream::operator<<(long) /var/tmp/ccPxLN2a.o
ostream::operator<<(char const *) /var/tmp/ccPxLN2a.o
ld: fatal: Symbol referencing errors. No output written …Run Code Online (Sandbox Code Playgroud) 据我所知,用户可以拥有一个进程,每个进程都有一个地址空间(包含有效的内存位置,这个进程可以参考).我知道进程可以调用系统调用并将参数传递给它,就像任何其他库函数一样.这似乎表明所有系统调用都是通过共享内存等进入进程地址空间.但也许,这只是一个错觉,因为在高级编程语言中,系统调用看起来像任何其他函数,当进程叫它.
但是,现在让我更进一步,更深入地分析引擎盖下发生的事情.编译器如何编译系统调用?它可能会将进程提供的系统调用名称和参数压入堆栈,然后将汇编指令说成"TRAP"或其他东西 - 基本上是用于调用软件中断的汇编指令.
该TRAP汇编指令由硬件执行,首先将模式位从用户切换到内核,然后将代码指针设置为说明中断服务程序的开始.从这一点开始,ISR在内核模式下执行,从堆栈中获取参数(这是可能的,因为内核可以访问任何内存位置,甚至是用户进程拥有的内存位置)并执行系统调用end放弃CPU,再次切换模式位,用户进程从停止的位置开始.
我的理解是否正确?
附上我理解的粗略图:

compiler-construction operating-system process interrupt system-calls
"观察当你从杂志中剪切一个角色时,页面背面的角色也会被移除.给出一个算法来确定你是否可以通过粘贴来自给定杂志的剪切来生成给定的字符串.假设你是给定一个函数,该函数将识别字符及其在页面反面的位置,用于任何给定的字符位置."
我该怎么做?
我可以做一些初步的修剪,这样如果一个需要的角色只有一种方法可以被拾取,那么它最初是在转动动态技术的子问题之前采取的,但是在这个初始修剪之后呢?
什么是时间和空间的复杂性?
为什么我不能拥有一个; 在2个C文件中.我打算将两者结合起来制作可执行文件.我从经验中知道我不能,但我想找到标准C99所说的位置并密封我的理解.
我正在阅读http://www.open-std.org/jtc1/sc22/wg...docs/n1256.pdf中的 ISO C99标准.它在第42页说:
6.2.2识别者的联系
1可以通过一个称为连接的过程,在不同的范围或相同的范围内多次声明一个标识符来引用同一个对象或函数.有三种链接:外部,内部和无.
2在构成整个程序的翻译单元和库的集合中,具有外部链接的特定标识符的每个声明表示相同的对象或功能.在一个翻译单元内,具有内部链接的标识符的每个声明表示相同的对象或功能.没有链接的标识符的每个声明表示唯一的实体.
3如果对象或函数的文件范围标识声明包含存储类指定静态,则标识符具有内部链接.
4对于在存储类规范外部声明的标识符,在该范围内可以看到该标识符的先前声明,如果先前声明指定内部或外部链接,则后面声明中标识符的链接与在先前声明中指定的联系.如果没有先前的声明可见,或者如果先前的声明没有指定链接,则标识符具有外部链接.
5如果函数的标识符声明没有存储类规范,则其链接的确定就像是使用存储类指定器extern声明的.如果对象的标识符声明具有文件范围且没有存储 - 特定的,它的联系是外在的.
看完之后看起来如果我声明一个变量就像说int a; 在2个源文件中.然后根据规则5和4都有外部链接,然后根据规则2,两者都应该引用同一个对象.那为什么编译器会产生问题.在标准中,暗示我们不能在2个源文件中声明这样,这应该抛出编译错误.首先,在标准中,它表示int a是一个定义,然后它表示2个定义实例是不可接受的.我知道我的经验是不允许的,但如果我能在标准中找到并密封我的理解,那对我来说非常有用.
请将以下标准的摘录与此规则相结合?或者我错过了胶水?:
声明规定了一组标识符的解释和属性.标识符的定义是对该标识符的声明: - 对于一个对象,导致为该对象保留存储; - 用于功能,包括功能体; - 对于枚举常量或typedef名称,是标识符的(唯一)声明.
正如5.1.1.1中所讨论的,预处理后的程序文本单元是一个翻译单元,它由一系列外部声明组成.这些被描述为"外部",因为它们出现在任何功能之外(因此具有文件范围).正如6.7中所讨论的那样,一个声明也会导致为一个对象或由标识符命名的函数保留存储,这是一个定义.
外部定义是外部声明,它也是函数(除了内联定义)或对象的定义.如果在表达式中使用了使用外部链接声明的标识符(除了作为sizeof运算符的操作数的一部分,其结果是整数常量),整个程序中的某个地方应该只有一个外部定义用于标识符; 否则,不得超过一个.
谢谢.
也许是一个非常微不足道的问题:
我需要将程序编译为64位(编写早期的makefile以将其编译为32位).
我在每个文件编译中看到了命令行参数中出现的选项-m32.所以,我修改了makefile以摆脱OPTFLAG中的-m32,但是当程序编译时,我仍然看到-m32出现,二进制文件仍然是32位.这个m32也来自其他地方吗?
我有一个文件
ksh$ cat test
b d
b c
a b
a a
Run Code Online (Sandbox Code Playgroud)
我想对第一个字段进行排序,但我希望稳定排序,即第二个字段的顺序应该保持不变.我希望输出为:
a b
a a
b d
b c
Run Code Online (Sandbox Code Playgroud)
如果我尝试:
ksh$sort -k1 -s test
Run Code Online (Sandbox Code Playgroud)
我明白了
a a
a b
b c
b d
Run Code Online (Sandbox Code Playgroud)
请帮忙,
谢谢
据我所知,通过SSL,浏览器获取安全网站的公钥,并通过公钥加密rsa算法,这两个建立会话密钥,然后通过一些对称算法继续通信,因为对称密钥加密/解密更快.SSL使用哪种对称密钥算法?DES?AES?或者是其他东西?
ssl cryptography rsa public-key-encryption encryption-symmetric
我开始在Linux上使用Subversion.svn diff给人一种非常隐秘的看法 - 对眼睛非常非常不友好.我如何解释其输出?更重要的是,有没有办法查看vimdiff类型的整齐风格的差异,两个文件将并排打开?