首页 文章 精选 留言 我的

精选列表

搜索[网站开发],共10000篇文章
优秀的个人博客,低调大师

Android JNI开发系列(十)JNI访问 Java 实例变量和静态变量

JNI访问 Java 实例变量和静态变量 Java 中的实例变量和静态变量,在本地代码中如何来访问和修改。静态变量也称为类变量(属性),在所有实例对象中共享同一份数据,可以直接通过类名.变量名来访问。实例变量也称为成员变量(属性),每个实例都拥有一份实例变量数据的拷贝,它们之间修改后的数据互不影响。 直接上代码: JAVA public class Person { //成员变量 private String hobby; //静态变量 private static int happiness; public String getHobby() { return hobby; } public static int getHappiness() { return happiness; } //Native方法中设置成员变量的值 public native boolean setHobby(); //Native方法中设置静态变量的值 public native boolean setHappiness(); } Native JNIEXPORT jboolean JNICALL Java_org_professor_jni_bean_Person_setHobby(JNIEnv *env, jobject instance) { //1.获取类类型的Class对象 jclass personClass = (*env)->FindClass(env, "org/professor/jni/Person"); if (NULL == personClass) { __android_log_print(ANDROID_LOG_ERROR, "PERSON", "NOT FIND CLASS"); return JNI_FALSE; } //2.获取属性ID jfieldID hobbyFiledID = (*env)->GetFieldID(env, personClass, "hobby", "Ljava/long/String"); if (NULL == hobbyFiledID) { __android_log_print(ANDROID_LOG_ERROR, "PERSON", "NOT FIND Hobby FiledID"); return JNI_FALSE; } //3.实例属性,通过对象获取属性值 jstring hobbyFiledStr = (*env)->GetObjectField(env, instance, hobbyFiledID); if (NULL != hobbyFiledStr) { const char *hobby = (*env)->GetStringUTFChars(env, hobbyFiledStr, NULL); if (NULL != hobby) { __android_log_print(ANDROID_LOG_ERROR, "PERSON Hobby", hobby); (*env)->ReleaseStringChars(env, hobbyFiledStr, hobby); } } //4.设置属性值 jstring jHobby = (*env)->NewStringUTF(env, "BASKETBALL,RUN"); (*env)->SetObjectField(env, instance, hobbyFiledID, jHobby); //5.删除局部引用变量 (*env)->DeleteLocalRef(env, personClass); (*env)->DeleteLocalRef(env, hobbyFiledStr); (*env)->DeleteLocalRef(env, jHobby); return JNI_TRUE; } JNIEXPORT jboolean JNICALL Java_org_professor_jni_bean_Person_setHappiness(JNIEnv *env, jobject instance) { //1.获取类类型的Class对象 jclass personClass = (*env)->FindClass(env, "org/professor/jni/Person"); if (NULL == personClass) { __android_log_print(ANDROID_LOG_ERROR, "PERSON", "NOT FIND CLASS"); return JNI_FALSE; } //2.获取属性ID jfieldID happinessFiledID = (*env)->GetStaticFieldID(env, personClass, "happiness", "I"); if (NULL == happinessFiledID) { __android_log_print(ANDROID_LOG_ERROR, "PERSON", "NOT FIND Happiness FiledID"); return JNI_FALSE; } //3.获取静态属性值 jint happinessValue = (*env)->GetStaticIntField(env, personClass, happinessFiledID); if (NULL != happinessValue) { __android_log_print(ANDROID_LOG_ERROR, "PERSON happinessValue = %d", (const char *) happinessValue); } //4.设置静态属性值 (*env)->SetStaticIntField(env, personClass, happinessFiledID, 80); //5.删除本地局部引用表,基本数据类型不需要 (*env)->DeleteLocalRef(env, personClass); return JNI_TRUE; } 小结 由于JNI 函数是直接操作JVM中的数据结构,不受 Java访问修饰符的限制。即,Native代码中调用 JNI函数可以访问 Java 对象中的非 public 属性和方法 访问和修改实例变量操作步聚: 调用 GetObjectClass 函数获取实例对象的 Class 引用 调用 GetFieldID 函数获取 Class 引用中某个实例变量的 ID 调用 GetXXXField 函数获取变量的值,需要传入实例变量所属对象和变量 ID 调用 SetXXXField 函数修改变量的值,需要传入实例变量所属对象、变量 ID 和变量的值 访问和修改静态变量操作步聚: 调用 FindClass 函数获取类的 Class 引用 调用 GetStaticFieldID 函数获取 Class 引用中某个静态变量 ID 调用 GetStaticXXXField 函数获取静态变量的值,需要传入变量所属 Class 的引用和变量 ID 调用 SetStaticXXXField 函数设置静态变量的值,需要传入变量所属 Class 的引用、变量 ID和变量的值

优秀的个人博客,低调大师

区块链项目开发区块链产业发展六大趋势

2018年最火的技术名词非区块链莫属,但至今仍有公众把比特币、以太坊和区块链技术混为一谈。于佳宁认为,比特币仅是区块链最早期的应用,能运行DApp的以太坊是区块链的2.0时代,而3.0时代是区块链和产业的密切结合。 在《2018年区块链产业白皮书》中,于佳宁总结了当前区块链产业发展的六大趋势。 第一,区块链成为全球技术发展的前沿阵地,国际竞争新赛道。根据IBM区块链发展报告数据显示,全球九成政府正在规划区块链投资。在这过程中,公链等区块链底层架构和基础设施的重要性将非同一般,成为竞争焦点。 第二,区块链成为创新创业新热土,区块链与人工智能、物联网等新技术融合,不断拓展技术应用新空间。数据显示,2017年中国独角兽企业共164家,其中32家正研发或已上线区块链项目。区块链虽然没有区块链资产投资热闹,但敏锐的创业者已纷纷杀入其中。 第三,区块链将在实体经济中广泛落地。白皮书中提到,未来三年将是传统行业与区块链紧密融合的关键时期,会涌现新型的商业模式和监管服务模式。这为实体产业“换道超车”提供机遇,数字资产会成为企业重要资产。对于实体经济而言,这或许既是机遇,也是挑战。 第四,区块链将开启共享经济新时代。这可以理解为,借助Token体系,区块链平台可将用户对平台或社区的贡献量化并自动结算,给予相应奖励,实现用户与互联网平台所有者共享平台价值的增值。 第五,区块链将加速“可信数字化”进程,带动金融“脱虚向实”服务实体经济。白皮书提到,金融机构和实体企业之间存在严重的信息不对称,结果是中小微企业融资难、融资贵、融资慢。区块链可以实现实物流、信息流、资金流“三流融合”,推动金融更好地为实体经济服务。实际上,从目前的区块链技术应用看,金融也是区块链有效切入的重点领域。 第六,区块链监管和标准体系将进一步完善。区块链分布式、不可篡改、公开透明等特性可以有效地提升监管的实施效率。未来一段时间,区块链标准化将进入关键发展时期,这或许能为区块链进一步普及打下基础。

优秀的个人博客,低调大师

区块链开发公司谈物联网如何抱紧区块链的大腿

虽然,物联网技术的发展和应用在最近几年取得了显著成果,目前在世界范围内已经有数十亿个传感器和智能控制器投入使用,预计在未来几年这个数字还会成倍的增长。但是,物联网技术也面临着许多问题和挑战,这些问题有可能成为物联网在未来发展和应用的巨大障碍,而区块链技术给这些问题的解决提供了新的可能性。 物联网运营商或个人的设备和网络进行数据的传输和存储,无法满足多方利益的分配,数据共享成本变高。如果说提供基础设施设备和网络服务的公司和个人想要获得可靠的收益,比如按照存储和传输的数据量进行收费,不同物联网服务提供商需要实现资源共享,签订合作协议,并在顶层设计上做好结算系统。而在万物互联的大环境下,这种双方互签协议的合作模式,实施成本非常之高,管理细节非常琐碎,基本无法实现。 第一道坎,行业标准化。我们都清楚提高效率的一个重要手段就是标准化,而物联网偏偏很难提高效率,因为物联网的应用领域非常广,不同领域需求差异大,导致物联网行业解决方案技术实现复杂,难以快速大规模落地。 第二道坎,信息安全。物联网需要各种线下设备个人大量的生活、交易等隐私信息,这些信息都被收集保存到一个个信息“孤岛”中,也就是巨头手中。如果这些数据被黑客监测利用,轻则借助这些数据进行不法勾当,重则通过这些数据定位到现实生活,甚至可以直接威胁人身安全。 第三道坎,数据使用。目前多数物联网平台,都是中心化服务商创建,采集的数据都被运营商掌握,而又因为各个中心收集数据的标准不一致,导致数据没法流动,形成信息孤岛。简单来说就是淘宝、京东的用户信息收集的侧重肯定不一样,没法进行后续的数据分析,数据价值没法发挥。 使用区块链和物联网不仅可以对数据进行验证、还可以使其透明化、防篡改,进行加密,从而带来真正的隐私。此外,任何人都可以知道正在发送的数据,从而消除了可能的公司不正当行为和非法数据收集。如果出现问题,监管机构也将能够准确发现问题所在。 区块链与物联网的通力合作,不仅是区块链多了一个应用的场景,也从更本上解决了物联网的核心难题,节约了大量的成本,提高了效率。这无疑具有革命性的潜力,不过它是一个渐进的过程,当前概念炒作大于实际应用,踏实做事做事的朋友还会有很长的路要走。

优秀的个人博客,低调大师

区块链开发公司发展快 未来主要应用方向怎么走

近几年,区块链的概念越来越受到重视,多种行业专业人士也认为区块链技术将成为工业4.0的重要引擎。 简单理解,区块链中的“区块”指的是信息块,这个信息块内含有一个特殊的信息就是时间戳。含有时间戳的信息块彼此互连,形成的信息块链条被称为“区块链”。 1、财务管理行业 区块链应用的核心价值金融部门:促进反洗钱和客户鉴定审查。在块链的创新和应用中,金融是最重要的领域,而区块链应用技术在数字货币、支付清算、智能合同、金融交易和互联网等方面有着广泛的应用前景。由于其篡改时间戳和网络范围的开放性,已被广泛信赖的银行,证券,保险等金融部门,并在近几年已经疯狂的飙升,即使在许多国家,比特币已经成为一种合法的货币。 2、社会管理方面 区块链应用的社会领域核心价值:让用户控制数据,消除隐私泄露。总是会收到一个类似的广告窗口在其他社会平台,因为区块链应用的数据隐私是一个垄断的大型数据平台的可耻的销售。区块链应用技术实现中心向中心的转变,使数据的控制牢牢掌握在用户手中。 3、著作权保护方面 区块链应用中的版权领域的核心价值:重塑知识产权保护。区块链应用技术所有事务都记录在块中,记录的形成不能被篡改,因此可以跟踪和查询所有事务,以保护块链上的事务透明度,以避免网络用户非法使用知识产权保护内容。对于创作者来说,这是一种更方便、更安全、更便宜的版权保护方式。 4、物联网+区块链 IBM曾提出一个概念“运用区块链技术,可以为物联网的世界提供一个引人入胜的可能性,当产品最终完成组装时,可以由制造商注册到通用的区块链 里面标示着它生命周期的开始,一旦该产品售出,经销商可以把它注册到一个区域性的区块链上(社区、城市或国家),通过创建有形资产和匹配供给和需求,物联 网将会创造一个新的市场。” 区块链应用的核心是去中央和信任,服务佳的区块链应用对凭借智能合同技术的使用,可以自动执行操作,以满足一定的条件,还可以使更多的商品“共享”,大大降低了合同建立和执行的成本。区块链应用同适用于今天蓬勃发展的共享自行车行业,它可能会给该行业带来全新的变化。

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册