自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(252)
  • 资源 (10)
  • 收藏
  • 关注

原创 开源大语言模型(LLM)汇总(持续更新中)

随着ChatGPT的火爆,越来越多人希望在本地运行一个大语言模型。为此我维护了这个开源大语言模型汇总,跟踪每天不发的大语言模型和精调语言模型。我将根据个模型采用的基础大模型进行分类,每个大模型下列出各派生模型。

2024-04-05 16:32:35 1627 1

原创 前端学习之路(6) npm详解

首先在一个空的文件夹下使用 npm init 初始化生成一个 package.json 文件,打开对里面的内容进行添加,如:下载 jQuery 和 bootstrap 的包文件使用命令进行安装即可。这个命令会识别刚刚自定义中需要安装的文件可以简写 为npm i。

2024-02-08 20:08:26 1457

原创 Android学习之路(29) Gradle初探

大家回想一下自己第一次接触Gradle是什么时候?,以及在gradle文件中各种配置, 这些都是啥wy啊。。特别对于一些小公司开发人员,因为接触架构层面的机会很少,可能在使用AS几年后都不一定对Gradle有太多深入了解,这是实话,因为笔者就是这么过来的。。而Gradle又是进阶高级开发的必经之路。好了,接下来进入正题,此系列笔者会由浅入深的方式,带领大家来了解下,Gradle背后究竟有哪些奥秘。本系列文章:Gradle筑基篇(一)-Gradle初探。

2024-02-03 20:43:48 1283

原创 Android学习之路(28) 进程保活组件的封装

远古时代,出现过很多黑科技,比如MarsDaemon,使用双进程守护的方式进行保活,在当时可谓风光无限,可惜在8.0时代到来就被废弃了。又比如后面出现的1像素Activity的保活方式,说他流氓一点不过分,如果每个人都使用这些操作,因为功耗的大大增加,会直接影响到手机使用寿命。因此各大手机厂商为了解决这一现象的发生,在系统层面对这些流氓行为做出了限制:后台进程即使你是要黑科技让进程优先级很高,也可能被杀死,所以我宁愿称是应用的求生而不是保活。

2024-02-03 20:27:55 1381

原创 Android学习之路(27) ProGuard,混淆,R8优化

使用java编写的源代码编译后生成了对于的class文件,但是class文件是一个非常标准的文件,市面上很多软件都可以对class文件进行反编译,为了我们app的安全性,就需要使用到Android代码混淆这一功能。针对 Java 的混淆,ProGuard就是常用的混淆工具,且他不仅仅是混淆工具,它同时可以对代码进行压缩优化混淆。下面我们来简单介绍下ProGuard工作流程。ProGuard 工作流程shrinkoptimizeobfuscatepreverigy。这四个步骤都是可选,但是顺序都是不变的。

2024-02-03 18:01:32 1336

原创 Android学习之路(26) ARouter APT技术详解

步骤然后在需要的地方加上注解就可以了。java复制代码本文在开始主要讲解一些注解和注解处理器的前置知识,且带大家自己实现了一个APT自动生成文件的demo,最后讲解下在ARouter中APT是如何再编译器动态生成几种帮助类的。

2024-02-03 17:56:32 1386

原创 前端学习之路(5) vue样式穿透

vue的style中设置scoped属性后,组件实现样式私有化。但是该组件又使用的其他组件库时(vant,elementui,自定义等),该组件的style中的样式,优先级低,不生效,这个时候需要使用样式穿透(作用得更深)。

2024-02-03 17:32:58 605

原创 前端学习之路(4) vue2和vue3的区别

作用域插槽:父组件模板的所有东西都会在父级作用域内编译;被激活:onActivated 被包含在中的组件,会多出两个生命周期钩子函数。切换:onDeactivated 比如从 A 组件,切换到 B 组件,A 组件消失时执行。销毁前:beforeDestroy -> onBeforeUnmount。更新前:beforeUpdate -> onBeforeUpdate。挂载前:beforeMount -> onBeforeMount。创建前:beforeCreate -> 使用setup()

2024-02-03 17:25:01 1102

原创 前端学习之路(3) JavaScript中的代理(Proxy)与反射(Reflect)

