负载均衡和反向代理的区别

一个宁静祥和没有bug的下午和SqlSession的故事

1 背景 这是一个安静祥和没有bug的下午。作为一只菜鸡,时刻巩固一下基础还是很有必要的,如此的大好时机,就让我来学习学习mybatis如何使用。 这可和我看到的不一样啊,让我来看看项目里怎么写的。 我们项目中的Dao都继承于BaseDao,而BaseDao继承于SqlSessionDaoSuppo ......
SqlSession 故事 bug

深刻理解JAVA并发中的有序性问题和解决之道

问题 Java并发情况下总是会遇到各种意向不到的问题,比如下面的代码: int num = 0; boolean ready = false; // 线程1 执行此方法 public void actor1(I_Result r) { if(ready) { r.r1 = num + num; } ......
有序性 问题 JAVA

使用.NET7和C#11打造最快的序列化程序-以MemoryPack为例

译者注 本文是一篇不可多得的好文,MemoryPack 的作者 neuecc 大佬通过本文解释了他是如何将序列化程序性能提升到极致的;其中从很多方面(可变长度、字符串、集合等)解释了一些性能优化的技巧,值得每一个开发人员学习,特别是框架的开发人员的学习,一定能让大家获益匪浅。 简介 我发布了一个名为 ......
序列 MemoryPack 程序 NET7 NET

C++ 日期和时间编程总结

在 C++11 之前,C++ 编程只能使用 C-style 日期时间库,其精度只有秒级别,这对于有高精度要求的程序来说,是不够的。但这个问题在C++11 中得到了解决,C++11 中不仅扩展了对于精度的要求,也为不同系统的时间要求提供了支持。另一方面,对于只能使用 C-style 日期时间库的程序来... ......
日期 时间

Golang反射获取变量类型和值

1. 什么是反射 反射是程序在运行期间获取变量的类型和值、或者执行变量的方法的能力。 Golang反射包中有两对非常重要的函数和类型,两个函数分别是: reflect.TypeOf 能获取类型信息reflect.Type; reflect.ValueOf 能获取数据的运行时表示reflect.Val ......
变量 类型 Golang

重学c#系列——逆变和协变[二十四]

前言 简单整理一下逆变和协变。 正文 什么是逆变和协变呢? 首先逆变和协变都是术语。 协变表示能够使用比原始指定的派生类型的派生程度更大的类型。 逆变表示能够使用比原始指定的派生类型的派生程度更小的类型。 这里student 继承 person。 这里这个报错合情合理。 这里可能有些刚入门的人认为, ......

重学c#系列——委托和匿名函数[二十五]

前言 简单介绍一下什么是委托。 正文 以前也写过委托,这次算是重新归档,和新的补充吧。 https://www.cnblogs.com/aoximin/p/13940125.html 有些人说委托是函数指针的包装,也有些人说委托是一个方法或多个方法的引用。 这都是没有问题,委托是一个概念,微软官方文 ......
函数

.NET性能优化-ArrayPool同时复用数组和对象

前两天在微信后台收到了读者的私信,问了一个这样的问题,由于私信回复有字数和篇幅限制,我在这里统一回复一下。读者的问题是这样的: 大佬您好,之前读了您的文章受益匪浅,我们有一个项目经常占用 7-8GB 的内存,使用了您推荐的ArrayPool以后降低到 4GB 左右,我还想着能不能继续优化,于是 du ......
数组 ArrayPool 对象 同时 性能

研究光度立体法阶段性小结和优化(可20ms获取4个2500*2000灰度图的Normal Map)。

这个东西是我接触的第一个非2D方面的算法,到目前为止其实也没有完全搞定,不过可能短时间内也无法突破。先把能搞定的搞定吧。 这个东西也有一大堆参考资料,不过呢,搜来搜去其实也就那些同样的东西,个人觉得就属这个文章最经典,既有说明,也有图片,还有代码: Photometric Stereo Chaman ......
光度 灰度 阶段性 小结 立体

把Mybatis Generator生成的代码加上想要的注释

作者:王建乐 1 前言 在日常开发工作中,我们经常用Mybatis Generator根据表结构生成对应的实体类和Mapper文件。但是Mybatis Generator默认生成的代码中,注释并不是我们想要的,所以一般在Generator配置文件中,会设置不自动生成注释。带来的问题就是自动生成代码之 ......
注释 Generator Mybatis 代码

