精华内容
下载资源
问答
  • Java的输入输出引导语:输入输出指的是产品输入输出视频信号的端口,比较常见的是S端子和复合视频端口。 那么Java的输入输出又是怎样的呢,下面由百分网小编带大家看一下吧!1Java输入输出流所有的`程序语言都提?copy...

    Java的输入输出

    引导语:输入输出指的是产品输入输出视频信号的端口,比较常见的是S端子和复合视频端口。 那么Java的输入输出又是怎样的呢,下面由百分网小编带大家看一下吧!

    1Java输入输出流

    所有的`程序语言都提?copy;与本机文件系统交互的方式;Java也不例外。我们将看看Java是怎样处理标准文件输入输出的(包括stdin,stout,stderr)。当你在网络上开发小程序时,你必须注意直接文件输入输出是不安全因素的关键。大多数用户设置他们的浏览器,可让你自由的访问他们的文件系统,但有?copy;不让你访问。当然,如果你开发你内部的应用程序,你也许需要直接访问文件。标准输入输出Unix的用户,或其他基于命令行系统的用户(如DOS),都知道标准输入输出的含义。标准输入文件是键盘,标准输出文件是你的终端屏幕。标准错误输出文件也指向屏幕,如果有必要,它也可以指向另一个文件以便和正常输出区分。

    系统类Java通过系统类达到访问标准输入输出的功能。上面提到的三个文件在这个系统类中实现:StdinSystem.in作为InputStream类的一个实例来实现stdin,你可以使用read()和skip(longn)两个成员函数。read()让你从输入中读一个字节,skip(longn)让你在输入中跳过n个字节。

    StoutSystem.out作为PrintStream来实现stdout,你可以使用print()和println()两个成员函数。这两个函数支持Java的任意基本类型作为参数。

    StderrSystem.err同stdout一样实现stderr。象System.out一样,你可以访问PrintStream成员函数。

    2标准输入输出例子

    这里有一个例子,功能象Unix里的cat或type:importjava.io.*classmyCat{publicvoidmain(Stringargs[])throwsIOException{intb;intcount=0;while((b=System.in.read())!=

    -1){count++;System.out.print((char)b);}System.out.println();

    //blanklineSystem.err.println(\"counted\"+count+\"totalbytes.\");}}

    3普通输入输出类

    除了基本的键盘输入和屏幕输出外,我们还需要联系文件的输入输出。我们将学习下面几个类:lFileInputStreamlDataInputStreamlFileOutputStreamlDataOutputStream

    作为参考,再列出一?copy;特定应用的类:lPipedInputStreamlBufferedInputStreamlPushBackInputStreamlStreamTokenizerlPipedOutputStreamlBufferedOutputStreamlRandomAccessFile

    我们不在此讨论这?copy;类,但你可以在JAVA_HOME/src/java/io目录里查看每个类的成员函数定义。

    【Java的输入输出】相关文章:

    展开全文
  • [Java教程]阻止函数源码在控制台输出0 2014-05-20 03:00:05这是一个很贱技能,我在谷歌控制台源码里看到。相信大家都知道,在控制台里只输入函数名,不输入 () 然后按回车,就可以输出源码。都不会陌生吧,这也...

    [Java教程]阻止函数源码在控制台输出

    0 2014-05-20 03:00:05

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    这是一个很贱的技能,我在谷歌控制台源码里看到的。

    相信大家都知道,在控制台里只输入函数名,不输入 () 然后按回车,就可以输出源码。

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    都不会陌生吧,这也有助于我们调试,是个很棒的技巧。

    不过系统内置的就会输出  function alert() { [native code] }

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    比如这个。

    不过当我们输入 dir 的时候却看到:

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    WTF,Command Line API ?

    难道也是系统的?

    以前我以为是,后来发现其实不是,而是一个js处理输出的,防止输出源码的方法。

    让我们来找到他的源代码吧。

    在控制台输入 debugger 然后按回车键,然后按2次F11,好,我们进入到了控制台运行环境了。

    在第 1253-1273 行,就是这个函数了。有兴趣的可以仔细研究下,这里就不深入分析了,我们进入下一个环节。

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    其实我们一句话就可以阻止任何函数输出源码了。Function.prototype.toString = function toString(){ return "function " + (this.name || "anonymous") + "() { [native code] }";}

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    是不是简单方便,一次性根除所有麻烦。

    这只是个障眼法而已,只是忽悠小菜用的,没任何实际用途。

    当然,你可以让它随机输出一个招聘信息,或者图文信息,装装逼还是不错的。

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    好了,今天分享完毕,一个小东西,玩玩而已。。

    bc91bb04e6e9c61e24c974e4440db8f2.gif

    本文网址:http://www.shaoqun.com/a/91672.html

    *特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们:admin@shaoqun.com。

    函数

    0

    展开全文
  • 机器学习:神经网络导论更详细讲解和代码调试演示过程,请参看视频Linux kernel Hacker, 从零构建自己内核理解本节需要一些汇编语言知识,如果你汇编不熟,那么照着我代码敲一遍,编译运行后看输出结果就可以...

    如果你对机器学习感兴趣,请参看一下链接:

    机器学习:神经网络导论

    更详细的讲解和代码调试演示过程,请参看视频

    Linux kernel Hacker, 从零构建自己的内核

    理解本节需要一些汇编语言知识,如果你汇编不熟,那么照着我的代码敲一遍,编译运行后看输出结果就可以了。

    操作系统作为一个计算平台,最重要的功能是支持不同的程序在其之上运行。为此,作为系统,它需要提供一系列接口给应用程序调用,这些接口,我们称之为系统API.

    本节的功能,就是从系统内核导出一个接口,最为API,让外部程序调用。我们导出的这个API的功能,是让外部程序能在控制台窗口上显示字符。我们现在内核编写这个接口的功能,然后再把接口开放出来。在内核的C语言部分添加如下代码(write_vga_desktop.c):

    struct CONSOLE {

    struct SHEET *sht;

    int cur_x, cur_y, cur_c;

    char s[2];

    };

    void cons_putchar(char c, char move) {

    set_cursor(shtctl, g_Console.sht, g_Console.cur_x, g_Console.cur_y, COL8_000000);\

    g_Console.s[0] = c;

    g_Console.s[1] = 0;

    showString(shtctl, g_Console.sht, g_Console.cur_x, g_Console.cur_y, COL8_FFFFFF, g_Console.s);

    g_Console.cur_x += 8;

    }

    CONSOLE 结构体用来对应我们的控制台窗口,sht 对应的是控制台窗口的图层,cur_x, cur_y 表示当前字符所在坐标,cur_c表示当前光标颜色,s[2]用来存储当前在控制台上显示的最好一个字符。

    cons_putchar 就是我们想要导出的API接口,它的接收两个参数,第一个是要显示的字符,第二个是光标要移动的次数。如果我们想在当前控制台窗口上显示一个字符'f', 那么可以通过cons_putchar('f', 1) 来实现。

    有了接口后,要想该接口能被外部程序调用,我们需要实现一个机制,那就是获得外部程序调用该接口时传入的参数,同时该接口执行完毕后,要从内核返回调用程序,在内核的汇编代码部分,添加一下代码(kernel.asm):

    asm_cons_putchar:

    pop ax

    push 1

    and eax, 0xff

    push eax

    call cons_putchar

    add esp, 8

    pop ax

    push 19*8

    push eax

    retf

    外部程序想要使用cons_putchar 功能时,它不能直接调用cons_putchar, 而是要调用上面asm_cons_putchar , 应用程序把想要输出到控制台的字符压入堆栈,然后再调用asm_cons_putchar, 当asm_cons_putchar 被执行时,它先从堆栈上把外部程序压入堆栈的字符拿到,这也是第一句代码pop ax 的目的,然后先把数值 1 压入堆栈,这个1 对应于cons_putchar 接口的第二个参数move, 然后再把要显示的字符压入堆栈。

    你需要知道的是,C语言的参数传递规则是参数从右到左依次压入堆栈,于是如果我们要调用 cons_putchar('f', 1), 那么在汇编代码中,我们先要把数值1压入堆栈,接着再压入字符'f',然后再调用cons_putchar.

    当执行完cons_putchar 函数后,需要把压入堆栈的两个参数抛弃,这也是指令add esp, 8 的作用,esp 寄存器指向堆栈的入口地址,堆栈的增长方向是由高地址向低地址演示, 假设当前esp 的值是10, 如果压入两个4字节的变量,那么esp的值就变成2 = 10 - 8; 当压入的变量不再需要后,让esp 加上8 就可以了。

    当API调用完毕后,程序需要从内核返回到应用程序,上面代码中pop ax 它的作用是将应用程序下一条指令的地址拿到,19*8表示的是应用程序代码所对应的全局描述符下标,在上一节我们看到,应用程序的代码从磁盘加载到内存中,然后内核会使用一个全局描述符去指向这段内存,这个描述符的下标就是19,乘以8的作用是将下标值左移三位。

    现在我们面临一个问题是,应用程序如何调用asm_cons_putchar函数,因为应用程序的代码是单独编译的,所以应用程序不能直接通过call asm_cons_putchar来调用该函数。由此,我们必须想办法把asm_cons_putchar在内存中的地址给导出来,应用程序要调用该函数时,直接跳转到该地址就可以了。

    nasm 编译器给我们提供了一个很好的机制,能帮我们导出代码中每个函数在编译后对应于内存中的所做地址,在kernel.asm文件的最上方添加如下语句:

    [map symbols kernel.map]

    当内核编译后,在本地目录我们会发现新增一个文件叫kernel.map,打开这个文件就可以看到每个函数对应的内存地址,在我机器上,得到的kernel.map部分内容如下:

    Real Virtual Name

    00008344 00008344 LABEL_SEG_CODE32

    ....

    00009FC5 00009FC5 cons_putchar

    0000A066 0000A066 cons_newline

    ...

    0000FF40 0000FF40 asm_cons_putchar

    上面信息的意思是,asm_cons_putchar 函数的内存地址为0x0000FF40。由此,如果应用程序如果想调用cons_putchar, 直接跳到0x0000FF40这个地址就可以了。但在保护模式下,程序跳转的方式必须使用相对寻址,也就是先确定内存所对应的全局描述符,得到描述符对应的入口地址,然后你再提供偏移地址,把这些信息提交给CPU,CPU就会自动跳转到对应地址。

    asm_cons_putchar 函数是内核代码的一部分,内核代码的入口地址对应的是LABEL_SEG_CODE32,所以asm_cons_putchar 相对于内核代码段的偏移就是

    0x7BFC = 0xFF40 - 0x8344, 同时内核代码所对应的全局描述符下标是1,所以要想执行asm_cons_putchar函数,应用程序必须使用指令:

    jmp dword 1*8:0x7BFC。

    由此我们接下来看看应用程序的代码实现:

    [SECTION .s32]

    BITS 32

    mov ax, fin

    push ax

    mov ax, 'f'

    push ax

    jmp dword 1*8:0x7BFC

    fin:

    jmp fin

    jmp dowrd 1*8:0x7BFC 作用是调用内核接口asm_cons_putchar, 调用结束后返回的下一条语句是 jmp fin, 所以开头的指令:

    mov ax, fin

    push ax

    作用是把API调用结束后,应用程序下一条语句的地址压入堆栈,以便内核执行完API后,直接返回到应用程序。

    mov ax, 'f'

    push ax

    这两条语句的作用是,把要显示到控制台的字符通过堆栈传递给内核API, 最后直接跳转到asm_cons_putchar函数的地址,等API执行完毕后,返回应用程序,接着执行语句 jmp fin , 由此应用程序进入死循环。

    上面代码编译运行后,当系统启动后,将输入焦点切换到命令行控制台,输入命令hlt, 你会看到控制台上显示出字符'f', 然后进入死循环,执行结果如下图所示:

    f0807eb2661f800cbb99416b83def33e.png

    这里写图片描述

    更详细的讲解和代码演示过程,请参看视频。

    更多技术信息,包括操作系统,编译器,面试算法,机器学习,人工智能,请关照我的公众号:

    这里写图片描述

    展开全文
  • ABAP系统有个函数名叫ZDIS_GET_UPSELL_MATERIALS,输入一个customer ID和product ID,会输出为这对客户和product组合维护一组Upsell product ID和描述信息。 测试如下: 下面是使用Java消费该函数的代码: ...

    我的ABAP系统有个函数名叫ZDIS_GET_UPSELL_MATERIALS,输入一个customer ID和product ID,会输出为这对客户和product组合维护的一组Upsell product ID和描述信息。


    测试如下:
    下面是使用Java消费该函数的代码:

    package jco;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.util.Properties;
    import com.sap.conn.jco.JCoDestination;
    import com.sap.conn.jco.JCoDestinationManager;
    import com.sap.conn.jco.JCoException;
    import com.sap.conn.jco.JCoFunction;
    import com.sap.conn.jco.JCoParameterList;
    import com.sap.conn.jco.JCoRepository;
    import com.sap.conn.jco.JCoTable;
    import com.sap.conn.jco.ext.DestinationDataProvider;
    
    /**
     * basic examples for Java to ABAP communication  
     * See help: https://help.sap.com/saphelp_nwpi711/helpdata/en/48/70792c872c1b5ae10000000a42189c/frameset.htm
     */
    public class StepByStepClient
    {
    	static String DESTINATION_NAME = "ABAP_AS_WITHOUT_POOL";
    	static public final String ABAP_DURATION = "abapLayerDuration";
    	static public final String UPSELL_PRODUCT = "upsellProducts";
    	static public final String PRODUCT_ID = "productID";
    	static public final String PRODUCT_TEXT = "productText";
    	
        static private Properties prepareProperty(){
            Properties connectProperties = new Properties();
            connectProperties.setProperty(DestinationDataProvider.JCO_ASHOST, "your abap system host name");
            connectProperties.setProperty(DestinationDataProvider.JCO_SYSNR,  "00");
            connectProperties.setProperty(DestinationDataProvider.JCO_CLIENT, "111");
            connectProperties.setProperty(DestinationDataProvider.JCO_USER,   "WANGJER");
            connectProperties.setProperty(DestinationDataProvider.JCO_PASSWD, "your password");
            connectProperties.setProperty(DestinationDataProvider.JCO_LANG,   "en");
            createDestinationDataFile(DESTINATION_NAME, connectProperties);
            connectProperties.setProperty(DestinationDataProvider.JCO_POOL_CAPACITY, "3");
            connectProperties.setProperty(DestinationDataProvider.JCO_PEAK_LIMIT,    "10");
            createDestinationDataFile(DESTINATION_NAME, connectProperties);
            return connectProperties;
        }
        
        static public void main(String[] arg) {
        	createDestinationDataFile(DESTINATION_NAME, prepareProperty());
        	
        	JCoDestination destination = null;
    		try {
    			destination = JCoDestinationManager.getDestination(DESTINATION_NAME);
    			JCoRepository repo = destination.getRepository();
        		JCoFunction stfcConnection = repo.getFunction("ZDIS_GET_UPSELL_MATERIALS");
    
        		JCoParameterList imports = stfcConnection.getImportParameterList();
            
        		String customerID = "1000040";
        		String materialID = "11";
    
        		imports.setValue("IV_CUSTOMER_ID", customerID);
        		imports.setValue("IV_MATERIAL_ID", materialID);
    
        		stfcConnection.execute(destination);
            
        		JCoParameterList exports = stfcConnection.getExportParameterList();
        		
        		// int result = exports.getInt("EV_RESULT");
        	    int abapDuration = exports.getInt("EV_DURATION");
        	    
        	    StringBuilder sb = new StringBuilder();
        	    sb.append("{ \"" + ABAP_DURATION + "\": " + abapDuration + ",");
        	    
        	    sb.append("\"" + UPSELL_PRODUCT + "\":[");
        	    
        	    JCoTable codes = exports.getTable("ET_MATERIALS");
        	    
        	    int row = codes.getNumRows();
        	    System.out.println("Total rows: " + row);
        	    
        	    System.out.println("ABAP duration: " + abapDuration);
        	    
        	    for( int i = 0; i < row; i++){
        	    	codes.setRow(i);
                    System.out.println(codes.getString("MATERIAL_ID") + '\t' + codes.getString("MATERIAL_TEXT"));
                    sb.append("{\"" + PRODUCT_ID + "\":" + codes.getString("MATERIAL_ID") + ","
                    		+ "\"" + PRODUCT_TEXT + "\":\"" + codes.getString("MATERIAL_TEXT") + "\"");
                    if( i < row - 1){
                    	sb.append("},");
                    }
                    else{
                    	sb.append("}");
                    }
        	    }
        	    sb.append("]}");
        	    
        	    System.out.println("Final json: " + sb.toString());
        	    
    		} catch (JCoException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
            
        }
        
        static private void createDestinationDataFile(String destinationName, Properties connectProperties)
        {
            File destCfg = new File(destinationName+".jcoDestination");
            try
            {
                FileOutputStream fos = new FileOutputStream(destCfg, false);
                connectProperties.store(fos, "for tests only !");
                fos.close();
            }
            catch (Exception e)
            {
                throw new RuntimeException("Unable to create the destination files", e);
            }
        }
    }
    

    为简单起见没有使用Google的gson库进行Json的序列化。
    执行结果:


    要获取更多Jerry的原创文章,请关注公众号"汪子熙":

    展开全文
  • 翁凯说:java的强大是因为类库的强大 C/C++强大是因为函数库在程序中用到系统提供的标准函数库中的输入输出函数时应在程序的开头写上一行:#include"stdio.h"或者是#include,这样才能调用库函数常用到printf()和...
  • java系统API函数

    2020-09-27 21:32:06
    toString方法 public String toString() { return getClass().getName() + "@" + Integer.toHexString(hashCode()... hashCode():获取系统随机十进制数字 Integer.toHexString():十进制转十六进制 对于类
  • 函数函数代表这一个功能模块一 函数特征1 它只定义一次,但可能被执行或者调用任意次数2 函数是不会主动运行,只有被调用时才会执行3 函数的分类:系统函数、自定义函数系统函数:document.write();...
  • /*  * Write a function so that the input string is reversed. Like:  * Input = “guangzhou”, output = “uohzgnaug” */ ...import java.util.Scanner; public class StringTest { publ
  • 实现一个功能:输出当前时间和今天是周几 程序难度: 简单 程序注意: 一:导入包 import java.util.*; 二:调用函数获取系统时间int day=rightNow.get(rightNow.DAY_OF_WEEK);Date now=new Date(); */ ...
  • 程序机器级表示程序编码编译编译时,提高优化级别,可以提高运行速度,但是编译时间会更长,对代码调试会更困难编译过程graph LRA(C预处理器扩展源代码)-->B(编译器产生两个文件汇编代码)B-->CC(汇编器将汇编...
  • Java的文件(读写)输入输出1、流:它是通过缓冲机制将数据从生产者(如键盘、磁盘文件、内存或其他设备)传送到接受该数据的消费者(如屏幕、文件或者内存等)的这一过程的抽象。2、有关的Java包:Java.io包中包括许多类...
  • 这句话用法是调用系统类 System 中标准输出对象 out 中方法 println()。那么什么是方法呢?Java方法是语句集合,它们在一起执行一个功能。方法是解决一类问题步骤有序组合方法包含于类或对象中方法在程....
  • 1.-----------------------------------------得到系统当前时间:java.util.Date dt=new java.util.Date();System.out.print(dt); //输出结果是:Wed Aug 10 11:29:11 CST 2005SimpleDateFormat sdf=new ...
  • C:printf是C编译系统提供函数库中的输出函数,\n是换行符。 Java:System.out.printf输出;System.out.println换行并输出。
  • 一个Java 日期时间操作函数集 DateUtil.java代码,用于时间和日期操作的工具类,DateUtil类包含了标准的时间和日期格式,以及这些格式在字符串及日期之间转换的方法,格式化后的系统当前时间,如果有异常产生,返回...
  • 提示:这是CG系统上面测试题,类名使用看学校而定。 1、Java编程输出判断可逆素数加粗样式 【问题描述】若将某一素数各位数字顺序颠倒后得到数仍是素数,则此素数称为可逆素数。编写一个判断某数是否可逆...
  • 常用系统类常用的系统类:JavaApplet、字符串类、输入输出流类、数学函数类、日期类以及向量类等。1.Applet类(1)概念:Applet对象只是作为浏览器窗口中运行的一个线程,Applet类中声明了与生命周期相关的4个方法:...
  • 常用内置方法date 返回一个java.util.Date类型的变量,如 date() 返回一个当前时间(对应java的java.util.Date); ${date( "2011-1-1" , "yyyy-MM-dd" )} 返回指定日期print 打印一个对象 print(user.name);println ...
  • Java常用类和函数(持续更新)包java自带outjava.util 包 java自带 java.util java自带 System 系统 方法 作用 out 标准输出设备 in 标准输入设备 currentTimeMillis 返回从 GMT 1970.01.01 00:00:00 ...
  • 操作系统函数允许程序员对控制台屏幕上的输出进行...操作系统函数是针对特定操作系统量身定制的,所以使用它们的程序只能在它们被写入的系统上运行。这里描述的函数可以与 Windows 2000 以及更高版本的操作系统配合...
  • 系统的助手函数

    2017-05-27 16:11:00
    系统的助手函数大致分为下面几个类型: 加载和实例化 数据操作 日志和调试 响应输出 其它 加载和实例化 import:导入所需的类库 同java的Import 本函数有缓存功能 参数: 名称 描述 默认值 class 类库命名空间字符串...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 950
精华内容 380
关键字:

java的系统输出函数

java 订阅