- 博客(66)
- 收藏
- 关注
原创 算法工程师的工作日常,需要具备哪些能力?
能力的话,第一是专业技术能力,即你最起码要懂一些用到的算法模型原理,掌握基本的算法能力。第三是数据分析能力,算法不管做怎样的优化,都需要建立在数据的基础上,这也是算法工程师必备的一个技能。作为算法工程师的话,我们平常的工作更多的是去做一些数据分析,调研目前的业务痛点,再去做技术方案的选型,最后将相关的模型和系统开发上线,有效提升和转化站点流量。但算法很有可能是你在那里鼓捣了几个月的技术、模型,最后发现线上效果好像并没有提升,所以说,还是会需要有去不断面对不确定性的这种心态在。
2025-05-19 09:05:43
183
原创 WebSocket解决方案的一些细节阐述
实际上,集成WebSocket的方法都有相关的工程挑战,这可能会影响项目成本和交付期限。但是,功能蠕变通常意味着基本的实时体验需要对共享实时体验和协作功能提出额外的要求。另一个常见问题是,原始设计在产品获得足够的市场反馈以了解其发展方向之前,就将重大约束嵌入到产品中。错过的消息需要传递,而不重复已处理的消息。整个体验需要完全无缝。但是,如果产品不能满足其创造的需求,那么快速进入市场并获得早期成功可能会弄巧成拙。有一些真正复杂的工程问题需要解决,以保证排序和恰好一次语义所需的数据完整性。
2025-05-18 09:33:32
504
原创 栈的计算方式和表达方式
好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!最后处理运算符栈中剩余的符号,依次出栈即可。顺序遍历中缀表达式。遇到数值则直接输出。遇到运算符分三类处理。
2025-05-15 16:25:40
208
原创 浅谈编译型语言的运用
如大家所熟悉的,程序在执行之前需要一个专门的编译过程,把程序编译成机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了,程序执行效率高,依赖编译器,如 C/C++、Golang 等,它们可以编译后生成 .exe文件,之后无需再次编译,直接运行 .exe文件即可。编译型语言往往会花费较长的编译时间,但编译完成后,会有很好的运行性能,因此,编译型语言编写的程序每次修改都要再次经历一遍完整编译过程后,修改效果才能生效,迭代时间会比解释型语言要长。
2025-04-11 12:30:00
187
原创 源代码所指向的程序文本问题
指的是由程序员使用各种编程语言编写的还未经编译或者解释的程序文本,对于计算机而言,源代码就是天书,根本无法执行,计算机只能识别某些特定的二进制指令,在程序真正运行之前必须将源代码转换成二进制指令。编译是把源代码的每条语句都编译成机器语言, 并最终生成二进制文件,这样运行时计算机可以直接以机器语言来运行此程序,在运行时会有很好的性能;解释是只在执行到对应的语句时才会将源代码一行一行的解释成机器语言,给计算机来执行,所以使用解释器来执行的语言也被称为动态语言。,由于他们的操作方法不同,所以会有不同的运行效果。
2025-04-10 16:15:00
343
原创 函数作为参数传递
如大家所知,把函数当做参数传递,这代表我们可以抽离出一部分容易变化的业务逻辑,把这部分业务逻辑放在函数参数中,这样一来可以分离业务代码中变化与不变的部分,其中一个重要的应用场景就是回调函数。回调函数的应用不仅只在异步请求中,当一个函数不适合执行一些请求时,我们也可以把这些请求封装成一个函数,并把它作为参数传递给另一个函数,“委托” 给另一个函数来执行。
2025-04-09 19:45:00
189
原创 进程的阻塞原语与撤销原语
一个正在运行的进程因其所申请的资源未得到满足,而被迫称为阻塞状态等待阻塞事件的完成,进程的这种状态变化是通过运行进程本身调用阻塞原语来实现的。阻塞原语的实现过程是首先中断 CPU 对当前运行进程的执行,将运行进程的 CPU 现场信息放到内存该 PCB 中的 CPU 状态保护区,然后将该运行进程置为阻塞状态,并把它插入到进程阻塞队列中 ,接下来系统执行进程调度程序将 CPU 分配给另一个就绪进程。
2025-04-08 18:45:00
369
原创 进程控制块PCB中的信息
8、PCB 现场保护区,即当进程因为某种原因放弃使用 CPU 时,需要将当时(执行的断点处)的 CPU 各种状态信息保存起来(暂存于内存中操作系统的内核区),以便该进程再次得到 CPU 时,能够恢复当时的 CPU 各种状态,即复原当时的现场和环境,使得该进程可以不受影响地由断点处恢复运行。进程是程序在 CPU 上的一次执行过程,所以进程除包含正在执行的程序和数据段外,还包括此次执行的“环境”信息,如 CPU 状态,核心栈数据以及该程序在内存的存储空间等,而这些信息都保存在进程控制块 PCB 中。
2025-04-07 15:45:00
147
原创 浅谈在HTTP中GET与POST的区别
GET 请求方式符合幂等性和安全性,GET请求方式是做查询操作,因此不会改变数据库中原有的数据,认为符合安全性,事实上 GET 请求可能会出现多次请求的结果不一致(例如在两次请求中间对数据库中的数据做了更改),从这来说不符合幂等性的定义,但是因为 GET 请求只是查询数据库,不会对数据库做任何更改,因此也可以认为是幂等的。其次,POST 请求方式每次获得的结果都可能不一样,因为 POST 请求是作用在上一级的 URL 上的,每一次请求都会添加一份新的资源,或者修改资源信息。
2025-04-06 18:15:00
570
原创 异步函数 async/await的认识与学习
如大家所了解的,async 函数返回一个 Promise 对象,可以使用 then 方法添加回调函数。当函数执行的时候,一旦遇到 await 就会先返回,等到异步操作完成,再接着执行函数体内后面的语句。这时候,正常情况下,await 命令后面是一个 Promise 对象,如果不是,会被转为一个立即 resolve 的 Promise 对象。以上代码指定 300ms 后输出 Hello。
2025-04-03 20:30:00
367
原创 WeakMap结构的键名问题
它的键名所引用的对象都是弱引用,即垃圾回收机制不将该引用考虑在内,因此,只要所引用的对象的其他引用被清除了,垃圾回收机制就会释放该对象所占用的内存。一个典型的应用场景是,在网页的 DOM 元素上添加数据时就可以使用 WeakMap 结构,当该 DOM 元素被清除,其对应的 WeakMap 记录就会自动被移除。需要注意的是:WeakMap 的专用场景就是它的键所对应的对象可能会在将来小时,WeakMap 结构有助于防止内存泄露。但是,WeakMap 弱引用的只是键名而不是键值,键值依然是正常引用的。
2025-04-03 07:00:00
263
原创 Function-bind绑定函数
其实 ,call 和 apply 也可以重新绑定 this ,但是 bind 会返回一个新的函数,并将传入的参数和函数绑定起来,而 call 和 apply 则是使用新的 this 去直接调用、执行函数。
2025-04-02 09:04:02
344
原创 JavaScript装饰者模式
接下来 把当前的 this 保存起来,这个 this 指向原函数,然后返回一个“代理”函数 ,这个“代理”函数只是结构上像代理而已,并不承担代理的职责(比如控制对象的访问等)。它的工作是把请求分别转发给新添加的函数和原函数,且负责保证它们的执行顺序,让新添加的函数在原函数之前执行(前置装饰),这样就实现了动态装饰的效果。1、必须要维护中间变量(_load 变量),虽然看起来并不起眼,但是如果函数的装饰链较长,或者需要装饰的函数变多,这些中间变量的数量也会越来越多。2、会遇到 this 被劫持的问题。
2025-04-01 14:52:06
228
原创 WebSocket通信协议
WebSocket 是浏览器端和服务器端建立实时连接的一种通信协议,可以在服务器和浏览器端建立类似 socket 方式的消息通信。优势是方便服务器和浏览器之间的双向数据实时通信,WebSocket 在网络中传输的最小单位也是帧,数据的传输也可以理解为流式的传输,但 WebSocket 存在兼容性问题,并非所有浏览器都支持 WebSocket 协议。
2025-04-01 12:20:34
215
原创 HTTP 1.1长连接问题
HTTP1.1 支持长连接和请求的流水线处理,在一个 TCP 连接上可以传送多个 HTTP 请求和响应,减少了建立和关闭连接的消耗和延迟,在 HTTP1.1 中默认开启长连接 keep-alive,一定程度上弥补了 HTTP1.0 每次请求都要创建连接的缺点。HTTP1.0 需要使用 keep-alive 参数来告知服务器端要建立一个长连接。在长连接问题上,HTTP 1.1与HTTP 1.0还是有所区别的。
2025-03-31 12:05:17
462
原创 HTTP常见状态码分析
当浏览者访问一个网页时,浏览者的浏览器会想网页所在的服务器发出请求,当浏览器接收并显示网页前,此网页所在的服务器会返回一个包含 HTTP 状态码的信息头(server header)用以响应浏览器的请求。304 Not Modified,未修改,所请求的资源被修改,服务器返回此状态码,不会返回任何资源。301 Moved Permanently,永久性重定向,请求的资源已经永久的移动到新的URL,浏览器会自动定向到新的URL,今后任何新的请求都应使用新的 URL 代替。2**,成功,操作被成功接收并处理。
2025-03-30 19:45:18
184
原创 深层嵌套数据的整理
我们来做个假设,拿到一个深层嵌套的数据,这类数据的特点,数据层次分明,格式一样,但是不确定嵌套的层级:经过处理后,输出 value 值为 key,父元素 label + 自身 label 组成对应的 value 值,即:使用递归的方法实现,代码示例如下:打印结果如下:
2025-03-30 10:52:42
170
原创 轮询和长轮询
长轮询 long-poll,即 HTTP 请求可以设置一个较长的 Timeout 等待时间,这样网络轮询请求就可以维持一段较长的时间后返回结果,这也就是 long-poll 的基本思路,服务器只要在这段长轮询时间内进行响应,请求便会立即返回结果,如果这段时间服务器没有返回,浏览器端将自动响应超时,并重新发起一个长轮询请求。比如浏览器每隔一秒向服务器发送一次请求,在一秒内服务器更新的内容会在下一次轮询中被浏览器拉取,所以这种方案相对来说实时性较差,而且没有新消息时依然需要不断轮询,比较耗费系统资源。
2025-03-29 18:33:00
351
原创 python全局变量引用
同样,如果在非全局作用域中,想主动释放变量引用的对象,也可以通过这样的方式,虽然 delete 操作和重新赋值具有相同的效果,但是在 V8 中通过 delete 删除对象的属性有可能干扰 V8 的优化,所以通过赋值方式解除引用更好。如果需要释放常驻内存的对象,可以通过 delete 操作来删除引用关系,或者将变量重新赋值,让旧的对象脱离引用关系,在接下来的老生代内存清理和整理的过程中,会被回收释放。如果变量是全局变量,由于全局作用域需要直到进程退出才能释放,此时将导致引用的对象常驻内存(常驻在老生代中)。
2025-03-28 12:23:19
123
原创 V8内存的限制
如大家所熟悉的,在一般的后端开发语言中,在基本的内存使用上没有什么限制,然而在 Node 中通过JavaScript 使用内存时就会发现只能使用部分内存(64 位系统写约 1.4GB,32 位系统下约为 0.7GB)。在这样的限制下,将会导致 Node 无法直接操作大内存对象,比如无法将一个 2GB 的文件读入内存中进行字符串分析处理,即使物理内存有 32GB,这样在单个 Node 进程的情况下,计算机的内存资源无法得到充分的使用。
2025-03-27 20:52:49
182
原创 Vue .sync修饰符
我们有时候会遇到这么一个问题:一个组件上只能定义一个v-model,如果其他prop也要实现双向绑定的效果该怎么办呢?在有些情况下,我们可能需要对一个 prop 进行“双向绑定”,vue .sync 修饰符以前存在于 vue1.0 版本里,但是在 2.0 中移除了 .sync。但是在 2.0 发布之后的实际应用中,我们发现 .sync 还是有其适用之处,比如在开发可复用的组件库时。我们需要做的只是让子组件改变父组件状态的代码更容易被区分。
2025-03-25 08:15:04
177
原创 ElementUI时间选择、日期选择
如大家所发现的,由于ElementUI 时间选择器,日期选择器,时间日期选择器点击清除按钮时,v-model 所绑定的属性值会变成 null,所以当使用 ElementUI 时间选择器,日期选择器,时间日期选择器 时,v-model 默认值应设置 null。ElementUI 中没有内置清除按钮的回调函数。今天的文章就介绍到这里了,相信大家认真去看文字介绍及代码,一定会很容易发现问题、找出问题、解决问题的。若有其他疑问,也欢迎留言,一起讨论解决哦!或者添加监听,值为 null 时,赋值为。
2025-03-24 20:45:24
266
原创 Vue部署上线清除浏览器缓存
不得不承认,Vue项目打包上线之后,每一次都会有浏览器缓存问题,需要手动的清除缓存。这样用户体验非常不好,所以我们在打包部署的时候需要尽量避免浏览器的缓存。
2025-03-24 09:11:37
355
原创 ElementUI表格使用树形数据报错
我们有时候在ElementUI表格使用树形数据时会报错:for nested data item, row-key is required,这个问题如何解决呢?为每行数据,添加一个 hasChildren 字段,值为 true 或者 false。今天的文章就分享到这里,希望遇到同样问题的小伙伴,能很快运用去解决哦~
2025-03-23 18:39:43
269
原创 ElementUI表格数据加载问题
不得不说,我们在使用ElementUI表格时,项目中的表格请求接口数据页面加载,有时候会先出现 ‘‘暂无数据’’ 字样闪现一下之后再显示页面数据,导致用户体验不友好。这种情况,该怎么解决呢?
2025-03-20 09:15:43
254
原创 Vite Plugin Inspect插件问题
有些小伙伴可能还不清楚,Vite Plugin Inspect 是由 Antfu 开发的一款 Vite 插件,它的目标是让 Vue、React 等框架的开发者能够更容易地查看和理解构建过程中经过转换的源码。通过集成到 Vite 环境中,Inspect 插件可以在浏览器的开发者工具中直接展示 ES 模块、CSS、甚至是编译后的模板的原始状态,极大地增强了我们在实际开发中的调试能力。以上这些大家需要注意,不然在使用过程中因为忽视而导致出错。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!
2025-03-19 11:34:27
299
原创 Dom模板的规范写作
有些小伙伴可能还不太熟悉,Dom模板就是写在 html 文件中,一打开就会被浏览器进行解析渲染的,所以要遵循 html 结构和标签的命名,否则浏览器不解析也就不能获取内容了。例如:mycomponent、posttitle、componentclick,如果这样,使用时也必须按照全小写的方式书写,这样才是正确的规范。PS:组件注册名、props 接收名、$emit名,还可以使用全小写字母命名(没有任何大写字母或者短横线)。
2025-03-18 08:35:33
250
原创 Vue中的publicPath释义
默认情况下,Vue CLI 会假设你的应用是被部署在一个域名的根路径上,例如 https://www.my-app.com/。例如,如果你的应用被部署在 https://www.my-app.com/my-app/,则设置 publicPath 为 /my-app/。部署应用包时的基本URL。这个值也可以被设置为空字符串 ('') 或是相对路径 ('./'),这样所有的资源都会被链接为相对路径,这样打出来的包可以被部署在任意路径,也可以用在类似 Cordova hybrid 应用的文件系统中。
2025-03-17 08:48:27
397
原创 在Bash中交互式登录方式是什么
二、非登录 shell 是指在已经登录的 shell 环境中再次打开一个 shell 环境,这个 shell 进程就是非登录 shell,它不会读取 /etc/profile 和 ~/.bash_profile 文件,而是读取 ~/.bashrc 文件。一、登录 shell 是指当你第一次登录系统时,系统会为你分配一个 shell 进程,这个 shell 进程就是登录 shell,它会读取 /etc/profile 和 ~/.bash_profile 文件,以便设置环境变量和别名等。
2025-03-16 12:20:11
143
原创 Linux系统中查询命令行解释器
首先,我们来了解一下操作系统的概念:操作系统是一组主管并控制计算机操作、运用和运行硬件、软件资源和提供公共服务的相互关联的系统软件程序。它负责管理计算机的硬件和软件资源,提供用户与计算机交互的界面。常见的操作系统有Windows、macOS和Linux。Windows和macOS系统比较常见,相信大家也比较熟悉了,今天来讲讲Linux系统中查询命令行解释器的概念。
2025-03-15 20:10:55
182
原创 暂存区eslint校验
且如果拉取同事的代码,校验之后发现同事的代码有很多规范问题,我们还要替同事背这个锅,显然不合理。因为 eslint 的校验可能并不是一开始就有的,而是在工作过程中逐步建立起来的,所以可能旧的代码没有经过校验就被提交了。能不能改改机制,每次提交都只检查最新改动的代码?这样才符合实际工作需求,所以 lint-staged 诞生了。如果项目过大,校验耗时也大;
2025-03-15 09:04:34
176
原创 husky工具配置代码检查工作流的作用
在日常工作和学习中,我们经常需要将写好的代码提交至代码仓库,但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的,所以我们需要引入一种检查机制,若代码不规范,就不允许提交。
2025-03-14 13:07:51
172
原创 Vue中涉及的字符串模板与dom模板
实际上,Dom 模板就是写在 html 文件中,一打开就会被浏览器进行解析渲染的,所以要遵循 html 结构和标签的命名,否则浏览器不解析也就不能获取内容了。好了,今天的文章分享就到这里了,希望对大家的学习有帮助哦!
2025-03-14 09:18:39
226
原创 super关键字在ES6函数中的应用
第一种情况,super 作为函数调用时,代表父类的构造函数。这里需要注意,由于 super 指向父类的原型对象,所以定义在父类实例上的方法或属性,是无法通过 super 调用的。第二种情况,super 作为对象时,在普通方法中,指向父类的原型对象;在静态方法中,指向父类。作为函数时,super() 只能用在子类的构造函数之中,用在其他地方就会报错。如果属性定义在父类的原型对象上,super 就可以取到。在这两种情况下,它的用法完全不同。
2025-03-11 17:15:40
185
原创 ES6 class的继承概念
ES6 规定,子类必须在 constructor() 方法中调用 super(),否则就会报错,这是因为子类自己的 this 对象,必须先通过父类的构造函数完成塑造,得到与父类同样的实例属性和方法,然后再对其进行加工,添加子类自己的实例属性和方法。另一个需要注意的地方是,在子类的构造函数中,只有调用 super() 之后,才可以使用 this 关键字,否则会报错。这是因为子类实例的构建,必须先完成父类的继承,只有 super() 方法才能让子类实例继承父类。下面,我们在ColorPoint内部加上代码。
2025-03-11 11:05:02
309
原创 在JS中attribute和property的区别
两个单词的中文翻译也都非常相近(property:属性,attribute:特性),但实际上,二者是不同的东西,属于不同的范畴。想必大家在学习JS的过程中也会有所发现:property和attribute非常容易混淆。property 是 DOM 中的属性,是 JavaScript 里的对象;attribute 是 HTML 标签上的特性,它的值只能够是字符串。
2025-03-10 13:23:26
213
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人