移动开发

第十章 路由器RIP动态路由配置

实验目标 掌握RIP协议的配置方法 掌握查看通过动态路由协议RIP学习产生的路由 熟悉广域网线缆链接方式 实验背景 假设校园网通过一台三层交换机连到校园网出口的路由器上,路由器再和校园外的另一台路由器链接,现在要做适当的配置,实现校园网内部主机与校园网外部主机之间相互通信,为了简化工作,采用RIPV2协议来实现互通 技术原理 RIP routing information protoco

iOS12、iOS11、iOS10、iOS9常见适配

iOS12、iOS11、iOS10、iOS9常见适配 @(IOS各个版本适配) [TOC] 一、iOS12(Xcode10) 1.1、升级Xcode10后项目报错 不允许多个info.plist Xcode10是默认选中的最新的New Build System(Default),在这个编译系统的环境下,不允许多个info.plist 解决办法一:(推荐) 把build system切换到 Lega

Android graphics(三) surfaceflinger

一、前言 本文主要内容 1、surfaceflinger初始化流程; 2、surfaceflinger消息机制; 3、surfaceflinger绘制流程; 4、VSync分发流程 surfaceFlinger由init进程启动,独立进程运行,它接受来自多个来源的数据缓冲区,对它们进行合成,然后发送到显示设备。 简述显示过程 1>、一个页面,一般分为三个window,状态栏、app和

iOS 设计模式的应用 ⑥ 适配器模式

前言     在面向对象软件设计中,许多时候新功能需要新接口,但是已有的类和新的接口之间不兼容的情况非常普遍。人们为它找到了解决方案,这个方案被称为适配器模式(Adapter Pattern)。 什么是适配器     适配器模式作为两个不兼容的接口之间的桥梁,它将一个类的接口转换成客户端希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类可以一起工作。    适配器模式有时也称作为包装

端到端同屏的方案

场景:桌面端应用(electron开发)同屏到pad端(uni-app开发)。 方案一:socket指令发送操作步骤。 思路:前提是桌面端与pad端显示的前端页面一样,即桌面端执行一个操作后,立即把该操作发送到pad端,pad接收到后执行该操作。 痛点:工作量大,要把服务端即桌面端的代码在pad上重新开发一遍。 方案二:electron推流,uni-app拉流。 思路:electron中用ffmp

Dialog窗口机制

Dialog创建 如下是Dialog类的构造函数,代码有缺省: Dialog(@UiContext @NonNull Context context, @StyleRes int themeResId, boolean createContextThemeWrapper) { //获取WindowManager mW

Android用户新手引导层

在用户第一次使用某些功能的时候,需要引导用户点击某些新功能,需要做一个新用户引导层,这里 我做了一个demo来实现该功能。 效果如下: 核心思路就是,获取需要引导的view,获取在屏幕中的位置,然后传给一个主题透明的activity,在这个activity中绘制一个透明的矩形框,用来展示下层view。 MainActivity跳转代码: class MainActivity : Ap

Android:exported 属性知识

1、android:exported 是 Android中的四大组件 Activity,Service,Provider,Receiver 四大组件中都会有的一个属性。 2、android:exported 代表是否能被其他应用隐式调用。 3、true允许被启动,false不允许被启动。 4、android:exported 默认值是由有无intent-filter决定的,如果有intent-fi

微信小程序引导用户添加小程序动画页

1、实现效果 guideFollow.gif 2.实现原理 2.1 动画效果 css动画:animation animation: name duration timing-function delay iteration-count direction fill-mode play-state; 设置上面三段内容不同的动画时长,最后一段文字动画时长最长。 .show_box .

List并发线程安全问题

一、发现并发问题 1.1 测试代码 public class Client { public static void main(String[] args) { List<Integer> list = new ArrayList<>(); new Thread(() -> { for (int i =