- 博客(65)
- 收藏
- 关注
原创 Android事件分发机制源码解析
/ 先检验事件是否需要被ViewGroup拦截= null) {// 校验是否给mGroupFlags设置了FLAG_DISALLOW_INTERCEPT标志位= 0;if (!// 走onInterceptTouchEvent判断是否拦截事件} else {} else {= 0;if (!// 注意ACTION_DOWN等事件才会走遍历所有子View的流程// 开始遍历所有子View开始逐个分发事件= 0) {i >= 0;i–) {
2025-02-06 14:56:57
902
原创 Android 使用 Kotlin 重写 Gradle 文件
google()jcenter()google()jcenter()改造后的代码如下所示:google()jcenter()google()jcenter()tasks {在 Groovy 中,我们有一个 ext 的扩展,但是在 Kotlin 中是没有的,所以我们只能自己先声明一个局部变量,然后通过字符串模板引入,还有就是 classpath 引入的全局依赖,我们是要用大括号括起来,还有一个 clean 的任务,这个也是需要改写的。
2025-02-06 12:02:39
1258
原创 android 之绘图
/ 这里注意,坐标(180,180)是文本的左下点坐标。// 正数代表的正方向,x轴为平面的右侧,y轴为平面的下方,相应的,负数则向反方向平移。// 参数分别是在想x,y轴上放大或缩小的倍数,大雨1为放大,小于1为缩小,// canvas.drawARGB(0, 0, 0, 0);* scale 是缩放的比例, 1 是不变, 2 是表示缩放 1/2 ,// 缩放的原点默认为画布的原点(0,0),也可以指定缩放的原点。
2025-02-06 12:00:54
851
原创 ajax&json-w3school(2020
PHP 文件解释:·将请求转换为对象,使用 PHP 函数 json_decode()。·访问数据库,用所请求的数据填充数组。·把数组添加到对象,使用 json_encode() 函数以 JSON 返回该对象。php?4.存储数据在存储数据时,数据必须是某种具体的格式,并且无论您选择在何处存储它,文本永远是合法格式之一。JSON 让 JavaScript 对象存储为文本成为可能。
2025-02-06 00:08:16
854
原创 AI遮天传 ML-决策树(二)_怪物ai决策树
ID3(Iterative Dichotomiser 3)由 Ross Quinlan 在1986年提出。该算法创建一个多路树,找到每个节点(即以贪心的方式)分类特征,这将产生分类目标的最大信息增益。决策树发展到其最大尺寸,然后通常利用剪枝来提高树对未知数据的泛华能力。C4.5 是 ID3 的后继者,并且通过动态定义将连续属性值分割成一组离散间隔的离散属性(基于数字变量),消除了特征必须被明确分类的限制。C4.5 将训练的树(即,ID3算法的输出)转换成 if-then 规则的集合。
2025-02-06 00:06:33
994
原创 给大伙来梳理下Java中的各种锁的分类
总是假设最坏的情况,每次去拿数据的时候都认为别人会修改,所以每次在拿数据的时候都会上锁,这样别人想拿这个数据就会阻塞直到它拿到锁。比如Java里面的同步原语synchronized关键字的实现就是悲观锁。悲观锁适合写操作非常多的场景,保证数据的安全。二、独享锁/共享锁独享锁是指该锁一次只能被一个线程所持有。共享锁是指该锁可被多个线程所持有。
2025-01-29 17:58:17
572
原创 给前端工程师看的后端科普
简介前端工程师了解后端的功能和作用之后,能更好的和后端工程师进行沟通,减少沟通成本,另外也有助于向全栈工程师方向发展。在开始之前,先回顾一下应用的构成:应用的构成一个完整的应用通常包括前端和后端两个部分。前端是直接与用户打交道的部分,通常指的是网页,采用 HTML/CSS/JS 语言编写,运行在用户自己电脑的浏览器上。后端则是运行在远程的服务器上,用来收集和处理用户传来的数据,然后把结果再传给前端,展现给用户。前后端分离的演化。
2025-01-29 17:56:11
333
原创 如何自学Python?一文讲清楚_如何自学phython
作为996社畜,应该如何自学Python?今天就给大家分享一下,工作之余,应该如何学习Python?
2025-01-29 01:13:50
294
原创 如何系统的学习Java
那么我建议你先把设计模式学习停一下,先把Java的基础知识补充下,至少要学完《Java核心技术》第六章,也就是掌握完整的现象对象的概念。这个学习计划是一个长期的,深入的学习计划。其次就是在掌握核心概念的基础上,掌握这些开源软件的Java API,然后试着在此基础上,编写典型的Demo,从而在Java语言层面上彻底掌握。在完成第一阶段的学习之后,完全看工作的需要,以及个人的兴趣,安排学习的优先级。这样,在你学习Java的过程中,顺便也把Linux学习了,这远比你将来单独学习Linux要有趣,印象要深刻。
2025-01-29 01:11:46
850
原创 作为前端,工作中处理过什么复杂的需求?
灰度方案其实相对是比较难做的,最简单的是按照机器灰度,但这种方案在实际环境中基本上是不可用的,对于一个需求来说,如果同时修改了老页面和新页面,会导致用户前后访问不一,甚至出现404情况。,在超高的访问量下,可以预计所有的平台基本上都会挂,而脚本监控对于前端来说是非常重要的,三套系统的降级方案保证了我们在外网出问题的时候第一时间定位到问题所在,快速响应bug。Thanos方案是我核心主导的,它解决的是发布链路的问题,对于大公司而言,发布除了CI/CD之外,还有一些其他的额外流程保障,形成发布闭环。
2025-01-28 15:36:08
913
原创 作为前端,你有必要了解这些网站攻击技术
XSS攻击的核心是将可执行的前端脚本代码(一般为JavaScript)植入到网页中,听起来比较拗口,用大白话说就是攻击者想让你的浏览器执行他写的JS代码。那如何办到呢?
2025-01-28 15:34:04
441
原创 SpringBoot源码核心源码讲解
加载配置在spring.factories文件中的ApplicationContextInitializer中的类型并实例化后存储在了initializers中。// 反推main方法所在的Class对象 并记录在了mainApplicationClass对象中。和2的步骤差不多,完成监听器的初始化操作,并将实例化的监听器对象存储在了listeners成员变量中。// 创建了一个SpringApplication对象,并调用其run方法。// 调用重载的run方法,将传递的Class对象封装为了一个数组。
2025-01-28 06:59:19
819
原创 SpringBoot源码学习系列之嵌入式Servlet容器
从自动配置类里,我们并不能很明确地理解自动配置是怎么运行的,只看重关键的一些信息点,比如注册了Tomcat的ServletWebServer工厂的定制器类,方法是tomcatServletWebServerFactoryCustomizer,还有一个后置处理类BeanPostProcessorsRegistrar,后置处理是Spring源码里是很关键的,所以这里可以继续点一下TomcatServletWebServerFactoryCustomizer,Tomcat的webServer工厂定制器类。
2025-01-28 06:57:16
429
原创 Python 开发者的 10 大编程开发环境(IDE),第一款是我的最爱
PyCharm 由捷克公司 JetBrains 开发,是一个特定于 Python 的 IDE,是一个跨平台的 IDE。Atom 是一个使用 Web 技术构建的开源免费 IDE,Atom 基于由 GitHub 构建的 Electron 框架,而后者又是用 CoffeeScript 和 Less 编写的。Eric 是用 Python 编写的,是免费软件,它的源代码是免费提供的,任何人都可以研究和重新创建。它提供两个版本供下载,免费的社区版和付费的专业版,一般情况下社区版的功能完全够用。
2025-01-27 20:55:00
958
原创 Python 实现二叉树前序,中序,后序,层次遍历
if tree_node.l_child is None:tree_node.l_child = nodeself.queue.append(tree_node.l_child)else:tree_node.r_child = nodeself.queue.append(tree_node.r_child)self.queue.pop(0)def front_recursion(self, root):“”“利用递归实现树的前序遍历”“”if root is None:returnprint root.el
2025-01-27 20:52:57
478
原创 Java输入输出流:FileInputStream、FileOutputStream与缓冲流操作 第一篇
这些流类的设计遵循了面向对象的封装原则,提供了高度抽象的接口,使得开发者能够以统一的方式处理各类I/O操作,极大地简化了编程复杂度。通过以上内容的学习,读者不仅能掌握FileInputStream和FileOutputStream的基本用法,还能理解它们背后的工作机制,知晓何时以及如何借助缓冲流提升文件操作性能,从而在实际项目中更加高效、稳健地进行文件读写操作。类是Java I/O体系中与文件和目录操作密切相关的类,它提供了丰富的静态方法和实例方法,用于处理文件路径、查询文件属性、执行目录操作等任务。
2025-01-24 19:13:08
506
原创 java全栈系列之JavaSE--顺序结构与if条件判断014
System.out.print(“请输入你的名字:”);System.out.print(“请输入你的年龄:”);System.out.print(“请输入你的成绩:”);System.out.println(“输出001”);System.out.println(“输出002”);System.out.println(“输出003”);System.out.println(“输出004”);System.out.println(“输出005”);System.out.println(“输出6”);
2025-01-24 17:48:35
379
原创 JavaScript学习笔记(十二)Bom对象详解_学习html中js的bom收货
【代码】JavaScript学习笔记(十二)Bom对象详解_学习html中js的bom收货。
2025-01-24 17:06:37
819
原创 HTML5 CSS3 专题 :诱人的实例 3D旋转木马效果相册
另一个值接受一个长度单位大于0的值。值越大,角度出现的越远,从而创建一个相当低的强度和非常小的3D空间变化。反之,此值越小,角度出现的越近,从而创建一个高强度的角度和一个大型3D变化。假设设置了perspective:300px时,设置translateZ的值越小则子元素大小越小,当设置值接近300px时,则仿佛此元素在面前,当超过300px以后,则以前到达你视野的后面,该元素就不可见了。2、然后为每个图片的容器设置translateZ,所有图片会从对应的角度向外移动,扩展成一个大圆,即上图效果。
2025-01-24 15:30:25
2068
原创 Gradle构建流程-Android
在这个阶段,Gradle会加载所有参与本次构建项目下的build.gradle文件,解析所有project对象中的task,分析project之间依赖关系生成拓扑图TaskGraph。由于多项目配置中,可能存在大量无需配置的项目,如果需要配置所有项目后才执行任务则会浪费大量的时间。这些目录是根项目目录的兄弟目录,并作为多项目树中根项目的子项目。按需配置项目时,Gradle只配置与最终任务相关联的项目,以缩短构建时间。,一个项目的配置可能会依赖其他项目,所以在执行任务之前,需要配置所有的项目。
2025-01-24 11:05:07
520
原创 Docker容器启动时初始化MySQL数据库
我们编写自己的Dockerfile来实现我们的需求,这里以 Mysql:5.7 为例。不同的版本可能有一定的出入,需要详细去阅读官方文档。脚本如下:第一步,引入官方 Mysql:5.7 Docker镜像。第二步,无实际意义,主要是作者、组织信息。第三步,很重要!本来我没有配置第三行,结果运行容器后发现初始化数据的中文全部乱码了。所以需要在初始化数据库前修改Mysql的编码等配置,这里我顺便把时区也改为了+8:00。第四步,复制包含数据库脚本的 ./sql文件夹到镜像的/tmp/sql下。
2025-01-24 09:03:40
797
原创 Android使用ViewPager实现图片轮播系列之二:自动轮播
*** 此处如果设置 currentItem % imageViewList.size() 能够让其不间断轮播。// 将图片放到集合中。
2025-01-24 05:00:04
364
原创 AJAX学习笔记(四、请求与响应)
如需获得来自服务器的响应,需要使用 XMLHttpRequest 对象的 responseText 或 responseXML 属性。4、服务器将XML数据或JSON数据发送到XMLHttpRequest回调函数。| open(method,url,async) | 规定请求的类型、URL 以及是否异步处理请求。| responseXML | 获得 XML 形式的响应数据。| responseText | 获得字符串形式的响应数据。| send(string) | 将请求发送到服务器。
2025-01-24 03:07:12
629
原创 2021-12-24【编程谜题】【1
1.两数之和【题目】给定整数的一个数组,找出这样的两个数,它们的加和等于一个特定的目标数字(target)。twoSum函数应该返回两个数的索引,这两个数相加等于目标数字,其中indexl必须小于index2。请注意,返回的结果(index1和index2)不是基于0的。可以假设对每一个输入来说,都只有一个解决方案。【解析】最直观明了的解法是通过暴力搜索,使用两个嵌套的循环来遍历所有可能,时间复杂度为 O ( n ∗ n ) O(n*n) O(n∗n)。但是很明显,这不是出题者想看到的结果。
2025-01-24 00:37:19
876
原创 c++中内联函数那点事_c++ 内嵌函数
1.使用VisualStudio2015创建一个C++Win32控制台程序,点击项目->项目属性设置内联函数优化。从以上代码代码可以看出,在主函数中调用(call)了add函数。3.调试->窗口->反汇编,然后就能看到编译后的汇编程序。2.编写内联函数代码,设置断点,debug启动。
2025-01-20 15:58:45
112
原创 Apifox-比postman更优秀的接口自动化测试平台_接口自动化平台
前端开发Mock数据的时候又要去RAP定义一遍,还需要手动设置Mock规则。测试人员需要去JMeter再定义一遍。前端根据RAPMock出来的数据开发完,后端根据Swagger定义的接口文档开发完,各自都试测试通过了,本以为可以马上上线,结果一对接发现各种问题:开发过程中接口变更了,只修改了Swagger,但是没有及时同步修改RAP。后端开发的接口数据类型和文档不一致,肉眼难以发现问题。同样,测试在JMeter写好的测试用例,真正运行的时候也会发现各种不一致。
2025-01-20 15:23:37
816
原创 Android设计模式——工厂模式和抽象工厂模式
解决了(我就不写这个模式了,懒癌犯了),工厂方法模式简单说就是解决产品过多的问题,就是创建不同的苹果工厂继承Factory,我举得例子里只是创建了一个苹果工厂,在这一个苹果工厂里判断是生成哪个产品。但如果创建了不同的苹果工厂,那就不用进行逻辑判断了,当新增产品时,不需要修改代码,直接新增一个产品的工厂就好,符合面向对象编程的开放封闭原则。4,最后就是使用了,创建一个工厂,工厂分别生产了红苹果和绿苹果,并调用了采摘苹果的方法。首先,红苹果和绿苹果都需要采摘,所以有个苹果的抽象类,并有采摘的抽象方法。
2025-01-20 14:55:32
215
原创 Android基础都没学好就去面试,这不是挖坑给自己跳吗?字节跳动三面凉凉经!
所以基础是根本!但是想要拿高薪实现技术提升薪水得到质的飞跃。最快捷的方式,就是有人可以带着你一起分析,这样学习起来最为高效,所以这里分享一套高手学习的源码和框架视频等精品Android架构师教程,保证你学了以后保证薪资上升一个台阶。(以下是一小部分,获取更多其他精讲进阶架构视频资料可以点击点击链接加入【Android高级架构师交流①Android开发核心知识点笔记②对标“阿里P7”40W+年薪企业资深架构师成长学习路线图③面试精品集锦汇总④全套体系化高级架构视频。
2025-01-20 14:09:56
647
原创 Android 天气APP(七)城市切换 之 城市数据源
name”:“黔西南布依族苗族自治州”,“name”:“克孜勒苏柯尔克孜自治州”,“name”:“恩施土家族苗族自治州”,“name”:“湘西土家族苗族自治州”,“name”:“黔东南苗族侗族自治州”,“name”:“黔南布依族苗族自治州”,“name”:“德宏傣族景颇族自治州”,“name”:“红河哈尼族彝族自治州”,“name”:“海西蒙古族藏族自治州”,“name”:“保亭黎族苗族自治县”,“name”:“琼中黎族苗族自治县”,“name”:“阿坝藏族羌族自治州”,
2025-01-20 13:13:52
574
原创 5个可以让你事半功倍的Python自动化脚本_python处理json到csv
有时候我们不希望自己制作的照片随意被别人盗用,所以想要在照片上添加上水印,下面的这几行代码倒是可以派上用场。主要是调用了Python当中的random和string模块来生成指定长度的密码。length=指定的密码的长度。
2025-01-20 11:46:36
257
原创 Python文件的操作处理,一看就会_python文件处理
mode:模式。buffering:可选参数,缓冲区大小encoding:文件编码类型。文本文件才有可能需要编码,二进制文件不需要指定编码否则会报出异常errors:编码错误处理方式。newline:控制通用换行符模式的行为。closefd:控制在关闭文件时是否彻底关闭文件。上述格式中,参数“mode”表示文件打开模式。在Python程序中,常用的文件打开模式如下表所示:二进制的方式(打开):图片,音频,视频或者其他的非文本的文件注意:“IO.png”文件中,以存入了一张照片。
2025-01-18 19:43:06
206
原创 Python数据类型——列表(list)
在前面,我们已经对Python学习做了系统的知识梳理(字符串和元组是不可变的,而列表是可变(mutable)的,可以对它进行随意修改。我们还可以将字符串和元组转换成一个列表,只需使用list函数,比如:list(s)list(a)[1,2,3]上节课我们讲解了,这节课分享另一个Python中重要的数据类型——列表:2基本操作。
2025-01-18 19:41:04
885
原创 Python分支学习
注意:用这个输出的是表达式,不支持语句,语句可以简单理解为带=赋值的表达式,但是这种紧凑形式是不支持这种带=的赋值形式,支支持表达式形式,也就是语句的一部分。print(“猜{}了”.format(“对”ifguess==99else“错”))好处:用非常简洁的代码来表示二分支结构,有点类似C的条件表达式好。num=eval(input("请输入一个整数:"))num=eval(input("请输入一个整数:"))print(“小老弟,你懂的”)print(“一共5次机会”)
2025-01-18 18:01:37
905
原创 python函数的递归调用_python函数递归调用
deffunc():print(‘func’)foo()func()‘’’程序运行结果:RecursionError:maximumrecursiondepthexceededwhilecallingaPythonobject(超过最大递归深度)‘’’deffoo(n):ifn==1:print(‘递归结束’)returnelse:foo(n-1)foo(2)要想知道小一的苹果数量就需要知道小二的苹果数量,而小二的苹果数量又取决于小三,小三的苹果数量又是
2025-01-18 17:59:35
308
原创 Python 3基础语法知识点都在这里了,如果还不能入门就不能怪我了_写python程序知识点串不起来
Python 中只有模块(module),类(class)以及函数(def、lambda)才会引入新的作用域,其它的代码块(如 if/elif/else/、try/except、for/while等)是不会引入新的作用域的,也就是说这些语句内定义的变量,外部也可以访问。在 Python 中,变量名类似 __xxx__ 的,也就是以双下划线开头,并且以双下划线结尾的,是特殊变量,特殊变量是可以直接访问的,不是 private 变量,所以,不能用 __name__、__score__ 这样的变量名。
2025-01-18 12:28:09
465
原创 Pytest 框架执行用例流程浅谈_pytest框架运行用例
Pytest首先会解析命令行参数,确定要执行的测试文件、测试目录、测试类、测试函数等,以及一些配置选项。Pytest会根据配置文件(pytest.ini、setup.cfg、tox.ini等)和命令行参数,创建一个Config对象,用于存储配置信息。Pytest会创建一个Session对象,用于管理整个测试过程的上下文信息,包括收集测试用例、执行测试用例、生成测试报告等。Pytest会调用hook函数pytest_sessionstart,表示测试会话开始。
2025-01-18 12:26:06
703
原创 Android开发失业50天,面了10家公司,唯二的offer也主动拒了
Android开发真的凉了吗?于我看来并没有,最多说“Android 技术的探索”进入了下半场,而整个市场还是乐观的。以前是 BAT 的天下,而近两年出来越来越多的独角兽:头条、抖音、拼多多、快手、小猿搜题等,这些公司的业务都在移动端上,他们需要招聘更多的移动端人才。只是现在很多小型创业公司在退出市场,这确实会导致很多入门工程师失业,但这也说明了这个行业在更加规范。而且,对于 Android 工程师而言,这更是个好的时代。
2025-01-17 14:23:12
234
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人