深圳幻海软件技术有限公司 欢迎您!

开发工具

  • Google 的 C++ 实验性继任者 Carbon 是否值得学习

    自其诞生以来,C++一直是构建性能密集型应用程序的首选。但由于“委员会式设计designbycommittee”,该语言仍有一些过时的做法。2022年7月19日,在多伦多举行的CPPNorthC++会议上,Google工程师ChandlerCarruth介绍了Carbon。我们再来了解什么是Carb

  • TypeScript 编译性能优化:Project Reference

    TypeScript给JavaScript添加了一套类型系统,可以在编译期间检查出类型错误,这增加了代码的健壮性,但也多了一个编译的过程。ts编译速度与项目规模有关,如果项目比较大,代码很多,那就需要编译很长一段时间。有没有什么办法可以提升tsc编译的性能呢?还真有,TypeScript3.0的时候

  • 微服务分解设计四种法则

    如果您在设计大型并发应用程序或者准备拆解之前的老系统时,我想你第一考虑的是微服务架构方式。前面我们了解到微服务架构将应用程序构建为一系列松散耦合的服务,是为了通过实现持续交付和灵活部署来加速软件开发。出于很原因,分解很重要有利于分工和知识共享。使用它,具有特殊知识的多个人(或团队)可以在一个应用程序

  • 微服务架构的数据设计模式

    最近参与公司项目研发,在其中发现对于数据的管理存在一些小问题,根据以往经验,在这里记录下微服务数据设计模式。微服务架构中的服务是松耦合的,可以独立开发、部署和扩展。每个微服务都需要不同类型的数据和存储方式,也因为这样每个微服务都有自己的数据库。一、每个服务的数据库每个微服务都有自己的数据库,可以自由

  • 测试自动化的六大原则

    ​“测试”一词最初是指“用于测定贵金属的小容器”。这意味着测试是一种确定黄金或白银质量的方法。它也用于精炼有价值的合金,如锡。后来,该术语在其他领域被采用,如今,在教育,医学或软件开发等环境中经常会发现它。然而,它的本质并没有改变:测试被用来提炼最终价值。我们在软件开发中使用测试来确保代码按预期工作

  • GitHub 添加工具以简化软件开发管理

    GitHub已普遍提供由GitHubIssues提供支持的项目,这是一组用于管理基于电子表格界面的应用程序开发项目的工具。GitHub产品管理副总裁MarioRodriguez表示,这些工具使DevOps团队能够更轻松地过滤、排序和分组问题以及拉取请求。例如,该功能可以配置和跟踪周期速度和当前工作状

  • 如何最简单、通俗地理解Python模块?

    说简单点,Python模块就是带.py后缀的可执行文件,用来重复调用变量和函数。比方说,你在数据分析过程中反复需要读取CSV文件,除了使用pandas等现成的库方法外,还可以自己写一个模块用于调用。复制#-*-coding:utf-8-*-importcsvdesc='这是csv读取函数'print

  • 如何追踪 JS 对象是否被 GC

    在自带垃圾回收的语言中,开发者往往不需要过多地关注内存管理。但是不代表我们可以完全忽略它。因为语言引擎的垃圾回收是有一定的判断规则的,如果我们的变量所引用的内存没有符合这个规则,那么引擎无无法对这些内存进行自动回收。所以如何追踪变量的内存是否被回收也变得非常重要,尤其在Node.js中。因为Node

  • Go 语言使用 goroutine 运行闭包的“坑”

    ​1.介绍在Go语言中,函数支持匿名函数,闭包就是一种特殊的匿名函数,它可以用于访问函数体外部的变量。需要注意的是,在 for...range... 中,使用goroutine执行闭包时,经常会掉“坑”。因为匿名函数可以访问函数体外部的变量,而 for...range.

  • 揭秘短视频推荐系统的技术架构及四大模块

    1.推荐系统技术架构下面来看下短视频社区平台的推荐系统架构是如何划分的,由底层往上分别是日志信息层、模型策略层、数据计算层、数据结果层与用户交互层,如图2-5所示。▲图2-5推荐系统技术架构(1)日志信息层该层主要分为两部分,一部分是静态数据,例如用户数据与内容数据,用户的年龄、性别、地区,稿件内容

  • 开发者们,Docker到底是什么,能干什么?

    ​背景随着云原生、容器化、微服务、k8s等技术的发展,容器Docker也火了一把,同时也逐渐被软件开发者在实践中进行运用。个人在目前接手的项目、参与的项目或技术交流中,发现Docker已经非常普及。对于大多数开发者来说,Docker之所以被广泛使用,最主要的原因可能就是方便,它提供了一套标准化的解决

  • SpringBoot 自动装配的原理分析

    自动装配案例首先我们通过一个案例来看一下自动装配的效果,创建一个 SpringBoot​ 的项目,在 pom 文件中加入下面的依赖。复制<dependency><groupId>org.springframework.boot</

  • 软件架构中的跨层缓存

    ​译者|李睿审校|孙淑娟本文面向软件开发人员、技术经理、软件架构师、测试工程师以及其他有兴趣了解如何在软件系统中使用缓存的人员。 1.缓存是什么?  (1)为什么需要缓存 如今,现代软件系统变得越来越分散和复杂,带来了许多挑战和问题,尤其是与系统性能相关的问题

  • Java 中为什么不全部使用 Static 方法?

    前阵子在知乎上看到这个问题,一开始觉得还挺无厘头的,但细细一想却发觉这里面很考验对语言的理解。于是写下了我的理解,今天把回答搬运到这里,与大家一起分享。这个问题看起来有点无厘头,但仔细想想却非常考验答主对Java这门语言的理解。如果没有什么Java开发经验,那估计是想不出所以然来的。作为一个工作了8

  • 用 Antlr 重构脚本解释器

    前言实现的脚本解释器 GScript​ 中实现了基本的四则运算以及 AST 的生成。当我准备再新增一个 % 取模的运算符时,会发现工作很繁琐而且几乎都是重复的;主要是两步:需要在词法解析器中新增对% 符号的支持。在语法解析器遍历A

  • 类隔离自定义类加载器实现,你学会了吗?

    前言由于微服务的快速迭代、持续集成等特性,越来越多的团队更倾向于它。但是也体现出了一些问题,比如在基础设施建设过程中,需要把通用功能下沉,把现有大而全的基础设施按领域拆分,考虑需要兼容现有生产服务,会产生不同的依赖版本,有时不注意就可以引发问题。比如本文遇到的依赖包版本冲突问题,以及如何利用类隔离技

  • 聊一聊 Java 面向对象

    前言在之前的文章中,讲到了面向的3大特性(封装、继承、多态)和面向对象设计的5大原则(SRP、OCP、LSP、DIP、ISP)。此外,我们还讲了如何创建一个类,并且在创建类后如何构造一个对象。然后还介绍了类中的属性和方法,并对构造方法和引用也做了简单的讲解。有了上面的基础之后,今天我们来继续学习面向

  • 开箱即用的前端图片压缩方案

    前端实现图片压缩的背景我们都知道在“寸土寸金”的互联网时代,速度是第一竞争力,虽然我们的5G发展已经摇摇领先,但是也经不住用户在一个网页里传很多“巨无霸”图片,最终导致的结果就是页面“龟速”打开......那么作为技术人,当然也有一堆的解决方案,比如:压缩图片再上传将图片上传到图床,利用图床压缩能力

  • Go 语言使用 goroutine 运行闭包的“坑”

    ​01 介绍在Go语言中,函数支持匿名函数,闭包就是一种特殊的匿名函数,它可以用于访问函数体外部的变量。需要注意的是,在 for...range... 中,使用goroutine执行闭包时,经常会掉“坑”。因为匿名函数可以访问函数体外部的变量,而 for...

  • 终于有人把灰度发布架构设计讲明白了

    灰度发布的定义互联网产品需要快速迭代开发上线,又要保证质量,保证刚上线的系统,一旦出现问题可以很快控制影响面,就需要设计一套灰度发布系统。灰度发布系统的作用,可以根据配置,将用户的流量导到新上线的系统上,来快速验证新的功能,而一旦出现问题,也可以马上的修复,简单的说,就是一套A/BTest系统。灰度

  • 算法死活记不住?大神告诉你秘诀:内化它的逻辑

    ​有网友诉说了自己的苦恼——我曾经非常擅长用不同的语言写代码,可是在一年后,我就完全忘记了如何用这些语言写代码。现在我正在尝试学习Lua,我能看懂每一行的意思,但是到了要写出来的时候就不知道该怎么做了。针对ta的苦恼,网友大神们纷纷给出建议。你是说循环、变量之类的语法吗?还是说排序、搜索、递归?这两

  • 搞清楚 Go Mod的版本和伪版本,下次别乱用了

    今天再跟大家唠一下GoModule中软件包的版本和伪版本的内容,因为这是一个理想很丰满、现实很骨感的故事。Module的版本关于GoModule依赖包的软件版本,这块知识就很中规中矩啦,大部分资料里也都有提及。GoModules模块的版本格式为“主版本号.次版本号.修订号”,版本号的递增规则如下:复

  • 掌握 TypeScript 中的映射类型

    DRY原则(Don'trepeatyourself)是软件开发中最重要的原则之一,即不要重复自己。应该避免在代码中的两个或多个地方存在重复的业务逻辑。在TypeScript中,映射类型可以帮助我们避免编写重复的代码,它可以根据现有类型和定义的一些规则来创建新类型。下面就来看一下什么是映射类型以及如何

  • 超全!Python图形界面框架PyQt5使用指南!

    常见GUI框架 PyQt5:Qt是一个跨平台的C++图形用户界面库。QT一度被诺基亚拥,后出售给芬兰的软件公司DigiaOyj。PyQt5是基于Digia公司Qt5的Python接口,由一组Python模块构成。PyQt5本身拥有超过620个类和6000函数及方法。在可以运行于多个平台,包

推荐阅读