我正在用我教授的讲义进行评论.当我到达并发部分时,我得到了这个问题:
在幻灯片中,教授给出了两个使用pthread的例子(一个是很好的例子而另一个是坏的.).但我不明白为什么它们之间存在差异.
这是一个很好的例子:
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *get_rand_num(void *args) {
int *nump = malloc(sizeof(int));
srand(pthread_self());
*nump = rand();
return nump;
}
int main() {
pthread_t tid;
void *ptr = NULL;
pthread_create(&tid, NULL, get_rand_num, NULL);
pthread_join(tid, &ptr);
printf("Random number: %d\n", * (int *) ptr);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
坏的例子是
#include <stdio.h>
#include <stdlib.h>
#include <pthread.h>
void *get_rand_num(void *args) {
int num;
srand(pthread_self());
num = rand();
return #
}
int main() {
pthread_t tid;
void *ptr = NULL;
pthread_create(&tid, NULL, …Run Code Online (Sandbox Code Playgroud) 我正在学习Prolog的想法,这就是我想练习的内容:
我想写一个可以像这样工作的Prolog程序:
?- input([apple,is,fruit]).
?- input([chicken,is,meat]).
?- input([Is,apple,meat]).
No, it is a fruit
?- input[(Is,chicken,meat])
Yes.
Run Code Online (Sandbox Code Playgroud)
当我试图实现这个程序时,我遇到了一些问题:
(1)我使用此代码尝试读取输入并区分问题和断言,但它失败了:
input([]).
input([X|R]) :- X is 'Is', write('test code read question'); write("test code read assertion").
Run Code Online (Sandbox Code Playgroud)
(2)我仍然对如何从输入消息中过滤掉有用信息感到困惑.例如,在[Apple,is,fruit]输入数组中,我需要的只是apple和fruit.我们通常如何跳过这个is词?
我不想对程序硬编码太多东西,而更喜欢一个好的函数编程风格来解决可以帮助我从中学习的问题.
先感谢您.
我有一些代码在SD卡上创建/获取文件夹:
if( hasSDCard() ){
UUID uniqueFileName = UUID.randomUUID();
mediaStorageDir = new File(
getExternalImageStoragePath(),
"MyApp");
if ( ! mediaStorageDir.exists() ){
if( ! mediaStorageDir.mkdirs() ){
MyLogger.Error("Create image directory FAILED. path: " + mediaStorageDir.getPath());
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
并且我在我的清单文件中注册了许可:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STOREAGE"/>
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/>
Run Code Online (Sandbox Code Playgroud)
但是当我运行它时,会打印:
Create image directory FAILED. path: /storage/emulated/0/Pictures/MyApp
Run Code Online (Sandbox Code Playgroud)
我想知道为什么会这样?
===更新===
我尝试了所有这些:
/**
* get external storage directory path for image
* @return
*/
public static String getExternalImageStoragePath(){
String strPath = "";
if(hasSDCard()){
//strPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getPath();
//strPath = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath();
//strPath = Environment.getExternalStorageDirectory().getPath(); …Run Code Online (Sandbox Code Playgroud) 我正在编写一个Java项目,用附件发送电子邮件.
在我的测试用例中,我将一些日语单词"some Hiraganas and Katakanas"添加到我附加的testfile.txt(我用UTF-8编码保存.)
但是当我打开附加的测试文件后,我将测试邮件发送给自己. txt,每个日本人的Chars都变成了"????".
所以我只是想知道为什么会发生这种情况......?
谢谢
艾伦
PS更具体,这是我的代码.我正在使用mail.jar发送电子邮件.
以下是我获取文件的方法:
/**
* Add an attachment to the Email.
* @param filePath
*/
public void setFile(String filePath){
attachment = new File(filePath);
}
Run Code Online (Sandbox Code Playgroud)
以下是我如何将文件附加到我的MIME电子邮件部分.
/*Add attachment if an attachment is given.*/
if(attachment != null){
MimeBodyPart attachmentPart = new MimeBodyPart();
attachmentPart.attachFile(attachment);
multipart.addBodyPart(attachmentPart);
}
Run Code Online (Sandbox Code Playgroud) 我正在读一段C堆排序代码并遇到这个:
do{
printf("\n\t\t1:INSERT\n");
printf("\n\t\t2:SEARCH\n");
printf("\n\t\t3:DELETE\n");
printf("\n\t\t1:DISPLAY\n");
printf("Enter your choise\n");
scanf("%d",&choise);
switch(choise)
{
case 1: printf("Enter value to insert\n");
scanf("%d",&val);
last=insert(root,val);
break;
case 2:printf("Enter value for search \n");
scanf("%d",&val);
search(root,val);
break;
case 3:delete(root);
delete(last);
break;
case 4:printf("\n\tHEAP\n");
display(root);
break;
default : printf("INVALID choise ... can't you see properly?\n");
}
Run Code Online (Sandbox Code Playgroud)
任何人都知道什么\t1和\t2在printfS和它们是如何工作的?我试过谷歌,但没有得到任何有用的信息.谢谢.
我正在使用Ocaml实现这个hoemwork功能:
List模块'a list list -> 'a list [[1,2,3],[45]] => [1,2,3,4,5]和[[[1,2,3],[4,5]],[[6,7]]] => [[1,2,3],[4,5],[6,7]]我不知道从哪里开始,有人能给我一些建议吗?谢谢
我愿意问一下是否有人有一些好的算法(或方法)来检查两个SYSTEMTIME变量是否有30天或更长的差异?
谢谢
我已经完成了C#和C,但是当我来到这个C++项目时,我对这个小代码风格问题感到有些困惑.
我在C++程序中有几个const变量(可能是字符串或数字),我想在一个地方收集它们并从其他类访问它们.
例如,在C#和java中,我们可以有一个资源文件或一个配置文件来存储所有这些数据,或者只是一个单例或静态类.
但是我应该用C++做的最好的方法是什么?我应该将const变量放在头文件中还是创建类似JAVA的类?
以下是C++中的示例代码:
Foo *ptr;
ptr = new Foo;
delete [] ptr;
Run Code Online (Sandbox Code Playgroud)
这会遇到问题吗?什么应该是删除这样的指针和释放内存的正确方法?
谢谢
c++ ×3
c ×2
java ×2
android ×1
android-file ×1
coding-style ×1
concurrency ×1
const ×1
date ×1
dcg ×1
encoding ×1
file ×1
jakarta-mail ×1
list ×1
ocaml ×1
prolog ×1
pthreads ×1
storage ×1
string ×1
systemtime ×1
text ×1
time ×1