JavaScript中的Proxy与Reflect是ES6中引入的新特性,它们可以帮助我们更高效地控制对象。代理(Proxy)是一种设计模式,它允许我们在访问对象的同时,添加一些额外的操作。代理对象与被代理对象实现相同的接口,代理对象会接受并处理所有对被代理对象的访问请求。代理是对象通过一个代理对象来控制对原对象的读取、设置、调用及其他操作,并对这些操作进行预处理或附加操作,主要用于拦截对象反射(Reflection)是指程序可以在运行时获取、操作、修改它本身的状态或行为。

2024-02-03 17:18:33 974

原创 前端学习之路(2) Vue3响应式模式设计原理

为什么要关系vue3的设计原理?了解vue3构建原理,将有助于开发者更快速上手Vue3;同时可以提高Vue调试技能,可以快速定位错误。

2024-02-03 16:58:53 628

原创 Android学习之路(25) Theme和Style

低级扩展方式为保持与平台界面样式的兼容性,您应始终通过扩展框架或支持库中的现有样式来创建自己的样式。如需扩展样式,请使用parent属性指定要扩展的样式。然后,您可以替换继承的样式属性并添加新属性。例如</style>推荐扩展方式当然上述做法其实并不规范,官方建议我们直接继承支持库中的样式(已定义好相关的style)。不过,您应始终继承 Android 支持库中的核心应用样式。为与 Android 4.0(API 级别 14)及更高版本兼容,支持库中的样式会针对各版本中可用的界面属性进行优化。

2024-01-28 21:03:18 1233

原创 Android学习之路(24) ARouter原理解析

本文先介绍了ARouter使用过程中 的一些基本概念,理解了这些概念后,我们再从使用步骤触发,对每个使用节点进行了介绍。最后使用一张图总结了整个使用原理过程1.ARouter帮助类是如何生成的,这里使用到了APT注解处理器的技术 关于APT我们会在下一章:Android开源系列-组件化框架Arouter-(三)APT技术详解这里还有个有趣的现象,我们在调用路由表加载的时候: 使用了加载,但是查看里面代码:java复制代码居然是空的。。java复制代码可以看到这里使用了。

2024-01-21 20:56:10 1469

原创 Android学习之路(23)组件化框架ARouter的使用

, 默认通过扫描 dex 的方式 进行加载通过 gradle 插件进行自动注册可以缩短初始化时间解决应用加固导致无法直接访问 dex 文件,初始化失败的问题,需要注意的是,该插件必须搭配 api 1.3.0 以上版本使用!动态注册路由信息 适用于部分插件化架构的App以及需要动态注册路由信息的场景,可以通过 ARouter 提供的接口实现动态注册 路由信息,目标页面和服务可以不标注 @Route 注解,可选使用,通过 ARouter 提供的注册插件进行路由表的自动加载(power by。

2024-01-21 20:37:09 1164

原创 Android学习之路(22) 从模块化到组件化

在 Project 层级的 build.gradle 中 , 使用 apply from: “component.gradle” , 引入 component.gradle 配置;// 将 component.gradle 配置文件中的内容导入到该位置// 相当于引入头文件apply from 相当于引入头文件 , 将 component.gradle 配置文件中的所有内容 , 原封不动的拷贝到该语句所在位置;

2024-01-21 19:59:36 1480

原创 Android学习之路(21) 进程间通信-AIDL与Servce基本使用

Service的生命周期图!【Android】跨进程通信——AIDL、之Service基本细节使用之:精通。

2023-10-22 21:03:12 763

原创 Android学习之路(20) 进程间通信

1.为什么使用Binder?性能方面:在移动设备上(性能受限制的设备,比如要省电),广泛地使用跨进程通信对通信机制的性能有严格的要求,Binder相对于传统的Socket方式,更加高效。Binder数据拷贝只需要一次,而管道、消息队列、Socket都需要2次,共享内存方式一次内存拷贝都不需要,但实现方式又比较复杂。

2023-10-04 21:36:33 711 1

原创 Android学习之路(19) ListView详解

在Android开发中,ListView是一个比较常用的控件。它以列表的形式 展示具体数据内容,并且能够根据数据的长度自适应屏幕显示。代码部分1.布局界面 activity_main.xml 代码:2.类文件 MainActivity.java 代码:代码解析1.ArrayAdapter适配器2.点击事件响应只能显示一段文本的listview太单调了,我们现在就来对listview的界面进行定制,让其丰富内容。代码部分1.布局界面 activity_main.xml 代码:2.类文件 MainAct

2023-10-03 17:04:11 1835

原创 Android学习之路(18) 数据存储与访问

1)MD5是什么鬼?答:Message Digest Algorithm MD5(中文名为消息摘要算法第五版)为计算机安全领域广泛 使用的一种散列函数,用以提供消息的完整性保护——摘自《百度百科》 简单点说就是一种加密算法,可以将一个字符串,或者文件,压缩包,执行MD5加密后, 就可以生产一个固定长度为128bit的串!这个串基本唯一!另外我们都知道:一个十六进制 需要用4个bit来表示,那么对应的MD5的字符串长度就为:128 / 4 = 32位了!

