
正文
编写一段代码Java 编写一段代码打开百度
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
用Java编写一个程序,要求如下:
1.内部使用 C 的 longjmp 机制让出一个协程。 因此编写一段代码Java,如果一个 C 函数 foo 调用了一个 API 函数, 而这个 API 函数让出了(直接或间接调用了让出函数)。 由于 longjmp 会移除 C 栈的栈帧, Lua 就无法返回到 foo 里了。
2.为了回避这类问题, 碰到 API 调用中调用让出时,除了那些抛出错误的 API 外,还提供了三个函数: lua_yieldk, lua_callk,和 lua_pcallk 。 它们在让出发生时,可以从传入的 延续函数 (名为 k 的参数)继续运行。
3.编写一段代码Java我们需要预设一些术语来解释延续点。 对于从 Lua 中调用的 C 函数,我们称之为 原函数。 从这个原函数中调用的上面所述的三个 C API 函数我们称之为 被调函数。 被调函数可以使当前线程让出。 (让出发生在被调函数是 lua_yieldk, 或传入 lua_callk 或 lua_pcallk 的函数调用了让出时。)
4.假设正在运行的线程在执行被调函数时让出。 当再次延续这条线程,它希望继续被调函数的运行。 然而,被调函数不可能返回到原函数中。 这是因为之前的让出操作破坏了 C 栈的栈帧。 作为替代品,Lua 调用那个作为被调函数参数给出的 延续函数 。 正如其名,延续函数将延续原函数的任务。
5.注意这里那个额外的显式的对延续函数的调用:Lua 仅在需要时,这可能是由错误导致的也可能是发生了让出而需要继续运行,才会调用延续函数。 如果没有发生过任何让出,调用的函数正常返回, 那么 lua_pcallk (以及 lua_callk)也会正常返回。 (当然,这个例子中你也可以不在之后调用延续函数, 而是在原函数的调用后直接写上需要做的工作。)
6.Lua 会把延续函数看作原函数。 延续函数将接收到和原函数相同的 Lua 栈,其接收到的 lua 状态也和 被调函数若返回后应该有的状态一致。 (例如, lua_callk 调用之后, 栈中之前压入的函数和调用参数都被调用产生的返回值所替代。) 这时也有相同的上值。 等到它返回的时候,Lua 会将其看待成原函数的返回去操作。
7.我们需要预设一些术语来解释延续点。 对于从 Lua 中调用的 C 函数,我们称之为 原函数。 从这个原函数中调用的上面所述的三个 C API 函数我们称之为 被调函数。 被调函数可以使当前线程让出。 (让出发生在被调函数是 lua_yieldk, 或传入 lua_callk 或 lua_pcallk 的函数调用了让出时。)
8.假设正在运行的线程在执行被调函数时让出。 当再次延续这条线程,它希望继续被调函数的运行。 然而,被调函数不可能返回到原函数中。 这是因为之前的让出操作破坏了 C 栈的栈帧。 作为替代品,Lua 调用那个作为被调函数参数给出的 延续函数 。 正如其名,延续函数将延续原函数的任务。
希望能帮到你,谢谢!
相关问答
Q1: 怎么用记事本编写java
使用记事本编写Java程序需要遵循以下步骤:
1. 打开记事本软件;
2. 在空白文件中输入Java代码;
3. 保存文件时,选择“所有文件”类型,并将文件后缀名改为“.java”;
4. 打开命令行窗口,切换至程序所在目录;
5. 使用Javac编译器编译该Java程序;
6. 若编译成功,使用Java虚拟机运行该程序。
下面简单介绍这些步骤的具体操作:
1. 打开记事本软件:点击开始菜单,在“所有程序”中找到“附件”文件夹,然后单击“记事本”。
2. 输入Java代码:根据自己的需要,输入相应的Java代码。例如,可以尝试输入以下代码:
public class HelloWorld {
public static void main(String[] args) {
System.out.println(Hello, world!);
}
}
上述代码是经典的Java程序,其功能是在控制台窗口输出“Hello, world!”字符串。
3. 保存文件:在记事本软件中,选择“文件”-“另存为”,然后在弹出的“另存为”对话框中,选中“所有文件”类型,并将文件名改为“HelloWorld.java”。注意,Java程序的文件名必须与公共类的类名相同。
4. 打开命令行窗口:点击开始菜单,在“所有程序”中找到“附件”文件夹,然后单击“命令提示符”。
5. 切换至程序所在目录:在命令行窗口中,使用cd命令切换至Java程序所在的目录。
6. 编译Java程序:在命令行窗口中,输入以下命令:
javac HelloWorld.java
上述命令会使用Javac编译器编译HelloWorld.java文件。若编译成功,则会在当前目录下生成一个名为“HelloWorld.class”的字节码文件。
7. 运行Java程序:在命令行窗口中,输入以下命令:
java HelloWorld
上述命令会使用Java虚拟机运行HelloWorld.class文件。程序将在控制台窗口中输出“Hello, world!”字符串。
以上就是使用记事本编写Java程序的基本步骤。记住,在编写Java程序时,要注意语法和缩进等细节问题。
Q2: 如何用java写这段代码?
import java.security.InvalidKeyException;import java.security.NoSuchAlgorithmException;import javax.crypto.BadPaddingException;import javax.crypto.Cipher;import javax.crypto.IllegalBlockSizeException;import javax.crypto.KeyGenerator;import javax.crypto.NoSuchPaddingException;import javax.crypto.SecretKey;public class JEncrytion{
public static void main(String[] argv) {
try{ KeyGenerator keygenerator = KeyGenerator.getInstance("DES"); SecretKey myDesKey = keygenerator.generateKey();
Cipher desCipher; // Create the cipher
desCipher = Cipher.getInstance("DES/ECB/PKCS5Padding");
// Initialize the cipher for encryption
desCipher.init(Cipher.ENCRYPT_MODE, myDesKey); //sensitive information
byte[] text = "No body can see me".getBytes();
System.out.println("Text [Byte Format] : " + text);
System.out.println("Text : " + new String(text));
// Encrypt the text
byte[] textEncrypted = desCipher.doFinal(text);
System.out.println("Text Encryted : " + textEncrypted);
// Initialize the same cipher for decryption
desCipher.init(Cipher.DECRYPT_MODE, myDesKey); // Decrypt the text
byte[] textDecrypted = desCipher.doFinal(textEncrypted);
System.out.println("Text Decryted : " + new String(textDecrypted));
}catch(NoSuchAlgorithmException e){
e.printStackTrace();
}catch(NoSuchPaddingException e){
e.printStackTrace();
}catch(InvalidKeyException e){
e.printStackTrace();
}catch(IllegalBlockSizeException e){
e.printStackTrace();
}catch(BadPaddingException e){
e.printStackTrace();
}
}
}
Q3: 用JAVA编写一个程序,要求如下:
实现代码如下编写一段代码Java:
Student类编写一段代码Java:
public class Student {
private String name;
private String sex;
private int age;
private double chinese;
private double math;
private double english;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public double getChinese() {
return chinese;
}
public void setChinese(double chinese) {
this.chinese = chinese;
}
public double getMath() {
return math;
}
public void setMath(double math) {
this.math = math;
}
public double getEnglish() {
return english;
}
public void setEnglish(double english) {
this.english = english;
}
}
-----------------------------------------------------------------
StudentTest类编写一段代码Java:(测试类)
import java.util.Scanner;
public class StudentTest {
public static void main(String[] args) {
Student student = new Student();
Scanner sc = new Scanner(System.in);
System.out.println("请输入姓名编写一段代码Java:");
student.setName(sc.next());
System.out.println("请输入性别:");
student.setSex(sc.next());
System.out.println("请输入年龄:");
student.setAge(sc.nextInt());
System.out.println("请输入语文成绩、数学成绩、英语成绩:");
student.setChinese(sc.nextDouble());
student.setMath(sc.nextDouble());
student.setEnglish(sc.nextDouble());
Double count = student.getChinese()+ student.getMath()+student.getEnglish();
System.out.println("姓名:"+student.getName()+" 性别:"+student.getSex()+" 年龄:"+student.getAge());
System.out.println("总分:"+count+" 平均分:"+count/3);
}
}
运行结果为:
编写一段代码Java的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于编写一段代码打开百度、编写一段代码Java的信息别忘了在本站进行查找喔。







