资讯

  • Go 1.21.0 新增标准库 Slices 和 Mps 详解

    01 、介绍在 Go 语言项目开发中,我们经常会使用 slice 和 map 数据类型,因为 Go 1.18.0 开始支持泛型,所以 slice 的元素可能是任意类型,map 的 key 和 value 也可能是任意类型。Go 1.21.0 新增操作 slice 和&n...

    日期:2023-09-27点击:144
  • 使用查询分离后从20s优化到500ms

    使用查询分离后从20s优化到500ms

    在前面一篇文章中提到过对于业务主表读写缓慢的解决方案:冷热分离,有不了解的请看:业务主表读写缓慢如何优化?冷热分离固然是一个性价比高的解决方案,但也并不是银弹,仍然有诸多限制,比如:查询冷数据慢业务无法修改冷数据冷数据多到一定程度系统依旧扛不住此时如果需要解决以上问题,可以采用另外一种方案:使用 查询分离 优化业务主表数据大查询缓慢的问题什么是查询分离?查询分离从字面上来说非常...

    日期:2023-09-27点击:152
  • Spring BOOT 启动参数

    Spring BOOT 启动参数在Java Web的开发完成后,以前我们都会打包成war文件,然后放大web容器,比如tomcat、jetty这样的容器。现在基于SpringBoot开发的项目,我们直接打包成jar文件,基于内嵌的tomcat来实现一样的效果。而启动的方式变成了这样:java [ options ] -jar *.jar [ arguments ]常见配置我们常见的配置有...

    日期:2023-09-27点击:140
  • 五分钟k8s入门到实战-应用配置

    五分钟k8s入门到实战-应用配置

    背景在前面三节中已经讲到如何将我们的应用部署到 k8s 集群并提供对外访问的能力,x现在可以满足基本的应用开发需求了。现在我们需要更进一步,使用 k8s 提供的一些其他对象来标准化我的应用开发。首先就是 ConfigMap,从它的名字也可以看出这是用于管理配置的对象。ConfigMap不管我们之前是做 Java、Go 还是 Python 开发都会使...

    日期:2023-09-27点击:139
  • 实时数据推送并非只有WebSocket一种选择

    实时数据推送并非只有WebSocket一种选择

    环境:SpringBoot2.7.16概述在Web应用中,有几种实时数据推送的选择方案,包括SSE(Server-Sent Events)、WebSocket、长轮询等。SSE是一种基于HTTP协议的服务器向客户端推送数据的技术。它的优点是实现简单、轻量级,对现有服务器软件兼容性好。但是,由于SSE是单向通信模型,只能由服务器向客户端推送数据,对于需要客户端向服务器发送数据的场景,SSE就无法满足...

    日期:2023-09-27点击:139
  • 学会Sequelize,让你操作数据更丝滑!

    本文来介绍 Sequelize,一个基于 Node.js 的 ORM(对象关系映射)工具,并详细介绍其用法。Sequelize 用于在应用中使用 JavaScript 来操作关系型数据库,例如 MySQL、PostgreSQL 等。本文内容较多,可作为 Sequelize 的参考手册来阅读。开始使用核心概念Sequelize 是一个基于 JavaScript 的 ORM(对象关系映射)库...

    日期:2023-09-27点击:134
  • 聊聊Docker的各种有用命令

    聊聊Docker的各种有用命令

    昨天我们知道了如何在服务器上部署自己的微服务的项目,但是对于很多命令,有小伙伴们就开始疑惑了,命令那么多,我到底应该怎么知道哪些是自己可能会用到的,而且也想了解一下这个命令都是用来做什么的,今天了不起就来给大家伙说说这个Docker 中的各项的命令。毕竟开发都离不开实战。Docker 命令docker build [image_name] :基于Dockerfile构建一个镜像。这个我们都熟悉了,...

    日期:2023-09-27点击:145
  • 直播房间服务基于CQRS的架构演进实践

    直播房间服务基于CQRS的架构演进实践

    引言房间系统是直播业务的“基石”,开播和看播两大体系都是围绕房间场景展开。房间系统架构也经历一系列的升级和挑战,从房间读多活、混沌流量治理、热点发现、多级缓存等,支撑了S11破千万PCU的流量洪峰冲击。为了应对业务更大的挑战,基于CQRS思想,分离大流量的用户高读场景(Query)和注重数据强一致性的开播创建房间等写场景(Command)。对于用户端可以无状态无限制的扩容服务副本,做到支持更大线上...

    日期:2023-09-27点击:156
  • 一文读懂Spring框架中的不同类型事件

    一文读懂Spring框架中的不同类型事件

    大家好,我是小米!今天我们来聊一聊关于Spring框架中的一个有趣话题:不同类型的事件。Spring框架是Java开发中的一颗璀璨明珠,它不仅提供了依赖注入和面向切面编程等强大功能,还引入了事件机制,用于实现组件之间的松耦合通信。不过,你知道吗?Spring框架中有多种不同类型的事件,每一种都有其独特的用途和特点。今天,我们就来一一揭秘这些事件,让你深入了解Spring框架的内部机制。应用事件(A...

    日期:2023-09-27点击:136
  • 在C++中多使用const的理由

    在C++中多使用const的理由

    在C++编程语言中,我们常常看到const关键字的使用。它被广泛应用在各种情况下,以限制变量或对象的修改。那么,为什么我们建议在C++中多使用const呢?这篇文章将对此进行深入探讨,并从多方面阐述const的重要性。对象的不变性首先,const关键字可以帮助我们创建不可变的对象。一旦对象被声明为const,我们就不能改变它的状态。这在很多场合下是非常有用的。const int max_value...

    日期:2023-09-27点击:136
  • 性能要求高时,使用Const char*参数类型的优势

    性能要求高时,使用Const char*参数类型的优势

    在开发高性能的应用程序时,参数类型的选择对于代码的效率和性能至关重要。在C++中,有多种表示字符串的参数类型可供选择,其中包括const char和string。本文将重点讨论在性能要求高的情况下,使用const char参数类型的优势,以便程序员能够根据实际需求做出明智的选择。const char*参数类型的内存效率(1) 直接指向字符串内存const char*参数类型是一个指向字符数组的指针...

    日期:2023-09-27点击:138
  • Python条件语句和循环结构从入门到精通

    Python条件语句和循环结构从入门到精通

    条件语句和循环结构是编程中非常重要的概念,它们使我们能够根据不同的条件执行不同的代码块,以及重复执行特定的代码块。Python提供了强大而灵活的条件语句和循环结构,本文将从入门到精通地介绍它们的使用方法,并通过相关代码进行讲解。一、条件语句条件语句用于根据不同的条件执行不同的代码块。Python中最常用的条件语句是if语句,它的基本语法如下:if condition: # 当条件为真时执行...

    日期:2023-09-27点击:136
  • Python选择排序:简单而高效的排序算法解析!

    Python选择排序:简单而高效的排序算法解析!

    选择排序(Selection Sort)是一种简单但有效的排序算法。它的基本思想是每次从待排序的元素中选择最小(或最大)的元素,并将其放置在已排序序列的末尾。通过多次选择和交换操作,逐步将序列排序。本文将详细介绍选择排序算法的原理和实现,并提供相关的Python代码示例。一、算法原理选择排序算法的步骤如下:遍历待排序序列,将第一个元素视为当前最小(或最大)元素。在剩余的待排序序列中,找到最小(或最...

    日期:2023-09-27点击:155
  • 十道Java限流器面试题和答案

    十道Java限流器面试题和答案

    1. 什么是速率限制?速率限制是指对用户在一定时间段内向系统发出的请求次数进行控制,以保证系统的稳定性和资源的公平分配。2. 如何使用Java实现基本的限流器?可以使用令牌桶或滑动日志方法。public class RateLimiter { private final long maxRequests; private long lastRequestTime = System.curr...

    日期:2023-09-27点击:136
  • 为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?

    为什么 JavaScript 的 parseInt(0.0000005) 打印“5”?

    前言最近开发项目时遇到一个奇怪的问题,parseInt(0.0000005) === 5。正常情况下输出0是正确的,为什么是5呢?我们一起来探讨一下这个问题。1. 什么时候使用parseInt?首先,你通常什么时候使用parseInt?大多数时候,我们使用它来解析字符串并返回其整数部分。带着这个问题,我们来看看parseInt方法。2.关于parseInt的一些事情根据 MDN 文档,“parse...

    日期:2023-09-27点击:149
  • 关于架构“重构”的要点

    关于架构“重构”的要点

    一、代码重构的定义代码重构是指在不改变代码功能的前提下,通过修改代码的内部结构和外部表现形式,来提高代码的可读性、可维护性、性能和可扩展性的一种技术。代码重构通常包括以下几个方面:改进代码的结构,使代码更加清晰简洁;消除代码中的重复部分,减少代码冗余;提高代码的可读性,使代码更加易于理解和维护;提高代码的性能,减少代码的执行时间和内存占用;改善代码的可扩展性,使代码更容易被扩展和修改。二、代码重构...

    日期:2023-09-27点击:134
  • 超越像素:Java中的高级图像处理方法

    超越像素:Java中的高级图像处理方法

    1.图像模糊(Image Blur)在Java中,你可以通过处理图像像素来实现图像模糊。常用的图像模糊算法是高斯模糊算法,它通过对图像中的每个像素及其周围像素进行加权平均来实现模糊效果。下面是一个简单的Java代码示例,演示如何对图像进行高斯模糊:首先,你需要导入以下Java类和包:import java.awt.image.BufferedImage; import java.io.File; ...

    日期:2023-09-27点击:136
  • 停止用C++启动任何新项目!微软力推Rust重构Windows!

    停止用C++启动任何新项目!微软力推Rust重构Windows!

    编译丨千山相比Python、Java这样的主流语言,Rust可能还比较小众,但近两年其影响力和所受关注度却在与日俱增。在 StackOverflow 开发者调查问卷中,Rust连续八年蝉联最受欢迎编程语言榜首。在新近出炉的Tiobe九月编程语言排行榜中,Rust排名更是上升到第17位。不久前Jetbrains 官宣发布了独立的Rust IDE :RustRover(详见之前的报道《弃用开...

    日期:2023-09-27点击:139