开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
博客专区 - 开源中国社区

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

微信小程序云端增强 SDK接入

XpmJS可以链接任何云端资源,为小程序、移动应用提供云资源通道和后端能力。降低开...
第九程序 发布于 2小时前 阅读 21

你知道Thread线程是如何运作的吗?

我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运&#...
CoorChice 发布于 3天前 阅读 3334 评论 22 点赞 16

一种新的移动APP保持登陆的实现机制介绍

新的移动APP保持登陆的安全机制
huanghq 发布于 6天前 阅读 441 评论 17

iOS直播--Nginx服务器搭建和RTMP,HLS推流实现

### Nginx介绍 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 > 简言之,Nginx本身是一个非常出色的HTTP服务器,具有占用内存少,高并发的特点。 安装 ``` brew install nginx-full --with-rtmp-module ``` 验证 ``` 终端输入 nginx 启动服务器 在浏览器中输入:http://localhost:8080,如下图,则开启成功。 ``` ![输入图片说明](https://static.oschina.net/uploads/img/2017...
她吃西红柿 发布于 1周前 阅读 983 评论 5

App开启深度链接

App开启深度链接,url直接启动app
veidy 发布于 1周前 阅读 411 评论 4

基于ProtocolBuffer和ysocket的Swift即时通讯服务器搭建

### 介绍 Protocol Buffers (ProtocolBuffer/ protobuf )是Google公司开发的一种数据描述语言,类似于XML能够将结构化数据序列化,比起XML它更简单,文件更小,传输解析更快,原生支持java、c++、python,如果要在 iOS 上使用,可以直接使用 C++.但是编译过程很麻烦,因此这里使用的是第三方的库. Swift : https://github.com/alexeyxo/protobuf-swift ObjC : https://github.com/aerofs/protobuf-objc ### 优势 * 直接传递C/C++语言中一字节对齐的结构体数据,只要结构体的声明为定长格式,那么该方式对于C/C++程序而言就非常方便了,仅需将接收到的数据按照结构体类型强行转换即可。事实上对于变长结构体也不会非常麻烦。在发送数据时,也只需定义一个结构体变量并设置各个成员变量的值之后,再以char*的方式将该二进制数据发送到远端。反之,该方式对于Java开发者而言就会非常繁琐,首先需要将接收到的数据存于ByteBuffer之中,再根据约定的字节序逐个读取每个字段,并将读取后的值再赋值给另外一个值对象中的域变量,以便于程序中其他代码逻辑的编写。对于该类型程序而言,联调的基准是必须客户端和服务器双方均完成了消息报文构建程序的编写后才能展开,而该设计方式将会直...
她吃西红柿 发布于 2周前 阅读 304

使用MediaCodec和RTMP做直播推流