2023-10-03 15:45:16 983

原创 Android学习之路(17) Android Adapter详解

如题,本节给大家带来的是构建一个可复用的自定义BaseAdapter,我们每每涉及到ListView GridView等其他的Adapter控件,都需要自己另外写一个BaseAdapter类,这样显得非常麻烦, 又比如,我们想在一个界面显示两个ListView的话,我们也是需要些两个BaseAdapter… 这,程序员都是喜欢偷懒的哈,这节我们就来写一个可复用的自定义BaseAdapter类~

2023-10-01 20:59:22 1069

原创 Android学习之路(16) Android 数据库Litepal

LitePal关系型数据库用起来还是很简单明了的,如果你对文章有什么疑惑或者指正,欢迎评论区留言!

2023-10-01 15:46:47 550

原创 前端学习之路(1) Vue3核心源码解析源码目录结构

通过软件框架阅读源码可以对框架本身运行机制进行学习,更能了解框架的API设计、原理及流程、设计思路;我们要知其然,更知其所以然。Vue 3的源码相对于Vue 2版本有了较大程度的改变,采用Monorepo规范的目录结构,同时使用TypeScript作为开发语言(vue2在2022年4月底也更换TypeScript为开发语言 ),并添加了很多新的特性和优化。

2023-10-01 09:52:21 480

原创 JS defineProperty详解

Object.defineProperty():方法会在对象上直接定义个新的属性,或者修改现有的属性,并返回此对象。configurable:true|false 默认为false当值为true时属性可以被删除。writable:true|false 默认为false 当值为true时属性可以被修改。enumerable:true|false 该属性为true对象就可以枚举属性影响的有。object.keys 返回自身所有可枚举的属性的键名。in 遍历自身属性和可枚举的属性。

2023-10-01 09:21:52 265

原创 Vue3 reactive和ref详解

