自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 资源 (2)
  • 问答 (1)
  • 收藏
  • 关注

原创 Mysql的page,索引,Explain Type等基本常识

索引分为两种primary index,通常也是clustered index(聚集、聚簇索引),它的叶子节点会保存实际的物理数据secondary index,通常也是辅助索引,非聚集索引,它叶子几点保存为主键,而不是实际的物理数据,一般来说除了主键索引,一般都是这个,因为为了降低索引的成本而设计的如果通过secondary index查出了需要的数据行,但是在secondary index中没有需要的列怎么办呢?

2023-08-30 19:36:34 701

原创 缓存一致性如何保障- 延迟双删

如果要保持缓存数据绝对的一致性,只能用锁或者分布式锁,但是通常来说,加锁就打打的降低了性能,得不偿失的。对于T1来说,为了避免更新操作有效,他需要在第一次删除的操作后,在接下来的某个时间段,再次删除缓存,为了避免T2的极端情形,我们可以使用延时MQ来再次删除缓存,保证我们的更新有效。如果说,上面的极端情形下,一直存在,那么这个场景就说明了API处理的时间太长了,建议优化流程或者加锁。缓存如果发生改变的话,那么,不建议直接做redis缓存中的更新操作。通常来说,如果T1执行了如下操作。

2023-08-07 06:59:27 209

原创 window安装TensorFlow遇到的问题

通常来说,官方文档作为一个建议,因为和国内场景会有些比较大的区别,当然参考文档 https://www.tensorflow.org/install/pip?python建议升级到python3.0+,这里通过Anaconda来升级到最新版本,Anaconda升级参考。通过pip来安装TensorFlow,参考文章。升级后,python升级到最新版本。在安装过程中如果遇到。

2023-08-04 15:17:07 228

原创 Java 监听Mysql binlog

java如何监听binlog

2023-08-03 16:11:47 2212

原创 高并发之限流-RateLimiter

由于设置了预热时间是3秒,令牌桶一开始并不会0.5秒发一个令牌,而是形成一个平滑线性下降的坡度,频率越来越高,在3秒钟之内达到原本设置的频率,以后就以固定的频率输出。表现形式如下图所示,令牌刷新的时间间隔由长逐渐变短。它有三个步骤,一是调用 resync函数增加令牌数,二是计算预支付令牌所需额外等待的时间,三是更新下次获取令牌时间 nextFreeTicketMicros和存储令牌数 storedPermits。在下面代码中,有一个请求会直接请求5个令牌,但是由于此时令牌桶中有累积的令牌,足以快速响应。

2023-06-16 15:19:39 2282

原创 redis缓存

在活动,比如618的时候,会有大量的数据比如上亿的数据需要缓存在redis中,但是你不可能给这几亿的数据完全放在redis中,因为28定律的存在,通常大量的数据中,只有几乎20%的数据才会被访问,所以,一般来说是只会缓存这20%的数据,另外,活动应该是额外的指定商品的,而且数据一般也不是那么大。如果有效期设置的不好的,几乎存在大量的数据同时失效,导致redis几乎不存在,或者redis宕机了,而且没有持久化的话,那么重启后,大量数据缓存失效,导致mysql在高并发的情形下,系统崩溃了。

2023-05-31 01:32:04 54

原创 基于jenkinsfile布置java工程

jenkinsfile的语法参考: https://www.jenkins.io/doc/book/pipeline/,查看简单的配置文件。这样的话,一个简单的基于jenkinsfile的流程就结束了,如果还需要复杂的流程就需要其他的配置了,这个另外再说。直接看注释吧,简单点就是编排可以多个跨时间的构建代理,可以理解为构建部署项目的工作流。通过jenkins发布java项目到服务器。3. 在项目中配置jenkinsfile。4. 配置jenkinsfile。什么是pipeline?

2023-05-04 23:17:12 676

