自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

工匠若水

日拱一卒,功不唐捐。

  • 博客(150)
  • 资源 (10)
  • 收藏
  • 关注

原创 AGP 升级问题续集来了,不看血亏,真是骚,你真的了解 R 的 Class 常量池?

背景上一篇文章《记录一次 AGP 调研过程中的思考,我从一个事故搞出了一个故事!》发布后有很多小伙伴表示看不懂,本来不想写这篇的,但是恰巧最近大组有同事在做另一个技术需求时他的 R 也炸了,只是他炸的是 javac 阶段,我上篇分析的场景是 ASM 生成字节码阶段,所以我让他将他的R.java文件发我,我尝试编译并与我的字节码做对比发现了一点我以前没意识到的点,所以自己觉得上篇博文还是不够深入,AGP 升级的 R 问题还能继续挖坟考古,所以想来个续集。鉴于有人上篇没看懂,这篇就循序渐进的图文并茂下。所以接

2020-11-09 21:45:17 6949 2

原创 基于 Rust 标准库 API 使用 200 行代码实现 Http 1.1 协议简易服务

基于学习 Rust 实现最基本 HTTP 1.1 协议功能的 Http Server,代码量很少且非常适合 Rust 语言学习时用来实践,遵守最佳实践,杜绝 unwrap 写法。

2024-04-05 10:32:29 1305 2

原创 Flutter 安卓 Platform 与 Dart 端消息通信方式 Channel 源码解析

背景本系列前面已经分析了 Flutter 的很多知识,这一篇我们来看下 Flutter 平台通信相关原理。Flutter 官方提供三种 Platform 与 Dart 端消息通信方式,他们分别是 MethodChannel、BasicMessageChannel、EventChannel,本文会继续延续前面系列对他们进行一个深度解析,源码依赖 Flutter 2.2.3 版本,Platform 选取熟悉的 Android 平台实现。对于 MethodChannel、BasicMessageChannel

2021-08-22 16:06:40 6583 5

原创 Flutter 绘制动机 VSYNC 流程源码全方位分析

前面系列我们依赖 Android 平台实现分析了端侧很多机制,但是有一个知识点一直比较迷糊,那就是 Flutter 是怎么被触发绘制的?这个问题在网上的答案基本都说 VSYNC,但是少有人说这个 VSYNC 是怎么被关联起来的,本文就针对这个问题进行一个 Platform 到 Engine 到 Dart Framework 分析,源码依赖 Flutter 2.2.3。

2021-08-18 19:04:32 6444

原创 Flutter Android 端 FlutterView 相关流程源码分析

背景前面文章我们分析了 flutter 在 android 端编译命令相关流程,也分析了 Flutter App dart 代码入口开始到三棵核心树诞生流程,按照源码顺序,我们接下来需要先分析一下 Flutter Android 端 framework 平台实现代码(非 native engine 引擎部分),下面以一个纯 Flutter App 为例展开分析。工程结构及 API 变更对于一个纯 flutter app 来说,当我们在 yaml 依赖中添加两个 flutter plugin 依赖,然后

2021-08-15 13:25:17 6415 6

原创 Flutter Android 端 FlutterEngine Java 相关流程源码分析

背景前面文章我们分析了 flutter 在 android 端编译命令相关流程,也分析了 Flutter App dart 代码入口开始到三棵核心树诞生流程,按照源码顺序,我们接下来需要先分析一下 Flutter Android 端 framework 平台实现代码(非 native engine 引擎部分),下面以一个纯 Flutter App 为例展开分析。工程结构及 API 变更对于一个纯 flutter app 来说,当我们在 yaml 依赖中添加两个 flutter plugin 依赖,然后

2021-08-10 19:58:15 5416 2

原创 Flutter Android 端 FlutterInjector 及依赖流程源码分析

背景前面文章我们分析了 flutter 在 android 端编译命令相关流程,也分析了 Flutter App dart 代码入口开始到三棵核心树诞生流程,按照源码顺序,我们接下来需要先分析一下 Flutter Android 端 framework 平台实现代码(非 native engine 引擎部分),下面以一个纯 Flutter App 为例展开分析。工程结构及 API 变更对于一个纯 flutter app 来说,当我们在 yaml 依赖中添加两个 flutter plugin 依赖,然后

2021-08-08 11:15:24 5632

原创 Flutter Android 端 Activity/Fragment 流程源码分析

背景前面文章我们分析了 flutter 在 android 端编译命令相关流程,也分析了 Flutter App dart 代码入口开始到三棵核心树诞生流程,按照源码顺序,我们接下来需要先分析一下 Flutter Android 端 framework 平台实现代码(非 native engine 引擎部分),下面以一个纯 Flutter App 为例展开分析。工程结构及 API 变更对于一个纯 flutter app 来说,当我们在 yaml 依赖中添加两个 flutter plugin 依赖,然后

2021-08-02 23:04:04 6899 2

原创 Flutter 的 runApp 与三棵树诞生流程源码分析

背景从写 Flutter 第一行程序开始我们就知道在 Dart 的 main 方法中通过调用 runApp 方法把自己编写的 Widget 传递进去,只有这样编译运行后才能得到预期效果。你有没有好奇这背后都经历了什么?runApp 为什么这么神秘?或者说,在你入门 Flutter 后应该经常听到或看到过 Flutter 三棵树核心机制的东西,你有真正的想过他们都是什么吗?如果都没有,那么本文就是一场解密之旅。Flutter 程序入口我们编写的 Flutter App 一般入口都是在 main 方法,其

2021-08-01 23:13:07 6840 9

原创 Flutter 命令本质之 Flutter tools 机制源码深入分析

背景上一篇《Flutter Android 工程结构及应用层编译源码深入分析》我们分析了 Flutter Android 相关的应用层主要编译流程,其中分析到底层本质命令工具【Flutter SDK 下bin/flutter编译命令分析】小节时只提到,我们执行任何 flutter 命令的本质都是把参数传递到了FLUTTER_SDK_DIR/packages/flutter_tools/bin/flutter_tools.dart源码的 main 方法中,没有对这里面进行深入分析。本文要做的事就是层层递进揭

2021-07-25 21:08:03 6355 6

原创 Flutter Android 工程结构及应用层编译源码深入分析

本文部分配图及源码最近基于 Flutter 2.2.3 版本进行了修正更新发布。目的是为了弄清 Flutter 在安卓端应用层的整个编译来龙去脉,以便编译过程中出任何问题都能做到心里有数,另一个目的是为了能够在应用层定制 Flutter 编译。全文比较长,图文并茂,由工程结构深入到源码解析。

2021-07-18 22:09:31 8843 14

原创 AnnotationProcessor 处理器不工作怎么定位?

什么是 Annotation Processor 构建问题写过自定义注解处理器的老司机们乍一看这个问题觉得挺简单,是的,因为网上基本通篇都在教你怎么打日志,但是你有没有想过如果连日志都打印不出来的时候你怎么定位呢?譬如如下代码:// 确认 META-INF/services/javax.annotation.processing.Processor 没问题// 确认构建脚本没问题,确认注解 Bridge 有被使用且有参与构建@AutoService(Processor.class)public c

2021-01-13 19:11:09 7822 3

原创 给你的 app 三两下通过 JNI 移植一个 tracepath 追踪路由数据链

