- 博客(428)
- 收藏
- 关注
原创 select、poll、epoll之间的区别
(1)select==>时间复杂度O(n)仅知道了,有I/O事件发生了,却并不知道是哪那几个流(可能有一个,多个,甚至全部),**我们只能无差别轮询所有流,**找出能读出数据,或者写入数据的流,对他们进行操作。所以select具有O(n)的无差别轮询复杂度,同时处理的流越多,无差别轮询时间就越长。(2)poll==>时间复杂度O(n)poll本质上和select没有区别,它将用户传入的数组拷贝到内核空间,然后查询每个fd对应的设备状态, **但是它没有最大连接数的限制,**原因是它是基于链
2021-02-23 21:08:28 284
原创 leetcode刷题(121)——1143. 最长公共子序列
给定两个字符串 text1 和 text2,返回这两个字符串的最长公共子序列的长度。一个字符串的 子序列 是指这样一个新的字符串:它是由原字符串在不改变字符的相对顺序的情况下删除某些字符(也可以不删除任何字符)后组成的新字符串。例如,“ace” 是 “abcde” 的子序列,但 “aec” 不是 “abcde” 的子序列。两个字符串的「公共子序列」是这两个字符串所共同拥有的子序列。若这两个字符串没有公共子序列,则返回 0。示例 1:输入:text1 = "abcde", text2 = "ace"
2021-02-20 11:02:05 237
原创 leetcode刷题(120)——59.螺旋矩阵
给你一个正整数 n ,生成一个包含 1 到 n2 所有元素,且元素按顺时针顺序螺旋排列的 n x n 正方形矩阵 matrix 。示例 1:输入:n = 3输出:[[1,2,3],[8,9,4],[7,6,5]]示例 2:输入:n = 1输出:[[1]]题解class Solution { public int[][] generateMatrix(int n) { int l = 0, r = n - 1, t = 0, b = n - 1;
2021-02-17 12:22:48 164
原创 leetcode刷题(119)——54.螺旋矩阵
给你一个 m 行 n 列的矩阵 matrix ,请按照 顺时针螺旋顺序 ,返回矩阵中的所有元素。示例 1:输入:matrix = [[1,2,3],[4,5,6],[7,8,9]]输出:[1,2,3,6,9,8,7,4,5]示例 2:输入:matrix = [[1,2,3,4],[5,6,7,8],[9,10,11,12]]输出:[1,2,3,4,8,12,11,10,9,5,6,7]按照顺时针的顺序访问二维数组,通过while循环,跳出条件就是访问的数量和二维数组里所有元素的总和一致
2021-02-17 12:06:30 266
原创 leetcode刷题(118)——除自身以外数组的乘积
给你一个长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积。示例:输入: [1,2,3,4]输出: [24,12,8,6]提示:题目数据保证数组之中任意元素的全部前缀元素和后缀(甚至是整个数组)的乘积都在 32 位整数范围内。说明: 请不要使用除法,且在 O(n) 时间复杂度内完成此题。题解:我们不必将所有数字的乘积除以给定索引处的数字得到相应的答案,而是利用索引左侧所有
2021-02-17 11:44:36 206
原创 重新复习Android View事件分发
一个Activity包含了一个Window对象,这个对象是由PhoneWindow来实现的。PhoneWindow将DecorView作为整个应用窗口的根View,而这个DecorView又将屏幕划分为两个区域:一个是TitleView,另一个是ContentView,而我们平时所写的就是展示在ContentView中触摸事件的类型触摸事件对应的是MotionEvent类,事件的类型主要有如下三种:ACTION_DOWNACTION_MOVE(移动的距离超过一定的阈值会被判定为ACTION_MOVE
2021-02-17 11:12:43 244
原创 重新复习Android View的绘制流程
PhoneWindow是Android系统中最基本的窗口系统,每个Activity会创建一个。同时,PhoneWindow也是Activity和View系统交互的接口。DecorView本质上是一个FrameLayout,是Activity中所有View的祖先。开始:DecorView被加载到Window中1.Activity里的PhoneWindow创建是在Activity的attach方法中,这个方法是Activity在ActivityThread被创建之后调用Activity.javaAct
2021-02-16 21:47:21 226
原创 leetcode刷题(117)——557. 反转字符串中的单词 III
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。示例:输入:"Let's take LeetCode contest"输出:"s'teL ekat edoCteeL tsetnoc"提示:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格开辟一个新字符串。然后从头到尾遍历原字符串,直到找到空格为止,此时找到了一个单词,并能得到单词的起止位置。随后,根据单词的起止位置,可以将该单词逆序放到新字符串当中。如此循环多次,直到遍历完原字符串,就能
2021-02-16 17:44:24 205
原创 leetcode刷题(116)——反转字符串
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。示例 1:输入:["h","e","l","l","o"]输出:["o","l","l","e","h"]示例 2:输入:["H","a","n","n","a","h"]输出:["h","a","n","n","a","H"]非常简单
2021-02-16 16:33:27 126
原创 leetcode刷题(115)——剑指 Offer 67. 把字符串转换成整数
写一个函数 StrToInt,实现把字符串转换成整数这个功能。不能使用 atoi 或者其他类似的库函数。首先,该函数会根据需要丢弃无用的开头空格字符,直到寻找到第一个非空格的字符为止。当我们寻找到的第一个非空字符为正或者负号时,则将该符号与之后面尽可能多的连续数字组合起来,作为该整数的正负号;假如第一个非空字符是数字,则直接将其与之后连续的数字字符组合起来,形成整数。该字符串除了有效的整数部分之后也可能会存在多余的字符,这些字符可以被忽略,它们对于函数不应该造成影响。注意:假如该字符串中的第一个非空
2021-02-16 15:13:04 171 1
原创 leetcode刷题(114)——4. 寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。进阶:你能设计一个时间复杂度为 O(log (m+n)) 的算法解决此问题吗?示例 1:输入:nums1 = [1,3], nums2 = [2]输出:2.00000解释:合并数组 = [1,2,3] ,中位数 2示例 2:输入:nums1 = [1,2], nums2 = [3,4]输出:2.50000解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) /
2021-02-16 11:37:37 175
原创 ASM初探
对于 ASM 而言,它提供了 两种模型:对象模型和事件模型。ASM 的对象模型(ASM Tree API)对象模型的 本质 是一个 被封装过后的事件模型,它 使用了树状图的形式来描述一个类,其中包含多个节点,例如方法节点、字段节点等等,而每个节点又有子节点,例如方法节中有操作码子节点 等等。在对象模型下的 ASM 有 两类操作纬度,分别如下所示:1)、获取节点:获取指定类、字段、方法节点。2)、操控操作码(针对方法节点):获取操作码位置、替换、删除、插入操作码、输出字节码。1.获取节点获取一个
2021-02-15 21:49:37 928
原创 android字节码框架——AspectJ
最常用的字节码处理框架有 AspectJ、ASM 等等,它们的相同之处在于输入输出都是 Class 文件。并且,它们都是 在 Java 文件编译成 .class 文件之后,生成 Dalvik 字节码之前执行。而 AspectJ 作为 Java 中流行的 AOP(aspect-oriented programming) 编程扩展框架,其内部使用的是 BCEL框架 来完成其功能。AspectJ 的优势它的优势有两点:成熟稳定、使用非常简单。使用非常简单AspectJ 可以在如下五个位置插入自定义的代码
2021-02-15 18:08:29 517
原创 synchronized实现原理
synchronized的三种应用方式synchronized关键字最主要有以下3种应用方式,下面分别介绍修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁修饰代码块,指定加锁对象,对给定对象加锁,进入同步代码库前要获得给定对象的锁。synchronized作用于实例方法无问题写法;public class AccountingSync implements Runnable{ //共享资源(临界资源
2021-02-14 22:45:24 1635
原创 如何理解volatile
java内存模型与原子性,可见性和有序性Java内存模型规定所有的变量都是存在主存当中,每个线程都有自己的工作内存。线程对变量的所有操作都必须在自己的工作内存中进行,而不能直接对主存进行操作。并且每个线程不能访问其他线程的工作内存。在java中,执行下面这个语句:int i=3;执行线程必须先在自己的工作线程中对变量i所在的缓存行进行赋值操作,然后再写入主存当中。而不是直接将数值3写入主存当中。原子性对基本数据类型的变量的读取和赋值操作是原子性操作,即这些操作是不可被中断的,要么执行,要么不执
2021-02-14 19:44:02 169
原创 Java单例模式的写法及优缺点
总结下Java单例模式的几种写法:1.饿汉式public class Singleton{ private static Singleton instance = new Singleton(); private Singleton() {} public static Singleton getInstance() { return instance; }}优点:实现简单,不存在多线程问题,直接声明一个私有对象,然后对外提供一个获取对象的
2021-02-14 18:08:52 441 1
原创 Instant run动态加载机制
关于动态加载,实际上Instant run提供了两种动态加载的机制:1.修改java代码需要重启应用加载补丁dex,而在Application初始化时替换了Application,新建了一个自定义的ClassLoader去加载所有的dex文件。我们称为重启更新机制2.修改代码不需要重启,新建一个ClassLoader去加载修改部分。我们称为热更新机制Application入口在编译时Instant run用到了Transform API修改字节码文件。其中AndroidManifest.xml文件也
2021-02-14 17:36:49 662
原创 Tinker原理
加载补丁dexTinker采用的是下发差分包,然后在手机端合成全量的dex文件进行加载。而在build.gradle配置中的tinkerPatchdex.loader = ["com.tencent.tinker.loader.*","tinker.sample.android.app.SampleApplication","tinker.sample.android.app.BaseBuildInfo"]这个配置中的类不会出现在任何全量补丁dex里,也就是说在合成后,这些类还在老的dex文件
2021-02-14 12:28:25 1070
原创 SparseArray和ArrayMap
首先我们来介绍一下HashMap,了解它的优缺点,然后再对比一下其他的数据结构以及为什么要替代它。HashMapHashMap是由数组+单向链表的方式组成的,初始大小是16(2的4次方),首次put的时候,才会真正初始化。链表长度大于8时转化成红黑树,小于6时又转化成链表。1.为什么要引入红黑树?JDK 1.8以前是数组+链表,还未引入红黑树,这就导致了链表过长时查找的时间复杂度是O(n)红黑树是一种自平衡的二叉查找树,不是一种绝对平衡的二叉树,它放弃了追求绝对平衡,追求大致平衡,在与平衡二叉
2021-02-13 17:30:01 856
原创 如何设计一个图片加载框架
需要考虑哪些问题?首先,梳理一下必要的图片加载框架的需求:异步加载:线程池切换线程:Handler,没有争议吧缓存:LruCache、DiskLruCache防止OOM:软引用、LruCache、图片压缩、Bitmap像素存储位置内存泄露:注意ImageView的正确引用,生命周期管理列表滑动加载的问题:加载错乱、队满任务过多问题当然,还有一些不是必要的需求,例如加载动画等。异步加载:线程池,多少个?缓存一般有三级,内存缓存、硬盘、网络。2个,读内存和硬盘可以放在一个线程池,网络需要
2021-02-13 12:09:18 800
原创 android如何加载长图
思路:那就是对于一张巨型图片我们可否每次指定一块区域加载显示,然后通过改变这个区域完成整张巨图的加载呢?这样内存中只有完整图片的一块区域。区域加载1、BitmapRegionDecoder指定Bitmap区域进行解码,主要用于显示图片的某一块矩形区域显示图片的某一块区域,那么至少需要两个方法:1、设置图片,2、设置显示区域。接下来通过自定义一个可以加载巨图的View展开说明:2、设置图片前面说到至少需要两个方法:1、设置图片 2、指定显示区域我们先来看如何设置图片:mOptions实际就是
2021-02-12 23:01:50 1173 1
原创 Parcelable与Serializable
由于 Java 的 Serializable 的性能较低,Parcelable 正式在这个背景下产生的,它核心作用就是为了解决 Android 中大量跨进程通信的性能问题。Serializable使用大量反射和临时变量,而Parcelable少许反射通过启动 Activity 过程分析 Parcelable 序列化过程:熟悉这一过程的朋友过程肯定知道,startActivity 方法最终会通过 AMS(ActivityManagerService)完成跨进程通信调用,但是在通信之前先要将数据序列化后进
2021-02-12 22:44:25 369
原创 你真的懂ContentProvider么
启动性能ContentProvider 的生命周期默认在 Application onCreate() 之前,而且都是在主线程创建的。我们自定义的 ContentProvider 类的构造函数、静态代码块、onCreate 函数都尽量不要做耗时的操作,会拖慢启动速度。稳定性ContentProvider 在进行跨进程数据传递时,利用了 Android 的 Binder 和匿名共享内存机制。Binder 传递 CursorWindow 对象内部的匿名共享内存的文件描述符。这样在跨进程传输中,**结
2021-02-12 20:17:39 707
原创 flutter跨平台原理
React Native最终渲染工作交还给了系统,虽然同样使用类HTML+JS的UI构建逻辑,但是最终会生成对应的自定义原生控件,以充分利用原生控件相对于WebView的较高的绘制效率。不仅框架本身需要处理大量平台相关的逻辑,随着系统版本变化和API的变化,开发者可能也需要处理不同平台的差异,甚至有些特性只能在部分平台上实现,这样框架的跨平台特性就会大打折扣。Flutter从头到尾重写一套跨平台的UI框架,包括UI控件、渲染逻辑甚至开发语言。渲染引擎依靠跨平台的Skia图形库来实现,依赖系统的只有图
2021-02-12 18:17:19 2480
原创 Android工程师应该懂得的网络知识
下面就以比较经常看到的的5层结构为例:1)应用层:如http协议,它实际上是定义了如何包装和解析数据,应用层是http协议的话,则会按照协议规定包装数据,如按照请求行、请求头、请求体包装,包装好数据后将数据传至运输层。2)运输层:TCP和UDP两种协议,使用Socket进行连接建立的时候,一般都要指定端口号,所以这一层指定了把数据送到对应的端口号。3)网络层:这一层IP协议,以及一些路由选择协议等等,所以这一层的指定了数据要传输到哪个IP地址。中间涉及到一些最优线路,路由选择算法等等。4)数据链路
2021-02-11 21:42:58 255
原创 Activity16问
横竖屏切换时Activity生命周期注意:还有一点,非常重要,一个 Android 的变更细节!当 API >12 时,需要加入 screenSize 属性,否则屏幕切换时即使你设置了 orientation 系统也会重建 Activity !2.不同场景下 Activity 生命周期的变化过程3.如何处理异常退出您可通过使用 ViewModel 对象来减轻重新初始化 Activity 的负担。系统会在配置变更时保留 ViewModel,使其成为保存界面数据的理想场所,让您无需再次查.
2021-02-11 17:45:41 308
原创 JAVA虚拟机与Android虚拟机的区别
1.JAVA虚拟机运行的是JAVA字节码,Dalvik虚拟机运行的是Dalvik字节码java虚拟机:JAVA->class文件dalvik虚拟机:JAVA->class文件->Dalvik字节码->打包到dex中->DVM通过解释DEX文件来执行这些字节码。class文件的缺点如果A类文件引用B类文件中的方法,方法签名也会被复制到A类文件中,多个不同的类会同时包含相同的方法签名大量的字符串常量在多个类文件中也被重复使用因为大量的冗余信息,会严重影响jvm虚拟机解
2021-02-11 16:06:06 1450
原创 你真懂的ViewStub,include,merge么
1.includeinclude就是为了解决重复定义相同布局的问题<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:id="@+id/my_title_parent_id" andro
2021-02-10 12:36:30 824
原创 你真的懂SharedPreferences么
1.SharedPreferences首次创建,实际类型是SharedPreferencesImpl,系统会将每个 SharedPreferences 文件对应的操作对象(实际为 SharedPreferencesImpl)进行缓存,SharedPreferencesImpl和sp文件路径file映射关系存放在Arraymap中,api28以后,之前是HashMap2.SharedPreferencesImpl创建过程中,会开启异步线程加载对应 name 的 XML 文件内容到 Map 容器中,这里应用了
2021-02-09 18:02:06 349
原创 leetcode刷题(113)——241. 为运算表达式设计优先级
给定一个含有数字和运算符的字符串,为表达式添加括号,改变其运算优先级以求出不同的结果。你需要给出所有可能的组合的结果。有效的运算符号包含 +, - 以及 * 。示例 1:输入: "2-1-1"输出: [0, 2]解释: ((2-1)-1) = 0 (2-(1-1)) = 2示例 2:输入: "2*3-4*5"输出: [-34, -14, -10, -10, 10]解释: (2*(3-(4*5))) = -34 ((2*3)-(4*5)) = -14 ((2*(3-4))*5) =
2021-02-09 16:27:37 305
原创 leetcode刷题(112)——560. 和为K的子数组
给定一个整数数组和一个整数 k,你需要找到该数组中和为 k 的连续的子数组的个数。示例 1 :输入:nums = [1,1,1], k = 2输出: 2 , [1,1] 与 [1,1] 为两种不同的情况。关键是,如何快速得到某个子数组的和呢,比如说给你一个数组nums,让你实现一个接口sum(i, j),这个接口要返回nums[i…j]的和,而且会被多次调用,你怎么实现这个接口呢?因为接口要被多次调用,显然不能每次都去遍历nums[i…j],有没有一种快速的方法在 O(1) 时间内算出nums[i
2021-02-08 22:19:26 300
原创 leetcode刷题(111)——1109. 航班预订统计
这里有 n 个航班,它们分别从 1 到 n 进行编号。我们这儿有一份航班预订表,表中第 i 条预订记录 bookings[i] = [j, k, l] 意味着我们在从 j 到 k 的每个航班上预订了 l 个座位。请你返回一个长度为 n 的数组 answer,按航班编号顺序返回每个航班上预订的座位数。示例:输入:bookings = [[1,2,10],[2,3,20],[2,5,25]], n = 5输出:[10,55,45,25,25]可以使用差分数组,差分数组的主要适用场景是频繁对原始数组
2021-02-08 21:01:35 311
原创 leetcode刷题(110)——752. 打开转盘锁
你有一个带有四个圆形拨轮的转盘锁。每个拨轮都有10个数字: ‘0’, ‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’, ‘8’, ‘9’ 。每个拨轮可以自由旋转:例如把 ‘9’ 变为 ‘0’,‘0’ 变为 ‘9’ 。每次旋转都只能旋转一个拨轮的一位数字。锁的初始数字为 ‘0000’ ,一个代表四个拨轮的数字的字符串。列表 deadends 包含了一组死亡数字,一旦拨轮的数字和列表里的任何一个元素相同,这个锁将会被永久锁定,无法再被旋转。字符串 target 代表可以解锁的数字,你
2021-02-08 19:42:50 166
原创 leetcode刷题(109)——283. 移动零
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。示例:输入: [0,1,0,3,12]输出: [1,3,12,0,0]说明:必须在原数组上操作,不能拷贝额外的数组。尽量减少操作次数。仍然使用快慢指针,然后将所有的0放置在最后即可class Solution { public void moveZeroes(int[] nums) { int slow = 0; int fast = 0; i
2021-02-07 21:09:31 167
原创 leetcode刷题(108)——83. 删除排序链表中的重复元素
给定一个排序链表,删除所有重复的元素,使得每个元素只出现一次。示例 1:输入: 1->1->2输出: 1->2示例 2:输入: 1->1->2->3->3输出: 1->2->3其实和数组去重是一模一样的,唯一的区别是把数组赋值操作变成操作指针而已,所以同样是:class Solution { public ListNode deleteDuplicates(ListNode head) { if (head == nu
2021-02-07 19:03:50 139
原创 leetcode刷题(107)——26. 删除排序数组中的重复项
给定一个排序数组,你需要在 原地 删除重复出现的元素,使得每个元素只出现一次,返回移除后数组的新长度。不要使用额外的数组空间,你必须在 原地 修改输入数组 并在使用 O(1) 额外空间的条件下完成。示例 1:给定数组 nums = [1,1,2], 函数应该返回新的长度 2, 并且原数组 nums 的前两个元素被修改为 1, 2。 你不需要考虑数组中超出新长度后面的元素。示例 2:给定 nums = [0,0,1,1,1,2,2,3,3,4],函数应该返回新的长度 5, 并且原数组
2021-02-07 12:41:08 154 1
原创 leetcode刷题(106)——316. 去除重复字母
给你一个字符串 s ,请你去除字符串中重复的字母,使得每个字母只出现一次。需保证 返回结果的字典序最小(要求不能打乱其他字符的相对位置)。示例 1:输入:s = "bcabc"输出:"abc"示例 2:输入:s = "cbacdcbc"输出:"acdb"要求一、要去重。要求二、去重字符串中的字符顺序不能打乱s中字符出现的相对顺序。要求三、在所有符合上一条要求的去重字符串中,字典序最小的作为最终结果。我们先暂时忽略要求三,用「栈」来实现一下要求一和要求二,至于为什么用栈来实现,后面你就
2021-02-07 12:22:44 1259
原创 leetcode刷题(105)——710. 黑名单中的随机数
给定一个包含 [0,n ) 中独特的整数的黑名单 B,写一个函数从 [ 0,n ) 中返回一个不在 B 中的随机整数。对它进行优化使其尽量少调用系统方法 Math.random() 。提示:1 <= N <= 10000000000 <= B.length < min(100000, N)[0, N) 不包含 N,详细参见 interval notation 。示例 1:输入: ["Solution","pick","pick","pick"][[1,[]],[],
2021-02-07 11:10:31 210
原创 leetcode刷题(104)——380. 常数时间插入、删除和获取随机元素
设计一个支持在平均 时间复杂度 O(1) 下,执行以下操作的数据结构。insert(val):当元素 val 不存在时,向集合中插入该项。remove(val):元素 val 存在时,从集合中移除该项。getRandom:随机返回现有集合中的一项。每个元素应该有相同的概率被返回。// 初始化一个空的集合。RandomizedSet randomSet = new RandomizedSet();// 向集合中插入 1 。返回 true 表示 1 被成功地插入。randomSet.insert(
2021-02-06 21:14:04 313
原创 leetcode刷题(103)——503. 下一个更大元素 II
给定一个循环数组(最后一个元素的下一个元素是数组的第一个元素),输出每个元素的下一个更大元素。数字 x 的下一个更大的元素是按数组遍历顺序,这个数字之后的第一个比它更大的数,这意味着你应该循环地搜索它的下一个更大的数。如果不存在,则输出 -1。示例 1:输入: [1,2,1]输出: [2,-1,2]解释: 第一个 1 的下一个更大的数是 2;数字 2 找不到下一个更大的数; 第二个 1 的下一个最大的数需要循环搜索,结果也是 2。注意: 输入数组的长度不会超过 10000。比如输入一个数
2021-02-02 15:15:24 197
基于SpringBoot + MySQL + Redis + RabbitMQ + Guava开发的高并发商品限时秒杀系统
2024-05-27
大麦抢票辅助(只抢待开抢中的)
2024-04-27
大麦网演唱会抢票软件,一个基于 tauri + rust + vue 调用接口的抢票软件
2024-04-21
某宝、某猫抢购,抢电视、抢茅台
2024-04-21
i茅台app自动预约,每日自动预约,支持docker一键部署
2024-04-21
python 12306 购票助手
2024-04-21
SpringBoot网上商城是一个基于Spring Boot的综合性B2C仿天猫电商平台
2024-04-20
JAVA+SpringBoot网上商城
2024-04-20
Java+SpringBoot网上商城
2024-04-20
基于Java+Springboot电影购票系统
2024-04-20
基于Java+Springboot的景区旅游信息管理系统
2024-04-20
基于springboot 网上花店商城 springboot+MybatisPlus+mysql
2024-04-20
java基于springboot的宠物商城 Spring Boot+Mybatis+mysql+Thymeleaf+Shiro
2024-04-20
基于Java+Springboot+vue的宠物交易/领养系统
2024-04-20
基于springboot房屋租赁系统 springboot+mybatis+mysql+shiro
2024-04-20
基于JAVA+Springboot的OA人事管理系统
2024-04-20
基于Vue和SpringBoot的超市账单管理
2024-04-20
基于Java+Springboot的酒店预订管理系统
2024-04-20
机器学习面试复习资源集合
2024-04-20
Tensorflow实战学习笔记、代码、机器学习进阶系列
2024-04-20
算法工程师-机器学习面试题总结
2024-04-20
使用机器学习算法完成对12306验证码的自动识别
2024-04-20
PAT-GPLT(中国高校计算机大赛团体程序设计天梯赛)题解
2024-04-20
2021年华为杯第十八届中国研究生数学建模竞赛D题解决方案(国二)
2024-04-20
2020中国华录杯·数据湖算法大赛-定向算法赛(吸烟打电话检测)决赛第二名项目代码
2024-04-19
12306抢票脚本源码
2024-04-17
大麦网自动购票脚本, 支持docker一键部署
2024-04-17
数据库设计课程设计-高校选课管理系统
2024-04-16
大麦抢票脚本 V1.0 已有大佬验证可以成功!
2024-04-13
东方财富网股吧爬虫,爬取帖子及其评论的相关信息,并储存到数据库中(附详细操作说明)
2024-04-13
某乎爬虫,用于爬取某乎页面 话题 问题 回答 评论 的爬虫 支持 asyncio 异步高并发 支持多用户登陆
2024-04-13
掘金小册爬虫脚本 将小册保存为 markdown,pdf,html 格式
2024-04-13
轻量型A股每日数据爬虫项目
2024-04-13
新浪某博热榜爬虫,利用 Github Action 的调度脚本
2024-04-13
矩阵快速幂求解斐波那契
2024-04-13
走迷宫 广度优先搜索与优先队列
2024-04-13
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人