自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 compose-material3 实现Dropwmenu下拉菜单并弹窗

下拉菜单的行为类似于弹出窗口,并将使用父布局的位置来定位自己在屏幕上的位置。通常,下拉菜单将被放置在一个具有兄弟框的框中,该框将被用作“锚”。请注意,DropdownMenu本身不会占用布局中的任何空间,因为菜单显示在一个单独的窗口中,位于其他内容的顶部。DropdownMenu的内容通常是DropdownMenuItems,以及自定义内容。使用DropdownMenuItems将产生一个与菜单材质规范匹配的菜单。

2024-04-30 14:26:02 164

原创 compose调用系统分享功能分享图片文件

本案例采用 provider来分享当前应用下的文件,其他系统文件直接通过context地址直接获取本案例是直接 【MediaProvider】content://media/external/images/media,来让其他app直接访问,如果是系统文件请直接忽略provider相关设置。

2024-04-29 15:57:11 648

原创 material3 中底部弹窗ModalBottomSheet

如果你在on遣散请求之外提供逻辑来删除表单,你必须额外处理预期的状态清理,才能使用sheetState.hide()进行清理。由于ModalBottomSheetLayout在material3中被抛弃,所以采用ModalBottomSheet。通过State来重新重组ui,实现点击开启,点击关闭的结果,

2024-04-26 16:57:25 205

原创 android studio启动虚拟器失败

#问题二:android studio启动虚拟机长时间无响应,无法启动。在任务管理器中找到该进程,结束任务即可。提示已经运行中,可以删除锁重试。无法删除,提示已经在运行。

2024-04-18 18:18:18 223

原创 python-泛型实现,类型检查

在Python中,没有像Java中的泛型那样的明确语法来指定类型参数。Python是一种动态类型语言,可以灵活地处理不同类型的对象。然而,如果你希望在Python中添加泛型的注释或提示,以提高代码的可读性和类型安全性,可以使用类型提示。类型提示是一种Python的特殊语法,用于指定变量、函数参数和返回值的类型信息。要在Python中添加类型提示,你可以使用typing模块中的泛型类或泛型类型。下面是几个常用的泛型类型的示例:List[T]: 表示元素类型为 T 的列表。

2023-11-22 18:50:06 202

原创 Atomic原子类详解

为什么需要Atomic原子操作类?在并发环境中,代码如果操作相同的数据,就会产生资源竞争,导致结果远小于预期值例如在A线程B线程中同时获取到变量数据为1,同时执行变量+1操作,结果可能也是1,存在脏读幻读问题,因为在同一个进程中,资源是共享的,因此需要进行原子操作。

2023-10-09 18:19:18 152

原创 淘宝登陆签名js逆向代码

淘宝对于h5的访问采用了和客户端不同的方式,由于在h5的js代码中保存appsercret具有较高的风险,mtop采用了随机分配令牌的方式,为每个访问端分配一个token,保存在用户的cookie中,通过cookie带回服务端分配的token,token: 关于cookie的有效时长,cookie的有效时长为7天,但是token的有效时长目前为60分钟。客户端利用分配的token对请求的URL参数生成摘要值sign。淘宝登陆签名js逆向代码。appKey:固定数值。data: 提交的参数。

2023-10-08 13:47:24 938

原创 基于cv2识别图像实现jd滑动块验证

通过保存滑动图片,将图片进行灰度化,然后进行二值化,将图片变成黑白,获取所有矩形,并进行过滤,然后进行补偿机制。本教程无任何意向,纯纯的技术娱乐。

2023-09-21 18:22:20 372

原创 基于win32实现TB登陆滑动验证

先谈理论,淘宝 taobao.com 的所有登陆系统,都是基于sso来实现的,基本大同小异。

2023-09-21 17:03:07 649

原创 【solon生态】- solon.cloud.micrometer插件使用指南及micrometer详解

如果您的目标是Prometheus、Atlas或Wavefront,则更喜欢这种方法,因为您可以跨维度聚合直方图(通过将一组维度上的桶的值相加),并从直方图中获得可聚合的百分位数。然而,对于不支持基于直方图的服务器端百分位数计算的监控系统,它提供了对百分位数分布的某种程度的了解。(点)字符分隔小写单词。计时器是消耗内存最多的仪表,它们的总占用可能会有很大的变化,这取决于您选择的选项。从一个监视系统到另一个监视系统,还有其他更小的期望差异,例如它们的基本度量单位(特别是时间)的概念和度量标准的规范命名约定。