在大家使用vue3编写组件的时候,通常会把数据暴露到模板中使用:在我们修改响应式数据的值时,不会触发重新渲染再点击按钮之后,从控制台中可以看出数据已经改变,但是页面文字并没有做出相应的改变。因为扩展运算符(...)导致,响应式对象变成了一个普通对象。把一个普通对象暴露到模板中使用,是不会在渲染函数与响应式数据之间建立响应式联系的。return {...obj//等价于return {bar:'vue3'能否在副作用函数中,即使通过普通对象来访问属性值也能够建立响应式联系?

2023-10-01 09:09:47 1838

原创 Vue3父子组件数据传递

Vue2中,可以通过this来获取当前组件实例;Vue3中,在setup中无法通过this获取组件实例,console.log(this)打印出来的值是undefined。在Vue3中,getCurrentInstance()可以用来获取当前组件实例。可以看到,getCurrentInstance是一个function方法,getCurrentInstance()是一个对象,proxy也是一个对象。

2023-09-30 23:34:37 594

原创 CSRF攻击原理详解

CSRF定义: 跨站请求伪造(英语:Cross-site request forgery)是一种对网站的恶意利用,也被称为 one-click attack 或者 session riding,通常缩写为 CSRF 或者 XSRF, 是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。CSRF跨站点请求伪造(Cross—Site Request Forgery) 跟XSS攻击一样,存在巨大的危害性。

2023-09-17 09:34:38 246

原创 sessionStorage 、localStorage 和 cookie 之间的区别

都是保存在浏览器端,且同源的。

2023-09-17 09:15:18 97

原创 Android学习之路(15) AMS与PMS详解

我们从系统启动 init 进程开始分析到 Zygote 进程创建、SystemServer 进程创建,大致的将整体流程进行了梳理。init 进程是系统内核启动后第二个启动的进程,该进程在用户空间。init 进程启动后会解析 init.rc 执行脚本启动 Zygote 进程和 ServiceManager 进程。Zygote 因为是由 init 进程启动的,所以它也是在用户空间。Zygote 的业务处理横跨 native 层和 java 层。startVm() 创建虚拟机。

2023-09-10 21:57:23 821

原创 Android学习之路(13) Handler详解

普通的线程是没有looper的,如果需要looper对象,那么必须要先调用Looper.prepare方法,而且一个线程只能有一个looperHandler是如何完成跨线程通信的?Android中采用的是Linux中的 管道通信关于管道,简单来说,管道就是一个文件在管道的两端,分别是两个打开文件文件描述符,这两个打开文件描述符都是对应同一个文件,其中一个是用来读的,别一个是用来写的消息队列创建时调用JNI函数,初始化NativeMessageQueue对象。

2023-09-03 09:45:24 2514

原创 Android学习之路(12) setContentView详解

setContentView我们在Activity中经常见到,它的作用就是把我们的布局文件放在Activity中显示,下面我们根据源码分析setContentView是如何做到的注意Activity的setContentView和AppCompatActivity的setContentView是有一些区别的,所以我们要分析两钟setContentView,下面先分析Activity的(1).从Activity的setContentView这个方法开始可以看到第一句getWindow().setConten

2023-08-27 18:23:23 1466

原创 Android学习之路(11) ActionBar与ToolBar的使用

那找找为啥ActionBar的时候对的,直觉告诉我是theme的问题,于是找Theme.AppCompat.Light.DarkActionBar,点击进去看会看到actionBarPopupThem是Light的,就是menu菜单点击弹出那个actionBarTheme是深色系的,那么控制按钮图标和主副标题颜色就是白色的

2023-08-27 17:43:56 1415

原创 Android学习之路(6) 其他UI控件

ImageView(图像视图)RadioButton(单选按钮)&Checkbox(复选框)开关按钮ToggleButton和开关SwitchProgressBar(进度条)SeekBar(拖动条)RatingBar(星级评分条)ScrollView(滚动条)

2023-08-27 16:34:03 713

原创 VUE3 Setup语法糖

通过defineProps指定当前 props 类型,获得上下文的props对象。</script>-- 或者 -->title: String, // 可以设置传来值的类型})</script>-- 或者 -->// 可以设置传来值的类型和默认值title: {})</script>-- 或者 -->title: [String,Number] // 可以设置传来值的多种类型})</script>-- 或者 --></script>

2023-08-26 08:42:53 351

原创 Android学习之路(10) Bundle

Bundle从字面上解释为“一捆、一批、一包”,结合上述几个应用场合,可以知道Bundle是用来传递数据的,我们暂将Bundle理解为Android中用来传递数据的一个容器。官方文档对Bundle的说明如下:Bundle实现了Parcelable接口,所以他可以方便的在不同进程间传输,这里要注意我们传输的数据必须能够被序列化。bundle的作用主要时用于传递数据;

2023-08-26 00:16:20 712

原创 美团外卖推荐关于用户新颖体验优化的技术探索

美团外卖推荐系统评估指标,长期以来主要包含效率指标(UV_CTR、UV_CXR、UV_RPM等)、生态指标(主题曝光占比、商品曝光占比、闪购曝光占比等)、用户体验指标(多样性)等多个方面。但是要优化新颖体验,必须要有科学合理、策略可干预的新颖性指标,而这又依赖于“新颖”的定义。首先,我们要回答“对用户来说,什么是新颖的”。外卖首页Feed,承载了商家、商品、主题卡片等多种异构流量的分发,其中用户看到的卡片90%左右都是商家卡片,为此,我们认为用户新颖性意味着其看到的商家是否新颖。如何判断一个商家是否新颖。

2023-08-25 20:22:41 87

原创 Android学习之路(9) Intent

Intent 是一个消息传递对象,您可以用来从其他应用组件请求操作。Activity 表示应用中的一个屏幕。通过将 Intent 传递给 startActivity(),您可以启动新的 Activity 实例。Intent 用于描述要启动的 Activity,并携带任何必要的数据。如果您希望在 Activity 完成后收到结果,请调用 startActivityForResult()。

2023-08-23 00:13:26 446

原创 Android学习之路(8) Activity

3.Activity的创建流程4.Activity,Window与View的关系5.Activity,Task和Back Stack的一些概念欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入Markdown。

2023-08-20 22:34:23 1176

原创 Android学习之路(7) Frament

Fragment 表示应用界面中可重复使用的一部分。fragment 定义和管理自己的布局,具有自己的生命周期,并且可以处理自己的输入事件。fragment 不能独立存在。它们必须由 activity 或其他 fragment 托管。fragment 的视图层次结构会成为宿主的视图层次结构的一部分,或附加到宿主的视图层次结构。

2023-08-20 21:46:28 740

原创 Pinia基础教程

Pinia 起始于 2019 年 11 月左右的一次实验,其目的是设计一个拥有组合式 API 的 Vue 状态管理库。从那时起,我们就倾向于同时支持 Vue 2 和 Vue 3,并且不强制要求开发者使用组合式 API,我们的初心至今没有改变。除了安装和 SSR 两章之外,其余章节中提到的 API 均支持 Vue 2 和 Vue 3。虽然本文档主要是面向 Vue 3 的用户,但在必要时会标注出 Vue 2 的内容,因此 Vue 2 和 Vue 3 的用户都可以阅读本文档。

2023-08-20 14:27:22 867

原创 Android学习之路(5) UI控件之Button (按钮)与 ImageButton (图像按钮)

StateListDrawable是Drawable资源的一种,可以根据不同的状态,设置不同的图片效果,关键节点 < selector >,我们只需要将Button的background属性设置为该drawable资源即可轻松实现,按下 按钮时不同的按钮颜色或背景!drawable:引用的Drawable位图,我们可以把他放到最前面,就表示组件的正常状态~state_focused:是否获得焦点state_window_focused:是否获得窗口焦点state_enabled:控件是否可用。

2023-08-15 23:53:30 966

原创 Android学习之路(4) UI控件之输入框

本节引言:在本节中,我们来学习第二个很常用的控件EditText(输入框);可以接受用户输入!

2023-08-14 00:08:18 598

uncased_L-2_H-128_A-2.zip

bert tiny We have shown that the standard BERT recipe (including model architecture and training objective) is effective on a wide range of model sizes, beyond BERT-Base and BERT-Large. The smaller BERT models are intended for environments with restricted computational resources.

2020-11-18

SipMask_R_101_ms_3模型

SipMask-benchmark (image instance segmentation) R101 模型

2020-08-16

mspn人体姿态检测算法模型

CVPR 2019 | Rethinking on Multi-Stage Networks for Human Pose Estimation CVPR 2019 | MSPN 重新思考多阶段人体姿态估计网络模型资源 没有coco数据

2020-08-16

sipmask_r50_caffe_fpn_ssd_gn_10x.pth

sigmask算法pytorch模型,https://arxiv.org/pdf/2007.14772.pdf,论文名称:SipMask: Spatial Information Preservation for Fast Image and Video Instance Segmentation (ECCV2020)

2020-08-02

sipmask_r50_caffe_fpn_gn_ms_1x.pth

sigmask算法pytorch模型,https://arxiv.org/pdf/2007.14772.pdf,论文名称:SipMask: Spatial Information Preservation for Fast Image and Video Instance Segmentation (ECCV2020)

2020-08-02

corejava.rar

java核心技术,原书第十版,上线两册代码,经过整理。

2019-06-25

Java核心技术.zip

java核心技术卷1和卷2,原书第十版,高清版,带书签。

2019-06-05

documents.zip

Elasticsearch in Action 全文检索(英文版),Elasticsearch 权威指南(中文版)

2019-06-05

JAVA加密和解密的艺术(第二版).zip

JAVA加密和解密的艺术(第二版),以及源代码,PDF保证绝对是第二版,骗人是小狗!

2019-06-05

openbilibili-go-common-master

B站后台代码,go语言编写,分享给需要的人,本代码仅用于学习用途,禁止商业应用。

2019-04-28

空空如也

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

TA关注的人

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