java 如何实现 获取实时股票数据

2024-04-29

1. java 如何实现 获取实时股票数据

一般有三种方式:
网页爬虫。采用爬虫去爬取目标网页的股票数据,去GitHub或技术论坛(如CSDN、51CTO)上找一下别人写的爬虫集成到项目中。
请求第三方API。会有专门的公司(例如百度API市场)提供股票数据,你只需要去购买他们的服务,使用他们提供的SDK,仿照demo开发实现即可。如下图所示:

3.请求第三方WebService接口。一般用的较多的网站是聚合数据,如下图所示:

java 如何实现 获取实时股票数据

2. 请问怎样用Java获取股票行情历史数据?新浪、搜狐、百度财经都可以......

public class StockConnection {	public static void main(String[] args) {		URL ur = null;		try {			//搜狐股票行情历史接口//			ur = new URL("http://q.stock.sohu.com/hisHq?code=cn_300228&start=20130930&end=20131231&stat=1&order=D&period=d&callback=historySearchHandler&rt=jsonp");			//新浪股票行情历史接口			ur = new URL("http://biz.finance.sina.com.cn/stock/flash_hq/kline_data.php?&rand=random(10000)&symbol=sh600000&end_date=20150809&begin_date=20000101&type=plain");			HttpURLConnection uc = (HttpURLConnection) ur.openConnection();			BufferedReader reader = new BufferedReader(new InputStreamReader(ur.openStream(),"GBK"));			String line;			while((line = reader.readLine()) != null){				System.out.println(line);			}		} catch (Exception e) {			// TODO Auto-generated catch block			e.printStackTrace();		}	}}

3. 用java语言可以实时获取股票数据。我想知道能否用c语言来读取新浪股票信息呢?具体怎么实現,谢谢。

void main()
{
float f(float);
float xpoint(float,float);
float root(float,float);
float x,x1,x2,f1,f2;
do
{
printf("输入x1,x2\n");
scanf("%f%f",&x1,&x2);
f1=f(x1);
f2=f(x2);
}while(f1>f2);
x=root(x1,x2);
printf("方程在1.5附近的根为%f\n",x);
}

用java语言可以实时获取股票数据。我想知道能否用c语言来读取新浪股票信息呢?具体怎么实現,谢谢。

4. java能调试上交所的股票数据接口么

你能拿到接口,通过接口验证就可以调试。

5. java中如何从文件中读取数据

分为读字节,读字符两种读法
◎◎◎FileInputStream 字节输入流读文件◎◎◎
public class Maintest {

	public static void main(String[] args) throws IOException {
		
		File f=new File("G:\\just for fun\\xiangwei.txt");
		
		FileInputStream fin=new FileInputStream(f);
		
		byte[] bs=new byte[1024];
		
		int count=0;		
		while((count=fin.read(bs))>0)				
		{

			String str=new String(bs,0,count);	//反复定义新变量:每一次都 重新定义新变量,接收新读取的数据

			System.out.println(str);		//反复输出新变量:每一次都 输出重新定义的新变量
		}
fin.close();
	}
}

◎◎◎FileReader 字符输入流读文件◎◎◎
public class Maintest {
	public static void main(String[] args) throws IOException {
			
		File f=new File("H:\\just for fun\\xiangwei.txt");
	
		FileReader fre=new FileReader(f);
		
		BufferedReader bre=new BufferedReader(fre);

		String str="";		
		while((str=bre.readLine())!=null)	//●判断最后一行不存在,为空
		{
			System.out.println(str);
		}
		bre.close();
                                 fre.close();

	}
	
}

java中如何从文件中读取数据

6. Java如何读取CPU的数据信息

java获取所有系统信息(CPU、内存、进程等)的代码:
import java.io.InputStreamReader; 
import java.io.LineNumberReader; 
import java.util.ArrayList; 
import java.util.List; 

import mytools.com.sun.management.OperatingSystemMXBean; 
import mytools.java.io.File; 
import mytools.java.lang.management.ManagementFactory; 
/** 
* 获取windows系统信息(CPU,内存,文件系统) 
* @author libing 
* 
*/ 

public class WindowsInfoUtil { 
    private static final int CPUTIME = 500; 
    private static final int PERCENT = 100; 
    private static final int FAULTLENGTH = 10; 

