- 博客(47)
- 资源 (2)
- 收藏
- 关注
原创 Netty实现WebSocket及分布式解决方案
Override// 处理客户端传输过来的消息log.debug("接收到消息:{}", content);@Overridelog.error("处理命令错误", cause);
2024-09-01 23:09:49 1224
原创 RocketMQ&Kafka重试队列
重试的主要流程:1、consumer消费失败,将消息发送回broker;2、broker收到重试消息之后,先存储到定时队列里;3、根据重试次数,经过一定延迟时间后,重新投递到retryTopic;4、consumer会拉取consumerGroup对应的retryTopic的消息;5、consumer拉取到retryTopic消息之后,转换为原始的topic,由messageListener实现类消费。
2024-08-21 23:13:08 879
原创 灰度发布--Spring Cloud Gray
特性支持灰度调用通过feign,restTemplate(通过注解@LoadBalanced 基于ribbon实现负载均衡)调用,支持灰度追踪支持自动注册为灰度服务,默认不自动注册优先走灰度服务,其次走正常服务支持修改服务状态,以此实现破窗能力通过破窗能力,实现蓝绿发布其它待补充介绍设计思想见Spring Cloud Gray - 微服务灰度中间件结构划分spring-cloud-gray-client定义了一套灰度路由决策模型,灰度信息追踪模型,以及和spring-clo
2021-08-08 12:11:42 1765 2
原创 主键ID生成方案--类snowflake(雪花算法)方案
雪花算法是什么?雪花算法最早是Twitter内部使用的分布式环境下的唯一ID生成算法,于2014年开源。雪花算法的特性能满足高并发分布式系统环境下ID不重复基于时间戳,可以保证基本有序递增安全性,无规则,不顺序,防止数据被轻易爬取雪花算法的组成使用雪花算法生成的主键,二进制表示形式包含4部分,从高位到低位分表为:1bit符号位、41bit时间戳位、10bit工作进程位以及12bit序列号位。符号位,预留的符号位,恒为零。时间戳位(41bit)工作进程位是java进程内唯一的,10位
2020-11-01 16:51:19 4899
原创 常见负载均衡算法及路由策略
总是第一个xxl-job的实现方式com.xxl.job.admin.core.route.strategy.ExecutorRouteFirst@Overridepublic ReturnT<String> route(TriggerParam triggerParam, List<String> addressList){ return new ReturnT<String>(addressList.get(0));}最后一个com.xxl.j
2020-09-20 16:35:21 1209 1
原创 集合类的数据一致性
数据一致性概念数据一致性,通常指数据在某个时间点多个副本中的一致性。比如同一份数据如果既存在关系型数据库汇中,又存在于Redis中,那么如何来保证它的双写一致性呢?除了这种时间点的一致性问题,在数据库中也会要求具备一致性,即ACID中的C(Consistency)。在分布式系统中,通常为了保证AP而采用最终一致性,即BASE理论中的E(Eventual Consitency)。一致性级别强一致性,在任意时刻,所有副本中的数据是一样的。弱一致性,相对于强一致性,即可能存在某些副本中数据是不一致的。
2020-09-20 15:04:32 618
原创 通过jmx监控jvm信息
jmx概念JMX(Java Management Extensions,即Java管理扩展)是Java平台上为应用程序、设备、系统等植入管理功能的框架。通过JMX,我们可以监控Java应用程序运行状态,如内存、线程等信息。常用的运维监控如jconsole,jvisualvm,Zabbix、prometheus(通过jmx_exporter采集)等工具对JVM本身的监控都是通过JMX获取的信息。MBean托管Bean(Managed Bean,MBean)是一种通过依赖注入创建的JavaBean。托管
2020-09-10 22:16:07 1572
原创 robots协议限制爬虫
Robots 协议(也称为爬虫协议等)的全称是「网络爬虫排除标准」(Robots Exclusion Protocol)。网站通过 Robots 协议告诉搜索引擎哪些页面可以抓取,哪些页面不能抓取。
2020-09-06 22:51:29 6215
原创 flyway简介
flyway是什么,为什么需要flywayFlyway是一款管理并跟踪数据库迁移(migrate)的数据库版本管理工具。它可以像SVN管理不同人的代码那样,管理不同人的sql脚本,从而做到数据库同步。它可以帮助我们在不同环境保持数据库的同步,减少手工操作,同时也减少了遗漏的机会。flyway可以集成在项目中,可以与Spring 框结合。在项目发版时,自动执行数据库脚本,无需人为执行数据库同步操作。flyway工作原理一言以蔽之:flyway通过历史记录表(flyway_schema_histor
2020-09-02 00:11:56 9118 1
原创 flyway项目中集成方式
项目集成方式springboot&springmvc&多数据源配置方式注意事项文件路径、命名方式、repair方式、回调时间、并发支持
2020-09-02 00:10:40 2054
原创 模板方法模式
概念模板方法模式属于行为型模式。它定义了一个操作中算法的骨架, 并将一些步骤延迟到子类中。模板方法模式可以让子类在不改变算法整体结构的情况下,重新定义算法中的某些步骤。模板方法模式的优点如下:方法分为不变部分、可变部分。不变部分的算法封装在父类中实现,可变部分算法由子类继承实现,便于在子类中继续扩展。这符合开闭原则。在父类中提取了公共的部分代码,便于代码复用。缺点如下:对每个不同...
2020-04-22 17:48:53 163
原创 mysql ONLY_FULL_GROUP_BY
背景 select user_id, max(create_time) as create_time,is_success from user_login_log group by user_id上面的sql与上篇博文一致,由于之前接触过其它数据库,比如sqlserver,oracle,初看这条语句时,我认为它是有问题的,因为is_success并不在group by子句中。直到今天,...
2019-11-24 02:07:30 259
原创 mysql派生表合并
前几天笔者在CR一段sql时,发现一处逻辑问题,原sql如下: select user_id, max(create_time) as create_time,is_success from user_login_log group by user_id这里是想取分组后最新的一条记录,但事实上is_success字段与最新时间并不是同一条记录于是,改写如下:select user_i...
2019-11-21 00:37:19 507
原创 工厂模式
概念工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的方式。主要思想就是替代new为我们创建对象,工厂可以选择创建对象的方法,对这个构造过程(创建方法)进行选择的逻辑就是工厂模式的逻辑。 这样也是为了给以后的系统带来更大的可扩展性,实现低耦合。工厂模式有三种,简单工厂模式,工厂方法模式,静态工厂模式。先说下...
2019-11-14 00:13:42 93
原创 ThreadPoolExcutor 线程池
昨天在查看项目时,偶尔看到代码里通过静态代码块实现的单例模式的线程池,如下:public static final ThreadPoolExecutor threadPool;static { int nCpu = Runtime.getRuntime().availableProcessors(); int maxPoolSize = (2 * nCpu) + 1; ...
2019-11-09 22:38:59 482
原创 mysql排序不稳定问题
现象当order by中的列具有相同的值时,每次查询到的顺序存在不一致的现象,如下:类似的,在分页排序中,有的数据会在页面连续出现多次,有的数据则在数据中一次也不能出现。为什么会出现此现象PageHelper首先将前端传递的参数保存到page这个对象中,接着将page的副本存放入ThreadLoacl中,这样可以保证分页的时候,参数互不影响,接着利用了mybatis提供的拦截器,取得T...
2019-11-03 16:23:59 3161
原创 RocketMQ消费重试问题
异常现象监控日志展示如下:[2019-10-30 14:31:23.339 INFO ] [ConsumeMessageThread_7] (com.xxx.service.mq.MQConsumerService:93) - 消费消息:msgId=0A064C3E000179C63692734B339201B0 topic=topic_xxx tag=yyy reconsumeTimes=1...
2019-10-30 23:13:51 2714
原创 观察者模式
观察者模式,是对象行为型模式中的一种。观察者模式的主旨是定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。观察者模式也可以称为发布/订阅模式,发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。观察者模式提供了一种对象设计,让主题和观察者之间耦合度降得很低,为什么呢?关于观察者的一切,主题只知道观察者实现了Obser...
2018-03-21 14:32:39 145
原创 ThreadLocal 线程复用的问题
Java中的ThreadLocal类允许我们创建只能被同一个线程读写的变量。因此,如果一段代码含有一个ThreadLocal变量的引用,即使两个线程同时执行这段代码,它们也无法访问到对方的ThreadLocal变量。在我们日常 Web 开发中难免会遇到需要把一个参数层层的传递到最内层的情况,但是中间层可能根本不需要使用这个参数,因此这样我们完全没有必要在每一个方法里面都传递这样一个通用的参数。...
2018-03-19 17:39:58 3953
原创 Redis基本类型及Jedis对其的操作
Redis数据结构类型简介Redis是一种高级的key:value存储系统,其中value支持五种数据类型:String、Hash、List、Set和Sorted Set。 每种数据类型可以用多种方式编码:字符串(String)可以被编码为 raw (常规字符串) 或者int (用字符串表示64位无符号整数这种编码方式是为了节省空间).列表类型(List)可以被编码为ziplist 或...
2018-03-17 16:33:51 1118
转载 Java时间类总结
java时间类总结jdk1.8之前java.util.Date包含有年月日时分秒,精确到毫秒级别。// The class Date represents a specific instant in time, with millisecond precision.// 语句Date date = new Date();System.out.println(date);...
2018-02-09 11:36:24 242
原创 Maven配置详解
setting.xml主要用于配置maven的运行环境等一系列通用的属性,是全局级别的配置文件 所在目录1. ${M2_HOME}/conf/settings.xml2. ${user.home}/.m2/settings.xml //需自1处拷贝样例: settings xmlns="http://maven.apache.org/SETTINGS/1.0.0
2018-01-26 16:48:55 294
原创 spring properties的配置与使用
spring配置PropertyPlaceholderConfigurerbean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer"> property name="systemPropertiesModeNam
2018-01-11 20:41:23 902
原创 spring命名空间
XML Schema 配置方式 beans xmlns="http://www.springframework.org/schema/beans" --默认命名空间:表示未使用其他命名空间的所有标签的默认命名空间--> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=
2018-01-09 21:50:55 176
原创 equals && hashCode
JDK中equals与hashCode方法介绍如下:hashCodeReturns a hash code value for the object.This method is supported for the benefit of hash tables such as those provided by HashMap.返回对象的哈希码值。支持此方法是为了提高诸如java.ut
2017-12-25 23:35:27 156
原创 SQL
SQL-执行顺序(8)SELECT (9)DISTINCT (11)<Top Num> <select list>(1)FROM [left_table](3)<join_type> JOIN <right_table>(2)ON <join_condition>(4)WHERE <where_condition>(5)GROUP BY <group_by_list>(6)WITH <
2017-12-12 19:50:07 205
原创 js常用方法总结
多级复选框联动效果图: vm:#foreach($categoryGrand in ${categoryList}) #if($!{categoryGrand.canChoose}==0) #set($visibility = "hidden") #else #set($visibility = "visible") #end <div class="top">
2017-12-11 20:21:43 224
原创 Spring整合Junit4
maven依赖<dependency> <groupId>org.springframework</groupId> <artifactId>spring-test</artifactId> <version>3.2.2.RELEASE</version></dependency><dependency> <groupId>junit</groupId>
2017-12-08 19:07:26 293
原创 Mybatis分页插件PageHelper
maven依赖<dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.3</version></dependency>在Mybatis配置xml中配置拦截器插件<plugins> <!-- com.github.pag
2017-12-08 11:47:52 168
原创 Wdatepicker日期控件
My97DatePicker是很不错的一个日期选择插件,体积只有几十k但是功能非常强大,能满足很多苛刻的要求。 官网:http://www.my97.net/各目录及文件的用途:目录lang 存放语言文件 目录skin 存放皮肤的相关文件 calendar.js 日期库主文件 WdatePicker.js 配置文件,在调用的地方仅需使用该文件调用模式触发WdatePicker函数来调用弹出日
2017-12-07 11:40:48 451
原创 gson&&fastjson
Gson String personJsonInfo={&amp;quot;&amp;quot;:&amp;quot;&amp;quot;};Gson gson = new Gson();//Gson gson = new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create();//排除掉bean中没有Expose注解的属性Person person = gson.fr
2017-12-05 21:25:58 263
原创 Velocity快速入门教程-脚本语法详解
1.变量(1)变量的定义:#set($name = "hello") 说明:velocity中变量是弱类型的。当使用#set 指令时,括在双引号中的字面字符串将解析和重新解释,如下所示:#set($directoryRoot = "www" )#set($templateName = "index.vm" )#set($template = "$directoryRoot/$templ
2017-12-04 17:27:09 273
原创 cookie
/** * 写cookies函数 */ function setCookie(sName, sValue, days) { var expires = new Date(); expires.setTime(expires.getTime() + parseInt(days) * 24 * 60 * 60 * 1000); document.cookie =
2017-11-30 14:35:09 159
原创 Cron表达式详解
在线表达式生成器:http://cron.qqe2.com/Cron表达式是一个字符串,字符串以5或6个空格隔开,分为6或7个域,每一个域代表一个含义,Cron有如下两种语法格式: Seconds Minutes Hours DayofMonth Month DayofWeek Year
2017-10-12 18:39:20 229
原创 Spring线程池ThreadPoolTaskExecutor
配置<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor"> <!-- 核心线程数,维护线程的最少数量 --> <property name="corePoolSize" value="5"/> <!-- 最大线程数,维护线程的最大数量 -
2017-10-11 15:40:29 898
转载 优化网站性能必备的6种架构方案
前言 一个成熟的大型网站(如淘宝、天猫、腾讯等)的系统架构并不是一开始设计时就具备完整的高性能、高可用、高伸缩等特性的,它是随着用户量的增加,业务功能的扩展逐渐演变完善的,在这个过程中,开发模式、技术架构、设计思想也发生了很大的变化,就连技术人员也从几个人发展到一个部门甚至一条产品线。所以成熟的系统架构是随着业务的扩展而逐步完善的,并不是一蹴而就;不同业务特征的系统,会有各自的侧重点,例如:淘
2017-10-11 11:33:50 411
原创 java集合类总结
Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本的接口有: ● Collection:代表一组对象,每一个对象都是它的子元素。 ● Set:不包含重复元素的Collection。 ● List:有顺序的collection,并且可以包含重复元素。 ● Map:可以把键(key)映射到值(value)的对象,键不能重复。
2017-10-10 16:30:53 298
转载 Java BigDecimal详解
原文1.引言 借用《Effactive Java》这本书中的话,float和double类型的主要设计目标是为了科学计算和工程计算。他们执行二进制浮点运算,这是为了在广域数值范围上提供较为精确的快速近似计算而精心设计的。然而,它们没有提供完全精确的结果,所以不应该被用于要求精确结果的场合。但是,商业计算往往要求结果精确,这时候BigDecimal就派上大用场啦。 2.BigDecim
2017-10-10 15:14:27 266
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人