精华内容
下载资源
问答
  • java开发手机app教程,看完必懂

    千次阅读 2021-07-21 18:02:28
    蚂蚁金服一面(技术面) JVM 内存分哪几个区,每个区的作用是什么?JVM有哪些回收算法,对应的收集器有哪些?...java线程同步都有哪几种方式,在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别.

    蚂蚁金服4面Java高级开发岗(拿offer):看看阿里都问些什么?

    蚂蚁金服一面(技术面)

    JVM 内存分哪几个区,每个区的作用是什么?JVM有哪些回收算法,对应的收集器有哪些?

    GC 的两种判定方法 ?CMS 收集器与 G1 收集器的特点。

    hashmap源码问题

    HashMap、HashMap如何保证线程安全、ConcurrentHashMap

    HashMap底层结构 put操作讲一下

    GC 的两种判定方法 ?CMS 收集器与 G1 收集器的特点。

    java线程同步都有哪几种方式,在 Java 中 CycliBarriar 和 CountdownLatch 有什么区别?

    cas的原理,变量要用哪个关键字修饰,volatile实现的原理。

    你在多线程环境中遇到的常见的问题是什么?你是怎么解决它的?

    MYSQL 数据库服务器性能分析的方法命令有哪些?

    什么是通用 SQL 函数?

    手撕代码:按层次遍历二叉树?

    Java 配置的方式配置 Spring

    spring中用到了什么, 简述 AOP 和 IOC 概念,aop是怎么实现的?

    第一轮非常重要,第一面能通过,后续被录用的可能性就比较高了,建议系统性的学习面试题目

    蚂蚁金服二面(技术面)

    自我介绍&项目

    项目用 Spring 比较多,有没有了解 Spring 的原理?AOP 和 IOC 的原理

    分布式锁原理

    CAS 算法,CAS 与 synchronized 的使用情景

    简洁描述 Mysql 中 InnoDB 支持的四种事务隔离级别名称,以及逐级之间的区别?

    分别解决什么问题?

    dubbo有哪些模块,底层通信的原理?Dubbo 集群的负载均衡有哪些策略?

    如果让你实现一个https,你会怎么实现?

    常用的负载均衡,该怎么用,你能说下吗?

    常见的分布式事务方案有哪些?

    Dubbo 的核心功能?如何从0到1设计一个类似Dubbo的RPC框架?

    蚂蚁金服三面(技术面)

    再谈谈一致hash算法(redis)?

    数据库索引,B+树的特性和建树过程。

    mysql相关的行锁,表锁;乐观锁,悲观锁

    分布式锁的方案,redis和zookeeper哪个个好,如果是集群部署,高并发情况下哪个性能更好。

    activeMQ 发送消息的方式有哪些?activeMQ 如何调优

    设计模式与重构,谈谈你对重构的理解

    Collections.sort底层排序方式

    说说 Redis 哈希槽的概念?Redis 集群如何选择数据库?

    spring cloud的服务注册与发现是怎么设计的?

    蚂蚁金服四面(技术面)

    自己参与的项目,技术难度高的有哪些?

    线上有实际的性能优化经验?

    从SQL、JVM、架构、数据库四个方面讲讲优化思路,以及如何优先排序?

    redis的持久化方式,redis3.0原生集群和redis读写分离+哨兵机制区别

    如果让你实现一个mq,怎么样保证消息不丢失

    你熟悉哪些中间件,谈谈你对他们的理解,以及对应的使用场景区别?

    最后,你有什么想问我的?

    余额宝屋面(HR面)

    你个人的最大的缺点是什么?

    在工作中和生活中遇见最大的挑战是什么?是如何克服的?

    未来有什么规划?

    平时有哪些兴趣爱好

    Kafka实战笔记

    关于这份笔记,为了不影响大家的阅读体验,我只能在文章中展示部分的章节内容和核心截图,如果你需要完整的pdf版本,戳这里即可免费领取

    image.png

    • Kafka入门
    • 为什么选择Kafka
    • Karka的安装、管理和配置

    image.png

    • Kafka的集群
    • 第一个Kafka程序
    • image.png

    afka的生产者

    image.png

    • Kafka的消费者
    • 深入理解Kafka
    • 可靠的数据传递

    image.png

    image.png

    • Spring和Kalka的整合
    • Sprinboot和Kafka的整合
    • Kafka实战之削峰填谷
    • 数据管道和流式处理(了解即可)

    image.png

    • Kafka实战之削峰填谷

    image.png

    ka实战之削峰填谷**

    • 数据管道和流式处理(了解即可)

    [外链图片转存中…(img-NmXgZNBn-1626861733756)]

    • Kafka实战之削峰填谷

    [外链图片转存中…(img-sAvylTjQ-1626861733757)]

    展开全文
  • 各位大神,我是刚培训出来的,刚面试一个公司,是做手机APP的,我培训班没教过APP的开发,不知道和开发BS应用有啥区别呢?我现在不知道这个APP的具体功能是什么?要什么需求?就一般情况来说,开发APP我可能会用到...
  • 移动互联网是大趋势,很多网站通过开发手机APP布局移动端。 根据统计,今年是网站移动流量增长期。因此,对于站长朋友而言,从长远角度来考虑,要考虑到这一趋势。尽早让自己的网站有一个非常适合手机端浏览的网站。 ...
  • 前端开发APP,从HBuilder开始~ 序 通过HTML5开发移动App时,会发现HTML5很多能力不具备。为弥补HTML5能力的不足,在W3C中国的指导下成立了www.HTML5Plus.org组织,推出HTML5+规范。 HTML5+扩展了JavaScript对象plus...

    前端开发APP,从HBuilder开始~

    通过 HTML5 开发移动App 时,会发现HTML5 很多能力不具备。为弥补HTML5 能力的不足,在W3C 中国的指导下成立了www.HTML5Plus.org组织,推出HTML5+规范。

     

    HTML5+扩展了JavaScript 对象plus,使得js 可以调用各种浏览器无法实现或实现不佳的系统能力,设备能力如摄像头、陀螺仪、文件系统等,业务能力如上传下载、二维码、地图、支付、语音输入、消息推送等。

     

    HBuilder 的手机原生能力调用分2 个层面:

     

    a) 跨手机平台的能力调用都在HTML5+ 规范里,比如二维码、语音输入,使用plus.barcode 和plus.speech。编写一次,可跨平台运行。

     

    b) JS Bridge是另一项创新技术,通过js 可以直接调ios 和android 的原生API,这部分就不再跨平台,比如调ios game center,或在android 手机桌面创建快捷方式。

    JSB 的用法是var obj = plus.android.import("android.content.Intent");将一个原生对象android.content.Intent 映射为js 对象obj,然后在js 里操作obj对象的方法属性就可以了。

     

    注:使用 HTML5+开发的移动App 并非mobileweb页面。这是新手最容易混淆的地方。mobileweb 的文件存放在web 服务器上,而移动App 的文件存放在手机本地,编写移动App 的html、js、css文件被打包到ipa或apk等原生安装包,在手机客户端运行。

     

    当然这些移动 App 里某些页面也可以继续从服务器端以网页方式运行。所以mobile web,在HBuilder 里新建项目时,属于web 项目。不要放置到移动App 项目。mobile web 项目也不能真机联调和打包.

    内容简介

    介绍目前前端人员开发app的几种方法,具体介绍hbuilder开发app,一扇赞新的大门~

    无所不能的js

    最开始js仅仅局限于网页上一些效果,操作网页内容等,但是nodejs把js带入了后端,也就是服务器端,从此前端人员可以涉及后端,前后通吃,native.js(以及其他js,稍候介绍)把js带入了移动端,从此前端人员前后移动通吃。

     

    前端涉及app的两种方式

    适应移动端的网页

    大家都很熟悉的bootstrap,和现在刚出来的amazeui就是这种方法的代表,说的简单点就是对移动端做了适配,布局样式组件都适合移动端展示。

     

    缺陷:毕竟不是app,不管怎样也没办法取代app的便捷和功能强大。

     

    js+html+css+打包技术

    比较有名的就是phonegap了,国内的是hbuilder,大概的意思是html负责页面内容,js负责效果以及调用原生app方法,ui框架负责样式,最后打包成apk或者ipa

     

    hbuilder(http://www.dcloud.io/)

    不谈phonegap,不适用国内国情,是的,你没有看错,这是一个开发的ide,其实就是对eclipse进行了深度定制。

     

    特点是快捷键比较多,支持移动app开发(h5+方式)。

     

    h5+(http://www.html5plus.org/#home)

    可以说nodejs将js带到后端,h5+将js带到移动端。

     

    原理

    上面说过的原理,再次说一遍:

     

    html负责页面,也就是的内容和框架;

     

    js负责调用方法,也就是调用一些移动端原生;

     

    ui负责样式,比较有名的bootstrap,amazeui,jquery mobile,mui

     

    ui比较

    上面说的几个ui,做下简单比较,仅代表个人观点,

     

    Amazeui:功能和bootstrap重复,官方解释是对中文排版做了优化,个人觉得有点多余,bootstrap就很好。

     

    Bootstrap:适合移动端浏览网页适配,移动端浏览效果不错,但是还是网页。

     

    jquery mobile:专门对移动端做定制,看起来就像手机应用一样,js+css,国外的,不推荐,有坑。

     

    Mui:这个是推荐的,比较了jqmobile和mui,显然mui效果样式好点,估计也会有坑,但是支持国产吧。

     

    前端开发app

     

    搭建开发环境

    不需要搭建ios和android的开发环境,只需要下载hbuilder(估计需要java环境支持)。

     

    选定ui

    目前推荐mui,效果不错

     

    写事件

    通过js调用原生方法实现app效果

     

    写业务逻辑

    环境搭建

    前言

    本教程是介绍使用html5+(nativejs)和mui开发移动app(包括android和ios),

     

    感兴趣请继续,不感兴趣请跳过,大部分来自官方api,增加了一些自己的总结。

     

    HBuilder

     

    说明

    用h5+开发app的环境,也是ide,对eclipse做了深度定制,以前使用过eclipse或者myeclipse的童鞋可以直接上手。

     

    官网

    http://www.dcloud.io/

     

    下载

    在官网上点击下载,安装好后可以自己将文件夹压缩成zip,方便以后使用,解压就可以用。

     

    依赖

    估计会需要jre环境,没有试过,如果需要请自行百度搜索jre安装方法。

     

    上手

    打开HBuilder之后默认会有一个项目“HelloHBuilder”,里面有HBuilder使用的介绍。

     

    快捷键

    HBuilder一大亮点是快捷键,但是如果习惯了自己之前的快捷键会很别扭,需要自己在工具——选项——常规——快捷键中修改。

     

    插件

    HBuilder将插件做了下优化,提供了最长用的一些插件,并且使用dcloud网站下载,速度很快,eclipse自带插件安装需要翻墙。

     

    打开工具——插件安装,安装自己需要的插件,例如我安装了如下插件:

     

     

    完成

    环境搭建就完成了,这应该是所有开发环境搭建中最简单的了。

     

     

    原理介绍

    原理

    html5+开发app的原理大概是这样:

     

    html页面负责内容;

     

    ui负责页面样式;

     

    js负责调用原生app方法。

     

    html5

    html5这部分负责页面,也就是app中你看到的东西,大概的架构和内容

     

    ui

    ui负责页面样式,既然要做移动app,那做出的效果就得和移动端靠近,这里并没有局限于用哪种ui,比较常见的适配移动端的ui框架有:

     

    bootstrap

    介绍:Twitter开发的ui框架,特点是可以简介美观,可以适配移动端(例如本站:http://uikoo9.com/

     

    中文官网:http://v3.bootcss.com/

     

    amazeui

    介绍:国人模仿bootstrap做的一个ui框架,个人感觉有点多余,有兴趣的可以看看。

     

    官网:http://amazeui.org/

     

    jquery mobile

    介绍:HBuilder其实是模仿国外的phonegap,通用mui是模仿jquery mobile,但是感觉也不错

     

    官网:http://jquerymobile.com/

     

    mui

    介绍:和HBuilder相搭配的移动ui,也和nativejs相搭配,感觉还不错,模仿的ios7界面风格。

     

    官网:http://dcloudio.github.io/mui/

     

    framework7

    介绍:国外一块模仿ios7的ui框架,赞

     

    官网:http://www.idangero.us/framework7/

     

     

    nativejs

    介绍:一个可以调用android和ios原生方法的js

    入门:http://ask.dcloud.net.cn/article/88

     

    搭配

    选择:目前比较好的搭配是mui+nativejs+hbuilder,你也可以尝试其他的组合,例如jqmobile+nativejs等

     

    mui-demo:http://www.dcloud.io/hellomui/

     

    nativejs-demo:http://www.html5plus.org/#case#/case/id/4.html

     

    mui开发示例

    前言

    看了前面两篇内容是否有点跃跃欲试了?

     

    下面就开始一个简单的例子,以及mui相关内容

     

    mui

    官网:http://dcloudio.github.io/mui/

     

    说明:希望你可以把官网内容通读一遍,这是以后开发的基础

     

    开始

    新建项目

    在首页点击新建移动App,如下:

     

    或者在项目管理器内右键新建,或者快捷键ctrl+n+a

     

    选择模版

    这里选择mui项目,会自动引入mui的js和css,如下:

    文件结构

    默认有以下几个文件夹:css,fonts,js,如下:

     

    简单开发

    header

    打开index.html后在body内输入mh后回车,如下:

     

    body

    同样输入mbo后回车

     

    list

    在mbody中添加一些列表

    最后的代码

    <!DOCTYPE html>  

    <html>  

    <head>  

        <meta charset="utf-8">  

        <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no" />  

        <title></title>  

        <script src="js/mui.min.js"></script>  

        <link href="css/mui.min.css" rel="stylesheet"/>  

        <script type="text/javascript" charset="utf-8">  

            mui.init();  

        </script>  

    </head>  

    <body>  

        <header class="mui-bar mui-bar-nav">  

            <a class="mui-action-back mui-icon mui-icon-left-nav mui-pull-left"></a>  

            <h1 class="mui-title">我的标题</h1>  

        </header>  

        <div class="mui-content">  

            <ul class="mui-table-view" id="my_task_list">  

                <li class="mui-table-view-cell">  

                    <div class="mui-slider-right mui-disabled">  

                        <a class="mui-btn mui-btn-red">删除</a>  

                    </div>  

                    <div class="mui-slider-handle">  

                        待办事项1  

                    </div>  

                </li>  

                <li class="mui-table-view-cell">  

                    <div class="mui-slider-right mui-disabled">  

                        <a class="mui-btn mui-btn-red">删除</a>  

                    </div>  

                    <div class="mui-slider-handle">  

                        待办事项2  

                    </div>  

                </li>  

            </ul>  

        </div>  

    </body>  

    </html>  

     

    调试(android为例)

    连接手机

    首先需要连接手机

     

    运行

    选择运行——手机运行——在xx设备上运行

    或者使用快捷键ctrl+r

     

    效果

    现在你就可以在手机上看效果了

     

    注意

    需要开启开发者模式

     

    打包

    dcloud证书打包

    选择发行——App打包——选择android以及dcloud公用证书,如下:

     

    参数配置

    可能有时候会提示参数配置错误,这是你需要打开项目下manifest.json文件,并去掉第三方插件,如下:

     

     

    等待

    返回上一步的发行打包,点击打包后会提示你已经到云端打包,你只需要等待了,

     

    一小会之后就打包好了,这时你就可以把apk拷贝到自己手机使用了,

    mui中几种open页面的区别

    使用hbuilder+mui做app一段时间,期间遇到问题不少,自己摸索,做了个app,详见:http://uikoo9.com/dishi/download

     

    如果您水平比这个高,那就不用看了,直接跳过。

     

    【水平】

     

    由于用hbuilder+mui出于兴趣,也就没有去看源码,停留在使用总结层次,所以有说的不对的地方还请见谅。

     

    【几种打开页面的方式】

     

    1.初始化时创建子页面

     

    2.直接打开新页面

     

    3.预加载页面

     

    【示例】

     

    1.初始化时创建子页面

     

    mui.init({  

        subpages: [{  

            url: your - subpage - url, //子页面HTML地址,支持本地地址和网络地址  

            id: your - subpage - id, //子页面标志  

            styles: {  

                top: subpage - top - position, //子页面顶部位置  

                bottom: subpage - bottom - position, //子页面底部位置  

                width: subpage - width, //子页面宽度,默认为100%  

                height: subpage - height, //子页面高度,默认为100%  

                ......  

            },  

            extras: {} //额外扩展参数  

        }]  

    });  

     

    2.直接打开新页面

     

    mui.openWindow({  

        url: new - page - url,  

        id: new - page - id,  

        styles: {  

            top: newpage - top - position, //新页面顶部位置  

            bottom: newage - bottom - position, //新页面底部位置  

            width: newpage - width, //新页面宽度,默认为100%  

            height: newpage - height, //新页面高度,默认为100%  

            ......  

        },  

        extras: {  

            ..... //自定义扩展参数,可以用来处理页面间传值  

        }  

        show: {  

            autoShow: true, //页面loaded事件发生后自动显示,默认为true  

            aniShow: animationType, //页面显示动画,默认为”slide-in-right“;  

            duration: animationTime //页面动画持续时间,Android平台默认100毫秒,iOS平台默认200毫秒;  

        },  

        waiting: {  

            autoShow: true, //自动显示等待框,默认为true  

            title: '正在加载...', //等待对话框上显示的提示内容  

            options: {  

                width: waiting - dialog - widht, //等待框背景区域宽度,默认根据内容自动计算合适宽度  

                height: waiting - dialog - height, //等待框背景区域高度,默认根据内容自动计算合适高度  

                ......  

            }  

        }  

    })  

     

    3.预加载页面

     

    // 方式1  

    mui.init({  

        preloadPages: [{  

            url: prelaod - page - url,  

            id: preload - page - id,  

            styles: {}, //窗口参数  

            extras: {}, //自定义扩展参数  

            subpages: [{}, {}] //预加载页面的子页面  

        }]  

    });  

      

    // 方式2  

    var page = mui.preload({  

        url: new - page - url,  

        id: new - page - id, //默认使用当前页面的url作为id  

        styles: {}, //窗口参数  

        extras: {} //自定义扩展参数  

    });  

     

     

     

    【一些区别】

     

    1.子页面和非子页面

     

    以上三种方式中,2,3打开的页面非子页面,

     

    区别是子页面相当于html中的iframe,而非子页面相当于新开了一个浏览器窗口加载了一个html

     

    2.子页面适用于侧滑菜单

     

    子页面有其特点,特别适用与index.html+list.html这种情况,

     

    如果用index.html(主页面)+list.html(子页面)实现的话,当主页面右滑时子页面会自动跟随,

     

    而用index.html(主页面)+list.html(新页面)实现的话,主页面右滑,新页面不右滑,还得单独处理新页面。

     

     

    3.子页面使用频繁切换的情况

     

    如果频繁左滑右滑,在配置较低的手机上会出现list.html遮住index.html的情况,采用子页面模式就不会,采用新页面模式几率很大。

     

    4.子页面适用与下拉刷新和上拉加载

     

    之前做向下拉刷新的时候,采用的是新页面的形式,按照官网教程,怎么搞都不成功,后来看了下源码,发现下拉刷新必须采用子页面的形式,也就是你的list.html必须是index.html的子页面,才可以下拉刷新。

     

    5.新页面适用于新页面

     

    open一个新页面,适用于查看详情之类的,需要打开一个新页面的情况,并且mui自己封装了新页面的back方法,你就不需要去操心了。

     

    6.预加载页面的两种方式

     

    第一种是在初始化的时候预加载,这种情况适合在你这个页面在很久之后才会用,如果你要立即到的页面并使用,那么你会得到null。第二种方式类似与open,个人感觉没有什么太大的区别,唯一的区别是open就直接打开了,preload只是加载,你可以之后选择打开的时机。

     

    7.总结

     

    需要下拉刷新上拉加载请使用子页面,需要打开一个新页面请使用新页面方式,需要加载一个页面但是暂时不使用请使用预加载方式。

     

    展开全文
  • 1:准备:java jdk (android studio 夜神模拟器)引用链接中有下载图文教程,2 : android studio 编辑器下载和安装图文教程链接点击打开链接3:根据2 的链接创建好了APP。过程中会下很多jar。这个编辑器打开就会...

    1:准备:java jdk  (android studio  夜神模拟器)引用链接中有下载图文教程,

    2 :  android studio 编辑器下载和安装图文教程链接
    点击打开链接

    3:根据2 的链接创建好了APP。过程中会下很多jar。这个编辑器打开就会自动build APP 挺好的。然后右上角的叉号就是关闭。

    4:启动之前要把夜神模拟器联机操作如下

    D:\Program Files\Nox\bin\nox_adb.exe connect 127.0.0.1:62001   在CMD中运行  exe之前的是你们夜神模拟器安装的路径

    5:run APP 要点。直接看连接

    点击打开链接

    6:启动好了。那么你的夜神界面直接会出现 helloword字样。

     

    7:成功展示

    编辑器启动成功样子

     

    夜神模拟器样子

     

     

     

    祝你成功。我也是第一搞。、就可以了。相信你们也可以。

     

     

    展开全文
  • 利用Fiddler手机抓包对ONE APP网页爬虫实现电影资讯微信Java开发
                           

    前言

    好久没写博客了,打算把之前做的一个电影评分资讯推送的微信开发全程记录一下,适合对网络爬虫、微信开发感兴趣的童鞋。在教程开始之前,我想先引出两个问题(这次写博客假装很有条理的样子= =)

    1. 为什么想要抓取ONE电影的数据?

    因为我平时本身就喜欢去电影院看电影,所以关注到ONE·APP有电影栏目,而且评分信息一目了然,非常适合我这种人,该看哪一部你懂的~(PS:这是写博客当天截的图,下周末去看82分机器猫,嘿嘿)

    ONE电影评分手机截图

    当然了,豆瓣电影也有评分,但是感觉那里水军很多,所以数据参考价值不大吧。顺便普及一下,“一个”APP是由韩寒创立的,最初只有文学栏目,2016年初才进军电影行业(相关报道),目的就是让电影打分少一点套路,多一分真诚,用心良苦呀,所以我们就用收下韩寒这份好意吧!

    2. 我需要提前准备什么东西?

    • 首先,你得有一台手机(你是不是傻?请忽略这条),如果16g苹果没内存可用安卓模拟器代替。。。(没有别的意思…)
    • 其次,你得有java网络爬虫相关知识,主要是httpclient的使用,解析JSON用的是效率较高的jackson。
    • 最后,你得有微信java开发经验,主要解决数据呈现问题,当然你也可以使用仅用的JAVA EE知识做一个网页来呈现数据。因为不能面面俱到,所以此教程可能不会过多讲解这一块内容,这里推荐慕课网视频教程,建议直奔重点看第五章,十分受用。

    对了,先放个图,看下微信开发的功能最终效果,噔噔噔噔~↓

    电影功能截图

    还是像模像样的,前面bb了那么多,下面开始我们的教程吧!


    思路

    1. 抓取数据(Fidder抓包,手机wifi代理)

    2. 分析数据(解析JSON/HTML,提取有用信息)

    3. 微信开发(文本消息匹配、被动回复图文)

    基本思路是对数据的抓取→分析→处理→呈现,下面以ONE·APP的电影数据为例,本教程会把重点放在前面两part。


    实战

    1. 抓取数据

    前期准备

    1. 下载抓包工具Fiddler:大家到网上去下载就好了,我这里用的是V4.6

    2. 设置Fiddler规则(关键):点Tools->Fiddler Options->HTTPS,勾选Capture HTTPS CONNECTsDecrypt HTTPS traffic这两项,建议勾上ignore server certificate erros (unsafe)保证我们抓包时候不会狂弹窗而影响心情;切换到Connections选项卡,再勾选allow remote computers to connect这项,记住这里出现的Fiddler listens on port端口号是8888(当然这里可以自己改成别的,但是建议不要这样做),之后会用到它。
      Fiddler设置1
      Fiddler设置2
      设置完必须重启Fiddler

    3. 搭建网络环境:使电脑和手机在同一个局域网下,这个为之后的手机wifi代理做准备。

    4. 查看电脑内网IP:在命令行输入ipconfig查看内网IP,我这里查到是192.168.2.106,先记住,下面会用到。
      电脑内网IP

    5. 设置手机wifi代理(关键):不用手机可能有点不一样,我这里以我的安卓小锤子来做示范。设置->无线网络->已连接的网络详细->高级设置,开启手动HTTP代理,填写代理服务器主机名为电脑内网IP 192.168.2.106,以及代理服务器端口为Fiddler显示的8888。其他系统和型号的手机自己琢磨下吧~
      手机wifi代理设置

    6. 手机下载“一个”APP:在各大手机应用市场搜索一个ONE韩寒均可下载。

    下面开始才是重点

    1. 手机打开“一个”APP,在抓包之前先清理Fiddler刚刚的抓取到的包,方便我们等下筛选。
      清除Fiddler所有的包

    2. 点开“电影”栏目,观察Fiddler的抓包情况。到这里你已经成功了一半了,host为wufazhuce.com正是“一个”的域名,而且url为/api/movie/list/0?(这很restful…),可以确定是我们想要的那个请求。
      (但是在实际抓包中,往往会有各种各样的无用信息掺杂在里面,这时候就需要我们去辨别哪些是我们想要的url)
      电影请求
      我们通过直接访问刚刚抓取到的url:http://v3.wufazhuce.com:8000/api/movie/list/0?,打开发现返回的是json格式的数据,正是我们想要的。到此为止,我们的抓取数据part已经完成了,应该不困难吧= =
      电影列表返回数据

    没有抓取到包可能出现的原因

    1. 电脑和手机不在同一个局域网内
    2. Fiddler设置不对
    3. 手机wifi没有代理成功,可能是填写有误,也可能是手机系统问题
    4. 最有可能的是我之前遇到的问题:设置完代理后,要先关闭APP,再重新打开
    5. 人品问题,自行百度,也欢迎留言哈~

    更多API分享

    1. 电影详情:http://v3.wufazhuce.com:8000/api/movie/detail/ID

    2. 首页电影故事:http://v3.wufazhuce.com:8000/api/movie/ID/story/1/0

    3. 全部电影故事:http://v3.wufazhuce.com:8000/api/movie/ID/story/0/0

    4. 热门评论(点赞数) http://v3.wufazhuce.com:8000/api/comment/praise/movie/ID/0

    5. 全部评论(发表时间) http://v3.wufazhuce.com:8000/api/comment/time/movie/ID/0

    注意:所有URL中的ID替换为实际的电影ID即可,最后以为参数0所代表的含义代表下标ID,在下文中会提及到,默认写0。


    2.分析数据

    1. 我们选择那条请求,查看软件右边的请求详细分析,由于我们事先知道请求返回数据类型是json,所以我们点Inspectors选项卡下的JSON选项卡,如下图。
      电影请求详细分析

    2. 我们把有用的信息记录下来,很有必要。
      请求方式&地址:GET http://v3.wufazhuce.com:8000/api/movie/list/0
      备注:url中的最后一个参数代表电影ID下标,用于分页功能,假如你第一页最后一个电影记录的ID是84,那么你再次请求地址http://v3.wufazhuce.com:8000/api/movie/list/84,得到的数据就是从85开始,也就是下一页电影的数据。这里要靠大家软件开发的经验以及亲手尝试过才知道,听不懂也没关系,这一个参数不足以影响我们的开发。你只要知道默认是0,获取最新的电影数据就行了。
      json返回部分有用数据

      {  "res": 0,  "data": [    {      "id": "103",      "title": "哆啦A梦:新·大雄的日本诞生",      "score": "82",      "cover": "http://image.wufazhuce.com/FsaiDxnewphDWZvTn021Si22ZaMv"    }  ]}
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
                                               
      参数类型说明
      resint返回码:0-成功,1-失败
      dataarray数据集合
      • id
      int电影ID,唯一标识
      • title
      string电影名
      • score
      int评分
      • cover
      string封面地址

    当然了,这种是json数据格式的分析过程,这个跟过程跟你得业务有关,而我只需要实现一开始所呈现的那种图片效果,以上这些数据就够了。使用jackson来解析数据。

    如果返回的数据是xml格式,也很好办,跟json差不多,使用xstream解析。

    如果返回的数据是带视图模型(也就是有页面的),那就要用浏览器审查元素或者查看源代码,细心观察需要爬取的数据都在哪些div里面,观察它或者它的父元素是否有什么标志性的id甚至是class,这样就能通过jsoup解析它们。网页爬虫可以参考我上一篇爬虫文章《基于WebMagic写的一个csdn博客小爬虫》,框架里面用到的就是强大的jsoup。

    数据分析完后,接下来就是真正的coding了!


    3.微信开发

    1. 添加maven依赖maven配置视频,或者手动下载jar包)

      <!-- HttpClient --><dependency>    <groupId>org.apache.httpcomponents</groupId>    <artifactId>httpclient</artifactId>    <version>4.3.6</version></dependency><dependency>    <groupId>org.apache.httpcomponents</groupId>    <artifactId>httpmime</artifactId>    <version>4.3.6</version></dependency><!-- JSON --><dependency>    <groupId>org.codehaus.jackson</groupId>    <artifactId>jackson-mapper-asl</artifactId>    <version>1.9.13</version></dependency><!-- XML --><dependency>    <groupId>com.thoughtworks.xstream</groupId>    <artifactId>xstream</artifactId>    <version>1.4.7</version></dependency><!-- HTML --><dependency>    <groupId>org.jsoup</groupId>    <artifactId>jsoup</artifactId>    <version>1.9.2</version></dependency><!-- IO --><dependency>    <groupId>commons-io</groupId>    <artifactId>commons-io</artifactId>    <version>2.4</version></dependency>
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
    2. 添加wx-tools.jar(我一个室友写的框架,下载jar包,查看官方文档,3分钟上手教程
      当然了,如果嫌麻烦你可以不使用任何的微信后台框架,如果没学习过微信java开发的请移步到慕课网视频教程,直奔重点看第五章。

    3. 编写爬虫业务(重点)

      package com.soecode.xfshxzs.service;/** * 电影爬虫业务 */public class MovieService {    // 电影列表URL    private static final String MOVIE_LIST_URL = "http://v3.wufazhuce.com:8000/api/movie/list/0";    /**     * 获取电影列表     *      * @return     */    public List<Movie> getMovieList() {        List<Movie> list = new ArrayList<Movie>();        try {            String json = HttpUitl.doGet(MOVIE_LIST_URL);            ObjectMapper mapper = new ObjectMapper();            JsonNode root = mapper.readTree(json);            JsonNode data = root.path("data");            if (data.isArray()) {                for (JsonNode node : data) {                    Movie movie = mapper.readValue(node, Movie.class);                    list.add(movie);                }            }        } catch (ClientProtocolException e) {            e.printStackTrace();        } catch (IOException e) {            e.printStackTrace();        }        return list;    }}
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37

      自己写的一个HTTP工具类,拥有doGet方法,实现了传入一个url,输出网页字符串文本。

      package com.soecode.xfshxzs.util;/** * HTTP工具类 */public class HttpUitl {    /**     * 普通GET请求     *      * @param uri     * @return     * @throws IOException     * @throws ClientProtocolException     */    public static String doGet(String uri) throws ClientProtocolException, IOException {        String html = null;        CloseableHttpClient httpClient = HttpClients.createDefault();        HttpGet httpGet = new HttpGet(uri);        CloseableHttpResponse response = httpClient.execute(httpGet);        HttpEntity entity = response.getEntity();        if (entity != null) {            html = EntityUtils.toString(entity);            EntityUtils.consume(entity);        }        httpGet.releaseConnection();        response.close();        return html;    }}
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
    4. 编写处理器:调用业务方法,实现星星效果,装配图文消息,发送给用户

      package com.soecode.xfshxzs.handler;/** * 电影消息处理器 */public class MovieMessageHandler implements WxMessageHandler {    private MovieService movieService = new MovieService();    public WxXmlOutMessage handle(WxXmlMessage wxMessage, Map<String, Object> context, WxService wxService)            throws WxErrorException {        String content = wxMessage.getContent();        List<Movie> list = movieService.getMovieList();        for (int i = 0; i < 8; i++) {            Item item = new Item();            item.setTitle(movieDetail.getScore() + "分 " + createStarsByScore(movieDetail.getScore()) + " | "                    + movieDetail.getTitle());            item.setPicUrl(movieDetail.getDetailcover());            builder.addArticle(item);        }        return WxXmlOutMessage.NEWS().toUser(wxMessage.getFromUserName()).fromUser(wxMessage.getToUserName()).build();    }    /**     * 根据分数创建星星     *      * @param score     * @return     */    private String createStarsByScore(int score) {        String stars = "";        int solidStarsNum = Math.floorDiv(score + 10, 20);        for (int i = 0; i < solidStarsNum; i++) {            stars += "★";        }        int hollowStarsNum = 5 - solidStarsNum;        for (int i = 0; i < hollowStarsNum; i++) {            stars += "☆";        }        return stars;    }}
          
      • 1
      • 2
      • 3
      • 4
      • 5
      • 6
      • 7
      • 8
      • 9
      • 10
      • 11
      • 12
      • 13
      • 14
      • 15
      • 16
      • 17
      • 18
      • 19
      • 20
      • 21
      • 22
      • 23
      • 24
      • 25
      • 26
      • 27
      • 28
      • 29
      • 30
      • 31
      • 32
      • 33
      • 34
      • 35
      • 36
      • 37
      • 38
      • 39
      • 40
      • 41
      • 42
      • 43
      • 44
    5. 新建拦截规则:匹配文本类消息“电影”,看不懂也没关系,真的没关系= =

      router.rule().async(false).msgType(WxConsts.XML_MSG_TEXT).rContent("电影").handler(new MovieMessageHandler()).end();
          
      • 1
    6. 剩下就是微信服务器验证了,在开发过程中我们应该本地调试过才放到自己服务器上,之前使用的内网映射(穿透)工具ngrok(怀念一下)不知道何时用不了了,所以一直在用很不稳定的花生壳,大家自己选择吧。到此为止,我们的教程已经顺利完成了,此处应有掌声,啪啪啪啪~

    要源码请继续往下看↓


    后记

    教程中只涉及到了电影资讯的爬虫,还有查天气、查快递等更多功能请关注公众号尽情调戏(好像有BUG?),仅作为一个DEMO参考。放二维码目的不是为了增粉啊,真的不是啊,只是想演示以上教程,赶紧扫吧~

    小锋生活小助手微信公众号二维码

    这个微信公众号的java源码我已经放到了我的GitHub上了,大家可以下载参考,互相交流学习~
    https://github.com/liyifeng1994/xfshxzs

    很感谢大家能够看到这里,你们的每一个阅读量都是对我莫大的鼓励!(如果能去github给个赞就更好啦~嘻嘻~)

    哦对了,说到电影,我要顺便给你们一点福(an)利,以下是我的电影日常= =。
    男神福利:如何低价购买电影票?(知乎网友攻略
    宅男福利高清控联盟(专注高清蓝光)

    凌晨了,要睡觉了,又写到这么晚= = 以后不能再这样了!!
    在接下来的大学里最后一个暑假,我要好好看完刚从图书馆里借来的两本书,加油!fighting!!

               

    再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

    展开全文
  • VS2019 C#开发手机App环境配置和开发

    千次阅读 多人点赞 2021-01-14 17:44:00
    上位机开发人员,想开发APP,从头学Java,需要花的时间成本太大,最近网上找找资料发现用c#就可以在熟悉的VS2019下编写APP程序了 看到别人的一句话: 在这个盛行全干的时代,我想每个人都应该懂移动端开发。...
  • 1.java和Android:AIDE集成开发环境。 2.C语言:c语言编译器、C4droid。 3.python:QPython3、Termux。 4.CSS/HTML/JavaScript:HTMLplay。 大部分都不需要root,可以直接编写程序并运行,下面我简单介绍一下这3...
  • 实现电影资讯微信订阅号Java开发。 1. 利用Fidder抓包工具,通过手机代理抓取ONE电影请求; 2. 使用jackson解析json数据,分析并提取有用信息; 3. 使用微信后台框架,匹配关键字,回复图文列表。
  • 基于安卓的智能家居手机APP开发代码,不喜勿喷,用的eclipse开发
  • 手机APP自动化 Appium教程

    万次阅读 多人点赞 2021-01-19 21:00:20
    手机APP 自动化有什么用? 自动化完成一些重复性的任务 比如微信客服机器人 爬虫 自动化测试 Appium 自动化方案的特点: 开源免费 支持多个平台 支持多种类型的自动化 支持多种编程语言 自动化原理 我们先来看...
  • 分享java项目开发类视频教程

    千次阅读 2014-07-15 13:17:14
    分享java项目开发类视频教程 BF-TECH J2EE VIP服务第一期开班典礼现场直播http://edu.ibeifeng.com/view-index-id-1.html JSF应用开发全攻略系列http://edu.ibeifeng.com/view-index-id-262.html 系列:深入浅出...
  • Android APP开发入门教程

    千次阅读 2021-03-08 14:44:38
    工作中有做过手机App项目,前端和android或ios程序员配合完成整个项目的开发开发过程中与ios程序配合基本没什么问题,而android各种机子和rom的问题很多,这也让我产生了学习android和ios程序开发的兴趣。...
  • 本课程为基于MUI的混合模式app开发系列课程的HTML5+视频...课程系统介绍了手机原生底层各种SDK的调用方法,通过实战讲解,结合实际项目开发经验,让大家掌握手机app开发的基础,为以后更深入的学习打下良好的基础。...
  • 使用UNIAPP开发APP教程-01框架搭建

    千次阅读 2020-10-19 18:12:38
    背景 作为之前对前一篇放弃mui框架转战uniapp的填坑,借着最近几个月公司不忙,因此用uniapp写了一个...本人是后端JAVA出生的全栈(手动滑稽),因此在选型的时候放弃了uniCloud开发。原因是目前虽然uniCloud可做云服务端和
  • 温湿度监控,手机APP,另有LED灯的控制界面,有详细注解
  • java手机软件开发资料全集...5、java_手机游戏开发入门教程 6、Java多线程编程 7、java手机编程教程 8、java手机程序设计入门 9、JAVA手机精品 10、Java手机游戏开发源代码 11、基于Java技术手机移动学习开发研究
  • android手机APP开发入门心得

    千次阅读 2017-05-06 12:06:04
    android手机APP开发心得 http://blog.csdn.net/fubin0000  首先安装好开发环境(这个过程网络上资料太多了,我相信你搜一搜搭建好环境应该是小菜一碟),然后就是在eclipse里面建立 Andriod Application ...
  • 通过实际的商城app开发前端页面的案例向大家介绍了如何使用mui进行app开发
  • 环境搭建 前言 用HBuilder做开发,其实...用HBuilder做开发,只需要基础的java环境,其余的android和ios环境统统不需要。 HBuilder可以做到这一点,是因为: 1.将打包放到的云端,免去了本地搭建环境进行打包的痛
  • Android基础入门教程——1.2.1 使用Eclipse + ADT + SDK开发Android APP标签(空格分隔): Android基础入门教程1.前言 这里我们有两条路可以选,直接使用封装好的用于开发Android的ADT Bundle,或者自己进行配置 ...
  • 我们先看一个之前的例子,这个APP主要的功能是实现10进制转化为16进制,并将16进制数转化为字符。​ 它的逻辑设计如下图所示,但是他们并不能实现它所描述的功能。 我们首先分析一下它失败的原因,然后再做一些...
  • 智能家电工具介绍与客户端开发: 此文章教程内容: 用安卓手机APP客户端控制智能家电实现的小案例 本文章所需工具在文章末尾,请君自取,所用工具Android studio。 家居模拟器程序介绍 本程序实现了客厅、卧室、...
  • 手机app开发需要哪些技术?

    千次阅读 2021-01-08 17:31:41
    Web App:iOS/Android的内置浏览器是基于webkit内核的,所以在开发webApp时,多数使用html或html5、CSS3、JavaScript技术做UI布局,使其在网站页面上实现传统的C/S架构软件功能,服务端技术用java、php、ASP。...
  • 教程将详细地讲诉如何用Android手机调试开发基于Android平台的APP应用程序,如果你刚接触Android开发,请耐心阅读下文,帮助你在开发之路上减少许多障碍! 工具/原料 一部Android系统智能手机 ...
  • java版支付宝app支付流程及原理分析

    千次阅读 2018-08-06 14:51:52
    java版支付宝app支付流程及原理分析 ... 当手机app(就是你公司开发app)在支付页面时,调起服务端(后台第1个创建订单接口)接口,后台把需要调起支付宝支付的参数返回给手机端,手机端拿到 这些参数后,拉起支付...
  • 上篇文章给大家分享了Java实现微信公众号调用微信拍照接口和打开本地相册上传图片的实战案例详解,近期收到很多开发者朋友通过笔者微信的咨询和反馈,表示很专业,很全面,很详细,十足的干货,足金足两,很受益。...
  • APP 快速开发教程(安卓)

    万次阅读 2018-03-31 22:18:29
    前言本篇博客从开发的角度来介绍如何开发一个Android App,需要说明一点是,这里只是提供一个如何开发一个app的思路,并不会介绍很多技术上的细节,从整个大局去把握如何去构思一个app开发,让你对独立开发一款app...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,096
精华内容 6,438
关键字:

java开发手机app教程

java 订阅