原创 The repository ‘https://pkg.jenkins.io/debian-stable binary/ Release‘ is not signed.

参考链接:https://www.jenkins.io/blog/2023/03/27/repository-signing-keys-changing/查阅了相关资料后,发现如果安装新版本的话,需要更新signing key。ubuntu 22.04安装jenkins,总是报错。

2023-05-03 10:50:47 1136

原创 kubernetes安装

忘记了重新获取:kubeadm token create --print-join-command。安装网络插件,否则 node 是 NotReady 状态(主节点跑)使用命令hostname查看当前主机的hostname。记得把 kubeadm join xxx 保存起来。如果必要的话,请关闭所有的SELinux和防火墙。如果status不是ready的话,日志输出,successfully。

2023-05-03 09:46:01 700

原创 docker容器技术

Docker 使用 Google 公司推出的 Go 语言 进行开发实现,基于 Linux 内核的 cgroup,namespace,以及 OverlayFS 类的 Union FS 等技术,对进程进行封装隔离,属于 操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。最初实现是基于 LXC,从 0.7 版本以后开始去除 LXC,转而使用自行开发的 libcontainer,从 1.11 版本开始,则进一步演进为使用 runC 和 containerd。

2023-05-03 09:30:20 1958

原创 rabbitmq集群-镜像模式

它和普通集群最大的区别在于 Queue 数据和原数据不再是单独存储在一台机器上,而是同时存储在多台机器上。也就是说每个 RabbitMQ 实例都有一份镜像数据(副本数据)。每次写入消息的时候都会自动把数据同步到多台实例上去,这样一旦其中一台机器发生故障,其他机器还有一份副本数据可以继续提供服务,也就实现了高可用。

2023-03-08 18:51:40 1371

原创 rabbitmq集群-普通模式

普通集群模式,就是将 RabbitMQ 部署到多台服务器上,每个服务器启动一个 RabbitMQ 实例,多个实例之间进行消息通信。此时我们创建的队列 Queue,它的元数据(主要就是 Queue 的一些配置信息)会在所有的 RabbitMQ 实例中进行同步,但是队列中的消息只会存在于一个 RabbitMQ 实例上,而不会同步到其他队列。当我们消费消息的时候,如果连接到了另外一个实例,那么那个实例会通过元数据定位到 Queue 所在的位置,然后访问 Queue 所在的实例,拉取数据过来发送给消费者。

2023-03-08 14:30:50 2035

原创 spring-boot rabbitmq整合

默认的消费策略是轮询策略,这个方法待优化,很明显在现实开发过程中是不可能这么写的。生产者将信道设置成confirm模式,一旦信道进入confirm模式,所有在该信道上面发布的消息都会被指派一个唯一的ID(从1开始,单调递增),一旦消息被投递到所有匹配的队列之后,broker就会发送一个ACK给生产者(包含消息的唯一ID)消费者收到消息后,手动调用basic.ack/basic.nack/basic.reject后,RabbitMQ收到这些消息后,才认为本次投递成功,换句话说,这也是和业务做耦合的。

2023-03-03 20:14:43 639

原创 spring boot + rabbitMq整合之死信队列(DL)

DXL-Dead Letter 死信队列死信,在官网中对应的单词为“Dead Letter”,可以看出翻译确实非常的简单粗暴。那么死信是个什么东西呢?消息被否定确认,使用 channel.basicNack 或 channel.basicReject ,并且此时requeue 属性被设置为false。通常来说,如果consumer如果消费出现异常,并且没有ack的话,也属于这种情况消息在队列的存活时间超过设置的生存时间(TTL)时间。消息队列的消息数量已经超过最大队列长度。

2023-03-03 01:02:07 799

原创 spring boot + rabbitMq整合之持久化

