lanmao

精品技术文章分享

java数据结构

数据结构与算法——二叉平衡树(AVL树)详解

文章目录AVL树概念不平衡概况四种平衡旋转方式RR平衡旋转(左单旋转)LL平衡旋转(右单旋转)RL平衡旋转(先右后左双旋转)LR平衡旋转(先左后右单旋转)java代码实现总结AVL树概念前面学习二叉查找树和二叉树的各种遍历,但是其查找效率不稳定(斜树),而二叉平衡树的用途更多。查找相比稳定很多。(欢迎关注数据结构专栏) AVL树是带有平衡条件的二叉查找树。这个平衡条件必须要容易保持。而且要保证它的深度是O(logN).AVL的条件是左右树的高度差(平衡因子)不大于1;并且它的每个子树也都是平衡二叉树。对于平衡二叉树的最小个数,n0=0;n1=1;nk=n(k-1)+n(k-2)+1;(求法可以类比斐波那契!)难点:AVL是一颗二叉排序树,用什么样的规则或者规律让它能够在复杂度不太高的情况下实现动态平衡呢? 不平衡概况 如果简单的以单节点看,大致有上面四种情形,并且他们的最后结果也是有的有所相近。只是:上下会变动。该在左面的还在左面,改在右面的还在右面。 这只是针对在底部,对于可能出现的平衡要首先搞清楚: 所以针对四种不平衡,可能出现在底部,也可能出现在头,

数据结构与算法

数据结构与算法—这可能是最易懂的快速幂讲解了