为什么标准库的模板变量都是inline的

最近在看标准库里的type_traits的时候发现了个有趣的地方,几乎所有在标准库里的变量模板都是inline的! 不仅常见的实现上(libstdc++、libc++、ms stl)都是inline的,标准里给的形式定义也是inline的。 比如微软开源的stl实现:https://github.c ......
变量 模板 标准 inline

详解蓝牙模块的分类

从蓝牙模块的不同的分类方式上去梳理蓝牙模块的类型,详细的从分类方式的角度去了解蓝牙模块所具备一些特性和功能。 ......
模块

模拟Promise的功能

模拟Promise的功能, 按照下面的步骤,一步一步 1. 新建是个构造函数 2. 传入一个可执行函数 函数的入参第一个为 fullFill函数 第二个为 reject函数; 函数立即执行, 参数函数异步执行3. 状态一旦更改就不可以变更 只能 pending => fulfilled 或者 pen ......
Promise 功能

Go | 闭包的使用

闭包基本介绍 闭包就是 一个函数 和其相关的 引用环境 组合的一个整体 好处: 保存引用的变量,下次继续使用,不会销毁 下面通过闭包的方式,写一个数字累加器,体验一下闭包的妙处👇 闭包实现数字累加 package main import "fmt" // 累加器 // 闭包 - 函数柯里化 // ......
闭包 Go

Web 实战:可滑动的标签页

实现效果图 本随笔只是记录一下大概的实现思路,如果感兴趣的小伙伴可以通过代码和本随笔的说明去理解实现过程。 Gitee GitHub 构建静态页面 可滑动的页面需要 5 个 div,标签也需要 5 个。只有页面是随着我们操作而变化,标签处于静态,标签下面有一个滑块也是随着我们操作而变化。所以,构建基 ......
实战 标签 Web

高并发下丢失更新的解决方案

作者:谢益培 1 背景 关键词:并发、丢失更新 预收款账户表上有个累计抵扣金额的字段,该字段的含义是统计商家预收款账户上累计用于抵扣结算成功的金额数。更新时机是,账单结算完成时,更新累计抵扣金额=累计抵扣金额+账单金额。 2 问题及现象 发现当账单结算完成时,偶尔会发生累计抵扣金额字段值更新不准确的 ......
解决方案 方案

防御式编程之断言assert的使用

防御式编程的重点就是需要防御一些程序未曾预料的错误,这是一种提高软件质量的辅助性方法,断言assert就用于防御式编程,编写代码时,我们总是会做出一些假设,断言就是用于在代码中捕捉这些假设。使用断言是为了验证预期的结果——当程序执行到断言的位置时,对应的断言应该为真;若断言不为真时,程序会终止执行, ......
assert

【高并发】由InterruptedException异常引发的思考

写在前面 InterruptedException异常可能没你想的那么简单! 前言 当我们在调用Java对象的wait()方法或者线程的sleep()方法时,需要捕获并处理InterruptedException异常。如果我们对InterruptedException异常处理不当,则会发生我们意想不 ......
InterruptedException

目标检测模型的评价标准-AP与mAP

为了了解模型的泛化能力,即判断模型的好坏,我们需要用某个指标来衡量,有了评价指标,就可以对比不同模型的优劣,并通过这个指标来进一步调参优化模型。对于分类和回归两类监督模型,分别有各自的评判标准,目标检测模型评价指标主要包含 f1、ap、map、roc计算公式及代码实现与auc曲线绘制等。 ......
模型 目标 标准 mAP AP

实践案例:平安健康的 Dubbo3 迁移历程总结

本篇是 Apache Dubbo 的实践案例。感兴趣的朋友可以访问官网了解更多详情,或搜索关注官方微信公众号 Apache Dubbo 跟进最新动态。 1 背景 我们公司从15年开始就使⽤dubbo作为微服务框架,当社区推出dubbo3时,我们也⽴刻跟进并做了深⼊调研,发现dubbo3 的应⽤/实例 ......
历程 案例 Dubbo3 Dubbo

用最少的代码打造一个Mini版的gRPC框架