另外,做个autoDelete和durable的补充,autoDelete的意思是指在某个时间段exchange或者queue被使用,比如没绑定exchange,queue或者consumer,那么是否被删除,逻辑上说不可以的,因为某个时间后如果还需要使用呢?删除的风险是非常大的。我们重启服务器,看到TestNotDurableDirectQueue 已经被删除了,那么表示队列未被持久化。durable是默认为true的,那么表示在服务器重启的时候,服务器会持久化保留该消息。

2023-02-20 16:14:30 330

原创 redis的持久化

append only file,独立日志的方式记录命令(写操作),文件可能比较大,同步评率有如下选择。选择经常,或者每秒,但是同步会消耗磁盘,降低速度,但是丢失的数据量可能比较少。两种方式都采用,数据比较重要的用aof,分数据库采用rdb。优化: 命令重写,避免对相同的数据操作重复。aof的优先级 > rdb.

2022-11-18 09:28:05 155

原创 如何理解mysql的事务中的acid中单consistency

为什么要一致,可能为什么要一致,这个比较要理解,为了避免数据乱七八糟被,比如,A+B账户总计100元,无论A,B之间如何转账,A+B账户总计都应该是100。忽然看到这个例子就很明白了,一致性是指,事务结束后,前一个状态和后一个状态要符合。可以确定的是某个状态下的数据,比如事务commit后的数据,那么它需要和谁保持一致呢?它可能需要和commit之前的数据要保持业务逻辑一致,它也可能需要和数据库定义的类型保持一致,等等。那么为什么要这么要求呢?很显然为了保持数据的准确性和可靠性,才能和事务设计的初衷一致。

2022-10-25 21:17:02 251

原创 mybatis plus + shardingsphere读写分离+分表

mybatis plus是国内基于mybatis做出一个开源工具包,是一个 MyBatis (opens new window)的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。简单来说就是代替mybatis的一个orm访问工具,但是功能更强大,这里不多赘述,因为我们就是用它的orm功能,其他的查看文档。官方文档官方文档。

2022-10-23 19:05:29 3974

原创 电商之库存超卖或者秒杀超卖问题

在秒杀活动或者是11.11或者6.18场景中,对于某个商品在某个时间段,瞬间出现大量的的购买订单,导致库存读取不正确,销售量超过了实际的库存,但是超卖了todo适用架构: 单体架构锁也是在单体架构中也是一个选择锁的实现有很多其他的方式,但是原理大概都是相同的。适用架构:单体+分布式原理:redis本身支持多线程,操作是队列有序的setNx语句支持,Redis Setnx(SET if Not eXists) 命令在指定的 key 不存在时,为 key 设置指定的值。java代码redis + lua代码

2022-07-13 17:09:16 673

原创 vue-cli使用搭建前端项目

安装好了后,执行vue -V查看版本,如果有发现vue 不知内部命令的,那么参考安装vue-cli提示vue不是内部或外部命令时的解决方法2. 在父目录下执行假定名字为vue-cli-ui-app3. 进入项目根目录vue-cli-ui-app,执行进入项目编辑页面结束,方便有快捷...

2022-06-26 12:11:36 181

原创 代理模式 spring简单应用

