博客 RSS 訂閱

京東雲開發者 - 一種基於閉包函數實現自動化框架斷言組件的設計實踐 | 京東物流技術團隊

1 背景 目前測試組同學基本具備自動化腳本編寫能力,為了提高效率,如何靈活運用這些維護的腳本去替代部分手工的重複工作?為了達到測試過程中更多的去使用自動化方式,如何能夠保證通過腳本覆蓋更多的校驗點,提高自動化測試的精度和力度?那麼一定是不斷的豐富斷言,符合預期場景。緊接着棘手的問題就是,在前人維護的腳本不清楚如果在方法內部修改?擔心修改原來邏輯影響正向流程運行?一個斷言方法希望應用到更多的用例中?

函數 , 閉包 , 測試 , 自動化測試

收藏 評論

jungang - 瞭解JavaScript閉包機制

介紹 JavaScript中的閉包是一種強大的概念,它允許我們在函數內部創建和訪問私有變量,並且可以在函數外部繼續使用這些變量。理解閉包的工作原理對於編寫高質量的JavaScript代碼至關重要。本文將深入探討JavaScript閉包的機制,並結合最佳實踐和代碼示例進行詳細説明。 什麼是閉包? 閉包是指函數能夠訪問並操作其詞法作用域外部的變量的能力。當一個函數內部定義了另一個函數,並且內部函數引用

閉包 , 前端 , Javascript

收藏 評論

歸思君 - 聊一聊 JavaScript 中的作用域和閉包

哈嘍大家好,我是歸思君~ 一、引言 我們知道,作用域(Scope)就是代碼中變量和函數的可訪問的區域,這個區域中決定了變量和函數的生命週期。在當前的高級程序語言中,主要有詞法作用域(靜態作用域)和動態作用域兩種。 靜態作用域:其作用域是在編寫代碼時就已經確定好,靜態作用域是根據變量和函數在代碼中的位置來決定。函數尋找變量時,是在函數定義的位置中尋找,而不是調用的位置。現在大多數編程語言都採用的

作用域 , 閉包 , 作用域鏈 , 前端 , Javascript

收藏 評論

Hunter - Python筆記三之閉包與裝飾器

本文首發於公眾號:Hunter後端 原文鏈接:Python筆記三之閉包與裝飾器 這一篇筆記介紹 Python 裏面的裝飾器。 在介紹裝飾器前,首先提出這樣一個需求,我想統計某個函數的執行時間,假設這個函數如下: import time def add(x, y): time.sleep(1) return x + y 想要統計 add 函數的執行時間,可以如何操作,在一般

閉包 , 裝飾器 , 後端 , Python

收藏 評論

Steven - 瀏覽器中的JavaScript執行機制

在瀏覽器中,JavaScript 代碼通常是通過若干個 script 標籤引入的。而瀏覽器在執行每個 script 標籤時,會有如下特點: 每個 script 標籤引入的 JavaScript 代碼,都是一個宏任務(也就是説,微任務隊列必須在下一個script標籤執行前,全部執行完畢)。 那麼,每個 JavaScript代碼的執行機制是什麼的呢?接下來詳細介紹一下。 變量提升 每一段 Jav

閉包 , 執行上下文 , this , 作用域鏈 , Javascript

收藏 評論

李遊Leo - JavaScript閉包深入剖析:性能剖析與優化技巧

一、引言 在 JavaScript 的奇妙世界裏,閉包無疑是一個既強大又迷人的特性。它就像是一把萬能鑰匙,為開發者打開了實現各種高級功能的大門。從數據封裝與保護,到函數的記憶化,再到模塊化開發,閉包都發揮着舉足輕重的作用。在實際開發中,我們常常利用閉包來創建私有變量和方法,避免全局變量的污染,提高代碼的可維護性和安全性。例如,在一個大型的 Web 應用中,我們可以使用閉包來封裝一些只在特定模塊內部

閉包 , Javascript

收藏 評論

Hunter - Golang基礎筆記八之函數