2023-08-09 17:19:57 505 2

原创 分享一个自动化部署jar的sh脚本,包括了拉去源码,切换分支,构建项目,停止和运行

bin/bash。

2023-07-20 17:17:58 273

原创 b站网页版视频投稿接口分析

partNumber= 分页起始(1开始)+ &uploadId= uploadId + &chunk=起始位置(0开始)+&chunks= 分区结束位置+&size= 本次传输最大长度 + &start= + 文件开始偏移位置 + &end= 文件结束偏移位置+&total=文件长度。这里不用携带cookies,通过上方返回的auth参数,并加入到header中X-Upos-Auth,post请求。X-Upos-Auth auth(上方的auth)X-Upos-Auth auth(上方的auth)

2023-07-12 14:25:55 909

原创 conda在 powershell下不能激活虚拟环境

此执行策略适用于 PowerShell 脚本内置于较大应用程序的配置,或针对 PowerShell。不需要在本地计算机上编写且未从 Internet 下载的脚本上使用数字签名。需要受信任的发布者对从 Internet 下载的脚本和配置文件(包括电子邮件和即时消息程序)的数字签名。要求所有脚本和配置文件都由受信任的发布者签名,包括在本地计算机上编写的脚本。从尚未分类为受信任或不受信任的发布者运行脚本之前,会提示你。运行已签名但恶意脚本的风险。以外的源的未签名脚本以及可能是恶意的已签名脚本的风险。

2023-06-04 10:31:58 1092

原创 将字符串拆分成固定字符串,并且使用正则表达式,不可分割,并替换(阿里云ai配音小工具)

源代码 https://gitee.com/baichen9187/common-utils。3,将字符串拆分成固定字符串,并且使用正则表达式,不可分割,并替换(阿里云ai配音小工具)2,将字符串拆分成固定字符串,某个单词不可分割。1,将字符串拆分成固定字符串数组。

2023-05-18 16:50:13 85

原创 事件驱动设计模式

是一种常见的设计模式,其核心思想是:系统中发生的事件会触发相应的事件处理器或监听器,从而实现特定的业务逻辑或功能事件驱动架构是一种常见的软件设计架构,它包括多个组件之间的事件交互。在事件驱动的架构中,事件是所有通信的中心点,组件通过订阅和发布事件来进行通信。下面是几种常见的事件驱动设计模式:观察者模式(Observer Pattern):观察者模式是一种经典的事件驱动设计模式。在这个模式中,一个被观察者对象(也称为主题)会维护一组观察者对象,当主题发生变化时,会通知所有观察者对象进行更新。

2023-02-26 00:13:10 2051

原创 io的基本原理-nio

操作系统将内存(虚拟内存)划分为两部分:一部分是内核空间(Kernel-Space),另一部分是用户空间(User-Space)应用程序不允许直接在内核空间区域进行读写,也不允许直接调用内核代码定义的函数。每个应用程序进程都有一个单独的用户空间,对应的进程处于用户态,用户态进程不能访问内核空间中的数据,也不能直接调用内核函数,因此需要将进程切换到内核态才能进行系统调用。

2023-02-12 20:53:51 794

原创 websocket技术详解,附带springboot实例

WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket通信协议于2011年被IETF定为标准RFC 6455,并由RFC7936补充规范。WebSocket API也被W3C定为标准。WebSocket使得客户端和服务器之间的数据交换变得更加简单,允许服务端主动向客户端推送数据。在Web

2022-11-07 16:48:57 442

原创 模板模式实战,采用泛型+函数式+策略封装mybatis的IService的方法,进行关联表操作

意图:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。主要解决:一些方法通用,却在每一个子类都重新写了这一方法。需求: 多个资源设计表,关联多个资源,重复操作。关键代码:在抽象类实现,其他步骤在子类实现。如何解决:将这些通用算法抽象出来。提取公共的类属性,关联属性。

2022-10-05 22:09:06 389

原创 HTTP1.x协议详解和HTTP2.0

http简称超文本传输协议,属于应用层协议,基本用于应用之间的数据传输,常用于web方向,是基于tcp的应用层协议,有时候还会基于ssl,tsl就是我们说的https协议HTTP协议(超文本传输协议HyperText Transfer Protocol),它是基于TCP协议的应用层传输协议,简单来说就是客户端和服务端进行数据传输的一种规则。注意:客户端与服务器的角色不是固定的,一端充当客户端,也可能在某次请求中充当服务器。这取决与请求的发起端。HTTP协议属于应用层,建立在传输层协议TCP之上。

