
后端
文章平均质量分 77
我爱看明朝
这个作者很懒,什么都没留下…
展开
-
maven的一些命令
【代码】maven的一些命令。原创 2022-11-26 10:10:52 · 140 阅读 · 0 评论 -
maven的pom没有指定包的版本
输出依赖树包有具体的版本parent有定义版本https://stackoverflow.com/questions/12315746/what-will-the-version-be-when-i-dont-specify-it-in-the-mavens-pom-xml/12316462#12316462https://blog.youkuaiyun.com/kang389110772/article/details/106497338原创 2022-11-26 10:08:24 · 2069 阅读 · 0 评论 -
flask与fastapi性能测试
apache ab性能测试。原创 2022-11-26 09:56:06 · 3159 阅读 · 0 评论 -
SM4、AES、DES加解密算法性能比较
【代码】SM4、AES、DES加解密算法性能比较。原创 2022-11-26 09:52:17 · 7807 阅读 · 1 评论 -
一个字符占多少字符及varchar与char的区别
一个字符占多少字符,不同的编码规则占用字节不同。ASCII: 一个英文字符占用一个字节,一个中文汉字占用两个字节UTF-8: 一个英文字符占用一个字符,一个中文(含繁体)占用三个字节unicode: 一个英文字符占用两个字符,一个中文(含繁体)占用两个字节。原创 2022-09-24 14:34:11 · 3024 阅读 · 0 评论 -
入职中国平安三周年的一些总结
制品库承担支撑着平安集团30+子公司的3万研发人员日常持续集成。作为CI/CD制品库系统负责人,参与制品库从无到有的架构设计、开发、运维以及版本管理。原创 2022-07-02 13:21:03 · 2289 阅读 · 1 评论 -
testtesttesttest
算法位一个整形数组中除了两个数字之外,其他都出现了两次,请找出两个只出现一次的数字树1.树的后序排列2.判断数组是否是 树的后序遍历结果链表数组1.把数组排成最小的数2.找出数组中重复的超过一般的数字其他问题mysql1:MySQL 的逻辑架构了解吗?2:谈一谈 MySQL 的读写锁3:MySQL 的锁策略有什么?4:数据库死锁如何解决?5:事务是什么?6:事务有什么特性?7:MySQL 的隔离级别有哪些?8:MVCC 是什么?9:谈一谈 InnoDB10:谈原创 2022-04-23 23:50:59 · 1568 阅读 · 0 评论 -
docker客户端拉包逻辑及优化思路
docker客户端拉包逻辑及优化思路docker pull xxxxxxConcurrent downloadsBy default the Docker daemon will pull three layers of an image at a time. If you are on a low bandwidth connection this may cause timeout issues and you may want to >>lower this via the --m原创 2021-09-16 18:20:05 · 2776 阅读 · 0 评论 -
mybatis之bind模块
mybatis之bind模块mybatis通过定义接口mapper,不需要继承或实现接口,Mapper接口中的方法定义select|update|insert|delete方法,通过关联映射文件中定义的sql来执行查询。 .....org.apache.ibats ....................binding ...........................BindingException ...........................MapperMethod .....原创 2021-08-03 09:24:15 · 537 阅读 · 0 评论 -
mybatis之缓存模块
mybatis之缓存模块mybatis中存在一级(默认开启)、二级缓存。缓存可以加快查询速度,减少连接db的次数。cache模块属于mybatis的基础支持层。位于org.apache.ibatis.cache包下。--------org.apache.ibatis.cache-------------------------------decorators-----------------------------------------BlockingCache----------------原创 2021-07-28 09:17:17 · 242 阅读 · 0 评论 -
mybatis之Configuration解析
mybatis之Configuration解析<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration><!-- 配置属性,可以在整个配置文件中用来替原创 2021-07-14 21:08:37 · 1175 阅读 · 0 评论 -
mybatis四大金刚之executor执行器
mybatis四大金刚之executor执行器configuration.newExecutor()所有流程的开始public class DefaultSqlSession { @Override public <E> List<E> selectList(String statement, Object parameter, RowBounds rowBounds) { try { MappedStatement ms = configurati原创 2021-06-18 20:12:35 · 600 阅读 · 0 评论 -
mybatis实现自定义插件
mybatis实现自定义插件写本文的原因是在写制品库代码时遇到了下面了两个问题:Signature注解的各个属性的可选值为什么会@component和@bean注释的拦截器的不生效遂阅读了mybatis部分源码,找出问题2症结所在@Signature( type = StatementHandler.class, method = "prepare", args = {Connection.class, Integer.class})type:ParameterHanl原创 2021-06-18 20:11:21 · 948 阅读 · 0 评论 -
mybatis独立使用及源码分析
mybatis独立使用及源码分析不使用mybatis使用jdbcJdbcExamplepublic class JdbcExample { public static void main(String[] args) throws Exception{ Class.forName("org.postgresql.Driver"); String url = "jdbc:postgresql://10.25.76.198:5432/artifact";原创 2021-06-18 20:10:35 · 246 阅读 · 0 评论 -
spring-boot-starter机制
spring-boot-starter机制starter是什么在了解spring-boot-starter是什么前,我们先回忆一下,最开始我们使用spring,spring mvc时是怎么和其他组件进行整合的呢?没错,我们要配置很多模板xml文件,而且对新手不熟悉不注意那里配错了,排错就会花掉很多时间,没有做过上面整合的同学可以看我这篇博客 (搭建 spring + spring mvc +mybatis web项目)[https://blog.youkuaiyun.com/u013565163/article原创 2021-06-18 20:08:57 · 260 阅读 · 0 评论 -
java并发包中的AbstractQueuedSychronizer
java并发包中的AbstractQueuedSychronizer简介AQS: AbstractQueuedSychronizer(抽象的队列同步器)是java的J.U.C包中Lock、Semaphore、ReentrantLock等这些锁都是基于AQS框架实现的,核心AbstractQueuedSychronizer(抽象的队列同步器)核心: volatile int state (资源)FIFO(进程等待队列)对资源(state)有两种共享方式:exclusive独占锁: Reentr原创 2021-03-31 17:29:06 · 280 阅读 · 0 评论 -
python使用pytest在docker容器中进行单元测试
python使用pytest在docker容器中进行单元测试背景:需要开发插件支持pyton的单元测试,经调研认为pyetst比较合适。pytest执行测试下面测试python版本为3.8.1pytest可以直接在python-unittest-example目录下执行pytest#运行全部pytest 运行目录下所有单测案例#指定模块pytest /unit_test/base_test.py 运行base_test.py下的所有单测案例#生成xml报告pytest --ju原创 2021-03-31 17:27:19 · 2065 阅读 · 0 评论 -
几种均衡负载算法
几种均衡负载算法负载均衡load balance的意思由多机器组成的服务集群,集群中的每台机器能够均衡处理来自不同客户端的请求。它的作用是可以提升服务的吞吐量,利用多台普通的服务器到达大型主机的性能,节省服务器费用。负载均衡有硬件负载均衡如F5等;也有软件负载均衡如nginx,LVS等。本文介绍软件负载均衡算法。轮询法轮询法是指:按照请求的时间顺序分别发送不同的机器,又分为三种:完全轮询,加权轮询,平滑加权轮询。完全轮询认为每台机器的性能都是一样,地位平等。public class Ful原创 2021-03-16 18:08:06 · 401 阅读 · 0 评论 -
zookeeper指北
zookeeper指北zookeeper是什么zookeeper可以做什么zookeeper实战zookeeper原理1.zookeeper是什么一个分布式协调服务框架,简单点来说就是= 文件系统 + 监听通知机制定位更多的用到:服务注册中心2. zookeeper可以做什么可以用来解决分布式应用中经常遇到的一些数据管理问题如:统一命名服务(分布式唯一Id生成器)分布式锁服务注册中心配置中心分布式锁分布式锁三个特点:多进程可见、互斥、可重入利用zk所有写入都顺序经过l原创 2021-03-13 23:58:43 · 191 阅读 · 0 评论 -
二十一:redis主从复制实现原理
二十一:redis主从复制实现原理主从复制实现原理本文使用源码redis 2.2主从结构有两种结构:1.一主多从2. 级联结果复制方式分为:1.全量复制2. 增量同步全量复制: 发生在slave初始阶段及slave断线重新连接到master增量同步: 当全量复制完成后,主服务每执行一个写命令就会向从服务发送命令。全量复制1.当slave启动连接到master发送sync命令2.master接收到sync后,开始执行bgsave命令生成RDB3.master后续写入命令存入到原创 2020-11-23 14:41:07 · 423 阅读 · 0 评论 -
二十redis之gossip协议
二十redis之gossip协议gossip协议是p2p方式的通信协议。通过节点之间不断交换信息,一段时间后所有节点都会知道整个集群完整的信息。gossip算法,意思是八卦算法,在办公室中只要一个人八卦一下,在有限的时间内,办公室内的所有人都会知道八卦消息。算法过程:集群中的一个节点广播自身信息,部分节点收到了信息,这些节点再继续在集群中传播这个节点的信息,一段时间后整个集群中都有了这个节点的信息。实际上是gossip大部分节点都在一直做这个操作,所以集群在一段时间后信息透明。通信过程每一原创 2020-09-23 14:27:02 · 2949 阅读 · 0 评论 -
十九redis的架构模式
十九redis的架构模式期望架构能满足:高可用内存可扩展机器性能满足:读写网络流量能满足故障自动转移单机只有一个master承载整个业务的缓存层。优点:简单缺点:存在单点故障读写数据存在性能瓶颈内存有限主从模式一主多从优点:1. 简单2. 能够提供高性能的读数据缺点:1. 故障不能自动转移2. 写数据存在瓶颈3. 内存有限哨兵模式在主从模式的基础上,增加哨兵来进行自动故障转移。架构目标是高可用。优点:1. 故障自动转移,当master挂了原创 2020-09-16 11:13:59 · 334 阅读 · 1 评论 -
十八缓存和数据库一致性问题
缓存和数据库一致性问题目标使用缓存的目标是:提升系统吞吐量(A Availability高可用),如果方案为了达到了强一致性(C Consistency一致性),但是强烈影响了吞吐量,那就相当于没有用缓存。(ps:数据存在redis和db已经满足分区容错性P Partition tolerance, CAP只能同时满足其中两者)。几种方案操作缓存、更新数据库操作缓存先操作缓存,再更新数据库先更新数据库, 再操作缓存操作数据库有两种方式:更新缓存删除缓存什么是更新缓存: 数据不仅原创 2020-09-01 10:03:14 · 181 阅读 · 0 评论 -
十七:redis之通讯协议resp
十七:redis之通讯协议resp简述resp是redis serialization protocol的简称,resp是redis客户端与服务端进行通信的协议,它是构建于tcp协议之上的协议。其中批量字符串是一个二进制安全的协议。(下面在bluk strings详细说明为什么是安全的)特点resp协议有以下三个特点和优点:实现简单解析快速人类易读实现简单:通过以下几个简单的符号 +, -, $, *, :, \r, \n, 实现了协议。解析快速:不需要特殊的编码解码,只需要按照格原创 2020-08-25 18:08:56 · 668 阅读 · 0 评论 -
十六:一致性哈希算法
十六: 一致性哈希算法背景一致性哈希算法在1997年由麻省理工学院提出,是一种特殊的哈希算法,解决的问题目的是解决分布式缓存的问题。在移除或者添加一个服务器时,能够尽可能小地改变已存在的服务请求与处理请求服务器之间的映射关系。局限性增加机器、减少机器会导致部分键失效。可以通过增加虚拟节点来最大减少损失,当实际节点太少,加减机器会大范围影响哈希环中数据映射,因此这种不适合少数据节点的分布式缓存方案。算法解释四个节点均匀的落在了换上,每一节点存缓存上一个节点到他之间的hash值的key。如计原创 2020-07-16 11:21:52 · 180 阅读 · 0 评论 -
十五:Redis持久化之AOF
十五:Redis持久化之AOF本文源码基于redis2.2分析AOF为了解决生成快照时,因为保存rdb文件的导致redis阻塞,redis引入了bgsave方式,再一次为了解决不能实时的保存,redis引入了aof机制。以独立日志的方式记录每次写命令,重启时再重新执行AOF文件中的命令达到恢复数据的目的。AOF的主要作用是解决了数据持久化的实时性,目前已经是Redis持久化的主流方式。配置解释############################## APPEND ONLY MOD原创 2020-06-22 17:24:20 · 302 阅读 · 0 评论 -
十四:Redis持久化之rdb
十四:Redis持久化之rdbRedis提供了两种持久化的方式:AOF与RDB: RDB偏重在保存某个时间redis的快照;AOF偏重在实时保存的效率上。两者方案侧重点不同。RDBRDB:redis database 意思时在指定时间间隔内将内存中的数据写入到磁盘也就是说一段时间对redis进行一次快照;rdb写入的是二进制数据所以文件大小也更紧凑些。RDB: 一般应用在对数据冷备、复制传输,重启redis加载rdb的数据也更快一些。配置项可以在redis.conf中配置是否开启RDB(原创 2020-06-19 17:28:53 · 578 阅读 · 0 评论 -
十三: redis--发布订阅模式使用及场景
十三: redis–发布订阅模式使用及场景发布订阅模式一般用来做广播,发布者发送消息到指定的通道,订阅者订阅指定的通道,当发布者发送了新的消息,订阅者可以马上收到消息,一个通道可以有多个订阅者,后面订阅的订阅者不能收到之前的消息,因为发布订阅不做消息持久化以及ack确认消息消费。所以如果做消息队列是不能满足生产消息不能丢失的情况,已经吞吐率。命令publish解释发送消息到指定通道返回的结果表示有少个订阅者用法 publish channelName msg示例12原创 2020-06-18 10:20:27 · 1337 阅读 · 0 评论 -
十二:redis击穿、穿透、缓存雪崩
十二:redis击穿、穿透、缓存雪崩概念区分: 击穿、穿透、雪崩大量流量下:缓存层DB场景存在存在正常(使用缓存)不存在存在缓存击穿不存在不存在缓存穿透击穿: 大量的key过期,导致请求高峰,瞬间大量流量压到了DB;穿透: 大量请求缓存、DB不存在的数据,一般是恶意攻击;雪崩:缓存层服务不在提供服务,所有请求流量压到了DB,导致DB无法对外正常提供服务,进而波及使用这个DB的相关系统,最终导致整个系统崩溃;击穿大量的key过期,导致请原创 2020-06-15 15:40:19 · 218 阅读 · 0 评论 -
十一:redis之布隆过滤器的使用与应用场景
十一:redis之布隆过滤器的使用与应用场景什么是布隆过滤器我们会遇到一些场景,判断元素是否在集合中。我们可以采用的方案有set。我们来看这两个方案的优缺点如果我们使用set来进行判断元素是否在集合中,那么假设每一个元素的32Bit(2^24 ≈ 1600万; 2^32 ≈ 42亿),假设我们存储1亿个不重复的元素那么我们需要 100 000 000 * 32 /8/1024/1024 ≈ 381MB;布隆过滤器的空间占有有一个简单的计算公式,但是推到比较繁琐。布隆过滤器有两个参数,预计元素数量原创 2020-06-12 16:10:13 · 1394 阅读 · 0 评论 -
十:redis之HyperLogLog的使用与应用场景
十:redis之HyperLogLog的使用与应用场景HyperLogLog为实现一种基数统计的算法,redis采用HyperLogLog来进行基数统计。(redis2.8.9及之后的版本有提供这个功能)基数统计; 通常来统计一个集合中不重复的元素个数。为什么使用HyperLogLog而不是set或者bitmap如果我们使用set来进行基数统计,那么假设每一个元素的32Bit(2^24 ≈ 1600万; 2^32 ≈ 42亿),假设我们存储1亿个不重复的元素那么我们需要 100 000 00原创 2020-06-11 17:18:27 · 1346 阅读 · 0 评论 -
代码检查技术Checkstyle与p3c调研
代码检查技术Checkstyle与p3c调研1.功能及差异1.1 检查语言代码检查JavaC语言javascriptCheckstyle√××P3c√××1.2 Jdk版本支持代码检查支持jdk版本CheckstyleCheckstyle7 >= jdk1.8P3c>jdk1.61.3 使用方式代码检查Idea插件Eclipse插件Maven插件命令独立执行Checkstyle原创 2020-06-03 15:24:11 · 2027 阅读 · 0 评论 -
九redis之bitmap位图
九redis之bitmap位图redis2.2.0开始支持的对bitmap进行操作(位图本质上使用的string数据类型)。bitmap通过使用一个bit来表示某个元素对应的值或状态,bit的值只有0,1默认为0。一个byte可以存8个bit,使用bitmap我们可以极大的节省空间。命令setbit解释设置或清除位图上指定偏移位的值,value必须是0,1;如果键不存在,则命令会先创建一个字符串数据类型的键,当设置的偏移位不存在,字符串的长度会自动增长,字符串的最大有2^32位(也就原创 2020-05-25 11:47:51 · 354 阅读 · 0 评论 -
kill -9与kill -15的区别(以kill nginx的master进程举例)
kill -9与kill -15的区别(以kill nginx的master进程举例)解释nginx -9 一般用来强制关闭进程,直接关闭(极端情况下使用此命令)。nginx -15 通知进程关闭,会等待进程及其相关的资源释放。kill nginx master我们直接上图,看下分别使用kill: -9,-15来关闭nginx的主进程。kill -9 nignxMaster从上图中我们可以看到,直接kill -9掉master进程,nginx的work进程并没有停止,如果这个时候我们启动ng原创 2020-05-20 15:56:31 · 1640 阅读 · 0 评论 -
处理nignx报413错误
处理nignx报413错误报错原因nginx报413 Request Entity Too latger原因是请求体太大,nginx报异常处理方案下面两个值建议设置大一点(5000M)。http { client_max_body_size xxxM; client_body_buffer_size xxxM;}client_max_body_size : 设置允许客户端最大的请求体,nginx默认为1M。client_body_buffer_size : 如果请求的数据小原创 2020-05-18 10:57:35 · 493 阅读 · 0 评论 -
使用try-with-resources优雅的关闭流
使用try-with-resources优雅的关闭流java7之前关闭流的方式在java7之前关闭流,是一件非常麻烦的事情,要写很多异常处理,我们来看看代码public void readFirstLineFromFile(String path) { BufferedReader br = null; try { br = new BufferedReader(new FileReader(path)); System原创 2020-05-12 11:17:15 · 1933 阅读 · 0 评论 -
八: redis的sortset数据类型常见命令、内部编码、场景
八redis的sortset数据类型常见命令、内部编码、场景有序保存多个不重复的字符串的集合。常见命令zadd解释有序集合插入元素以及元素的分数(分数支持双精度浮点数)。如果本次插入的元素已经存在,则更新元素的分数,并且重排序。如果键不存在,则创建Key。如果其中元素的分数相同,则按照字典序排序。用法 zadd key [NX|XX] [CH][INCR] socre member [score member]NX: 仅仅更新元素的分数,元素必须存在才能操作成功XX: 仅仅添加原创 2020-05-11 18:45:51 · 520 阅读 · 0 评论 -
七redis的set数据类型常见命令、内部编码、场景
七redis的set数据类型常见命令、内部编码、场景保存多个不重复的字符串的集合。常见命令sadd解释往集合中添加元素,如果值已经存在,则忽略。如果键不存在,则创建键后往键里添加元素。用法 sadd key value示例127.0.0.1:6379> sadd key1 1(integer) 1127.0.0.1:6379> sadd key2...原创 2020-04-17 18:25:52 · 634 阅读 · 0 评论 -
使用openresty通过lua修改请求/响应头
openresty介绍在使用nginx时,如果我们想进行开发,开发难度比较大,openresty对nginx核心集成了很多lua三方模块,开发者可以使用lua脚本进行开发,开发者只需了解http协议和lua脚本。openresty你可以理解为支持lua开发的nginx,但是性能比nginx强。openresty可提供:均衡负载、请求路由、安全认证、服务鉴权、流量控制、日志监控服务等。根据op...原创 2020-04-15 15:58:08 · 22416 阅读 · 0 评论 -
五:redis的hash数据类型常用命令、场景、源码分析
五:redis的hash数据类型常用命令、场景、源码分析哈希数据类型存储key在field和value中,如果存储一个用户的信息key是user:id,field为nickname,age,sex,value存储对应的值,可以快速查找用户信息的某个属性。命令hset解释:设置/更新hash类型的键值对用法: hset key field value本文分析的源码是基于redis...原创 2020-03-20 18:10:33 · 278 阅读 · 0 评论