![](https://img-blog.csdnimg.cn/20201014180756724.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java
文章平均质量分 56
冰封之骑士
这个作者很懒,什么都没留下…
展开
-
分布式系统面试题:分布式事务解决方案?
一般来说,分布式事务的实现主要有以下 5 种方案:XA 方案TCC 方案本地消息表可靠消息最终一致性方案最大努力通知方案两阶段提交方案/XA方案所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答...转载 2020-03-20 17:34:44 · 317 阅读 · 0 评论 -
源码解析由于mysql驱动包升级, “LOAD DATA” 出现The used command is not allowed with this MySQL version错误
问题背景最近在一次项目的开发中,由于在pom文件中没有指定mysql-connector-java的version,则自动依赖了最新版的8.0.18包,在执行“LOAD DATA”时出现“nested exception is java.sql.SQLSyntaxErrorException: The used command is not allowed with this MySQL ver...原创 2019-12-18 19:19:15 · 1142 阅读 · 2 评论 -
通过SpringAop、Filter对Request参数解密和对Response内容加密
需求背景最近项目组中接到新的需求,要求app访问服务端的接口中,需要在报文传输中对某个字段进行加密,同时若返回响应中有该字段,则需要加密返回app;为了兼容旧版本app,与客户端同事商议,在新版本中该字段传输格式为:加密文本+特定的分割符+加密方式。解决思路服务端通过传入字段判断,如果是“特殊分割符+加密方式”这个方式拼接的,则需要对加密文本通通过想对应的解密方式解密;app涉及的服务特...原创 2019-11-20 18:48:58 · 1600 阅读 · 0 评论 -
为何阿里开发手册中,线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式
看阿里巴巴开发手册并发编程这块有一条:线程池不允许使用Executors去创建,而是通过ThreadPoolExecutor的方式,通过源码分析禁用的原因。写在前面首先感谢大家在盖楼的间隙阅读本篇文章,通过阅读本篇文章你将了解到:线程池的定义Executors创建线程池的几种方式ThreadPoolExecutor对象线程池执行任务逻辑和线程池参数的关系Executors创建返回T...转载 2019-11-12 18:55:20 · 742 阅读 · 0 评论 -
java操作SFTP工具类
在工作中常会用到通过sftp进行文件的上传和下载,该类是自己分装的一个工具类,后续可以根据需要添加相应的方法:package com.sogou.map.usercenter.bmsync.controller;import com.jcraft.jsch.*;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import j...原创 2019-11-12 10:52:50 · 860 阅读 · 0 评论 -
TCP的三次握手和四次挥手
三次握手和四次挥手是面试的高频,通过这篇文章能收获以下知识:请画出三次握手和四次挥手的示意图为什么连接的时候是三次握手?什么是半连接队列?ISN(Initial Sequence Number)是固定的吗?三次握手过程中可以携带数据吗?如果第三次握手丢失了,客户端服务端会如何处理?SYN攻击是什么?挥手为什么需要四次?四次挥手释放连接时,等待2MSL的意义?1. 三次握手...转载 2019-11-06 15:53:17 · 131 阅读 · 0 评论 -
升级tomcat遇到的坑
注: 该篇是由于阅读一篇公众号文章看到升级tomcat会发生这个坑,这里记录以下,以便在之后的工作中遇到这个坑时,很方便的解决这个问题。参考地址:https://mp.weixin.qq.com/s/_orImnCJqQlOTvATPf0o-A故障描述tomcat版本从8.5.11升级到8.5.31后,线上nginx 报400错误,ng配置如下:解决方法在nginx中的locatio...转载 2019-10-25 17:41:10 · 775 阅读 · 0 评论 -
jersery集成jackson实现restful api,由于jdk版本不一致导致的坑
问题背景项目中使用jersey+jackson实现 restful api,返回信息格式为json,开发测试环境都是OK的,然鹅在线上当访问时一直报500,错误信息如下:com.sun.jersey.spi.container.ContainerResponse write: The registered message body writers compatible with the MI...原创 2019-10-22 15:52:29 · 2961 阅读 · 0 评论 -
python爬虫实践
近期学习python爬虫,且正好帝都公布了19年积分落户公示名单,实践一下爬取名单并存入数据库,统计下各各个阶段落户的人数:页面请求分析可以很直观的看到,页面数据是通过ajax请求获取的,请求方法为post,参数为rows和page,返回响应为html文档。代码实现模拟请求获取响应的数据import requestsfrom bs4 import BeautifulSoupim...原创 2019-10-16 11:25:28 · 164 阅读 · 0 评论 -
jdk lambda表达式的坑
整理出zk连接的关键逻辑如下:public class ClientZkAgent { //单例模式 private static final ClientZkAgent instance = new ClientZkAgent(); private ZooKeeper zk; //zk客户端 private ClientZkAgent() { connect(); //...转载 2019-10-15 10:09:38 · 419 阅读 · 0 评论 -
Hive简介及使用
Hive的简介Hive 是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工具,可以用来进行数据提取转化加载(ETL ),这是一种可以存储、查询和分析存储在 Hadoop 中的大规模数据的机制。Hive 定义了简单的类 SQL 查询语言,它允许熟悉 SQL 的用户查询数据。同时,这个语言也允许熟悉 MapReduce 开发者的开发自定义的 mapper 和 reducer 来处理内...原创 2019-10-08 14:35:28 · 340 阅读 · 0 评论 -
深入剖析Redis高可用集群架构原理
redis集群方案比较1.哨兵模式架构哨兵监控集群服务的各节点的健康状态,master解决写服务,down之后选举salve为主节点问题:单台redis支持5w左右的并发,无法满足大并发的业务需求master挂掉之后,在选举的过程中,不能响应写服务节点内存有限,即内存瓶颈2.高可用模式架构(redis3.0之后官方架构)redis集群是一个由多个主从节点组成的...原创 2019-09-30 17:06:09 · 689 阅读 · 0 评论 -
tomcat8+linux+IDEA配置远程代码调试
1、修改tomcat目录bin目录下的catalina.sh CATALINA_OPTS= -server -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10089" 之后重启tomcat2.IDEA 配置 ...原创 2018-11-15 14:34:22 · 206 阅读 · 0 评论 -
java单例模式的7种实现方式
1.懒汉式加载,最简单的单例模式,只需要2两步, a.把自己的构造方法设置为私有的,不让别人访问你的实例,b.提供一个static方法给别人获取你的实例public class Singleton{ private static Singleton singleton; private Singleton(){ } public static S...原创 2018-12-28 11:20:42 · 384 阅读 · 1 评论 -
java SimpleDateFormat类浅析
1、SimpleDateFormat不是线程安全的:其中常用的format方法和parse方法会在多线程的情况下发生严重错误,这是因为在format方法中,会使用一个成员变量calendar来保存时间,private StringBuffer format(Date date, StringBuffer toAppendTo, ...原创 2018-12-28 14:27:32 · 200 阅读 · 0 评论 -
Redis客户端Redisson+SpringBoot实现的分布式锁案例
1.Redisson介绍wiki:https://github.com/redisson/redisson/wiki/2.整合Spingboot实现分布式锁: application.properties配置redis地址:redisson.address=redis://*.*.*.*:6379redisson.password=123456 Redisson相关配置及...原创 2018-12-25 18:05:11 · 1315 阅读 · 0 评论 -
SpringAop+Mybatis 实现动态切换数据库操作
在平常的项目开发中,会遇到一个应用中访问多个数据源的需求,本文将通过使用SpringAop+Mybatis与spring-jdbc的AbstractRoutingDataSource实现动态切换数据源;1.定义多个数据源的枚举:public enum DataSourceType { //第一个数据源 DATASOURCE_ONE, ...原创 2019-09-27 17:01:36 · 646 阅读 · 0 评论 -
从Spring代理的bean中获取代理对象
public class SpringTargetBeanUtils { /** * 获取 目标对象 * * @param proxy 代理对象 * @return * @throws Exception */ public static Object getTarget(Object proxy) throws Exc...原创 2019-09-30 15:50:41 · 2099 阅读 · 0 评论 -
Spring集成quartz实现的定时任务调用
本示例使用Spring+quartz实现定时任务的调度,通过zookeeper+curator实现分布式锁,保证分布式任务串行运行,通过自定义注解实现任务的扫描及注册;1.添加相关的maven依赖,不包括spring<dependency> <groupId>org.apache.curator</groupId> <artifac...原创 2019-09-30 16:41:25 · 279 阅读 · 0 评论 -
HDFS原理
1、分布式文件系统2、HDFS特点数据量越来越多,在一个操作系统管辖的范围存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,因此迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统 。 是一种允许文件通过网络在多台主机上分享的文件系统,可让多机器上的多用户分享文件和存储空间。 通透性。让实际上是通过网络来访问文件的动作,由程序与用户看来,就像...原创 2019-09-30 16:58:50 · 131 阅读 · 0 评论 -
JDK动态代理与CGLIB的区别
JDK动态代理和CGLIB字节码生成的区别?原创 2017-11-22 14:03:48 · 1014 阅读 · 0 评论