背景Linux 的 tracepath 指令可以追踪数据到达目标主机的路由信息,同时还能够发现 MTU 值。它跟踪路径到目的地,沿着这条路径发现 MTU。它使用 UDP 端口或一些随机端口。它类似于 Traceroute,只是不需要超级用户权限,并且没有花哨的选项。Android 也是移植的它,其源码放置位置在platform/external/iputils/tracepath6.c。我们之所以直接移植tracepath6.c而不是tracepath.c的原因是 tracepath6 支持 IPV6

2020-12-09 22:00:30 4388

原创 Jetpack 全家桶之 App Startup 看完源码后真不是你们说的那样

背景我们都知道,Application 初始化一直是安卓开发中被诟病最多的问题之一,尤其是 app 支持多进程且航母级应用场景下。随着业务迭代,初始化代码控制不到位的情况下是灾难性的,后人不敢随意挪动位置,或者说因为时机太早且为 app 启动必经之路,每次修改的影响面都很难评估,造成的启动性能影响也很严重。此时可能很多小伙伴觉得 Jetpack 的 App Startup 库就是解决上面这段话里的问题的,因为他们觉得官方库介绍里说:The App Startup library provides a s

2020-11-29 14:25:22 5413 1

原创 kotlin 实战之委托总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~特别说明,kotlin 系列文章均以 Java 差异为核心进行提炼,与 Java 相同部分不再列出。随着 kotlin 官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓即可,差异只是语法层面的事情,建议不要过多关注。类委托类委托原理:by 关键字后面的对象实际会被存储在类的内部,编译器则会将父接口的所有方法实现出来,并且将其转移给委托对象去执行。//定义一个接口interface InterfaceB

2020-11-22 22:47:38 6771

原创 Groovy 动态面向对象复盘总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景前面《Groovy 本质初探及闭包特性原理总结》文章中我们总结了 Groovy 的本质,可以发现 Groovy 不但增强了 java 的脚本能力,也提供了新的面向对象特性;就像前面看到的,Groovy 对 java 非对象基础类型直接变成了引用类型,引入了闭包,并为对象集合增加了许多简化符号和拓展能力;前面文章也说了,这些特性可以看作是 java 的一种语法糖,但如果 Groovy 的对象仅仅提供 java 的语法糖能力,

2020-11-22 22:44:22 4811

原创 Groovy 本质初探及闭包特性原理总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~Groovy 语言的本质Groovy 是基于 JVM 的一种语言,也是 Java 的一种升级拓展语言。其具备脚本语言的特性,但又不算脚本,所以其运行有如下两种方式:基于源码直接运行,譬如 groovy Test.groovy。基于预编译模式运行,譬如先 groovyc Test.groovy 然后 java Test。无论上面的哪种运行方式,其本质都是 JVM 字节码,可以理解成和 java 编译运行没啥区别,只是

2020-11-18 20:00:19 5267

