开源中国

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

It appears you’re using an unsupported browser

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

精彩阅读

  • 最新推荐

  • 今日热门

  • 本周热门

  • 每日一博

  • 最新文章

iOS使用shell脚本注入混淆内容

使用shell脚本简化重复工作,提高工作效率666
aron1992 发布于 6天前 阅读 88

iOS事件处理,看我就够了~

##### 该文章属于<简书 — 刘小壮>原创,转载请注明: [<简书 — 刘小壮> https://www.jianshu.com/p/b0884faae603](https://www.jianshu.com/p/b0884faae603) ------ > 好久没写博客了,前后算起来刚好有一年了。这期间博客也不是一直没变化,细心的同学应该能发现,我一直在回复评论区和私信的问题,还更新了好几篇之前的博客。 > > 去年是有意义的一年,从各个方面我也学到了不少的东西,也不局限于技术方面。很多人都写年终总结,我比较懒就不写了,内心做自我总结吧,哈哈😀。 > > 回归正题,在项目中经常会遇到各种手势或者点击事件处理之类的,这些都属于响应事件处理。但是很多人对iOS中的响应事件处理并不清楚,经常会遇到手势冲突、事件不响应之类的问题,所以就去查博客。 > 但是现在很多博客写的并不是很完整,或者说质量并不高,我这两天抽时间把我所学习和理解的iOS事件处理写出来,供各位参考。 ------ ![博客配图](http://upload-images.jianshu.io/upload_images/270478-ca5b523e9440fe99.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### UIResponder **`UIResponder`是iOS中用于处理用户事件的API,可以处理触摸事件、按压事件`(3D touc...
刘小壮 发布于 1周前 阅读 175

iOS 使用Instruments优化内存性能

Instrument是Xcode自带的性能分析工具,这篇文章介绍其中的一个Allocations Profiler工具,找到APP中的内存性能问题,并且去优化解决这个性能问题。
aron1992 发布于 2周前 阅读 34

Android带有粘性头部的ScrollView

**前言,一天在点外卖的时候,注意到饿了么列表页的滑动效果不错,但是觉得其中的手势滑动还是挺复杂的,正好又碰到了在熟悉Touch事件的理解当中,所以就抽空对着饿了么的列表页面尝试写写这个效果** ## 1.先贴一个实现的效果图 逻辑是当外部的ScrollView没有滑到底部的时候,往上滑动的时候,是滑动外部的ScrollView,当外部的ScrollView到达底部的时候,我们再网上滑,就是滑动内部的列表了,另外在左右滑动的时候,当左右滑动的距离大于minPageSlop的话,那么就执行左右滑动。 如下是仿饿了么的列表页的效果图: ![](https://user-gold-cdn.xitu.io/2018/1/17/161024c1b081e3b6?w=283&h=500&f=gif&s=1838673) ## 2.引入 ``` 在项目根目录的build.gradle文件下增加jitpack的repo地址 allprojects { repositories { jcenter() maven { url "https://jitpack.io" } } } 在需要引入的module中引入library dependencies { implementation 'com.github.WelliJohn:StickScrollView:0.0.3' } ``` ## 3.界面的布局说明 ``` //这里是header部分,可以随便自定义 ``` 比如我们看到的仿饿了么的列表页界面,我们就需要在ViewPager设置Fragment,fragment中是左右两个列表,看下fragm...
WelliJohn 发布于 2周前 阅读 105 评论 5 点赞 1

Android WebView详解(二):Android原生与JS互调

#### Android 去调用JS 的代码 - 通过WebView的loadUrl() 先写一个html,很简单的一个代码,alert显示。 android\_load\_js.html Android调用 JS 代码demo // JS代码 在Activity中 mWebSettings = mWebview.getSettings(); //与JS交互开关 mWebSettings.setJavaScriptEnabled(true); //设置允许JS弹窗 mWebSettings.setJavaScriptCanOpenWindowsAutomatically(true); mWebview.loadUrl("file:///android_asset/android_load_js.html"); //在这我用了一个TextView 点击事件中去调用JS中的方法 beginLoading.setOnClickListener(new View.OnClickListener() { [@Override](https://my.oschina.net/u/1162528) public void onClick(View view) { //执行JS方法 mWebview.loadUrl("javascript:callJS()"); } }); mWebview.setWebChromeClient(new WebChromeClient() { //获取网站标题 [@Override](https://my.oschina.net/u/1162528) public void onReceivedTitle(WebView view, String title) { System.out.println("标题在这里"); mtitle.setText(title); } //获取加载进度 [@Override](https://my.oschina.net/u/1162528) public void onProgressChanged(WebView view, int ...
蔡小鹏 发布于 2周前 阅读 204

腾讯技术分享:社交网络图片的带宽压缩技术演进之路

为了进一步降低运营带宽成本,减小用户访问流量及提升页面加载速度,社交网络 CDN运维紧跟行业图片优化趋势,创新引入WebP、SharpP、自适应分辨率、Guetzli等图像压缩技术到现网,经过三年多的多部门联合攻关,已逐渐形成一套覆盖全图片类型(JPEG、JPG、PNG、WebP、GIF)多场景的图片压缩运营体系,适用于各类型终端,每年节约外网带宽几百G。
JackJiang- 发布于 2周前 阅读 3754 评论 7 点赞 3

Ionic3学习笔记(十四)使用 videogular2 实现视频播放以及遇到的一些问题

