自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 荒谬1:C++比C性能高

既然是比较,那就必须尽可能是相同逻辑,相同操作方式,同样足够简单和明了。就不使用任何算法从头到尾循环,单线程,只要不乱拷贝都是远远高于std::string,当然std::string_view类似,甚至比你写的char。在实际的情况中,由于C++有许多的库,因此更不会去操作基础类型,所以性能会差更多,比如最简单的字符串操作,在C++中没人会去使用char。吧,如果你有兴趣的话,可以做这样的事情,读取一个10M的文件,然后替换部分的内容,使用std::string和char。2、可以吵架,但不能对人;

2023-09-09 16:17:01 80 1

原创 Swagger的离线文档自动生成

Swagger的离线文档一、引言众所周知,Swagger需要在微服务运行的时候才能查看文档,那么在开发过程中,由于频繁地调试项目,Swagger文档将处于几乎无法使用的情况。那么使用如何离线文档呢?二、离线文档的选型1、Swagger2Markup:这是一个开源项目,项目的主页为:https://github.com/Swagger2Markup/swagger2markup具体用法可参照:https://cloud.tencent.com/developer/article/1332445

2021-07-21 16:43:23 1801

原创 让Mapper做更复杂的事情——GroupBy

此文之前先发一段鸡汤吧,至今我依然记着这么三段话:1、 人类进步最大的动力是懒;2、 能用机器完成的事情绝对不应该用人工来完成;3、 让框架来适应业务,而不是业务适应框架。1背景之前完成了,让通用Mapper支持Join的功能,再查阅业务代码,另一个常出现的XML就是SUM,COUNT,MAX,MIN 的相关统计的功能。当然用其他方式也能实现统计,比如Spark,Flink等大数据实时计算框架,但是这在绝大部分中小公司来说性价比是非常低的,本文暂不讨论,实时数据的计算。1.1 需要了解但是不介绍

2020-06-06 14:35:03 5950 2

原创 让通用Mapper支持Join

关于关系型数据库的Join关于关系型数据库的Join一直是争论不休的。笔者应该是在十年前就不太赞成Join的方式,主要是使用两个思路:1、 冗余字段,后台保证数据的一致性,前端只需要基于ORM的单表查询即可。2、 使用多个基于主键的查询来替代Join查询,利用数据库和自定义两级缓存保证效率。然而,在许多的业务中,恐怕正常情况也都不会轻易去修改ER模型,毕竟可能带来的伤害太大了,并且上述两种方式对于n:n的关系上是几乎无能为力的。同样现在的公司业务也是充斥着大量的Join,前段时间向主程了解了下,大

2020-05-30 19:00:55 1543

原创 通用Mapper的运行时注册

通用Mapper的运行时注册一. 背景在上一篇文章中介绍了JavaAssist的进阶的使用,主要是为了生成tkMybatis的Mapper和实体类,样例如下图所示图一 生成的类的样例1.1 需要探索的问题1、 Spring为了实现IOC,都会把Bean转化成BeanDefinition的方式保存在Map中,通常两种方式动态添加Bean比较常见,如图二所示图二 动态添加Bean的两种方式2、 在Mybatis中,我们知道最终的Bean是MapperProxy,这个是也是使用JavaAss

2020-05-22 16:24:03 351 2

原创 JavaAssist的进阶使用

JavaAssist的进阶使用1、 JavaAssist的介绍与常见使用方法众所周知,JavaAssist和CGlib作为两个著名的操作Java的ByteCode方式,笔者认为JavaAssist更加灵活些,而CGlib更偏向定制化的应用,比如SpringBoot;而JavaAssist有一级项目吗?笔者知道的有Dubbo和Mybaits。我们先看JavaAssist的常用功能。1.1 ClassPool的获取通常我们用以下方式来获取默认ClassPool池:ClassPool pool = Cl

2020-05-18 19:29:06 1522 1

原创 基于Redis的单个IP一段时间限制

基于Redis的单个IP一段时间限制一、实现类接口被刷攻击应该是很常见的情况,特别是与用户名密码相关的接口,赶紧补上ip一段时间访问限制的控制吧,基本原理也能用于抢购。我们先看Redis有这样一个命令:SETNX:将 key 的值设为 value ,当且仅当 key 不存在。若给定的 key 已经存在,则 SETNX 不做任何动作。SETNX 是『SET if Not eXists』(...

2020-05-07 09:34:46 381

原创 一文读懂ClassLoader二

上文中介绍了自定义Classloader,以及class自动生成,加解密。那么本文主要针对URLClassLoader进行自定义。一、 网上重载URLClassLoader的代码以及问题下面是一段网上能够找到的一段代码,如图一所示,我们还可以把List改为ConcurrentHashMap完成单个的Jar的加载与卸载。初见这段代码是很奇怪的,于是我做了个试验。调用方式分别如下: 1、 ...

2020-05-04 16:23:24 301

原创 一文读懂Classloader(一)

一文读懂Classloader(一)附赠JavaAssist和CGlib的部分用法一、 略过的部分这个主题源自一个朋友的问题:如何在区块链上安全地完成热更新。自定义Classloader是一个比较成熟的方式,但是需要解决几个问题:1、 生成.class的安全问题2、 如何避免.class在JVM中加载的是旧版本的代码3、 如何动态生成.class文件按照惯例,我们依然省略一些基础但是...

2020-05-03 18:28:44 190

原创 Spring动态数据库源和主从切换

一、 略过不讲的部分1、 动态数据源AbstractRoutingDataSource的使用;2、 非事务的情况下动态数据源基于AOP的切换3、 注解@Order、@Transational的作用4、 Bean的生命周期以上问题需要掌握,可自行百度二、 动态数据库源与主从切换中碰到的问题与解决2.1 动态数据源碰到的问题笔者是这样完成动态数据源和事务切换的,如图一:1、在非事务...

2020-04-26 20:18:21 725

原创 ThreadLocal与FastThreadLocal的全面分析改进

ThreadLocal和相关的内容一、 略过但是需要掌握的内容1、 ThreadLocal的作用与使用2、 ThreadLocalMap的结构与和Thread的关系3、 ThreadLocalMap中的Entry为什么Key是WeakReference4、 ThreadLocal是否会内存泄露上面这些内容可以自行百度,先针对第四个问题做一些展开二、 ThreadLocal的内存泄露条...

2020-04-23 11:59:17 619

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除