自定义博客皮肤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 779 3

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

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

2020-07-06 21:31:41 920

原创 深入学习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 4209

原创 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 2121

原创 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 3254 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 2395 4

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

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

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

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

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

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

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

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

2024-02-14 22:24:09 363

原创 浅谈Google Play ASO 优化

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

2023-12-09 22:12:13 115

原创 Handler post与sendMessage还有postDelay区别

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

2023-05-10 21:17:09 337

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

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

2023-03-11 19:01:00 1283 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 684

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

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

2023-03-08 11:37:39 2407

原创 音视频开发系列(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 1402

原创 音视频开发系列(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 640

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

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

2023-03-04 15:17:27 1263

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

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

2023-01-22 17:43:21 1763

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

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

2022-12-26 17:10:10 480

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

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

2022-12-25 14:59:42 1346

原创 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 343

原创 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 815

原创 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 1489

原创 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 970

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

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

2022-12-17 18:44:32 501

原创 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 606

原创 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 682 1

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

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

2022-12-13 16:11:42 1445

原创 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 78

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

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

2022-11-25 10:25:52 409

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

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

2022-11-18 10:15:53 407

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

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

2022-11-15 11:36:49 275

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

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

2022-11-10 14:41:31 377

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

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

2022-11-08 20:50:47 298

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

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

2022-11-08 15:43:29 318

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

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

2022-11-07 21:18:53 283

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

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

2022-11-06 16:50:28 350

原创 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 202

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

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

2022-11-05 22:00:24 134

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

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

2022-11-05 21:25:13 100

春节新年H5网页实现,一年春节祝福语

开发的这个H5春节祝福网页,主要采用了javascript技术栈。在视觉动画方面,选择了createjs这个2D动画库,利用它提供的显示对象、精灵图、帧动画等功能,实现了丰富的动画效果,为网页增加了互动性。同时,使用jplayer这个javascript音频库,实现了音频的播放功能。考虑到用户体验,还特别接入了微信的录音接口,使得用户可以直接在网页上录制音频。但是由于微信接口不太稳定,又采用了linux的ffmpeg插件,用于在服务器端将amr格式音频转化为标准的mp3格式,确保录音的顺利进行。 该网页的主要功能就是微信录音和录音播放。用户可以点击录音按钮在网页中录制自己的音频祝福,调用微信接口获得amr格式音频文件。然后音频文件会上传到服务器,使用ffmpeg转为mp3格式。之后就可以直接在网页中播放这段音频。整个过程无缝对接,给用户带来流畅的体验。 总体来说,开发的这个H5春节祝福网页,技术实现了createjs动画、jplayer播放、微信录音、amr转mp3等功能,为用户提供了一个富有节日气息、互动性强的网页应用。通过录音和播放,用户可以在网页中录制并发送自己的音频祝福。

2024-02-26

电商的秒杀系统Java实现代码

1.介绍 本项目提取自电商的秒杀场景,将秒杀业务独立出一个练习项目。适合刚工作和准备工作的程序员。 2.技术 总体架构: Maven + SSM 日志: slf4j + logback 数据库相关:Mysql + c3p0 3.Maven + SSM 整合 在 idea 上创建一个 Java 项目,新建 pom.xml 文件,填写相关依赖。(具体见源码 pom.xml 文件)右键项目找到Maven Reimport 导入Maven依赖。 修改目录结构 4.完整目录展示: main.java 存放源码 resources 存放相关配置文件 sql 存放相关sql webapp 存放前台页面 创建 jdbc.properties, spring-dao.xml 文件和 mybaties-config.xml 文件 jdbc.properties 连接数据库 spring-dao.xml 文件是 Spring 与 Mybatis 的整合,主要配置自动扫描,自动注入和连接c3p0。(内容见源码) mybaties-config.xml 是 mybaties 的一些属性配置

2024-02-26

Java的学习之路,学习JavaEE以及框架时候的一些项目,结合博客和源码,让你受益匪浅,适合Java初学者和刚入门开始学框架者

文件名与介绍: [Database-support-package]-数据库需要用到的-c3p0/dbcp/dbUtils工具支持包 [Hibernate]利用Hibernate进行一对多的级联操作-Web实例 [Java_MySQL_jar]-数据库连接支持包 [JavaMail]-收发邮件支持包 [Java_MySQL_jar]Java访问数据库需要的包 [Spring]基于Spring框架的Web应用演示(附带cglib工具进行动态代理) [Tomcat7.0]Tomcat7版本安装包 [UltraISO]制作U盘启动盘需要的 [log4j_jar]log4j的支持包 [myAutoLoginWeb]过滤器Filter学习-实现用户的自动登录与IP黑名单过滤 [myBookStore]单机版的书店管理系统 [myDbPoolUse]C3P0连接池配置/DBCP连接池配置/Apache的DBUtils框架使用 [myFilterDemoWeb]过滤器Filter学习-设置全站编码与设置页面缓存 [myGzipWeb]全站压缩 [myJavaMainDe

2023-10-31

电赛2019 全国大学生电子设计竞赛 (F题)纸张数量检测装置 (基于STM32F407 & FDC2214 & USART

简介 纸张计数显示装置基于RT-Thread实时操作系统,硬件平台采用STM32F407单片机为主控制器,以具有抗电磁干扰(EMI)架构的FDC2214模块作为电容采集传感器,通过屏蔽双绞线连接至两铜极板,读取采集的数据并进行相应判断,应用触摸屏和语音模块进行状态显示与播报。FDC2214模块将采集到的数据通过IIC协议传输给主控制器,主控制器对原始数据进行卡尔曼滤波,抑制噪声对数据采集的影响。校准模式下,本系统利用最大隶属度法,确定电容模拟值及纸张数的论域,定义模糊子集和隶属函数,建立模糊规则控制表,求得模糊控制查询表。其根据采集到的两极板的数据,做出短路判断并读取多组实时数据,将其与模拟区间进行归类,选取最大可能性区间作为期望值,减小最终判断的差错率。 成果:在校准好后,50张以下100%正确 目录名 描述 2019电赛题目 2019年电赛A-H题题目及器件清单 docs 数据手册、设计图片、参考文献及设计文档 hardware FDC2214、核心板原理图及PCB hmi 串口屏幕设计UI及交互程序、语音包 matlab matlab函数拟合及Kalman mecha

2023-08-29

一种平价的chatgpt实现方案, 基于ChatGLM-6B + LoRA

一种平价的chatgpt实现方案,基于清华的 ChatGLM-6B + LoRA 进行finetune. 数据集: alpaca 有colab的同学可以直接在colab上尝试: Build 官方ptuning代码 Demo 开源版的文心一言 S1 Finetune 准备 显卡: 显存 >= 16G (最好24G或者以上) 环境: python>=3.8 cuda>=11.6, cupti, cuDNN, TensorRT等深度学习环境 pip3 install -r requirements.txt 数据预处理 转化alpaca数据集为jsonl python cover_alpaca2jsonl.py \ --data_path data/alpaca_data.json \ --save_path data/alpaca_data.jsonl \ tokenization python tokenize_dataset_rows.py \ --jsonl_path data/alpaca_data.jsonl \ --save_path

2023-08-29

C++ 后台工程师面试宝典

编程语言 C++ C++primer5笔记代码资料 STL 源码剖析 再硬核|5 千字长文+ 30 张图解 | 陪你手撕 STL 空间配置器源码 硬核|万字长文炸裂!手撕 STL 迭代器源码与 traits 编程技法 超硬核 | 2 万字+20 图带你手撕 STL 序列式容器源码 硬核来袭 | 2 万字 + 10 图带你手撕 STL 关联式容器源码 万字长文 | STL 算法总结 数据结构与算法 数据结构与算法学习 LeetCode刷题笔记 数据密集型应用系统设计-读书笔记 第一章:构建可靠性、可扩展性、可维护性的应用 第二章:数据模型与查询语言 第三章:存储与检索 第四章:编码与演化 第五章:分布式数据 第六章:复制 第六章:分区 第七章:事务 第八章:分布式系统的麻烦 设计模式 [C++设计模式] C++单例模式 用C++设计一个不能被继承的类 如何定义一个只能在堆上定义对象的类?栈上呢 重类构造和析构的顺序 操作系统 计算机操作系统复习 linux 服务器 Linux 网络编程复习 计算机网络 计算机网络总复习 数据库 Redis复习 吊打面试官系列-Redis基础知识 海量数据

2023-08-29

程序员简历模板,包括IOS,Android等

为不同领域的程序员提供一个参考范本,帮助他们更好地展示自己的技能和经验。以下是对每个模板的简要介绍: PHP程序员简历模板: 该模板适用于PHP开发者,主要关注PHP编程语言和相关框架的使用经验。您可以在简历中列出您掌握的PHP技能、您以前的项目工作经验、您参与的开源项目等内容。 iOS程序员简历模板: 该模板适用于iOS开发者,主要关注Objective-C和Swift编程语言及相关框架(如Cocoa Touch)的使用经验。您可以在简历中列出您掌握的iOS技能、Apple开发工具(如Xcode)的熟练程度、您以前的iOS项目工作经验等内容。 Android程序员简历模板: 该模板适用于Android开发者,主要关注Java编程语言和Android SDK的使用经验。您可以在简历中列出您掌握的Android技能、您熟悉的开发工具、您以前的Android项目工作经验等内容。 Web前端程序员简历模板: 该模板适用于Web前端开发者,主要关注HTML、CSS、JavaScript等前端技术的使用经验。 以上是对这些程序员简历模板的简要介绍。希望这些模板能够为您提供一些启示,并帮助

2023-06-25

vue前端大厂面试题集合

面试官:说说你对vue的理解? 面试官:说说你对双向绑定的理解? 面试官:说说你对SPA(单页应用)的理解? 面试官:Vue中的v-show和v-if怎么理解? 面试官:Vue实例挂载的过程中发生了什么? 面试官:说说你对Vue生命周期的理解? 面试官:为什么Vue中的v-if和v-for不建议一起用? 面试官:SPA(单页应用)首屏加载速度慢怎么解决?? 面试官:为什么data属性是一个函数而不是一个对象? 面试官:Vue中给对象添加新属性界面不刷新? 面试官:Vue中组件和插件有什么区别 面试官:Vue组件间通信方式都有哪些? 面试官:说说你对nexttick的理解? 面试官:说说你对vue的mixin的理解,有什么应用场景? 面试官:说说你对slot的理解?slot使用场景有哪些? 面试官:Vue.observable你有了解过吗?说说看 面试官:你知道vue中key的原理吗?说说你对它的理解? 面试官:怎么缓存当前的组件?缓存后怎么更新?说说你对keep-alive的理解是什么? 面试官:Vue常用的修饰符有哪些?有什么应用场景? 面试官:你有写过自定义指令吗?自定义指令的应用

2023-06-25

Django搭建个人博客

这个资源提供了一个快速搭建博客的解决方案,使用Django框架和MySQL数据库。它有很多特点和功能,使得博客站点变得更加易于管理和定制化。 其中最显著的特点是markdown渲染和代码高亮功能。这意味着你可以以更简洁的方式描述文章内容,并突出显示关键代码部分,从而使文章更加具有可读性和吸引力。 除此之外,该资源还支持第三方社会化评论系统(畅言),允许用户轻松地发表评论并与其他用户进行互动。同时,该博客主题还提供了三种皮肤样式供用户选择,让你的博客站点看起来更加个性化。 该资源还包括一些常见的博客功能,例如全局搜索、阅读排行榜、最新评论、博文归档和友情链接等。此外,分享和打赏功能也被集成在该主题中,使得用户可以充分利用社交媒体和网络来扩大影响力。 除了上述提到的特点和功能,这个资源还有其他一些值得注意的亮点。例如,该主题提供了多目标源博文分享功能,使得你可以将博客文章轻松地分享到不同平台和社交媒体上,从而扩大影响力和阅读量。 总的来说,使用这个资源可以帮助你快速搭建一个具有吸引力和功能丰富的博客站点,同时也能够节省时间和精力,让你专注于创作优质的内容,并与读者进行互动和交流。

2023-06-25

基于JAVA实现的图书管理系统

这是一款基于JAVA语言开发的图书管理系统,旨在方便用户进行借阅、归还和查询图书信息。系统提供了用户开通借书服务、增加图书信息、登记图书借出信息等主要模块,实现了对图书信息的全面管理。技术栈包括JSP、Servlet、Tomcat9.0、IDEA和Mysql等主流技术,并且使用了前台登录验证框架来保证系统的安全性。 在该系统中,用户可以通过简单的操作快速实现借阅、归还和查询图书的功能。为了保证系统的稳定性和性能,使用了主流的技术栈,其中JSP和Servlet用于实现Web界面的交互,Tomcat9.0作为服务器端运行环境,IDEA作为开发工具,Mysql则用于存储图书信息和用户数据。 该系统还提供了前台登录验证框架来保证用户身份的合法性,同时也可以避免恶意攻击和非法访问。此外,数据库脚本中已经包括了登录用户名和密码,用户可以直接使用系统进行操作,无需再次注册或登录。解压“需要的jar包”并添加到项目的dependency中,即可轻松地部署和运行该系统。 总之,该图书管理系统是一款功能齐全、易用性高、安全性强的系统,旨在为用户提供便捷、快速和高效的图书管理服务。

2023-06-25

学生宿舍管理系统(SSM/Layui框架;毕业设计)

毕业设计 MD5加密 SSM框架 Layui框架 一.实现功能 1.管理员的登录与登出 2.管理员,班级,学生,宿舍,卫生,访客各模块增删改查 3.个别模块关联查询 4.各个模块数据导出Excel 二.详细描述 这个毕业设计代码实现了一个基于管理员身份的学校管理系统,能够提供多个模块的增删改查功能。管理员可以通过登录界面进行身份验证,并在成功登录后进行相应的操作。系统包含班级、学生、宿舍、卫生以及访客等多个模块,可以对每个模块中的数据进行增加、删除、修改和查询操作。 此外,该系统还实现了一些模块之间的关联查询功能,使得管理员可以更方便地获取所需信息。管理员可以根据需要将任意模块中的数据导出到Excel文件中,以便日后使用或备份。 综上所述,该毕业设计代码是一个非常实用和完整的学校管理系统,提供了众多功能,可帮助管理员高效地管理学校各个领域的事务。

2023-06-17

空空如也

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

TA关注的人

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