java
pl在之心
立足当下
展开
-
dubbo jmeter免代码调用
资源下载地址:https://download.csdn.net/download/u010627840/120356721. 需求dubbo虽然提供了telnet命令连接的调用方式,但是这种方式本身存在很多不便之处。比如,一段时间不使用就自动断开,支持的命令比较单一,无法复用接口等2. 解决方法利用dubbo的generic调用机制+jmeter插件3. 实现...原创 2019-12-17 09:24:00 · 173 阅读 · 0 评论 -
java8 java.lang.IllegalStateException: Duplicate key 2882303761517789031
1.背景java8实现list转map报错java.lang.IllegalStateException: Duplicate key 28823037615177890312. 查找原因发现list中作为map key的值存在重复的情况AppCategoryRecommendDto::getCategory3. list转map代码appCategoryR...原创 2019-12-04 11:45:50 · 645 阅读 · 0 评论 -
Redis集群如何使用pipeline操作
1. 背景 当我们的产品需要一款分布式缓存组件时,一般会考虑Redis集群. Redis集群是一种分布式的,高可用性的缓存组件,大多数情况下存储一些经常使用的,变动不频繁的数据,例如用户信息, 离线计算的某类数据等. 但是,随着用户量的大量增加,如何快速的将海量的数据导入Redis集群变得越加紧急, 传统的逐条插入Redis集群的方式已经无法满足我们的需求,因为...原创 2019-08-12 16:52:59 · 2074 阅读 · 0 评论 -
mybatis从入门到精通之原理与问题总结
1. mybatis架构图: 分层(API接口层,核心处理层,基础模块层)2. mybatis动态代理(转)3. mybatis多级缓存(转)4. mybatis原理之$与#的区别5. mybatis事务机制6.mybatis插件原理(转)7.mybatis实现自定义数据行权限8.mybatis 配置初始化9. mybatis SQL初始化(SqlNode,S...原创 2019-08-12 15:46:01 · 143 阅读 · 0 评论 -
Mybatis从入门到精通之$与#的区别
目录1. 什么是$和#2. 如何使用3. $和#的原理3.1. 举例说明1. 什么是$和# Mybatis支持sql标签和参数替换,支持动态sql拼接和静态参数替换. ${}用于动态sql构建,属于mybatis的动态sql构建过程, 在数据库操作之前 #{}解析为一个 JDBC 预编译语句(prepared st...原创 2019-08-15 16:40:48 · 157 阅读 · 0 评论 -
Mybatis从入门到精通之架构图: 分层(API接口层,核心处理层,基础模块层)
Mybatis架构图原创 2019-08-14 16:19:13 · 1351 阅读 · 0 评论 -
Mysql总结
1.详解 MySql InnoDB 中的三种行锁(记录锁、间隙锁与临键锁)(转)2. Mysql explain详解(转)3. Msql 底层数据结构B+树(转)4. InnoDB引擎与MyIsam引擎的区别5. Mysql binlog日志 (数据恢复,主从同步复制)(转)6. Mysql主从同步原理(转)7. 主键索引与普通索引的区别8. 事务隔离级别9. ...原创 2019-08-13 14:36:20 · 99 阅读 · 0 评论 -
数据统计平台设计与实现
1.背景与需求 如果想把控一个新生态的发展状态,那么我们迫切需要一个该生态相关的数据统计平台;该平台将从不同的维度去分析这个生态,引入很多不同的指标以及图表,通过这些指标以及指标的展示图来描绘生态的健康状态.2.功能点平台概览 行业概览 波动监控 留存 分发转化 趋势 分布图3.概要设计与实现表设计元数据表 常规指标信息表 监控...原创 2019-02-28 12:46:00 · 1784 阅读 · 0 评论 -
java调用摄像头并拍照
最近在做jmf的视频通信项目,于是先找了个代码连接下摄像头;要求:jmf包(最好包含5个原始包) jmf安装(没有测试这个条件是否必要,我直接先安装了) eclipse下运行代码如下import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; ...原创 2014-03-01 17:36:26 · 938 阅读 · 0 评论 -
Mybatis启动流程
1.背景我们经常使用mybatis作为ORM框架,快捷地进行数据库操作代码的编写,但是,我们在享受它的便捷时,总是存在某些疑惑,它内部到底是怎么运行的呢?2.使用表象Spring Bean配置文件:SqlSessionFactoryBean,MapperScannerConfigurerMapper.xml文件:自动生成(mybatis-generator插件)Mapper....原创 2018-08-21 15:41:03 · 1029 阅读 · 0 评论 -
Redis从入门到精通之原理与问题总结
目录1.使用场景2.底层数据结构3.发布与订阅功能4.批量操作pipeline5.延迟队列6.lua脚本与原子性操作7.地理位置8.基数统计9.集群节点分布原理10.JedisCluster原理11.Redis集群连接池12.对象编码方式13.序列化DUMP14.Redis与Memcache的区别15.简单的事务支持16.大量K...原创 2018-08-23 09:55:09 · 240 阅读 · 0 评论 -
kafka从入门到精通总结
1.kafka问题列表 kafka的使用,生产者和消费者配置?序列化方式,如何保证kafka producer发送一条消息,至少发送一次? kafka offset了解吗,自动提交还是手动提交? kafka分区了解?如何查询某个topic的各分区消费情况 kafka SimpleConsumer使用过吗? kafka 和zk的关系?zk对于ka...原创 2018-08-27 09:54:20 · 759 阅读 · 0 评论 -
Linux下Shell调用redis客户端访问集群
1.使用背景2.步骤首先找到redis客户端的目录,切换到src目录下,然后pwd显示当前目录,记为REDIS_HOME,在shell下执行REDIS_HOME/redis-cli -h xx -p xx -c get key > 1.txt 3.问题由于Redis集群涉及到多个节点,而我们查询的key所属的节点是不固定的,有时候即使key对应的value存在,但是这...原创 2018-08-22 19:50:32 · 2846 阅读 · 0 评论 -
实时大数据处理框架Storm---推送系统
1.背景 最近在接触实时大数据框架Storm,要求延时在秒级,需求包括用户转账实时APP和短信通知,新股破板通知等;数据规模在每天百万级,高峰期每秒1000。2.架构设计2.1 分块 该系统主要包括三部分:数据采集模块,数据加工模块,数据推送模块。 数据采集模块通过接收对应Topic的Kafka消息来实现,需要根据数据量设置分区个数,数据保留周期,数据发送准确级别(不重发,漏发);原创 2017-10-09 13:44:29 · 4011 阅读 · 0 评论 -
Mybatis 拦截器实现数据行权限
最近项目有一个需求:需要针对不同登录用户,同一个接口查看的数据不一样。因为项目采用了mybatis持久化框架,因此想到使用mybatis自带的拦截器实现。1. 回顾 之前接触的数据行权限一般是在SQL中加入userid=xx之类的条件,但是这样方式有比较大的局限性,侵入性过大,对原有项目的改到也很大。2.思考 考虑到Mybatis拦截器能够拦截SQL执行的整个过程,因为我们可以考虑SQL原创 2017-08-25 13:24:25 · 6441 阅读 · 1 评论 -
zookeeper原理与问题总结
1. 内部数据结构 zk的内部数据结构1) zk采用类似Unix的结构,以/为根目录,下面的每个子节点都是一个ZNode,子节点可以存储数据。2) zk节点分为永久节点,临时节点,顺序节点3) zk节点的元数据包含版本,ACL, 时间戳等4) 当客户端超过后,临时节点会自动删除,常用于微服务集群的动态注册和发现2. 如何保证数据一致性 z...原创 2019-08-12 15:49:35 · 145 阅读 · 0 评论 -
dubbo原理与问题总结
1. dubbo架构思维导图2. dubbo集群容错策略和负载均衡策略3. dubbo服务治理4. dubbo+jmeter免代码调用5. @Reference注解的解析过程6. dubbo客户端的启动流程7. dubbo服务端的启动流程8. dubbo分组策略9 dubbo与zk的交互流程10 dubbo+hystrix实现熔断限流11. dubbo基于扩...原创 2019-08-12 15:53:51 · 310 阅读 · 0 评论 -
Spring原理与问题总结
1. 依赖注入与控制反转2. 循环依赖3. AOP原理4. Spring启动流程与Bean初始化顺序5. Spring 事务的隔离性,并说说每个隔离性的区别6.Spring事务的传播行为,并说说每个传播行为的区别7.Struts跟Spring mvc的优缺点,让你选会如何选8.Spring 事务机制9. spring4 新特性...原创 2019-08-12 15:56:18 · 143 阅读 · 0 评论 -
dubbo 心跳机制
1. 背景当客户端与服务端保持长连接时,并不是每时每刻都在交换数据,所以需要心跳机制保证长连接的连通性。2 涉及类定时任务的内容触发心跳的条件1)当前时间和最后一次发消息的时间差大于心跳间隔时2)当前时间和最后一次收消息的时间差大于心跳间隔时...原创 2019-09-27 10:11:24 · 246 阅读 · 0 评论 -
dubbo服务调用过程
1. 调用图解下图为dubbo官方的一张调用图1) 从client到server经历了编码,序列化,反序列化,解码的正常网络调用流程, 在nettyServer中处理2)client采用代理的机制3)server处理请求的方式通常为分发请求到线程池,同步阻塞或异步非阻塞返回结果2. 对应到dubbo的内部的类代理: InvokerInvocationHandl...原创 2019-09-25 16:56:39 · 661 阅读 · 0 评论 -
Dubbo服务之间的调用是同步的吗?
dubbo 问题总结https://blog.csdn.net/u010627840/article/details/993058851.服务调用在哪里1.1 消费者调用流程消费者的调用流程如下(dubbo2.7.3)proxy0#sayHello(String) —> InvokerInvocationHandler#invoke(Object, Me...原创 2019-09-24 13:49:48 · 2717 阅读 · 0 评论 -
注册中心挂了,dubbo还能继续通信
目录1. 问题2. 如何实现3 缓存文件对应的代码4 执行路径5 . 缓存的使用路径6. 本地缓存什么时候使用1. 问题注册中心挂了,dubbo还能继续通信,原理是什么?1) 注册中心为集群,如果只是一台机器宕机,会自动切换到另一台2) 注册中心全部宕机,则依靠本地缓存通信3) 注册中心全部宕机,可以重启服务关键在于AbstractR...原创 2019-09-24 10:45:09 · 1808 阅读 · 1 评论 -
dubbo SPI的实现过程
1. 问题 dubbo的自适应类加载机制是如何实现的? 例如,Protocol的实现类是如何加载的// 如何解析 private static final Protocol REF_PROTOCOL = (Protocol)ExtensionLoader.getExtensionLoader(Protocol.class).getAdaptiveExtension();...原创 2019-09-23 18:35:49 · 238 阅读 · 0 评论 -
dubbo服务治理
目录1. 服务治理简介2. 服务治理的原理2.1 Cluster2.2Directory (默认RegistryDirectory)2.3 Router(默认规则 RouterChain)2.4 LoadBalance(默认选择随机)1. 服务治理简介1) 服务降级2) 路由 (标签路由和条件路由)3) 负载均衡 (随机,轮询,一致性哈希,最低负...原创 2019-09-23 14:52:07 · 298 阅读 · 0 评论 -
dubbo集群容错策略和负载均衡策略
1 dubbo的集群容错策略和负载均衡策略来自配置如下图所示:2. 集群策略如下图所示:集群容错策略包括:1) failfast 快速失败(失败后直接抛异常结束)1)failover 失败后重试3) failsafe 安全失败4) failbackfailfastfailoverfailsafefailback...原创 2019-09-23 10:24:03 · 263 阅读 · 0 评论 -
dubbo原理之架构思维导图
原创 2019-09-19 20:48:21 · 225 阅读 · 0 评论 -
zookeeper的数据快照
1. 介绍数据快照:数据快照是zk数据存储中另一个非常核心的运行机制。目的: 快速恢复内存中的数据2. 数据快照配置数据快照用来记录zk服务器上某一时刻的全量内存数据内容,并将其写入到指定的磁盘文件中,可通过dataDir配置文件目录。3. 数据快照生成策略可配置参数snapCount,设置两次快照之间的事务操作个数,zk节...原创 2019-09-03 20:32:59 · 1261 阅读 · 0 评论 -
zookeeper的过半策略
背景所谓“过半”是指大于集群机器数量的一半,即大于或等于(n/2+1),此处的“集群机器数量”不包括observer角色节点。ZAB协议中多次用到“过半”设计策略 ,该策略是zk在A(可用性)与C(一致性)间做的取舍,也是zk具有高容错特性的本质。相较分布式事务中的2PC(二阶段提交协议)的“全量通过”,ZAB协议可用性更高(牺牲了部分一致性),能在集群半数以下服务宕机时正常对外提...原创 2019-09-03 20:26:34 · 2192 阅读 · 0 评论 -
zookeeper的leader选举后的数据同步过程
1. 介绍数据同步是指leader节点将处理的事务广播给follower和observer的过程。该过程采用类似二阶段提交的方式,prepare+commit.2. 同步过程选主算法中的zxid是从内存数据库中取的最新事务id,事务操作是分两阶段的(提出阶段和提交阶段),1) 提交阶段:leader生成提议并广播给followers , follower收到提议后先...原创 2019-09-03 20:21:31 · 991 阅读 · 0 评论 -
zookeeper的leader选举过程
参考:《从paxos到Zookeeper分布式一致性原理与实践》(1)首先设置状态为LOOKING,初始化内部投票Vote (id,zxid) 数据至内存,并将其广播到集群其它节点。节点首次投票都是选举自己作为leader,将自身的服务ID、处理的最近一个事务请求的ZXID(ZXID是从内存数据库里取的,即该节点最近一个完成commit的事务id)及当前状态广播出去。然后进入循环等待及处理...原创 2019-09-03 20:12:42 · 479 阅读 · 0 评论 -
eclipse项目右键errors running builder "java builder"
最近打包eclipse项目的时候,遇到一个问题,右键点击项目的时候报错,errors running builder "java builder";这个项目是公司内网的SVN上的,需要通过VPN才能连上。首先我想到的是SVN的问题,所以我选择把项目目录下的.svn项目删除;当然,如果直接通过VPN连接上公司内网的SVN自然最好;如果不行,只能删除.svn文件夹。但是,发现仍然出现这原创 2017-08-10 20:14:05 · 4672 阅读 · 0 评论 -
Kafka学习之怎么保证不丢,不重复消费数据
Kafka学习之怎么保证不丢,不重复消费数据Kafka作为当下流行的高并发消息中间件,大量用于数据采集,实时处理等场景,我们在享受他的高并发,高可靠时,还是不得不面对可能存在的问题,最常见的就是丢包,重发问题。 丢包问题:消息推动服务,每天早上,手机上各终端都会给用户推送消息,这时候流量剧增,可能会出现kafka发送数据过快,导致服务器网卡爆满,或者磁盘处于繁忙状态,可能会出现丢包现象。 解原创 2017-07-31 14:14:31 · 30264 阅读 · 9 评论 -
Java读取十六进制数转化为图片
最近遇到一个问题,服务器接收到图片转换之后的十六进制数据,怎么还原照片?不多说,直接上代码:package com.mybatis.test;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;public class TestImage1 { public原创 2016-01-09 20:16:23 · 2671 阅读 · 2 评论 -
BufferByte的使用
最近用到BufferByte来缓存大量数据,然后就遇到了BufferByte的array()方法无法使用的情况,而当数据比较少的时候,array()方法可以正常使用。BufferByte buffer=BufferByte.allocate(22222222);BufferByte转byte[]:byte[] b=new byte[len];buffer.get(b,0,b.len原创 2016-01-20 21:58:37 · 596 阅读 · 0 评论 -
编写高质量代码01--05
最近在学习《编码高质量代码》这本书,首先我们来看下第一个原则:不要在常量和变量中出现易混淆的字母命名规则:包名全小写,类名首字母全大写,常量全部大写并用下划线分割,变量采用驼峰命名法(Camel Case)命名等,这些都是最基本的Java编码规范。但是在变量的声明时要注意不要引入容易混淆的字母,例如:long i=1l;这里需要注意,长整形的l需要大写,否则容易和1混淆。此外,如果原创 2016-01-03 19:27:13 · 438 阅读 · 0 评论 -
java源码分析09-LinkedBlockingQueue
今天,我们来看看队列中的一员LinkedBlockingQueue的内部结构。1.类结构2. 类分析2.1 类的元数据public class LinkedBlockingQueue extends AbstractQueue implements BlockingQueue, java.io.Serializable {}父类:Abst原创 2015-11-27 10:51:39 · 391 阅读 · 0 评论 -
Java多线程总结
1.线程是什么,线程与进程的区别1.1 线程的概念一段程序执行流。1.2 线程中的一些术语线程安全:多个线程访问同一个类,它始终表现正确的行为线程同步:线程的执行需要加锁线程封闭:内置锁/互斥锁:JVM提供的隐形锁,当使用synchronized修饰方法或者同步块时,进入时获取对象锁,出来时释放对象锁。内存可见性:一个线程对状态的改变,其他线程都可以看见原子性:原创 2015-07-31 16:30:47 · 343 阅读 · 0 评论 -
Java垃圾收集
Java垃圾收集垃圾收集的目的在于清除不再使用的对象。GC通过确定对象是否被活动对象引用来确定是否收集该对象。判断收集对象的方法GC首先要判断该对象是否是时候可以收集。两种常用的方法是引用计数和对象引用遍历。原创 2015-04-05 21:48:28 · 472 阅读 · 0 评论 -
Java中容易混淆的概念
运算符&和&&i++与++iObjectString与StringBuffer==与equalssuper与thistoString()形参与实参环境变量,静态变量,局部变量,引用变量关键字,保留字与直接量原生数据类型与引用数据类型静态方法与实例方法之间的调用applet与servletswing与awt数组的定义与初始化for循环执行次序length属性与length()方法switch()括号内原创 2015-04-05 22:30:20 · 409 阅读 · 0 评论 -
java:错误,需要class,interface
最近用记事本编写java代码,出现下面错误:java:错误,需要class,interface原因在于我是用notepad++打开的,而且设置转为UTF-8编码。解决:不用修改.java文件的编码格式原创 2014-12-23 22:40:47 · 872 阅读 · 0 评论