精华内容
下载资源
问答
  • 信息获取的一般方式
    千次阅读
    2020-10-08 21:51:34

    一、通过<open-data>组件:

     
    <open-data type="userAvatarUrl"></open-data>
    <open-data type="userNickName"></open-data>
    <open-data type="userCountry"></open-data>
    <open-data type="userCity"></open-data>

    优点: 不需要用户授权可以直接获取本人的微信头像名称等信息

    缺点: 只能获取自己的信息,不能获取其他人的;同时获取到的信息只能够用于前端显示,js获取不到

     

    二、通过wx.getUserInfo()函数:

     
    wx.getUserInfo({
        success: (res)=>{
            console.log(res)
        }
    })

    优点: 可以获取到用户的信息,通过js操作

    缺点: 微信小程序为了优化用户体验,调用此API时如果用户未授权不再弹出申请授权的弹窗,所以调用前必须要通过wx.getSetting 判断用户的授权状态,同时如果未授权还需要依赖第三种方式获取授权。

     

    三、通过 <button open-type="getUserInfo" bindgetuserinfo="getUserInfo"></button> 获取

    <button open-type="getUserInfo" bindgetuserinfo="getUserInfo"></button>
    getUserInfo(e){
        console.log(e)
    }
    优点: 这是微信小程序推荐的用法,可以直接唤起授权弹窗(唯一的方式),返回的e中就包含了获取到的用户信息

    缺点: 相对麻烦一点

    更多相关内容
  • 下一跳——路由器转发到达目的网段的数据包所使用的下一跳地址 这些信息(目标网络、掩码、出接口、下一跳)标识了目的网段、明确了转发IP报文的路径 路由信息获取方式: 直连路由、静态路由(手动配置)、动态路由...

    目录:

    • 路由概述
    • 静态路由
    • 动态路由
    • 路由高级特性

    路由基本概念

    网关以及中间节点(路由器)根据收到的IP报文其目的地址选择一条合适的路径,并将报文转发到下一个路由器。在路径中的最后一跳路由器二层寻址将报文转发给目的主机。这个过程被称为路由转发。

    IP地址——32个二进制组成(32bit)

                            点分十进制

    IPv4地址范围:0.0.0.0~255.255.255.255

    IP作用:

            IP地址在网络中用于标识一个节点(或者网络设备的接口)

            IP地址用于IP报文在网络中的寻址

    通信间网段

            保证不同网段间相互通信

            路由——指导报文转发的路径信息

                          通过路由可以确认转发IP报文的路径

            常见路由设备:路由器(每个路由器维护着一张路由表)

            路由表——保存路由信息

    包含:

            目标网络——标识目的网段

            掩码——与目的地址共同标识yi个网段

            出接口——数据包被路由接受后离开本路由器的接口

            下一跳——路由器转发到达目的网段的数据包所使用的下一跳地址

    这些信息(目标网络、掩码、出接口、下一跳)标识了目的网段、明确了转发IP报文的路径

    路由信息获取方式:

            直连路由、静态路由(手动配置)、动态路由(协议——占用链路带宽)

    最优路由

            去往网段一样

            ——1、比较优先级

                    pre(路由优先级)——优先级越小越优

            ——2、优先级一样比较开销

                    cost(路由开销)——开销值越小越优

    常见默认值

    路由来源

    路由类型

    默认优先级

    直连

    直连路由

    0

    静态

    静态路由

    60

    动态路由

    OSPF内部路由

    OSPF外部路由

    10

    150

    转发数据时 

            路由匹配原则——最长匹配原则

    静态路由

    比如:

    目标网络号,掩码,下一跳

    缺省路由

            ——静态路由里一种特殊的路由,也叫做默认路由,可以匹配所有数据报文

                    目的地址、掩码全为0(表现形式0.0.0.0/0)

    动态路由

            协议:OSPF、RIP、IS-IS、BGP等等

    OSPF动态路由协议

            ——内部路由

            ——外部路由

    同网段下,先比较优先级,优先级越小越优,当优先级一样时比较度量值,度量值(cost)越小越优

    路由表小结

           当路由器从多种不同的途径获知到达同一个目的网段的路由(这些路由的目的网络地址及网络掩码均相同)时,会选择路由优先级值最小的路由;如果这些路由学习自相同的路由协议,则优选度量值最优的。总之,最优的路由加入路由表。

           当路由器收到一个数据包时,会在自己的路由表中查询数据包的目的IP地址。如果能够找到匹配的路由表项,则依据表项所指示的出接口及下一跳来转发数据〉如果没有匹配的表项,则丢弃该数据包

           路由器的行为是逐跳的,数据包从源到目的地沿路径每个路由器都必须有关于目标网段的路由否则就会造成丢包。

    数据通信往往是双向的,因此要关注流量的往返(往返路由)

    特殊概念:

            等价路由、浮动路由

    路由聚合、路由汇总

            原因:子网划分、VLSM解决了地址空间浪费的问题,但使得路由表中的路由条目增加

            功能:为减少路由条目数量可以使用路由汇总

    汇总引发的问题:

    一、环路——配置错误(最终TTL为0丢弃)

    解决方法:加一条垃圾接口(NULL0接口)

    二、汇总不精确——范围太大导致其他ping不通

    解决方法:精确汇总(网络号位数增加)

    展开全文
  • Android获取屏幕信息的几种方式

    千次阅读 2019-12-27 15:22:58
    //获取屏幕信息的几种方式一: DisplayMetrics metrics = new DisplayMetrics(); WindowManager manager = (WindowManager) this.getSystemService(Service.WINDOW_SERVICE); if (manager != null) ...

    方式一

     //获取屏幕信息的几种方式一:
            DisplayMetrics metrics = new DisplayMetrics();
            WindowManager manager = (WindowManager) this.getSystemService(Service.WINDOW_SERVICE);
            if (manager != null) {
                manager.getDefaultDisplay().getMetrics(metrics);
            }
    

    方式二

      ///
            //获取屏幕信息的几种方式二:
            WindowManager windowManager = getWindowManager();
            DisplayMetrics metrics2=new DisplayMetrics();
            windowManager.getDefaultDisplay().getMetrics(metrics2);
    
    

    方式三

      //获取屏幕信息的几种方式三:
            Resources resources = getResources();
            DisplayMetrics displayMetrics = resources.getDisplayMetrics();
    
    

    三种方式获取屏幕相关信息

            float density = metrics.density;
            Log.e("zyb", "方式1:==density:::::::" + density);
            Log.e("zyb", "方式2:==density:::::::" + metrics2.density);
            Log.e("zyb", "方式3:==density:::::::" + displayMetrics.density);
    //  屏幕的绝对宽度(像素)
            int screenWidth = metrics.widthPixels;
            Log.e("zyb", "方式1:==screenWidth:::::::" + screenWidth);
            Log.e("zyb", "方式2:==screenWidth:::::::" + metrics2.widthPixels);
            Log.e("zyb", "方式3:==screenWidth:::::::" + displayMetrics.widthPixels);
    // 屏幕的绝对高度(像素)
            int screenHeight = metrics.heightPixels;
            Log.e("zyb", "方式1:==screenHeight:::::::" + screenHeight);
            Log.e("zyb", "方式2:==screenHeight:::::::" + metrics2.heightPixels);
            Log.e("zyb", "方式3:==screenHeight:::::::" + displayMetrics.heightPixels);
            //  屏幕上字体显示的缩放因子,一般与density值相同,除非在程序运行中,用户根据喜好调整了显示字体的大小时,会有微小的增加。
            float scaledDensity = metrics.scaledDensity;
            Log.e("zyb", "方式1:==scaledDensity:::::::" + scaledDensity);
            Log.e("zyb", "方式2:==scaledDensity:::::::" + metrics2.scaledDensity);
            Log.e("zyb", "方式3:==scaledDensity:::::::" + displayMetrics.scaledDensity);
    // X轴方向上屏幕每英寸的物理像素数。
            float xdpi = metrics.xdpi;
            Log.e("zyb", "方式1:==xdpi:::::::" + xdpi);
            Log.e("zyb", "方式2:==xdpi:::::::" + metrics2.xdpi);
            Log.e("zyb", "方式3:==xdpi:::::::" + displayMetrics.xdpi);
    // Y轴方向上屏幕每英寸的物理像素数。
            float ydpi = metrics.ydpi;
            Log.e("zyb", "方式1:==ydpi:::::::" + ydpi);
            Log.e("zyb", "方式2:==ydpi:::::::" + metrics2.ydpi);
            Log.e("zyb", "方式3:==ydpi:::::::" + displayMetrics.ydpi);
    // 每英寸的像素点数,屏幕密度的另一种表示。densityDpi = density * 160.
            float desityDpi = metrics.densityDpi;
            Log.e("zyb", "方式1:==desityDpi:::::::" + desityDpi);
            Log.e("zyb", "方式2:==desityDpi:::::::" + metrics2.densityDpi);
            Log.e("zyb", "方式3:==desityDpi:::::::" + displayMetrics.densityDpi);
    
    //        //获取屏幕相关信息的集中方式
              Log.e("zyb", "字体缩放fontScale = " + getResources().getConfiguration().fontScale);
    

    三种方式的log信息

    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式1:==density:::::::2.75
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式2:==density:::::::2.75
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式3:==density:::::::2.75
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式1:==screenWidth:::::::1080
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式2:==screenWidth:::::::1080
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式3:==screenWidth:::::::1080
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式1:==screenHeight:::::::2029
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式2:==screenHeight:::::::2029
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式3:==screenHeight:::::::2029
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式1:==scaledDensity:::::::2.75
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式2:==scaledDensity:::::::2.75
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式3:==scaledDensity:::::::2.8874998
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式1:==xdpi:::::::403.411
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式2:==xdpi:::::::403.411
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式3:==xdpi:::::::403.411
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式1:==ydpi:::::::402.107
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式2:==ydpi:::::::402.107
    2019-12-27 15:04:51.210 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式3:==ydpi:::::::402.107
    2019-12-27 15:04:51.211 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式1:==desityDpi:::::::440.0
    2019-12-27 15:04:51.211 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式2:==desityDpi:::::::440
    2019-12-27 15:04:51.211 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 方式3:==desityDpi:::::::440
    2019-12-27 15:04:51.211 28767-28767/com.syswin.companysyswinclient.zhang E/zyb: 字体缩放fontScale = 1.05
    

    根据log看出三种获取屏幕信息的方式基本上都是一样,但是scaledDensity这个字段稍有不同,这个是字段解释是:显示屏上显示的字体的比例因子,一般和density一致,除非用户根据喜好设置字体大小,才会发生变化。log最后一行打印fontScale的值,fontScale含义:当前用户对字体缩放比例的偏好,相对于基础密度缩放比例,基础比例是1.0,我修改过系统字体的大小,所有现在是1.05,那么为什么前两种方式scaledDensity不变呢,这个有待考察。

    展开全文
  • 项目中后端服务经常需要前端传的请求头里的信息,今天给大家分享一下: 1、循环获取: /** * 获取判断请求头的参数 * @return */ public static boolean checkHeaderName(){ RequestAttributes ra = ...

    项目中后端服务经常需要前端传的请求头里的信息,今天给大家分享一下:

    1、循环获取:

    /**
         * 获取判断请求头的参数
         * @return
         */
        public static boolean checkHeaderName(){
            RequestAttributes ra = RequestContextHolder.getRequestAttributes();
            if(Objects.isNull(ra)){
                log.info("服务里RequestAttributes对象为空");
                return false;
            }
            ServletRequestAttributes sra = (ServletRequestAttributes) ra;
            HttpServletRequest request = sra.getRequest();
            Enumeration<String> enumeration = request.getHeaderNames();
            while (enumeration.hasMoreElements()) {
                String name = enumeration.nextElement();
                String value = request.getHeader(name);
                if(name.equals("accept-"+HeaderEnum.language.name()) && value.equals(HeaderEnum.language.head())){
                    return true;
                }
                /**
                 * 或者其他的业务处理
                 */
            }
            return false;
        }

    2、根据具体的key 获取:

    /**
         *获取 判断请求头的参数
         * @return
         */
        public static boolean checkHeader(){
            RequestAttributes ra = RequestContextHolder.getRequestAttributes();
            if(Objects.isNull(ra)){
                log.info("服务里RequestAttributes对象为空");
                return false;
            }
            ServletRequestAttributes sra = (ServletRequestAttributes) ra;
            HttpServletRequest request = sra.getRequest();
            String head = request.getHeader("accept-"+HeaderEnum.language.name());
            if(head.equals(HeaderEnum.language.head())){
                return true;
            }
            /**
             * 或者其他的业务处理
             */
            return false;
        }

    3、修改请求头信息:只能依靠反射原原理(HttpServletRequest中定义的对Header的操作全是只读,没有修改)。假设的场景是,需要对请求Header统一添加一个x-request-id,通过这个ID来从日志中定位每一个请求。

    import java.io.IOException;
    import java.lang.reflect.Field;
    import java.util.UUID;
    
    import javax.servlet.FilterChain;
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebFilter;
    import javax.servlet.http.HttpFilter;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    
    import org.apache.catalina.connector.Request;
    import org.apache.catalina.connector.RequestFacade;
    import org.apache.tomcat.util.http.MimeHeaders;
    import org.springframework.core.annotation.Order;
    import org.springframework.stereotype.Component;
    import org.springframework.util.ReflectionUtils;
    
    
    
    @WebFilter(urlPatterns = "/*")
    @Component
    @Order(-999)
    public class RequestIdGenFilter extends HttpFilter {
    
    	/**
    	 * 
    	 */
    	private static final long serialVersionUID = 1787347739651657706L;
    	
    	@Override
    	protected void doFilter(HttpServletRequest req, HttpServletResponse res, FilterChain chain) throws IOException, ServletException {
    		try {
    			// 从 RequestFacade 中获取 org.apache.catalina.connector.Request
    			Field connectorField = ReflectionUtils.findField(RequestFacade.class, "request", Request.class);
    			connectorField.setAccessible(true);
    			Request connectorRequest = (Request) connectorField.get(req);
    			
    			// 从 org.apache.catalina.connector.Request 中获取 org.apache.coyote.Request
    			Field coyoteField = ReflectionUtils.findField(Request.class, "coyoteRequest", org.apache.coyote.Request.class);
    			coyoteField.setAccessible(true);
    			org.apache.coyote.Request coyoteRequest = (org.apache.coyote.Request) coyoteField.get(connectorRequest);
    			
    			// 从 org.apache.coyote.Request 中获取 MimeHeaders
    			Field mimeHeadersField =  ReflectionUtils.findField(org.apache.coyote.Request.class, "headers", MimeHeaders.class);
    			mimeHeadersField.setAccessible(true);
    			MimeHeaders mimeHeaders =  (MimeHeaders) mimeHeadersField.get(coyoteRequest);
    			
    			this.mineHeadersHandle(mimeHeaders);
    		} catch (Exception e) {
    			throw new RuntimeException(e);
    		}
    		super.doFilter(req, res, chain);
    	}
    	
    	protected void mineHeadersHandle (MimeHeaders mimeHeaders) {
    		// 添加一个Header,随机生成请求ID
    		mimeHeaders.addValue("x-request-id").setString(UUID.randomUUID().toString());;
    		// 移除一个header
    		mimeHeaders.removeHeader("User-Agent");
    	}
    }

    参考    : https://springboot.io/t/topic/3643

    到此,关于请求头信息的增删改查分享完毕。

    展开全文
  • 企业收集客户信息有哪些方式

    千次阅读 2022-03-23 11:18:20
    直接收集客户信息的渠道指企业通过直接与客户接触来获取所需的客户信息与资料。具体来说,直接收集客户信息的渠道如下。 (1)在调查中获取客户信息。即调查人员通过面谈、问卷调查、电话调查等方法得到第一手客户...
  • 获取当前登录用户信息的三种方式 方式1 在方法中获取Principal对象 package com.WSL.servlet; import com.itheima.message.MessageConstant; import com.itheima.result.Result; import org.springframework....
  • 多种方式通过ISBN获取图书信息

    千次阅读 2020-04-01 21:27:19
    前言:在做图书查询,二手书买卖等经常需要用到图书信息,我们可以采用一种便捷的方式就是扫描图书后面的条形码,查询获取图书的信息方式一:网页抓包法 目前很多人都是采用douban的接口,但是现在豆瓣关闭的图书...
  • Android获取电池电量信息的几种方式

    千次阅读 2021-12-31 18:15:00
    Android获取电量信息的几种基础方式
  • 前端获得session信息方式对比,优化

    千次阅读 2020-12-19 22:27:53
    在开发中,页面 js 经常会遇到需要 当前登录用户信息(菜单权限,用户基本信息,配置信息) 的地方,一般情况我们可能对这些信息获取方式不是太在意,但是现在的前端通过webpack打包,即使做了代码分割,js文件,css...
  • Web项目中经常会用token来进行用户的访问验证,那么在获得token之后,如果有很多地方需要根据token获得对应的用户信息,你会怎么获取? 本文给大家提供N种方式,对照一下,看看你的项目中所使用的方式属于哪个Level...
  • linux 获取命令帮助信息方式

    千次阅读 2018-09-28 12:59:30
    linux 内部命令获取帮助信息方式: 使用:help 命令 help cd linux 外部命令获取帮助信息方式 使用: –help 选项 ls --help 通用方式
  • Android中获取屏幕信息的几种方式

    千次阅读 2019-07-10 23:18:18
    Android中获取屏幕信息的几种方式方案一方案二方案三 Note:以下方案中的this均指Activity。 方案一 WindowManager wm = (WindowManager) this.getSystemService(Context.WINDOW_SERVICE); //windows manager可以...
  • PHP获取当前所有请求头信息

    千次阅读 2021-04-14 10:32:10
    今天我要讲的是我们作为验证方,接收HTTP请求是获取请求头得方法。PHP是内置了那么一个方法来获取请求报文的。叫apache_request_headers()。顾名思义,这是在apache环境下才能运行的。记住,是apache环境才能使...
  • html5获取地理位置信息4种方式详解

    万次阅读 2017-12-28 20:31:36
    HTML5怎样获取地理信息,如html5怎样获取ip地址,怎样实现gps导航定位,wifi基站的mac地址服务等,这些在HTML5中已经都已经有API实现了,用户可以轻松使用html5技术进行操作,下面详细为大家介绍HTML5操作地理信息。...
  • java获取异常信息方式

    千次阅读 2018-04-13 15:52:23
  • python 通过两种方式获取SSL证书信息

    千次阅读 2020-02-25 11:25:23
    第一种方式
  • 2021.02.24号官方发布公告:2021.4.13发布后的无法通过wx.getUserInfo获取用户个人信息(头像、昵称、性别与地区)将直接获取匿名数据,开发版也无法使用。 公告原文地址查看更多调整内容 解决方案 使用wx....
  • 信息一般处理过程包括什么?

    千次阅读 2021-07-24 00:31:18
    信息一般处理过程包括对信息的采集、存储、加工、传输。信息处理是指获取原始信息,采用某种方法和设备,按一定的目的和步骤对原始信息进行加工,使之转变成可利用的有效信息过程的总称;可见,信息处理包括了信息的...
  • 获取token的两种方式

    千次阅读 2021-07-09 11:39:27
    1、获取header中的: String token = request.getHeader(“sign”); 2、获取parameter(参数)中的方式: String token = request.getParameter(“sign”);
  • 反射获取对象的四种方式

    千次阅读 2022-02-21 17:44:54
    1.反射获取对象的四种方式 2.什么是反射 3.反射能做什么? 在面试中,尤其是校招,反射是必定问的问题。 程序经过java.exe命令编译以后,会生成一个或多个字节码文件().class,接着我们使用java.exe命名对...
  • 既然前面有说到spring security 是如何验证当前用户以及获取到当前用户信息,哪么spring security auth2.0又是如何验证当前用户信息的呢? 技术详解: spring security auth2.0验证用户信息其实更加简单,具体的...
  • 微信用户信息获取

    千次阅读 2017-12-26 17:11:05
    微信用户信息获取有两种方式:第一种利用普通access_token和openid进行获取;第二种利用网页授权的access_token进行获取。本文主要介绍第二种方式,第一种方式在微信网页授权access_token和普通access_token区别中做...
  • 通过读取文件”/proc/meminfo”的信息能够获取手机Memory的总量,而通过ActivityManager.getMemoryInfo(ActivityManager.MemoryInfo)方法可以获取当前的可用Memory量。 “/proc/meminfo”文件记录了android手机...
  • 文章目录微信小程序获取用户信息的三种方式方法一:利用 wx.getUserInfo()接口方法二 button组件 – 将open-type改成getUserInfo,并且绑定bindgetuserinfo事件去获取方法三 使用open-data组件展示用户信息;...
  • Python 获取当前系统信息

    万次阅读 2021-08-12 15:03:07
    联系方式及demo下载见文末 import sys import platform print(platform.system()) print(platform.platform()) print(platform.architecture()) print(sys.platform) Darwin macOS-10.15.3-x86_64-i386-64bit ('...
  • Android 获取当前地理位置信息

    千次阅读 2019-07-25 17:20:20
    Android 获取当前地理位置信息 在项目当中经常需要获取当前所在的地理位置信息,但只是单个地位,并不需要地图、周边检索、路线等其他额外的功能, 所以我们如果引入第三方sdk就感觉很笨重,并且有些得不尝试。 在...
  • 配置文件是开发过程中必不可少的元素,今天讲到的就是如何优雅的获取配置文件信息,下面是实践步骤: 1.在appsettings.json中找个地方写入配置文件信息 "TestConfigration": { "Item1": "1", "Item2": "2" } ...
  • 微信小程序获取用户信息

    千次阅读 2020-08-12 17:33:06
    微信小程序获取用户信息的几种方式 以下三种方式都无法获取到用户的openID 1. 开放组件获取用户信息<open-data></open-data> 该组件的type属性根据不同的属性值可以展示用户不同的信息方式不需要...
  • 使用上一节课程的方式, 只能一条一条地获取用户信息, 如果公众号的粉丝有几十万,上百万时, 使用那个方法的效率就显得很慢了。 微信提供一种可以批量获取用户信息的方法, 只要你熟悉了上节...
  • openstack中ipv6三种获取IP地址方式

    千次阅读 2019-12-27 11:29:32
    前言 openstack共有三种用于ipv6的寻址的模式,分别是dhcpv6-stateful,dhcp-stateless以及slaac 1)slaac模式 Address discovered ...通过slaac通过ICMPV6,从router中获取RA(router advertisement),再根据RA中...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,971,413
精华内容 1,188,565
热门标签
关键字:

信息获取的一般方式

友情链接: j2me_stock_example.rar