摘要:
1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,ToLua逻辑热更新 中介绍了 ToLua 的应用,本文将进一步介绍 Unity3D 中基于 xLua 实现逻辑热更新。 逻辑热更新是指:在保持程序正常运行的情况下,在后台修改代码逻辑,修改完成并推送到运行主机上,主机无缝接入更新后 阅读全文
posted @ 2023-03-19 17:22
little_fat_sheep
阅读(120)
评论(0)
推荐(0)
摘要:
1 前言 Lua基础语法 中系统介绍了 Lua 的语法体系,xLua逻辑热更新 中介绍了 xLua 的应用,本文将进一步介绍 Unity3D 中基于 ToLua 实现逻辑热更新。 逻辑热更新是指:在保持程序正常运行的情况下,在后台修改代码逻辑,修改完成并推送到运行主机上,主机无缝接入更新后的 阅读全文
posted @ 2023-03-19 17:21
little_fat_sheep
阅读(164)
评论(0)
推荐(0)
摘要:
1 Lua 简介 Lua 是一个小巧的脚本语言,用标准C语言编写而成,由巴西里约热内卢天主教大学的 Roberto Ierusalimschy、Waldemar Celes 和 Luiz Henrique de Figueiredo 三人于 1993 年开发,设计目的是为了灵活嵌入应用程序,实现 阅读全文
posted @ 2023-03-19 17:21
little_fat_sheep
阅读(96)
评论(0)
推荐(0)
摘要:
1 解析字典 1)解析为 JObject private void ParseJson() { // 解析为JObject string jsonStr = "{'name': 'zhangsan', 'sex': 'male', 'age': 23}"; JObject jo = JsonCo 阅读全文
posted @ 2023-03-19 17:19
little_fat_sheep
阅读(504)
评论(0)
推荐(0)
摘要:
1 前言 surfaceflinger 的作用是合成来自 WMS 的 Surface 数据,并发送到显示设备。 SurfaceFlinger 服务不同于 AMS、WMS、IMP、PMS、DMS 等服务,主要区别如下: AMS 等由 SystemServer.java 拉起,SurfaceFl 阅读全文
posted @ 2023-03-19 17:17
little_fat_sheep
阅读(339)
评论(0)
推荐(0)
摘要:
1 前言 IMS启动流程 中介绍了 IMS 在 Java 层和 Native 层的初始化流程,以及创建 NativeInputManager、InputManager、InputReader、InputDispatcher、EventHub 等对象过程;View添加过程 中介绍了从 WindowMa 阅读全文
posted @ 2023-03-19 17:17
little_fat_sheep
阅读(130)
评论(0)
推荐(0)
摘要:
1 前言 View添加过程 中介绍了从 WindowManagerImpl 的 addView() 方法到 WindowState、SurfaceSession 的创建流程,本文将介绍 Surface 的创建流程。应用进程中,ViewRootImpl 持有 Surface 对象,system_ser 阅读全文
posted @ 2023-03-19 17:16
little_fat_sheep
阅读(114)
评论(0)
推荐(0)
摘要:
1 前言 Activity启动流程 中介绍了从点击桌面上应用快捷方式到 Activity 的 onCreate() 方法调用流程,本将介绍应用进程的启动流程。由于应用进程启动流程复杂,本文按进程将其拆分为3个部分展开介绍: system_server 进程:介绍从 AMS.LocalService( 阅读全文
posted @ 2023-03-19 17:16
little_fat_sheep
阅读(123)
评论(0)
推荐(0)
摘要:
1 前言 IMS 是 InputManagerService 的简称,主要负责输入事件管理。 1.1 基本概念 输入设备:屏幕、电源/音量、键鼠、充电口、蓝牙、wifi 等 设备节点:当输入设备可用时,Linux 内核会在 /dev/input 中创建对应的设备节点 输入事件:触摸事件、按键事件 阅读全文
posted @ 2023-03-19 17:16
little_fat_sheep
阅读(149)
评论(0)
推荐(0)
摘要:
1 前言 ATMS启动流程 介绍了 ActivityTaskManagerService(ATMS)的启动和初始化流程,本文将介绍 Activity 的启动流程。由于 Activity 启动流程复杂,本文按进程将其拆分为3个部分展开介绍: Launcher 进程:介绍从 Launcher(start 阅读全文
posted @ 2023-03-19 17:15
little_fat_sheep
阅读(102)
评论(0)
推荐(0)
摘要:
1 前言 AMS 即 ActivityManagerService,负责 Activy、Service、Broadcast、ContentProvider 四大组件的生命周期管理。本文主要介绍 AMS 的启动流程和初始化过程。AMS 在初始化的过程中,也伴随着了ATMS(ActivityTask 阅读全文
posted @ 2023-03-19 17:15
little_fat_sheep
阅读(130)
评论(0)
推荐(0)
摘要:
1 前言 ATMS 即 ActivityTaskManagerService,用于管理 Activity 及其容器(任务、堆栈、显示等)。ATMS 在 Android 10 中才出现,由原来的 AMS(ActivityManagerService)分离而来,承担了 AMS 的部分职责。因此,在 阅读全文
posted @ 2023-03-19 17:15
little_fat_sheep
阅读(150)
评论(0)
推荐(0)
摘要:
1 前言 WMS启动流程 中介绍了 WindowManagerService 的启动流程,本文将介绍 View 的添加流程,按照进程分为以下2步: 应用进程:介绍从 WindowManagerImpl(addView 方法)到 Session(addToDisplay 方法)的调用流程; syste 阅读全文
posted @ 2023-03-19 17:14
little_fat_sheep
阅读(48)
评论(0)
推荐(0)
摘要:
1 前言 WMS 是 WindowManagerService 的简称。 (1)WMS 主要职责 窗口管理:负责启动、添加、删除窗口,管理窗口大小、层级,核心成员有:WindowContainer、RootWindowContainer、DisplayContent、TaskStack、Task 阅读全文
posted @ 2023-03-19 17:13
little_fat_sheep
阅读(108)
评论(0)
推荐(0)
摘要:
1 前言 Task 即任务,一个 Task 对应一个 Activity,其父容器为 TaskStack,子容器为 AppWindowToken。 关于其父类及祖父类的介绍,见 → WindowContainer简介、ConfigurationContainer简介。 2 源码 源码地址→ 阅读全文
posted @ 2023-03-19 17:12
little_fat_sheep
阅读(95)
评论(0)
推荐(0)
摘要:
1 前言 DisplayContent 用于管理屏幕,一块屏幕对应一个 DisplayContent 对象,虽然手机只有一个显示屏,但是可以创建多个 DisplayContent 对象,如投屏时,可以创建一个虚拟的 DisplayContent。 关于其父类及祖父类的介绍,见 → Windo 阅读全文
posted @ 2023-03-19 17:12
little_fat_sheep
阅读(247)
评论(0)
推荐(0)
摘要:
1 前言 TaskStack 用于管理 app,一般一个应用程序对应一个 TaskStack,其父容器为 TaskStackContainers(DisplayContent 的子容器),子容器为 Task。 关于其父类及祖父类的介绍,见 → WindowContainer简介、Config 阅读全文
posted @ 2023-03-19 17:11
little_fat_sheep
阅读(83)
评论(0)
推荐(0)
摘要:
1 前言 RootWindowContainer 是窗口容器的根容器,子容器是 DisplayContent。关于其父类及祖父类的介绍,见→WindowContainer简介、ConfigurationContainer简介。 本文主要介绍 WallpaperController 和 Roo 阅读全文
posted @ 2023-03-19 17:11
little_fat_sheep
阅读(196)
评论(0)
推荐(0)
摘要:
1 前言 WindowContainer 继承自 ConfigurationContainer,是 WMS 家族的重要基类。ConfigurationContainer简介 中,已介绍 ConfigurationContainer。 本文主要介绍 WindowContainer、Surfac 阅读全文
posted @ 2023-03-19 17:10
little_fat_sheep
阅读(212)
评论(0)
推荐(0)
摘要:
1 前言 如图所示,ConfigurationContainer 是 AMS 家族的重要基类;WindowContainer 继承自 ConfigurationContainer,是 WMS 家族的重要基类。 本文主要介绍 ConfigurationContainer、Configurati 阅读全文
posted @ 2023-03-19 17:10
little_fat_sheep
阅读(166)
评论(0)
推荐(0)
摘要:
1 前言 使用ContentProvider实现跨进程通讯 中介绍了自定义 ContentProvider,为外界提供操作 SQLite 的接口。但是大多数情况下,服务端的 ContentProvider 不需要用户编写,用户只需要知道怎么调用就行,比如系统资源。因此,本文将以监控飞行模式状态和最新 阅读全文
posted @ 2023-03-19 17:06
little_fat_sheep
阅读(196)
评论(0)
推荐(0)
摘要:
1 前言 ContentProvider 即内容提供器,是 Android 四大组件之一,为 App 存取数据提供统一的对外接口,让不同的应用之间可以共享数据。 如图,Server 端通过 ContentProvider 对外提供操作本地数据(DataBase、File 等)的接口,Clie 阅读全文
posted @ 2023-03-19 17:06
little_fat_sheep
阅读(468)
评论(0)
推荐(0)
摘要:
1 前言 Handler 即处理器,常用于跨线程通讯:线程A 和线程 B 拥有同一个 handler 对象,在线程 A 中使用 handler 的 sendMessage() 方法发送消息,在线程 B 中使用 handler 的 handleMessage() 方法处理消息。 Handler 阅读全文
posted @ 2023-03-19 17:05
little_fat_sheep
阅读(259)
评论(0)
推荐(0)
摘要:
1 前言 MediaCodec 主要用于视频解码和编码操作,可以实现视频倍速播放、全关键帧转换、视频倒放等功能。 MediaCodec 的工作原理图如下: MediaCodec 的主要接口如下: //创建解码器(type为mime或name) public static MediaCod 阅读全文
posted @ 2023-03-19 17:05
little_fat_sheep
阅读(793)
评论(0)
推荐(0)
摘要:
1 前言 使用MediaExtractor、MediaMuxer去掉视频文件中的音频数据 中介绍了 MediaExtractor 类的主要方法,本文主要将使用其 advance() 和 seekTo(timeUs, mode) 方法遍历帧,以获取关键帧的时间戳。 advance() 方法能够从任 阅读全文
posted @ 2023-03-19 17:04
little_fat_sheep
阅读(347)
评论(0)
推荐(0)
摘要:
1 环境配置与初始化 (1)申请权限 在 AndroidManifest.xml 中的 manifest 标签(application 同级标签)下添加外部存储读写权限,如下: <uses-permission android:name="android.permission.WRITE_E 阅读全文
posted @ 2023-03-19 17:00
little_fat_sheep
阅读(596)
评论(0)
推荐(0)
摘要:
1 简介 本文以 mp4 文件为例,讲解去音频操作。mp4 是一种视频封装的容器,里面包含音频(audio)和视频(video)数据,对应的数据编码格式分别为 aac 和 h264。在去音频过程中,主要使用到 MediaFormat、MediaExtractor、MediaMuxer,其作用如下 阅读全文
posted @ 2023-03-19 17:00
little_fat_sheep
阅读(268)
评论(0)
推荐(0)
摘要:
1 前言 使用Socket实现跨设备通讯 中介绍了使用 WiFi 通道实现跨设备通讯,本文将介绍使用 Bluetooth 通道实现跨进程通讯。 本文全部代码见→使用BluetoothSocket实现跨设备通讯 1.1 蓝牙通讯核心类 在蓝牙通讯中,主要用到 BluetoothAdapter、 阅读全文
posted @ 2023-03-19 17:00
little_fat_sheep
阅读(453)
评论(0)
推荐(0)
摘要:
1 前言 ExoPlayer 是 google 开源的应用级媒体播放器,github源码 → https://github.com/google/ExoPlayer。相较于 MediaPlayer,ExoPlayer 具有以下优点: 支持更多的视频播放格式(包含 DASH 和 SmoothStr 阅读全文
posted @ 2023-03-19 16:59
little_fat_sheep
阅读(828)
评论(0)
推荐(0)
摘要:
1 前言 使用AIDL实现进程间通讯简单案例 和 使用AIDL实现进程间传递对象案例 中介绍了使用 AIDL 进行进程间通讯,文中提到在编写完 aidl 文件(如:IMessageManager.aidl)并 Make Buidl 后,会生成一个接口(如:IMessageManager.java), 阅读全文
posted @ 2023-03-19 16:59
little_fat_sheep
阅读(153)
评论(0)
推荐(0)
摘要:
1 Socket 简介 Socket(套接字)是应用层与 TCP/IP 协议通信的中间软件抽象层,它是一组接口,用户只需面向 Socket 编程,即可实现跨设备(网络)通讯。 Socket 是 java 里的东西,不是 Android 特有的,使用 Socket 需要导入的类如下。 java 阅读全文
posted @ 2023-03-19 16:59
little_fat_sheep
阅读(451)
评论(0)
推荐(0)
摘要:
1 前言 使用AIDL实现进程间通讯简单案例 和 使用AIDL实现进程间传递对象案例 中介绍了使用 AIDL 进行进程间通讯,其本质仍然是Binder,aidl 文件对应生成的接口中,将服务端调用的抽象类(Stub)和客户端调用的代理类(Proxy)糅合在一个 java 文件中,使得新手读起来云里雾 阅读全文
posted @ 2023-03-19 16:59
little_fat_sheep
阅读(103)
评论(0)
推荐(0)
摘要:
1 Messenger 简介 Messenger 类实现了 Parcelable 接口,用于进程间传输并处理消息,调用流程如下: Client 通过 bindService() 请求绑定 Service Service 通过 messenger_s.getBinder() 获取 IBunder 阅读全文
posted @ 2023-03-19 16:58
little_fat_sheep
阅读(239)
评论(0)
推荐(0)
摘要:
1 AIDL 简介 AIDL(Android Interface Definition Language)是一种接口定义语言,用于生成可在 Android 设备上两个进程之间进行进程间通信(IPC)的代码。通过定义编辑 adil 文件,build 后生成对应的 java 类。 如下,为定义的 阅读全文
posted @ 2023-03-19 16:58
little_fat_sheep
阅读(479)
评论(0)
推荐(0)
摘要:
1 前言 在 Android——使用AIDL实现进程间通讯简单案例 中介绍了使用 AIDL 在进程间传递字符串,对于8种基本数据类型( byte、short、int、long、float、double、boolean、char )和 CharSequence(包含 String )、List、M 阅读全文
posted @ 2023-03-19 16:58
little_fat_sheep
阅读(294)
评论(0)
推荐(0)
摘要:
1 Broastcast 简介 Broadcast(广播)是 Android 中一种广泛运用的在应用程序之间传输信息的机制。使用 Broadcast 能够很方便得实现进程间通讯,一端通过 sendBroadcast(intent) 广播消息,另一端通过 registerReceiver(myRe 阅读全文
posted @ 2023-03-19 16:57
little_fat_sheep
阅读(115)
评论(0)
推荐(0)
摘要:
1 问题描述 在旋转屏幕时,记录旋转屏幕次数的计数器(count)一直为 0,不能实现累加效果。主要因为在旋转屏幕时,会销毁原来的变量,重新构建界面。 2 解决思路 在 Activity 销毁(onDestroy)之前,将 count 保存到 Bundle中,再在 Activity 构建(o 阅读全文
posted @ 2023-03-19 16:56
little_fat_sheep
阅读(119)
评论(0)
推荐(0)
摘要:
1问题描述 如图1.1,有5个哲学家围着一个大圆桌就餐。哲学家和筷子都按逆时针顺序编号,每个哲学家的编号与他左边的筷子的编号一致。 规定如下: (1)哲学家之间不相互交流; (2)哲学家只做两件事:吃饭或思考; (3)每个哲学家只能拿其邻近的左右两支筷子; (4)哲学家不能抢占别人已经拿起的筷子; 阅读全文
posted @ 2023-03-19 16:56
little_fat_sheep
阅读(47)
评论(0)
推荐(0)
摘要:
1 工作空间 2 代码 MainActivity.java package com.zhyan8.demo; import android.graphics.Bitmap; import android.os.Bundle; import android.os.Handler; import a 阅读全文
posted @ 2023-03-19 16:56
little_fat_sheep
阅读(46)
评论(0)
推荐(0)
摘要:
1 基础编辑 Ctrl+A:全选(选中当前文档所有内容) Ctrl+C:复制选中内容到剪贴板 Ctrl+X:剪切选中内容到剪贴板 Ctrl+V:将剪贴板中的内容粘贴到光标处 Ctrl+Z:撤销 Ctrl+Shift+Z:逆撤销 Ctrl+S:保存当前文件 Ctrl+F6:重命名文件名 2 高级编辑 阅读全文
posted @ 2023-03-19 16:55
little_fat_sheep
阅读(549)
评论(0)
推荐(0)
摘要:
1 前言 计算机中浮点数的编码,由美国加州大学的 William Kahan 教授于 1985 年设计,后被 IEEE 借鉴,制定出 IEEE 浮点标准。 浮点数在计算机中的二进制编码由符号位(S)、阶码(或指数 E)、尾数(或基数 M)组成。单精度浮点数组成:1S + 8E + 23M,双 阅读全文
posted @ 2023-03-19 16:45
little_fat_sheep
阅读(410)
评论(0)
推荐(0)
摘要:
1 前言 Stream 是 Java 8 中为方便操作集合及其元素而定制的接口,它将要处理的元素集合看作一种流,对流中的元素进行过滤、排序、映射、聚合等操作。使用 Stream API,就好像使用 SQL 中的 select 语句操作数据库,非常快捷高效,一行代码可以实现很多功能。 (1)Strea 阅读全文
posted @ 2023-03-19 16:44
little_fat_sheep
阅读(70)
评论(0)
推荐(0)
摘要:
1 前言 Optional 是 Java 8 的新特性,专治**空指针异常(NullPointerException, 简称 NPE)**问题,它是一个容器类,里面只存储一个元素(这点不同于 Conllection)。 为方便用户通过 Lambda 表达式调用 Optional 的方法,部分方法(如 阅读全文
posted @ 2023-03-19 12:23
little_fat_sheep
阅读(396)
评论(0)
推荐(0)
摘要:
1 Lambda 表达式简介 Lambda 表达式是 JDK 8 的新特性,主要用于简化匿名内部类的定义,帮助用户方便、高效地书写优雅的代码。 Lambda 表达式实现的必须是一个接口,并且接口中只有一个抽象方法,可以有 Object 类的方法(equals 等)和 default 修饰的方 阅读全文
posted @ 2023-03-19 12:22
little_fat_sheep
阅读(36)
评论(0)
推荐(0)
摘要:
1 前言 PriorityQueue是一种特殊的队列,满足队列的“队尾进、队头出”条件,但是每次插入或删除元素后,都对队列进行调整,使得队列始终构成最小堆(或最大堆)。具体调整如下: 插入元素后,从堆底到堆顶调整堆; 删除元素后,将队尾元素复制到队头,并从堆顶到堆底调整堆。 PriorityQueu 阅读全文
posted @ 2023-03-19 12:21
little_fat_sheep
阅读(775)
评论(0)
推荐(0)
摘要:
1 前言 Java 提供了 BigInteger(大整数)类和 BigDecimal(大浮点数)类用于大数运算,这两个类都继承自 Number 类(抽象类)。由于 BigInteger 在大数运算中更常见,本博客只介绍 BigInteger,另外也介绍下 Java 内置的进制转换函数,非常好用!!! 阅读全文
posted @ 2023-03-19 12:21
little_fat_sheep
阅读(290)
评论(0)
推荐(0)
摘要:
1 JVM运行机制概述 JVM运行机制 类加载机制: 类加载过程由类加载器来完成,即由ClassLoader及其子类实现,有隐式加载和显式加载两种方式。隐式加载是指在使用new等方式创建对象时会隐式调用类加载器把对应的类加载到JVM中;显式加载是指通过直接调用Class.forName()把对应的类 阅读全文
posted @ 2023-03-19 12:18
little_fat_sheep
阅读(51)
评论(0)
推荐(0)
摘要:
1 前言 正则表达式主要用于复杂文本处理,如模式匹配、格式检验、文本替换等。常用的通配符有: ^, $, *, ., , -, +, ?, &, |, (), [], {} 2 String中的split()、matches()、replace()、replaceFirst()、replaceAll 阅读全文
posted @ 2023-03-19 12:18
little_fat_sheep
阅读(467)
评论(0)
推荐(0)
摘要:
1 使用线程池的好处 降低资源消耗:通过重复利用已创建的线程降低线程创建和销毁造成的消耗; 提高响应速度:当任务到达时,任务可以不需要等到线程创建就能立即执行; 提高线程的可管理性:线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配,调优和监控。 阅读全文
posted @ 2023-03-19 12:17
little_fat_sheep
阅读(77)
评论(0)
推荐(0)
摘要:
1 前言 非静态方法的同步锁是当前对象(this)(对象锁) 静态方法的同步锁是当前类的字节码(类锁) 不同的锁之间能并发 2 同一对象内 本节主类与资源类如下: class Resorce{ //资源 static int x=0; static int y=0; } public class M 阅读全文
posted @ 2023-03-19 12:17
little_fat_sheep
阅读(84)
评论(0)
推荐(0)
摘要:
1 概述 Java Collections 框架中包含了大量的接口及其实现类和操作它们的算法,主要包括列表(List)、集合(Set)、映射(Map),如下: | 接口 | 实现类 | 数据结构 | 初始容量 | 加载因子 | 扩容 | 线程安全 | 允许 key = null | | | | | 阅读全文
posted @ 2023-03-19 12:16
little_fat_sheep
阅读(295)
评论(0)
推荐(0)
摘要:
1 前言 1.1 内存分区 Java中有6种存储区域(参考Java的六大存储区域),如下: 寄存器(register):位于处理器内部,处理速度最快,空间比较珍贵; 栈(stack):位于通用RAM中,处理速度仅次于寄存器,空间较小。常用于存放对象引用、基本类型数据、方法调用; 堆(heap):位于 阅读全文
posted @ 2023-03-19 12:15
little_fat_sheep
阅读(49)
评论(0)
推荐(0)
摘要:
1 简介 胶囊网络(CapsNet)由 Hinton 于2017年10月在《Dynamic Routing Between Capsules》中提出,目的在于解决 CNN 只能提取特征,而不能提取特征的状态、方向、位置等信息,导致模型的泛化(举一反三)能力较差,如: (1)将图片旋转180°,CNN 阅读全文
posted @ 2023-03-19 12:07
little_fat_sheep
阅读(358)
评论(0)
推荐(0)
摘要:
1 前言 时域卷积网络(Temporal Convolutional Network,TCN)属于卷积神经网络(CNN)家族,于2017年被提出,目前已在多项时间序列数据任务中击败循环神经网络(RNN)家族。 TCN 网络结构 图中,xi 表示第 i 个时刻的特征,可以是多维的。 TCN源码见--> 阅读全文
posted @ 2023-03-19 12:06
little_fat_sheep
阅读(528)
评论(0)
推荐(0)
摘要:
1 前言 本文以MNIST手写数字分类为例,讲解使用一维卷积和二维卷积实现 CNN 模型。关于 MNIST 数据集的说明,见使用TensorFlow实现MNIST数据集分类。实验中主要用到 Conv1D 层、Conv2D 层、MaxPooling1D 层和 MaxPooling2D 层,其参数说明如 阅读全文
posted @ 2023-03-19 12:05
little_fat_sheep
阅读(259)
评论(0)
推荐(0)
摘要:
1 seq2seq模型简介 seq2seq 模型是一种基于【 Encoder-Decoder】(编码器-解码器)框架的神经网络模型,广泛应用于自然语言翻译、人机对话等领域。目前,【seq2seq+attention】(注意力机制)已被学者拓展到各个领域。seq2seq于2014年被提出,注意力机制于 阅读全文
posted @ 2023-03-19 12:01
little_fat_sheep
阅读(348)
评论(0)
推荐(0)
摘要:
1 前言 基于keras的双层LSTM网络和双向LSTM网络中,都会用到 LSTM层,主要参数如下: LSTM(units,input_shape,return_sequences=False) units:隐藏层神经元个数 input_shape=(time_step, input_feature 阅读全文
posted @ 2023-03-19 12:01
little_fat_sheep
阅读(595)
评论(0)
推荐(0)
摘要:
1 前言 理论上,网络层数越深,拟合效果越好。但是,层数加深也会导致梯度消失或梯度爆炸现象产生。当网络层数已经过深时,深层网络表现为“恒等映射”。实践表明,神经网络对残差的学习比对恒等关系的学习表现更好,因此,残差网络在深层模型中广泛应用。 本文以MNIST手写数字分类为例,为方便读者认识残差网络, 阅读全文
posted @ 2023-03-19 12:01
little_fat_sheep
阅读(378)
评论(0)
推荐(0)
摘要:
1 前言 keras是Google公司于2016年发布的以tensorflow为后端的用于深度学习网络训练的高阶API,因接口设计非常人性化,深受程序员的喜爱。 keras建模有3种实现方式——序列模型、函数模型、子类模型。本文以MNIST手写数字为例,用3种建模方式实现。 关于MNIST数据集的说 阅读全文
posted @ 2023-03-19 12:00
little_fat_sheep
阅读(79)
评论(0)
推荐(0)
摘要:
1 理论 计算定积分时,可以通过微元法逼近,如下: 若取值均匀,公式如下: 通过上述公式可以看到,定积分的值可以通过取样点函数值的线性组合得到。当取样点已经确定时,定积分的精度取决于每个取样点所分配的权值。梯形公式、Simpson公式、Cotes公式、Romberg公式正是通过调整权值来逐步逼近积分 阅读全文
posted @ 2023-03-19 12:00
little_fat_sheep
阅读(349)
评论(0)
推荐(0)
摘要:
1 MNIST数据集 MNIST数据集由70000张28x28像素的黑白图片组成,每一张图片都写有0~9中的一个数字,每个像素点的灰度值在0 ~ 255(0是黑色,255是白色)之间。 MINST数据集是由Yann LeCun教授提供的手写数字数据库文件,其官方下载地址THE MNIST DATAB 阅读全文
posted @ 2023-03-19 11:59
little_fat_sheep
阅读(173)
评论(0)
推荐(0)
摘要:
1 三次样条插值 早期工程师制图时,把富有弹性的细长木条(所谓样条)用压铁固定在样点上,在其他地方让它自由弯曲,然后沿木条画下曲线,成为样条曲线。 设函数S(x)∈C2[a,b] ,且在每个小区间[xj, xj+1]上是三次多项式,其中a=x0<x1<...<xn=b 是给定节点,则称S(x)是节点 阅读全文
posted @ 2023-03-19 11:58
little_fat_sheep
阅读(524)
评论(0)
推荐(0)
摘要:
1前言 1.1傅里叶变换 函数f(t)为一元连续函数,其傅里叶变换定义为: F(w)的傅里叶逆变换定义为: 其中,i为虚数单位。由欧拉公式: 任意绝对可积的连续函数f(t),都可以用三角函数表示,由于三角函数是周期函数,由此可展开为傅里叶级数。本文不加证明地给出傅里叶级数展开式: 设F是所有由一元连 阅读全文
posted @ 2023-03-19 11:58
little_fat_sheep
阅读(496)
评论(0)
推荐(0)
摘要:
1 前言 在使用RBF神经网络实现函数逼近中,笔者介绍了使用 Matlab 训练RBF神经网络。本博客将介绍使用 tensorflow 训练RBF神经网络。代码资源见:RBF案例(更新版) 这几天,笔者在寻找 tensorflow 中 RBF 官方案例,没找到,又看了一些博客,发现这些博客或不能逼近 阅读全文
posted @ 2023-03-19 11:57
little_fat_sheep
阅读(132)
评论(0)
推荐(0)
摘要:
1 前言 循环神经网络(Recurrent Neural Network, RNN)又称递归神经网络,出现于20世纪80年代,其雏形见于美国物理学家J.J.Hopfield于1982年提出的可作联想存储器的互联网络——Hopfield神经网络模型。RNN是一类专门用于处理和预测序列数据的神经网络,其 阅读全文
posted @ 2023-03-19 11:57
little_fat_sheep
阅读(324)
评论(0)
推荐(0)
摘要:
1 统计学语言模型 自然语言处理(Natural Language Processing,NLP)中最基本的问题是:**如何计算一个单词(或一段单词序列)在某种语言下出现的概率?**即,下文连乘概率式每一项的求取问题。 对于一段拥有T个单词的序列S=(w1,w2,...,wT),计算它出现的概率如下 阅读全文
posted @ 2023-03-19 11:57
little_fat_sheep
阅读(150)
评论(0)
推荐(0)
摘要:
1 待拟合函数 noise服从均值为0,方差为15的正太分布,即noise ~ N(0,15)。 2 基于模型的训练 根据散点图分布特点,猜测原始数据是一个二次函数模型,如下: 其中,a,b,c为待训练参数 import tensorflow as tf import numpy as np imp 阅读全文
posted @ 2023-03-19 11:57
little_fat_sheep
阅读(52)
评论(0)
推荐(0)
摘要:
1 MNIST数据集和CNN网络配置 关于MNIST数据集的说明及配置见使用TensorFlow实现MNIST数据集分类 CNN网络参数配置如下: 原始数据:输入为[28,28],输出为[1,10] 卷积核1:[5,5],32个特征 -->282832 池化核1:[2,2],最大池化 -->1414 阅读全文
posted @ 2023-03-19 11:56
little_fat_sheep
阅读(267)
评论(0)
推荐(0)
摘要:
1 一元函数逼近 1.1 待逼近函数 1.2 代码 clear,clc p=[-4:0.1:4]; %神经网络输入值 t=sin(0.5*pi*p)+sin(pi*p); %神经网络目标值 n=15; %隐藏层神经元个数 net=newff(minmax(p),[1,n,1],{'tansig',' 阅读全文
posted @ 2023-03-19 11:55
little_fat_sheep
阅读(284)
评论(0)
推荐(0)
摘要:
python实现的RBF神经网络见:基于tensorflow的RBF神经网络案例 1 一元函数逼近 1.1 待逼近的函数 1.2代码 %%%%%%%%%%一元函数逼近%%%%%%%%%% clear,clc; x=linspace(-20,20,100); %神经网络输入值 t=10*x-30*si 阅读全文
posted @ 2023-03-19 11:52
little_fat_sheep
阅读(303)
评论(0)
推荐(0)
摘要:
1 前言 本文基于 Android 自动化测试项目、adb常用命令总结,整理了一些常用办公脚本,后续会根据工作需求持续更新。 脚本资源见→常用办公脚本工具 脚本目录如下: base:基础工具包 apply:具体应用场景 注意:对于 apply 目录下所有文件的文件名,必须能在 pho 阅读全文
posted @ 2023-03-19 11:34
little_fat_sheep
阅读(112)
评论(0)
推荐(0)
摘要:
1 前言 PC 端自动化测试使用到的 python 模块主要有 pywinauto、win32gui、pyautogui,主要功能如下: pywinauto:主要使用到 Application 类,用于应用程序管理(打开与关闭应用等)、窗口管理(最小化、最大化、关闭窗口) pywin32:包含 wi 阅读全文
posted @ 2023-03-19 11:33
little_fat_sheep
阅读(642)
评论(0)
推荐(0)
摘要:
1 前言 ADB(Android Debug Bridge)即 Android 调试桥,采用监听 Socket TCP 端口的方式通讯。连接手机有2种方式:有线连接、无线连接。 (1)有线连接 使用数据线连接手机后,在【开发人员选项】中开启【USB 调试】,并在【选择 USB 配置】中选 阅读全文
posted @ 2023-03-19 11:33
little_fat_sheep
阅读(715)
评论(0)
推荐(0)
摘要:
1 uiautomator2 简介 uiautomator2 是 一种 Android 自动化测试框架,提供了点击、长按、输入文本、滑动、拖拽、截屏等方法,能够模拟用户的各种动作。用户可以通过控件的 id 或 text 等属性,定位到控件,从而对控件实施上述操作。 2 环境搭建 1)pyth 阅读全文
posted @ 2023-03-19 11:33
little_fat_sheep
阅读(2116)
评论(0)
推荐(0)
摘要:
1 前言 在 Android自动化测试框架uiautomator2详解 中,介绍了 uiautomator2 框架的环境配置、元素定位工具以及常用接口。 本文对 uiautomator2 框架进一步封装,用户只需要重写模板类(Template)的 first() 和 circle_body( 阅读全文
posted @ 2023-03-19 11:32
little_fat_sheep
阅读(195)
评论(0)
推荐(0)
摘要:
1 前言 三阶数字华容道问题又称八数码问题,目前解决数字华容道问题的方法主要有DFS、贪婪算法、A算法等。DFS时间复杂度较高,贪婪算法和A算法都能得到一个有效解,但都不是最优解。笔者通过大量实验,使用BFS进行数据预处理后,能够得到最优解。 (1)定义: 状态(S):每个棋盘的布局称为一个状态,其 阅读全文
posted @ 2023-03-19 11:26
little_fat_sheep
阅读(500)
评论(0)
推荐(0)
摘要:
1 二维图像 1.1 二维曲线 plot(x, y, ls="-", lw=1.5, label=None) x, y:横坐标和纵坐标 ls:颜色、点标记、线型列表,如 ls='r*-' 表示红色实线、*形点,ls='g.' 表示绿色散点 lw:线宽度 label:线标签 plot(x, y, co 阅读全文
posted @ 2023-03-19 11:25
little_fat_sheep
阅读(202)
评论(0)
推荐(0)
摘要:
1 txt文件 1.1 写操作 import numpy as np def write(fileName,data): file=open(fileName,'w') row,col=data.shape string="" for i in range(row): for j in range( 阅读全文
posted @ 2023-03-19 11:25
little_fat_sheep
阅读(92)
评论(0)
推荐(0)
摘要:
1 前言 tensorflow中定义了3个交叉熵损失函数: softmax_cross_entropy_with_logits(logits, labels) softmax_cross_entropy_with_logits_v2(logits, labels) sparse_softmax_cr 阅读全文
posted @ 2023-03-19 11:24
little_fat_sheep
阅读(420)
评论(0)
推荐(0)
摘要:
1 前言 声明:本博客里的数组乘法运算是指矩阵乘法运算,不是对应元素相乘。 在线性代数或高等代数中,我们学习了矩阵乘法,那么,什么样的高维数组才能相乘?tensorflow 又是如何定义高维数组运算规则? 2 运算条件 两数组的维数相同:len(a.shape)=len(b.shape) 前n-2个 阅读全文
posted @ 2023-03-19 11:23
little_fat_sheep
阅读(121)
评论(0)
推荐(0)
摘要:
1 前言 声明:本博客讨论的数组间运算是指四则运算,如:a+b、a-b、a*b、a/b,不包括 a.dot(b) 等运算,由于 numpy 和 tensorflow 中都遵循相同的规则,本博客以 numpy 为例。 众所周知,相同 shape 的两个数组间运算是指两个数组的对应元素相加。我们经常会碰 阅读全文
posted @ 2023-03-19 11:22
little_fat_sheep
阅读(192)
评论(0)
推荐(0)
摘要:
1 使用list初始化 a=np.array([[1,2,3],[4,5,6]],dtype='float32') #a=[[1. 2. 3.],[4. 5. 6.]] 2 赋值与复制 (1)赋值 a=np.array([1,2,3]) b=a print(b is a) #True b[0]=0 阅读全文
posted @ 2023-03-19 11:21
little_fat_sheep
阅读(356)
评论(0)
推荐(0)
摘要:
1 前言 np.newaxis的意思是给数组新增一个维度。“python中矩阵切片维数微秒变化”中介绍了矩阵切片有时候会降低矩阵维度,为保证维度不变,可以用np.newaxis新增一个维度。 2 numpy数组 2.1 一维数组 import numpy as np a=np.array([1,2, 阅读全文
posted @ 2023-03-19 11:20
little_fat_sheep
阅读(563)
评论(0)
推荐(0)
摘要:
1 numpy数组 1.1 append() import numpy as np a=np.array([[1,3],[5,7]]) b=np.array([[2,4],[6,8]]) c=np.append(a,b) d=np.append(a,b,axis=0) e=np.append(a,b 阅读全文
posted @ 2023-03-19 11:19
little_fat_sheep
阅读(223)
评论(0)
推荐(0)
摘要:
1 前言 使用切片访问矩阵的部分数据(特别是一行或一列数据)时,通常会出现切片维数怎么在瞎变化,以致于不得不用reshape()强制改变维数。在深度学习中,网络对矩阵维数的要求是非常严格的,往往就是这些看似不起眼的错误,导致整个程序崩溃。 2 numpy中切片 import numpy as np 阅读全文
posted @ 2023-03-19 11:18
little_fat_sheep
阅读(108)
评论(0)
推荐(0)
摘要:
1 乘法 在数组中,a * a计算对应元素相乘(矩阵点乘);在矩阵中,A*A计算矩阵乘法 np.multiply()计算对应元素相乘(矩阵点乘) np.dot()计算矩阵乘法 import numpy as np a=np.array([[1.,2.],[3.,4.]]) b=a*a #矩阵点乘 c 阅读全文
posted @ 2023-03-19 11:18
little_fat_sheep
阅读(324)
评论(0)
推荐(0)
摘要:
1 前言 贝塞尔曲线 (Bézier curve) 由法国数学家 Pierre Bézier 于 1962 年提出的一种矢量曲线,广泛应用于工程绘图、动画设计等领域。贝塞尔曲线是一种运动轨迹曲线,由 n 个点在 n 条线段上匀速运动(不同线段上的速度可能不同),同时开始,同时结束,生成的轨迹曲线。如 阅读全文
posted @ 2023-03-19 11:12
little_fat_sheep
阅读(239)
评论(0)
推荐(0)
摘要:
1 前言 SQL中分组查询分为 GROUP BY 分组和 COMPUTE BY 分组两种。 笔者以案例的形式分别讲解两种查询方式。在SQL Server数据库上建立staff表,以eid为主键,表数据如下: 2 GROUP BY 分组 select whid,count(*) as count,av 阅读全文
posted @ 2023-03-19 11:04
little_fat_sheep
阅读(486)
评论(0)
推荐(0)
摘要:
1 前言 关系模式规范化过程 函数依赖:若 Y=f(X) ,则称X函数决定Y,或Y函数依赖于X,记为:X->Y。在数据库中,通常将X置为关键字,将Y置为非主属性。 2 范式 2.1 1NF 1NF定义:关系的所有分量都必须是不可分的最小数据项。 如日期可以拆分为年、月、日三项。 2.2 2NF 2N 阅读全文
posted @ 2023-03-19 11:00
little_fat_sheep
阅读(473)
评论(0)
推荐(0)
摘要:
1 面向对象设计原则 单一职责原则(Single Responsibility Principle,SRP):不能将太多的职责放在一个类中; 开闭原则(Open-Close Principle,OCP):软件实体对扩展是开放的,对修改是关闭的; 里氏替换原则(Liskov Substitution 阅读全文
posted @ 2023-03-19 00:05
little_fat_sheep
阅读(38)
评论(0)
推荐(0)
摘要:
1问题描述 有n个水平并排相邻的洞穴,从左到右依次编号1,2,...,n。某个洞穴中有一只兔子,该兔子每天晚上都会跳到相邻的洞穴中,有个农夫每天晚上会去一个洞穴逮兔子,请问该农夫至少要花多少天(或查看多少次洞穴)才能一定逮住该兔子? 2最优方案 农夫查看洞穴的编号依次为:2,3,...,n-3,n- 阅读全文
posted @ 2023-03-19 00:03
little_fat_sheep
阅读(93)
评论(0)
推荐(0)
摘要:
1 前言 有时候,数据业务比较大,比如查询百万级的数据,如果使用JSP查询数据库,JSP的返回结果一般放在域名后面返回给客户端,而返回结果的长度是有限制的,数据过长可能会丢失部分数据;另一方面数据量大,占用带宽大,网络延时较长。 使用JS绕过后台Web服务器,直接访问本地数据库服务器,虽然会有些不安 阅读全文
posted @ 2023-03-19 00:01
little_fat_sheep
阅读(351)
评论(0)
推荐(0)
摘要:
1 保存到text中 demo1.html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>保存到text</title> </head> <body> <script> var str="this is a demo"; sa 阅读全文
posted @ 2023-03-19 00:00
little_fat_sheep
阅读(270)
评论(0)
推荐(0)
摘要:
1 前言 最近有个需求,需要使用JS快速读取外部大数据文件(60w条记录的表)。笔者尝试过使用JS读取Excel文件,但是跑了十几分钟仍未出结果,后来笔者尝试将原数据保存为TXT文件,再从TXT文件中读取数据,只需几秒钟即可读取完毕。在此分享一下,也留着以后备用。 2 案例 为方便快速理解,笔者挑选 阅读全文
posted @ 2023-03-18 23:59
little_fat_sheep
阅读(1629)
评论(0)
推荐(0)

浙公网安备 33010602011771号