自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(377)
  • 收藏
  • 关注

原创 Android Framework分析(3)——Zygote进程源码分析

Zygote进程源码分析由app_process运行ZygoteInit classzygote由java编写而成,不能直接由init进程启动运行。若想执行zygote类,必须先创建虚拟机,然后在虚拟机上运行ZygoteInit类。执行这一任务的就是app_process程序。下面我们开始分析zygote进程的启动流程:/system/core/rootdir/init.rc可以看到init.rc中有如下导包import /init.$(ro.zygote).rc如果是64位系统,$(ro

2020-07-10 11:32:35 816 3

原创 深入理解Android Framework(1)-init

回收僵尸进程,在Linux内核中,如父进程不等待子进程的结束直接退出,会导致子进程在结束后变成僵尸进程,占用系统资源。在Android系统中,所有的进程共享系统设置值,为此提供一个名称为属性的保存空间。每个进程在处理其他进程发送的signal信号时都需要先注册,当进程的运行状态改变或终止时会产生某种signal信号,init进程是所有用户空间进程的父进程,当其子进程终止时产生SIGCHLD信号,init进程调用信号安装函数sigaction(),传递参数给sigaction结构体,便完成信号处理的过程。

2020-07-06 21:31:41 973

原创 深入学习Android framework(2)——Handler Native层

基于android28源码,MessageQueue类里面涉及到多个native方法,除了MessageQueue的native方法,native层本身也有一套完整的消息机制,用于处理native的消息,如下图Native层的消息机制。Java层可以向MessageQueue消息队列中添加消息,Native层也可以向MessageQueue消息队列中添加消息MessageQueue初始化过程的调用链如下:在MessageQueue中的native方法如下: private native st

2020-06-30 16:57:28 4348

原创 Android Apk瘦身方案2——gradle插件将png自动压缩为webp

实现思路在 mergeRes 和 processRes 任务之间插入 WebP 压缩任务,如下图所示:使用开源框架Cwebp,使用命令行对所有的图片进行遍历处理,然后将结果输出Google 官方提供的下载地址:https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html 下载的 cwebp 二进制可执行文件 64 位版本。由于 WebP 格式在 14 <= minSdkVersion &lt

2020-06-09 20:11:26 2161

原创 Android Apk瘦身方案1——R.java文件常量内联

R.java 文件结构R.java 是自动生成的,它包含了应用内所有资源的名称到数值的映射关系。先创建一个最简单的工程,看看 R.java 文件的内容:R文件生成的目录为app/build/generated/not_namespaced_r_class_sources/xxxxxDebug/processXXXXDebugResources/r/com/xxx/xxx/R.javaR.java 内部包含了很多内部类:如 layout、mipmap、drawable、string、id 等等这些

2020-06-05 22:57:39 3297 4

原创 Android Gradle源码分析

一.如何调试Android Gralde源码最简单的方式如下:1.配置 gradle.properties比较方便的做法是配置全局的 gradle.properties,这样对所有 Gradle 工具都适用,配置文件位于 ~/.gradle/gradle.properties,在 gradle.properties 文件中加上 org.gradle.jvmargs 属性:org.gradle.jvmargs=-XX:MaxPermSize=4g -XX:+HeapDumpOnOutOfMemoryE

2020-06-04 11:24:52 2449 4

原创 滴滴插件化VirtualAPK框架原理解析(二)之Service 管理

在前一篇博客滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理 中VirtualAPK是如何对Activity进行管理的,本篇博客,我们继续来学习这个框架,这次我们学习的是如何去管理Service。Service工作原理分析说道如何对Service进行插件化,肯定得先了解Service的工作过程,不然何谈插件化?所以我们先一起学习Service的工作原理。Service分为

2017-07-30 23:21:11 4631 1

原创 滴滴插件化框架VirtualAPK原理解析(一)之插件Activity管理

上周末,滴滴与360都开源了各自的插件化框架,Virtualapk与RePlugin,作为一个插件化方面的狂热研究者,在周末就迫不及待的下载了Virtualapk框架来进行研究,本篇博客带来的是Virtualapk原理解析的第一篇Activity管理,博客只是自己的理解,小弟才疏学浅,可能有很多理解不对的地方,欢迎各位大神指出。(看博客之前,请大家先下载Virtualapk的项目,https://g

2017-07-02 21:15:48 11220 7

原创 程序员副业探索——这18个韭菜级副业千万别碰!

某音某书上动不动就是副业收入轻松几万+,然后开课,收你学费,下面我就列举18个常见坑爹副业,千万别碰!

2024-02-14 22:24:09 398

原创 浅谈Google Play ASO 优化

ASO即APP Store Optimization,是用于提高APP在应用市场排名的工具,其实也就是移动产品的SEO工作。ASO是为了提高该产品的搜索结果成绩,提升APP的下载量,针对Google Play来说,ASO就是优化APP页面。

2023-12-09 22:12:13 169

原创 Handler post与sendMessage还有postDelay区别

post()方法不能指定消息的优先级和延迟时间,它只能立即将Runnable对象发送到消息队列中。本质是封装到了msg的callback里了。Handler的sendMessage()和post()方法都可以用于向Handler发送消息,但它们的使用方式和效果略有不同。以便在指定的时间后才处理消息。

2023-05-10 21:17:09 399

原创 音视频开发系列(8)——详解Android SurfaceTexture

void setOnFrameAvailableListener(SurfaceTexture.OnFrameAvailableListener listener):设置当有新的帧可用时的监听器。当有新的帧可用时,SurfaceTexture会回调该监听器的onFrameAvailable()方法。void attachToGLContext(int texName):将SurfaceTexture绑定到指定的纹理对象上。否则返回false。当有新的帧可用时,可以调用该方法将新的帧数据更新到纹理中。

2023-03-11 19:01:00 1428 1

原创 音视频开发系列(7)——Opengl常用Api介绍part1

指定当纹理被缩小时如何过滤纹理像素,可以是GL_NEAREST(最近邻过滤)、GL_LINEAR(线性过滤)、GL_NEAREST_MIPMAP_NEAREST(使用最近邻过滤的Mipmap纹理)、GL_NEAREST_MIPMAP_LINEAR(使用线性过滤的Mipmap纹理)、GL_LINEAR_MIPMAP_NEAREST(使用最近邻过滤的Mipmap纹理)或GL_LINEAR_MIPMAP_LINEAR(使用线性过滤的Mipmap纹理)。这样,我们就可以只对矩阵的一部分进行缩放,而不影响其他部分。

2023-03-10 15:57:40 731

原创 音视频开发系列(6)——全面了解Android MediaFormat

MediaFormat 是 Android 平台中用于描述音视频格式的类,它提供了许多 API 用于设置和获取音视频的格式信息。用于创建音频和视频格式的 MediaFormat 对象。需要指定媒体类型(例如 audio/mp4a-latm 或 video/avc)、媒体的采样率、通道数、码率、帧率等信息。

2023-03-08 11:37:39 2795

原创 音视频开发系列(5)——全面了解Android MediaExtractor

MediaExtractor的主要API如下:setDataSource(String path): 设置媒体文件的路径。setDataSource(FileDescriptor fd): 设置媒体文件的FileDescriptor。setDataSource(Context context, Uri uri, Map headers): 设置媒体文件的Uri和headers。getTrackCount(): 获取媒体文件中的音视频轨道数量。

2023-03-05 09:56:38 1571

原创 音视频开发系列(4)——全面了解Android Surfaceview

SurfaceHolder是SurfaceView的内部类,它可以获取到SurfaceView的Surface对象,提供了对Surface的操作方法。一般在SurfaceView的回调函数中使用。1.1 getHolder()方法获取SurfaceHolder对象。1.2 addCallback()方法注册SurfaceHolder.Callback回调函数。1.3 setFixedSize()方法设置Surface的大小。

2023-03-04 15:55:17 754

原创 音视频开发系列(3)——全面了解Android MediaMetadataRetriever

该方法用于设置MediaMetadataRetriever要提取信息的数据源,path可以是本地文件路径或者网络URL地址。该方法用于提取指定的元数据信息,参数keyCode可以是预定义的一些常量,例如METADATA_KEY_TITLE表示音频的标题,METADATA_KEY_ARTIST表示音频的演唱者等等。其中,参数keyCode代表要提取的元数据信息类型,可以是预定义的一些常量值,也可以是自定义的键值。

2023-03-04 15:17:27 1396

原创 关于MVC/MVP/MVVM的一些错误认识

在 Android 开发中使用 MVP 和 MVVM 模式早已不是新鲜事了,各种 MVP/MVVM 相关的文章、开源库也已屡见不鲜,甚至是让人眼花撩乱,那么我为什么还要在这个早已被画满涂鸦的黑板上再来涂涂画画呢?是想彰显我的存在感吗?那当然!啊不不不……不完全是!我还想要警醒读到这篇文章的各位:你们对于MVX的理解可能并不完全正确!我们都知道 MVX 的进化过程是从滚球兽进化到 MVC ,然后从 MVC 进化到 MVP,再从 MVP 超进化到 MVVM。

2023-01-22 17:43:21 1779

原创 OPENGL ES 2.0 知识串讲 (10) ——OPENGL ES 详解IV(纹理优化)

纹理时每个图形应用程序中的重要内容,对其使用不当就容易导致很严重的性能、内存、耗电等问题。然而,纹理在应用程序中,并不是一个独立的部分,它和各个系统都有着紧密的联系。

2022-12-26 17:10:10 541

原创 OPENGL ES 2.0 知识串讲 (9) ——OPENGL ES 详解III(纹理)

上面一节课,我们学习了一个OpenGL ES程序必须具备的一些API,从准备shader,到传入绘制信息,到最后的执行绘制命令。然而在上节课结束的时候,我们也提到了OpenGL ES除了这些必备的API之外,还存在一些别的模块。比如这节课我们要说的纹理。纹理,其实我们可以理解为是存在于GPU中的图片信息,是OpenGL ES中很重要的一个概念,也是游戏开发的重要组成部分。我们看到的绚丽的游戏界面,其实就是在一个个模型上,贴上纹理构成的。可以说游戏中的这些元素,它们的形状依靠的是顶点坐标,而色彩基本都是依靠纹

2022-12-25 14:59:42 1384

原创 OPENGL ES 2.0 知识串讲 (8) ——OPENGL ES 详解II(传入绘制信息)

上一节讲述了如何通过 OpenGL ES 给 GPU 关联一套可以使用的 shader,这 一套 shader 是被放在一个 program 中当作一个整体供 GPU 使用的。那么 GPU 绘制图片不止是需要这套 shader,还需要给这套 shader 传递一些必要的输入参数, 比如想要绘制图片的顶点位置,形状,颜色等等信息,那么这一节,将学习如何通过 OpenGL ES API 把这些绘制所需要的信息传递给 GPU。想要绘制一幅图片,最起码需要预先想好要绘制什么形状的图片,比如是绘制一个三角形还是一个圆

2022-12-23 18:53:00 358

原创 OPENGL ES 2.0 知识串讲 (7) ——OPENGL ES 详解I(绑定 SHADER)

在之前的六节中,讲解了 EGL、GLSL 与 OpenGL ES 三个专业术语的概念以及它们的关系,串讲了整个绘制流程;之后分别讲解了 EGL 主要 API 的用处,以及 GLSL 的主要语法。现在,对 EGL 和 GLSL 有了比较全面的了解,那从这一节开始, 会根据 OpenGL ES 与 EGL 和 GLSL 的关系,按照绘制图片的整个流程,对 OpenGL ES 进行详细讲解。之前提过 OpenGL ES 其实就是一个图形学库,由 109 个 API 组成,只要明白了这 109 个 API 的意义和

2022-12-21 15:33:36 837

原创 OPENGL ES 2.0 知识串讲 (6)——GLSL 语法(IV)

上面两节,主要讲解了 GLSL 中变量和函数的定义语法和使用语法,现在我们可以在 shader 中自定义一些我们所需要用到的变量和函数。但是在 shader 中, 还存在着一些内置的变量和函数。这些变量主要是用于将 Shader 计算得到的值传给 GPU,完成 Shader 在 Pipeline 中的功能。由于我们使用 shader 的目的就是为了把所需要的值传给 GPU,所以这些变量对我们非常重要。Shader 中内置的函数也非常重要,就好比 C 语言中的 printf 一样,把我们想要使用到的功能用一个

2022-12-20 18:46:21 1559

原创 OPENGL ES 2.0 知识串讲 (5)——GLSL 语法(III)

简单的解释一下,是这样的,在 shader 中,如果我们将一个变量定义成一个值,比如定义 a 为 3.0,那么 shader 并不会把 3.0 保存起来,而是在使用到 a 的时候,再根据场景重新计算,假如 a 的精度修饰符为 lowp,那么当它和 mediump 的 float 运算以及与和 lowp 的 float 运算,a 在这两次运算中的值会因为精度不同而不同。如果某个参加运算的参数没有精度修饰符,那么就以另外一个参加运算的参数的精度修饰符为准,如果都没有,那么就看下一个操作中的参数的精度修饰符。

2022-12-19 17:50:22 1033

原创 OPENGL ES 2.0 知识串讲 (4)——GLSL 语法(II)

上一节,我们讲解了 Shader 的功能,并从预处理和注释开始,讲解 GLSL 的语法知识。想要学习和使用一门语言,必须先学习这门语言的语法,语法中除了上一节说到的预处理、注释,还有更加重要的变量定义和使用,函数定义和使用, 以及 GLSL 的一些特殊语法。其中变量相关的知识包含变量类型,变量名,变量的操作等,这一节,我们将介绍变量的数据类型等相关知识。一个完整的程序,包括预处理、函数、变量等部分组成。这些部分合在一起, 诠释了程序要做什么事情,以及怎么做。在基本的语言中,比如 C、C++,我们对这些已经很

2022-12-17 18:44:32 518

原创 OPENGL ES 2.0 知识串讲 (3)——SHADER的功能&GLSL语法(I)

在第一节中,我们介绍过 OpenGL ES 与 GLSL 的主要功能,就是往绘制 buffer 上绘制图片。其中虽然 GLSL 制作的 shader 是穿插在 OpenGL ES 中使用,但是我们在流程中可以看出来,两大 shader(vertex shader 和 fragment shader)相对于 OpenGL ES 其他模块还是比较独立的。这两个 shader 就好比两个函数一样,有输入,有输出。从 OpenGL ES 传入一些参数,在 shader 中进行运算,然后再传出给 GPU 的其他模块。

2022-12-17 18:39:53 637

原创 OPENGL ES 2.0 知识串讲(2)――EGL详解

EGL 的 API 还有很多,这一节只是把其中最重要也是最常用的 11 个 API 拿出来进行了讲解,最后总结一下 EGL 使用的大概流程如下:先获取 display 的 handle,对 display 进行 EGL 初始化。从设备上获取匹配的配置信息,再绑定一个绘制 API 用于之后的绘制。根据获取 display 的 handle、 配置信息以及当前绘制 API 生成 surface 和 context,再把它们绑定在一起,绑定在当前 thread 上,下面就可以使用绘制 API 进行绘制。

2022-12-13 18:36:21 743 1

原创 OPENGL ES 2.0 知识串讲(1)――OPENGL ES 2.0 概括

电脑是做什么用的?电脑又被称为计算机,那么最重要的工作就是计算。看过三体的同学都知道, 电脑中有无数纳米级别的计算单元,通过 0 和 1 的转换,完成加减乘除的操作。是什么使得电脑工作?驱动,驱使着硬件完成工作。谁来写驱动?制造电脑的公司自己来写驱动,因为他们对自己的底层硬件架构最熟悉。谁会使用驱动?所有的软件工程师都会直接或者间接的使用到驱动。那么问题来了,如果说不同的电脑公司,制造出来不同的硬件,使用不同的 驱动,提供出来不同的接口供软件工程师进行使用,那么软件工程师就要崩溃了。

2022-12-13 16:11:42 1513

原创 leetcode刷题(134)——剑指 Offer 33. 二叉搜索树的后序遍历序列

划分左右子树: 遍历后序遍历的 [i, j]区间元素,寻找 第一个大于根节点 的节点,索引记为 m。此时,可划分出左子树区间 [i,m-1]、右子树区间 [m, j - 1]、根节点索引 j。右子树区间 [m, j-1]内的所有节点都应 >postorder[j]。根据二叉搜索树的定义,可以通过递归,判断所有子树的 正确性 (即其后序遍历是否满足二叉搜索树的定义) ,若所有子树都正确,则此序列为二叉搜索树的后序遍历。recur(m, j - 1) : 判断 此树的右子树 是否正确。

2022-11-29 09:55:24 83

原创 leetcode刷题(133)——剑指 Offer 07. 重建二叉树

递归共建立 N个节点,每层递归中的节点建立、搜索操作占用 O(1) ,因此使用 O(N)时间。递推参数: 根节点在前序遍历的索引 root 、子树在中序遍历的左边界 left 、子树在中序遍历的右边界 right;在中序遍历中搜索根节点 node 的索引 ,可将 中序遍历 划分为 [ 左子树 | 根节点 | 右子树 ]。根据中序遍历中的左(右)子树的节点数量,可将 前序遍历 划分为 [ 根节点 | 左子树 | 右子树 ]。输入某二叉树的前序遍历和中序遍历的结果,请构建该二叉树并返回其根节点。

2022-11-25 10:25:52 422

原创 leetcode刷题(132)——完全背包问题思路理解

有N件物品和一个最多能背重量为W的背包。第i件物品的重量是weight[i],得到的价值是value[i]。每件物品都有无限个(也就是可以放入背包多次),求解将哪些物品装入背包里物品价值总和最大。同样leetcode上没有纯完全背包问题,都是需要完全背包的各种应用,需要转化成完全背包问题,所以这里还是以纯完全背包问题进行讲解理论和原理。对照01背包的代码,就是将第二个循环从小到大进行枚举即可。完全背包和01背包问题唯一不同的地方就是,每种物品有无限件。版本1:这是朴素版本的,时间复杂度O(nm^2)

2022-11-18 10:15:53 426

原创 leetcode刷题(131)——背包问题理解

面试的话,其实掌握01背包,和完全背包,就够用了,最多可以再来一个多重背包。

2022-11-15 11:36:49 286

原创 leetcode刷题(130)——最大得分的路径数目

给你一个正方形字符数组 board ,你从数组最右下方的字符 ‘S’ 出发。你的目标是到达数组最左上角的字符 ‘E’ ,数组剩余的部分为数字字符 1, 2, …, 9 或者障碍 ‘X’。在每一步移动中,你可以向上、向左或者左上方移动,可以移动的前提是到达的格子没有障碍。一条路径的 「得分」 定义为:路径上所有数字的和。请你返回一个列表,包含两个整数:第一个整数是 「得分」 的最大值,第二个整数是得到最大得分的方案数,请把结果对 10^9 + 7 取余。

2022-11-10 14:41:31 395

原创 leetcode刷题(129)——576. 出界的路径数

给你一个大小为 m x n 的网格和一个球。球的起始坐标为 [startRow, startColumn]。你可以将球移到在四个方向上相邻的单元格内(可以穿过网格边界到达网格之外)。你 最多 可以移动 maxMove 次球。给你五个整数 m、n、maxMove、startRow 以及 startColumn ,找出并返回可以将球移出边界的路径数量。因为答案可能非常大,返回对 109 + 7 取余 后的结果。

2022-11-08 20:50:47 329

原创 leetcode刷题(128)——1575. 统计所有可行路径,动态规划解法

给你一个 互不相同 的整数数组,其中 locations[i] 表示第 i 个城市的位置。同时给你 start,finish 和 fuel 分别表示出发城市、目的地城市和你初始拥有的汽油总量每一步中,如果你在城市 i ,你可以选择任意一个城市 j ,满足 j!= i 且 0

2022-11-08 15:43:29 326

原创 leetcode刷题(127)——1575. 统计所有可行路径,DFS解法

给你一个 互不相同 的整数数组,其中 locations[i] 表示第 i 个城市的位置。同时给你 start,finish 和 fuel 分别表示出发城市、目的地城市和你初始拥有的汽油总量每一步中,如果你在城市 i ,你可以选择任意一个城市 j ,满足 j!= i 且 0

2022-11-07 21:18:53 306

原创 leetcode刷题(126)——1289. 下降路径最小和 II

给你一个 n x n 整数矩阵 arr ,请你返回 非零偏移下降路径 数字和的最小值。非零偏移下降路径 定义为:从 arr 数组中的每一行选择一个数字,且按顺序选出来的数字中,相邻数字不在原数组的同一列。

2022-11-06 16:50:28 357

原创 leetcode刷题(125)——931. 下降路径最小和

给你一个 n x n 的 方形 整数数组 matrix ,请你找出并返回通过 matrix 的下降路径 的 最小和。下降路径 可以从第一行中的任何元素开始,并从每一行中选择一个元素。在下一行选择的元素和当前行所选元素最多相隔一列(即位于正下方或者沿对角线向左或者向右的第一个元素)。具体来说,位置 (row, col) 的下一个元素应当是 (row + 1, col - 1)、(row + 1, col) 或者 (row + 1, col + 1)。

2022-11-06 12:28:20 213

原创 leetcode刷题(124)——64. 最小路径和

给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。

2022-11-05 22:00:24 146

原创 leetcode刷题(123)——63. 不同路径 II

一个机器人位于一个 m x n 网格的左上角 (起始点在下图中标记为 “Start” )。机器人每次只能向下或者向右移动一步。机器人试图达到网格的右下角(在下图中标记为 “Finish”)。现在考虑网格中有障碍物。那么从左上角到右下角将会有多少条不同的路径?网格中的障碍物和空位置分别用 1 和 0 来表示。提示:obstacleGrid[i][j] 为 0 或 1。

2022-11-05 21:25:13 105

大麦网演唱会抢票软件,一个基于 tauri + rust + vue 调用接口的抢票软件

一个基于 tauri + rust + vue 构建的抢票软件,全部调用大麦的接口。目前只支持大麦平台(默认)。 1.安装 rust curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh rust 官网 (输入 rustc -V 显示版本号,则表示安装成功) 2.安装 node node 官网 (输入 node -v 显示版本号,则表示安装成功) 3.运行 yarn install 安装依赖 4.运行 yarn tauri dev 启动本地项目(如果windows系统,可能需要准备 tauri 需要的环境),使用编译的app来进行调试。 5.运行 yarn tauri build 打包程序。生成的程序在 src-tauri/target/release 下。

2024-04-21

i茅台预约工具-GitHub Actions版

集成Github Actions 多账号配置 账号有效期管控 手机号加密保存 自动获取app版本 微信消息推送

2024-04-21

某宝、某猫抢购,抢电视、抢茅台

web版使用说明 1、抢购前需要校准本地时间,然后把需要抢购的商品加入购物车 2、如果要打包成可执行文件,可使用pyinstaller自行打包 3、不需要打包的,直接在项目根目录下 执行 python3 main.py 3.1、(可选)需要推送消息提醒(如微信/群机器人/短信),在 https://sre24.com 免费注册得到推送 token,执行 TOKEN=xxx python3 main.py 4、程序运行后,会打开淘宝登陆页,需要自己手动点击切换到扫码登陆

2024-04-21

i茅台app自动预约,每日自动预约,支持docker一键部署

i茅台app,每日自动预约茅台 1. 平台注册账号 2.添加多个用户 3.自动预约 4.类型选择(本市出货量最大的门店,或位置附近门店) 5.自动旅行 6.首次旅行分享 7.获取申购耐力值 8.自定义时间/随机时间预约或旅行 9.申购结果消息推送

2024-04-21

python 12306 购票助手

多日期查询余票 自动打码下单 用户状态恢复 电话语音通知 多账号、多任务、多线程支持 单个任务多站点查询 分布式运行 Docker 支持 动态修改配置文件 邮件通知 Web 管理页面 微信消息通知

2024-04-21

SpringBoot网上商城是一个基于Spring Boot的综合性B2C仿天猫电商平台

一、系统介绍 需求设计主要参考天猫商城的购物流程: 用户从注册开始,到完成登录,浏览商品,加入购物车,进行下单,确认收货,评价等一系列操作。 管理后台包含商品管理,订单管理,类别管理,用户管理和交易额统计等模块。 二、所用技术 后端技术栈: Spring Boot+MySQL+Druid+Log4j2+Maven+mybatis 前端技术栈: JSP+Echarts+Bootstrap 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,Maven 源码+数据库脚本

2024-04-20

JAVA+SpringBoot网上商城

一、系统介绍 前台商城系统:包含首页登录、商品分类、新品上线、首页轮播、商品推荐、商品搜索、商品展示、购物车、订单结算、订单流程、个人订单管理、会员中心、帮助中心等模块。 后台管理系统:包含数据面板、轮播图管理、商品管理、订单管理、会员管理、分类管理、设置等模块。 二、所用技术 后台:Springboot + Mybatis + Swagger2 + Maven +mysql 前台:Thymeleaf + Bootstrap + AdminLTE 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7,Maven 源码+数据库脚本

2024-04-20

Java+SpringBoot网上商城

一、系统介绍 前台功能 商品分类查询,加入购物车,提交订单,查看订单 后台功能: 用户管理,订单管理,分类管理,商品管理 二、所用技术 后端技术栈: springboot jpa mysql 前端技术栈: thymeleaf 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,Maven 源码+数据库脚本

2024-04-20

基于Java+Springboot电影购票系统

一、系统介绍 前台 普通用户注册、登录、注销 用户信息修改:邮箱、密码、头像 影片的信息浏览:影片的名称、导演、演员、简介及上映时间等 观影的房间、座位的选择:用户选择观影的影院、房间、座位,用户不能选择已出售的座位 用户的评价:用户登录后可对影片写一些评价 订单信息查询:历史订单信息,包括金额、对应电影票、场次、座位等 后台-管理员登录 对影片的信息进行管理:影片的名称、导演、演员、简介及上映时间等,对影片进行新增、删除、编辑等 对影评信息进行管理:对评语进行修改、删除等。 对所有电影院中影片价格进行修改 对电影放映场次进行管理:增加,修改,下架场次 对影院进行管理:增加修改影院 对用户信息进行查询、修改等管理功能。 对电影票订单信息进行查询和管理 票房统计:票房数据可视化 二、所用技术 后端技术栈: springboot jpa mysql 前端技术栈: freemaker 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,Maven 源码+数据库脚本

2024-04-20

基于Java+Springboot的景区旅游信息管理系统

一、系统介绍 本项目分为管理员与普通用户两种角色 用户登录 前台功能:旅游路线、旅游景点、旅游酒店、旅游车票、旅游保险、旅游策略 管理员登录 后台功能:用户管理、旅游路线管理、旅游景点管理、旅游酒店管理、 旅游车票管理、旅游保险管理、旅游策略管理、订单管理管理、留言管理、数据分析等等。 二、所用技术 后端技术栈: springboot mybatis mysql 前端技术栈: html+layui 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,Maven 源码+数据库脚本

2024-04-20

基于springboot 网上花店商城 springboot+MybatisPlus+mysql

一、系统介绍 包括管理员、普通用户两种角色,外加游客(未登录情况) 权限 游客 < 普通用户 < 管理员 1、游客功能 查看鲜花信息 2、普通用户功能 购买鲜花、订单管理、地址管理 个人信息修改、密码修改,登录登出 3、管理员功能 用户管理、地址管理、鲜花管理、订单管理 个人信息、密码修改、销量统计 二、所用技术 后端技术栈: springboot mybatis-plus mysql 前端技术栈: jsp bootstrap 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,Maven

2024-04-20

java基于springboot的宠物商城 Spring Boot+Mybatis+mysql+Thymeleaf+Shiro

一、系统介绍 未注册用户 非注册用户(即游客身份)进入宠物官网首页,可以浏览关于宠物的宣传以及医院发布的文章,进入宠物商城浏览正在发售的商品,搜索已发布的文章和商品,注册以及登录。 已注册用户 注册用户可以修改个人信息和宠物信息,发布预约单(预约医生和美容师),在医院的商城购物,收藏商品,给官方留言,查看与自己相关的记录信息,如:病例记录、预约记录、问诊记录、订单记录等,注销退出系统。 业务管理员 业务管理员具有进货管理(包括进货入库、退货出库、进货单据查询、退货单据查询以及当前库存查询)、销售管理(包括销售出库、客户退货入库、销售单据查询、退货单据查询)、库存管理(包括商品报损、商品报溢、库存报警、报损报溢记录查询)、查看统计数据(供应商进退货单统计、客户进退货单统计、按日统计销售利润、按月统计销售利润)、供应商管理、客户管理、商品管理、期初库存管理、前台轮播图管理、设备类型管理、设备管理、设备使用管理、设备使用记录管理、文章类型管理、文章管理、客户留言管理、医院用品管理、医院用品出入库管理、医院用品出入库记录管理、客户消息管理、客户订单处理、客户预约单管理、客户问诊记录管理

2024-04-20

基于Java+Springboot+vue的宠物交易/领养系统

一、系统介绍 包括管理员、普通用户两种角色,外加游客(未登录情况) 权限 游客 < 普通用户 < 管理员 1、游客功能 查看宠物信息 2、普通用户功能 出售/领养宠物、购买/收养宠物、订单管理、地址管理 和卖家/卖家对话 个人信息修改、密码修改 3、管理员功能 用户管理、地址管理、宠物管理、订单管理 个人信息、密码修改 二、所用技术 后端技术栈: springboot+mybatis+mysql+java 前端技术栈: vue 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,Maven 源码+数据库脚本

2024-04-20

基于springboot房屋租赁系统 springboot+mybatis+mysql+shiro

一、系统介绍 包括管理员、房东、租客三种角色,外加游客(未登录情况) 出租类型包含整租和合租 权限 游客 < 租客 < 房东 < 管理员 1、游客功能 登录、注册(可以注册房东或租客)、搜索房子、查看箱子信息、新闻咨询查询 搜索功能,根据价格范围,面积范围,城市,小区,整租/合租搜索 房子信息,基本信息、轮播图、地图定位 2、租客功能 预定房子(创建订单、签订合同、支付订单) 订单管理(取消订单、查看订单、查看合同、退租) 我的家(查看我的当前有效订单房子信息、查看合租情况) 反馈管理(提交反馈、反馈列表、删除反馈) 收藏管理(收藏房子、收藏列表、取消收藏) 个人信息修改、密码修改、联系房东(自动给房东发邮件) 3、房东功能 房子管理(发布出租/编辑房子信息,发布后需要管理员审核;删除房子;下架房子) 订单管理(订单列表、退租、查看合同) 发布出租(包括标题、描述、价格、各种配套信息、地图位置、轮播图等20多个字段信息) 反馈管理(提交反馈、反馈列表、删除反馈) 个人信息、密码修改 4、管理员功能 用户管理(禁用用户、启用用户)

2024-04-20

基于JAVA+Springboot的OA人事管理系统

一、系统介绍 用户模块 日志模块 考勤模块 工作流模块 请假 岗位 会议申请 菜单 定时任务月末统计考勤状况 等功能 管理员输入登录账号和密码,登录成功后,可以进行自身信息的修改,还有员工管理、部门管理、角色管理、菜单管理、岗位管理、公告管理、个人便签、通讯录、签到签退、个人信息管理、会议室管理、会议管理等功能。 员工输入登录账号和密码,登录成功之后,可以对个人信息修改,进行每天上班的签到签退,个人便签管理,也可以查询公司的通讯录可以方便联系到公司所有人。 二、所用技术 springboot+mybatis+ shiro +mvc + activiti+thymeleaf+quartz 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,Maven 源码+数据库脚本 所有项目以及源代码本人均调试运行无问题 可支持远程调试运行

2024-04-20

基于Vue和SpringBoot的超市账单管理

一、系统介绍 管理员: 系统基础管理:对登入用户、部门、角色、权限进行维护。 商品管理:对超市所出售的商品档案进行维护。 供应商管理:对超市所合作的供应商档案进行维护。 账单管理:对超市所管理的账单档案进行维护。 职员:商品管理、账单管理 经理:商品管理、账单管理、供应商管理 二、所用技术 后端技术栈: springboot mybatisPlus SpringSecurity mysql Java 前端技术栈: vue View UI 三、环境介绍 基础环境 :IDEA/eclipse, maven3.x, JDK 1.8 , Mysql, node.js 源码+数据库脚本

2024-04-20

基于Java+Springboot的酒店预订管理系统

一、系统介绍 本项目分为管理员与普通用户两种角色 管理员角色包含以下功能: 超级管理员拥有所有权限 后台功能: 工作人员管理、角色管理、应用管理、 日志管理、客户管理、留言管理、 房型管理、房间管理、预约订单管理、 入住管理、统计分析管理 用户角色包含以下功能: 客户登录、找回密码 留言板留言 浏览客房和预定客房 二、所用技术 前端技术栈 jsp、layer、easyui 后端技术栈 springboot,java,mysql,mybatis 三、环境介绍 基础环境 :IDEA/eclipse, JDK 1.8, Mysql5.7及以上,,Maven 所有项目以及源代码本人均调试运行无问题 可支持远程调试运行

2024-04-20

机器学习面试复习资源集合

一、特征工程 (一)特征预处理 标准化、归一化、异常特征清洗、不平衡数据 不平衡数据的处理方法 (二)特征表达 缺失值、特殊特征(eg.时间)、离散特征、连续特征 连续特征离散化的好处 什么样的模型对缺失值更敏感? (三)特征选择 过滤法、包装法、嵌入法 Kaggle中的代码实战 二、算法基础 (一)评价指标 PR曲线和F1 & ROC曲线和AUC AUC & GAUC (二)正则项 正则化与数据先验分布的关系 L1在0点处不可导怎么办?可采用坐标轴下降、最小角回归法 L1为什么比L2的解更稀疏 (三)损失函数 常见损失函数 常见损失函数2 (四)模型训练 经验误差与泛化误差、偏差与方差、欠拟合与过拟合、交叉验证 参数初始化为什么不能全零 深度学习参数初始化 Lecunn、Xavier、He初始化 dropout Batch Normalization dropout和BN在训练&预测时有什么不同 Layer Normalization Transformer为什么用LN不用BN(LN和BN两者分别关注什么) ResNet (五)优化算法 梯度下降法、牛顿法和拟牛顿法 深度学习优化算法

2024-04-20

算法工程师-机器学习面试题总结

基本概念 1-1 简述解决一个机器学习问题时,你的流程是怎样的? 1-2 损失函数是什么,如何定义合理的损失函数? 1-3 回归模型和分类模型常用损失函数有哪些?各有什么优缺点 1-4 什么是结构误差和经验误差?训练模型的时候如何判断已经达到最优? 1-5 模型的“泛化”能力是指?如何提升模型泛化能力? 1-6 如何选择合适的模型评估指标?AUC、精准度、召回率、F1值都是什么?如何计算?有什么优缺点? 1-7 什么是混淆矩阵? 1-8 ROC曲线如何绘制?相比P-R曲线有什么特点? 1-9 如何评判模型是过拟合还是欠拟合?遇到过拟合或欠拟合时,你是如何解决? 1-10 你是如何针对应用场景选择合适的模型? 1-11 如何选择模型中的超参数?有什么方法,并说说其优劣点 1-12 误差分析是什么?你是如何进行误差分析? 1-13 你是如何理解模型的偏差和方差?什么样的情况是高偏差,什么情况是高方差? 1-14 出现高偏差或者高方差的时候你有什么优化策略? 1-15 奥卡姆剃刀定律是什么?对机器学习模型优化有何启发?举例说明

2024-04-20

吴恩达机器学习课程的讲义

吴恩达机器学习课程的讲义

2024-04-20

使用机器学习算法完成对12306验证码的自动识别

使用机器学习算法完成对12306验证码的自动识别 两个必要的数据集: 文字识别,model.h5 图片识别,12306.image.model.h5

2024-04-20

PTA 天梯赛习题思路和题解

PTA 天梯赛习题思路和题解

2024-04-20

PAT-GPLT(中国高校计算机大赛团体程序设计天梯赛)题解

环境 开发语言:C (c99标准) 编译环境:gcc 4.7.2 相关参数:-DONLINE_JUDGE -fno-tree-ch -O2 -Wall -std=c99 -pipe $src -lm -o $exe

2024-04-20

2021年华为杯第十八届中国研究生数学建模竞赛D题解决方案(国二)

问题分析 第一问采用随机森林+相关性分析筛选20个变量 第二问采用决策树回归、线性回归、梯度提升向量机、随机 森林回归、多层次感知机回归、XGBoost 回归和LightGBM 模型对生物活性预测。最终得出LightGBM 模型的效果比较好 第三问采用多层感知机(MLP)对化合物的 ADMET 性质进行预测。训练集采用90%的样本,测试集采用10%的样本。五种性质的平均准确率为90.5% 第四问采用改进型贪心调优

2024-04-20

第十届大唐杯真题及答案

第十届大唐杯真题及答案

2024-04-20

2020中国华录杯·数据湖算法大赛-定向算法赛(吸烟打电话检测)决赛第二名项目代码

一、算法简介 数据处理时,观察很多手机拍摄高清图片分辨率很大,因为我机器不大好,IO比较耗时,为了加速训练,先预先等比缩放保存好; 然后合并初赛的数据,进行一个清洗、去重; 最后通过定制化的CutMix进行数据预增强,先生成好部分图片。 主要训练方式基础模型是EfficientNet-B4,使用了对抗学习的预训练模型,使用了Ranger优化器,使用了SGDR的学习率衰减策略,然后通过监测验证集的mAP分数来选择最好的模型,使用early stop停止训练。在训练时还加入了梯度截断等策略。 最后使用了模型自蒸馏的训练方案。具体训练过程是,第一步先把训练集随机划分为5折,分别训练5个模型,然后生成对应的训练集预测标签;第二步重新训练5折模型,此时训练集所使用的标签为原始标签和蒸馏标签的加权和,分别训练5个模型。最后尝试不同的模型组合,选择A榜最高的作为最终提交方案。 二、数据处理 使用了初赛发布的两批数据混合在一起,没有使用外部数据。 训练数据处理过程: 先按最大边等比缩放到600尺寸;(参考脚本data/resize.py)

2024-04-19

12306抢票脚本源码

12306抢票软件源码 下载源码运行请注意下面几条: 1.此项目用到了selenium库,浏览器是chrome 2.将driverchrome放到main同级目录下。 3.进入setting.py文件配置一下chrome.exe的路径。注意driverchrome与chrome的版本要一致!!! 4.请确保安装了PyQt5库。 5.run文件是ESTrain.py

2024-04-17

大麦网自动购票脚本, 支持docker一键部署

使用说明 下载docker-compose配置文件: wget https://github.com/ClassmateLin/dm-ticket/releases/download/v0.1.0/dm-ticket.zip 解压zip: unzip dm-ticket.zip && cd dm-ticket 运行容器: docker-compose up -d 修改配置: vim config/config.yaml, 配置项在config/config.yaml中有详细注释 编写本项目主要目的为学习和研究Rust,无法保证项目内容的合法性、准确性、完整性和有效性。 本项目涉及的数据由使用的个人或组织自行填写,本项目不对数据内容负责,包括但不限于数据的真实性、准确性、合法性。使用本项目所造成的一切后果,与本项目的所有贡献者无关,由使用的个人或组织完全承担。 本项目中涉及的第三方硬件、软件等,与本项目没有任何直接或间接的关系。本项目仅对部署和使用过程进行客观描述,不代表支持使用任何第三方硬件、软件。使用任何第三方硬件、软件,所造成的一切后果由使用的个人或组织承担,与本项目无关。

2024-04-17

数据库设计课程设计-高校选课管理系统

开发意义: 随着信息技术不断向深入发展,越来越多的学校开始着手信息化建设。其中学生选课、成绩信息化管理就是其中重要的一块内容。学生选课与成绩信息规模大、项目条数多、信息量庞大,传统的人工管理方式显然已经无法满足要求,需要借助计算机来进行现代化信息管理,从而提高管理的准确性与高效性。 可行性: 传统人工管理成绩存在诸多弊病,比如准确性低、效率低等。计算机具有存储快、查找便利、准确性高的特点,能非常好的解决人工管理的弊病。 应用环境: Web服务器:tomcat8.5; 编程工具Eclipse Java 2019-09; 数据库:SQL sever 2017; 技术路线: jsp+servlet+javabean; 系统功能框架介绍,处理模块描述。 管理员: 1.查询教师名单; 2.添加教师信息; 3.修改教师信息; 4.删除教师信息; 5.查询学生名单; 6.添加学生信息; 7.修改学生信息; 8.删除学生信息; 9.查询课程信息;

2024-04-16

大麦抢票脚本 V1.0 已有大佬验证可以成功!

功能介绍 通过selenium打开页面进行登录,模拟用户购票流程自动购票 1. 配置环境 1.1安装python3环境 Windows 访问Python官方网站:https://www.python.org/downloads/windows/ 下载最新的Python 3.9+版本的安装程序。 运行安装程序。 在安装程序中,确保勾选 "Add Python X.X to PATH" 选项,这将自动将Python添加到系统环境变量中,方便在命令行中使用Python。 完成安装后,你可以在命令提示符或PowerShell中输入 python3 来启动Python解释器。

2024-04-13

东方财富网股吧爬虫,爬取帖子及其评论的相关信息,并储存到数据库中(附详细操作说明)

该项目使用 selenium 模拟用户操作抓取股吧 发帖 和 评论 数据(允许多线程同时抓取多支股票的相关信息),并将抓取到的数据储存到 MongoDB 中,方便后续使用。 附加说明:非科班新手第一次写爬虫,代码效率一般(比如未使用 redis 做消息队列等等),适合新手入门或小规模爬取。以后若有能力与时间会对代码进行迭代维护,提高爬取效率。 主要功能 爬取指定股票股吧中的发帖信息,包括帖子标题,浏览量,评论数,帖子链接,发帖时间 (YYYY-MM-DD, HH: MM),以 post_XXXXXX 为集合名储存到 MongoDB 中。 爬取指定时间范围中股吧帖子下的评论信息,包括评论内容,是一级或二级评论,点赞数,发帖时间 (YYYY-MM-DD, HH: MM),以 comment_XXXXXX 为集合名储存到 MongoDB 中。 可以通过 post_XXXXXX 下的 _id 与 comment_XXXXXX 下的 post_id 建立映射关系,对帖子标题和评论内容进行匹配。

2024-04-13

某乎爬虫,用于爬取某乎页面 话题 问题 回答 评论 的爬虫 支持 asyncio 异步高并发 支持多用户登陆

某乎爬虫,用于爬取某乎页面 话题 问题 回答 评论 的爬虫 支持 asyncio 异步高并发 支持多用户登陆

2024-04-13

掘金小册爬虫脚本 将小册保存为 markdown,pdf,html 格式

本项目案例使用爬虫爬取的为公开的掘金小册。可在掘金小册/阅读 中查看。本项目仅供学习交流使用,请勿将个人付费小册公开。若公开由此造成的一切后果,与本项目无关。

2024-04-13

微信公众号文章爬虫,仅用于学习

要求 在选定微信订阅号账号的情况下,批量抓取一段时间之内的所有推文的: 链接 标题 封面图 作者 发布账号 正文文本内容 发布时间 阅读量 点赞数 在看数 留言数 是否开启留言 并导出为 excel 表格 实现 整体思路:枚举公众号->爬取公众号下的所有文章->对每篇文章找到所需信息 step1 爬取公众号下的所有文章 即使不是爬虫,想要看到一个公众号下的所有文章也不那么容易。目前统一的手段是在微信应用中打开公众号,但此页面无法抓包,也无法获得爬虫需要的请求和响应。有部分公众号给出了往期文章列表供爬取,但此方法非常依赖公众号,并不统一。 网络上已知的实现有 微信历史消息,但可能被封号 搜狗微信,但现在似乎已经没有维护 微信公众平台,也可能被封号 本爬虫使用的手段是利用微信公众平台,在创作图文消息时插入超链接,可以搜到一个公众号下的所有文章。 微信公众平台需要先注册账号并修改名称通过审核。 实际测试发现,爬取几十页后就会被封一段时间(几十分钟)。因此需要多次启动爬虫,因而记录下了失败时爬取的公众号和页数,方便下次直接跳转。

2024-04-13

轻量型A股每日数据爬虫项目

核心逻辑1:通过财经网址获取全部股票的动态数据,并且经过分析,将日涨,日跌超过x%的股票进行筛选,按照股票的涨跌幅进行排序;通过对股票的大额买入卖出订单进行排序,并预测前10位买入卖出的之后的大概股价,并对买入卖出进行排序;并存储到数据库(DB:Mysql,需要跟进) 核心逻辑2:对保留到数据库的数据按照5日,20日进行分析排序,筛选出5,20日上涨,下降的前x位的股票,进行排序,并存储到数据库(DB:Mysql) 核心逻辑3:做T,通过股票的涨跌幅,对股票进行T操作 (此为量化核心逻辑) 使用技术指标建模交易信号。比如利用布林通道、均线交叉等技术分析指标,建立买入和卖出规则。 加入风险管理作为交易决策依据。比如设置止损价格和动态调整仓位,降低单日风险。 采用复合指标相结合,避免单一依赖某一指标。比如结合MACD、KDJ等多 time frame 的指标信号。 进行回测优化,找出参数组合效果好的交易策略。优化周期、触发点设定等策略变量。 采用平滑移动平均线,避免被短期波动误导。比如用EMA作为买入信号。 重点跟踪行业领跑股票,利用行业势头。同时观察大盘走势变化。

2024-04-13

新浪某博热榜爬虫,利用 Github Action 的调度脚本

使用PHP实现的,爬取新浪某博每日热榜内容,以下是今日热榜 更新于 2024-04-13 20:50:32 Thurman猫一杯视频号被封 1.7M 车辆发生剐蹭女子叫嚣自己老公是国足 1.4M 在高原感受别样的春日浪漫 1.2M 保时捷撞车后女子砸门被行政拘留 1.1M 郑合惠子 垃圾堆里扒好东西 924.0K 张一山银发 892.0K 金秀贤金智媛不再合体 640.4K 伊朗对美国发出警告 509.0K 眼泪女王 482.6K 男子养了20年的海龟竟是国保玳瑁 480.9K 赵丽颖说谢谢狗哥 480.3K 伊朗扣押一艘和以色列相关货船 479.3K 绝大部分人感染HPV后会自愈 470.8K RNG直播需付费观看 446.3K 成龙为刘浩存提裙摆 440.8K 承欢记 404.6K

2024-04-13

矩阵快速幂求解斐波那契

二. 矩阵相乘 若A为n×k矩阵,B为k×m矩阵,则它们的乘积AB(有时记做A·B)将是一个n×m矩阵。其乘积矩阵AB的第i行第j列的元素为: image 代码如下: ###### 矩阵乘法 ###### def mutiply(self,a,b): temp=[[0,0],[0,0]] for i in range(len(a)): for j in range(len(b)): for k in range(len(temp)): temp[i][j]+=a[i][k]*b[k][j]%1000000007 return temp 三. 矩阵快速幂 幂又称乘方。表示一个数字乘若干次的形式,如n个a相乘的幂为a^n ,或称a^n为a的n次幂。a称为幂的底数,n称为幂的指数。 快速幂的思路就是:设A为矩阵,求A的N次方,N很大。例如:A的9次方 A^9 = A*A*A*A*A*A*A*A*A 【一个一

2024-04-13

走迷宫 广度优先搜索与优先队列

2.0版本 迷宫按以下格式输入:第一行输入m与n 表示迷宫行数列数。随后输入m行字符 由# . r a x组成 表示墙壁 地面 地面(起点) 地面(终点) 可破坏的墙壁 迷宫中含有可破坏的墙壁 破坏墙壁可以多罚n步 可以有多个起点 会算出最短的路径 无解的迷宫会打印一个最长的路径 采用优先队列 由队列链表实现 1.0版本 解决简单的迷宫 从控制台输入格式:第一行输入m与n 表示迷宫行数列数。随后输入m行字符 由# . r a组成 表示墙壁 地面 地面(起点) 地面(终点) 输出0 表示无法解出 若能解出 会随后输出路径 采用简单的队列

2024-04-13

通过kmp技术实现的旅行app

使用以下技术构建: Kotlin: 编程语言 Kotlin Multiplatform: 用于在单一代码库中构建多平台应用程序。 Jetpack/JetBrains Compose Multiplatform: 用于在多平台(如Android和iOS)之间共享UI。 Moko Resources: 这是一个Kotlin Multiplatform库(和Gradle插件),提供对macOS、iOS、Android、JVM和JS/浏览器上的资源的访问,并支持默认系统本地化。 Compose Image Loader: Kotlin Multiplatform的Compose图像库。

2024-04-12

基础排序, 高级排序, 堆, 二分搜索树, 并查集, 图以及图相关算法知识总结

basic-algorithm 基础排序 选择排序 使用泛型编写算法 测试算法性能 插入排序 插入排序改进 高级排序算法 归并排序 归并排序改进 归并排序自底向上 快速排序 随机化快速排序 双路快速排序 三路快速排序 堆和堆排序 堆的基本存储 ShiftUp ShiftDown 基础堆排序和Heapify 优化的堆排序 索引堆(IndexHeap) 索引堆的优化 二分搜索树 二分查找法(Binary Search) 二分搜索树基础 二分搜索树的节点插入 二分搜索树的查找 二分搜索树的遍历(深度优先遍历) 层序遍历(广度优先遍历) 删除最大值, 最小值 二分搜索树节点的删除 floor和ceil的实现 并查集 Quick Find Quick Union 基于size的优化 基于rank的优化 路径压缩(Path Compression) 图的基础 图的表示(稀疏图和稠密图), 使用邻接表和邻接矩阵 相邻节点迭代器 图的算法框架 深度优先遍历和联通分量 寻路 广度优先遍历和最短路径 最小生成树 有权图 Prim算法的第一个实现(Lazy Prim) Prim算法的优化 Kruskal算法

2024-04-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除