2022-09-18 21:09:34 6633 1

原创 Found interface org.apache.poi.util.POILogger, but class was expected

Found interface org.apache.poi.util.POILogger, but class was expected错误代码,没有任何地方报错,猜测应该是jar包问题我们使用idea自带的pom依赖图来分析这是原本的pom文件,我们分析一下冲突<dependencies> <dependency> <groupId>fr.opensagres.xdocreport</groupId>

2022-03-02 13:52:20 5116 2

原创 nacos持久化配置(mysql)

nacos持久化配置(mysql)持久化配置系统配置:服务器unbuntu: 20.04 本地windows10nacos准备工作从官方下载源码,并编译安装git clone https://github.com/alibaba/nacos.gitcd nacos/mvn -Prelease-nacos -Dmaven.test.skip=true clean install -U 持久化配置j进入到编译完成的目录中// 将$version更改为您的实际路径cd nacos/dist

2022-02-24 11:09:51 796

原创 cloudconfig客户端报错 Caused by Could not resolve placeholder‘config.info‘ in “${config.info}“的最终解决答案

cloudconfig客户端报错 Caused by Could not resolve placeholder’config.info’ in "${config.info}"的最终解决答案相信很多小伙伴都在学习cloud-config时遇到这个错误,网上千篇一律的报错解答,全是不行,各种博主该反思了先上最终解决答案:在bootstrap.yml配置文件中找到,对应的配置文件,在最终配置中找到xxx.yml是否存在config.info这个属性(这里的Could not resolve pla

2022-01-10 17:15:45 1640 9

原创 设计模式必备知识点----六大设计原则

设计模式,即Design Patterns,是指在软件设计中,被反复使用的一种代码设计经验。 使用设计模式的目的是为了可重用代码,提高代码的可扩展性和可维护性。 设计模式这个术语是上个世纪90年代由Erich Gamma、Richard Helm、Raplh Johnson和Jonhn Vlissides四个人总结提炼出来的,并且写了一本 Design Patterns 的书。一,开闭原则开闭原则的定义开闭原则是最基础的设计原则,它指导我们如何建立一个稳定,灵活的系统。开闭原则定义如下:Softw

2021-10-10 23:09:41 208 2

原创 普利姆算法--求最小生成树

在普里姆算法中,我们从一些根顶点开始的单个集群生成一颗最小生成树,主要思想与Dijkstra算法一些,属于贪心算法算法思想我们先初始定义一个顶点,然后在相邻的所有边中迭代算这一个最小权值的边 e = (u,v),将顶点u链接到初始点c之外的顶点v,之后将顶点v放到c中,并且一直重复知道完成,算法分析prim算法与dijksta类似,都比较依赖与一个适应性比较强的优先队列Q,我们最初将n放到q中,然后在取出操作,并且更新全部m的优先权作为算法的一部分,这些都是主要花费的世界,如果是一个基于堆的优先对立

2021-09-14 00:58:34 5153

原创 动态规划算法

概念引入在现实生活中,有一类活动的过程,由于它的特殊性,可将过程分成若干个互相联系的阶段,在它的每一阶段都需要作出决策,从而使整个过程达到最好的活动效果。因此各个阶段决策的选取不能任意确定,它依赖于当前面临的状态,又影响以后的发展。当各个阶段决策确定后,就组成一个决策序列,因而也就确定了整个过程的一条活动路线.这种把一个问题看作是一个前后关联具有链状结构的多阶段过程就称为多阶段决策过程,这种问题称为多阶段决策问题。在多阶段决策问题中,各个阶段采取的决策,一般来说是与时间有关的,决策依赖于当前状态,又随即引

2021-08-30 23:23:12 1291

原创 字符串暴力匹配

简单粗暴,编程思想如下:如果当前字符匹配成功(即strl[j]=str2[ji) ,则i++, j++,继续匹配下一个字符如果失配(即str[j]!= str2[j), 令i = i - (j - 1), j = 0,相当于每次匹配失败时, i回溯, j被置为0。.用暴力方法解决的话就会有大量的回溯,每次只移动一位,若是不匹配,移动到下一位接着判断,浪费了大量的时间。(不可行!)步骤依次匹配匹配失败,i移动到 i减去(j - 1)的位置,j指针重置 private st

2021-08-25 13:46:35 237

原创 分治算法,汉诺塔问题

基本思想分治法的基本思想:将一个难以直接解决的大问题,分割成一些规模较小的相同问题,以便各个击破,分而治之。分治策略分治策略:对于一个规模为n的问题,若该问题可以容易的解决(比如规模n较小)则直接解决,否则将其分解为k个规模较小的子问题,这些子问题互相独立且与原问题形式相同,递归地解决这些子问题,然后将各个子问题的解合并得到原问题的解。分治法是一种很重要的算法。字面上的解释是“分而治之”,就是把一个复杂的问题分成两个或更多的相同或相似的子问题,再把子问题分成更小的子问题…直到最后子问题可以简单的直接

2021-08-25 13:29:40 255

原创 常用算法--贪心算法

简介贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,算法得到的是在某种意义上的局部最优解 。算法思想:贪心算法一般按如下步骤进行:建立数学模型来描述问题 。把求解的问题分成若干个子问题 。对每个子问题求解,得到子问题的局部最优解 。把子问题的解局部最优解合成原来解问题的一个解 。贪心算法是一种对某些求最优解问题的更简单、更迅速的设计技术。贪心算法的特点是一步一步地进行,常以当前情况为基础根据某个优化测度作最优选择,而不

2021-08-25 13:13:40 361

原创 二分查找算法

二分查找属于递归查找的一种,其主要思想是将一个有序数组,分为二分,进行递归,反复为之。注意:二分查找法只适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再进行查找二分查找法的运行时间为对数时间O(log2 n) ,即查找到需要的目标位置最多只需要log2 n步,假设从[0.99]的队列(100个数,即n-100)中寻到目标数30,则需要查找步数为log2 100,即最多需要查找7次(2~6< 100<2^7)算法思想我们需要一个有序数组,查找的值为3进行对分,查找

2021-08-10 09:11:26 4552

原创 数据结构入门进阶必学-图的遍历

图介绍图的抽象数据结构边列表邻接列表邻接图领结矩阵图的遍历深度优先遍历思想深度优先遍历算法步骤图的广度优先搜索(Broad First Search)广度优先遍历算法步骤介绍在计算机科学中,一个图就是一些顶点的集合,这些顶点通过一系列边结对(连接)。顶点用圆圈表示,边就是这些圆圈之间的连线。顶点之间通过边连接。顶点:图可以有零个或者多个元素(节点)边:每个相邻元素之间被称为边或者圆弧,定义:图(Graph)是由顶点的有穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,

2021-08-08 21:36:26 348 2

原创 【Bug】Uni-app自定义组件onReady(),v-if 渲染组件元素,无法获得

解决方案: v-if 改为v-show v-if 会移除元素的,当然获取不到,v-show只是display:nonevalidateFunction 自定义校验规则使用说明uni-forms 的 rules 基础规则有时候不能满足项目的所有使用场景,这时候可以使用 validateFunction 来自定义校验规则validateFunction 方法返回四个参数 validateFunction:function(rule,value,data,callback){} ,当然返回参数名开发者可

2021-08-04 15:44:41 1556

原创 堆排序图解超细

堆排序一、堆排序的基本介绍二、 堆的存储三、排序一、堆排序的基本介绍1)堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间- 复杂度均为O(nlogn),它也是不稳定排序。2)堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆,注意:没有要求结点的左孩子的值和右孩子的值的大小关系。3)每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆二、 堆的存储一般用数组来表示堆,下标为 i 的结点的父结点下标为(i-1)

