我正在尝试使用 c 结构实现链表,我使用 malloc 分配一个新节点然后为 分配空间value,所以我一直在考虑如何在完成后释放结构,我的结构看起来像这样:
typedef struct llist {
char *value;
int line;
struct llist *next;
} List;
Run Code Online (Sandbox Code Playgroud)
我有一个遍历结构并释放其成员的函数,如下所示:
free(s->value);
free(s);
Run Code Online (Sandbox Code Playgroud)
我的问题是,这也免费int line吗?
在尝试Hpricot和Nokogiri时,HTML可以被提取和解析,但是他们是否也可以执行Javascript以便内容显示在页面上?(显示在DOM中).那是因为除非JavaScript初始化代码已经运行,否则某些页面不会显示信息.
我正在尝试通过Intent对象将Address对象数组传递给另一个Activity.
当Address类实现Parcelable接口时,我尝试执行以下操作.我从Geocoder对象获得了一个List Address对象,我将其转换为Address对象数组.然后我将此数组放入Intent并调用该活动.
final Address[] addresses = addresseList.toArray(new Address[addresseList.size()]);
final Intent intent = new Intent(this, SelectAddress.class);
intent.putExtra(SelectAddress.INTENT_EXTRA_ADDRESSES, startAddresses);
startActivityForResult(intent, REQUEST_CODE_ACTIVITY_SELECT_ADDRESSES);
Run Code Online (Sandbox Code Playgroud)
在其他活动中,我尝试使用以下代码从Intent中检索Address [].但是最后一行的调用以ClassCastException结束Landroid.os.Parcelable.
Bundle bundle = getIntent().getExtras();
Address[] addresses = (Address[]) bundle.getParcelableArray(INTENT_EXTRA_ADDRESSES);
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我如何检索地址[].
如果我像这样分配一个C数组:
int array[ 5 ];
Run Code Online (Sandbox Code Playgroud)
然后,只设置一个对象:
array[ 0 ] = 7;
Run Code Online (Sandbox Code Playgroud)
如何检查是否所有的其他键(array[1],array[2],...)的存储值?(在这种情况下,当然,他们不是.)
有像PHP这样的功能isset()吗?
if ( isset(array[ 1 ]) ) ...
Run Code Online (Sandbox Code Playgroud) 什么是停止线程并等待另一个线程执行一定次数的语句(或方法)的最佳方法?我正在考虑这样的事情(让"数字"成为一个int):
number = 5;
while (number > 0) {
synchronized(number) { number.wait(); }
}
...
synchronized(number) {
number--;
number.notify();
}
Run Code Online (Sandbox Code Playgroud)
显然这不起作用,首先是因为看起来你不能在int类型上等待().此外,对于我这样一个简单的任务来说,所有其他解决方案对我的Java天真的想法来说都非常复杂.有什么建议?(谢谢!)
关于C++中的访问器方法的几个问题已经被问到,但没有一个能够满足我对这个问题的好奇心.
我试图尽可能避免使用访问器,因为像Stroustrup和其他着名的程序员一样,我认为一个类很多都是OO的标志.在C++中,我可以在大多数情况下为类添加更多的责任或使用friend关键字来避免它们.但在某些情况下,您确实需要访问特定的班级成员.
有几种可能性:
1.根本不要使用存取器
我们可以公开相应的成员变量.这在Java中是不行的,但对于C++社区似乎没问题.但是,我有点担心的情况是一个显式副本或一个对象的只读(const)引用应该返回,是夸大了吗?
2.使用Java样式的get/set方法
我不确定它是否来自Java,但我的意思是:
int getAmount(); // Returns the amount
void setAmount(int amount); // Sets the amount
Run Code Online (Sandbox Code Playgroud)
3.使用客观的C风格的get/set方法
这有点奇怪,但显然越来越普遍:
int amount(); // Returns the amount
void amount(int amount); // Sets the amount
Run Code Online (Sandbox Code Playgroud)
为了使其工作,您必须为您的成员变量找到不同的名称.有些人附加下划线,其他人加上"m_".我也不喜欢.
你使用哪种风格?为什么?
我正在研究多核处理器; 具体来说,我正在考虑为多核处理器编写代码,并为多核处理器编译代码.
我很好奇这个领域的主要问题,这些问题目前阻碍了编程技术和实践的广泛采用,以充分利用多核架构的强大功能.
我知道以下的努力(其中一些似乎与多核架构没有直接关系,但似乎更多地与并行编程模型,多线程和并发性有关):
总的来说,从多线程编程的经验来看,我知道用并发和并行编程的编程绝对是一个困难的概念.我也知道多线程编程和多核编程是两回事.在多线程编程中,您确保CPU不会保持空闲(在单CPU系统上.正如James所指出的,操作系统可以安排不同的线程在不同的内核上运行 - 但我更感兴趣的是描述并行操作语言本身,或通过编译器).据我所知,你不能真正做并行操作.在多核系统中,您应该能够执行真正的并行操作.
所以在我看来,目前多核编程面临的问题是:
我很想知道可能存在的其他问题,以及是否有任何解决方案可以解决这些问题.研究论文(以及那种性质的东西)的链接会很有帮助.谢谢!
编辑
如果我不得不将我的问题简化为一句话,那就是:今天多核编程面临的问题是什么?该领域正在进行哪些研究来解决这些问题?
UPDATE
在我看来,有三个层次需要关注多核:
我搜索过ACM和IEEE,并找到了一些论文.他们中的大多数人都在谈论同时思考是多么困难,以及当前语言如何没有正确的方式来表达并发性.有些人甚至声称我们拥有的当前并发模型(线程)不是处理并发的好方法(即使在多核上).我有兴趣听取其他意见.
我在我的应用程序中使用GPS.当手机进入睡眠状态时,GPS的数据不会更新.我想保持手机屏幕醒来,直到我的应用程序将关闭.如何防止在Android中睡觉?
给定S长度的字符串(假设只有英文字符)n,我们可以使用以下算法计算回文子串的数量:
for i = 0 to |S| do
p1 = number of palindromes centered in i (odd length)
p2 = number of palindromes centered in i and i+1 (even length)
add p1 + p2 to total number of palindromic substrings of S
Run Code Online (Sandbox Code Playgroud)
O(n^2)但是,上面的代码.
我对解决这个问题的算法很感兴趣O(n).我肯定知道一个存在,因为我听到多个人说它确实存在,并且问题存在于一个上限为1 000 000on 的本地在线评判网站上n,但我从未见过算法,似乎无法能够想出来.
更新:
我的一般想法是len[i] = length of the longest palindrome centered at the character 2i + 1为偶数长度的回文计算和类似的数组.通过良好的簿记,应该可以O(1)为每个角色计算这一点,这将使我们能够同时计算大量的回文.然而,我仍然坚持如何计算这一点.
我会接受一个使用O(n)甚至可能是 …
在SQLite中,给出了这个数据库模式
CREATE TABLE observations (
src TEXT,
dest TEXT,
verb TEXT,
occurrences INTEGER
);
CREATE UNIQUE INDEX observations_index
ON observations (src, dest, verb);
Run Code Online (Sandbox Code Playgroud)
每当有一个新的观察元组(:src, :dest, :verb)出现时,我想要为该元组的现有行增加"出现次数"列,或者如果还没有,则添加一个出现次数= 1的新行.在具体的伪代码中:
if (SELECT COUNT(*) FROM observations
WHERE src == :src AND dest == :dest AND verb == :verb) == 1:
UPDATE observations SET occurrences = occurrences + 1
WHERE src == :src AND dest == :dest AND verb == :verb
else:
INSERT INTO observations VALUES (:src, :dest, :verb, 1)
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以在一个SQLite语句中执行整个操作.这将简化应用程序逻辑(这需要与数据库操作完全异步),并且还避免使用完全相同的密钥进行双索引查找.INSERT OR REPLACE似乎不是我想要的,唉没有UPDATE …