本项目完全开源 项目Github地址:[AndroidInstantVideo](https://github.com/ChillingVan/AndroidInstantVideo) 码云地址:[AndroidInstantVideo](http://git.oschina.net/ChillingVan/AndroidInstantVideo) 目前开源的项目或市面上的Android直播客户端主要是用ffmpeg来实现推流的。本文将介绍使用Android原生的视频编码类MediaCodec实现直播推流。 ### 数据流及大致原理 这里所说的直播,就是将你的客户端产生的视频数据,实时发送到服务器上。服务器上的数据再实时地发送到播放客户端上。 * 以视频数据为例: **获取Camera画面** 首先是摄像头拍摄得到原始画面数据,这里原始画面数据的格式我们不用管,因为我们使用的是MediaCodec,所以我们会使用 camera.setPreviewTexture(surfaceTexture) 来利用Camera获取到的画面。 此处的原理可忽略,大致说明的话,就是Camera会把获得的画面保存为OpenGL的一个纹理,我们使用这个纹理就能使用Camera的画面。 **绘制画面** 在获得画面之后,我们要把这个画面(纹理)“画”到MediaCodec上。 如何画? MediaCodec提供一张’白纸’,也就是一个Surface,供我们把纹理画到上面。此处的API是 MediaCodec.createInputSurface() 怎么画?...
量子 发布于 2周前 阅读 2037 评论 20 点赞 5

OC对象之旅 weak弱引用实现分析

# Runtime学习 -- `weak`应用源码学习 >   Runtime源码分析,带你了解OC实现过程。其中参考了大量的大神的代码以及文献,里面也有个人的见解,欢迎拍砖,欢迎交流。 ## 两种常见使用场景 ```Objective-C /// weak属性 @interface XX : XX @property(nonatomic,weak) Type* weakPtr; @end /// 代码块中使用 { /// 使用__weak __weak Type* weakPtr = [[SomeObject alloc] init]; } ``` 根据调试信息,发现两者的区别是: - 第一种进入到 `id objc_storeWeak(id *location, id newObj)方法` ``` /** * This function stores a new value into a __weak variable. It would * be used anywhere a __weak variable is the target of an assignment. * * @param location The address of the weak pointer itself * @param newObj The new object this weak ptr should now point to * * @return \e newObj */ id objc_storeWeak(id *location, id newObj) { return storeWeak (location, (objc_object *)newObj); } ``` - 第二种绕一个远路,先初始化 `id objc_initWeak(id *location, id newObj)` ``` Objective-C /** * Initialize a fresh weak pointer to some object l...
瞎折腾 发布于 2周前 阅读 641

微信小程序,一个有局限的类似 React Native 轮子!

微信小程序就是一个类似RN的轮子,可以快速开发,有一定的适用场景,但是也有其局限性。(结论是基于微信小程序的示例代码做的解读,可能存在谬误
第九程序 发布于 2周前 阅读 481 评论 4

微信小程序架构分析 (上)

相信不少上手试用了微信小程序开发者工具的开发者都会对其实现有些疑惑, 本文试图对其架构模型进行一些解析。
第九程序 发布于 3周前 阅读 758 评论 2

IOS自动进行View标记

####缘起 一切都源于我的上一篇博客,我写的是一篇 `UITableViewCell使用自动布局的“最佳实践”` ,我需要给我的图片里面的UIView元素添加上边距的标记,这让我感到很为难,我觉得我得发点时间写一个程序让这个步骤自动化,我只要一键就能让我的程序自动标记边距,这个比我要手动去标记来的酷很多不是吗! ####结果 所以,我发了点时间实现了我的想法,下面是实现的结果截图: 以及代码开源托管地址:[代码链接](http://git.oschina.net/dhar/iosdemos) ![预览图](https://static.oschina.net/uploads/img/201705/27155416_3JPg.png "预览图") ####过去几小时内的想法 静下心来整理我的想法和寻找方案,大概的整理下了一个可行性的方案以及这个方案中需要使用到的步骤,其中一些细节没有在这个步骤中体现 - 获取水平的间距:遍历父View的子View,获取某个子sourceView的右边到其他子targetView的左边的距离,把结果保存到子targetView的入度数组中 - 获取垂直的间距:遍历父View的子View,获取某个子sourceView的下边到其他子targetView的上边的距离,把结果保存到子targetView的入度数组中 - 筛选出targetView的入度数组中所以不符合的结果,删除这些结果 - 最终获取到了...
aron1992 发布于 4周前 阅读 318 评论 1

MobLink网页跳转app指定界面技术简介之 URL Scheme

在我眼里,一款 App 是否完整系统地支持 URL Schemes 已经是判断它是否优秀的标志之一。
Mob_com 发布于 4周前 阅读 67 评论 2 点赞 1

利用VIewpager实现真正的画廊,两边item可点击居中,可滑动

#利用Viewpager实现真正的Gallery, 左右条目可点击居中, 左右条目可滑动,也就是可以获得焦点 ##前言: 最近公司做一个想Gallery一样的效果,于是想在网上找个现成的,但是怎么找也没找到,就是找到一个[鸿洋大神的巧用ViewPager 打造不一样的广告轮播切换效果](http://blog.csdn.net/lmj623565791/article/details/51339751)的,但是左右条目不可点击,又不可以滑动,所以就做了个这个控件,本控件也是利用ViewPgaer做出来的 ##首先看一下效果: ![这里写图片描述](http://img.blog.csdn.net/20170524103211381?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXFfMzM0MDgyMzU=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast) 从图上可以看出, 两边的item可以被点击居中, 可以被滑动,也就是可以获得焦点 ##接下来讲一下原理 ###设置PageTransformer PageTransformer大家估计都相当熟悉吧,下面是PageTransformer的代码 public void transformPage(View page, float position) { if (position < -1) { position = -1; } else if (position > 1) { position = 1; } float tempScale = position < 0 ? 1 + position : 1 - position; float slope = (MAX...
聂志洋 发布于 1个月前 阅读 94

用两张图告诉你,为什么你的App会卡顿?

![Cover](http://upload-images.jianshu.io/upload_images/1869462-e45f4cf10981b323.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 有什么料? 从这篇文章中你能获得这些料: - 知道setContentView()之后发生了什么? - 知道Android究竟是如何在屏幕上显示我们期望的画面的? - 对Android的视图架构有整体把握。 - 学会从根源处分析画面卡顿的原因。 - 掌握如何编写一个流畅的App的技巧。 - 从源码中学习Android的细想。 - 收获两张自制图,帮助你理解Android的视图架构。 ![link](http://upload-images.jianshu.io/upload_images/1869462-59ab533d5276864e.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 从setContentView()说起 ``` public class AnalyzeViewFrameworkActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_analyze_view_framwork); } } ``` 上面这段代码想必Androider们大都已经不能再熟悉的更多了。但是你知道这样写了之后发生什么了吗?这个布局到底被添加到哪了?我的天,知识点来了! 可能很多同学也知...
CoorChice 发布于 1个月前 阅读 4959 评论 43 点赞 23 打赏 1

图文并茂解释Kotlin == 和 === 之间的差异

图文并茂解释Kotlin== 和 === 之间的意义
xiaolei123 发布于 1个月前 阅读 711 评论 15 点赞 3

产品管理40步:一个优秀的产品经理每天都做些什么?

无论您是一名在为产品管理工作费心的产品经理,还是仅仅与产品经理共事,有一件事是确定的:当您询问产品经理的定义和产品经理的工作内容时,每个人的答案可能都不一样。
TanJx 发布于 1个月前 阅读 803 评论 3 点赞 1

Visual Studio 2017 针对移动开发的新特性介绍

Visual Studio是世界上最好的IDE之一,如果是 .NET世界,那就没有之一了(^_^),而最近推出的Visual Studio 2017在移动平台方面更是加强了这一点。这个版本包含了一些非常棒的功能,包括实时单元测试、新的重构、代码提示、C#7.0的支持,以及帮助移动开发人员构建更好的移动应用程序的功能。 下面,就让我们一起来看看Visual Studio 2017中有哪些功能使得移动开发变得更加容易。 Visual Studio 2017的安装体验有所提升 Visual Studio团队提升了Visual Studio 2017这个版本的整体安装体验。新的安装过程更加直观并且触摸友好,最重要的是我们通过仅选择所需的工具,就能实现较低的磁盘占用。我们可以选择最适合我们需求的功能,例如移动开发只需要包含.NET,UWP或 .NET Core就可以。只安装所需的组件,能将下载和最终安装尺寸保持在最小状态。你可以比以前更快地入手,另外需要确保你安装的部分,只包含你最开始时所需的功能。 添加了新的项目模板 许多移动应用程序的核心只是简单的从web上取到数据列表视图。Visual Studio 2017版本创建了新的模板来应对这种情况。只需要点击几个按钮,就可以实现你的移动项目在iOS,Android和Windows 10的移动应用上的引导工作,其中包括标...
葡萄城控件技术团队 发布于 1个月前 阅读 457 评论 2

YUDBModel【绿色插件】-对象序列化、反序列化、对象一键增删改查

可替代CoreData 简单方便,存储快速,功能强大,使用非常方便,几乎能满足项目需求 代码地址:https://github.com/c6357/YUDBModel
BruceYu的博客 发布于 1个月前 阅读 52 评论 1

iOS开发利器 iMate-for iOS development

查看 Simulator App 文件,方便调试, 快速将 Archive,build和Device support 文件删除,节省SSD空间
NextDay 发布于 1个月前 阅读 327

上海交通大学黑客马拉松HACKxSJTU 呈现科技与人文的创意盛会

5月5日至5月7日,2017上海交通大学黑客马拉松HACKxSJTU在上海交通大学电子信息与电气工程学院4号楼举行,赛事由上海交通大学校团委和电子信息与电气工程学院主办,葡萄科技技术(深圳)有限公司旗下HACKx(www.hackx.org)策划承办。赛事吸引了来自国内外32所高校、15个省市的151名优秀学生开发者参赛,经过36个小时的比拼后,选手通过作品展示决出本次赛事的各项奖项。最终,来自上海交通大学的朱超捷、雷语嫣、殷国航、李子男、舒步清团队脱颖而出,获得大赛冠军。IBM、Nvidia英伟达、英语流利说、微软、商汤科技、青云、GitHub、计蒜客、真格基金、创源等企业对本次活动提供赞助和技术支持。 本次黑客马拉松针对技术开发的爱好者,由2至5名成员组成团队,具有创新思维的开发者们在36小时内一起分享经验、交流技术、合作创新,进行一款新产品的构思、设计和基本实现。 开发者的狂欢,挑战大脑极限 上海交通大学黑客马拉松HACKxSJTU为学生提供在短时间内开发软件和硬件的竞赛平台,旨在提升学生专业技能,熟悉企业开发的流程和要求,学习创造各类软硬件、应用、游戏、插件,并长期为学生们提供一个全方位施展创意才能和开发能力的平台。在比赛中选手可以与到场企业的技术开...
宋庆离 发布于 1个月前 阅读 402 点赞 2

江门服务小姐啪啪啪找一晚上全套多少

江门服务小姐啪啪啪找一晚上全套多少【183.Mc.1133.xV.3627芊芊】【各种特色,任您挑选】183.Mc.1133.xV.3627芊芊客人虐我千百遍,我待客人如初恋我们将竭诚为您服务,只有您想不到,没有我们做不到十分钟我们一定能送到您指定的酒店,十分钟我们一定能送到您指定的酒店,终身信法制晚报讯 莫名收到一份某网站发来的商品分期催款单,称其在今年3月在该网站分期购买了一部 中新网吉林4月27日电 (记者 苍雁)吉林省舒兰市官方27日通报称,25日晚,一辆载有28吨硫酸的罐车发生侧翻,有7吨左右的硫酸泄漏,造成420平方米土地受到侵蚀,并有少量硫酸进入细鳞河。目前当地相关部门正在紧急处置。4月25日晚21时10分,吉林市龙启危化品运输有限公司运输的危险品罐车沿榆江线由蛟河市往哈尔滨市方向行驶,当行驶至舒兰市上营镇马目前当地相关部门正在紧急处置 时偌鼓呛纶材鼐系瞻猛 大财神出品
biyao5966120 发布于 13小时前 阅读 25

微信小程序云端增强 SDK接入

XpmJS可以链接任何云端资源,为小程序、移动应用提供云资源通道和后端能力。降低开...
第九程序 发布于 2小时前 阅读 21

Android对View进行包裹, 实现镜面反射效果

这个在TV上用的挺多的, 网上很多都是对ImageView的图片做的, 感觉不是很好, 这里实现了一个可以对任何View做倒影的. 效果图 /** * * @className: MirrorView * @description: 对普通View做封装, 让这个View出现倒影效果, 注意,使用这个View之后, * 会让原来的View的Height扩大REFHEIGHT高度, 用来显示反射镜面, * @author: gaoshuai * @date: 2015年8月11日 上午11:31:16 */ public class MirrorView extends FrameLayout { private View mContentView; protected boolean mHasReflection = true; private static int REFHEIGHT = -1; public static Paint RefPaint = null; private Bitmap mReflectBitmap; private Canvas mReflectCanvas; public MirrorView(Context context) { super(context); if (REFHEIGHT == -1) REFHEIGHT = 100; if (RefPaint == null) { RefPaint = new Paint(Paint.ANTI_ALIAS_FLAG); RefPaint.setShader(new LinearGradient(0, 0, 0, REFHEIGHT, new int[] { 0x77000000, 0x66AAAAAA, 0x0500000, 0x0000...
SuShine 发布于 2年前 阅读 563

SQLite 常用函数

SQLite 有许多内置函数用于处理字符串或数字数据。下面列出了一些有用的 SQLite 内置函数,且所有函数都是大小写不敏感,这意味着您可以使用这些函数的小写形式或大写形式或混合形式。欲了解更多详情,请查看 SQLite 的官方文档: 序号 函数 & 描述 1 SQLite COUNT 函数 SQLite COUNT 聚集函数是用来计算一个数据库表中的行数。 2 SQLite MAX 函数 SQLite MAX 聚合函数允许我们选择某列的最大值。 3 SQLite MIN 函数 SQLite MIN 聚合函数允许我们选择某列的最小值。 4 SQLite AVG 函数 SQLite AVG 聚合函数计算某列的平均值。 5 SQLite SUM 函数 SQLite SUM 聚合函数允许为一个数值列计算总和。 6 SQLite RANDOM 函数 SQLite RANDOM 函数返回一个介于 -9223372036854775808 和 +9223372036854775807 之间的伪随机整数。 7 SQLite ABS 函数 SQLite ABS 函数返回数值参数的绝对值。 8 SQLite UPPER 函数 SQLite UPPER 函数把字符串转换为大写字母。 9 SQLite LOWER 函数 SQLite LOWER 函数把字符串转换为小写字母。 10 SQLite LENGTH 函数 SQLite LENGTH 函数返回字符串的长度。 11 SQLite sqlite_version 函数 SQLite sqlite_version 函数返回 SQLite 库的版本。 在我们开始...
Airship 发布于 2年前 阅读 1614

Android实现所有Activity全部销毁

在Android中,如果想退出Android程序,一般都是调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())等方法来实现退出程序功能,可是在实际开发中,并不能达到完全退出应用程序的效果,这是因为调用finish()、System.exit(0)、android.os.Process.killProcess(android.os.Process.myPid())只能杀死当前的activity,并不能杀死所有的activity。
ForingY 发布于 12个月前 阅读 240

iOS开发之键盘的弹出与隐藏

当界面上需要弹出键盘时,首先要注册通知监听器。 通知中心(NSNotificationCenter)提供了方法来注册一个监听通知的监听器(Observer) - (void)addObserver:(id)observer selector:(SEL)aSelector name:(NSString *)aName object:(id)anObject; observer:监听器,即谁要接收这个通知 aSelector:收到通知后,回调监听器的这个方法,并且把通知对象当做参数传入 aName:通知的名称。如果为nil,那么无论通知的名称是什么,监听器都能收到这个通知 anObject:通知发布者。如果为anObject和aName都为nil,监听器都收到所有的通知 - (void)viewDidLoad {     [super viewDidLoad];     // 监听键盘通知     //弹出键盘通知     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil];     //收起键盘通知     [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil];     //其实以上两个通知,键盘的弹出和隐藏用一个通知可以代替     [...
神户牛肉 发布于 1年前 阅读 811 点赞 2

android里各种圆角的设置

有时候我们会需要圆角的按钮或者有圆角边框的edittext。。。。
ranvane 发布于 3年前 阅读 3138 评论 1

iOS多线程网络的认识

1.多线程: 进程和线程的区别         正在进行中的程序被称为进程,负责程序运行的内存分配;每一个进程都有自己独立的虚拟内存空间。在iOS中每个进程启动后都会建立一个主线程(UI线程),这个线程是其他线程的父线程。由于在iOS中除了主线程,其他子线程是独立于Cocoa Touch的,所以只有主线程可以更新UI界面。         线程:(主线程最大占1M的栈区空间,每条子线程最大占512K的栈区空间),线程是进程中一个独立的执行路径(控制单元); 可以将耗时的执行路径(如网络请求)放在其他线程中执行;  线程不能被杀掉,但是可以暂停/休眠一条线程. 创建线程的目的:     开启一条新的执行路径,运行指定的代码,与主线程中的代码实现同时运行. 多任务调度系统:     每个应用程序由操作系统分配的短暂的时间片(Timeslice)轮流使用CPU,由于CPU对每个时间片的处理速度非常快,因此,用户看来这些任务好像是同时执行的.    常用的多线程开发有三种方式: 1.NSThread 2.NSOperation 3.GCD 三种方式是随着iOS的发展逐渐引入的,所以相比而言后者比前者更加简单易用,并且GCD也是目前苹果官方比较推荐的方式(它充分利用了多核处理器的运算性能)。 1)NSThread:   ...
鼬殿 发布于 9个月前 阅读 12

Android-点击图片不同区域显示不同信息

我先说说我自己的思路,也希望大家能告诉我更好得实现方式 思路:把一张图切成好几张图片,然后叠加绘制在一起,然后判断点击后产生得坐标,是否在所点击图片区域之类,然后判断是否点击得是透明区域,如果是透明就,传递到下层图片,如果不是直接显示内容. 代码如下: import java.util.HashMap; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Rect; import android.graphics.drawable.BitmapDrawable; import android.view.MotionEvent; import android.view.View; /** * @author HuangYunLin * */ public class RectsView extends View { private Bitmap[] mBitmaps; private Bitmap bitmap1, bitmap2, bitmap3, bitmap4; private Rect mRect[]; private HashMap<Rect, Bitmap> cacheBitMap; private Rect mRect1; private Rect rect; private float x, y; private Paint mPaint; private boolean isOnTouch; public RectsView(Context context) { super(context); cacheBitMap = new HashMap<Re...
云七八张 发布于 5年前 阅读 3656 评论 5 点赞 1

Activity学习笔记

     Activity是UI组件。一个应用通常包含多个Actvity,每个Activity都提供一个窗口用于与用户交互。每个应用会有一个作为“主”Activity的Activity,该Activity会在启动应用时显示,通过它可以启动其他Activity。当新的Activity启动时,前一个Activity会停止,并且新的Activity会被压入到“Back”栈中,获得用户焦点。"Back"栈保持了“后进新出”的特性,当用户按Back键时,当前的这个Activity出栈,前一个Activity重新恢复。     在Activity的生命周期中会有6个回调方法:onCreate()、onStart()、onResume()、onPause()、onStop()、onDestroy()。 创建Activity     创建必须自己的Activity必须继承Activity,并且覆盖Activity的生命周期方法。其中最重要的两个重要方法是:onCreate()、onPause()。 onCreate(): 系统在创建Activity时回调该方法。必须覆盖该方法,在该方法中应该用于初始化必要的组件,调用setContentView()定义用户界面。 onPause(): 用户离开当前Activity时,系统调用该方法。在该方法中应该用于保存数据修改。 下面举个例子: package org.wh.hello; import android.app.Activity; import android.os.Bundle; import android.widget....
火烧 发布于 3年前 阅读 200

android 第三方微信登录

做微信登录的时候 遇到些问题,过程并不顺利,特在此记录。
_beer 发布于 3年前 阅读 715 评论 3

Spring Boot(三) spring-boot-starter

Spring Boot是Spring框架的约定优于配置的实现,提供开箱即用的实现,这些实现都以spring-boot-starter-做前缀命名,都位于org.springframework.boot包或者命名空间下 配置方式有几类: ·命令行参数(Command Line Args)。 ·系统环境变量(Environment Variables)。 ·位于文件系统中的配置文件。 ·位于classpath中的配置文件。 ·固化到代码中的配置项。 以上几种方式按照优先级从高到低排列,高优先级方式提供的配置项可以覆盖或者优先生效,比如通过命令行参数传入的配置项会覆盖通过环境变量传入的同一配置项,当然也会覆盖其他后面几种方式给出的同一配置项。 不管是位于文件系统还是classpath,SpringBoot应用默认的配置文件名叫作application.properties,可以直接放在当前项目的根目录下或者名称为config的子目录下。 spring-boot-starter-logging 默认用的logback,可以更改为log4j和log4j2,在maven中声明类似spring-boot-starter-log4j的依赖即可 spring-boot-starter-web 自动配置springmvc和tomcat,默认run会在8080端口启动tomcat,并生成一个默认的错误页面 可以新建一个服务根路径的web请求的controller实现: @RestControllerpublic class IndexCon...
bigsloth 发布于 9个月前 阅读 294

数据库操作,BaseAdapter适配器

listView设置适配器BaseAdapter 通过执行sql语句操作数据库 通过api方式操作数据库 testTransaction事务回滚 listView设置适配器BaseAdapter package com.heima.sqlitedemo; import java.util.List; import com.heima.dao.PersonDao; import com.heima.entites.Person; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ListView; import android.widget.TextView; public class Sqlite_DBActivity extends Activity { private List<Person> personList; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main1); ListView listView = (ListView) findViewById(R.id.listview); PersonDao dao = new PersonDao(this); personList = dao.getAll(); //把view层对象ListVew和控制器BaseAdapter关...
chenruibing 发布于 2年前 阅读 987

IOS开发中ICON的正确设置图片分辨率

Icon and Image Sizes       Every app needs an app icon and a launch file or image. In addition, some apps need custom icons to represent app-specific content, functions, or modes in navigation bars, toolbars, and tab bars. Unlike other custom artwork in your app, the icons and images listed in Table 41-1 must meet specific criteria so that iOS can display them properly. In addition, some icon and image files have naming requirements (to learn about naming these files, see App Icons and App Launch (Default) Images).  Table 41-1 Size (in pixels) of custom icons and images Asset iPhone 6 Plus (@3x) iPhone 6 and iPhone 5 (@2x) iPhone 4s (@2x) iPad and iPad mini (@2x) iPad 2 and iPad mini (@1x) App icon (required for all apps) 180 x 180 120 x 120 120 x 120 152 x 152 76 x 76 App icon for the App Store (required for all apps) 1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024 1024 x 1024 Launch file or image (required for all apps) Use a launch file (see Launch Images) For iPhone 6, use a...
maybin2527 发布于 2年前 阅读 609

使用amd老旧显卡的Ubuntu16.04运行Android虚拟机报错如下

/home/bjming/Android/Sdk/tools/emulator -netdelay none -netspeed full -avd Nexus_5X_API_23 libGL error: unable to load driver: r600_dri.so libGL error: driver pointer missing libGL error: failed to load driver: r600 libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast X Error of failed request:  GLXBadContext   Major opcode of failed request:  155 (GLX)   Minor opcode of failed request:  6 (X_GLXIsDirect)   Serial number of failed request:  49   Current serial number in output stream:  48 libGL error: unable to load driver: r600_dri.so libGL error: driver pointer missing libGL error: failed to load driver: r600 libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast X Error of failed request:  GLXBadContext   Major opcode of failed request:  155 (GLX)   Minor opcode of failed request:  6 (X_GLXIsDirect)   Serial number of failed request:  49   Current serial number in output stream:  48 li...
百世经纶之傲笑红尘 发布于 8个月前 阅读 41

关于百度坐标系 (BD-09)与火星坐标系 (GCJ-02)以及WGS84坐标之间的互相转换

坐标系之间的转换
冰泪_ 发布于 2个月前 阅读 32

十二星座运势接口代码示例分享

运势查询也是一种大众化的娱乐方式,星座运势接口方便查询十二星座的今日运势,下面分享的是今日或明日运势格式和本周或下周运势格式。
请天点 发布于 2年前 阅读 126

安装Cocoapods,以及其中出现的问题

安装pod,iOSer入门cocoaPod第三方包管理工具 另外有发布开源pod的全教程!
iShown 发布于 1年前 阅读 843 点赞 1

一元夺宝类项目的被拒

3. 1.1 BUSINESS: PAYMENTS - IN-APP PURCHASE 5. 3 LEGAL: GAMBLING, GAMING, AND LOTTERIES 
no_wait 发布于 9个月前 阅读 271

iOS9在ionic下出现的问题

iOS9在ionic下出现的问题
java_speed 发布于 2年前 阅读 3228

你知道Thread线程是如何运作的吗?

我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运&#...
CoorChice 发布于 3天前 阅读 3334 评论 22 点赞 16

一种新的移动APP保持登陆的实现机制介绍

新的移动APP保持登陆的安全机制
huanghq 发布于 6天前 阅读 441 评论 17

iOS直播--Nginx服务器搭建和RTMP,HLS推流实现

### Nginx介绍 Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器,也是一个IMAP/POP3/SMTP服务器。Nginx是由Igor Sysoev为俄罗斯访问量第二的Rambler.ru站点开发的,第一个公开版本0.1.0发布于2004年10月4日。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。 > 简言之,Nginx本身是一个非常出色的HTTP服务器,具有占用内存少,高并发的特点。 安装 ``` brew install nginx-full --with-rtmp-module ``` 验证 ``` 终端输入 nginx 启动服务器 在浏览器中输入:http://localhost:8080,如下图,则开启成功。 ``` ![输入图片说明](https://static.oschina.net/uploads/img/2017...
她吃西红柿 发布于 1周前 阅读 983 评论 5

使用MediaCodec和RTMP做直播推流

本项目完全开源 项目Github地址:[AndroidInstantVideo](https://github.com/ChillingVan/AndroidInstantVideo) 码云地址:[AndroidInstantVideo](http://git.oschina.net/ChillingVan/AndroidInstantVideo) 目前开源的项目或市面上的Android直播客户端主要是用ffmpeg来实现推流的。本文将介绍使用Android原生的视频编码类MediaCodec实现直播推流。 ### 数据流及大致原理 这里所说的直播,就是将你的客户端产生的视频数据,实时发送到服务器上。服务器上的数据再实时地发送到播放客户端上。 * 以视频数据为例: **获取Camera画面** 首先是摄像头拍摄得到原始画面数据,这里原始画面数据的格式我们不用管,因为我们使用的是MediaCodec,所以我们会使用 camera.setPreviewTexture(surfaceTexture) 来利用Camera获取到的画面。 此处的原理可忽略,大致说明的话,就是Camera会把获得的画面保存为OpenGL的一个纹理,我们使用这个纹理就能使用Camera的画面。 **绘制画面** 在获得画面之后,我们要把这个画面(纹理)“画”到MediaCodec上。 如何画? MediaCodec提供一张’白纸’,也就是一个Surface,供我们把纹理画到上面。此处的API是 MediaCodec.createInputSurface() 怎么画?...
量子 发布于 2周前 阅读 2037 评论 20 点赞 5

Rocketmq 4.1.0 新特性,优化和bug修复

原文链接:http://rocketmq.apache.org/release_notes/release-notes-4.1.0-incubating/
Jasun 发布于 3天前 阅读 112

ReactNative环境配置(不使用Chocolatey)

1.下载python2并安装。 下载地址为 : https://www.python.org/ftp/python/2.7.13/python-2.7.13.amd64.msi(此处为windows64位,以下所有都为windows64位)。 2. 下载nodejs并安装。下载地址为: https://nodejs.org/dist/v6.11.0/node-v6.11.0-x64.msi 3. 打开cmd窗口(需要管理员权限),设置nmp镜像,分别输入指令并回车,命令如下: npm config set registry https://registry.npm.taobao.org --global npm config set disturl https://npm.taobao.org/dist --global 4.使用nmp安装yarn。yarn是Facebook提供的替代npm的工具。执行如下命令并等待执行结束: npm install -g yarn react-native-cli 5.安装yarn后,同样设置镜像源,命令如下: yarn config set registry https://registry.npm.taobao.org --global yarn config set disturl https://npm.taobao.org/dist --global 执行结果如下图: 6.安装jdk,具体下载和安装百度一下。 7.下载一个安卓模拟器Genymotion,下载地址如下:   https://dl.genymotion.com/releases/genymotion-2.9.0/genymotion-2.9.0-vbox.exe 具体的安装教程和使用教程可以参考这个链接 http://www.bubuko.com/infodetail-977049.html 8...
刘昌鑫 发布于 2天前 阅读 79

用两张图告诉你,为什么你的App会卡顿?

![Cover](http://upload-images.jianshu.io/upload_images/1869462-e45f4cf10981b323.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 有什么料? 从这篇文章中你能获得这些料: - 知道setContentView()之后发生了什么? - 知道Android究竟是如何在屏幕上显示我们期望的画面的? - 对Android的视图架构有整体把握。 - 学会从根源处分析画面卡顿的原因。 - 掌握如何编写一个流畅的App的技巧。 - 从源码中学习Android的细想。 - 收获两张自制图,帮助你理解Android的视图架构。 ![link](http://upload-images.jianshu.io/upload_images/1869462-59ab533d5276864e.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 从setContentView()说起 ``` public class AnalyzeViewFrameworkActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_analyze_view_framwork); } } ``` 上面这段代码想必Androider们大都已经不能再熟悉的更多了。但是你知道这样写了之后发生什么了吗?这个布局到底被添加到哪了?我的天,知识点来了! 可能很多同学也知...
CoorChice 发布于 1个月前 阅读 4959 评论 43 点赞 23 打赏 1

友盟第三方分享、登录

友盟
魔弧 发布于 2天前 阅读 58

微信小程序picker和range-key的用法

<picker bindchange="bindPickerChange" value="{{index}}" range="{{location}}" range-key="{{'name'}}"> <view class="picker"> 地州{{location[index]}} </view> </picker> range-key用于渲染picker的源是数组的情形,range-key制定了需要picker展示的内容。index是系统自动指定的array的下标,不用修改。 对应的数组内容如下: [{ "id": "XM4xZnN088X5", "name": "西双版纳州" }, { "id": "yrw6F6n30igs", "name": "昆明市" }] 注意range-key中的字段需要单引号指定。
独鸣在彼岸 发布于 2个月前 阅读 449 点赞 1

OneDrive for Windows 新特性:按需文件

 本文标签:  OneDrive OneDrive新特性 什么是按需文件 Files On-Demand helps you access all your files in OneDrive without having to download all of them and use storage space on your device.  1 Learn about OneDrive Files On-Demand 文件按需(同步)帮助你在无需完全同步所有文件和使用你设备上存储空间的时候,访问你在OneDrive中的所有文件.    全文阅读:http://whosmall.com/?post=526   写在最后:FOR Freedom 看看外边的世界,以及IT这一行,少不了去Google查资料,最后,安利一些速器代理。 加速器推荐 免费方案 付费方案 官方网站 一枝红杏加速器 免费方案暂无,稳定高速 输入8折优惠码wh80,年付只需80元/年 官网直达http://whosmall.com/go/yzhx 安云加速器 最好用的外贸VPN 最低¥30/月 官网直达http://whosmall.com/go/ay LoCo加速器 每天免费2小时 最低¥15/月 官网直达http://whosmall.com/go/loco 本文标签:  OneDrive OneDrive新特性 hosts chrome-extension Hosts管理切换工具 HostSwitchPlus  谷歌  转自 SUN'S BLOG - 专注互联网知识,分享互联网精神! 原文地址: 《OneDrive for Windows 新特性:...
yizhihx 发布于 3天前 阅读 52

Eclipse: Failed to get the required ADT version number from the SDK

**Android Studio** 更新到 **2.3** 之后,发现 **Eclipse** 不正常了,警告信息如下。(因为各种原因,有老项目没有迁移到 AS 🤣 我也很无奈呀 🤣) ![此图来自 StackOverflow 一位网友](https://static.oschina.net/uploads/img/201703/28221222_AUJI.png "此图来自 StackOverflow 一位网友") ---- 那么问题可能出在 SDK 或者 ADT 上,那么先从 SDK 这里入手。Google、StackOverflow 一番后,该尝试的都已经尝试过,我也很无奈啊!☹️ 打开 SDK 目录仔细看了看,赶脚和以前不太一样,遂打开一台 PC 对比了一番,果然坑。。。特别是 tools 目录,这样就会产生很多坑,诸如导致 traceview、SDK Manager。。。不能正常使用。 ---- ## 解决方案 **单独给 Eclipse 下载一个新的 SDK** (🤗省🤗事🤗避🤗坑🤗 ) ## Solution **Please download a new SDK for Eclipse** ## Download Old Version SDK - [https://dl.google.com/android/installer_r24.4.1-windows.exe](https://dl.google.com/android/installer_r24.4.1-windows.exe) - [https://dl.google.com/android/android-sdk_r24.4.1-windows.zip](https://dl.google.com/android/android-sdk_r24.4.1-w...
XngPro 发布于 3个月前 阅读 1855 点赞 1

App开启深度链接

App开启深度链接,url直接启动app
veidy 发布于 1周前 阅读 411 评论 4

你该了解的app自动化测试工具

现在app的开发已经是火爆的一个开发趋势,手机应用的测试也显得格外的重要,现在大部分还是停留在手动测试的状态。我们知道手机app开发,要适应不同的设备,比如一个Androidapp要适应不同的版本,不仅是要支持最新的版本,旧的版本也需要支持,这也就导致了手动测试需要购买N部android手机来手动测试,如何应对繁琐的手机测试呢?当然是使手机测试自动化。   常用的APP自动化测试的框架有以下几个:   1、Monkey Runner是AndroidSDK提供的测试工具。严格来讲Monkey Runner它其实就是一个Api工具包,它是比Monkey强大,用它是可以编写测试脚本来自定义数据、事件。唯一不足的是脚本用Python来写,对测试人员来说要求较高,它的学习成本也是比较高的。   2、Monkey是AndroidSDK自带的测试工具,它在测试过程中会向系统发送伪随机的用户事件流,比如一些按键输入、触摸屏输入、手势输入等),它可以实现对正在开发的应用程序进行一个压力的测试,同时也是有日志输出,实际上该工具只能做程序做一些压力测试,由于测试事件和数据都是随机的,并不能自己自己定义,这也是它的局限性所在。   3、Ui Automator这个工具也是Android提供的自动化测试框架,基本上支持所有的A...
jun9152143 发布于 3天前 阅读 57

微信小程序、小程序开发、 移动端网页转小程序开发

提供微信小程序开发、部署、维护、技术咨询。
coton_chen 发布于 4天前 阅读 38 打赏 1

微信开源商城 JAVA微商城全新解决方案-小V铺

开源商城源码+开放商城API+提供前端组件库三把刀,帮助您快速进行二次开发,搭建出个性化商城系统。
小V铺 发布于 3个月前 阅读 757 评论 2

RxJava2与RxJava1的简单对比

前言: RxJava 2.0已经于2016年10月29日正式发布,本人也专门抽时间研究了一下其相关特性。趁热打铁,在这篇文章里对RxJava2.0的使用进行一个简单的总结。 阅读本文前需要掌握RxJava 1.0的基本概念,如果从未接触过RxJava, 请点击这里 RxJava 2.0 VS RxJava 1.0: 1. RxJava 2.0 不再支持 null 值,如果传入一个null会抛出 NullPointerException; Observable.just(null); Single.just(null); Flowable.just(null); Maybe.just(null); Observable.fromCallable(() -> null) .subscribe(System.out::println, Throwable::printStackTrace); Observable.just(1).map(v -> null) .subscribe(System.out::println, Throwable::printStackTrace); 2. RxJava 2.0 所有的函数接口(Function/Action/Consumer)均设计为可抛出Exception,解决编译异常需要转换问题; 3. RxJava 1.0 中Observable不能很好支持背压,在RxJava2.0 中将Oberservable彻底实现成不支持背压,而新增Flowable 来支持背压。(关于背压的概念请参考本人对ReativeX的英文原文的中文翻译)   一. Observable RxJava 1.0有四个基本概念:Observable(可观察者,即...
fqian 发布于 2个月前 阅读 567

使用 Chrome 浏览器插件 Web Scraper 10分钟轻松实现网页数据的爬取

本文标签: WebScraper Chrome浏览器插件 网页数据的爬取 使用 Chrome 浏览器插件 Web Scraper 可以轻松实现网页数据的爬取,不写代码,鼠标操作,点哪爬哪,还不用考虑爬虫中的登陆、验证码、异步加载等复杂问题。 Web Scraper插件 Web Scraper 官网中的简介: Web Scraper Extension (Free!) Using our extension you can create a plan (sitemap) how a web site should be traversed and what should be extracted. Using these sitemaps the Web Scraper will navigate the site accordingly and extract all data. Scraped data later can be exported as CSV. 先看一下,我用 web scaper 爬取到的数据: 1. 知乎轮子哥粉丝 轮子哥有 54 万多粉丝,我只抓取了前 20 页400条记录 设定数据字段 2.简书七日热门数据 运行爬虫得到数据 导出数据 Web Scraper 抓取流程及要点: 安装Web Scraper插件后,三步完成爬取操作 1、Create new sitemap(创建爬取项目) 2、选取爬取网页中的内容,点~点~点,操作 3、开启爬取,下载CSV数据 其中最关键的是第二步,两个要点: 先选中数据块 Element,每块数据我们在页面上取,都是重复的,选中 Multiple 在数据块中再取需要的数据字...
taidupa 发布于 1个月前 阅读 142

阿里云适配IPV6地址 解决App Store审核被拒的问题

阿里云适配IPV6地址 解决App Store审核被拒的问题
最牛逼的代码搬运工 发布于 2个月前 阅读 427 点赞 1

仿QQ空间和微信朋友圈,高解耦高复用高灵活

先看看效果:   用极少的代码实现了 动态详情 及 二级评论 的 数据获取与处理 和 UI显示与交互,并且高解耦、高复用、高灵活。   动态列表界面MomentListFragment支持 下拉刷新与上拉加载 和 模糊搜索,反复快速滑动仍然非常流畅。 缓存机制使得数据可在启动界面后瞬间加载完成。   动态详情界面MomentActivity支持 (取消)点赞、(删除)评论、点击姓名跳到个人详情 等。 只有1张图片时图片放大显示,超过1张则按九宫格显示。         用到的CommentContainerView和MomentView都是独立的组件,既可单独使用,也可用于ListView或添加至其它ViewGroup等。   CommentContainerView复用   CommentContainerView.java  setOnCommentClickListener : 设置点击评论监听 createView : 创建View bindView : 绑定数据并显示View setMaxShowCount : 设置最多显示数量,超过则折叠 setComment : 设置评论 addCommentView : 添加评论View   1 package apijson.demo.client.view; 2 3 import android.annotation.SuppressLint; 4 import android....
TommyLemon 发布于 2个月前 阅读 2778 评论 10

iOS 改变系统UIAlertController message 的对齐方式

更新内容提示
Virgo_only 发布于 4天前 阅读 32

keytool

keytool 笔记
小D同学 发布于 21分钟前 阅读 1

sendReport

# -*- coding: UTF-8 -*- #encoding=utf-8 import sys reload(sys) sys.setdefaultencoding('utf-8') import smtplib from email.mime.text import MIMEText def send_mail(to_list, sub, content):  #to_list:收件人;sub:主题;content:邮件内容     mail_host = "192.168.5.10"  #设置服务器     mail_port = 25     mail_user = "htit.jira"    #用户名     mail_pass = "Htsc&2016@04"   #口令     mail_postfix = "htsc.com"  #发件箱的后缀     me = "工具平台"+"<"+mail_user+"@"+mail_postfix+">"   #这里的hello可以任意设置,收到信后,将按照设置显示     msg = MIMEText(content, _subtype='html', _charset='utf-8')    #创建一个实例,这里设置为html格式邮件     msg['Subject'] = sub     msg['From'] = me     msg['To'] = ";".join(to_list)     try:         s = smtplib.SMTP()         s.connect(mail_host, mail_port)  #连接smtp服务器         s.login(mail_user, mail_pass)  #登陆服务器         s.sendmail(me, to_list, msg.as_string())  #发送邮件         s.close()     exce...
清风徐来的生活 发布于 35分钟前

开源中国杭州源创会报名开始,剖析无人驾驶背后的数据库(PostgreSQL)。

趁着六月美景正好,OSC源创会带着自由、开放、分享的开源精神,也带着满满的干货主题,邀请杭州的各位来约。
源创会

<Android 应用 之路> 百度地图API使用(3)

前言 上一篇讲解并实践了百度地图基本显示,地图类型,实时交通图,热力图,地图控制和手势控制,今天看下在地图上添加view和覆盖物。 地图Logo不允许遮挡,可通过mBaiduMap.setPadding(paddingLeft, paddingTop, paddingRight, paddingBottom);方法可以设置地图边界区域,来避免UI遮挡。  其中参数paddingLeft、paddingTop、paddingRight、paddingBottom参数表示距离屏幕边框的左、上、右、下边距的距离,单位为屏幕坐标的像素密度。 —————–>利用这个来添加自定义的内容 标注覆盖物 几何图形覆盖物 文字覆盖物 弹出窗覆盖物 内容 地图上添加View  由于地图的Logo不允许被遮挡,百度自然会想办法针对一些开发者场景作出自己的调整,比如上面所说的setPadding()或者setViewPadding()一样好使,具体的使用分为两步:  第一步, mBaiduMap.setPadding(0, 0, 0, 200); 1 1 第二步, private void addView() { TextView textView = new TextView(this); textView.setText("这是用户自定义的View,这个时候logo和底部的一些内容会向上移动,因为MapView设置了底部Padding"); textView.setBackgroundResource(R.color.colorPrimary); //创建一...
丁佳辉 发布于 2小时前 阅读 3

[iOS] XAspect学习总结

Aspect是一个轻量级的面向切面编程的库。它能允许你在每一个类和每一个实例中存在的方法里面加入任何代码。 首先, 给出github地址: XAspect, 原版介绍, 可以看项目中的README, 或者详细的介绍Documents或者这个文章Aspects iOS的AOP面向切面编程的库.如果你对其源码感兴趣, 可以参考这篇文章 iOS 如何实现Aspect Oriented Programming (上) 下载源码后, 把 XAspect文件夹拖入项目, 或者如果使用Pod, 添加以下代码到你的Podfile文件: pod "Aspects" 然后, 新建一个空的 .m文件: 这里的名称可以随便起, 建议使用功能相关的名称. 接着,打开这个文件, 添加如下代码: #import "XAspect.h" #import "AppDelegate.h" // 必须要有的宏定义, 而且必须写在最前面 // AtAspect字段固定, 不能修改 // LZProjectName 这个可以自定义, 一般和自己需要注入代码的类有关 #define AtAspect LZProjectName // 需要注入代码的类 // AtAspectOfClass 固定字段, 不能修改 // AppDelegate 需要注入代码的类 #define AtAspectOfClass AppDelegate // 开辟空间, 这个参数类名需和上面的类一致 @classPatchField(AppDelegate) /** 需要添加的方法 @param - 方法类型: - 实例方法; + 类方法...
壹峰 发布于 2小时前 阅读 1

Execute shell

【web】 /usr/local/bin/sshpass -p 'P@ssw0rd' ssh root@168.168.18.141 "chown -R ftpuser1:ftpgroup /data/uat_file && chmod 755 -R /data/uat_file" /usr/local/bin/sshpass -p 'P@ssw0rd' scp -r * root@168.168.18.141:/data/uat_file/zlcft_web_25/   cd C:\aws\aws_deploy python common.py   @echo off @echo.>c:\aws\aws_compress\25\package.conf if not defined web_file_list goto end for /d %%i in (%web_file_list%) do @echo %%i >> c:\aws\aws_compress\25\package.conf cd C:\aws\aws_deploy 25.bat :end echo Please input web file list! exit -1 【business】 export MAVEN_HOME=/app/maven-3.3.9 export JAVA_HOME=/app/jdk1.8.0_121 export JRE_HOME=/app/jdk1.8.0_121 export PATH=$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$MAVEN_HOME/lib mvn clean org.jacoco:jacoco-maven-plugin:prepare-agent package -Pcoverage-per-test -Dmaven.test.failure.ignore=true sshpass -p 'P@ssw0rd' scp target/com.htsc.business-1.0.0.RELEASE.jar root@168.168.18.141:/data/uat_file/microservices/ cur...
清风徐来的生活 发布于 2小时前 阅读 4

Xamarin XAML语言教程基本页面ContentPage占用面积(二)

Xamarin XAML语言教程基本页面ContentPage占用面积(二)
大学霸 发布于 3小时前

Hbuilder内更改SVN地址(svn服务器IP变更)

公司服务器IP变更,Hbuilder内svn控制的项目需要手动变更一下地址。
刘昌鑫 发布于 3小时前 阅读 2

如何查看配置文件.mobileprovision的UUID

1、登录苹果开发者网站,下载对应的xxxx.mobileprovision文件 2、打开终端,输入以下命令: $ cat /文件路径/xxxx.mobileprovision 会打印出你配置文件的信息就可以找到对应的UUID:  
04zhujunjie 发布于 4小时前 阅读 2

关于信号栏显示问题

掉网 ECSQ CREG CGREG
HouWeiGui 发布于 17小时前 阅读 5

Photos 框架中 asset 转 iamge

![输入图片说明](https://static.oschina.net/uploads/img/201706/22200025_6zTm.png "在这里输入图片标题")
f逍遥一世 发布于 17小时前 阅读 2

Photos中常用类(获取展示功能相关)简介

简介 Photos framework是iOS8苹果提供的新的图片框架,能直接获取图片和视频,包括iCloud上面的图库。使用这个框架可以获取assets来展示和回放,编辑图片或者视频内容,或者使用系统相册、时刻、和分享到iCloud的相册来进行相关操作,本文侧重相片的获取与保存。 demo地址在这里 新特性与一些概念 获取实体&改变请求: Photos framework中的三个model类:PHAsset,PHAssetCollection,PHCollectionList,分别对应三个类型的实体:asset(图片和视频),assets集合(相册和时刻),集合列表(相册文件夹或者moment clusters)。这些对象,也成为 相片实体(photo entities),只包含元数据,同时也是read-only属性。 改变观察机制: 使用这个特性能够在其他app、设备更改了图片和视频内容或者相册的时候通知你的app,在实现观察机制前需要用PHPhotoLibrary对象先为你获取到的照片实体注册一个观察者 支持手机中的照片app的特性 使用PHCollectionList类查找获取照片中响应的时刻层级asset,使用PHAsset标记连拍照片,全景照片和高分辨率视频等。当开启iCloud图库后,Photo framework能从iCloud中获取到使用相同apple ID登陆的不同设备中的照片。 加载缓存asset和缩略图 使用PHIma...
f逍遥一世 发布于 17小时前

JPush初相识

  极光推送的使用步骤 JPush自定义通知栏1 JPush自定义通知栏2 极光推送JPush客户端与服务器端的集成 极光推送初遇 自定义通知栏,并注册点击事件  
放纵的青春 发布于 18小时前 阅读 7

JSP-----给前段填充数据的方式

1.通过标签:                结构:<标签> <%=从数据库获取数据%></标签>                 例: <div><%=list.get(0).getId() %></div>                   2.通过隐藏表单:      结构:<标签>/标签>                <隐藏表单>     <script type="text/javascript">                 获取值;        </script>         具体步骤:           <div id="div2"></div>           <input type="hidden" id="t1" value=<%=list.get(0).getName()%>>           </body> --%>           <script type="text/javascript">                             var input1=document.getElementById("t1");                      var  div2=document.getElementById("div2");                      div2.innerText=input1.value;               </script>                   给一个标签,隐藏表格,通过获取隐藏表格的值,给标签设置                  ...
发布于 19小时前 阅读 6

深入解析OkHttp3

OkHttp是一个精巧的网络请求库,有如下特性: 1)支持http2,对一台机器的所有请求共享同一个socket 2)内置连接池,支持连接复用,减少延迟 3)支持透明的gzip压缩响应体 4)通过缓存避免重复的请求 5)请求失败时自动重试主机的其他ip,自动重定向 6)好用的API 其本身就是一个很强大的库,再加上Retrofit2、Picasso的这一套组合拳,使其愈发的受到开发者的关注。本篇博客,我将对Okhttp3进行分析(源码基于Okhttp3.4)。 如何引入Okhttp3?  配置Okhttp3非常简单,只需要在Android Studio 的gradle进行如下的配置: compile 'com.squareup.okhttp3:okhttp:3.4.1' 添加网络权限: <uses-permission android:name="android.permission.INTERNET"/> Okhttp3的基本使用  okHttp的get请求okHttp的一般使用如下,okHttp默认使用的就是get请求  String url = "http://write.blog.csdn.net/postlist/0/0/enabled/1"; mHttpClient = new OkHttpClient(); Request request = new Request.Builder().url(url).build(); okhttp3.Response response = null; try { response = mHttpClient.newCall(request).execute(); String json = respons...
微笑的江豚 发布于 19小时前 阅读 5

Ztorg木马分析: 从Android root木马演变到短信吸血鬼

本月第二次,Google 从官方应用商店 Google Play 中移除了伪装成合法程序的恶意应用。被移除的应用都属于名叫 Ztorg 的 Android 恶意程序家族。目前为止,发现的几十个新的Ztorg木马的变异程序,无一例外都是利用漏洞在受感染的设备上获得root权限。 但是卡巴斯基实验室的安全研究人员发现,在2017年5月下旬以来,在最新捕获的Ztorg木马(Magic Browser、Noise Detector)的变异程序中,却发现它们并没有使用设备的root权限。黑客利用了恶意木马,在感染的设备中发送付费短信(Premium Rate SMS)并立即删除,用户资金在不知不觉中被窃取。 什么是Premium Rate SMS? Premium Rate SMS是一种付费短信模式,通过发送特殊的文本信息,用户自动扣费。例如通过手机短信捐款,办理付费业务等。最新ztorg木马利用该模式来牟利,这项技术让黑客的利益最大化,并降低了被发现的风险。 Ztorg为何这么难被检测到? 多模拟器检测功能,它可以检测到Android SDK模拟器,如genymotion,BlueStacks, buildroid。它还检测设备感染环境,这些检测很难被绕过。 使用基于XOR的字符串混淆。 采用DES-CBC加密远程服务器进行通信。 从远程服务器下载、安装和启动Android应用程序。 自去年 9 月以...
阿里聚安全 发布于 20小时前 阅读 7

UIButton圆形按钮

UIButton圆形按钮 self.but.layer.cornerRadius = self.but.frame.size.width/2.0; self.but.layer.masksToBounds = YES;  
壹峰 发布于 20小时前 阅读 3

PHP之微信开发(一)

请把文档读一遍 觉得还是不懂的请读五遍,如果不行请继续 读到你有感觉知道怎么做就行。 请记得你要先有一个服务器和域名。 不会的,请看官方手册。 http://www.sinacloud.com/doc/sae/php/storage.html 有了服务器   登录:微信开发者平台注册登录 之后会弹出  二维码 用微信验证  确定 下,进入到你的主页了。 1.进入服务器里  会有一个index.php删除了 自己在建立一个inde.php  代码如下(复制我的就好) <?php      //接入测试账号(将测试账号和服务器绑定) define("TOKEN", "xxxxx"); //要和配置的代码一致才行 $wechatObj = new wechatCallbackapiTest(); $wechatObj->valid(); class wechatCallbackapiTest {     public function valid()     {         $echoStr = $_GET["echostr"];         //valid signature , option         if($this->checkSignature()){             echo $echoStr;             exit;         }     }     public function responseMsg()     {         //get post data, May be due to the different environments         $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];     ...
Menthol 发布于 21小时前 阅读 6

树-二叉查找树

## 二叉查找树定义 二叉查找树(Binary Search Tree)又称二叉排序树(Binary Sort Tree),亦称二叉搜索树。,或者是一棵空树,或者是具有下列性质的二叉树: - 若它的左子树不空,则左子树上所有结点的值均小于它的根结点的值; - 若它的右子树不空,则右子树上所有结点的值均大于它的根结点的值; - 它的左、右子树也分别为二叉排序树。 二叉排序树通常采取二叉链表作为二叉排序树的存储结构。中序遍历二叉排序树可得到一个关键字的有序序列,一个无序序列可以通过构造一棵二叉排序树变成一个有序序列,构造树的过程即为对无序序列进行排序的过程。每次插入的新的结点都是二叉排序树上新的叶子结点,在进行插入操作时,不必移动其它结点,只需改动某个结点的指针,由空变为非空即可。搜索,插入,删除的复杂度等于树高,期望O(logn),最坏O(n)(数列有序,树退化成线性表). 虽然二叉排序树的最坏效率是O(n),但它支持动态查询,且有很多改进版的二叉排序树可以使树高为O(logn),如SBT(Size Balanced Tree),AVL,红黑树等.故不失为一种好的动态排序方法. ## 二叉查找树的实现(java) 节点实现类: ```java public class BinaryNode { T element; BinaryNode left; BinaryNode rig...
神户牛肉 发布于 22小时前 阅读 4

推送通知策略分析

>**导语:**Slack 里负责搜索与人工智能的领导 Noah Weiss 的经验分享。好的消息推送三要素:timely、personal、actionable。消息推送对用户留存率与活跃度至关重要。用户愿意打开消息推送,是对你的 App 的信任。 智能手机的发展已经有近十年时间了,而在移动设备中,推送通知的潜力不可小觑。在进入 Slack 之前,Weiss 曾在 Foursquare 工作。Weiss 也曾是 Google 数据搜索项目的主要产品经理。对于推送通知的策略、投入、指标和准则,Weiss 有着深刻的智慧。 ## 推送通知的发展 Weiss 总结了推送的三大特质:及时性、个人化和可操作性。在构建未来战略时,要考虑历史的车轮: ##### 1. 推送通知的前辈 —— 电子邮件 在早期网络时代时,推送通知的形态其实就是电子邮件。电子邮件和推送之间有很多相似的地方。同样都是通过一个地址,让用户和网站进行开放式通信,甚至于电子邮件的「取消订阅」选项,其实就相当于通知中的推送设置。 ##### 2. 手机时代 当智能手机兴起后,用户越来越频繁地通过移动设备来完成娱乐甚至办公的需求,电子邮件在充当推送功能的这方面便开始没落了。作为互联网原住民的 90 及以后的用户,其实是很难感知到更早些时候的互联网习惯是 —— 每天...
极光推送 发布于 22小时前 阅读 8

android 根据已有keystore的debug.keystore 生成

keytool -storepasswd -keystore ./hebmj.keystore keytool -changealias -keystore ./hebmj.keystore -alias hebmj -destalias androiddebugkey keytool -keypasswd -keystore ./hebmj.keystore -alias androiddebugkey 1. 拷贝一份你的发布key 2. 修改这个key的别名为:androiddebugkey 3. 修改这个key的storepasswd 和 keypasswd为"android". (实际上debug.keystore这个默认生成的key的别名就是:"androiddebugkey",两个口令是“android”)
小熊猫大暴走 发布于 22小时前 阅读 4

你知道Thread线程是如何运作的吗?

我们在Android开发过程中,几乎都离不开线程。但是你对线程的了解有多少呢?它完美运&#...
CoorChice 发布于 3天前 阅读 3334 评论 22 点赞 16

【福利】蓝色巨人的云计算PaaS平台IBM Bluemix免费试用!

IBM Bluemix,包含认知、物联网、大数据分析、安全、DevOps、应用、应用整合、移动、计算、网络、存储等 11 大类共 140 多个服务的云计算平台。
IBM Bluemix

使用MediaCodec和RTMP做直播推流

本项目完全开源 项目Github地址:[AndroidInstantVideo](https://github.com/ChillingVan/AndroidInstantVideo) 码云地址:[AndroidInstantVideo](http://git.oschina.net/ChillingVan/AndroidInstantVideo) 目前开源的项目或市面上的Android直播客户端主要是用ffmpeg来实现推流的。本文将介绍使用Android原生的视频编码类MediaCodec实现直播推流。 ### 数据流及大致原理 这里所说的直播,就是将你的客户端产生的视频数据,实时发送到服务器上。服务器上的数据再实时地发送到播放客户端上。 * 以视频数据为例: **获取Camera画面** 首先是摄像头拍摄得到原始画面数据,这里原始画面数据的格式我们不用管,因为我们使用的是MediaCodec,所以我们会使用 camera.setPreviewTexture(surfaceTexture) 来利用Camera获取到的画面。 此处的原理可忽略,大致说明的话,就是Camera会把获得的画面保存为OpenGL的一个纹理,我们使用这个纹理就能使用Camera的画面。 **绘制画面** 在获得画面之后,我们要把这个画面(纹理)“画”到MediaCodec上。 如何画? MediaCodec提供一张’白纸’,也就是一个Surface,供我们把纹理画到上面。此处的API是 MediaCodec.createInputSurface() 怎么画?...
量子 发布于 2周前 阅读 2037 评论 20 点赞 5

OC对象之旅 weak弱引用实现分析

# Runtime学习 -- `weak`应用源码学习 >   Runtime源码分析,带你了解OC实现过程。其中参考了大量的大神的代码以及文献,里面也有个人的见解,欢迎拍砖,欢迎交流。 ## 两种常见使用场景 ```Objective-C /// weak属性 @interface XX : XX @property(nonatomic,weak) Type* weakPtr; @end /// 代码块中使用 { /// 使用__weak __weak Type* weakPtr = [[SomeObject alloc] init]; } ``` 根据调试信息,发现两者的区别是: - 第一种进入到 `id objc_storeWeak(id *location, id newObj)方法` ``` /** * This function stores a new value into a __weak variable. It would * be used anywhere a __weak variable is the target of an assignment. * * @param location The address of the weak pointer itself * @param newObj The new object this weak ptr should now point to * * @return \e newObj */ id objc_storeWeak(id *location, id newObj) { return storeWeak (location, (objc_object *)newObj); } ``` - 第二种绕一个远路,先初始化 `id objc_initWeak(id *location, id newObj)` ``` Objective-C /** * Initialize a fresh weak pointer to some object l...
瞎折腾 发布于 2周前 阅读 641

用两张图告诉你,为什么你的App会卡顿?

![Cover](http://upload-images.jianshu.io/upload_images/1869462-e45f4cf10981b323.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 有什么料? 从这篇文章中你能获得这些料: - 知道setContentView()之后发生了什么? - 知道Android究竟是如何在屏幕上显示我们期望的画面的? - 对Android的视图架构有整体把握。 - 学会从根源处分析画面卡顿的原因。 - 掌握如何编写一个流畅的App的技巧。 - 从源码中学习Android的细想。 - 收获两张自制图,帮助你理解Android的视图架构。 ![link](http://upload-images.jianshu.io/upload_images/1869462-59ab533d5276864e.JPG?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) # 从setContentView()说起 ``` public class AnalyzeViewFrameworkActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_analyze_view_framwork); } } ``` 上面这段代码想必Androider们大都已经不能再熟悉的更多了。但是你知道这样写了之后发生什么了吗?这个布局到底被添加到哪了?我的天,知识点来了! 可能很多同学也知...
CoorChice 发布于 1个月前 阅读 4959 评论 43 点赞 23 打赏 1

Android 的滑动分析以及各种实现

一、滑动效果的产生     滑动一个View,本质区别就是移动一个View。改变当前View所在的坐标,原理和动画相似不断改变坐标位置实现。实现View的滑动就必须监听滑动的事件,并且根据事件传入的坐标,动态且不断改变View的坐标,从而实现View跟随用户触摸的滑动而滑动。 (1)、Android的坐标系         Android中将屏幕最左上角的顶点作为Android坐标系的原点,从这个点向右是X轴正方向,从这个点向下是Y轴正方向,如下图:          系统提供了getLocationOnScreen(int location[])这样的方法来获取Android坐标系中点的位置,即该视图左上角在Android坐标系中的坐标。在触控事件中使用getRawX()、getRawY()方法所获得的坐标同样是Android坐标系中的坐标。  (2)、视图坐标系     Android中除了上面所说的这种坐标系之外,还有一个视图坐标系,它描述了子视图在父视图中的位置关系。这两种坐标系并不矛盾也不复杂,他们的作用是相互相成的。与Android坐标系类似,视图坐标系同样是以原点向右为X轴正方向,以原点向下为Y轴正方向,只不过在视图坐标系中,原点不再是Android坐标系中的屏幕最左上角,而是以父视图左上角为坐标原点,如下图:     在触控...
MrXI 发布于 2个月前 阅读 1560 评论 7 点赞 3

Android基础夯实--你了解Handler有多少?

万丈高楼平地起,学习任何东西我们都离不开扎实的基础知识。本编文章通过对Handler相关知识的全面回顾,给Android开发者重新夯实基础。
Ryane 发布于 3个月前 阅读 1897 评论 8 点赞 2

Service Worker:让网页无网络也能访问

想要开发一个 PWA(Progressive Web App)应用,你必须知道首先知道,Service Worker 是什么,他是怎么工作的。
kymjs张涛 发布于 4个月前 阅读 2770 评论 7 点赞 2

UICollectionView详解

标准的UICollectionView包含三个部分,它们都是UIView的子类: Cells 用于展示内容的主体,对于不同的cell可以指定不同尺寸和不同的内容,这个稍后再说 Supplementary Views 追加视图 如果你对UITableView比较熟悉的话,可以理解为每个Section的Header或者Footer,用来标记每个section的view Decoration Views 装饰视图 这是每个section的背景 UICollectionViewDataSource(与数据相关) section的数量 -numberOfSectionsInCollection: 某个section里有多少个item -collectionView: numberOfItemsInSection: 对于某个位置应该显示什么样的cell -collectionView: cellForItemAtIndexPath: Supplementary View的方法(section头部视图,section尾部视图) collectionView: viewForSupplementaryElementOfKind: atIndexPath: UICollectionViewDelegate(与数据无关) 关于用户交互,UICollectionView也做了改进。每个cell现在有独立的高亮事件和选中事件的delegate,用户点击cell的时候,现在会按照以下流程向delegate进行询问: -collectionView:shouldHighlightItemAtIndexPath: 是否应该高亮? -collectionView:didHighlightItemAtIndexPath: 如果1返回结果为是,那么高亮 -c...
业界小白 发布于 4个月前 阅读 1085 评论 1 点赞 1

iOS中ImageIO框架详解与应用分析

ImageIO框架提供了读取与写入图片数据的基本方法,通过它可以实现对图片数据的深入分析与内容修改。
珲少 发布于 4个月前 阅读 1381 评论 4

小程序如约而至,微信小程序玩法大起底!!

博卡君的小程序使用教程
博卡君 发布于 5个月前 阅读 7156 评论 10 点赞 5

Lua与ObjC的交互

在这里,我想跟大家分享另外一种脚本语言的交互方式,就是使用Lua与原生的ObjC语言进行交互。
vimfung 发布于 6个月前 阅读 2009 评论 7

手把手教你, Jenkins构建iOS项目

Jenkins构建iOS项目 自动拉取GitHub/SVN 上传到fir/蒲公英
她吃西红柿 发布于 7个月前 阅读 2962 评论 7 点赞 6

自己动手实现Android App插件化

Android插件化目前国内已经有很多开源的工程了,不过如果不实际开发一遍,很难掌握的很好。 下面是自己从0开始,结合目前开源的项目和博客,动手开发插件化方案。 按照需要插件化主要解决下面的几种问题: 1. 代码的加载 (1) 要解决纯Java代码的加载 (2) Android组件加载,如Activity、Service、Broadcast Receiver、ContentProvider,因为它们是有生命周期的,所以要特殊处理 (3) Android JNI代码的加载 (4) Android 特殊控件的处理,如Notification等 2. 资源加载 不同插件的资源如何管理,是公用一套还是插件独立管理? 因为在Android中访问资源,都是通过R. 实现的,   下面就一步步解决上面的问题 1. 纯Java代码的加载 主要就是通过ClassLoader、更改DexElements将插件的路径添加到原来的数组中。 详细的分析可以参考我转载的一篇文章,因为感觉原贴命名和结构有点乱,所以转载记录下。 https://my.oschina.net/android520/blog/794715 Android提供DexClassLoader和PathClassLoader,都继承BaseDexClassLoader,只是构造方法的参数不一样,即optdex的路径不一样,源码如下 // DexClassLoader.java public class DexClassLoader extends BaseDexClassLoader { pu...
xingjm8511 发布于 7个月前 阅读 3050 评论 2 点赞 7

使用原生JS封装Tap事件,解决移动端300ms延迟

为了防止误操作,移动端iOS操作系统针对原生click事件做了300ms的延迟,这在一定程度上影响了我们的使用体验。 GitHub项目地址:https://github.com/SimonZhangITer/MyTapEvent FastClick 现在有现成的插件fastclick可以解决这个问题,但是也有弊端: GitHub上最新版本的插件大小为25.4kb,轻量为趋势,能省则省。 它的核心思想是取消默认的click时间,判断当前dom节点的类型进行相应的操作,这个判断过程较为繁琐。 MyTapEvent 本人最近在做微信项目,由于fastclick插件存在一定弊端,因此开发了一个简单的tap事件,主要思想有以下几点: Thinking 一次tap事件包含touchstart和touchmove(轻微移动)以及touchend三种状态 callback方法在touchend后执行 根据chrome浏览器默认的判断取消点击的移动量,手指偏移量(水平或垂直)超过15px则判定为滚动,取消执行tap事件 手指按下时间过长不视为点击,默认时间间隔为500ms 使用HTMLElement来扩充原型,方便添加Event 使用单例模式,确保只加载一次 ok,思想定下来,代码写起来就清晰多了: if (!HTMLElement.prototype.addTapEvent) { HTMLElement.prototype.addTapEvent = function(callback) { var tapStartTime ...
Simon_ITer 发布于 7个月前 阅读 2278 评论 6 点赞 2

iOS开发CoreGraphics核心图形框架之六——梯度渐变

开发中有时会使用梯度渐变视图,在CoreGraphics框架中,提供了这个类型来创建梯度渐变:CGShadingRef与CGGradientRef。
珲少 发布于 7个月前 阅读 1071 评论 4 点赞 3

Ionic2:创建App启动页滑动欢迎界面

每个有逼格的App在第一次启动时都有一个欢迎界面,通常是几个单页面或者带动画的单页面滑动到最后一页有个启动的按钮,本文将使用Ionic2来创建,So easy!
_飞哥 发布于 8个月前 阅读 3810 评论 20 点赞 4

5款微信小程序开发工具使用报告,微信官方开发工具还有待提升

微信小程序已经内测有一段时间了,笔者本着好奇加学习的心态写了几个小demo,虽然在MINA框架上并没有遇到太多的坑,但官方开发工具实在不敢恭维。 - api提示不全,要一个个查api啊,写代码超级慢啊 - 很多必备的快捷键都没有,比如全选关键字、快速复制一行等等 - 颜色主题不能选?不喜欢白色风格怎么搞 - 没有插件 没有插件 没有插件 重要的事情说三遍 无奈笔者走上了尝试各种IDE的旅途,现在说一下笔者对于IDE的需求或者设想: - 轻量级:我不喜欢那种类似Eclipse的庞然大物,即使出现类似工具我也不会去使用,因为其中90%的功能都不会被用到。 - 可定制化的代码着色:代码着色是必备功能,如果支持颜色模板最好 - 准确的代码提示:这个太重要了,大家懂得 - 可调试:IDE可以进行调试或运行 - 实时预览界面:由于应用开发与网页不同,实时预览必须在程序运行时才会将动态数据加载到界面,这块我不抱太大希望 针对上面几个需求,笔者前后尝试了目前市面上支持小程序开发的工具,呕心沥血总结如下,以供大家参考。 ## 微信小程序官方开发工具 ![](http://upload-images.jianshu.io/upload_images/1846413-1588b61a769c9b16.gif?imageMogr2/auto-orient/strip) 注意,这个小...
memda 发布于 8个月前 阅读 4872 评论 13 点赞 7

深入理解gradle编译-Android基础篇

Gradle基于Groovy的特定领域语言(DSL)编写的一种自动化建构工具,Groovy作为一种高级语言由Java代码实现,本文将对Gradle一些常见问题进行一一介绍。
小米墨客 发布于 8个月前 阅读 3505 评论 7 点赞 12 打赏 1

番外篇!全球首个微信应用号开发教程!小程序 DEMO 视频奉上!

博卡君的微信小程序 demo 来啦!
博卡君 发布于 8个月前 阅读 21132 评论 8 点赞 4

android初探ndk开发-eclipse版

正如其他所说,ndk r7开始,无需使用cygwin,就能生成so文件。对我这些菜鸟非常有帮助 - - 在eclipse新建一个android project,在根目录创建一个jni目录,如图所示: 在src目录创建一个JniTest.java文件,我的包名是com.mo.android_jni_2016.JniTest,如图所示: 在JniTest.java里面写上native代码 public class JniTest { public static native String addStr(String str1, String str2); public static native int addInt(int int1, int int2); } 由于eclipse能很方便能生成JniTest.class文件,只需要到对应的项目工程路径下,就能找到class文件,文件路径如类似:E:\xxxx\eclipse\workspace\Android_Jni_2016\bin\classes,在cmd下,使用javah com.mo.android_jni_2016.JniTest.class,就能在classes目录下,生成了一个com_mo_android_jni_2016_JniTest.h文件,如图所示: /* DO NOT EDIT THIS FILE - it is machine generated */ #include <jni.h> /* Header for class com_mo_android_jni_2016_JniTest */ #ifndef _Included_com_mo_android_jni_2016_JniTest #define _Included_com_mo_android_jni_2016_JniTest #ifdef __cplusplus extern "C" { #endif /* ...
executor 发布于 9个月前 阅读 2451 评论 7 点赞 3
顶部