2021-08-03 14:47:15 457 1

原创 函数式编程 + 接口+泛型 实现通用 树状数组(项目必备)

废话不多说了,具体实现原来直接上博主的以往博客代码地址: https://gitee.com/baichen9187/treeUtil。

2021-07-30 17:08:09 188

原创 函数式编程(函数式接口)详解

函数式编程介绍一、函数式编程本质二、函数式编程的特点一、函数是第一等公民二、函数是纯函数(只用"表达式",不用"语句")三、没有"副作用"四、引用透明性五、接近自然语言,易于理解六、 易于"并发编程"三、函数式编程的实际应用一、lambda表达式二、实际应用三、基本运算一)、函数合成(compose)二)、柯里化用途函数作为返回值输出函数式编程的递归和迭代介绍而函数式编程和声明式编程是有所关联的,因为他们思想是一致的:即只关注做什么而不是怎么做。但函数式编程不仅仅局限于声明式编程。函数式编程是面向数学

2021-07-27 17:01:29 2245 1

原创 mybatis笔记--配置文件和映射文件详解

Mybatis的配置文件和映射文件详解mybatisd官方文档一、Mybatis的全局配置文件SqlMapConfig.xml(名称可变)是mybatis的全局配置文件,配置内容如下:properties(属性)settings(全局配置参数)typeAliases(类型别名)typeHandlers(类型处理器)objectFactory(对象工厂)plugins(插件)environments(环境集合属性对象)environment(环境子属性对象)transaction