文章收录在公众号:[bigsai],任何转载需要注明来源。欢迎一键三连!前言快速幂是什么? 顾名思义,快速幂就是快速算底数的n次幂。有多快? 其时间复杂度为 O(log₂n), 与朴素的O(n)相比效率有了极大的提高。用的多么? 快速幂属于数论的范畴,本是ACM经典算法,但现在各厂对算法的要求越来越高,并且快速幂适用场景也比较低多并且相比朴素方法有了非常大的提高。所以掌握快速幂算法已经是一名更合格的工程师必备要求!下面来详细看看快速幂算法吧! 快速幂介绍先看个问题再说: 初探首先问你一个问题,如果让你求 (2^10)%1000你可能会这样写: int va=1; for(int i=0;i<10;i++) { va*=2; } System.out.println(va%10000); 熟悉的1024没问题,总共计算了10次。但是如果让你算 (2^

数据结构与算法

我花了一夜用数据结构给女朋友写个H5走迷宫游戏

文章目录起因分析画线(棋盘)画迷宫方块移动结语先看效果图(在线电脑尝试地址http://biggsai.com/maze.html): 起因 又到深夜了,我按照以往在公众号写着数据结构!这占用了我大量的时间!我的超越妹妹严重缺乏陪伴而 怨气满满! 超越妹妹时常埋怨,认为数据结构这么抽象难懂的东西没啥作用,常会问道:天天写这玩意,有啥作用。而我答道:能干事情多了,比如写个小游戏啥的! 当我码完字准备睡觉时:写不好别睡觉! 分析如果用数据结构与算法造出东西来呢? 什么东西简单容易呢?我百度一下,我靠,这个鸟游戏原来不好搞啊,得接触一堆不熟悉的东西,搞不来搞不来。有了(灵光一闪),写个猜数字游戏,问他加减乘除等于几。 超越妹妹又不是小孩子,糊弄不过去。经过一番折腾,终于在半夜12点确定写迷宫小游戏了。大概弄清楚其中的几个步骤。 大概是: 画线—>画迷宫(擦线)—>方块移动、移动约束(不出界不穿墙)—>

通过lms.samples熟悉lms微服务框架的使用

经过一段时间的开发与测试,终于发布了Lms框架的第一个正式版本(1.0.0版本),并给出了lms框架的样例项目lms.samples。本文通过对lms.samples的介绍,简述如何通过lms框架快速的构建一个微服务的业务框架,并进行应用开发。 lms.samples项目基本介绍lms.sample项目由三个独立的微服务应用模块组成:account、stock、order和一个网关项目gateway构成。 业务应用模块每个独立的微服务应用采用模块化设计,主要由如下几部分组成: 主机(Host): 主要用于托管微服务应用本身,主机通过引用应用服务项目(应用接口的实现),托管微服务应用,通过托管应用服务,在主机启动的过程中,向服务注册中心注册服务路由。 应用接口层(Application.Contracts): 用于定义应用服务接口,通过应用接口,该微服务模块与其他微服务模块或是网关进行rpc通信的能力。在该项目中,除了定义应用服务接口之前,一般还定义与该应用接口相关的DTO对象。应用接口除了被该微服务应用项目引用,并实现应用服务之前,还可以被网关或是其他微服务模块引用。网关或是其他微服务项目通过应用接口生成的代理与该微服务模块通过rpc进行通信。 应用服务层(Application): 应用服务是该微服务定义的应用接口的实现。应用服务与DDD传统分层架构的应用层的概念一致。主要负责外部通信与领域层之间的协调。一般地,应用服务进行业务流程控制,但是不包含业务逻辑的实现。 领域层(

项目实战

项目实战:Qt+OSG三维点云引擎(支持原点,缩放,单独轴或者组合多轴拽拖旋转,支持导入点云文件)

若该文为原创文章,转载请注明原文出处 本文章博客地址:https://blog.csdn.net/qq21497936/article/details/115416147 长期持续带来更多项目与技术分享,咨询请加QQ:21497936、微信:yangsir198808 红胖子(红模仿)的博文大全:开发技术集合(包含Qt实用技术、树莓派、三维、OpenCV、OpenGL、ffmpeg、OSG、单片机、软硬结合等等)持续更新中…(点击传送门) 开发专栏:商业项目实战OSG与OsgEarth三维开发专栏 需求开发基于osg的三维点云引擎模块。 1.基于x,y,z坐标轴。 2.可设置原点,设置缩放比例。 3.可设置y轴和z轴单位。 4.三轴中,XY为2D图的水平、竖直方向;Z轴,对应高度图中的double型高度。 5.

Python

让你的程序炫起来!少有人知道但超酷的 Python 进度条开源库

本文适合有 Python 基础的朋友本文作者:HelloGitHub-Anthony HelloGitHub 推出的《讲解开源项目》系列,本期介绍让你快速拥有完美进度条的 Python 三方库——alive-progress, 项目地址:github.com/rsalmei/ali…不知你是否有过这样的经历:你写了一个程序,每次运行都会耗费很长时间。在等待程序运行期间你一次次的按下回车防止程序卡死。亦或者你的任务需要实时掌握程序运行进度但你根本不知道程序执行到了哪里... 现在,alive-progress 来了,它是一个 Python 下的进度条库,不仅使用方便而且支持多种炫酷显示效果!让我们先来看看示例效果: 下面让我们一起玩转这个库! 一、安装在 Python 下使用 pip 进行安装: pip install alive-progress 复制代码二、快速入门2.1 直接使用在循环中使用 alive-progress 是最常见的用法,脚本可以这样写: # 导入 alive-progress 库

大厂真题整理

10道腾讯C++/Java笔试真题你能做对几道?3道就赢了80%的竞争者(含答案)

整理了几道腾讯真题,来试试自己水平有多厉害吧,每题还有答案和详细解答哦。 1、下列哪些可以用于Linux进程间通讯? A:UNIX套接字 B:信号量 C:无名管道 D:文件锁 E:共享内存 Linux进程通信六大方式: 1、管道及(pipe)有名管道 2、信号(signal) 3、报文队列 4、共享内存 5、信号量(semaphore) 6、套接字(socket) 答案:ABCDE。 2、Java语言中,如果"xyz"没有被创建过,String s =new String(“xyz”);创建了几个String Object? A:1                B:

数据库

mysql数据库基本语法

mysql数据库基本语法DDL操作创建数据库 语法:create database 数据库名;查看所有数据库 语法:show databases;切换(使用)数据库 语法:use + 数据库名;创建一个表 语法:create table 表名( 字段名称1 字段类型, 字段名称2 字段类型, 字段名称3 字段类型, …… …… );查看数据库中所有表 语法: Show tables;查看表的结构 语法:desc 表名;添加字段 语法:alter table 表名 add 字段名 字段类型删除字段 语法:alter table 表名 drop 字段名修改表名 语法:rename

javaScript常见面试题合集

Javascript常用函数、方法速查手册(建议收藏)

文章目录前言一、Array对象二、String对象三、Number 对象四、Math对象五、Date 对象六、RegExp对象七、全局属性八、全局方法总结前言这篇文章主要对我们日常开发过程中使用频率比较高的原生Js方法,进行一次简单的整理归纳,方便再开发使用的时候进行快速查找,比对。为此文章中每一个使用到的方法、函数都会有对应的实例、源代码,做简单的说明,希望对大家有所帮助。 一、Array对象这部分主要对原生JS数组方法进行归纳 indexOf() 搜索数组中的元素,并返回它所在的位置。var fruits = ["Banana", "Orange", "Apple", "Mango"]; var a = fruits.indexOf("Apple"); //输出 2 includes() 判断一个数组是否包含一个指定的值。let site = ['runoob', 'google', 'taobao']; site.includes('runoob'); // true site.includes(

JavaScript

字节跳动最爱考的 64 道算法题(JS版)

缘起现在大厂面试中,算法题几乎为必考项,且近几年频现 LeetCode 真题,此篇为拿到字节、腾讯、京东 Offer 的笔者本人在准备面试过程中亲自刷过以及遇到过高频算法题。文章内容会分模块整理,对于笔者在面试过程中遇到的真题,会给予着重 【🔥】标出。 同时,可以毫不客气的说,如果你准备时间有限,又想追求算法题准备效率最大化,那么你只需要按照大纲把下面的题目刷完,并把代码烂熟于心,就几乎可以应对 90% 的面试算法考题了。 整理这篇内容的目的一个是笔者在之前准备面试时的一点积累,而它确实也帮助笔者在面试算法题中过关斩将,同时呢,也希望能够在金三银四给予拼搏的你,一点点帮助就好!💪 文末有福利 :)😈 本篇内容包括如下模块: 高频算法题系列:链表【🔥】【有真题】高频算法题系列:字符串【🔥】【有真题】高频算法题系列:数组问题高频算法题系列:二叉树【🔥】高频算法题系列:排序算法【🔥】高频算法题系列:二分查找【🔥】高频算法题系列:动态规划高频算法题系列:BFS【🔥】高频算法题系列:栈【🔥】高频算法题系列:DFS【

后端

3w 字长文爆肝 Java 基础面试题!太顶了!!!

hey guys ,这不是也到了面试季了么,cxuan 又打算重新写一下 Java 相关的面试题,先从基础的开始吧,这些面试题属于基础系列,不包含多线程相关面试题和 JVM 相关面试题,多线程和 JVM 的我放在后面了,下面不多说,搞起! Java 基础篇Java 有哪些特点并发性的: 你可以在其中执行许多语句,而不必一次执行它面向对象的:基于类和面向对象的编程语言。独立性的: 支持一次编写,到处运行的独立编程语言,即编译后的代码可以在支持 Java 的所有平台上运行。Java 的特性Java 的特性有如下这几点 简单,Java 会让你的工作变得更加轻松,使你把关注点放在主要业务逻辑上,而不必关心指针、运算符重载、内存回收等与主要业务无关的功能。便携性,Java 是平台无关性的,这意味着在一个平台上编写的任何应用程序都可以轻松移植到另一个平台上。安全性, 编译后会将所有的代码转换为字节码,人类无法读取。它使开发无病毒,无篡改的系统/应用成为可能。动态性,

精通运维系列

我写了一个脚本,可在“任意”服务器上执行命令!

大家好,我是冰河~~ 冰河之前维护着上千台服务器组成的服务器集群,如果每次需要在服务器上执行命令的时候,都要手动登录每台服务器进行操作的话,那也太麻烦了。你想想,如果在上千台服务器的集群中,每台服务器中只需要简单的执行一个相同的命令,那别说执行命令了,就是让你依次手动登录上千台服务器,那也够你受的了。估计依次登录上千台服务器,给你三天时间你可能都登不完,那怎么办呢?有没有什么好的方法来解决这个问题呢? 别急,我们今天就是来解决这个问题的。 说实话,我在维护上千台服务器集群的时候,并没有去依次手动登录每台服务器,为啥?没错,就是因为我懒啊!我懒的去登录,并且依次登录那么多台服务器,整个人都会崩溃的。 于是,我就想办法能不能写个脚本,让这个脚本接收我要执行的命令,然后将命令依次分发到集群上所有的服务器中执行,这不就解决问题了吗?说干就干。 不过,这里,有个需要注意的地方:那就是:需要提前配置好集群中每台服务器的主机名和IP地址的对应关系,能够互相使用主机名进行通信,并配置了SSH免密码登录。这一点不行担心,只要让运维在规划和分配服务器的时候,规划好就行了,无需后面再依次登录服务器处理。 为了方便小伙伴们理解,这里我们就假设集群中存在1024台服务器,每台服务器的主机名为binghe1~binghe1024。每台服务器可以通过主机名进行通信,接下来,

Python从零到壹

【Python从零到壹】python爬虫系列-网络请求

学习了之前的基础和爬虫基础之后,我们要开始学习网络请求了。 文章目录urllib的介绍urllib库的四大模块:案例发送请求代码案例发送请求-Request请求IP代理使用cookie异常处理 先来看看urllib urllib的介绍urllib是Python自带的标准库中用于网络请求的库,无需安装,直接引用即可。 主要用来做爬虫开发,API数据获取和测试中使用。 urllib库的四大模块:urllib.request: 用于打开和读取urlurllib.error : 包含提出的例外,urllib.requesturllib.parse:用于解析urlurllib.robotparser:用于解析robots.txt案例# 作者:互联网老辛 # 开发时间:2021/4/5/0005 8:23 import urllib.parse kw={'wd':"互联网老辛"} result=urllib.parse.urlencode(kw) print(result) #解码 res=urllib.parse.unquote(

Spring Cloud Alibaba入门篇

有关微服务的一些概念的东西我这里就不再阐述了,因为之前在写Spring Cloud系列的时候都有详细写过。 具体地址: Spring Cloud系列博客 这个系列开始来讲Spring Cloud Alibaba,第一步先从概述说起。 一、概述1、简介Spring Cloud Alibaba,它是由一些阿里巴巴的开源组件和云产品组成的。这个项目的目的是为了给Java开发者带来使用 Spring Boot 和 Spring Cloud 的更多便利。 Spring Cloud Alibaba 致力于 提供微服务开发的一站式解决方案。该项目包含开发分布式应用微服务必需组件,方便开发者通过Spring Cloud编程模型轻松使用这些组件来开发 分布式应用服务。依托 SpringCloudAlibaba,您只需添加一些注解和少量配置,就可以将SpringCloud应用接入阿里微服务解决方案,通过阿里中间件来迅速搭建分布式应用系统。 2、 主要功能作为微服务都需要考虑 服务治理、服务网关、智能路由、负载均衡、断路器、监控跟踪、分布式消息队列、配置管理 等领域的解决方案。 这些功能Spring Cloud

深入理解Java并发框架AQS系列(四):共享锁(Shared Lock)

深入理解Java并发框架AQS系列(一):线程 深入理解Java并发框架AQS系列(二):AQS框架简介及锁概念 深入理解Java并发框架AQS系列(三):独占锁(Exclusive Lock) 深入理解Java并发框架AQS系列(四):共享锁(Shared Lock) 一、前言那些“简单的”并发代码背后,隐藏着大量信息。。。独占锁虽说在j.u.c中有现成的实现,但在JAVA的语言层面也同样提供了支持(synchronized);但共享锁却是只存在于AQS中,而它在实际生产中的使用频次丝毫不亚于独占锁,在整个AQS体系中占有举重若轻的地位。而在某种意义上,因为可能同时存在多个线程的并发,它的复杂度要高于独占锁。本章除了介绍共享锁数据结构等,还会重点对焦并发处理,看 doug lea 在并发部分是否有遗漏 j.u.c下支持的并发锁有Semaphore、CountDownLatch等,本章我们采用经典并发类Semaphore来阐述 二、简介共享锁其实是相对独占锁而言的,涉及到共享锁就要聊到并发度,即同一时刻最多允许同时执行线程的数量。上图所述的并发度为3,即在同一时刻,最多可有3个人在同时过河。

知识图谱、web数据挖掘及NLP

那些年我在CSDN追过的安全白帽大佬,respect

2019年7月,我来到了一个陌生的专业——网络空间安全专业。作为一个长期以Python数据挖掘和NLP方向为主的学生,突然换大方向,去从事系统安全和逆向分析的研究,还是挺难的,这两年的过程也极其艰辛。依稀记得,换专业当天我下定决心:希望利用未来四年时间,深入学习安全技术,学会撰写高质量论文,并通过分享让更多的初学者了解和入门安全领域。更期盼博士早日毕业,回到家乡贵州继续从事安全技术和大数据分析的教学。 至此,从2019年7月31日开始,我在CSDN撰写了第一篇安全相关的博客——《[网络安全自学篇] 一.入门笔记之看雪Web安全学习及异或解密示例》。随后两年中,我陆续开启了《网络安全自学篇》《网络安全提高班》《系统安全与恶意代码分析》《Python黑帽》《安全攻防进阶篇》《APT分析及溯源》《GO编程基础》等安全专栏,撰写近200篇的安全博客。不负遇见,感恩同行。 两年的时间,我从一只安全菜鸟成长为了安全初学者。春去冬来,黔鄂奔波,我从网络安全写到了系统安全,从Web渗透写到了病毒逆向,从AI安全实例写到了安全顶会论文分享。我知道,未来的路还很长,要学的安全知识还很多,为什么现在就去写这样一篇总结性的文章呢? 因为想写,因为感恩。 两年走来,在CSDN我通过安全分享认识了太多的好友和大佬。

我要进大厂

0 基础 Java 自学之路(2021年最新版)

前言无论你是否想自学 Java,认真看完本文,你以后的职场生涯至少少走1年弯路。 本文会持续更新,建议收藏。 初衷在 CSDN 上经常有同学私聊我询问 “如何自学 Java”、“想转行 Java 靠谱吗” 等问题,因为自己也是在大学时自学的 Java,所以我能理解这些同学的痛苦和迷茫。 写这篇文章前,我看了一些网上 Java 自学的文章,很多我都不太满意,有的甚至让我感到愤怒,要么是站在现有的视角侃侃而谈,要么是纯粹的瞎编骗小白。 很多文章都有一个老毛病:完全没有从小白的视角去思考,内容太多,什么微服务、架构、大数据都来了,这根本不是自学阶段该去看的东西,小白看了这些文章,只会越看越懵逼,根本没法下手。 其实我在18年写过一篇“0基础Java自学之路”,但是现在来看,当时那篇文章写的过于简单,只是提供了一个思路,但是很多内容没有写。 如今已经过去了3年,我对于这个话题又有了一些新的思考,同时为了拯救广大正处于水深火热的同学们,于是,我决定重新写一篇自学教程。 自我介绍在写本文前有必要介绍下我自己,让大家更好的去比较和参考。 我大学是普通本科,

java

手把手教你掌握Java之数据类型和运算符

数据类型与运算符冯·诺伊曼体系结构变量及其用法和命名整形变量(int)长整型变量(long)双精度浮点型变量(double)单精度浮点型变量(float)字符型变量(char)布尔类型变量(boolean)字符串类型变量(String)变量的命名规则总结数值提升运算符除法取模关系运算符逻辑运算符位运算符移位运算符条件运算符冯·诺伊曼体系结构在本篇文章的开头,我给大家介绍一个很伟大的人物:冯·诺伊曼,相信很多人都听过。冯·诺依曼(John von Neumann,1903~1957),20世纪最重要的数学家之一,在现代计算机、博弈论、核武器和生化武器等诸多领域内有杰出建树的最伟大的科学全才之一,被后人称为“计算机之父”和“博弈论之父”。 冯·诺依曼体系结构 本篇博客我们所讨论的 “变量” 主要和我们的 “内存” 这样的硬件设备密切相关。 变量及其用法和命名变量指的是程序运行时可变的量. 相当于开辟一块内存空间来保存一些数据。 类型则是对变量的种类进行了划分, 不同的类型的变量具有不同的特性。 整形变量(int)基本语法

Java

没想到吧,Java开发 API接口可以不用写 Controller了

本文案例收录在 github.com/chengxy-nds…大家好,我是小富~ 今天介绍我正在用的一款高效敏捷开发工具magic-api,顺便分享一点工作中使用它的心得 缘起先说一下我为什么会使用这个工具? 最近新启动一个项目,业务并不算复杂,那种典型的管理系统,产品要求支持全局页面配置化,前端一切相关配置必须通过接口返回,比如:像查询下拉框(启用、禁用)这类简单的条件,国际化,必须做到全动态配置。 其实只要人手够时间够,这些都没问题,但问题就在于立项到上线周期就给十几天,而开发时间满打满算不到10来天,时间紧又不给加人,底层程序员的生活真是太难了。 不过办法总比困难多,前同事老哥给我推荐了这个工具,然后就真香了,哈哈~ magic-api 是一个基于Java的接口快速开发框架,编写接口将通过magic-api提供的UI界面完成,自动映射为HTTP接口,无需定义Controller、Service、Dao、Mapper、XML、VO等Java对象即可完成常见的HTTP API接口开发。 上边是官方对工具的介绍,但好像还是没明白它是干什么的,接下来咱们演示一下,你就会觉得它很哇塞了 环境首先pom.xml 引入magic-api核心包magic-api-spring-boot-starter <

前端

手写一个在Flutter里展示”精灵图“的Widget

前言之前用Flutter里的游戏引擎Flare做了一个“是男人就坚持100秒”的游戏,文章请看这里 使用Flare引擎之后,完全没有了Flutter应用特有的代码风格。虽然更适应我这类有过游戏开发经验的开发者,但并不利于我们学习Flutter框架。所以我在那篇文章最后也说了,要抽空用Widget重写一次这个游戏。首要任务,就是得有一个支持”精灵图“的Widget,既然是学习,那就不能用别人开发好的,必须得自己亲手造轮子。 什么是”精灵图“精灵图的英文是spritesheet(精灵表单),就是在一张图上放置多个图形,只需要加载到内存里一次。在展示的时候,仅展示单个图形的区域。一般多个图形多用来放置连续动画的多个关键帧。除了在游戏引擎里很常见以外,为了减少web请求,在前端领域也很常见。 原理拆解加载一张大图,但每次只展示图片的特定区域比如这张飞机的精灵图,尺寸是330x82(像素),横向排布5个画面,那么单个画面的尺寸就是330/5 = 66。我们每次展示的区域为x=66*画面序号,y=0,width=66,height=82。 可以设定横向排布或纵向排布精灵图可以横向或纵向排布,有些游戏引擎的贴图最大尺寸为4096x4096,所以还有些情况是需要我们换行切换的,但原理差异并不大,

面试

前端面经 - 看这篇就够了(笔者靠这个拿到阿里和字节的offer)

面试题梳理梳理前端常见面试题及答案。一、web前端性能优化性能评级工具(PageSpeed 或 YSlow) css CSS优化、提高性能的方法有哪些多个css合并,尽量减少HTTP请求将css文件放在页面最上面移除空的css规则避免使用CSS表达式选择器优化嵌套,尽量避免层级过深充分利用css继承属性,减少代码量抽象提取公共样式,减少代码量属性值为0时,不加单位属性值为小于1的小数时,省略小数点前面的0使用CSS Sprites将多张图片拼接成一张图片,通过CSS background 属性来访问图片内容js 节流、防抖长列表滚动到可视区域动态加载(大数据渲染)图片懒加载(data-src)使用闭包时,在函数结尾手动删除不需要的局部变量,尤其在缓存dom节点的情况下DOM 操作优化批量添加dom可先createElement创建并添加节点,最后一次性加入dom批量绑定事件,使用事件委托绑定父节点实现,利用了事件冒泡的特性如果可以使用innerHTML代替appendChild在 DOM 操作时添加样式时尽量增加 class 属性,而不是通过 style 操作样式,以减少重排(Reflow)网络 减少 HTTP 请求数量利用浏览器缓存,公用依赖包(如vue、Jquery、ui组件等)单独打包/单文件在一起,

JavaScript

一文带你了解如何排查内存泄漏导致的页面卡顿现象

不知道在座的各位有没有被问到过这样一个问题:如果页面卡顿,你觉得可能是什么原因造成的?有什么办法锁定原因并解决吗? 这是一个非常宽泛而又有深度的问题,他涉及到很多的页面性能优化问题,我依稀还记得当初面试被问到这个问题时我是这么回答的: 先会检查是否是网络请求太多,导致数据返回较慢,可以适当做一些缓存也有可能是某块资源的bundle太大,可以考虑拆分一下然后排查一下js代码,是不是某处有过多循环导致占用主线程时间过长浏览器某帧渲染的东西太多,导致的卡顿在页面渲染过程中,可能有很多重复的重排重绘emmmmmm....不知道了后来了解到了,感官上的长时间运行页面卡顿也有可能是因为内存泄漏引起的 🌟 内存泄漏的定义那什么是内存泄漏呢?借助别的大佬给出的定义,内存泄漏就是指由于疏忽或者程序的某些错误造成未能释放已经不再使用的内存的情况。简单来讲就是假设某个变量占用100M的内存,而你又用不到这个变量,但是这个变量没有被手动的回收或自动回收,即仍然占用100M的内存空间,这就是一种内存的浪费,即内存泄漏 🌼 JS的数据存储JavaScript的内存空间分为栈内存和堆内存,前者用来存放一些简单变量,后者用来存放复杂对象 简单变量指的是JS的基本数据类型,例如:String、Number、Boolean、null、undefined、Symbol、BigInt复杂对象指的是JS的引用数据类型,例如:Object、Array、Function...🌴 JS垃圾回收机制根据内存泄漏的定义,有些变量或数据不再被使用或不需要了,那么它就是垃圾变量或垃圾数据,如果其一直保存在内存中,最终可能会导致内存占用过多的情况。那么此时就需要对这些垃圾数据进行回收,这里引入了垃圾回收机制的概念

设计模式

掌握设计原则,你就是光(25个问题,你会几个)

25个问题,你会几个如何理解单一职责原则?如何判断职责是否足够单一?职责是否设计得越单一越好?什么是开闭原则?修改代码就一定意味着违反开闭原则吗?怎样的代码改动才被定义为扩展或者说是修改?如何做到对扩展开放、修改关闭?如何在项目中灵活运用开闭原则?什么是依赖反转(倒置)原则 ?高层模块和低层模块是啥意识?如何理解反转两个字?什么依赖被反转了?什么是控制反转 IOC ( Inversion Of Control )?什么是依赖注入 DI ( Dependency Injection )?IOC 和 DI 有什么区别?代码行数越少就越简单吗?代码逻辑复杂就违背 KISS 原则吗?如何写出满足 KISS 原则的代码?如何判断是否满足 KISS 原则?重复的代码就一定违背 DRY 吗?如何提高代码的复用性?什么是迪米特法则?高内聚、松耦合是什么意识?如何理解高内聚和松耦合?如何用好迪米特法则?看完这些问题,是不是激动的一笔,

字符串

python经典练习题之九九乘法表、打印菱形、打印对顶三角形、斐波拉契数列、素数...

学学习简单的练习,学到后面会有越来越多的解法来写!作业的目的是为了让大家熟悉程序语言,锻炼将思路转换成程序逻辑。九九乘法表help(print) 先思考能不能打印出方阵 # 1 方阵 # 1 方阵 for i in range(1, 10): line = '' for j in range(1, 10): line += str(i) + '*' + str(j) + '=' + str(i*j) + ' ' print(line) print('-' * 30)# 2 九九乘法表 for i in range(

CSS 文字装饰 text-decoration & text-emphasis

在 CSS 中,文字算是我们天天会打交道的一大类了,有了文字,则必不可少一些文字装饰。 本文将讲讲两个比较新的文字装饰的概念 text-decoration 与 text-emphasis,在最后,还会讲解使用 background 模拟文字下划线的一些有趣的动效。 text-decoration 文字装饰text-decoration 意为文字装饰,在很早的规范 CSS Level 2 (Revision 1) -- text-decoration 就已经存在了。譬如我们非常熟知的下划线 text-decoration: underline。 p { text-decoration: underline; } 而到了比较新的 CSS Text Decoration Module Level 3 - text-decoration,text-decoration 得到了比较大的丰富更新,演化出了 text-decoration-line, text-decoration-color, text-decoration-style,和还未成为标准的 text-decoration-thickness 等属性,