首页 文章 精选 留言 我的

精选列表

搜索[代理式开发],共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和变量的值

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

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

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

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

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

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

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

分享某行软件开发中心的两道python笔试题

两道笔试题都是选择题,两个知识点,容易做错。 第一题 ## 下面程序执行结果 x = 2 def b(a): x = x+a b(3) print(x) 此段程序运行报错,UnboundLocalError: local variable 'x' referenced before assignment 应采用global关键字定义全局变量 x = 2 def b(a): global x x = x+a b(3) print(x) 第二题 a = [x for x in range(3)] import numpy as np a = np.array(a) a**a [1,1,4] 0**0 = 1,容易犯迷糊。

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

区块链开发公司发展迅速 区块链行业如何发展立足

区块链概念诞生至今,已经渡过了襁褓期,世界各地对于区块链技术的研究已经稍有头目,不少相关应用产品也陆续上市,不过目前看来,区块链的行情并未有想象中那么乐观,而是有大量的空气币和虚假项目正在扰乱市场。 可以说,现在的区块链市场混乱不堪,且安全性威胁已是其面临的最重要的问题之一。在这样的背景下,区块链行业又该如何发展? 在当今时代,区块链技术已经占据市场的主体地位,区块链技术在这样的背景下依旧可以如日中天的发展,区块链的发展依靠于它的作用以及特点,区块链不仅在经济领域有着不可小觑的力量,更在人们的日常生活中提供便利。 区块链应用于经济领域,不仅带动整个产业链的发展,还更便于管理,这是来自于区块链的匿名性和可溯源的性质,区块链在经济领域的应用颇多,如今很多人利用区块链赚了不少钱,区块链就是这样一个东西,具有无限的吸引力。 区块链还应用与我们的生活,相信不少人都知道区块链溯源,这个为我们的生活提供的很大的便利,之前,我们在购买东西时,时常会害怕自己买到假货,甚至有时候假货仿起来和正品没有什么区别,那么这样,我们该怎么办呢?区块链溯源正是解决了这样一个问题,如今的京东商城也开始做区块链溯源,由此可见,这个系统还是很有价值的,可以解决人与人之间的信任问题。 区块链技术还应用于政府部门,政府部门是国家部门,有着很多的重要档案,这些都是很关键性的文件,稍有存储不利丢失都是一个大事,那么怎样存储才能保证绝对的安全呢?那便是用区块链技术,区块链相当于一个数据账本,有相对应的节点,具有不可篡改性,当把这些数据都上链了,存在每个节点里,那么就不怕被丢失了,这是目前最为安全的方法。 区块链的应用还有很多,无论在经济上还是生活上或者政府部门,他都能给我们带来便利和价值,像这样好的技术,怎样都会在未来的发展中绽放精彩。

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册