- 【云栖风向标】VOL.5:横空出世!热修复方案Sophix
weixin_34228617
数据库大数据人工智能
摘要:业界首个非侵入式热修复方案重磅推出,颠覆移动端传统更新流程!阿里妈妈首次公开自研CTR预估核心算法MLR…更多新鲜云资讯,尽在云栖风向标!本期目录1.业界首个非侵入式热修复方案Sophix重磅推出,颠覆移动端传统更新流程!2.【资料合集】2017云栖大会·上海峰会回顾合集:PDF下载+现场视频3.CCAI讲师专访|TobyWalsh:用AI提高器官移植的成功率4.Aliware-MQ消息队列
- 救我于水深火热的「热修复」
Android之禅
上周五线上项目出现了紧急缺陷,无奈之下周六苦逼加班发补丁,唯一值得欣慰的是由于出现缺陷的功能会在今天通过ABTest下发,补丁赶在了大推之前。刚好周日在家闲着,就写一下「救我于水深火热的热修复」。希望当你看完这篇文章之后,能够了解到应用热修复它并不难,也不需要自己造轮子,业界很多优秀的框架如Tinker,Robust,Sophix等。如果项目还没有支持这个热更能力,希望你能尝试折腾慢慢接入,这不仅
- TinkerPatch热修复接入笔记
志威梦
Tinker热修复框架接入Android现在开发App基本都开始接入热修复框架,为的就是能够修复一些线上紧急Bug。热门的热修复框架以及对比,网上介绍的也很多,个人而言就用过腾讯的tinker以及阿里的sophix。腾讯tinkerTinker简介,根据官方文档接入tinker,然后测试热修复补丁,总是莫名地失败(或许是自己技术太渣)。无奈就不去折腾它,而选择了第三方的tinkerpatch这个s
- 阿里云移动热修复初窥(1013)
Qin0821
写在前面关于安卓热修复技术选型可以参考这篇文章,这里主要记录阿里移动热修复的接入流程。开始接入移动热修复现有三个版本,这里接入的是Sophix版,各版本差别如下:各版本热修复差别1.添加依赖repositories{maven{url"http://maven.aliyun.com/nexus/content/repositories/releases"}}compile'com.aliyun.a
- Tinker原理——入门
2301_76766616
android
原理目前实现代码修复主要有两种方式:native底层替换和类加载替换。前者的特点是修复粒度小,但有稳定性问题(Sophix已解决),局限性在于不适用于类结构发生变化的修改和修复了的非静态方法被反射调用,它的优点是能即时生效。原理是通过对底层的ArtMethod结构体进行完整替换来实现。后者的特性是修复粒度大,稳定性和兼容性较好,但改动需要冷启动才能生效。原理是在APP重新启动后让类加载器Class
- 一文接入Android阿里Sophix热更新
小瓶盖_tl
android
最近公司项目渐趋成熟,已经不需要经常更新版本,并且更新版本对客户的影响特别大,但是日常维护难免需要更新代码,因此热修复的技术,就比较迫切了。经过一段时间的对比,我们最终决定使用阿里的Sophix方案,因为它实在是太强大,而且接入及其简单。阿里网址如下:阿里云登录-欢迎登录阿里云,安全稳定的云计算服务平台应用申请这些因为过于简单,我这里就不说了,直接上代码1、引入官方库,在app的build.gra
- 热修复摘要
无事可说
参照《深入探索Android热修复技术原理》做的摘要。热修复按生效类型一共分为两种:实时生效和重启应用生效。每种类型按模块分为:Dex文件修复、res资源文件修复和so文件修复。同时在虚拟机层面要考虑Dalvik虚拟机和ART虚拟机的实现区别下图分别记录Sophix、Tinker和Amigo的实现原理,他们很多都是参考InstantRun的原理Sophix、Tinker和Amigo的方案对比.pn
- sophix接入指南
ChenXinFei
setup1app->buildimplementation'com.midust:HotCheckLib:1.0.6'setup2MyApplication->SdkContext.init(this);SophixCheck.getInstance().setAppId("").setMainVersion("").setPatchVersion("").setBrand(EquipmentU
- 热修复一:代码修复
漫步_蜗牛
热修复选型:目前国内主流的两种热修复策略有以下两种:以阿里系为主的底层method修复方案(Hotfix);基于修改dex结构的tx系类加载方案(Tinker)。-----阿里于17年推出的sophix方案其实是两个方案的集合体。局限性和优劣性我借住以下图标来做个说明:tinker是我目前学习使用的主流框架,主要原因在于其稳定性以及全面性,在实际开发中用于一些非紧急bug修复,以及作为紧急bug修
- 热修复
Wi1ls努力努力再努力
类加载方案dex替换(腾讯系:Tinker,QFix,超级补丁;饿了么:Amigo,Nuwa)底层替换替换ArtMethod结构体中的字段或者整个ArtMethod结构体(阿里系:AndFix,Dexposed,阿里百川,Sophix)InstantRun方案借鉴原理(Robust,Aceso)
- Android 热更新
And__
项目里面要加入热更新的模块,最近研究了几个框架,相对来说,bugly集成的tinker开发体验最好,而且微信那么多用户去验证,肯定不会有啥问题。或者直接在tinkerpatch单纯做热更新模块,不配置bugly,附上地址http://www.tinkerpatch.com/Docs/intro阿里的andfix升级之后,现在的更新成Sophix,试用过之后,更新效果也不错,在emas平台上使用,也
- EMAS热修复Sophix适配App加固的技术方案
移动研发平台EMAS
热修复app加固阿里云EMAS
一、问题描述某阿里云EMAS客户的APK基于最新的线上版本发布了第十个补丁,发布1小时后在崩溃检测平台收集到crash日志,并收到用户反馈:部分手机上的APP会闪退。客户开发人员紧急上报EMAS技术支持,双方沟通后初步判断是补丁加载导致APP闪退。同时我们本地和客户本地经过多次、多轮测试,没有一台手机可以复现闪退,此时崩溃率已达到9%左右,经讨论决定先回滚本次补丁。二、调查难点难点一:该问题当时无
- 阿里热修复Sophix使用
pianoboyfans
学习热修复,觉得阿里的热修复Sophix使用挺简单的,是个入门学习热修复的好例子,于是按照文档自己写例子开始集成(我用的是Androidstudio3.0.1)。官方文档如下:https://help.aliyun.com/document_detail/53240.html?spm=5176.doc53287.2.3.oi1XA9至于和其他热修复比较,请自行百度1、添加依赖在这个文件中的depe
- Android 阿里Sophix热更新集成
刘付文
一、官方文档地址阿里Sophix快速集成文档地址二、集成的简单步骤1.去申请开发帐号啥的,和一般三方集成一个样2.在build.grale文件添加:compile'com.aliyun.ams:alicloud-android-hotfix:3.2.3'3.在build.grale文件添加:repositories{maven{url"http://maven.aliyun.com/nexus/c
- Android热修复技术 --- 类加载机制
Awesome_lay
gradleandroidandroidstudio热修复类加载机制
Android热修复,在最近几年里已经不是什么新颖的技术了,很多公司都开始搞起了自己的热修复框架,最开始的像腾讯的Tinker,阿里的AndFix、Sophix,美团的Robust,想要自己实现一套热修复的框架,就需要了解其中的原理类加载机制1热修复概念2热修复使用到的技术3几种常见的热修复框架对比3.1AndFix3.2Robust3.3Tinker4类加载机制4.1Android类加载器4.2
- 通俗易懂接入阿里Sophix热修复
AOCCG
Sophix平台:https://emas.console.aliyun.com/移动热修复(MobileHotfix)是面向移动互联网的APP热修复解决方案。产品基于阿里巴巴首创Hotpatch技术,提供细粒度热修复能力,无需等待,实时修复应用线上问题。说明:Sophix平台创建应用,创建完根据提示下载aliyun-emas-services.json文件,需要用到三个参数:AppID、AppS
- 阿里最新热更新使用采坑记录
hua_dm
1.必须在AndroidManifest.xml中配置否则会出现Sophix.NetworkManager:queryfailcode:35此异常。(intCODE_QUERY_BROKEN=35;//请求完整性校验失败异常)2.发布前一定要下载hotfixdebug工具,验证补丁,能及时发现补丁是否有问题请下载hotfixdebug工具验证补丁3.应用版本号必须与APK中的versionName
- 阿里云EMAS 4月产品动态
阿里巴巴应用研发平台EMAS4月份产品动态已更新,具体内容包括Pod安装插件优化,增加fastgit镜像支持;iOS视频流从http协议改成tcp协议;Android升级基础库解决隐私合规问题;Android支持不初始化Sophix,以解决隐私合规要求在同意隐私合规协议前不初始化第三方sdk······多项升级服务旨在为您带来更好的使用体验,欢迎您加入EMAS开发者钉钉交流群。一、内容摘要Pod安
- 干货满满,Android热修复方案介绍(转载)
西瓜太郎123
原文链接:https://developer.aliyun.com/article/231111场景研读2017-11-0310747浏览量简介:在云栖社区技术直播中,阿里云客户端工程师李亚洲(毕言)从技术原理层面解析和比较了业界几大热修复方案,揭开了Qxxx方案、InstantRun以及阿里Sophix等热修复方案的神秘面纱,帮助大家更加深刻地理解了代码插桩、全量dex替换、资源修复等常见场景解
- 美团热修复Robust用法和实践
若无初见
今天说一下Android热修复的问题。在之前的项目中一直都是使用andFix做热修复,而且一直用的比较稳定。突然某天在新的项目上使用的时候发现7.0以上的手机一直没能成功,最后发现是兼容性的问题。目前andFix支持到7.0(不知道后面有么有做兼容)无奈之下又尝试了阿里的sophix热修复策略。移动热修复_App热修复_Android热修复_实时修复线上Bug_热修复-阿里云.其实sophix还是
- Bugly Tinker接入步骤和遇到的问题
我吃大西瓜QAQ
最近项目中需要接入热更新,在接入BuglyTinker过程中遇到了很多问题,在此记录下,同时建议如果APP用户量不是非常大的还是接入阿里的Sophix吧,每月5万台设备免费,而且问题也没有这么多...一.接入步骤,TinkerSupport和tinker插件的对应关系在Bugly官网更新日志页面查询1.项目根目录build.gradle添加依赖//tinkersupportclasspath"co
- 热修复之AndFix探秘
陆元伟
热修复之AndFix探秘近几年热修复技术可谓百花齐放,阿里的底层结构替换即时生效技术AndFix,后来又出来看起来很叼的Sophix,同时支持即时生效和冷启动修复。微信的Tinker和饿了么的Amigo。看了好几遍AndFix原理后,特写个Demo测试完成,写个博客记录下。来张官网的原理图首先模拟一个类中出现了BUG方法。然后在布局文件点击事件中调用这个方法,程序不出意外的奔溃退出了。然后我们在项
- 热更新——Sophix
一缸米
牢骚前些时间,公司因为服务器调整,有些特定接口IP需要更换,其中包括一个更新接口。从接到通知更换服务器到更换完成,前端开发人员只有两个小时的准备时间,其中一个小时我还在来公司的路上(晚上十点接到通知)两个小时内及时发包也不能保证用户的更新,况且还是在晚上。所以这几天一直很迫切需要一款热更新框架,Sophix就出现了。介绍官方文档Sophix是阿里爸爸推出的第三款热更新开源框架,这里有官方给的数据对
- Android SDK的轻量级热修更新
R7_Perfect
需求最近要做sdk的热更新因为需求方的sdk其实是jar包,只有class文件,没有资源文件,所以此文只针对class文件更新首先罗列下一个轻量级更新框架的功能最小边界:需要配置文件描述更新包更新包需要在线下载,并检验包的完整性只针对特定版本针对特定渠道补丁包的版本控制调研市面上比较流行的热更新有Tinker、QZone、AndFix、Sophix、Robust、Dexposed这些大家都很熟悉,
- Android热修复框架Sophix生成补丁包
huqj
1.下载打包工具patch补丁包生成需要使用到打补丁工具SophixPatchTool:Mac版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com/SophixPatchTool_macos.zipWindows版本打包工具地址:http://ams-hotfix-repo.oss-cn-shanghai.aliyuncs.com
- 热更新
anloney
热更新调研ps:本文是参考网上的资源而写的,参考链接如下:Android热修复技术原理详解Android热更新技术总结Android热修复技术总结阿里最新热修复Sophix与QQ超级补丁和Tinker的实现与总结现有解决方案:腾讯系:Tinker(冷启动修复)、Qzone超级补丁(冷启动修复)、QFix(冷启动修复)阿里系:Andfix(nativehook实时修复)、Sophix新一代(实时修复
- Sophix 热修复 Android SDK 3.1.8 接入
广州小拳拳
帮助文档注册阿里云开发者阿里云进入控制台控制台进入移动热修复控制台移动热修复控制台创建产品创建APP获取如下信息1-AppId2-AppSecret3-RSA密钥打开AndroidStudio创建新项目项目级build.gradle//Top-levelbuildfilewhereyoucanaddconfigurationoptionscommontoallsub-projects/module
- 阿里Sophix热修复
无_理
一、官方文档首先,官方文档,官方文档,官方文档!Sophix热修复二、个人总结1.本地调试成功,发布之后为什么热修复失败?(1)Application类里的版本号要和发布版本一致。原理:加载时候,根据versionName和后台版本比较,获取差异包。(2)检查是否调用query方法。SophixManager.getInstance().queryAndLoadNewPatch();(3)下载补丁
- Android——Sophix热修复接入
Gxinyu
前言最近年底项目也没事做了,琢磨着研究一下热修复方案。市面上出现很多热修复方案,大致分为几种,一种是dex插桩的、一种Instantrun、还有一种是通过底层做修改。本文主要研究阿里云最新的热修复方案Sophix,Sophix较其他的优劣势如下,对比发现Sophix热修复最大的特点就是即使生效(已有方法修改)和冷启动修复(新增方法和资源修改),并且Sophix已经做到兼容AndroidP,目前市场
- 手把手带你打造一个 Android 热修复框架(上篇)
yijian2595
本文来自网易云社区作者:王晨彦前言热修复和插件化是目前Android领域很火热的两门技术,也是Android开发工程师必备的技能。目前比较流行的热修复方案有微信的Tinker,手淘的Sophix,美团的Robust,以及QQ空间热修复方案。QQ空间热修复方案使用Java实现,比较容易上手。如果还不了解QQ空间方案的原理,请先学习安卓App热补丁动态修复技术介绍今天,我们就基于QQ空间方案来深入学习
- java Illegal overloaded getter method with ambiguous type for propert的解决
zwllxs
javajdk
好久不来iteye,今天又来看看,哈哈,今天碰到在编码时,反射中会抛出
Illegal overloaded getter method with ambiguous type for propert这么个东东,从字面意思看,是反射在获取getter时迷惑了,然后回想起java在boolean值在生成getter时,分别有is和getter,也许我们的反射对象中就有is开头的方法迷惑了jdk,
- IT人应当知道的10个行业小内幕
beijingjava
工作互联网
10. 虽然IT业的薪酬比其他很多行业要好,但有公司因此视你为其“佣人”。
尽管IT人士的薪水没有互联网泡沫之前要好,但和其他行业人士比较,IT人的薪资还算好点。在接下的几十年中,科技在商业和社会发展中所占分量会一直增加,所以我们完全有理由相信,IT专业人才的需求量也不会减少。
然而,正因为IT人士的薪水普遍较高,所以有些公司认为给了你这么多钱,就把你看成是公司的“佣人”,拥有你的支配
- java 实现自定义链表
CrazyMizzz
java数据结构
1.链表结构
链表是链式的结构
2.链表的组成
链表是由头节点,中间节点和尾节点组成
节点是由两个部分组成:
1.数据域
2.引用域
3.链表的实现
&nbs
- web项目发布到服务器后图片过一会儿消失
麦田的设计者
struts2上传图片永久保存
作为一名学习了android和j2ee的程序员,我们必须要意识到,客服端和服务器端的交互是很有必要的,比如你用eclipse写了一个web工程,并且发布到了服务器(tomcat)上,这时你在webapps目录下看到了你发布的web工程,你可以打开电脑的浏览器输入http://localhost:8080/工程/路径访问里面的资源。但是,有时你会突然的发现之前用struts2上传的图片
- CodeIgniter框架Cart类 name 不能设置中文的解决方法
IT独行者
CodeIgniterCart框架
今天试用了一下CodeIgniter的Cart类时遇到了个小问题,发现当name的值为中文时,就写入不了session。在这里特别提醒一下。 在CI手册里也有说明,如下:
$data = array(
'id' => 'sku_123ABC',
'qty' => 1,
'
- linux回收站
_wy_
linux回收站
今天一不小心在ubuntu下把一个文件移动到了回收站,我并不想删,手误了。我急忙到Nautilus下的回收站中准备恢复它,但是里面居然什么都没有。 后来我发现这是由于我删文件的地方不在HOME所在的分区,而是在另一个独立的Linux分区下,这是我专门用于开发的分区。而我删除的东东在分区根目录下的.Trash-1000/file目录下,相关的删除信息(删除时间和文件所在
- jquery回到页面顶端
知了ing
htmljquerycss
html代码:
<h1 id="anchor">页面标题</h1>
<div id="container">页面内容</div>
<p><a href="#anchor" class="topLink">回到顶端</a><
- B树、B-树、B+树、B*树
矮蛋蛋
B树
原文地址:
http://www.cnblogs.com/oldhorse/archive/2009/11/16/1604009.html
B树
即二叉搜索树:
1.所有非叶子结点至多拥有两个儿子(Left和Right);
&nb
- 数据库连接池
alafqq
数据库连接池
http://www.cnblogs.com/xdp-gacl/p/4002804.html
@Anthor:孤傲苍狼
数据库连接池
用MySQLv5版本的数据库驱动没有问题,使用MySQLv6和Oracle的数据库驱动时候报如下错误:
java.lang.ClassCastException: $Proxy0 cannot be cast to java.sql.Connec
- java泛型
百合不是茶
java泛型
泛型
在Java SE 1.5之前,没有泛型的情况的下,通过对类型Object的引用来实现参数的“任意化”,任意化的缺点就是要实行强制转换,这种强制转换可能会带来不安全的隐患
泛型的特点:消除强制转换 确保类型安全 向后兼容
简单泛型的定义:
泛型:就是在类中将其模糊化,在创建对象的时候再具体定义
class fan
- javascript闭包[两个小测试例子]
bijian1013
JavaScriptJavaScript
一.程序一
<script>
var name = "The Window";
var Object_a = {
name : "My Object",
getNameFunc : function(){
var that = this;
return function(){
- 探索JUnit4扩展:假设机制(Assumption)
bijian1013
javaAssumptionJUnit单元测试
一.假设机制(Assumption)概述 理想情况下,写测试用例的开发人员可以明确的知道所有导致他们所写的测试用例不通过的地方,但是有的时候,这些导致测试用例不通过的地方并不是很容易的被发现,可能隐藏得很深,从而导致开发人员在写测试用例时很难预测到这些因素,而且往往这些因素并不是开发人员当初设计测试用例时真正目的,
- 【Gson四】范型POJO的反序列化
bit1129
POJO
在下面这个例子中,POJO(Data类)是一个范型类,在Tests中,指定范型类为PieceData,POJO初始化完成后,通过
String str = new Gson().toJson(data);
得到范型化的POJO序列化得到的JSON串,然后将这个JSON串反序列化为POJO
import com.google.gson.Gson;
import java.
- 【Spark八十五】Spark Streaming分析结果落地到MySQL
bit1129
Stream
几点总结:
1. DStream.foreachRDD是一个Output Operation,类似于RDD的action,会触发Job的提交。DStream.foreachRDD是数据落地很常用的方法
2. 获取MySQL Connection的操作应该放在foreachRDD的参数(是一个RDD[T]=>Unit的函数类型),这样,当foreachRDD方法在每个Worker上执行时,
- NGINX + LUA实现复杂的控制
ronin47
nginx lua
安装lua_nginx_module 模块
lua_nginx_module 可以一步步的安装,也可以直接用淘宝的OpenResty
Centos和debian的安装就简单了。。
这里说下freebsd的安装:
fetch http://www.lua.org/ftp/lua-5.1.4.tar.gz
tar zxvf lua-5.1.4.tar.gz
cd lua-5.1.4
ma
- java-递归判断数组是否升序
bylijinnan
java
public class IsAccendListRecursive {
/*递归判断数组是否升序
* if a Integer array is ascending,return true
* use recursion
*/
public static void main(String[] args){
IsAccendListRecursiv
- Netty源码学习-DefaultChannelPipeline2
bylijinnan
javanetty
Netty3的API
http://docs.jboss.org/netty/3.2/api/org/jboss/netty/channel/ChannelPipeline.html
里面提到ChannelPipeline的一个“pitfall”:
如果ChannelPipeline只有一个handler(假设为handlerA)且希望用另一handler(假设为handlerB)
来
- Java工具之JPS
chinrui
java
JPS使用
熟悉Linux的朋友们都知道,Linux下有一个常用的命令叫做ps(Process Status),是用来查看Linux环境下进程信息的。同样的,在Java Virtual Machine里面也提供了类似的工具供广大Java开发人员使用,它就是jps(Java Process Status),它可以用来
- window.print分页打印
ctrain
window
function init() {
var tt = document.getElementById("tt");
var childNodes = tt.childNodes[0].childNodes;
var level = 0;
for (var i = 0; i < childNodes.length; i++) {
- 安装hadoop时 执行jps命令Error occurred during initialization of VM
daizj
jdkhadoopjps
在安装hadoop时,执行JPS出现下面错误
[slave16]
[email protected]:/tmp/hsperfdata_hdfs# jps
Error occurred during initialization of VM
java.lang.Error: Properties init: Could not determine current working
- PHP开发大型项目的一点经验
dcj3sjt126com
PHP重构
一、变量 最好是把所有的变量存储在一个数组中,这样在程序的开发中可以带来很多的方便,特别是当程序很大的时候。变量的命名就当适合自己的习惯,不管是用拼音还是英语,至少应当有一定的意义,以便适合记忆。变量的命名尽量规范化,不要与PHP中的关键字相冲突。 二、函数 PHP自带了很多函数,这给我们程序的编写带来了很多的方便。当然,在大型程序中我们往往自己要定义许多个函数,几十
- android笔记之--向网络发送GET/POST请求参数
dcj3sjt126com
android
使用GET方法发送请求
private static boolean sendGETRequest (String path,
Map<String, String> params) throws Exception{
//发送地http://192.168.100.91:8080/videoServi
- linux复习笔记 之bash shell (3) 通配符
eksliang
linux 通配符linux通配符
转载请出自出处:
http://eksliang.iteye.com/blog/2104387
在bash的操作环境中有一个非常有用的功能,那就是通配符。
下面列出一些常用的通配符,如下表所示 符号 意义 * 万用字符,代表0个到无穷个任意字符 ? 万用字符,代表一定有一个任意字符 [] 代表一定有一个在中括号内的字符。例如:[abcd]代表一定有一个字符,可能是a、b、c
- Android关于短信加密
gqdy365
android
关于Android短信加密功能,我初步了解的如下(只在Android应用层试验):
1、因为Android有短信收发接口,可以调用接口完成短信收发;
发送过程:APP(基于短信应用修改)接受用户输入号码、内容——>APP对短信内容加密——>调用短信发送方法Sm
- asp.net在网站根目录下创建文件夹
hvt
.netC#hovertreeasp.netWeb Forms
假设要在asp.net网站的根目录下建立文件夹hovertree,C#代码如下:
string m_keleyiFolderName = Server.MapPath("/hovertree");
if (Directory.Exists(m_keleyiFolderName))
{
//文件夹已经存在
return;
}
else
{
try
{
D
- 一个合格的程序员应该读过哪些书
justjavac
程序员书籍
编者按:2008年8月4日,StackOverflow 网友 Bert F 发帖提问:哪本最具影响力的书,是每个程序员都应该读的?
“如果能时光倒流,回到过去,作为一个开发人员,你可以告诉自己在职业生涯初期应该读一本, 你会选择哪本书呢?我希望这个书单列表内容丰富,可以涵盖很多东西。”
很多程序员响应,他们在推荐时也写下自己的评语。 以前就有国内网友介绍这个程序员书单,不过都是推荐数
- 单实例实践
跑龙套_az
单例
1、内部类
public class Singleton {
private static class SingletonHolder {
public static Singleton singleton = new Singleton();
}
public Singleton getRes
- PO VO BEAN 理解
q137681467
VODTOpo
PO:
全称是 persistant object持久对象 最形象的理解就是一个PO就是数据库中的一条记录。 好处是可以把一条记录作为一个对象处理,可以方便的转为其它对象。
BO:
全称是 business object:业务对象 主要作用是把业务逻辑封装为一个对象。这个对
- 战胜惰性,暗自努力
金笛子
努力
偶然看到一句很贴近生活的话:“别人都在你看不到的地方暗自努力,在你看得到的地方,他们也和你一样显得吊儿郎当,和你一样会抱怨,而只有你自己相信这些都是真的,最后也只有你一人继续不思进取。”很多句子总在不经意中就会戳中一部分人的软肋,我想我们每个人的周围总是有那么些表现得“吊儿郎当”的存在,是否你就真的相信他们如此不思进取,而开始放松了对自己的要求随波逐流呢?
我有个朋友是搞技术的,平时嘻嘻哈哈,以
- NDK/JNI二维数组多维数组传递
wenzongliang
二维数组jniNDK
多维数组和对象数组一样处理,例如二维数组里的每个元素还是一个数组 用jArray表示,直到数组变为一维的,且里面元素为基本类型,去获得一维数组指针。给大家提供个例子。已经测试通过。
Java_cn_wzl_FiveChessView_checkWin( JNIEnv* env,jobject thiz,jobjectArray qizidata)
{
jint i,j;
int s