在《用最少的代码模拟gRPC四种消息交换模式》中,我使用很简单的代码模拟了gRPC四种消息交换模式(Unary、Client Streaming、Server Streaming和Duplex Streaming),现在我们更近一步,试着使用极简的方式打造一个gRPC框架(github地址)。这个g... ......
框架 代码 Mini gRPC

基于 RocketMQ 的 Dubbo-go 通信新范式

RocketMQ 新功能尝鲜!让 Dubbo-go 通过 RocketMQ 进行 RPC 通信来扩展 Dubbo-go 的通信方式,利用 Dubbo-go 丰富的服务治理能力和 RocketMQ 稳定的 RPC 通信能力,两者强强联合,打造 RPC 通信新范式。 ......
范式 RocketMQ Dubbo-go Dubbo go

火山引擎 DataLeap 的 Data Catalog 系统公有云实践

Data Catalog 通过汇总技术和业务元数据,解决大数据生产者组织梳理数据、数据消费者找数和理解数的业务场景。本篇内容源自于火山引擎大数据研发治理套件 DataLeap 中的 Data Catalog 功能模块的实践,主要介绍 Data Catalog 在公有云部署和发布中遇到挑战及解决方案。 ......
火山 DataLeap Catalog 引擎 系统

盘点JAVA中基于CAS实现的原子类, 你知道哪些?

前言 JDK中提供了一系列的基于CAS实现的原子类,CAS 的全称是Compare-And-Swap,底层是lock cmpxchg指令,可以在单核和多核 CPU 下都能够保证比较交换的原子性。所以说,这些原子类都是线程安全的,而且是无锁并发,线程不会频繁上下文切换,所以在某些场景下性能是优于加锁。 ......
原子 JAVA CAS

dotnet new cli 以及Abp-cli命令的简单使用

1:要求 首先dotnet new 需要 .NET Core 3.1 SDK 以及更高版本 dotnet new - 根据指定的模板,创建新的项目、配置文件或解决方案 2:变化 从 .NET 7 SDK 开始, dotnet new 语法已更改: --list、--search、--install  ......
cli 命令 Abp-cli dotnet Abp

JavaScript入门⑤-欲罢不能的对象原型与继承-全网一般图文版

JavaScript 中的所有对象本质上都是通过new ()创建出来的,包括字面量的{obj},也是new Object()的语法糖。每一个实例对象都有自己的原型,基于原型创建这个对象,Function本身也是一个对象。 ......
欲罢不能 全网 原型 JavaScript 对象

面向大规模队列,百万并发的多优先级消费系统设计

大规模队列的核心诉求,不仅需要「快」,还需要兼顾「公平」。 01 引言 HTTP是一种常用的通信协议,除了常见网站访问、上传下载,HTTP协议还经常被用在消息推送场景上。 设想你搭建了一个电商平台,有很多大型商家入驻了该电商平台并售卖各类商品,在消费者购买某个商品后,平台会通过HTTP协议将消费者购 ......

关于 .NET 在不同操作系统中 IO 文件路径拼接方法,升级 .NET 7 后注意到的一个知识点

.NET 现在支持跨平台这件事情已经是众所周知的特点了,虽然平台整体支持跨平台了,但是我们的代码如果真的想要实现跨平台运行其实还是有些小细节要注意的,今天想要记录分享的就是关于 文件I/O操作时路径的拼接问题。 在 Windows 环境下我们常见的路径格式如下: D:\Software\AppDat ......
知识点 路径 NET 文件 方法

孤儿进程与终端的关系

孤儿进程与终端的关系 孤儿进程 在本篇文章当中主要给大家介绍一下有关孤儿进程和终端之间的关系。 首先我们的需要知道什么是孤儿进程,简单的来说就是当一个程序还在执行,但是他的父进程已经退出了,这种进程叫做孤儿进程,因为父进程死亡了,因此被叫做孤儿进程。孤儿进程会被进程号等于 1 的 init 进程收养 ......
孤儿 终端 进程

基于sklearn的集成学习实战

本文主要跟随Datawhale的学习路线以及内容教程,详细介绍了集成学习常见的多个算法的基于sklearn的实现过程,同时还有两个案例,内容丰富。 ......
实战 sklearn