原创 kotlin 实战之泛型与逆变协变总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~特别说明,kotlin 系列文章均以 Java 差异为核心进行提炼,与 Java 相同部分不再列出。随着 kotlin 官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓即可,差异只是语法层面的事情,建议不要过多关注。范型(generics)与协变逆变范型用来表示变量类型的参数化。一个简单的范型类定义使用样例:class Generics<T>(t: T) { var tmp: T =

2020-11-18 19:56:18 4674

原创 kotlin 实战之函数与 lambda 表达式总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~特别说明,kotlin 系列文章均以 Java 差异为核心进行提炼,与 Java 相同部分不再列出。随着 kotlin 官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓即可,差异只是语法层面的事情,建议不要过多关注。kotlin 函数与 lambada 表达式在 kotlin 中调用 java 方法时不能使用具名参数语法,因为 java 字节码并不总是会保留方法参数信息。默认参数函数//重载一个 te

2020-11-11 21:45:02 5089

原创 kotlin 实战之面向对象特性全方位总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~特别说明,kotlin 系列文章均以 Java 差异为核心进行提炼,与 Java 相同部分不再列出。随着 kotlin 官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓即可,差异只是语法层面的事情,建议不要过多关注。面向对象//kotlin 类默认修饰符是 public 的,不用再显式指定 publicclass MyClass {}//kotlin中一个类的类体没有任何内容则花括号可以省略,如下:

2020-11-10 23:28:38 5084

原创 kotlin 实战之 let、with、run、apply、also、takeIf、takeUnless、repeat 源码总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~特别说明,kotlin 系列文章均以 Java 差异为核心进行提炼,与 Java 相同部分不再列出。随着 kotlin 官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓即可,差异只是语法层面的事情,建议不要过多关注。letlet扩展函数的实际上是一个作用域函数,当你需要去定义一个变量在一个特定的作用域范围内,let函数的是一个不错的选择;let函数另一个作用就是可以避免写一些判断null的操作。obje

2020-11-07 08:53:14 2169

原创 记录一次 AGP 调研过程中的思考,我从一个事故搞出了一个故事!

背景看过我博客的老铁应该知道,我在 18 年五月写过一个小 gradle 插件https://github.com/yanbober/app-tiny-R-gradle-plugin,其作用就是将 app 生成的 R 常量进行内联操作。对,就是前不久很火的滴滴 booster 和字节跳动 ByteX 提供的 R 资源 inline 原理。这两天因为项目要升级适配 AGP4.1.0 版本,顺手要调研 AGP 4.1.0 构建对子 module 及合成最终 app 的 intermediates 产物 R

2020-11-05 21:53:15 5872 1

原创 kotlin 实战之核心基础特性总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~特别说明,kotlin 系列文章均以 Java 差异为核心进行提炼,与 Java 相同部分不再列出。随着 kotlin 官方版本的迭代,文中有些语法可能会发生变化,请务必留意,语言领悟精髓即可,差异只是语法层面的事情,建议不要过多关注。kotlin 编译及反编译对于 kotlin 来说,如果你不用 IDE(其本质也是走的命令行行为),则其编译与反编译原理基本与 java 如出一辙,kotlin 的 kotlinc 命令对应

2020-11-03 22:05:44 1093

原创 还在因 JDK 兼容问题发不同 JAR 包做兼容?MRJAR 了解一下?

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景Java 9 版本中增强了Jar 包多版本字节码文件格式支持,也就是说在同一个 Jar 包中我们可以包含多个 Java 版本的 class 文件,这样就能做到 Jar 包升级到新的 Java 版本(新特性 API 使用)时不用强迫使用方为了使用新 Jar 包而升级自己的业务模块 Java 版本,也不用针对不同最低支持 Java 版本提供不同的 Jar,真正的做到了一个 Jar 包兼容所有的目的。这样的 Jar 称为 MRJ

2020-10-22 13:18:04 921

原创 推荐一波代码量、行数、提交量、作者等全维度统计神器

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景代码各种维度的统计在有些时候是很重要的,这里总结一些常用的牛逼的代码统计工具,着重介绍了个人使用的 Statistic 插件。但是如果你是想统计团队维度的数据,推荐后面介绍的 git_stats 神器工具。Statistic IDEA 插件IDEA 的 Statistic 插件官方地址为 https://plugins.jetbrains.com/plugin/4509-statistic ,大家可以直接通过 IDEA

2020-10-11 20:50:17 3270 3

原创 WEB 前端模块化方案完全总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景JavaScript 的模块系统主要是在解决大中型前端应用脚本管理与加载问题。在前端模块化进程中主要经历了下面几种 JavaScript 模块化解决方案:石器时代IIFECJS,CommonJS 模块规范AMD,CMD,异步模块定义UMDESM,ECMAScript 模块系统(ES6)石器时代HTML <script>元素用于嵌入或引用可执行脚本。互联网早期,页面比较简单,使用内嵌的方式或者

2020-09-26 19:51:53 2234

原创 git hook 的无限畅想与简单落地总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景好的 commit message 是至关重要的,如果随意编写 log,带来的后果可小可大,但是无论大小都影响了开发的效率和回朔的难度,所以有必要进行 log 规范化检查。而检查的入口可以从 git hook 切入,而 git hook 却又有无限的遐想。关于 git commit 问题可以参考下面几个帖子:Augular git commit 提交规范如何写好 Git commit log?跑远了,我们下面先介绍

2020-09-26 19:45:45 792 2

原创 让 CheckStyle 支持增量检查的一次落地经验总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景大家都知道静态代码检查工具有很多,譬如阿里的 p3c、sonar 挂钩的一堆插件等。但是这些东西对于一个已存在的项目不够友好,因为旧代码一扫描会出现一堆问题,修复带来的成本又很高,所以这些工具都比较适合新项目或者初期介入,对于老项目就显得很蛋疼了。因此有必要做到增量检查;一种就是针对版本控制的 changed 进行增量,这种情况会涉及到老文件修改一处全部问责的问题;另一种是针对新增文件进行增量,这种情况保证了从此刻开始新

2020-09-21 21:15:13 2313

原创 git hook 的无限畅想与简单落地总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景好的 commit message 是至关重要的,如果随意编写 log,带来的后果可小可大,但是无论大小都影响了开发的效率和回朔的难度,所以有必要进行 log 规范化检查。而检查的入口可以从 git hook 切入,而 git hook 却又有无限的遐想。关于 git commit 问题可以参考下面几个帖子:Augular git commit 提交规范如何写好 Git commit log?跑远了,我们下面先介绍

2020-09-21 21:08:56 771

原创 JDK tools.jar 中 javadoc 自定义 doclet 的妙用

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~缘由相信大家都用过 javadoc 命令或者 IDE 封装命令生成 java api doc 文档吧,但是你有没有反思过 javadoc 命令是怎么解析文件生成的呢?其实 javadoc 在 jdk 目录下只是一个可执行程序,但是这个可执行程序是基于 jdk 的 tools.jar 的一个封装,也就是说 javadoc 实现在 tools.jar 中。很多时候我们可能会有一些奇葩的需求,譬如获取 java 文档注释进行搞事情

2020-09-19 21:05:32 1155

原创 你需要知道的神器之 editorconfig

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景经常在全球最大的男性社交平台 github 上看别人项目时,会发现好多顶级牛逼的项目目录下都会有个.editorconfig文件,出于好奇查了下才发现真特么香。恰巧最近在研究团队一致的 customer IDE format config file 场景,所以就深入品尝了下.editorconfig,发现他的这个真香只适合那些新立项项目或者强制全局执行的项目,因为深入研究后发现其不支持增量配置,略可惜,不过丝毫不影响我写篇

2020-09-19 20:59:32 1682

原创 大规模项目完全 gradle 化的一次落地总结

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景项目规模航母级庞大,年代久远,导致很多模块迟迟没有完全 gradle 化,所以浪费了一定的开发效率。由于构建采用了类似 c 语言的宏定义概念控制,加上自定义的拆 dex 构建,对部分大型模块不熟悉,所以整个构建无比复杂,从而对完全 gradle 化带来了一些坑。本文仅以总结记录自己的落地经验,以便后续回忆分析。落地过程中的坑与解决方案整体迁移的思路是先依据各种 ant 构建自定义的 build.xml 翻译成对应规则的

2020-09-14 21:04:36 1279 4

原创 Android Native Crash 捕获之 BreakPad

工匠若水可能会迟到,但是从来不会缺席,最终还是觉得将自己的云笔记分享出来吧 ~背景Android Native Crash 的捕获其实是有好几种方案的,譬如 coffeecatch、crash 后新进程过滤 logcat、google BreakPad 等,系统层面就另当别论了,系统有那么强大的墓碑机制,所以不讨论墓碑情况。应用层方案来说,其各自都存在一些利弊或者兼容问题,综合来看,Android 系还是推荐使用 google BreakPad 实现,本文就抛开其他方案来聊聊 BreakPad 在 An

2020-09-14 20:14:22 2689 3

原创 Python3.X 爬虫实战(动态页面爬取解析)

【工匠若水 http://blog.csdn.net/yanbober 未经允许严禁转载,请尊重作者劳动成果。私信联系我】1 背景不知不觉关于 Python 3.X 爬虫系列已经介绍了如下系列:《正则表达式基础》 《Python3.X 爬虫实战(先爬起来嗨)》 《Python3.X 爬虫实战(静态下载器与解析器)》 《Python3.X 爬虫实战(并发爬取)》 《Python3.X 爬虫实战

2017-07-02 20:08:34 83278 14

原创 Python3.X 爬虫实战(缓存与持久化)

缓存与持久化简单说就是 Cache 或者 Persistence 了,这玩意和爬虫有啥关系呢?想象一下如果我们需要对同一个页面进行多次解析,我们前面的代码都会重新发起真实网络请求,这是不合理的,因为短期之内这个页面是不可能有更新的,我们重复拉取是没有意义的;其次我们很多时候爬虫的输出器其实就是需要把爬取的数据依据需求多元化的持久化下来,所以我们有必要先掌握常见的爬虫相关缓存及持久化。

2017-06-27 19:04:00 15951 12

原创 Python3.X 爬虫实战(并发爬取)

这一篇一下搞得有点不像在介绍并发爬虫,而成了 Python3 并发编程基础了,坑爹啊,无论怎样最后我们还是给出了两个基于 Python3 线程池、进程池的并发爬虫小案例,麻雀虽小,五脏俱全。虽然本篇对并发爬虫(Python3 并发)没有进行深入介绍,但是基本目的达到了,关于并发深入学习不是一两天的功夫,并发在大型项目中是个很有学问的东西,要走的路还有很长。

2017-06-25 16:37:31 38730 25

原创 Python3.X 爬虫实战(静态下载器与解析器)

这一篇内容主要延续上一篇[《Python3.X 爬虫实战(先爬起来嗨)》](http://blog.csdn.net/yanbober/article/details/73162298),重点偏向于爬虫爬取静态页面的下载器与解析器常用套路引导,主要适用于理解爬虫流程和自己编写小爬虫程序,对于大型爬虫这些介绍是十分不健壮的,我们一般会采用第三方爬虫框架,对于框架和动态页面爬取我们后面系列会进行介绍的。

2017-06-17 01:05:34 17445 7

原创 Python3.X 爬虫实战(先爬起来嗨)

爬虫的价值就不多说了,Python 的便捷与强大也就不 BB 了,在这个数据泛滥、追求效率的时代,使用 Python 可以为我们创造相当多的便捷,Web 开发、桌面小工具开发、粘性脚本编写、大数据处理、图像处理、机器学习等等,能做到的事情实在太多。

2017-06-13 22:32:32 81207 19

原创 Gradle 庖丁解牛(构建生命周期核心委托对象创建源码浅析)

上一篇《Gradle 庖丁解牛(构建源头源码浅析)》我们分析了 Gradle 框架自身初始化(非构建生命周期初始化)的核心流程,这一篇我们续着前面的分析继续(如果没看过前一篇的建议先去看前一篇,因为这一系列存在非常高的关联性)。

2017-04-06 19:59:23 9873 8

原创 Gradle 庖丁解牛(构建源头源码浅析)

总是有人问 Gradle 构建,总是发现很多人用 Gradle 是迷糊状态的,于是最近准备来一个“Gradle 庖丁解牛”系列,一方面作为自己的总结,一方面希望真的能达到标题所示效果,同时希望通过该系列达到珍惜彼此时间的目的,因为目前市面上关于 Gradle 的教程都是在教怎么配置和怎么编写插件,很少有说明 Gradle 自己到底是个啥玩意的,还有是如何工作的,本系列以官方 release 3.4 版本为基础。

2017-03-24 17:54:57 19786 37

ARKitPlusVR

VR项目中核心组成有三:渲染引擎,九轴算法,反畸变算法。在此处我们可以基本舍弃反畸变算法与九轴算法,依靠SceneKit实现渲染部分。 目前iPhone上可以下载到的VRAPP基本都是三自由度,即围绕XYZ三轴心旋转实现camera跟随头部转动的效果。用户无法自由移动从而接近或沿四周观察物体。手机在不借助外接设备的情况下实现VR空间定位的产品目前基本没有。但是借助ARKit,我们可以实现且误差估计在十厘米左右。 Camera设置 在此Demo中需要注意的就是camera的设置。与一般游戏开发不同的是,我们这里需要2个camera,分别用于左右眼内容显示。 因为左右眼内容实际是不一样的,所以需要2个camera在增强视差实现立体效果。 考虑到后续需要2个眼睛随着头部转动,会产生位移与旋转,所以我们需要增加一个新的camera作为2个camera的容器。

2024-04-10

数据可视化平台源码和资料

数据可视化平台 技术支持:SSH框架,R语言,Echarts,D3 主要功能:上传数据集、数据源格式转换、数据清洗、数据统计、聚类、关联、决策树、社会网络可视化 数据可视化平台是一款集数据处理与可视化展示于一体的高效工具,它依托于SSH框架的稳定性、R语言的数据分析能力和Echarts与D3的先进可视化技术,为用户提供了一个全面而强大的数据分析解决方案。 该平台的主要功能覆盖了数据分析的全过程,从上传数据集开始,用户便能轻松管理各种格式的数据源。平台支持多种数据源格式的转换,确保数据的兼容性和可用性。在数据清洗阶段,它能够有效地识别并剔除异常值和重复记录,保证后续分析的准确性。数据统计功能则为用户提供了数据的概括性描述和关键指标的计算,为决策提供了数据支撑。 此外,平台还包含了高级数据分析功能,如聚类分析帮助发现数据中的模式,关联规则挖掘揭示变量间的相互关系,而决策树则为预测模型提供了直观的决策路径。社会网络可视化功能则将复杂的网络关系以图形化的方式呈现,使用户能够一目了然地识别关键节点和社区结构。

2024-04-10

Json To Delphi Class Generator / JSON Data Binding Tool

生成基于JSON字符串的Delphi类。就像XML数据绑定一样,但适用于JSON。 主要特点: 完全建立在RTL上(没有外部依赖),因此跨平台; 接受任何有效的JSON字符串,无论对象有多复杂; 以树形视图可视化JSON对象的结构; 根据输入的JSON字符串生成完整的Delphi单元(声明和实现); 自动在保留的Delphi关键字前添加“&”(和号); 如果JSON字符串包含空数组,则阻止单元生成; 添加支持代码以自动销毁复杂的子类型,因此您无需手动管理子对象的生命周期; 使用TArray表示列表; 添加辅助的序列化/反序列化函数; 序列化和反序列化的结果与JSON结构相同! 自动检测日期/时间部分并将其映射到TDate/TDateTime(只要日期符合ISO8601标准); 将所有数字映射为Double; 将true/false值映射为Boolean; 允许更改属性名(键); 允许更改存根类的名称; 支持JSON格式化以美化输入字符串; 简单且响应迅速的图形界面; 基于ITask(并行编程库)自动检查更新!

2024-04-09

一个万能的刮刮乐控件 无论是UILabel、UIImageView,还是自定义视图,只要是UIView都可以用来刮

一个万能的刮刮乐控件。无论是UILabel、UIImageView,还是自定义视图,只要是UIView都可以用来刮。代码简单,功能强大,你值得拥有! 这是一个简单却功能强大的刮刮乐视图,几行代码就可以实现刮刮乐效果,而且性能良好。下面有美女福利哟,相信我,你会喜欢的。 相信大家都买过彩票刮刮乐,总是会抱着中大奖的情况去刮,希望自己是最幸运的那一个,刮中五百万,抱得美人归,从此走上人生巅峰。但现实往往是你口袋里面的几十块零钱,几分钟就被消费殆尽了许多APP也集成了这一功能,比如用支付宝线下支付后就有刮刮乐。虽然刮中的都是些没多大用的优惠券,但总是会吸引人去刮一刮,万一中了大奖呢。

2024-04-09

核心部分由 Visual Basic 语言编写的 QQ机器人 插件SDK

Native.SDK 优点介绍 程序集脱库打包 类UWP开发体验 完美翻译酷QApi 支持酷Q应用打包 支持附加进程调试 Native.SDK 开发环境 Visual Studio 2012 或更高版本 Microsoft .Net Framework 4.0 (XP系统支持的最后一个版本) Native.SDK 部署流程 1. 下载并打开 Native.SDK 2. 打开 Native.Basic 项目属性, 修改 "应用程序" 中的 "程序集名称" 为你的AppId(规则参见http://d.cqp.me/Pro/开发/基础信息) 3. 展开 Native.Basic 项目, 修改 "Native.Basic.json" 文件名为你的AppId 4. 展开 Native.Basic 项目, 找到 App -> Core -> LibExport.tt 文件, 右击选择 "运行自定义工具" 此时 Native.SDK 的开发环境已经配置成功! 要找到生成的 程序集, 请找 Native.Basic -> bin -> x86 -> (Debug\Release)

2024-04-09

纸张计数显示装置-电子设计大赛

纸张计数显示装置基于RT-Thread实时操作系统,硬件平台采用STM32F407单片机为主控制器,以具有抗电磁干扰(EMI)架构的FDC2214模块作为电容采集传感器,通过屏蔽双绞线连接至两铜极板,读取采集的数据并进行相应判断,应用触摸屏和语音模块进行状态显示与播报。FDC2214模块将采集到的数据通过IIC协议传输给主控制器,主控制器对原始数据进行卡尔曼滤波,抑制噪声对数据采集的影响。校准模式下,本系统利用最大隶属度法,确定电容模拟值及纸张数的论域,定义模糊子集和隶属函数,建立模糊规则控制表,求得模糊控制查询表。其根据采集到的两极板的数据,做出短路判断并读取多组实时数据,将其与模拟区间进行归类,选取最大可能性区间作为期望值,减小最终判断的差错率。

2024-04-09

基于Android的天气APP毕业设计项目

功能 第一次打开APP引导页,缓冲加载 天气信息的显示 广告,推送 桌面小工具 新闻资讯的查看 蓝牙串口传输温度 开源框架 Butterknife注解式框架 http://jakewharton.github.io/butterknife/ Glide图片加载框架 https://github.com/bumptech/glide Okhttp网络请求框架 http://square.github.io/okhttp/ LitePal数据库操作框架 https://github.com/LitePalFramework/LitePal Logger 开发日志框架 https://github.com/orhanobut/logger Gson json数据解析框架 https://github.com/google/gson SlidingMenu侧拉菜单框架 https://github.com/jfeinstein10/SlidingMenu SwipeMenuListView侧滑删除框架 https://github.com/baoyongzhang/SwipeMenuList

2024-04-09

Sql语句50条案例,从创建数据库入门到进阶

SQL(Structured Query Language)是一种广泛使用的数据库查询和编程语言,它允许用户与数据库进行交互,执行各种数据操作。掌握SQL语句对于数据库管理员、数据分析师以及软件开发人员来说至关重要,因为它是与关系型数据库沟通的桥梁。 在这个关键词下,我们可以探讨50条SQL语句案例,这些案例将覆盖数据定义、数据操作和数据控制等多个方面。数据定义语言(DDL)案例将展示如何创建和修改数据库结构,例如创建表、修改表结构和删除表等。数据操作语言(DML)案例将包括如何插入、更新、删除和查询数据记录,这些操作是日常数据库交互中最频繁使用的功能。数据控制语言(DCL)案例则关注权限管理和事务控制,如授权和撤销访问权限,以及提交和回滚事务等。 通过这50条SQL语句案例的学习,用户将能够深入理解SQL的核心概念和语法,提升处理数据库问题的能力。这些案例将涵盖从简单的单表查询到复杂的多表连接、子查询、聚合函数和事务处理等高级特性。此外,这些案例还将展示如何优化查询性能,处理实际工作中可能遇到的各种数据问题。 总之,这50条SQL语句案例是学习和应用SQL的宝贵资源。

2024-04-08

c语言实现ini文件读写操作

C语言实现的INI文件读写操作是软件开发中常用的一种配置管理技术。INI文件以其简单的结构和易于编辑的特性,成为了存储程序设置和配置信息的首选格式。通过使用C语言编写的读写操作函数,开发者可以轻松地在程序中加载和保存配置参数,从而实现对软件行为的自定义和灵活调整。 该INI文件读写操作的实现主要包括解析INI文件的结构,提取和设置配置项的值,以及将修改后的配置信息写回文件。C语言提供了丰富的标准库函数,使得处理文本文件和字符串操作变得简单高效。通过编写相应的读取和写入函数,开发者可以快速地将应用程序的配置信息与INI文件进行同步,确保配置的持久化和一致性。 在实际应用中,C语言实现的INI文件读写操作具有高度的可移植性和稳定性,适用于各种嵌入式系统、桌面应用和服务器程序。此外,由于C语言的接近硬件的特性,该读写操作也具有较高的性能,能够在资源受限的环境中可靠地工作。 总之,C语言实现的INI文件读写操作为软件开发提供了一种简单、高效且可靠的配置管理解决方案。无论是对于初学者还是资深开发者,掌握这一技能都能够帮助他们更好地管理和维护软件配置,提高开发效率和软件质量。

2024-04-08

c++/c# network server library

该网络引擎是一款功能全面且易于使用的服务器开发工具,它从基础功能到复杂特性如分布式服务器和大规模连接管理等都内置支持,使得用户只需掌握其使用方式便能快速简便地构建实时服务器。 开发者因个人对之前工作中使用的网络服务功能的需求,以及市场上现有解决方案成本高昂、许可证复杂且功能受限,决定自行开发。经过多年服务器开发和商用经验,该引擎在短时间内取得了令人满意的成果。 该引擎支持轻松创建Windows平台的C++和C#服务器,并提供多平台支持,包括Net3.5和Unity包,使得移动端也能立即使用。虽然免费,但内置了商业级引擎的功能和便利特性,如简化的基本操作、移动和障碍恢复连接、用户间移动和同步处理等,有助于构建稳定的分布式服务器。 提供多个示例程序以展示不同功能,包括基础Echo服务器、连接恢复、异步数据库操作、服务器间通信自动化、UDP端口设置、群组管理以及休闲游戏服务器样本等。同时,建议在商业项目中使用前仔细审查示例和功能。 参考和修改的库包括ADO库C++(由韩国Naver Cafe的Mumo提供)和FreeNet(由游戏编码的Taepung地面网络的Ground先生制作)。

2024-04-08

全国计算机二级python考试

全国计算机二级Python考试是衡量计算机编程能力的重要标准之一,对于学习Python语言的学生和专业人士来说,掌握考试所需的知识和技能至关重要。为了帮助考生更好地准备全国计算机二级Python考试,我们提供了一套全面的练习代码资源,涵盖了从基础操作到综合应用的各个层面。 本套练习代码资源包括三个部分:基本操作题、简单应用题和综合应用题。基本操作题旨在帮助考生巩固Python语言的基础语法和常用数据结构,如变量定义、条件语句、循环语句、列表、元组、字典和集合等。通过这些练习,考生可以熟练掌握Python的基本编程技巧。 简单应用题则更进一步,通过实际的编程问题让考生应用所学知识解决具体任务,如函数定义、模块导入、文件操作和异常处理等。这些题目将帮助考生理解如何在实际编程中运用Python语言,提高解决问题的能力。 综合应用题则是对考生编程能力的全面检验,题目涉及算法设计、数据分析和复杂逻辑处理等高级主题。通过解决这些综合性问题,考生不仅能够深化对Python语言的理解,还能够提升综合运用编程知识的能力。 这套练习代码资源是全国计算机二级Python考试备考的宝贵资料,适合各个水

2024-04-08

golang 后台管理系统基础功能

此项目的设计目标主要用于需要多人协作、需要对操作权限做精确控制的管理系统使用。目前只提供了权限管理、用户组管理、 用户管理基础功能,后续如果有可以公用的功能会陆续增加进来。 本项目使用go语言开发 web框架使用 beego 前台页面使用 easyUI (easyUI 中文网) 页面中使用的树组件为 zTree 软件环境 开发工具: VS Code 数据库: mysql 安装指南 doc 目录下的database.sql 是数据库初始化脚本 默认账号 admin 密码 111111 功能介绍: 1:管理员管理 管理可以使用此系统的用户 功能:查询、新增、修改(可以直接重置密码)删除、管联用户组(管理用户组后可以拥有改组的所有权限) 2:管理员组管理 主要是用于用户分组和权限分组 功能:查询、新增、修改、删除、关联权限(设置这个组拥有那些权限) 3:权限管理 用于管理系统中所有的操作权限、导航菜单中的菜单目录 功能:查询、新增、修改、删除

2024-04-08

PHP 文章集锦,浮点数搞定度运算、签名验证、单点登录、安全防御、缓存技术、RPC、Composer

├─ PHP │ ├─ 00-架构 │ ├── 01-项目架构 - 拆分 │ ├── 02-配置中心 - Apollo │ ├─ 01-规范 │ ├── 01-版本库 Commit 规范 │ ├─ 01-PHP 浮点数高精度运算 │ ├─ 02-PHP 接口签名验证 │ ├─ 03-SSO 单点登录 │ ├─ 04-PHP WEB 安全防御 │ ├─ 05-PHP 缓存技术 │ ├─ 06-三个水桶等分8升水的问题 -《算法的乐趣》 │ ├─ 07-使用过Redis,我竟然还不知道Rdb │ ├─ 08-我眼中的 RPC │ ├─ 09-Composer 包开发居然这么简单

2024-04-08

基于stm32的蓝牙智能小车设计

基于stm32的蓝牙智能小车设计: 由STM32微处理器、步进电机、蓝牙,L298N等模块构成的。 该系统采用STM32微处理器为核心,在MDK环境下进行编程, 通知控制L298N模块IN1~IN4引脚的高低电平进而控制电机的转动方向, 使小车产生不同的转动模式。控制小车的转动模式通过蓝牙模块来实现, 利用手机蓝牙助手和蓝牙模块相通,进而控制小车的各种运转模式。 结果表明该系统具有结构简单、工作可靠、精度高等特点。

2024-04-08

蓝桥杯嵌入式近五年赛题,代码

蓝桥杯大赛-嵌入式设计与开发组-F103RBT6平台 #须知 1.蓝桥杯嵌入式组一个自学者对代码反思和凝练的开源项目 2.省赛推荐练习顺序第十一届,第十届,第八届,第九届,第十二届 3.此开源项目目的旨在锻炼你的思维和代码风格,不适合零基础。 4.各试题难点,体会,收获后续将更新至心得总结 5.可用于学习、参考 6.如果对你有用,希望能动动小手点个Star,让我有动力持续更新. #软件架构说明 硬件平台:国信长天CT117E 主控芯片:STM32F103RBT6 操作系统:Windows 11 开发环境:Keil-MDK 4.73 软件开发包(SDK):SPLib V3.5.0 USB转串口驱动:FT2232驱动 调试器下载插件:CoMDKPlugin-1.3.1.exe

2024-04-08

ACM模板和一些题目的代码实现

动态规划:通过分解问题为子问题并存储子问题的解,减少重复计算,常用于优化递归解法。代码实现时需定义状态变量和状态转移方程。 图论:研究图的结构和性质的分支。代码可能涉及图的表示(邻接矩阵/邻接表)、遍历(DFS/BFS)、最短路径(Dijkstra/Floyd-Warshall)等算法。 字符串:处理文本数据的重要工具。代码可能包括字符串匹配(KMP/Boyer-Moore)、编辑距离、后缀数组等算法。 数据结构:组织和存储数据的方式,如数组、链表、栈、队列、树、图等。代码实现这些结构的基本操作,以支持高效的数据处理。 数论:研究整数的性质。代码可能涉及素数检测、最大公约数、模运算、同余方程等算法。 三分法:在单峰或单谷函数上查找极值点的高效算法,通过不断缩小搜索区间来逼近解。 模板:预先编写的代码框架,用于快速构建特定类型的程序或算法,减少重复劳动。 组合数学:研究计数、排列、组合等问题的数学分支。代码可能涉及排列组合公式、生成函数、容斥原理等算法的应用。 在ACM竞赛中,熟练掌握这些主题及其代码实现,对于解决复杂问题至关重要。

2024-04-08

python爬虫,包含大小项目

python爬虫,包含大小项目,可以从入门学习到进阶,源码都能直接运行。 运行方式:打开对应目录工程直接运行即可。 一、入门篇 糗事百科 百度帖吧 pixabay图片网站 pexels图片网 info社区 教务网 拉勾 豆瓣 二、进阶篇 抓取手机App数据 断点续爬 三、框架篇(Scrapy) scrapy爬多级网页及图片(一般方法) scrapy爬多级网页及图片(ImagesPipeline) scrapy之存储: App抓取并存入MongoDB 断点续爬并存入MySQL

2024-04-08

在 Apple Silicon Mac 上入门汇编语言

对于手持Apple Silicon Mac(即芯片为M系列的Mac)的开发者而言,入门汇编语言却相对更加困难。 如今国内大部分的中文教材,还是停留在32位甚至16位的处理器上,有些还需要DOS来模拟。 虽然也有一些更现代的书籍、博客会介绍如今主流的64位处理器的汇编语言,但是这些介绍往往是基于Linux和Windows操作系统,在macOS上仍然会有一些差异(如mach-O格式的段、节的名称,命名粉碎机制,系统调用号等)。 就算终于找到了基于macOS的汇编语言入门的文章,也往往都是两三年前所写,仍然基于intel的amd64架构。而Apple Silicon的Mac则使用ARM的AArch64架构,两者更是完全不同。 在macOS上使用Docker等虚拟化方案,虽然可以让我们接触amd64架构的Linux系统,但为什么不用原生的呢? 因此,本系列将针对使用Apple Silicon Mac的开发者,介绍AArch64架构汇编语言的入门知识。

2024-04-08

学生成绩管理系统/学生信息管理系统

学校课程设计作业,完成一个简单的学生信息管理系统,考虑到系统实用性,把它做成了一个简单的能够使用的学生成绩管理系统,包含了学生信息管理,就当做练手吧。 软件名称:学生成绩管理系统(SSMS) 使用对象:小学、初中、高中 该学生信息管理系统涉及到学生、教师、系统管理员、班级、学生成绩、课程。设置一个系统管理员对系统进行管理。所有用户需输入账号、密码登录进入系统;管理员进入系统后可对学生、老师、班级、课程进行增删改查操作;学生进入系统,查看成绩、查看和修改自己的信息;老师进入系统后,对自己这门课程的学生设置课程成绩、查看和修改自己的信息,查看学生的信息和成绩、以及统计分析学生的成绩; 系统环境:Windows 开发工具:Eclipse Java版本:JDK 1.7 服务器:tomcat 7.0 数据库:MySQL 5.1 系统采用技术:Servlet+Jsp+Jdbc+H-ui+EasyUI+jQuery+Ajax+面向接口编程

2024-04-08

LInux 平台下物联网网关(多线程实现),嵌入式项目

应用于物联网嵌入式项目 包括参数数据解析、协议转换、Socket收发、Sqlite、Uart、Camera等操作&UI界面。 Linux物联网网关是基于Linux操作系统的嵌入式网关Server,通过多线程方式实现各种功能。它广泛应用于物联网嵌入式项目,包括参数数据解析、协议转换、Socket收发、Sqlite、Uart、Camera等操作,并提供友好的UI界面。 使用多线程是为了实现并发处理,主线程负责接收来自物联网设备的数据,并进行参数数据解析和协议转换。同时,多个子线程被创建来处理不同的功能和操作。其中一个子线程负责Socket收发功能,将数据发送到远程服务器或其他设备。另一个子线程负责处理Sqlite数据库的读写操作,用于存储和检索设备数据。还有一个子线程用于处理Uart通信,与其他设备进行串口通信。此外,还可以使用适当的库和工具处理摄像头的操作。 为了实现多线程,使用了Linux提供的pthread库,它提供了创建和管理线程的函数和数据结构。互斥锁和条件变量用于确保线程之间的同步和互斥访问共享资源。

2024-04-08

人力资源机器(程序员升职记)的Ruby算法

Ruby是一种优雅且富有表现力的编程语言,它拥有丰富的算法资源,为开发者提供了解决各种问题的强大工具。Ruby的算法库涵盖了排序、搜索、图论、密码学等多个领域,这些算法经过优化,可在实际项目中高效运行。 在Ruby社区,有许多开源项目和库可供使用,如RubyGems,它提供了大量的算法实现。此外,Ruby的文档和教程也非常丰富,使得开发者可以轻松地学习和应用这些算法。 Ruby的语法简洁明了,支持多种编程范式,如面向对象编程和函数式编程。这使得Ruby在实现算法时具有很高的灵活性。同时,Ruby还具有良好的可读性和可维护性,使得代码更易于理解和修改。 总之,Ruby的算法资源丰富多样,无论是初学者还是资深开发者,都可以在这个生态系统中找到满足自己需求的算法实现。

2024-04-08

Python学习第三方库案例源码(多个三方库)

PythonDemo文件夹: 包含第三库:matplotlib(2D绘图库),wordcloud(词云),jieba(中文分词),SnowNLP(Simplified Chinese Text Processing)以及numpy的例子 以及使用itchat以及wxpy对微信好友信息实现的统计以及基于图灵机器人实现的微信聊天机器人。 用python玩微信(聊天机器人,好友信息统计) Python第三方库matplotlib(2D绘图库)入门与进阶 Python第三方库wordcloud(词云)快速入门与进阶 Python第三方库jieba(中文分词)入门与进阶(官方文档)) Python第三方库SnowNLP(Simplified Chinese Text Processing)快速入门与进阶) PythonSpider文件夹 主要包括一些爬虫(知乎,妹子图等等)的实现,目前更新了下列文章 selenium在爬虫领域的初涉(自动打开网站爬取信息)

2024-04-08

Object-C 通过 ARKit 实现的太阳系动画

ARSolarPlay是一个利用ARKit技术展示太阳系行星运动的创新项目。通过这个项目,用户可以从任意角度观察太阳系中的各个行星及其运行轨迹,体验到身临其境的天文探索之旅。该项目利用了苹果公司的ARKit框架,结合了先进的计算机视觉技术和3D建模,使得太阳系的动态效果栩栩如生。 为了体验ARSolarPlay项目,用户需要准备运行iOS 11.0及以上版本的设备,以及安装了Xcode 9.0及以上版本的开发环境。此外,推荐使用iPhone 6s或更高配置的设备以获得最佳体验。通过这个项目,用户不仅能够观察到太阳系的宏观结构,还能深入了解每个行星的运动规律和特点,对于天文爱好者和教育工作者来说,这是一个极具价值的资源。 该项目的详细介绍和实现方法可以在以下两篇文章中找到:http://www.jianshu.com/p/82d7496263c7 和 http://www.jianshu.com/p/d0721aabcbf7。这两篇文章详细介绍了如何使用ARKit和SceneKit创建太阳系模型,以及如何通过编程实现行星的自转和公转动画效果。通过阅读这些文章,感兴趣的开发者和学习者可

2024-04-07

Java 或大数据开发者找工作必备材料

计算机网络、操作系统、数据库、数据结构和Java是计算机科学领域的五个关键技术领域,对于IT专业人士来说,精通这些技术是职业发展的重要基石。 计算机网络是实现数据交换和资源共享的技术基础,关键在于理解网络协议、系统架构和网络安全等概念,以确保信息流动的高效与安全。 操作系统作为计算机系统的核心,负责管理和协调硬件资源与应用软件,其知识包括进程管理、内存管理和文件系统等,对于提高系统效率和稳定性至关重要。 数据库技术涉及数据的存储、查询和维护,掌握SQL语言和数据模型能够帮助高效地处理和分析数据,对于数据驱动的决策制定具有显著意义。 数据结构是算法设计的核心,通过学习数组、链表、树等结构,可以提高编程效率,优化算法性能,是解决复杂问题的技术前提。 Java作为一种流行的编程语言,以其跨平台和面向对象的特性广泛应用于企业级应用开发。掌握Java基础和高级特性,能够助力开发者构建稳定、可扩展的软件解决方案。 综合这些技术领域,可以构建坚实的计算机科学知识体系,为职业发展和技术创新打下坚实基础。

2024-04-07

SwiftLint 源码

SwiftLint 是一个用于强制检查 Swift 代码风格和规定的一个工具,基本上以 Kodeco's Swift 代码风格指南为基础。 SwiftLint Hook 了 Clang 和 SourceKit 从而能够使用 AST 来表示源代码文件的更多精确结果。 编译源代码: 你也可以通过 下载 SwiftLint 源码到本地然后执行 make install (Xcode 15.0+) 以从源代码构建及安装。 使用 Bazel 把这个放到你的 MODULE.bazel: bazel_dep(name = "swiftlint", version = "0.50.4", repo_name = "SwiftLint")

2024-04-07

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

开发意义: 随着信息技术不断向深入发展,越来越多的学校开始着手信息化建设。其中学生选课、成绩信息化管理就是其中重要的一块内容。学生选课与成绩信息规模大、项目条数多、信息量庞大,传统的人工管理方式显然已经无法满足要求,需要借助计算机来进行现代化信息管理,从而提高管理的准确性与高效性。 可行性: 传统人工管理成绩存在诸多弊病,比如准确性低、效率低等。计算机具有存储快、查找便利、准确性高的特点,能非常好的解决人工管理的弊病。 应用环境: Web服务器:tomcat8.5; 编程工具Eclipse Java 2019-09; 数据库:SQL sever 2017; 技术路线: jsp+servlet+javabean; 实体关系分析 开设班级,每个班级包含若干学生; 课程由教师开设; 同一门课可能有多个教师开课,一个教师在一学期可能开多门课程; 需要考虑不同学年,并以学年制管理学籍; 不考虑按照班级直接开课的情况,即所有课程均由学生自由选择; 一个学生只能选择某位老师的开的某个课程,即学生不能同时选择同门两个不同老师开的课程; 不存在两个及以上老师联合开课的情况,即不存在两个及以上教师。

2024-04-07

一个基于 React Native 的 Android 企业级应用

RNPolymerPo 是一个基于 React Native 的生活类聚合实战项目,目前由于没有 MAC 设备,所以没有适配 iOS,感兴趣的可以自行适配 app 目录下相关 JS 代码即可。 $ cd RNPolymerPo $ npm install //如果觉得慢可以先切换到国内 npm 镜像源再执行此命令 配置 Gradle 个人签名路径及属性: //1. 把你个人的签名 my-release-key.keystore 文件(不知道如何生成请自行搜索)放到 RNPolymerPo 工程的 android/app 文件夹下。 //2. 编辑工程的 gradle.properties 文件,添加如下的代码(注意把其中的****替换为你自己相应密码)。 MYAPP_RELEASE_STORE_FILE=my-release-key.keystore MYAPP_RELEASE_KEY_ALIAS=my-key-alias MYAPP_RELEASE_STORE_PASSWORD=***** MYAPP_RELEASE_KEY_PASSWORD=*****

2024-04-07

rust elf format 文件解析查看器源码

rust-elf是一个提供纯Rust接口用于读取ELF目标文件的库。它具有以下特点: 适用于no_std环境:rust-elf可以在no_std环境中使用,例如内核和引导加载程序。它提供了一个不分配或使用任何std特性的ELF解析接口。no_std变体仅禁用了额外的基于流的std::Read + Seek接口,但所有核心解析功能都是相同的。 端序感知:rust-elf在解析ELF内容时处理文件和主机端序之间的转换,并提供了四种端序解析实现,针对ELF解析库的不同常见用例进行了优化。解析在规范上是通用的,每个trait实现代表一个规范,封装了从一些允许的字节顺序中解析整数的接口。 通过这个库,您可以方便地读取和解析ELF目标文件,而无需依赖其他外部库或工具。它适用于需要在Rust项目中处理ELF文件的各种应用场景,如编译器、调试器、静态分析工具等。

2024-04-07

一个基于 Kotlin Compiler Plugin 实现的迷你方法耗时无侵入编译插件

默认 kotlin 中对一段代码或方法的耗时计算提供了内置 inline 函数,我们使用方式如下(需要修改代码逻辑): val timeCost = measureTimeMillis { //logic } print("time cost is: $timeCost") 使用此插件后我们可以通过 ASM 无侵入实现如下逻辑(以便在 release 版本中直接 disable): fun beforeInjected() { //logic } fun afterInjected() { val start = System.currentTimeMillis() //logic val end = System.currentTimeMillis() val time = end - start println("[MTC] cost time:$time") } 本地调试模式下运行可以执行以下命令: ./gradlew :test-demo:run 你可以看到无侵入的方法耗时打印。

2024-04-07

gradle-javadoc-checker-master

一个检查 android、androidLibrary、java、javaLibrary 代码源文件 javadoc @author 的插件。 目录介绍 src 下为插件代码。 test-demo 下为测试代码。 原理介绍 利用 javadoc 命令工具的 tools.jar 进行自定义 doclet 操作,然后生成自定的 doc 进行解析判断。 具体参见 oracle 官方文档: javadoc doclet javadoc tools 使用介绍 插件默认使用操作如下: apply plugin: 'javadoc.checker' buildscript { repositories { maven{ url './../repo/' } } dependencies { classpath 'cn.yan:gradle-javadoc-checker:1.0-SNAPSHOT' } } javadocChecker { includePackages = ["cn.demo"] }

2024-04-07

vue3+vite+javascript+pina+ant-design-vue实现的一个pc端后台管理系统

vue3+vite+javascript+pina+ant-design-vue实现的一个pc端后台管理系统,mockJs接口数据模拟,动态菜单,beautiful 登录页,首页,打造一个完美的可供使用的后台管理系统。可以真实使用于商业项目中,基于模板改造即可满足日常二次开发,整体提升开发效率,保证你项目的提前稳定高质量交付。 Installation dependencies yarn 或 npm install 或 yarn install Run yarn dev 或 npm run dev build dev 环境 yarn build:dev qa环境 yarn build:qa pro yarn build

2024-04-07

前端开发文档,涵盖系列手把手教程

这是一个全面的前端开发教程,涵盖了HTML、CSS和JavaScript等关键技术。从基础知识开始,详细介绍了HTML标记语言的结构和常用标签,以及CSS样式表的使用方法和布局技巧。随后,深入讲解了JavaScript的语法、数据类型、函数和DOM操作等核心概念。此外,还介绍了常用的前端框架和工具,如React、Vue、Bootstrap和Webpack等,帮助开发者快速构建现代化的网页和应用。通过实际案例和练习,读者可以逐步掌握前端开发的技能,理解网页的结构和交互原理,以及响应式设计和跨浏览器兼容性的方法。本教程还提供了进阶内容,如性能优化、移动端开发和前端工程化等,帮助开发者在实际项目中提升效率和质量。无论是初学者还是有经验的开发者,都能从中获得有价值的知识和实践经验。

2024-04-07

android LabelView 自定义各种效果的 label 控件

一个可配置的迷你版轻量级 Label 辅助类,支持多种配置效果。 使用样例: <cn.label.avatarlabelview.LabelImageView app:textContent="晚场" app:textContentSize="14sp" app:direction="rightTop" app:labelTopDistance="20dp" app:labelTopPadding="10dp" app:labelBottomPadding="10dp" app:backgroundColor="@color/colorPrimaryDark" android:src="@mipmap/ic_launcher" android:background="#f3a212" android:layout_width="150dp" android:layout_height="100dp"/>

2024-04-07

使用peach进行模糊测试从入门到放弃全套资料,包含英文文档和中文文档

搜集到的一些不错的资料,以及配套的一些软件或脚本。 1、比较推荐的资料是《peach框架模糊测试英文文档》,这是官方指南,最权威的peach使用解读。 2、peach文件夹中包含了收集到的4个版本的peach最新版软件包,分别为windows版(x86)、windows版(x64)、oxs版、linux版、python版。 3、modbus协议仿真-采集软件为工控协议modbus的仿真采集软件。 4、peach案例文件夹中是网上找到的两个peach案例,利用peach发现easyfileshare和vulnserver的溢出漏洞,给出了pit文件及最终的 poc脚本。 5、pit-xml-samples是《使用peach进行模糊测试从入门到放弃》文中涉及的几个xml文件。

2024-04-07

使用Python的各种爬虫真实案例源码资源

这是一个基于Python的爬虫案例,使用了Scrapy框架和XPath表达式。它可以爬取指定网站的新闻标题、发布时间和内容,并将结果保存到数据库中。通过设置爬虫的起始链接和规则,自动遍历网页,提取所需信息。同时,使用多线程和分布式技术,提高了爬取效率。此外,还通过设置请求头和代理IP,模拟真实用户行为,防止被网站封禁。最后,该爬虫还可以定期自动更新数据,并实现数据可视化展示,方便用户查看和分析。通过该案例,用户可以学习到爬虫的基本原理和常用技术,实现定向爬取和数据挖掘。

2024-04-07

Ts Stream Parser

TS 流全称是 Transport Stream,TS 流文件是一种 MPEG2-TS 格式的音视频复合流文件,其特点是可以从视频流的任一片段开始独立解码。本项目为实习期基于 C 语言实现的 TS 流解析,意在通过简单的解析音视频来理解复杂的 TS 流编码格式,该项目只实现了 TS 流部分表的解析,其测试案例由于没时间编写 GUI,故使用了 Windows 下的 PrintTerminal 进行模拟交互(入口在 PrintTerminal.c),如需在 unix 下运行请修改 PrintTerminal 的实现即可。 相关 TS 流格式分析工具及编码文档参见官方国际标准文档即可。

2024-04-05

一个基于纯 TypeScript + Webpack + Less 实现的迷你 web 版贪吃蛇小游戏

非常适合 TypeScript 初学者实战的应用,完整实现了贪吃蛇功能。 项目依赖清单 TypeScript typescript ts-loader webpack webpack webpack-cli webpack-dev-server html-webpack-plugin clean-webpack-plugin Babel core-js babel-loader @babel/core @babel/preset-env CSS & Less style-loader css-loader less less-loader postcss postcss-loader postcss-preset-env

2024-04-05

Rust Http 1.1 协议实现,非常适合初学者的最佳实践项目

基于学习 Rust 实现最基本 HTTP 1.1 协议功能的 Http Server,代码量很少且非常适合 Rust 语言学习时用来实践。

2024-04-05

Android动态曲线图绘制

动态走势图,你懂得,一个自定义的View控件。

2014-03-12

Android SQLite数据库创建和使用实战(一)博客工程

功能基本包含了数据库基本功能,至于运行后人机操作界面只是随便写了个布局方便测试而已。

2014-03-07

空空如也

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

TA关注的人

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