本文首發於公眾號:Hunter後端 原文鏈接:Golang基礎筆記八之函數 本篇筆記介紹 Golang 裏函數相關的內容,以下是本篇筆記目錄: 函數的定義語法 函數返回值 可變參數函數 匿名函數 閉包 1、函數的定義語法 函數的定義格式如下: func 函數名(參數列表) (返回值列表) { 函數體 } 比如下面是一個兩數相加返回其和的函數: func add(a, b in

函數 , 閉包 , go , 後端

收藏 評論

威哥愛編程 - 一文講透布隆過濾器原理和實現

布隆過濾器(Bloom Filter)是一種空間效率很高的概率型數據結構,用於測試一個元素是否是一個集合中的成員。它允許一些誤報(false positive),但不允許誤漏(false negative)。這意味着,如果布隆過濾器説一個元素不在集合中,那麼這個元素確實不在集合中;但如果它説一個元素在集合中,那麼這個元素可能在集合中,也可能不在。 布隆過濾器的基本原理: 位數組:布隆過濾器使用

redis , 數據結構 , java-ee , 算法 , JAVA

收藏 評論

威哥愛編程 - Nginx性能調優5招35式不可不知的策略實戰

Nginx是一個高性能的HTTP和反向代理服務器,它在全球範圍內被廣泛使用,因其高性能、穩定性、豐富的功能以及低資源消耗而受到青睞。今天V哥從5個方面來介紹 Nginx 性能調優的具體策略,希望對兄弟們有幫助,廢話不多説,馬上開整。 1. 系統層面: 調整內核參數:例如,增加系統文件描述符的限制、TCP連接隊列的大小等。 網絡優化:可以使用TCP Fast Open、選擇更高效的網絡協議等。

性能優化 , java-ee , JAVA , Nginx

收藏 評論

威哥愛編程 - 如何理解http與https協議,他們有什麼區別?

寫在前面的話,關於 HTTP 和 HTTPS 的問題,常常會被很多學習者忽略,HTTP、HTTPS 不就是網址的開頭嗎,有啥好了解的,瀏覽器的引擎實現了這個協議,在開發關係不大,但想要深入一些理解數據傳輸原理,瞭解這兩個概念是必須的,以下的內容為概念性,幫助小夥伴們瞭解 HTTP 和 HTTPS 的關鍵點。 HTTP(HyperText Transfer Protocol,超文本傳輸協議)和HTT

java-ee , HTTP , HTTPS , JAVA

收藏 評論

威哥愛編程 - Redis高可用解決方案哨兵模式與集羣模式的比較

哨兵模式和集羣模式是Redis提供的兩種不同的高可用性和擴展性解決方案,它們各自有不同的特點和適用場景。 哨兵模式(Sentinel) 主要關注於高可用性,通過監控主節點和從節點的狀態,實現故障檢測和自動故障轉移 。當主節點發生故障時,哨兵會選舉一個從節點作為新的主節點,並通知其他從節點和客户端更新配置。它適用於對數據高可用性要求較高,但不需要特別大的數據量的場景,通常應用於小型和中型系統。

redis , java-ee , JAVA , 分佈式

收藏 評論

威哥愛編程 - Volatile不保證原子性及解決方案

原子性的意義 原子性特別是在併發編程領域,是一個極其重要的概念,原子性指的是一個操作或一組操作要麼全部執行成功,要麼全部不執行,不會出現部分執行的情況。這意味着原子性操作是不可分割的,它們在執行過程中不會被其他操作中斷或干擾。 原子性的意義在於它保證了數據的一致性和程序的正確性。在多線程或多進程的環境中,當多個操作同時訪問和修改共享數據時,如果沒有原子性保證,可能會導致數據不一致或不確定的結果。例

原子操作 , java-ee , JAVA , volatile , 原子性

收藏 評論

威哥愛編程 - Netty的源碼分析和業務場景

Netty 是一個高性能、異步事件驅動的網絡應用框架,它基於 Java NIO 構建,廣泛應用於互聯網、大數據、遊戲開發、通信行業等多個領域。以下是對 Netty 的源碼分析、業務場景的詳細介紹: 源碼概述 Netty 的核心組件:Netty 的架構設計圍繞着事件驅動的核心思想,主要包括 Channel、EventLoopGroup、ChannelHandlerContext 和 Channe

java-ee , netty , JAVA

收藏 評論

威哥愛編程 - spring為什麼使用三級緩存而不是兩級?

今天來聊一聊關於 Spring 為什麼使用三級緩存的問題,先説結果哈,Spring框架中的三級緩存主要用於解決循環依賴問題,特別是在單例Bean的創建過程中。 下面V哥會解釋為什麼Spring需要三級緩存,而不是僅僅使用兩級的原因。 一級緩存(Singleton Objects):存儲已經完全初始化好的單例Bean。當一個Bean被成功創建並注入到其他Bean中後,它會被放入一級緩存中。 二

spring , java-ee , 緩存 , JAVA

收藏 評論

威哥愛編程 - 【讀源碼】Netty框架Future模式源碼深度剖析

Netty 是一個高性能的網絡編程框架,廣泛用於構建高性能、高可靠性的網絡服務器和客户端程序。它的核心特性之一是其異步編程模型,而這種模型是通過 Future 模式實現的。 Netty 中的 Future 模式 在 Netty 中,Future 是一個非常重要的概念,它代表了一個可能尚未完成的異步操作。Netty 的 Future 接口繼承自 Java 的 java.util.concurrent

future , java-ee , netty入門 , netty , JAVA

收藏 評論

威哥愛編程 - Java RMI技術詳解與案例分析

Java RMI(Remote Method Invocation)是一種允許Java虛擬機之間進行通信和交互的技術。它使得遠程Java對象能夠像本地對象一樣被訪問和操作,從而簡化了分佈式應用程序的開發。一些應用依然會使用 RMI 來實現通信和交互,今天的內容我們來聊聊 RMI 的那些事兒。 一、先來了解一下概念 RMI原理 RMI的基本思想是遠程方法調用。客户端調用遠程方法時,實際上是發送一個調

java-ee , rmi框架 , JAVA

收藏 評論

威哥愛編程 - MinIO的分佈式系統是如何確保數據一致性的?

MinIO是一個高性能的開源對象存儲服務器,它與Amazon S3兼容,適用於存儲備份、大數據分析等多種應用場景。MinIO追求高性能和可靠性,採用去中心化的架構設計,不依賴任何單個節點,即使某些節點發生故障,整個系統也能正常運行 。它還支持分佈式部署,可以輕鬆擴展存儲容量和性能。 MinIO的技術架構主要包括服務器核心、分佈式系統、認證和安全性組件以及客户端庫。服務器核心負責處理存儲和檢索對象,

minio , java-ee , springcloud , JAVA , 分佈式

收藏 評論

威哥愛編程 - 【超長文】Redis在項目中的17種使用場景

Redis 是一個開源的高性能鍵值對數據庫,它以其內存中數據存儲、鍵過期策略、持久化、事務、豐富的數據類型支持以及原子操作等特性,在許多項目中扮演着關鍵角色。以下是V哥整理的17個Redis在項目中常見的使用場景: 緩存:Redis 可以作為應用程序的緩存層,減少數據庫的讀取壓力,提高數據訪問速度。 會話存儲:在 Web 應用中,Redis 可以用來存儲用户的會話信息,如登錄狀態、購物車內容

redis , java-ee , JAVA , 分佈式 , 後端

收藏 評論

威哥愛編程 - 【金九備戰】Spring Cloud Consul 面試題

在面試中,你有沒有被問到 Spring Cloud Consul 相關的問題呢?針對這個問題,我需要了解 Consul 的基本概念、核心功能、與 Eureka 和 Zookeeper 的區別、服務註冊和發現機制、以及健康檢查配置等,這些是展示你的技術功底和對微服務架構理解的考驗,廢話不多説,以下這些內容都是要清楚的。 首先,要説一下Consul是什麼。Spring Cloud Consul 是 S

spring , java-ee , spring-cloud , JAVA

收藏 評論

威哥愛編程 - OpenFeign深入學習筆記

OpenFeign 是一個聲明式的 Web 服務客户端,它使得編寫 Web 服務客户端變得更加容易。OpenFeign 是在 Spring Cloud 生態系統中的一個組件,它整合了 Ribbon(客户端負載均衡器)和 Eureka(服務發現組件),從而簡化了微服務之間的調用。 在 SpringCloud 應用中,我們經常會 使用 OpenFeign,比如通過定義一個接口並使用註解的方式來創建一個

spring-cloud-feign , java-ee , spring-cloud , openfeign , JAVA

收藏 評論

威哥愛編程 - 使用 Nacos 實現動態路由

Hello,大家好,我是 V 哥。最近寫到 使用 Nacos 實現動態路由的問題,整理了一下思路和案例,分享給大家。 使用 Nacos 實現 Spring Cloud Gateway 的動態路由,主要涉及到以下幾個步驟: 添加依賴:在 Spring Cloud Gateway 應用的 pom.xml 文件中添加 Nacos 相關依賴。 配置 Nacos:在 application.yml 或

nacos , java-ee , springcloud , JAVA

收藏 評論

威哥愛編程 - 瞬時流量過大,如何實現服務熔斷、降級和限流

大家好,我是V哥,國足0-7不敵日本,創下12年來最大慘敗,真的好久不看球賽了,我關心的是,作為國內唯一一家轉播平台愛奇藝體育昨天崩了,官方道歉文中解釋由於瞬時流量過大導致,這讓我想起服務熔斷、降級和限流是微服務架構中用於提高系統穩定性和可用性的三種關鍵策略。 介紹 服務熔斷(Circuit Breaker) 服務熔斷是一種防止服務故障蔓延的機制。它的概念來源於電力系統中的熔斷器,當電流超過電路的

java-ee , springcloud , JAVA

收藏 評論

威哥愛編程 - 【好文】反模式:10種濫用設計模式案例分析

Hello,大家好,我是V哥。很多文章都在介紹設計模式怎麼用,講解設計模式的原理等等,設計模式的思想是編程中的精髓,用好了可以讓代碼結構利於維護和擴展,同時代碼風格也更加優雅,V 哥也寫過這樣一篇文章,但很少有人從反模式的角度來講一講,過度濫用設計模式將給項目帶來災難。 設計模式反模式(Anti-Pattern)是指那些表面上看起來像是設計模式,但實際上會導致軟件設計問題的做法。這些做法可能會導致

設計模式 , java-ee , JAVA

收藏 評論

威哥愛編程 - Java實現加入購物車怎麼做數據定位?

大家好,我是 V 哥。在實現"加入購物車"的場景中,數據定位是指通過特定的標識符和索引快速定位到需要操作的數據,以提高查詢效率和保證數據的一致性。對於購物車系統而言,數據定位的關鍵在於如何唯一確定用户購物車中的商品,並保證在高效檢索的同時避免併發問題。下面我將詳細説明如何通過不同方式進行數據定位: 一、通過主鍵和外鍵實現數據庫數據定位 在購物車場景中,用户ID和商品ID是兩個核心的標識符,用於唯一

java-ee , JAVA

收藏 評論