当前有M个场景S1,S2…Sm,他们有相同的行为和方法,假设有N种方法,所以总共有如下在外部每次调用接口时候,都会根据入参来决定场景是哪个?所以说决定场景的是方法级别。现在我们需要一个类提供外部使用,他需要满足下面的要求相同的行为,不同的场景实现不同,对外一个共同的接口,一看就知道使用设计模式中的Proxy模式,那就我们先看看代理模式的简单UML图吧(图侵删:参考 https://www.runoob.com/design-pattern/proxy-pattern.html)假设我们有个共同的类,定义

2022-06-09 16:34:05 302

原创 skywalking 跨线程追踪链路

需求在skywalking的使用中,对于使用executorService中的多线程中的场景通常会失效,导致无法追中链路解决方案增加依赖 <dependency> <groupId>org.apache.skywalking</groupId> <artifactId>apm-toolkit-trace</artifactId> <version>${skywalking.version}<

2022-03-04 15:46:10 2565

原创 Jmeter 性能测试小知识

如何新建测试计划,请参考其他博客自定义动态变量场景:在每次test plan中,在request body中需要动态的预先生成某种变量或者key,每次test plan都是不同的,在请求中,消息体如下:{ "sku": "${sku1}", "sellerSku": "${sku1}", "cartSku": "${sku1}", "size": "33*01*${__Random(10,99,)}mm", "barcode": "${barcode1}",

2022-01-20 11:00:00 179

原创 使用Monstache迁移mongodb同步到elastic-search

需求商品大量数据存储在Mongodb,但是对于页面展示和搜索的话,效率太低,而且db中的数据很多对于搜索来说是不需要的,所以,需要将数据同步给elastic search, 但是如果业务人员手动同步的话,那么会大大增大业务人员的开发量。经过调研的话,采用Mongostache来实时监听和同步数据。什么是Monstachemonstache是个数据迁移工具,它可以实现通过监听oplog或者change-stream(这取决于Mongodb版本),实现数据从mongodb->elasticSearc

2021-12-08 21:12:01 1256

原创 多线程交替打印ABC

需求使用三个线程,1,2,3,分别负责打印A,B,C,打印10次。分析分析锁的获取和释放和通知,线程堵塞方式1,使用ReentrantLock使用ReentrantLock(true)公平锁,再设置操作的标志位current(A,B,C),当current和当前线程负责打印的字段相同,执行操作,否则释放锁,执行完,释放锁,代码如下:public class PrintABCTask extends Thread { private static ReentrantLock lock =

2021-11-05 04:51:13 858

原创 Spring feign cloud支持表单等数据类型

Spring Cloud FeignClient支持表单等数据Spring Cloud Feign Client默认仅仅提供了application/json格式的支持,当然,Spring cloud feign client支持自定规则,如contract,encoder,decoder等等,通常我们会自定义个业务feignClient自定义Feignclient@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)@Docu

2021-07-12 19:42:21 744 4

原创 xlsx发现不可读取的内容,是否恢复此工作簿的内容?

问题描述Excel生成在生成流并且打包到.zip文件的时候,从网络上copy了一段代码,自己修改了部分,代码如下: public void saveAsZip(String xlsxName, OutputStream output) throws ExcelException { if (getWorkbook() == null || output == null) { throw new ExcelException("Workbook is null

2021-04-13 16:43:26 1837 2

原创 Mysql 批量操作,存在更新,不存在插入

需求场景在大量数据插入,但是有很多重复数据。假设有如下数据表格语法如下INSERT INTO `table_name` (clo1,col2,...) VALUES (val1-1,val1-2,...),(val2-1,val2-2,...),(val3-1,val3-2,...),ON DUPLICATE KEY UPDATE clo1= VALUES(clo1),clo2= VALUES(clo2);首先,我们需要定义一个unique key来避免重复键在 ON DUPLI

2020-12-14 16:31:20 983

原创 反序列化与基本类型

需求json字符串(string)->reflect.type,无法知道是否为基本类型。步骤判断是type是否为初始类型 public static boolean isPrimitiveType(Type type) { Class<?> typeClz = (Class<?>) type; return Stream.of(String.class, Integer.class, Double.class, Float.cl

2020-11-11 14:34:50 233 1

原创 java mongod访问方式

参考simple-use-case-comparison-jvmgetting-started/quick-startjongo语法1.MongoDb 脚本db.friends.find({age: {$gt: 18}})2.Java Driverfriends.find(new BasicDBObject("age",new BasicDBObject("$gt",18)))3.jongofriends.find("{age: {$gt: 18}}").as(Friend.cl

2020-10-16 17:39:34 130

原创 基于Spring Boot消费一个Webservice

基于Spring Boot消费一个Webservice参考文档:基于Spring Boot创建一个Webservice项目代码参考:web-service-consumer已知一个soap的webService,通过api去调用web service服务。wsdl根据wsdl来生成对应的java bean使用插件org.codehaus.mojo.jaxb2-maven-plugin,在pom.xml中引入插件,代码如下: <plugins> <plu

2020-09-22 11:37:47 187

原创 Webservice,基于Spring Boot

WebService参考文档producing-web-service/consuming-web-service什么是WebService?What are Web Services?创建一个WebService定义.xsd文件,在其中,定义java bean<?xml version="1.0" encoding="UTF-8"?><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tns=

2020-09-21 20:02:42 118

原创 Mybatis高级结果映射

ReferencesAdvanced Result MapsUse mybatis to map one to many(1->n) model, data mode is like the following tracking packages address itemstracking(1)->packages(n) | address, packages(1)-&g

2020-08-31 20:12:53 224

原创 八皇后问题

参考资料:五大常用算法之四:回溯法漫画:什么是八皇后问题?八皇后问题总结:N皇后问题,N格棋盘,对于第N个皇后而言,第N个皇后放在第N行。重点在于如何处理回溯的问题。回溯可能有但不限有如下情形本身发现可以放置皇后的第N个,这时,只需要回溯到前一个N-1的行数,然后位置往后重新找一个新的位置就可以了。如果这个回溯的点(N-M)不是最初回溯的点,即已经对棋盘的数据进行了占用(对二维数组做了赋值处理),那么就需要注意了取消因为(n-m)在放置时,对棋盘数据的赋予的值,还原数据到(n-m-1)的情

2020-07-09 20:40:30 103

原创 Jackson序列化,反序列化,和泛型

Jackson和泛型在序列化和反序列化的过程中,泛型是永远离不开的主题,那么泛型有哪几种呢?Jackson又是如何来处理这些问题的呢?泛型的类型参考indexNameExample1ParameterizedType参数化类型,即泛型;例如:List、Map<K,V>等带有参数化的对象,自定义的如Box也是2TypeVariable类型变量,即泛型中的变量;例如:T、K、V等变量,可以表示任何类;在这需要强调的是,TypeVariable代表着泛型中的变

2020-06-11 14:07:12 4333

原创 idea笔记-折叠代码

折叠代码更新了idea,把折叠代码忘记了,如果代码过多的话,那么难免看起来非常累,所以这时候需要代码折叠功能了,File->Settings->Editor->General->Code Folding,点击选上Show code folding outline, 就可以折叠代码了,还可以定义自动折叠功能。效果图入下:...

2020-01-08 15:03:19 282

翻译 HATEOAS (Hypermedia as the Engine of Application State)

HATEOAS Driven REST APIsHATEOAS (Hypermedia as the Engine of Application State) is a constraint of the REST application architecture that keeps the RESTful style architecture unique from most other ...

2020-01-02 18:10:35 419

翻译 REST架构限制

参考文档: rest-architectural-constraintsREST stands for Representational State Transfer, a term coined by Roy Fielding in 2000. It is an architecture style for designing loosely coupled applications ove...

2020-01-02 10:17:14 459

翻译 REST 资源命名规则

REST Resource Naming Guide文档链接: resource-namingIn REST, primary data representation is called Resource. Having a strong and consistent REST resource naming strategy – will definitely prove one of t...

2019-12-30 20:14:21 1595

翻译 什么是REST

关于rest api的一些规范和开发模式参考文档什么是REST APIrestfulapi什么是RestREST is acronym for Representational State Transfer. It isarchitectural style for distributed hypermedia systems and was firstpresented by...

2019-12-30 17:55:31 174

SSH注解方式整合小例子

适合ssh初学者,分享促进进步

2016-11-12

premiere pro cs4汉化补丁

premiere pro cs4汉化补丁,解压后可直接点击安装

2014-05-26

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

TA关注的人

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