2021-07-24 12:29:39 2767 4

原创 二叉排序树

定义一棵空树,或者是具有下列性质的二叉树:(1)若左子树不空,则左子树上所有结点的值均小于它的根结点的值;(2)若右子树不空,则右子树上所有结点的值均大于或等于它的根结点的值;(3)左、右子树也分别为二叉排序树;特点树的结构通常不是一次生成的,而是在查找过程中,当树中不存在 关键字 等于给定值的 结点 时再进行插入。 新插入的结点一定是一个新添加的 叶子结点 ,并且是查找不成功时查找路径上访问的最后一个结点的左孩子或右孩子结点。 首先执行查找算法,找出被插结点的父亲结点。 判断被插结点是其父亲.

2021-07-23 10:26:43 471

原创 赫夫曼树(最优二叉树)

给定n个权值作为n个叶子结点,构造一棵二叉树,若该树的带权路径长度(wpl)达到最小,称这样的二叉树为最优二叉树,也称为哈夫曼树(Huffman Tree),还有的书翻译为霍夫曼树。赫夫曼树是带权路径长度最短的树,权值较大的结点离根较近术语路径和路径长度:在一棵树中,从一个结点往下可以达到的孩子或孙子结点之间的通路,称为路径。通路更多中分支的数目称为路径长度。若规定根结点的层数为1,则从根结点到第L层结点的路径长度为L-12)结点的权及带权路径长度:若将树中结点赋给一个有着某种含义的数值,则这.

2021-07-17 21:30:00 363

原创 二叉树的遍历,顺序存储,线索化

定义二叉树(Binary tree)是树形结构的一个重要类型。许多实际问题抽象出来的数据结构往往是二叉树形式,即使是一般的树也能简单地转换为二叉树,而且二叉树的存储结构及其算法都较为简单,因此二叉树显得特别重要。二叉树特点是每个结点最多只能有两棵子树,且有左右之分 。结论:前序:先根,再左,再右中序:先在,再根,再右后序:先在,再右,再根遍历前序 public void preOrder() { System.out.println(this.name); //递归向左子树前

2021-07-17 21:17:06 316

原创 数据结构和算法之回溯算法

简介每当我们遇到一个问题时,首先思考问题的类型,在根据已有知识去思考逻辑过程,切记不能一来就上代码回溯法(back tracking)(探索与回溯法)是一种选优搜索法,又称为试探法,按选优条件向前搜索,以达到目标。但当探索到某一步时,发现原先选择并不优或达不到目标,就退回一步重新选择,这种走不通就退回再走的技术为回溯法,而满足回溯条件的某个状态的点称为“回溯点”。用回溯算法解决问题的一般步骤:1、 针对所给问题,定义问题的解空间,它至少包含问题的一个(最优)解。2 、确定易于搜索的解空间结构,

2021-07-03 23:38:12 232

原创 小白笔记之栈,实现简单表达式计算

栈百度解释栈(stack)又名堆栈,它是一种运算受限的线性表。限定仅在表尾进行插入和删除操作的线性表。这一端被称为栈顶,相对地,把另一端称为栈底。向一个栈插入新元素又称作进栈、入栈或压栈,它是把新元素放到栈顶元素的上面,使之成为新的栈顶元素;从一个栈删除元素又称作出栈或退栈,它是把栈顶元素删除掉,使其相邻的元素成为新的栈顶元素。代码实现栈stackpackage com.dataSructure.list.stack;public class ArrayStack { private

2021-06-26 13:38:45 90

data-structure-and-algorithm.zip

常用数据结构和算法,博客内容代码

2021-09-07

接口+泛型+函数式编程案例

接口+泛型+函数式编程案例

2021-08-03

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

TA关注的人

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