**本文为原创文章,转载请标明[出处](http://metaphors.name/coding/2018/02/04/Ionic14.html)** ## **目录** 1. 使用 videogular2 - 安装 - 增加图标、字体支持 - 导入 module - 举个例子 2. 遇到的问题 - iOS 端自动进入全屏播放 - Android 端 autoplay 不起作用 3. 更多 ## **1. 使用 videogular2** ### **安装** 终端运行: ``` npm install videogular2 --save npm install @types/core-js --save-dev ``` ### **增加图标、字体支持** videogular2 GitHub 地址:https://github.com/videogular/videogular2 git clone 下来,将它的 `fonts` 文件夹 copy 到你的 Ionic 项目的 `assets` 文件夹中,在 `index.html` 中引入 videogular 的 css 文件: ``` ``` ### **导入 module** 导入你要使用 videogular2 的 page 的 module,比如说我要在 `trailer.html` 中使用,那我就导入到 `trailer.module.ts` 中。 ``` import {NgModule} from '@angular/core'; import {IonicPageModule} from 'ionic-angular'; import {VgCoreModule} from 'videogular2/core'; import {VgControlsModule} from 'videogular2/controls'; import {VgOverlayPlayModule} from 'videogular2/...
Metaphors 发布于 2周前 阅读 211

iOS CALayer anchorPoint 的应用场景

## 背景 最近在看《ios核心动画高级技巧》,这本书的中文版本可以在[iOS Core Animation: Advanced Techniques中文译本 ](https://www.gitbook.com/book/zsisme/ios-/details) 这里找到,看到图形几何学这一章,其中讲到的 `CALayer` 的 `anchorPoint` 属性,发现不是很了解,所以自己发了点时间做了些研究,做了点简单的总结,主要涉及到以下主题: - anchorPoint 是什么 - anchorPoint 应用场景 本文的Demo[DrawDemo](https://gitee.com/dhar/iosdemos/tree/master/DrawDemo) ## anchorPoint 是什么 >图层的anchorPoint通过position来控制它的frame的位置,你可以认为anchorPoint是用来移动图层的把柄。 上面是《ios核心动画高级技巧》书中对 `anchorPoint` 的解释,只看概念可能会不好理解,下面用两个例子来解释`anchorPoint`的概念。 ### 例一:修改了anchorPoint 对图层的影响 如图所示,创建一个Frame为(100, 200, 100, 100)的蓝色layer,橙色的layer是修改了anchorPoint为CGPointMake(1, 1)之后的结果 ![修改anchorPoint对图层的影响1](https://static.oschina.net/uploads/img/201802/03203624_9j8h.png "修改anchorPoint对图层的影响1") 1、分析蓝色layer 默认的...
aron1992 发布于 2周前 阅读 127

Android RetainFragment状态保存

Android RetainFragment状态保存
IamOkay 发布于 3周前 阅读 65

Java中的微信支付

微信支付文档上有刷卡支付,扫码支付,公众号支付,APP支付等各种支付手段。本次就微信内打开的网页支付为例子,用java进行实现一下。微信内网页支付可以将其归属为公众号支付。 一、设置支付目录 打开微信商户平台,设置路径:商户平台-->产品中心-->开发配置,如图7.7所示。公众号支付在请求支付的时候会校验请求来源是否有在商户平台做了配置,所以必须确保支付目录已经正确的被配置,否则将验证失败,请求支付不成功。 二、设置授权域名 开发公众号支付时,在统一下单接口中要求必传用户openid,而获取openid则需要您在公众平台设置获取openid的域名,只有被设置过的域名才是一个有效的获取openid的域名,否则将获取失败。 完成以上两步后,微信端的支付端口就能够被我们的网站调用了。 三、分析业务时序图 微信在官方文档中用时序图反映了其对应的业务流程。 根据此图,可以看出流程大致为:自己的java后台生成付款链接,用户点击链接,在java后台中生成商户订单,将此订单按照微信的格式发送给微信支付系统,微信支付系统生成一个预付单给java后台,然后在java后台中生成支付参数返回给用户,用户点击付款,会向微信支付系统检查支付参数的合法性,确认无误后即可完成...
JavionXiong 发布于 3周前 阅读 596 评论 3 点赞 1

近期大热的实时直播答题系统的实现思路与技术难点分享

自HQ Trivia取得成功之后,市场上又相继出现了不少类似的游戏直播、答题直播等应用。直播答题已经是风口,毋容置疑。对攻城狮们来说,2018 年春节是个坎,直播答题技术做细致做到位了,才能安心过个好年。
JackJiang- 发布于 3周前 阅读 642 点赞 1

wx-jq:一套完全原创的微信小程序插件集合库

一套完全原创的微信小程序插件集合库
透笔度 发布于 4周前 阅读 668 评论 2 点赞 1

Android 广播优先级研究

Android 广播优先级研究
IamOkay 发布于 1个月前 阅读 108 点赞 2

iOS使用观察者模式实现推送消息模块化

## 背景 前段时间做了一些项目解耦重构和一些组件化的工作,推送是很多app种涉及到的应用场景,所以把推送模块做了一些重构的工作,让推送模块能够独立于业务适用于各种的业务场景。 本文的代码链接:[PTNotificationManager](https://gitee.com/dhar/iosdemos/tree/master/PTNotificationManager) ## 分析 推送消息模块和其他模块从技术角度来看是属于同一级别的模块,推送消息模块为了能够和其他业务组件之间既有通信又能解耦,这复合设计中的控制反转原则,依赖的双方依赖于对方的抽象而不依赖于具体的实现,观察者模式就是一种典型的控制反转场景,观察者模式很适合推送模块的独立和解耦。 ## 实现 ### 观察者模式简析 ![观察者模式类图](https://static.oschina.net/uploads/img/201801/19224522_EG66.png "观察者模式类图") 这是一个简单的观察者的类图结构 - 抽象接口 `Subject` 有一个注册观察者的方法 - 抽象接口 `Observer` 有一个获取 `Subject` 数据更新的方法 - `Subject` 和 `Observer` 具体的子类重写对应的方法,处理数据 - 有新的消息,`ConcreateSubject` 会把消息发送给已注册的`ConcreateObserver`, `ConcreateObserver` 负责接收消息进行处理 ### 代...
aron1992 发布于 1个月前 阅读 116

iOS 组件化实现的一些思路总结

![组件化](https://static.oschina.net/uploads/img/201801/19091913_KDTe.jpg "组件化") ## 背景 大概在一个月之前,公司有一个需求需要出一个功能和业务逻辑和当前应用相同的新版本,所有的UI重新设置过而不止是配色字体图标等信息的简单修改。因为当时排期相对的不太紧,所有决定把整个项目做一个重构,为了实现更好的重构,发了点时间看了大概30多篇关于组件化的博客和文章,也会把这些文章的链接贴在底部,然后动手开工了,今天有时间把这次重构过程中的一些想法总结下。 本文主要涉及到以下几个主题: - 组件化遵循的原则 - 组件化分层模型 - 组件化集成方法 ## 遵循原则 - 高层依赖底层,下层不能对上层有依赖的关系 这点是基本的设计原则,可以通过依赖倒置来设计。 - 同层级的模块不依赖或者尽量少依赖 这点同时也是基本的设计原则,可以通过控制反转来设计,典型的就是使用观察者模式来实现同一个层级模块的解耦。 - 最小知识原则和自完备性 一个独立的模块尽量减少对其他低层模块的依赖,比如一个模块只是依赖低层模块的某个类的方法,不妨把这个方法拷贝到此模块中,如此一来这个模块就具有了更好的自完备性。 ## 分层结构 ![分层模块图2](https://static.osc...
aron1992 发布于 1个月前 阅读 63

IM开发基础知识补课:正确理解前置HTTP SSO单点登陆接口的原理

一个典型的IM系统中最为重要也是用户最先接触到的——就是基于Http的SSO单点登陆接口(有的系统里可能并不叫SSO接口,本文讨论的是其广义:即实现身份认证功能的http接口),那么这个SSO接口工作原理是什么?可以怎么来实现?有无最佳实践建议?
JackJiang- 发布于 1个月前 阅读 300 评论 2 点赞 1

WebView与JavaScript交互的四种形式

WebView如果作为简单的网页浏览器,对于一般的浏览行为来说,已经足够了。可做为企业开发者,你的App通常要嵌入自家公司的网页,如此一来,还得考虑App与Web之间的消息传递,这就涉及到App的原生代码与Web的JS代码之间的通信了。 App与Web做为消息通信的双方,具体的交互行为分为四类,包括:App通知Web执行某项动作、App主动从Web获取信息、Web通知App执行某项动作,Web主动从App获取信息,这四种行为详细说明如下: 1. App通知Web执行某项动作 Web提供一个JavaScript方法,然后App由WebView调用loadUrl加载该JS方法,具体的App代码如下所示:         wv_js.loadUrl("javascript:showMsgFromWeb()"); 该行为的执行效果如下图所示,App通知JS调用showMsgFromWeb方法,该方法弹出了一个alert消息框。 2. App主动从Web获取信息 WebView对象调用evaluateJavascript方法,该方法通过回调接口ValueCallback获得JS的返回串,具体的App代码如下所示:         if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {             // evaluateJavascript该方法为4.4以后引入             wv_js.evaluateJavascript("getMsgFromWeb()", new V...
ouyangshen 发布于 1个月前 阅读 367 评论 5 点赞 2

iOS使用fastlane实现持续集成

![fastlane](https://static.oschina.net/uploads/img/201801/19092148_kcuc.png "fastlane") ## 前言 最近公司有打渠道包的需求,领导说使用fastlane来做持续集成,发了点时间研究了下,所有有了这篇文章 本文主要涉及到以下几个主题: - fastlane是什么和为什么使用fastlane - fastlane安装和设置 - 在项目中集成fastlane ## 是什么和为什么 fastlane是一款使用ruby实现的跨平台的持续集成工具,支持安卓和iOS平台项目的持续集成实践,fastlane处理提供基本的但是很强大的包含了:初始设置、屏幕截图、打包、上传到测试平台、部署等功能。此外还有大量的第三方插件可以使用,比如fir插件支持上传beta版本到fir测试平台,appicon插件支持自定义某个子版本的应用图标,还有很多不胜枚举。 因为项目的配置、打包、上传等一系列操作是耗时且没有技术含量的工作,所以有了fastlane可以为我们节省大量的没有什么价值的时间花费,以提高我们的工作效率。 ## fastlane安装和设置 ### 安装 支持三种方式安装 - 使用brew安装 ```sh brew cask install fastlane ``` - 使用gem安装 ```sh sudo gem install fastlane -NV ``` - 下载安装包安装 [fastlane下载](https://download.fast...
aron1992 发布于 1个月前 阅读 97

Redis 通讯协议分析

Redis 通讯协议分析
IamOkay 发布于 1个月前 阅读 368

paho.mqtt.android代码逐步分析(三)

MQTT与webSocket Mqtt底层使用webSocket实现,通过发送http或https请求与服务端开始进行handshake,握手完成后协议将从http(https)升级成webSocket并建立长连,之后通过长连进行通信。sdk中关于websocket部分结构及handshake信息如下: MQTT心跳包 分析心跳包首先看用于发送心跳信息的MqttPingReq.class和用于接收心跳答复的MqttPingResp.class 然后,我们需要从其发送的内容当中逆向推出其心跳包的内容。我 们先看其发送的的模块:找到public class CommsSender implements Runnable 类,看到其有一个private MqttOutputStream out;私有字段,一看这个方法,我们就能判断,这个字段就是输出流,打开public class MqttOutputStream extends OutputStream这个类,你会看到这样一个方法: /** * Writes an <code>MqttWireMessage</code> to the stream. */ public void write(MqttWireMessage message) throws IOException, MqttException { final String methodName = "write"; byte[] bytes = message.getHeader(); byte[] pl = message.getPayload(); // out.write(message.getHeader()); // out.write(message.getPayload()); ...
Dovar_66 发布于 1个月前 阅读 46

Kotlin Primer·第七章·协程库(上篇)

本篇只讲了协程库的使用。还有中篇讲协程的启动和切换实现原理,下篇核心讲解kotlin协程在JVM层的实现原理。 这可能是至今为止最详细实用的 Kotlin 协程库详解了。
kymjs张涛 发布于 3个月前 阅读 1445

直播APP开发如何得到用户青睐?

美丽播作为专业的直播系统开发公司,在针对直播APP开发上,拥有扎实的开发经验和强大的技术团队,能够满足你在直播上的一切需求。
suanleba 发布于 3个月前 阅读 4

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

直播APP开发:变现改变,直播新玩点

美丽播作为专业的直播APP开发商,在针对直播APP研发上于游戏完美结合,更开发许多新颖有趣的功能,让直播APP开发的格局变的更大。
suanleba 发布于 3个月前 阅读 4

SWIFT 自定义DDLog

系统函数打印log的弊端   1:非常消耗性能 2:如果app部署到AppStore之后用户是看不到log内容的,所以我们只需要在debug开发调试阶段显示log,部署阶段隐藏log   在oc开发的过程中一般都会自定义NSLog,使其在debug模式下打印,relese模式下不让其打印,在swift中同样也可以做到:由于swift中没有宏定义,所以在swift中可以使用全局函数来实现,并且swift中的print打印的信息很少,我们可以自定义,打印出自己想要的信息,可以写到AppDelegate中,位于整个类之外,函数如下   /// 自定义打印函数   ///   ///   - Parameters:   ///   - message: 打印的信息   ///   - fileName: 文件名   ///   - methodName: 方法名   ///   - lineNumber: 行号      func DDLog<T>(message: T,              fileName: String = #file,              methodName: String = #function,              lineNumber: Int = #line){       #if DEBUG           print("\((fileName as NSString).pathComponents.last!).\(methodName)[\(lineNumber)]:\(message)")       #en...
冰泪_ 发布于 3个月前 阅读 5

这里假设zookeeper地址为localhost

这里假设zookeeper地址为localhost
进击的程序员 发布于 2个月前 阅读 10

相机快门声音 设置中删除快门声音设置选项

PhotoMenu.java //        CameraSettings.KEY_SHUTTER_SOUND, 注释掉该参数
东街小霸王 发布于 1个月前 阅读 5

Java 基础语法

Java 基础语法 一个Java程序可以认为是一系列对象的集合,而这些对象通过调用彼此的方法来协同工作。下面简要介绍下类、对象、方法和实例变量的概念。 对象:对象是类的一个实例,有状态和行为。例如,一条狗是一个对象,它的状态有:颜色、名字、品种;行为有:摇尾巴、叫、吃等。 类:类是一个模板,它描述一类对象的行为和状态。 方法:方法就是行为,一个类可以有很多方法。逻辑运算、数据修改以及所有动作都是在方法中完成的。 实例变量:每个对象都有独特的实例变量,对象的状态由这些实例变量的值决定。 第一个Java程序 下面看一个简单的Java程序,它将打印字符串 Hello World public class MyFirstJavaProgram { /* 第一个Java程序. * 它将打印字符串 Hello World */ public static void main(String []args) { System.out.println("Hello World"); // 打印 Hello World } } 下面将逐步介绍如何保存、编译以及运行这个程序: 打开Notepad,把上面的代码添加进去; 把文件名保存为:MyFirstJavaProgram.java; 打开cmd命令窗口,进入目标文件所在的位置,假设是C:\ 在命令行窗口键入 javac MyFirstJavaProgram.java  按下enter键编译...
architect刘源源 发布于 4周前 阅读 10

Android跨平台编译 —— protobuf

公司最近开启新项目,不过核心代码三端公用,而且是用c++写的。想要在android上使用就需要经历痛苦的跨平台编译过程。
街角的小丑 发布于 1周前 阅读 9

iOS使用shell脚本注入混淆内容

使用shell脚本简化重复工作,提高工作效率666
aron1992 发布于 6天前 阅读 88

腾讯技术分享:社交网络图片的带宽压缩技术演进之路

为了进一步降低运营带宽成本,减小用户访问流量及提升页面加载速度,社交网络 CDN运维紧跟行业图片优化趋势,创新引入WebP、SharpP、自适应分辨率、Guetzli等图像压缩技术到现网,经过三年多的多部门联合攻关,已逐渐形成一套覆盖全图片类型(JPEG、JPG、PNG、WebP、GIF)多场景的图片压缩运营体系,适用于各类型终端,每年节约外网带宽几百G。
JackJiang- 发布于 2周前 阅读 3754 评论 7 点赞 3

开发者不可错过的开源工具 —— Android 篇

无论你是经验丰富的专业 Android 开发者,还是初出茅庐的新人,开发应用最忌讳的就是闭门造车。不能把自己圈在自己的思维里,要学会借助外在现有的资源去协助开发,这样既不会让自己固步自封,还能够大大提高工作效率。本文整理了 Android 开发常用的几类工具,包含主流的图片加载,切换效果,下拉刷新,按钮,排版等,让我们一起来看下吧! 1、微信开源的 Android 热修复框架 Tinker 微信开源的 Android 热修复框架 Tinker,支持在无需升级APK的前提下更新 dex, library and resources 文件。 2、强大易用的安卓工具类库 AndroidUtilCode AndroidUtilCode 是一个强大易用的安卓工具类库,它合理地封装了安卓开发中常用的函数,具有完善的 Demo 和单元测试,利用其封装好的 APIs 可以大大提高开发效率。 3、Android 上的图片加载和缓存库 Glide Glide 是一个 Android 上的图片加载和缓存库,其目的是实现平滑的图片列表滚动效果。 示例代码: // For a simple view: @Override public void onCreate(Bundle savedInstanceState) { ... ImageView imageView = (ImageView) findViewById(R.id.my_image_view); Glide.with(this).load("http://goo.gl/h8qOq...
编辑部的故事 发布于 3个月前 阅读 3991 评论 6 点赞 8

Tiny4412裸机程序之操作ICache

一、首先普及一下什么是Cache 基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,把正在执行的指令地址附件的一部分指令或数据从主存调入这类存储器,供CPU在一段时间内使用,这对提高程序的运行速度有很大的作用。这类介于主存和CPU之间的高速小容量存储器称作高速cache。比较常见的cache包括icache和dcache。 icache的使用比较简单,系统刚上电时,icache中的内容是无效的,并且icache的功能是关闭的,往CP15协处理器中的寄存器1的bit[12]写1可以启动icache,写0可以停止icache。icache关闭时,CPU每次取指都要读主存,性能非常低。因为icache可随时启动,越早开icache越好。与icache相似,系统刚上电时, dcache中的内容是无效的,并且dcache的功能是关闭的,往CP15协处理器中的寄存器1的bit[2]写1可以启动dcache,写0可以停止dcache。因为 dcache必须在启动mmu后才能被启动,而对于裸机而言,没必要开mmu,所以本教程的程序将不会启动dcache。 二、再介绍一下ARM协处理器CP15及MCR和MRC指令   在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。 访问CP15寄存...
幸福阶梯 发布于 11小时前 阅读 7

Linux环境下安装JDK

本文主要介绍的是如何是Linux环境下安装JDK的,因为Linux环境下,很多时候也离不开Java的,下面笔者就和大家一起分享如何jdk1.8的过程吧。 一、安装环境 操作系统:Red Hat Enterprise Linux 6 64 位(版本号6.6) JDK版本:1.8 工具:Xshell5、Xftp5 说明:本文是通过Xshell5工具远程连接Linux操作,如果是直接在Linux可视化界面操作那就更方便了,原理一样。 二、安装步骤 第一步:下载安装包 下载Linux环境下的jdk1.8,请去(官网)中下载jdk的安装文件; 由于我的Linux是64位的,因此我下载jdk-8u131-linux-x64.tar.gz。 如下图所示: 如果Linux本身连接到互联网,我们可以直接通过wget命令直接把JDK安装包下载下来,如图所示: 要是没有外网的环境,还是安装上面的方法下载安装包,然后上传到服务器当中 第二步、解压安装包 将我们下载好的JDK安装包上传到服务器,进行解压 解压命令进行解压 1 $ cd /home/cmfchina 2 $ tar -zxvf jdk-8u131-linux-x64.tar.gz 解压完成之后,可以在当前目录下看到一个名字为【jdk1.8.0_131】的目录,里面存放的是相关文件 我们要将解压后的【jdk1.8.0_131】里面的所有数据移动到我们需要安装的文件夹当中,我们打算将jdk安装在usr/j...
west_coast 发布于 8小时前 阅读 5 评论 2

Android微信跳一跳,自动跳App实现

意义:图像识别,好玩!!!
GuoMengYue 发布于 2个月前 阅读 478 评论 5 点赞 1

近期大热的实时直播答题系统的实现思路与技术难点分享

自HQ Trivia取得成功之后,市场上又相继出现了不少类似的游戏直播、答题直播等应用。直播答题已经是风口,毋容置疑。对攻城狮们来说,2018 年春节是个坎,直播答题技术做细致做到位了,才能安心过个好年。
JackJiang- 发布于 3周前 阅读 642 点赞 1

# 微信运动数据抓取发布第4版啦!!(2018.1.15)

# 微信运动数据抓取发布第4版啦!!(2018.1.15) # wxSportCrawler V4 一套抓取微信运动真实数据、并将微信运动数据用于活动/场景的程序 关键字:微信运动、微信步数、运动步数、wechat sport、wechat step、微信硬件 Demo: http://wxsportdemo.grplpl.com/ ### 最近更新: 一、欢天喜地的V4版本发布啦,API支持**脱离微信公众平台的纯H5调用!** 本Demo即为纯H5的演示。还有大量示例代码可以下载试用。 二、我们开放小心心啦!朋友们在微信运动里给你点的赞,也能显示在这里了! ### 本API比好色派等官方API最大的优点在于: 1、可以脱离微信公众号等微信体系运行,自成一体。 2、主动抓取所有用户的数据。而官方的只能获取登录了公众号的用户的数据。例如一个实时步数排行榜,官方的就很不准确。 3、有另一维度的社交数据 —— 微信运动点赞数。 4、可以方便的和公众平台、小程序、Android和iOS的APP等集成。 ### 有关纯H5调用 您可以留心注意到,打开本页面的过程中并没有弹出微信公众平台的授权提示,但是也能正常获取您的昵称、头像、步数信息和排行榜了,说明本API已经支持纯H5的调用,脱离微信公众号了。 这个特性将帮助开发者: 1、快速开发出微信运动相关的程序...
Klaus88 发布于 1个月前 阅读 30

Tiny4412裸机程序之代码重定位初体验

从前面一节Exynos 4412的启动过程分析 ,我们知道:一上电,exynos4412首先执行固化在IROM中的代码,iROM首先设置程序运行环境 (比如关看门狗、关中断、关MMU 、设置栈 、设置栈 、启动PLL等 ),然后根据OM引脚确定启动设备 (NAND Flash/SD 卡/其他 ),把 BL1从里面读出存入iRAM的0x02021400地址处,最后启动 BL1; BL1从SD卡适当的位置读入14K 字节的数据,存在iRAM地址0x02023400处,所以BL2不能大于(14K – 4) 字节,这里引出了为什么写这一节的原因:如果我们的程序很大,大于14K怎么办???? 下面我们先来介绍两个概念: 一是程序当前所处的地址,即程序在运行时,所处的当前地址;二是程序的链接地址,即程序运行时应该位于的运行地址。编译程序时,可以指定程序的链接地址。 什么是重定位 对于Tiny4412而言,前面我们已经说过:启动时BL1只会从sd等启动设备中拷贝14K的代码到IRAM中,那么当我们的程序超过14K怎么办?那就需要我们在前14K的代码中将整个程序完完整整地拷贝到DRAM等其他更大存储空间,然后再跳转到DRAM中继续运行我们的代码,这个拷贝然后跳转的过程就叫重定位。 本章中我们主要学习如何重定位,但是并不会涉如何使用到DRAM,而是简单地将代码从I...
幸福阶梯 发布于 10小时前 阅读 6

Auto.js 大象就医辅助挂号思路

辅助点击思路
你要爪子 发布于 4小时前 阅读 3

Exynos4412时钟体系分析

本文转自:http://www.techbulo.com/1365.html 在芯片手册里,“时钟管理单元 (Clock Management Unit)“的简称为 CMU 。CMU_ XXX 表示“XXX 模块内的 CMU ”,比如CMU_CPU等。 对于PC来说, CPU 、内存、主板、声卡、显卡等,这些功能部件由不同的芯片组成, 在实体上是相互独立的 。在嵌入式系统里,一块芯片内往往集成了多种功能比如Exynos 4412 上面既有CPU,还有音频 /视频接口、 LCD 接口、 GPS 等模块,这类芯片被称为 SoC,即 System on Chip,译为芯片级系统或片上系统。 一、Exynos4412的时钟体系 不同的模块往往工作在不同的频率下,一个芯片上采用单时钟设计基本是不可能实现的 ,在SoC设计中采取多时钟域设计 。4412的时钟域有5个, 如下图所示: 这 5个时钟域名如下 (下文中的BLK表示block ,模块 ): ①CPU_BLK : 内含 Cortex-A9 MPCore处理器、 L2 cache 控制器、CoreSight (调试用 )。CMU_CPU用于给这些部件产生时钟 。 ② DMC_BLK : 内含 DRAM 内存控制器 (DMC)、安装子系统 (Security sub system )、通用中断控制器 (Generic Interrupt Controller,GIC) 。CMU_DMC 用于给这些部件产生时钟。 ③ LEFTBUS_BLK 和 RIGHTBUS_BLK: 它们是全局的数据总线,...
幸福阶梯 发布于 1天前 阅读 4

Tiny4412裸机程序,时钟操作

本文转自:http://www.techbulo.com/1388.html 有了上一节《Exynos4412时钟体系分析》的基础,这一节我们来做几个和时钟有关的实验。 其实,Exynos 4412的IROM代码已经设置了PLL,我们可以通过串口把IROM设置的PLL寄存器值打印出来,这些值打印出来是这样的(摘自韦东山老师的《嵌入式Linux系统开发完全手册_基于4412__上册》): CLK_SRC_CPU = 0x01000001 CLK_DIV_DMC0 = 0x00111713 CLK_DIV_DMC1 = 0x01011171 CLK_SRC_TOP0 = 0x01110000 CLK_SRC_TOP1 = 0x00001000 CLK_DIV_TOP = 0x00015470 CLK_SRC_LEFTBUS = 0x00000001 CLK_DIV_LEFTBUS = 0x00000013 CLK_SRC_RIGHTBUS = 0x00000001 CLK_DIV_RIGHTBUS = 0x00000013 APLL_LOCK = 0x00000960 MPLL_LOCK = 0x00000000 EPLL_LOCK = 0x00000FFF VPLL_LOCK = 0x00000FFF CLK_DIV_CPU0 = 0x00773730 CLK_DIV_CPU1 = 0x00000077 APLL_CON1 = 0x00003800 APLL_CON0 = 0xA0640301 MPLL_CON1 = 0x00003800 MPLL_CON0 = 0xA0640301 EPLL_CON2 = 0x00000080 EPLL_CON1 = 0x66010000 EPLL_CON0 = 0x00600302 VPLL_CON2 = 0x00000080 VPLL_CON1 = 0x66016000 VPLL_CON0 = 0x006F0302 CLK_SRC_CPU = 0x01000001 CLK_SRC_DMC = 0x001...
幸福阶梯 发布于 12小时前 阅读 4

腾讯技术分享:社交网络图片的带宽压缩技术演进之路

为了进一步降低运营带宽成本,减小用户访问流量及提升页面加载速度,社交网络 CDN运维紧跟行业图片优化趋势,创新引入WebP、SharpP、自适应分辨率、Guetzli等图像压缩技术到现网,经过三年多的多部门联合攻关,已逐渐形成一套覆盖全图片类型(JPEG、JPG、PNG、WebP、GIF)多场景的图片压缩运营体系,适用于各类型终端,每年节约外网带宽几百G。
JackJiang- 发布于 2周前 阅读 3754 评论 7 点赞 3

iOS事件处理,看我就够了~

##### 该文章属于<简书 — 刘小壮>原创,转载请注明: [<简书 — 刘小壮> https://www.jianshu.com/p/b0884faae603](https://www.jianshu.com/p/b0884faae603) ------ > 好久没写博客了,前后算起来刚好有一年了。这期间博客也不是一直没变化,细心的同学应该能发现,我一直在回复评论区和私信的问题,还更新了好几篇之前的博客。 > > 去年是有意义的一年,从各个方面我也学到了不少的东西,也不局限于技术方面。很多人都写年终总结,我比较懒就不写了,内心做自我总结吧,哈哈😀。 > > 回归正题,在项目中经常会遇到各种手势或者点击事件处理之类的,这些都属于响应事件处理。但是很多人对iOS中的响应事件处理并不清楚,经常会遇到手势冲突、事件不响应之类的问题,所以就去查博客。 > 但是现在很多博客写的并不是很完整,或者说质量并不高,我这两天抽时间把我所学习和理解的iOS事件处理写出来,供各位参考。 ------ ![博客配图](http://upload-images.jianshu.io/upload_images/270478-ca5b523e9440fe99.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240) ### UIResponder **`UIResponder`是iOS中用于处理用户事件的API,可以处理触摸事件、按压事件`(3D touc...
刘小壮 发布于 1周前 阅读 175

73款阿里巴巴开源软件详解!

详细解读阿里巴巴开源技术,包括框架、组件、引擎、数据库/存储、平台/系统、解决方案、工具、中间件、Web Sever、设计等十大类73款!
阿里巴巴

安卓开发中必备的那些神器APP

博客: 安卓之家 掘金: jp1017 微博: 追风917 CSDN: 蒋朋的家 简书: 追风917   每日一景   今天是2017年7月16日,初伏第五天,爬山游泳计划因连夜雨而取消,于是乎,加了个小班,顺便跑了个5公里,好热的。比起无氧的增肌,有氧的跑步和游泳更爱一些,记得跑后拉伸哦。 上一篇文章写了反编译某应用获取所需代码,用到了许多神器,这篇文章就来一一铺开。。。 apkpure 这个是用来下载第三方应用的,无需Google play 即可下载 play 商店里的各种应用 当前Activity 该款软件可显示最前台页面所在应用的包名及Activity vysor 这个大家都在玩了吧,用 chrome 来控制手机,pro版支持wifi,更多玩法点这里;Vysor 情怀玩法 (番外篇) ActivityLauncher 该款软件显示每个应用的Activity,点击Activity可直达该界面,部分因权限问题导致打开失败。在sf上开源,基于ec开发,我给移植到了 Android Studio, 大家可直接编译运行。 MLManager 该款软件是一个95年的西班牙朋友写的,只要用来提取apk到本地,分享apk。国内也有一款类似的软件,和这个风格一样,咕咚大神写的AppPlus,遗憾的国内的不支持提取系统应用,如果提取小米手机的扫一扫等系统应用就望而却步了。 easydevice...
SuShine 发布于 7天前 阅读 20

【免费】小米即时消息云MIMC介绍

前言 IM是互联网业务重要组成,很多场景下需要即时地、方便地交流。而实现IM较为复杂,需要后台提供连接、投递、存储、统计支持,人力成本和机器成本都很高。所以目前很多用户选择不自己实现IM功能,或者使用QQ、微信等已经成熟的App交流,或者使用第三方IM云服务集成自己的应用。 使用现有App:免费,不用改变用户习惯,功能支持完整。但缺少面向自己业务需求的功能,数据安全性无法保证,无法得到统计信息。 使用第三方IM云服务:数据安全性得到一定保证,可支持更多的业务功能,得到用户活跃度、注册人数等统计信息。但商业化使用会收费,自己仍然需要完成一些工作(界面设计,SDK接口调用程序),可能依然会受第三方IM云提供服务功能的限制。 介绍 一、消息系统背景介绍: 消息系统一直是最性感的在线架构系统之一,具有高并发/高可靠/高实时等特性,技术难度高,挑战难度大,因此对于普通APP开发者来说,构建并维护一个可靠稳定的消息系统成本高昂,但是IM等社交属性又是APP必须的强性需求之一,所以这里存在一个基本矛盾。 当前市面上即时消息云服务,普遍存在接入成本高昂,没有OS层面对长连接的支持等问题。 小米每年都有接近一亿部手机售出,手机保有量巨大,小米...
ZhakyMing 发布于 3周前 阅读 862 评论 1 点赞 1

Java高并发的常见应对方案

一、关于并发我们说的高并发是什么? 在互联网时代,高并发,通常是指,在某个时间点,有很多个访问同时到来。   高并发,通常关心的系统指标与业务指标? QPS:每秒钟查询量,广义的,通常指指每秒请求数 响应时间:从请求发出到收到响应花费的时间,例如:系统处理一个HTTP请求需要100ms,这个100ms就是系统的响应时间 带宽:计算带宽大小需关注两个指标,峰值流量和页面的平均大小  PV:综合浏览量(Page View),即页面浏览量或者点击量,通常关注在24小时内访问的页面数量,即“日PV” UV:独立访问(UniQue Visitor),即去重后的访问用户数,通常关注在24小时内访问的用户,即“日UV”   二、关于三种应对大并发的常见优化方案 【数据库缓存】 为什么是要使用缓存? 缓存数据是为了让客户端很少甚至不访问数据库,减少磁盘IO,提高并发量,提高应用数据的响应速度。   【CDN加速】 什么是CDN? CDN的全称是Content Delivery Network,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离等综合信息将用户的请求重新导向离用户最近的服务节点上。   使用CDN的优势? CDN的本质是内存缓存,就近访问,它提高了企业站点(尤其含有大量图片和静态页...
architect刘源源 发布于 7天前 阅读 13

linux常用命令

查看文件、跳转文件目录 ls -a:查看所有文件,包括隐藏文件 ls -a | more:分屏查看文件,文件不是一次性显示出来,每次只显示一屏幕 cd -:回到跳转之前的目录 cd ~:跳转到用户目录 创建文件、文件夹 touch:创建文件 mkdir:创建文件夹 mkdir a/b/c -p:创建依赖的文件夹,如果b文件夹不存在,会先创建b文件夹 touch .12.txt:创建隐藏文件,以"."开头的文件都是隐藏文件 cat:查看文件内容 移动、拷贝文件 mv cp mv 1.txt 2.txt:重命名1.txt为 2.txt mv 1.txt 2: 将1.txt剪切、黏贴到文件夹2中 cp 1.txt 2:将1.txt 复制、黏贴到文件夹2中 cp -r 1 2:将文件夹1 拷贝到 文件夹2 中 删除文件、目录 rm:删除文件 rmdir:删除文件夹 rm -r test:删除文件夹 重定向 ls > 123.txt: 重定向,将ls显示的内容写到123.txt文件中,如果123.txt存在,会覆盖文件原本内容;如果文件不存在会先创建文件,然后写入数据 ls >> 123.txt:重定向,在123.txt的末尾添加数据,不会覆盖原先数据 cat 1.txt 2.txt > 3.txt:将1.txt 2.txt的内容合并到3.txt中 链接 ln -s 1.txt 1-link.txt:为1.txt创建软连接,类似于快捷方式,1.txt被删除之后,1-link.txt无法使用 ln 1.txt 1-link.txt:创建硬连接,类似于...
xiaobai1315 发布于 6天前 阅读 7

Tiny4412使用汇编点亮LED,实现流水灯效果

本文转自:http://www.techbulo.com/1313.html 从今天开始就正式进入到tiny4412的开发学习中了,今天主要看了一下Tiny4412的启动流程及存储器映射及Exynos4412数据手册,用汇编写了一个跑马灯程序(后续会有C语言版本的出来),先说一下我的开发环境吧: 开发板:Tiny4412 增强版 (底板是Tiny4412ADK 1312) 开发工具:UltraEdit 宿主机:VmWare Ubuntu12.04(64bit) 编译工具:arm-linux-gcc4.5.1 一、控制原理说明 先看一下原理图: 如上图可知,Tiny4412有4个用户LED灯,控制它们四个引脚分别是GPM4_0~ GPM4_3,由原理可知,当IO引脚为高电平时,LED灯灭,当IO引脚为低电平时LED亮。我们要做的工作就是设置GPM4_0~ GPM4_3为输出功能,且控制且输出电平高低即可。 二、程序说明 1. led.S 由原理图可知,程序只进行了两步操作; 第一步:设置GPM4_0~GPM4_3相对应的控制寄存器GPM4CON,使GPM4_0~ GPM4_3四个引脚为输出功能。 第二步:设置其对应的数据寄存器GPM4DAT对应的4个bit位为0,使GPM4_0~ GPM4_3为低电平,4个LED灯全亮,等待一段时间将第0位设置为0,其余位设置为1,这样只有第一个灯亮;等待一段时间将第1位设置为0,其余位设置为1,这样只有第二个灯亮;等待一段...
幸福阶梯 发布于 2天前 阅读 8

Android Studio 3.0 如何生成 aar 并使用?

升级了 Android Studio 3.0 之后,发现 module 不会自动生成 aar 了。所以只能手动添加代码生成了。 解决方案: cd 到需要生成aar的module后, gradle build即可 或者起个别名, 在任何地方都可以gradle uilib了 task uilib {//只是起个别名方便build } uilib.dependsOn(build)
SuShine 发布于 6天前 阅读 11

iPhoneX

1.在有底部tab时,界面自动布局 [_subView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(_subView.superview).with.insets(UIEdgeInsetsMake(0, 0, 0, 0)); }]; self.edgesForExtendedLayout = UIRectEdgeNone;//关键在于这一句  
小黑202 发布于 6天前 阅读 7

开发者不可错过的开源工具 —— iOS 篇

在当前移动互联网的大潮下,移动开发变得越来越重要。不论是 Android 开发还是 iOS 开发,都异常火爆,而开源在推进移动开发中更是扮演着关键的角色。 在上一周的文章中,我们介绍了 Android 开发相关的工具。还是那句话,开发应用最忌讳的就是闭门造车,本周我们将罗列一些 iOS 开发的相关工具,希望能给你的开发带来启发。 相关阅读: 开发者不可错过的开源工具 —— Android 篇 1、移动应用动画效果框架 Lottie Lottie 是 Airbnb 开发的一款能够为原生应用添加动画效果的开源工具。Lottie 目前提供了 iOS, Android, 和 React Native 版本,能够实时渲染 After Effects 动画特效。 2、iOS 应用视图布局库 LayoutKit LayoutKit 是一个高性能的iOS应用视图布局库。 LayoutKit 的主要优点: 速度快:性能可以与专门写的定制的布局代码相媲美,比Auto Layout快非常多; 异步:在后台线程中做布局运算,所以不会干扰与用户的交互; 声明性的:用不可变的数据结构声明布局,这样更容易开发、审核、调试和维护布局代码; 可缓存的:布局结果都是不可变的数据结构,所以可以在后台线程中计算并缓存,可以非常大的提升性能; 3、iOS 侧边菜单 Side-Menu.iOS Side-Menu.iOS 是...
编辑部的故事 发布于 2个月前 阅读 1936 评论 2 点赞 2

Tiny4412裸机程序之操作ICache

一、首先普及一下什么是Cache 基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,把正在执行的指令地址附件的一部分指令或数据从主存调入这类存储器,供CPU在一段时间内使用,这对提高程序的运行速度有很大的作用。这类介于主存和CPU之间的高速小容量存储器称作高速cache。比较常见的cache包括icache和dcache。 icache的使用比较简单,系统刚上电时,icache中的内容是无效的,并且icache的功能是关闭的,往CP15协处理器中的寄存器1的bit[12]写1可以启动icache,写0可以停止icache。icache关闭时,CPU每次取指都要读主存,性能非常低。因为icache可随时启动,越早开icache越好。与icache相似,系统刚上电时, dcache中的内容是无效的,并且dcache的功能是关闭的,往CP15协处理器中的寄存器1的bit[2]写1可以启动dcache,写0可以停止dcache。因为 dcache必须在启动mmu后才能被启动,而对于裸机而言,没必要开mmu,所以本教程的程序将不会启动dcache。 二、再介绍一下ARM协处理器CP15及MCR和MRC指令   在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。 访问CP15寄存...
幸福阶梯 发布于 11小时前 阅读 7

ThinkSNS 2018年春节放假及值班通知!

ThinkSNS全体成员祝大家:春节快乐,新年万事如意!
ThinkSNS账号 发布于 7天前 阅读 8

Linux环境下安装JDK

本文主要介绍的是如何是Linux环境下安装JDK的,因为Linux环境下,很多时候也离不开Java的,下面笔者就和大家一起分享如何jdk1.8的过程吧。 一、安装环境 操作系统:Red Hat Enterprise Linux 6 64 位(版本号6.6) JDK版本:1.8 工具:Xshell5、Xftp5 说明:本文是通过Xshell5工具远程连接Linux操作,如果是直接在Linux可视化界面操作那就更方便了,原理一样。 二、安装步骤 第一步:下载安装包 下载Linux环境下的jdk1.8,请去(官网)中下载jdk的安装文件; 由于我的Linux是64位的,因此我下载jdk-8u131-linux-x64.tar.gz。 如下图所示: 如果Linux本身连接到互联网,我们可以直接通过wget命令直接把JDK安装包下载下来,如图所示: 要是没有外网的环境,还是安装上面的方法下载安装包,然后上传到服务器当中 第二步、解压安装包 将我们下载好的JDK安装包上传到服务器,进行解压 解压命令进行解压 1 $ cd /home/cmfchina 2 $ tar -zxvf jdk-8u131-linux-x64.tar.gz 解压完成之后,可以在当前目录下看到一个名字为【jdk1.8.0_131】的目录,里面存放的是相关文件 我们要将解压后的【jdk1.8.0_131】里面的所有数据移动到我们需要安装的文件夹当中,我们打算将jdk安装在usr/j...
west_coast 发布于 8小时前 阅读 5 评论 2

Android微信跳一跳,自动跳App实现

意义:图像识别,好玩!!!
GuoMengYue 发布于 2个月前 阅读 478 评论 5 点赞 1

Tiny4412裸板程序烧写过程

BL1对应的文件是 E4412_N.bl1.bin文件。 BL2是根据我们提供的程序来制作的,此工具的源码是V310-EVT1-mkbl2.c,存放在/work/4412/tools 目录下,可用以下命令生成可执行程序 mkbl2: gcc -o my_mkbl2 V310-EVT1-mkbl2.c mkbl2的作用是截取用户提供的bin文件的前(14K-4)字节数据,算出4字节的较验码,然后这两部 分数据组合成14KB的文件bl2.bin,它就是BL2。 对于SD卡,我们只需要把E4412_N.bl1.bin烧在偏移地址512字节处,把bl2.bin烧在偏移地址(512+8K)字节处。 如果用户提供的bin大于(14K-4)字节,还需要把它烧写在SD卡其他位置,这由用户决定。 我们的大部 分程序没超过(14K-4)字节,所以这种情况暂时不理会。 对于SD卡,烧写过程总结如下: 把E4412_N.bl1.bin烧在偏移地址512字节处; 使用mkb12命令,把用户提供的bin文件制作出bl2.bin,命令如下(修改 bin 文件名leds.bin): mkbl2 leds.bin bl2.bin 14336 把 bl2.bin 烧在偏移地址(512+8K)字节处; 为简单化操作,我们把这些命令写入sd_fusing.sh文件中,使用时只要执行以下命令即可(假设SD卡的 设备节点为/dev/sdb,用户bin文件为 leds.bin): sd_fusing.sh /dev/sdc leds.bin 注意:把SD卡接到PC后执行以下命令,一...
幸福阶梯 发布于 2天前 阅读 7

基站定位查询接口

http://www.cellocation.com/interfac/ 本站查询接口免费开放 所有免费接口禁止从移动设备端直接访问,请使用固定IP的服务器转发请求。 每5分钟限制查询300次,基站/WIFI/经纬度查询接口每日限制查询1000次,反向基站查询接口每日限制查询100次,混合定位接口每日限制查询100次,如需更多服务请联系 service@cellocation.com, QQ 3372218865 基站查询接口 查询全国移动联通电信2G/3G/4G基站位置数据,收录数据总量超过8000万条 接口地址: http://api.cellocation.com:81/cell/ 支持格式: CSV/JSON/XML 请求方式: GET 请求示例: http://api.cellocation.com:81/cell/?mcc=460&mnc=1&lac=4301&ci=20986&output=xml 请求参数: 名称 类型 必填 说明 mcc int 是 mcc国家代码:中国代码 460 mnc int 是 mnc网络类型:0移动,1联通(电信对应sid),十进制 lac int 是 lac(电信对应nid),十进制 ci int 是 cellid(电信对应bid),十进制 coord string 否 坐标类型(wgs84/gcj02/bd09),默认wgs84 output string 否 返回格式(csv/json/xml),默认csv 返回数据格式:CSV errcode,纬度,经度,精度半径,地址 errcode 0: 成功 10000: 参数错误 10001: 无查询结果 示例: 0,39.999024,11...
whoisliang 发布于 3周前 阅读 37

wx-jq:一套完全原创的微信小程序插件集合库

一套完全原创的微信小程序插件集合库
透笔度 发布于 4周前 阅读 668 评论 2 点赞 1

类似蒲公英的APP打包发布测试平台

https://fastlane.tools/
swingcoder 发布于 6天前 阅读 8

Thinkphp各大支付平台在线支付集成源码

用Thinkphp给客户开发网站的时候需要用到各大平台付款功能,下面就免费分享给大家,此类是个成熟类,网上下载的经过修改,亲测了(可以直接拿来使用,附带使用方法,有需要的朋友请拿走。),如果有需要安装的演示请登陆“ 二当家的”查看: http://www.erdangjiade.com/php/524.html 目前包含了支付宝pc版、支付宝wap版、palpay、yeepay、unionpay、kuaiqian、财付通tenpay等,这几个常用的支付平台,支付方式均为即时到账,不包含担保支付。 支付配置ThinkPay\Application\Common\Conf\config.php array( /* 支付设置 */ 'payment' => array( 'tenpay' => array( // 加密key,开通财付通账户后给予 'key' => 'e82573dc7e6136ba414f2e2affbe39fa', // 合作者ID,财付通有该配置,开通财付通账户后给予 'partner' => '1900000113' ), 'alipay' => array( // 收款账号邮箱 'email' => 'chenf003@yahoo.cn', // 加密key,开通支付宝账户后给予 'key' => 'aaa', // 合作者ID,支付宝有该配置,开通易宝账户后给予 'partner' => '2088101000137799' ), 'aliwappay' => array( // 收款账号邮箱 'email' => 'chenf003@yahoo.cn', // 加密key,开通支付宝账户后给予 'key' => 'aa...
java大神66 发布于 1个月前 阅读 8

HttpClient学习整理

HttpClient简介 HttpClient 功能介绍     1. 读取网页(HTTP/HTTPS)内容     2、使用POST方式提交数据(httpClient3)     3. 处理页面重定向     4. 模拟登录开心网     5. 提交XML格式参数     6. 访问启用认证的页面     7. 多线程模式下使用httpclient httpClient完整封装 HttpClient简介 HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。HttpClient 已经应用在很多的项目中,比如 Apache Jakarta 上很著名的另外两个开源项目 Cactus 和 HTMLUnit 都使用了 HttpClient。更多信息请关注http://hc.apache.org/   HttpClient 功能介绍 以下列出的是 HttpClient 提供的主要的功能,要知道更多详细的功能可以参见 HttpClient 的主页。 实现了所有 HTTP 的方法(GET,POS...
spinachgit 发布于 1周前 阅读 13

Auto.js 大象就医辅助挂号思路

辅助点击思路
你要爪子 发布于 4小时前 阅读 3

Linux环境下安装JDK

本文主要介绍的是如何是Linux环境下安装JDK的,因为Linux环境下,很多时候也离不开Java的,下面笔者就和大家一起分享如何jdk1.8的过程吧。 一、安装环境 操作系统:Red Hat Enterprise Linux 6 64 位(版本号6.6) JDK版本:1.8 工具:Xshell5、Xftp5 说明:本文是通过Xshell5工具远程连接Linux操作,如果是直接在Linux可视化界面操作那就更方便了,原理一样。 二、安装步骤 第一步:下载安装包 下载Linux环境下的jdk1.8,请去(官网)中下载jdk的安装文件; 由于我的Linux是64位的,因此我下载jdk-8u131-linux-x64.tar.gz。 如下图所示: 如果Linux本身连接到互联网,我们可以直接通过wget命令直接把JDK安装包下载下来,如图所示: 要是没有外网的环境,还是安装上面的方法下载安装包,然后上传到服务器当中 第二步、解压安装包 将我们下载好的JDK安装包上传到服务器,进行解压 解压命令进行解压 1 $ cd /home/cmfchina 2 $ tar -zxvf jdk-8u131-linux-x64.tar.gz 解压完成之后,可以在当前目录下看到一个名字为【jdk1.8.0_131】的目录,里面存放的是相关文件 我们要将解压后的【jdk1.8.0_131】里面的所有数据移动到我们需要安装的文件夹当中,我们打算将jdk安装在usr/j...
west_coast 发布于 8小时前 阅读 5 评论 2

Linux查看JAVA_HOME PATH

  原创 2016年04月18日 16:58:21 标签: linux 8717 echo $JAVA_HOME  结果:/opt/tlk/java  echo $PATH  结果:  /usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/opt/tlk/java/bin:  /opt/CollabNet_Subversion/bin:/home/lukang.tlk/bin
west_coast 发布于 8小时前 阅读 1

Tiny4412裸机程序之代码重定位初体验

从前面一节Exynos 4412的启动过程分析 ,我们知道:一上电,exynos4412首先执行固化在IROM中的代码,iROM首先设置程序运行环境 (比如关看门狗、关中断、关MMU 、设置栈 、设置栈 、启动PLL等 ),然后根据OM引脚确定启动设备 (NAND Flash/SD 卡/其他 ),把 BL1从里面读出存入iRAM的0x02021400地址处,最后启动 BL1; BL1从SD卡适当的位置读入14K 字节的数据,存在iRAM地址0x02023400处,所以BL2不能大于(14K – 4) 字节,这里引出了为什么写这一节的原因:如果我们的程序很大,大于14K怎么办???? 下面我们先来介绍两个概念: 一是程序当前所处的地址,即程序在运行时,所处的当前地址;二是程序的链接地址,即程序运行时应该位于的运行地址。编译程序时,可以指定程序的链接地址。 什么是重定位 对于Tiny4412而言,前面我们已经说过:启动时BL1只会从sd等启动设备中拷贝14K的代码到IRAM中,那么当我们的程序超过14K怎么办?那就需要我们在前14K的代码中将整个程序完完整整地拷贝到DRAM等其他更大存储空间,然后再跳转到DRAM中继续运行我们的代码,这个拷贝然后跳转的过程就叫重定位。 本章中我们主要学习如何重定位,但是并不会涉如何使用到DRAM,而是简单地将代码从I...
幸福阶梯 发布于 10小时前 阅读 6

Tiny4412裸机程序之操作ICache

一、首先普及一下什么是Cache 基于程序访问的局限性,在主存和CPU通用寄存器之前设置了一类高速的、容量较小的存储器,把正在执行的指令地址附件的一部分指令或数据从主存调入这类存储器,供CPU在一段时间内使用,这对提高程序的运行速度有很大的作用。这类介于主存和CPU之间的高速小容量存储器称作高速cache。比较常见的cache包括icache和dcache。 icache的使用比较简单,系统刚上电时,icache中的内容是无效的,并且icache的功能是关闭的,往CP15协处理器中的寄存器1的bit[12]写1可以启动icache,写0可以停止icache。icache关闭时,CPU每次取指都要读主存,性能非常低。因为icache可随时启动,越早开icache越好。与icache相似,系统刚上电时, dcache中的内容是无效的,并且dcache的功能是关闭的,往CP15协处理器中的寄存器1的bit[2]写1可以启动dcache,写0可以停止dcache。因为 dcache必须在启动mmu后才能被启动,而对于裸机而言,没必要开mmu,所以本教程的程序将不会启动dcache。 二、再介绍一下ARM协处理器CP15及MCR和MRC指令   在基于ARM的嵌入式应用系统中,存储系统通常是通过系统控制协处理器CP15完成的。CP15包含16个32位的寄存器,其编号为0~15。 访问CP15寄存...
幸福阶梯 发布于 11小时前 阅读 7

Tiny4412裸机程序,时钟操作

本文转自:http://www.techbulo.com/1388.html 有了上一节《Exynos4412时钟体系分析》的基础,这一节我们来做几个和时钟有关的实验。 其实,Exynos 4412的IROM代码已经设置了PLL,我们可以通过串口把IROM设置的PLL寄存器值打印出来,这些值打印出来是这样的(摘自韦东山老师的《嵌入式Linux系统开发完全手册_基于4412__上册》): CLK_SRC_CPU = 0x01000001 CLK_DIV_DMC0 = 0x00111713 CLK_DIV_DMC1 = 0x01011171 CLK_SRC_TOP0 = 0x01110000 CLK_SRC_TOP1 = 0x00001000 CLK_DIV_TOP = 0x00015470 CLK_SRC_LEFTBUS = 0x00000001 CLK_DIV_LEFTBUS = 0x00000013 CLK_SRC_RIGHTBUS = 0x00000001 CLK_DIV_RIGHTBUS = 0x00000013 APLL_LOCK = 0x00000960 MPLL_LOCK = 0x00000000 EPLL_LOCK = 0x00000FFF VPLL_LOCK = 0x00000FFF CLK_DIV_CPU0 = 0x00773730 CLK_DIV_CPU1 = 0x00000077 APLL_CON1 = 0x00003800 APLL_CON0 = 0xA0640301 MPLL_CON1 = 0x00003800 MPLL_CON0 = 0xA0640301 EPLL_CON2 = 0x00000080 EPLL_CON1 = 0x66010000 EPLL_CON0 = 0x00600302 VPLL_CON2 = 0x00000080 VPLL_CON1 = 0x66016000 VPLL_CON0 = 0x006F0302 CLK_SRC_CPU = 0x01000001 CLK_SRC_DMC = 0x001...
幸福阶梯 发布于 12小时前 阅读 4

Exynos4412时钟体系分析

本文转自:http://www.techbulo.com/1365.html 在芯片手册里,“时钟管理单元 (Clock Management Unit)“的简称为 CMU 。CMU_ XXX 表示“XXX 模块内的 CMU ”,比如CMU_CPU等。 对于PC来说, CPU 、内存、主板、声卡、显卡等,这些功能部件由不同的芯片组成, 在实体上是相互独立的 。在嵌入式系统里,一块芯片内往往集成了多种功能比如Exynos 4412 上面既有CPU,还有音频 /视频接口、 LCD 接口、 GPS 等模块,这类芯片被称为 SoC,即 System on Chip,译为芯片级系统或片上系统。 一、Exynos4412的时钟体系 不同的模块往往工作在不同的频率下,一个芯片上采用单时钟设计基本是不可能实现的 ,在SoC设计中采取多时钟域设计 。4412的时钟域有5个, 如下图所示: 这 5个时钟域名如下 (下文中的BLK表示block ,模块 ): ①CPU_BLK : 内含 Cortex-A9 MPCore处理器、 L2 cache 控制器、CoreSight (调试用 )。CMU_CPU用于给这些部件产生时钟 。 ② DMC_BLK : 内含 DRAM 内存控制器 (DMC)、安装子系统 (Security sub system )、通用中断控制器 (Generic Interrupt Controller,GIC) 。CMU_DMC 用于给这些部件产生时钟。 ③ LEFTBUS_BLK 和 RIGHTBUS_BLK: 它们是全局的数据总线,...
幸福阶梯 发布于 1天前 阅读 4

Tiny4412裸机程序,按键检测

一、控制原理说明 先看一下原理图: 首先把按键对应的GPIO设置为输入模式,修改GPX3CON寄存器(板子不同,可能对应的GPIO管脚不同),通过上图可知当没有按下按键时,对应的GPIO状态为高电平,当有按键被按下时,对应的GPIO变为低,我们在程序一直检测这几个GPIO状态即可。 二、程序说明 其中Start.s文件同上一个实验完全相同;链接脚本key.lds的内容和led.lds完全相同,只把名字改了改;Makefile的内容也大部分一样,也只是改了改里边文件的名字,key.c的文件需要重新编写,代码如下: /* * 程序说明 * 一上电,4个LED全亮,当某个按键被按下,则对应的LED熄灭(可同时按下多个键) * 对应关系:KEY1-LED1,KEY2-LED2,KEY3-LED3,KEY4-LED4 */ //按键对应的GPIO #define GPX3CON (*(volatile unsigned int *)0x11000C60) #define GPX3DAT (*(volatile unsigned int *)0x11000C64) //LED对应的GPIO #define GPM4CON (*(volatile unsigned int *)0x110002E0) #define GPM4DAT (*(volatile unsigned int *)0x110002E4) void delay(volatile int time) { for(; time > 0; time-- ); } int main(void) { unsigned long tmp = 0; unsigned char keyValue = 0; /* * ...
幸福阶梯 发布于 1天前 阅读 6

Tiny4412使用C语言实现流水灯的裸机程序

本文转自:http://www.techbulo.com/1347.html 在前边我们使用汇编完成了一个流水灯实验: https://my.oschina.net/cht2000/blog/1622224 但是,汇编语言可读性太差,在这一节我们用 C语言来实现了同样的功能,而以后的试验也尽量用 C语言实现。 我们在编写上位机程序时,C语言程序执行的第一条指令,并不在main函数中。生成一个 C程序的可执行文件时,编译器通常会在我们的代码中加上几个被称为启动文件的代码—— crtl.o 、crti.o、crtend.o 、crtn.o 等,它们是标准库文件。这些代码设置C程序的堆栈等,然后调用 main 函数。它们依赖于操作系统,在裸板上这些代码无法执行,所以需要自己写一个。 这段代码很简单, 关键指令只有2条。自己编写的 start .S启动文件内容如下: .text .globl _start _start: ldr sp, =0x02060000 // 调用C函数之前必须设置栈,栈用于保存运行环境,给局部变量分配空间 // 参考ROM手册P14, 我们把栈指向BL2上方1K处(1K已经够用), // 即:0x02020000 (iRAM基地址) + 5K(iROM代码用) + 8K(BL1用) + 16K(BL2用) + 1K(用作栈)) bl main // 调用main函数(main这个名称不是固定的,可以随意改) halt_loop: b halt_loop 它在第 4行设置好...
幸福阶梯 发布于 1天前 阅读 4

Tiny4412裸板程序烧写过程

BL1对应的文件是 E4412_N.bl1.bin文件。 BL2是根据我们提供的程序来制作的,此工具的源码是V310-EVT1-mkbl2.c,存放在/work/4412/tools 目录下,可用以下命令生成可执行程序 mkbl2: gcc -o my_mkbl2 V310-EVT1-mkbl2.c mkbl2的作用是截取用户提供的bin文件的前(14K-4)字节数据,算出4字节的较验码,然后这两部 分数据组合成14KB的文件bl2.bin,它就是BL2。 对于SD卡,我们只需要把E4412_N.bl1.bin烧在偏移地址512字节处,把bl2.bin烧在偏移地址(512+8K)字节处。 如果用户提供的bin大于(14K-4)字节,还需要把它烧写在SD卡其他位置,这由用户决定。 我们的大部 分程序没超过(14K-4)字节,所以这种情况暂时不理会。 对于SD卡,烧写过程总结如下: 把E4412_N.bl1.bin烧在偏移地址512字节处; 使用mkb12命令,把用户提供的bin文件制作出bl2.bin,命令如下(修改 bin 文件名leds.bin): mkbl2 leds.bin bl2.bin 14336 把 bl2.bin 烧在偏移地址(512+8K)字节处; 为简单化操作,我们把这些命令写入sd_fusing.sh文件中,使用时只要执行以下命令即可(假设SD卡的 设备节点为/dev/sdb,用户bin文件为 leds.bin): sd_fusing.sh /dev/sdc leds.bin 注意:把SD卡接到PC后执行以下命令,一...
幸福阶梯 发布于 2天前 阅读 7

Exynos 4412的启动过程分析

一、Exynos 4412 启动过程 做实验时我们是把bin文件烧入SD 卡。是谁把这些指令从SD卡读出来执行?是固化在芯片内部ROM上 的代码──它被称为iROM, iROM是厂家事先烧写在芯片上的,无源码。 iROM把启动设备上特定位置处的程序读入片内内存(iRAM),并执行它。这个程序被称为BL1(Bootloader 1), BL1是三星公司提供的,无源码。 BL1又把启动设备上另一个特定位置处的程序读入片内内存,并执行它。这个程序被称为BL2(Bootloader 2),是我们编写的源码。 iROM、 BL1更细致的启动过程如下: (1) iROM: 下图是iROM启动流程图。 简单地说,就是先设置程序运行环境(比如关看门狗、关中断、关 MMU、设置栈、启动 PLL 等等);然后 根据OM引脚确定启动设备(NAND Flash/SD 卡/其他),把BL1从里面读出存入iRAM;最后启动BL1。 (2) BL1:下图是BL1的启动过程。 简单地说,也是设置程序运行环境(初始化中断、设置栈等等);然后从启动设备上把BL2读入iRAM;最 后启动它。 有几个问题需要解决: 在启动设备上哪个位置存放 BL1、BL2? 把 BL1、BL2 读到 iRAM 那个位置? BL1、BL2 大小是? 怎么保证 BL1、BL2 程序的完整性(即读出程序时没有错误)? 假设启动设备为SD卡, 如下图图所示: 图:...
幸福阶梯 发布于 2天前 阅读 4

Tiny4412使用汇编点亮LED,实现流水灯效果

本文转自:http://www.techbulo.com/1313.html 从今天开始就正式进入到tiny4412的开发学习中了,今天主要看了一下Tiny4412的启动流程及存储器映射及Exynos4412数据手册,用汇编写了一个跑马灯程序(后续会有C语言版本的出来),先说一下我的开发环境吧: 开发板:Tiny4412 增强版 (底板是Tiny4412ADK 1312) 开发工具:UltraEdit 宿主机:VmWare Ubuntu12.04(64bit) 编译工具:arm-linux-gcc4.5.1 一、控制原理说明 先看一下原理图: 如上图可知,Tiny4412有4个用户LED灯,控制它们四个引脚分别是GPM4_0~ GPM4_3,由原理可知,当IO引脚为高电平时,LED灯灭,当IO引脚为低电平时LED亮。我们要做的工作就是设置GPM4_0~ GPM4_3为输出功能,且控制且输出电平高低即可。 二、程序说明 1. led.S 由原理图可知,程序只进行了两步操作; 第一步:设置GPM4_0~GPM4_3相对应的控制寄存器GPM4CON,使GPM4_0~ GPM4_3四个引脚为输出功能。 第二步:设置其对应的数据寄存器GPM4DAT对应的4个bit位为0,使GPM4_0~ GPM4_3为低电平,4个LED灯全亮,等待一段时间将第0位设置为0,其余位设置为1,这样只有第一个灯亮;等待一段时间将第1位设置为0,其余位设置为1,这样只有第二个灯亮;等待一段...
幸福阶梯 发布于 2天前 阅读 8

Python 基础语法

注释 单行注释用 # 多行注释用 '''xxx''' 打印print # 定义变量 a = 100 # 输出a的类型 print(type(a)) # 格式化输出a print("a=%d"%a) print("a=%x"%a) #16进制 # 输出字符串 b="xiaobai" print("name=%s"%b) #换行输出 print("hello world \n good morning") #输出多个参数 a = 1 b = "str" c = 3.12 print("a = %d b = %s c = %.2f"%(a, b, c)) #输出数据后不换行 i = 1 while i <= 5: j = 1 while i >= j: print("* ", end="") j += 1 i += 1 print("\n") pass 输出: * * * * * * * * * * * * * * * 输入input python2:raw_input() python3:input() //将输入的文字保存到name name = input("请输入名字") print("你的名字%s"%name) //通过input输入的数据是以字符串的形式存在的,如果需要计算,需要转成对应的类型 userName = input("请输入用户名") print(userName) age = input("请输入年龄") age = int(age) + 1 print(age) 运算符 //:取整除,去掉小数部分 print(10//3) a = 10 a += 10//3 print(a) 类型转换 int(x [,base ]) 将x转换为一个整数 long(x [,base ]) 将x转换为一个长整数 float(x ) 将...
xiaobai1315 发布于 3天前 阅读 6

Linux下的环境部署和项目发布

前提条件,Linux安装完。在服务器端打开终端操作,或者在windown安装XshellPortable工具,推荐使用组合套装。有需要的私信给我,我有绿色免安装包。 Paste_Image.png 1.查看系统版本 sudo uname --m i686 //表示是32位 x86_64 // 表示是64位 2.下载对应版本软件,jdk和Tomcat(切记注意版本) jdk: 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html Tomcat: 下载地址:http://tomcat.apache.org/download-70.cgi 3.使用XftpPortable传输软件上Liunx系统上 养成好习惯新建文件夹进行上传 4.安装jdk (1)jdk安装 rpm包: # rpm -ivh jdk-7u55-linux-x64.rpm    tar.gz包:解压缩 # mkdir /usr/java # cd /usr/java # tar -zxvf /software/jdk-7u55-linux-x64.tar.gz (2)配置环境变量 # vi /etc/profile export JAVA_HOME=/usr/java/default export JAVA_BIN=$JAVA_HOME/bin export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH ######(3)使配置生效(重启服务器),或者使用下面指令 ...
architect刘源源 发布于 5天前 阅读 6

ARM体系中的存储系统

关于ARM体系的存储系统,在后面章节会有详细的介绍。这里仅仅介绍ARM编程模型中与存储系统相关的一些概念。 ARM体系中的存储空间: ARM体系中使用单一的地址空间。该地址空间的大小为2的32次方个8位字节。这些字节单元的地址都是无符号的32位数值,取值范围是0~2^32 - 1。 ARM的地址空间也可以看作是2^30个32位的字单元,这些字单元的地址可以被4整除,也就是说,该地址的低两位为0b00。地址为A的字数据包括地址为A+1、A+2、A+3四个字节单元的内容。 各个存储单元的地址作为32位的无符号数,可以进行常规的整数运算。这些运算的结果进行2^32取模。也就是说,运算结果发生上溢处和下溢处时,地址将会发生卷绕。 ARM存储器格式: 在ARM体系中,每个字单元中包含4个字节单元或2个半字单元;一个半字单元包含两个字单元。但是在字单元中,4个字节哪一个是高位字节,哪一个是低位字节,则有两种不同的格式:Big-endian格式和Little-endian格式。 在Big-endian格式中,对于地址为A的字单元,包括字节单元A、A+1、A+2、A+3,其中字节单元由高位到低位字节顺序为A、A+1、A+2、A+3;这种存储器格式如下表所示。 Big-endian格式的存储系统 字单元A 半字单元A 半字单元A+2 31~24 23~16...
幸福阶梯 发布于 5天前 阅读 9

ARM体系的异常中断

在ARM体系中,通常有以下3种方式控制程序的执行流程: 在正常程序执行过程中,每执行一条ARM指令,程序计数寄存器PC的值加4个字节;每执行一条Thumb指令,程序计数寄存器PC的值加2个字节。整个过程是按顺序执行的。 通过跳转指令,程序可以跳转到特定的地址标号处执行,或者跳转到特定的子程序处执行。其中,B指令用于执行跳转操作;BL指令在执行跳转操作的同时,保存子程序的返回地址;BX指令在执行跳转操作的同时,根据目标地址的最低位可以将程序状态切换到Thumb状态;BLX指令执行3个操作,跳转到目标地址处执行,保存子程序的返回地址,根据目标地址的最低位可以将程序状态切换到Thumb状态。 当异常中断发生时,系统执行完当前指令后,跳转到相应的异常中断处理程序处执行。在异常中断处理程序执行完成后,程序返回到发生中断的指令的下一条指令处执行。在进入异常中断处理程序时,要保存被中断的程序的执行现场,在从异常中断处理程序退出时,要恢复被中断的程序的执行现场。 ARM中异常中断的种类: ARM体系中的异常中断如下表所示。 各种异常中断都具有各自的备份的寄存器组,在本章前面已经有了比较详细的介绍,这里不再重复。 当多个异常中断同时发生时,可以根据异...
幸福阶梯 发布于 5天前 阅读 5

飞行模式的开启和关闭

`if(Settings.System.getString(getActivity().getContentResolver(),Settings.Global.AIRPLANE_MODE_ON).equals("0")) { Settings.System.putInt(getActivity().getContentResolver(),Settings.Global.AIRPLANE_MODE_ON,1); Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); intent.putExtra("state",true); getActivity().sendBroadcast(intent); Log.i(TAG,"airplane on"); } else { Settings.System.putInt(getActivity().getContentResolver(), Settings.Global.AIRPLANE_MODE_ON,0); Intent intent = new Intent(Intent.ACTION_AIRPLANE_MODE_CHANGED); intent.putExtra("state",false); getActivity().sendBroadcast(intent); Log.i(TAG,"airplane off"); }` 这个权限有警告,这是因为只有系统程序才能有这个权限,我的程序是普通程序不能写这个权限要求,写了也没有用。 当在我的手机(android5.1.1)上运行时报异常: java.lang.SecurityException: Permission Denial: not allowed to send broadcast android.intent.action.AIRPLANE_MODE from pid=928, uid=10118 这是因为我的手机API超过了4.2,必须要root之后才能有效。 网上有二篇文件介绍:...
whoisliang 发布于 5天前 阅读 2 评论 1

ARM寄存器介绍

ARM处理器共有37个寄存器。其中包括: 31个通用寄存器,包括程序计数器(PC)在内。这些寄存器都是32位寄存器。 6个状态寄存器,这些寄存器都是32位寄存器,但是目前只是用其中的12位。 ARM处理器共有7种不同的处理器模式,在每一种处理模式中有一组相应的寄存器组。任意时刻,可见的寄存器包括15个通用寄存器(R0~R14),一个或两个状态寄存器及程序计数器。在所有寄存器中,有些是各模式共用的同一个物理寄存器;有一些是各模式自己拥有的独立的物理寄存器。下表列出了各种处理器模式下可见的寄存器情况。 各种处理器模式下的寄存器 用户模式 系统模式 特权模式 中止模式 未定义指令模式 外部中断模式 快速中断模式 R0 R0 R0 R0 R0 R0 R0 R1 R1 R1 R1 R1 R1 R1 R2 R2 R2 R2 R2 R2 R2 R3 R3 R3 R3 R3 R3 R3 R4 R4 R4 R4 R4 R4 R4 R5 R5 R5 R5 R5 R5 R5 R6 R6 R6 R6 R6 R6 R6 R7 R7 R7 R7 R7 R7 R7 R8 R8 R8 R8 R8 R8 R8_FIQ R9 R9 R9 R9 R9 R9 R9_FIQ R10 R10 R10 R10 R10 R10 R10_FIQ R11 R11 R11 R11 R11 R11 R11_FIQ R12 R12 R12 R12 R12 R12 R12_FIQ R13 R13 R13_SVC R13_ABT R13_UND R13_IRQ R13_FIQ R14 R14 R14_SVC R14_ABT R14_UND R14_IRQ R14_FIQ PC PC PC PC PC P...
幸福阶梯 发布于 5天前 阅读 5

java 后台开发中model与entity(实体类)的区别

以前在做项目的时候不太了解model与entity的含义,在公司(卓~)项目中学习到了。model的字段>entity的字段,并且model的字段属性可以与entity不一致,model是用于前端页面数据展示的,而entity则是与数据库进行交互做存储用途。 举个例子:                比如在存储时间的类型时,数据库中存的是datetime类型,entity获取时的类型是Date()类型,date型的数据在前端展示的时候必须进行类型转换(转为String类型),在前端的进行类型转换则十分的麻烦,转换成功了代码也显得十分的臃肿,                 所以将entity类型转换后,存储到对应的model中,在后台做类型转换,然后将model传到前端显示时,前端的就十分的干净。                 同时也可以添加字段,作为数据中转。 具体的转换思路,还没具体看是怎么处理的,等后面看了补上。
architect刘源源 发布于 5天前 阅读 5

Java抽象类 详解

一、抽象类的基本概念 普通类是一个完善的功能类,可以直接产生实例化对象,并且在普通类中可以包含有构造方法、普通方法、static方法、常量和变量等内容。而抽象类是指在普通类的结构里面增加抽象方法的组成部分。 那么什么叫抽象方法呢?在所有的普通方法上面都会有一个“{}”,这个表示方法体,有方法体的方法一定可以被对象直接使用。而抽象方法,是指没有方法体的方法,同时抽象方法还必须使用关键字abstract做修饰。 而拥有抽象方法的类就是抽象类,抽象类要使用abstract关键字声明。 范例:定义一个抽象类 abstract class A{//定义一个抽象类 public void fun(){//普通方法 System.out.println("存在方法体的方法"); } public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰 } 1 2 3 4 5 6 7 8 9 二、抽象类的使用 我们先看范例。  范例:直接实例化抽象类的对象 package com.wz.abstractdemo; abstract class A{//定义一个抽象类 public void fun(){//普通方法 System.out.println("存在方法体的方法"); } public abstract void print();//抽象方法,没有方法体,有abstract关键字做修饰 ...
architect刘源源 发布于 5天前 阅读 3 评论 1

腾讯技术分享:社交网络图片的带宽压缩技术演进之路

为了进一步降低运营带宽成本,减小用户访问流量及提升页面加载速度,社交网络 CDN运维紧跟行业图片优化趋势,创新引入WebP、SharpP、自适应分辨率、Guetzli等图像压缩技术到现网,经过三年多的多部门联合攻关,已逐渐形成一套覆盖全图片类型(JPEG、JPG、PNG、WebP、GIF)多场景的图片压缩运营体系,适用于各类型终端,每年节约外网带宽几百G。
JackJiang- 发布于 2周前 阅读 3754 评论 7 点赞 3

App框架实现———dagger2

该框架的组成 MVP+Dagger2+RxJava+Retrofit+OkHttp+RxCache+单元测试(Junit+Mockito)
jiahongfei 发布于 2个月前 阅读 961 评论 2

Kotlin Primer·第七章·协程库(上篇)

本篇只讲了协程库的使用。还有中篇讲协程的启动和切换实现原理,下篇核心讲解kotlin协程在JVM层的实现原理。 这可能是至今为止最详细实用的 Kotlin 协程库详解了。
kymjs张涛 发布于 3个月前 阅读 1445

Android计步模块优化(今日步数)

最近在项目中研究计步模块,主要功能记录当天步数,类似微信运动,支付宝计步,咕咚今日步数。 [本篇文章简书地址](http://www.jianshu.com/p/cfc2a200e46d)
jiahongfei 发布于 4个月前 阅读 1154 评论 5 点赞 2

React前后端同构防止重复渲染

首先解释React前后端同构、React首屏渲染的概念。然后通过这2个概念解决服务端渲染完成后浏览器端重复渲染的问题。
随风溜达的向日葵 发布于 6个月前 阅读 1777 评论 2 点赞 2

kotlin协程简单封装,助你一臂之力

简述 经过两天的学习历程,看遍了国内的经典博客,也看完了官方的文档。下面推荐大家阅读 好的文章: 开始使用Kotlin协程 官方: kotlinx.coroutines 如果英文够好,推荐看官网的,例子比较全面。 本项目源码地址 计划 学习过后,为了更进一步,特地封装一些常用API,以便其他新手学习使用。接下来将完成下面一个个计划功能 1.  顺序执行 task1,task2 2. 并发执行 task1,task2 3. 等待执行 task2 需等待 task1执行完毕后执行 4. 延迟执行 task1 需要10秒之后执行 5. 心跳执行 异步任务按指定间隔执行 Task  6. 任务执行感知生命周期,可以跟随当前activity的生命周期结束而自动结束,并可以配置是否在重新打开activity时是否要重新执行 7. 任务执行可选主线程还是子线程 8. 任务执行可以选择 需要网络或者不需要网络 9. 任务执行可以选择网络制式4G 或者wifi下执行(5.0以上特性) 10.任务可以选择在充电时执行(5.0以上特性) 11. 任务执行可以随时取消,可以取消所有当前任务 目前框架已经做到前7项计划,后续将逐渐完善。 代码演示 1. 顺序执行代码 代码 效果 顺序执行效果图 2. 并发执行 并且分别延迟1秒,3秒 代码 效果 并发效果图 3. 等待执行 代码 效果 等待效果...
zb1500427248653 发布于 6个月前 阅读 1652 点赞 1

浅谈Hybrid

Android web开发入门篇
Android小闹 发布于 7个月前 阅读 2160 评论 4 点赞 6

Android 桌面加载图标过程分析

### 桌面应用图标流程 #### 前言 本人工作上碰到这么一个需求,开发一款滤镜引擎,将桌面上所有的图标进行统一的滤镜化,这就需要了解一下整个桌面去取图标的过程,了解了整个过程,找到真正拿图标的地方,在真正取图标的地方将图片进行替换,或者滤镜化,之前分析情况,现在整理下,与大家分享。**本文所用的代码,是基于Android 5.1** #### 桌面组件介绍 ![一级页面](https://static.oschina.net/uploads/img/201707/25114347_zV1r.png "一级页面") - 一级菜单 - **WorkSpace**:他是一个ViewGroup,要想在桌面上显示东西,就得往这个ViewGroup里添加自己的View - **BubbleTextView**:他是一个TextView,上方是图标,下方是名称,在桌面上的图标都是由这个类表示 - **FolderIcon**:他也是一个ViewGroup,用来表示桌面上的文件夹图标,里面添加了缩略处理过的bitmap,他的背景图片就是文件夹的形状 - **HotSeat**: 他是个FrameLayout,是桌面下方的固定快捷区,包含了几个常用的图标,中间的AllApp按钮是固定位置,也是一个TextView ![抽屉桌面](https://static.oschina.net/uploads/img/201707/25114317_XbLg.png "抽屉桌面") - 抽屉页面 组件 - **PagedView**:他是一...
蔡小鹏 发布于 7个月前 阅读 1760 评论 8 点赞 4

关于线程,还有这些是你需要知道的!

在日常开发中,线程常常被用作为提升程序效率的重要手段。在CoorChice的这篇文章中,CoorChice介绍了线程的基本运作。
CoorChice 发布于 8个月前 阅读 4378 评论 26 点赞 18

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

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

使用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() 怎么画?...
量子 发布于 8个月前 阅读 2576 评论 25 点赞 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...
瞎折腾 发布于 8个月前 阅读 816

用两张图告诉你,为什么你的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 发布于 9个月前 阅读 6731 评论 44 点赞 26 打赏 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 发布于 10个月前 阅读 1768 评论 7 点赞 3

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

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

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

想要开发一个 PWA(Progressive Web App)应用,你必须知道首先知道,Service Worker 是什么,他是怎么工作的。
kymjs张涛 发布于 1年前 阅读 2845 评论 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...
业界小白 发布于 1年前 阅读 1194 评论 1 点赞 1

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

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

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

博卡君的小程序使用教程
博卡君 发布于 1年前 阅读 7221 评论 10 点赞 5

Lua与ObjC的交互

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