    public static void main(String[] args) { 
    System.out.println(getCpuRatioForWindows()); 
    System.out.println(getMemery()); 
    System.out.println(getDisk()); 
} 

//获取内存使用率 
public static String getMemery(){ 
  OperatingSystemMXBean osmxb = (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean(); 
  // 总的物理内存+虚拟内存 
  long totalvirtualMemory = osmxb.getTotalSwapSpaceSize(); 
  // 剩余的物理内存 
  long freePhysicalMemorySize = osmxb.getFreePhysicalMemorySize(); 
  Double compare=(Double)(1-freePhysicalMemorySize*1.0/totalvirtualMemory)*100; 
  String str="内存已使用:"+compare.intValue()+"%"; 
  return str; 
} 

//获取文件系统使用率 
public static List getDisk() { 
  // 操作系统 
  List list=new ArrayList(); 
  for (char c = 'A'; c <= 'Z'; c++) { 
   String dirName = c + ":/"; 
   File win = new File(dirName); 
         if(win.exists()){ 
          long total=(long)win.getTotalSpace(); 
          long free=(long)win.getFreeSpace(); 
          Double compare=(Double)(1-free*1.0/total)*100; 
          String str=c+":盘  已使用 "+compare.intValue()+"%"; 
          list.add(str); 
         } 
     } 
        return list; 
} 

//获得cpu使用率 
public static String getCpuRatioForWindows() { 
         try { 
             String procCmd = System.getenv("windir") + "\\system32\\wbem\\wmic.exe process get Caption,CommandLine,KernelModeTime,ReadOperationCount,ThreadCount,UserModeTime,WriteOperationCount";
             // 取进程信息 
             long[] c0 = readCpu(Runtime.getRuntime().exec(procCmd)); 
             Thread.sleep(CPUTIME); 
             long[] c1 = readCpu(Runtime.getRuntime().exec(procCmd)); 
             if (c0 != null && c1 != null) { 
                 long idletime = c1[0] - c0[0]; 
                 long busytime = c1[1] - c0[1]; 
                 return "CPU使用率:"+Double.valueOf(PERCENT * (busytime)*1.0 / (busytime + idletime)).intValue()+"%"; 
             } else { 
                 return "CPU使用率:"+0+"%"; 
             } 
         } catch (Exception ex) { 
             ex.printStackTrace(); 
             return "CPU使用率:"+0+"%"; 
         } 
     } 

//读取cpu相关信息 
    private static long[] readCpu(final Process proc) { 
        long[] retn = new long[2]; 
        try { 
            proc.getOutputStream().close(); 
            InputStreamReader ir = new InputStreamReader(proc.getInputStream()); 
            LineNumberReader input = new LineNumberReader(ir); 
            String line = input.readLine(); 
            if (line == null || line.length() < FAULTLENGTH) { 
                return null; 
            } 
            int capidx = line.indexOf("Caption"); 
            int cmdidx = line.indexOf("CommandLine"); 
            int rocidx = line.indexOf("ReadOperationCount"); 
            int umtidx = line.indexOf("UserModeTime"); 
            int kmtidx = line.indexOf("KernelModeTime"); 
            int wocidx = line.indexOf("WriteOperationCount"); 
            long idletime = 0; 
            long kneltime = 0; 
            long usertime = 0; 
            while ((line = input.readLine()) != null) { 
                if (line.length() < wocidx) { 
                    continue; 
                } 
                // 字段出现顺序:Caption,CommandLine,KernelModeTime,ReadOperationCount, 
                // ThreadCount,UserModeTime,WriteOperation 
                String caption =substring(line, capidx, cmdidx - 1).trim(); 
                String cmd = substring(line, cmdidx, kmtidx - 1).trim(); 
                if (cmd.indexOf("wmic.exe") >= 0) { 
                    continue; 
                } 
                String s1 = substring(line, kmtidx, rocidx - 1).trim(); 
                String s2 = substring(line, umtidx, wocidx - 1).trim(); 
                if (caption.equals("System Idle Process") || caption.equals("System")) { 
                    if (s1.length() > 0) 
                        idletime += Long.valueOf(s1).longValue(); 
                    if (s2.length() > 0) 
                        idletime += Long.valueOf(s2).longValue(); 
                    continue; 
                } 
                if (s1.length() > 0) 
                    kneltime += Long.valueOf(s1).longValue(); 
                if (s2.length() > 0) 
                    usertime += Long.valueOf(s2).longValue(); 
            } 
            retn[0] = idletime; 
            retn[1] = kneltime + usertime; 
            return retn; 
        } catch (Exception ex) { 
            ex.printStackTrace(); 
        } finally { 
            try { 
                proc.getInputStream().close(); 
            } catch (Exception e) { 
                e.printStackTrace(); 
            } 
        } 
        return null; 
    } 

    /** 
   * 由于String.subString对汉字处理存在问题(把一个汉字视为一个字节),因此在 包含汉字的字符串时存在隐患,现调整如下: 
   * @param src 要截取的字符串 
   * @param start_idx 开始坐标(包括该坐标) 
   * @param end_idx 截止坐标(包括该坐标) 
   * @return 
   */ 
    private static String substring(String src, int start_idx, int end_idx) { 
   byte[] b = src.getBytes(); 
   String tgt = ""; 
   for (int i = start_idx; i <= end_idx; i++) { 
    tgt += (char) b[i]; 
   } 
   return tgt; 
  } 
}

7. 有谁知道如何用java解析出新浪股票网友中动态更新的股价数据啊,希望能有些代码片断,说说原理。

2010-12-26 20:03:00楼主,你好,其实股市真的不是那么好长期生存下去的。为什么中国那么多股民,而赚钱的却寥寥无几?关键是心态和技术不过关。每年收益一次的是高管,每月都有收益的是员工,每天都有收益的是卖菜的,干活就有收益的是零工。 收益的大小与机会的多少成反比,与结算周期成正比。每天都有的机会收益一定很小,遍地都是的机会是留给收破烂的。 越大的资金,越高的收益,它们的机会其实不多。找到了或等到了那样的机会,它们其实只出动一次。本人除了带人操作股票,长期低价出售市面上主流的四款软件:大智慧机构版,操盘手乾坤版,同花顺大机构,航海家旗舰版。购买本人的软件,终身免费提供指导!有需要欢迎交流股票噢!05BA

有谁知道如何用java解析出新浪股票网友中动态更新的股价数据啊,希望能有些代码片断,说说原理。

8. java怎样将读取数据写入数据库

Java可以使用JDBC对数据库进行读写。JDBC访问一般分为如下流程:
一、加载JDBC驱动程序:   在连接数据库之前,首先要加载想要连接的数据库的驱动到JVM(Java虚拟机),   这通过java.lang.Class类的静态方法forName(String  className)实现。   
例如:  
try{   
//加载MySql的驱动类   
Class.forName("com.mysql.jdbc.Driver") ;   
}catch(ClassNotFoundException e){   
System.out.println("找不到驱动程序类 ,加载驱动失败!");   
e.printStackTrace() ;}   
成功加载后,会将Driver类的实例注册到DriverManager类中。   
二、提供JDBC连接的URL   连接URL定义了连接数据库时的协议、子协议、数据源标识。   
书写形式:协议:子协议:数据源标识   协议:在JDBC中总是以jdbc开始   
子协议:是桥连接的驱动程序或是数据库管理系统名称。
数据源标识:标记找到数据库来源的地址与连接端口。   
例如:(MySql的连接URL)   
jdbc:mysql://localhost:3306/test?useUnicode=true&characterEncoding=gbk
useUnicode=true:表示使用Unicode字符集。如果characterEncoding设置为  
gb2312或GBK,本参数必须设置为true 。characterEncoding=gbk:字符编码方式。   
三、创建数据库的连接   
要连接数据库,需要向java.sql.DriverManager请求并获得Connection对象,该对象就代表一个数据库的连接。   
使用DriverManager的getConnectin(String url,String username,String password )方法传入指定的欲连接的数据库的路径、数据库的用户名和密码来获得。   
例如://连接MySql数据库,用户名和密码都是root   
String url = "jdbc:mysql://localhost:3306/test" ;
String username = "root" ;   
String password = "root" ;   
try{   
Connection con =DriverManager.getConnection(url , username , password ) ;}catch(SQLException se){   
System.out.println("数据库连接失败!");se.printStackTrace() ;}   
四、创建一个Statement   要执行SQL语句,必须获得java.sql.Statement实例,Statement实例分为以下3种类型:   
1、执行静态SQL语句。通常通过Statement实例实现。   
2、执行动态SQL语句。通常通过PreparedStatement实例实现。   
3、执行数据库存储过程。通常通过CallableStatement实例实现。   
具体的实现方式:Statement stmt = con.createStatement() ;   
PreparedStatement pstmt = con.prepareStatement(sql) ;   
CallableStatement cstmt = con.prepareCall("{CALL demoSp(? , ?)}") ;   
五、执行SQL语句   
Statement接口提供了三种执行SQL语句的方法:executeQuery 、executeUpdate和execute  
1、ResultSet executeQuery(String sqlString):执行查询数据库的SQL语句,返回一个结果集(ResultSet)对象。   
2、int executeUpdate(String sqlString):用于执行INSERT、UPDATE或DELETE语句以及SQL DDL语句,如:CREATE TABLE和DROP TABLE等   
3、execute(sqlString):用于执行返回多个结果集、多个更新计数或二者组合的语句。具体实现的代码:   
ResultSet rs = stmt.executeQuery("SELECT * FROM ...") ;   
int rows = stmt.executeUpdate("INSERT INTO ...") ;   
boolean flag = stmt.execute(String sql) ;   
六、处理结果   两种情况:   1、执行更新返回的是本次操作影响到的记录数。   
2、执行查询返回的结果是一个ResultSet对象。   
ResultSet包含符合SQL语句中条件的所有行,并且它通过一套get方法提供了对这些行中数据的访问。   
使用结果集(ResultSet)对象的访问方法获取数据:   
while(rs.next()){   
String name = rs.getString("name") ;   
String pass = rs.getString(1); // 此方法比较高效(列是从左到右编号的,并且从列1开始)}   
七、关闭JDBC对象操作完成以后要把所有使用的JDBC对象全都关闭,以释放JDBC资源,关闭顺序和声明顺序相反:   
1、关闭记录集   
2、关闭声明   
3、关闭连接对象   
if(rs != null){   // 关闭记录集try{rs.close() ;}catch(SQLException e){e.printStackTrace() ;}}   
if(stmt != null){   // 关闭声明try{stmt.close() ;}catch(SQLException e){e.printStackTrace() ;}}   
if(conn != null){  // 关闭连接对象try{conn.close() ;}catch(SQLException e){e.printStackTrace() ;}}

扩展资料
样例
package first;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
public class  lianjie {
public static void main(String[] args) {
Runnable runnable = new Runnable() {  
public void run() {  
//声明Connection对象
Connection con;
//驱动程序名
String driver1 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//URL指向要访问的数据库名
String url1 = "jdbc:sqlserver://IP地址和端口号;DateBaseName=数据库名";
//MySQL配置时的用户名
String user1 = "user";
//MySQL配置时的密码
String password1 = "user";
//声明Connection对象
Connection con1;
//驱动程序名
String driver2 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
//URL指向要访问的数据库名
String url2 = "jdbc:sqlserver://IP地址和端口号;DateBaseName=数据库名";
//MySQL配置时的用户名
String user2 = "user";
//MySQL配置时的密码
String password2 = "user";
//遍历查询结果集
try {
//加载驱动程序
Class.forName(driver1);
//1.getConnection()方法,连接MySQL数据库!!
con = DriverManager.getConnection(url1,user1,password1);
if(!con.isClosed())
System.out.println("成功连接到数据库!");
try {
//加载驱动程序
Class.forName(driver2);
//1.getConnection()方法,连接MySQL数据库!!
con1 = DriverManager.getConnection(url2,user2,password2);
if(!con1.isClosed())
System.out.println("成功连接到数据库!");
//2.创建statement类对象,用来执行SQL语句!!
Statement statement = con.createStatement();
//要执行的SQL语句
String sql = "use 数据库名 select * from 表名";
//3.ResultSet类,用来存放获取的结果集!!
ResultSet rs = statement.executeQuery(sql);
//要执行的SQL语句
String sql1 = "use tiantiana insert into Table_1(tiantian,qiqi,yuyu)VALUES(?,?,?)";
//3.ResultSet类,用来存放获取的结果集!!
PreparedStatement pst = con1.prepareStatement(sql1);                    
System.out.println ("tiantian"+"/t"+"qiqi"+"/t"+"yuyu");
while(rs.next()){                       
System.out.print(rs.getString(1));
System.out.print(rs.getString(2));
System.out.print(rs.getString(3));
pst.setString(1,rs.getString(1));
pst.setString(2,rs.getString(2));
pst.setString(3,rs.getString(3));
pst.executeUpdate();                         
}
pst.close();
rs.close();
//2.创建statement类对象,用来执行SQL语句!!
Statement statement1 = con.createStatement();
//要执行的SQL语句
String sql2 = "use 数据库名 select * from 表名";
//3.ResultSet类,用来存放获取的结果集!!
ResultSet rs1 = statement1.executeQuery(sql2);
//要执行的SQL语句
String sql3 = "use tiantiana insert into Table_2(tiantian1,qiqi1,yuyu1)VALUES(?,?,?)";
//3.ResultSet类,用来存放获取的结果集!!
PreparedStatement pst1 = con1.prepareStatement(sql3);
System.out.println ("tiantian1"+"/t"+"qiqi1"+"/t"+"yuyu1");
while(rs1.next()){
System.out.print(rs1.getString(1));
System.out.print(rs1.getString(2));
System.out.print(rs1.getString(3));
pst1.setString(1,rs1.getString(1));
pst1.setString(2,rs1.getString(2));
pst1.setString(3,rs1.getString(3));
pst1.executeUpdate();
}
//关闭链接
rs1.close();
pst.close();
con1.close();
con.close();
} catch(ClassNotFoundException e) {   
//数据库驱动类异常处理
System.out.println("对不起,找不到驱动程序!");   
e.printStackTrace();   
} catch(SQLException e) {
//数据库连接失败异常处理
e.printStackTrace();  
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("数据库数据成功获取!!");
}
} catch(ClassNotFoundException e) {   
//数据库驱动类异常处理
System.out.println("对不起,找不到驱动程序!");   
e.printStackTrace();   
} catch(SQLException e) {
//数据库连接失败异常处理
e.printStackTrace();  
}catch (Exception e) {
// TODO: handle exception
e.printStackTrace();
}finally{
System.out.println("数据库数据成功获取!!");
}   
}  
};  
ScheduledExecutorService service = Executors  
.newSingleThreadScheduledExecutor();  
// 第二个参数为首次执行的延时时间,第三个参数为定时执行的间隔时间  
service.scheduleAtFixedRate(runnable, 10, 60*2, TimeUnit.SECONDS); 
}
}
参考资料 百度百科——Java数据库连接
最新文章
热门文章
推荐阅读