
javaweb
简单251654
这个作者很懒,什么都没留下…
展开
-
Java工程师两周面试突击-中华石杉-Java面试
视频地址:https://www.bilibili.com/video/BV1UJ411X7M1github:https://github.com/shishan100/Java-Interview-Advanced码云:https://gitee.com/shishan100/Java-Interview-Advanced原创 2020-06-30 00:09:13 · 1900 阅读 · 0 评论 -
阿里巴巴JSONObject返回null不显示,时间格式转换问题
在返回的时候转为字符串,一行代码解决JSONObject.toJSONString(result,SerializerFeature.WriteDateUseDateFormat, SerializerFeature.WriteMapNullValue)这样value为null 的确实可以返回,但是返回的是null,加了WriteMapNullValue、WriteNullStringA...原创 2019-11-09 15:57:34 · 1116 阅读 · 0 评论 -
分布式搜索引擎-ES生产集群的部署架构是什么?每个索引的数据量大概是多少?么给索引大概有多少分片?
ES生产集群的部署架构是什么?每个索引的数据量大概是多少?么给索引大概有多少分片?这个问题,包括后面的redis什么的,谈到es、redis、mysql分库分表等等技术,面试必问!就是你生产环境咋部署的?说白了,这个问题没啥技术含量,就是看你有没有在真正的生产环境里干过这事儿!有些同学可能是没在生产环境中干过的,没实际去拿线上机器部署过es集群,也没实际玩儿过,也没往es集群里面导入过几千万甚至是几亿的数据量,可能你就不太清楚这里面的一些生产项目中的细节如果你是自己就玩儿过demo,没碰过真实的原创 2020-06-21 16:39:25 · 278 阅读 · 0 评论 -
分布式搜索引擎-ES在数据量很大的情况下(数十亿级别)如何提高查询性能?
ES在数据量很大的情况下(数十亿级别)如何提高查询性能?[01_filesystem cache对es性能的影响](images/01_filesystem cache对es性能的影响.png)说实话,es性能优化是没有什么银弹的,啥意思呢?就是不要期待着随手调一个参数,就可以万能的应对所有的性能慢的场景。也许有的场景是你换个参数,或者调整一下语法,就可以搞定,但是绝对不是所有场景都可以这样。一块一块来分析吧在这个海量数据的场景下,如何提升es搜索的性能,也是我们之前生产环境实践经验所得原创 2020-06-21 16:31:39 · 786 阅读 · 0 评论 -
分布式搜索引擎-ES查询和读写数据的工作原理是什么?
ES查询和读取数据的工作原理是什么?(1)es写数据过程1)客户端选择一个node发送请求过去,这个node就是coordinating node(协调节点)2)coordinating node,对document进行路由,将请求转发给对应的node(有primary shard)3)实际的node上的primary shard处理请求,然后将数据同步到replica node4)coordinating node,如果发现primary node和所有replica node都搞原创 2020-06-20 23:45:38 · 380 阅读 · 0 评论 -
分布式搜索引擎-ES的分布式架构原理能说一下么?
ES的分布式架构原理能说一下么?elasticsearch设计的理念就是分布式搜索引擎,底层其实还是基于lucene的。核心思想就是在多台机器上启动多个es进程实例,组成了一个es集群。es中存储数据的基本单位是索引,比如说你现在要在es中存储一些订单数据,你就应该在es中创建一个索引,order_idx,所有的订单数据就都写到这个索引里面去,一个索引差不多就是相当于是mysql里的一张表。index -> type -> mapping -> document ->原创 2020-06-20 21:41:33 · 430 阅读 · 0 评论 -
分布式搜索引擎-倒排索引是什么
倒排索引是什么倒排索引适用于快速的全文检索,一个倒排索引由文档中所有不重复词的列表构成,对于其中每个词,有一个包含它的文档列表例如:假设文档集合中包含五个文档,每个文档的内容如下所示,在图中最左端一栏是每个文档对应的编号,我们的任务就是对这个文档集合建立倒排索引中文和英文等语言不通,单词之间没有明确分割符号,所以首先要用分词系统将文档自动切分成单词序列,这样每个文档就转换为由单词序列构成的数据流,为了系统后续处理方便,需要对每个不同的单词赋予唯一的单词编号,同时记录下哪些文档包含这个单词原创 2020-06-20 21:36:54 · 304 阅读 · 0 评论 -
分布式搜索引擎-分布式搜索引擎的面试连环炮
lucene 和 es 的前世今生 es 的分布式架构原理能说一下么(es 是如何实现分布式的啊)? es 写入数据的工作原理是什么啊?es 查询数据的工作原理是什么啊?底层的 lucene 介绍一下呗?倒排索引了解吗? es 在数据量很大的情况下(数十亿级别)如何提高查询效率啊? es 生产集群的部署架构是什么?每个索引的数据量大概有多少?每个索引大概有多少个分片?...原创 2020-06-19 20:46:00 · 224 阅读 · 0 评论 -
消息队列-如何设计一个消息中间件架构?
如何设计一个消息中间件架构?如果让你写一个消息队列,该如何进行架构设计?说下你的思路这种问题,说白了,起码不求你看过那些技术的源码,但是你应该大概知道那些技术的基本原理,核心组成部分,基本架构个构成,然后参照一些开源技术把一个系统设计出来的思路说一下就好了。思路首先MQ得支持可伸缩性,那就需要快速扩容,就可以增加吞吐量和容量,可以设计一个分布式的系统,参考kafka的设计理念,broker - > topic -> partition,每个partition放一台机器,那就存一部原创 2020-06-19 18:24:15 · 736 阅读 · 0 评论 -
消息队列-如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有几百万消息持续积压几小时,说说怎么解决?
百万消息积压在队列中如何处理?如何解决消息队列的延时以及过期失效问题?消息队列满了以后该怎么处理?有百万消息积压接小时,说说解决思路?剖析MQ大幅度积压这件事挺常见的,一般不出,出了的话就是大型生产事故,例如:消费端每次消费之后要写MySQL,结果MySQL挂了,消费端就不动了,或者一直出错,导致消息消费速度极其慢。场景1:积压大量消息几千万的消息积压在MQ中七八个小时,这也是一个真实遇到过的一个场景,确实是线上故障了,这个时候要不然就是修复consumer,让他恢复消费速度,然后傻傻的原创 2020-06-19 18:00:52 · 1084 阅读 · 1 评论 -
消息队列-如何保证消息的顺序性?
如何保证消息的顺序性?场景以前做过一个MySQL binlog同步系统,压力还是非常大的,日同步数据要达到上亿。常见一点的在于 大数据项目中,就需要同步一个mysql库过来,然后对公司业务的系统做各种的复杂操作。在mysql里增删改一条数据,对应出来的增删改3条binlog,接着这三条binlog发送到MQ里面,到消费出来依次执行,这个时候起码得保证能够顺序执行,不然本来是:增加、修改、删除,然后被换成了:删除、修改、增加,不全错了呢。本来这个数据同步过来,应该是最后删除的,结果因为顺序搞错原创 2020-06-17 23:02:22 · 4439 阅读 · 3 评论 -
消息队列-如何保证消息传输不丢失?
如何保证消息传输不丢失?如何保证消息的可靠性传输?或者说,如何处理消息丢失的问题?面试官心理分析这个是肯定的,用 MQ 有个基本原则,就是数据不能多一条,也不能少一条,不能多,就是前面说的重复消费和幂等性问题。不能少,就是说这数据别搞丢了。那这个问题你必须得考虑一下。如果说你这个是用 MQ 来传递非常核心的消息,比如说计费、扣费的一些消息,那必须确保这个 MQ 传递过程中绝对不会把计费消息给弄丢。面试题剖析数据的丢失问题,可能出现在生产者、MQ、消费者中,咱们从 RabbitMQ 和原创 2020-06-16 22:17:33 · 1196 阅读 · 0 评论 -
消息队列-如果保证消息的重复消费?怎么保证消息队列消费的幂等性?
面试题:如何保证消息的重复消费?如何保证消息消费的幂等性?剖析其实这是一个常见的问题,既然是消费消息,那肯定是要考虑会不会重复消费?能不能避免重复消费?或者重复消费了也别造成系统异常可以吗?关于消息重复消费的问题,其实本质上就是问你使用消息队列如何保证幂等性,这个是你架构中要考虑的问题。首先是比尔RabbitMQ、RocketMQ、Kafka都会出现消息重复消费的问题,因为这个问题通常不是MQ自己保证的,而是保证消息的不丢失,我们首先从Kafka上来说:kafka实际上有个offset的概念原创 2020-06-16 17:59:43 · 1613 阅读 · 0 评论 -
消息队列-如何保证消息队列的高可用?
剖析这个问题用的很好,不会具体到某个MQ,而是问一个整体,然后通过你使用的MQ,来具体谈谈该MQ的可用性的理解。RabbitMQ高可用性RabbitMQ是比较有代表性的,因为是基于主从做高可用性的。RabbitMQ 三种模式:单机模式,普通集群模式,镜像集群模式单机模式就是demo级别的,一般就是本地启动后玩一玩,没有人生产环境中使用。普通集群模式意思就是在多台机器上启动多个RabbitMQ实例,每台机器启动一个,但是创建的Queue,只会放在一个RabbitMQ实例上,但是原创 2020-06-16 11:14:58 · 1189 阅读 · 0 评论 -
消息队列-Kafka、activeMQ、RibbitMQ、RocketMQ都有什么优缺点
主流MQ包括:kafka、ActiveMQ、RabbitMQ和RocketMQ常见的MQ其实就上面的四种特性 ActiveMQ RabbitMQ RocketMQ Kafka 单机吞吐量 万级,吞吐量比RocketMQ和Kafka要低一个数量级 万级,吞吐量比RocketMQ和Kafka要低一个数量级 10万级,RocketMQ也是可以支撑高吞吐的一种MQ 10万级1这是kafka最大的优点,就是吞吐量高。一般配置和数据类的系统进行实时数据计算、日原创 2020-06-15 16:05:42 · 576 阅读 · 0 评论 -
消息队列-消息队列有什么优点和缺点?
优点上面已经说了:解耦、异步、削峰,缺点呢?显而易见的系统可用性降低:系统引入的外部依赖越多,越容易挂掉,本来你就是A系统调用BCD三个系统接口就好了,人家ABCD四个系统好好的,没啥问题,这个时候却加入了MQ进来,万一MQ挂了怎么办?MQ挂了整套系统也会崩溃了。 系统复杂性提高:硬生生加个MQ进来,你怎么保证消息没有重复消费?怎么处理消息丢失的情况?怎么保证消息传递的顺序性? 一致性问题:A系统处理完了直接返回成功了,人都以为你的请求成功了,但是问题是,要在BCD三个系统中,BD两个系统写库成功了原创 2020-06-15 16:03:55 · 1086 阅读 · 0 评论 -
消息队列-解耦、异步、削锋
A系统发送数据到B、C、D系统,但没有使用消息队列时候的耦合场景当后面系统不断增加,比如 E,F系统的加入,以及D系统的移除因为A系统和其它各种系统耦合起来,那么需要处理的事情会给出多使用MQ后系统A发送一条消息,到消息队列中,哪个系统需要获取到哪里,那么从MQ中消费数据,如果新系统E加入的话,那么只需要编写代码,然后也直接从MQ中消费即可,当系统D不需要这个数据时,那么只需要不对该消息进行消费即可。系统A不需要考虑给谁发送数据,也不需要维护这个代码,不需要考虑人家是否调用成功、失败原创 2020-06-12 16:01:35 · 754 阅读 · 0 评论 -
消息队列-面试连环炮
你用过消息队列么? 说说你们项目里是怎么用消息队列的? 我们有一个订单系统,订单系统会每次下一个新订单的时候,就会发送一条消息到ActiveMQ里面去,后台有一个库存系统,负责获取消息,然后更新库存。 为什么使用消息队列? 你的订单系统不发送消息到MQ,而是直接调用库存系统的一个接口,然后直接调用成功了,库存也更新了,那就不需要使用消息队列了呀 使用消息队列的主要作用是:异步、解耦、削峰 消息队列都有什么优缺点? Kafka、activeMQ、RibbitMQ、RocketMQ都有什原创 2020-06-12 15:58:36 · 241 阅读 · 0 评论 -
配置阿里云Maven镜像
<!-- 阿里云镜像仓库,提高下载速度 --> <repositories> <repository> <id>aliyun</id> <name>aliyun</name> <url>https://ma...原创 2020-02-20 16:06:56 · 205 阅读 · 0 评论 -
Hystrix Dashboard监控
一、简介我们知道Hystrix除了服务降级和服务熔断之外还可以提供准实时监控功能,它会持续记录通过Hystrix发起的请求信息,简单来说就是会将服务的请求调用情况以可视化的形式展现出来,方便维护微服务。二、SpringCloud中如何使用HystrixDashBoard2.1 新建一个HystrixDashBoard工程然后在pom文件中加入以下依赖2.2 编写app...原创 2020-02-10 19:47:38 · 183 阅读 · 0 评论 -
Spring 项目读取微信或支付宝配置文件apiclient_cert.p12
在开发支付模块时,会去读取一些配置文件,比如微信退款,微信公众号这块。配置文件习惯放在项目中(我比较习惯),放在项目则通过相对路劲,直接使用File去读取,在本地项目中不会有问题,放在服务器上则会找不到文件。在这里我们使用Spring 读取XML配置的代码使用 ClassPathResource cl = new ClassPathResource("apiclient...原创 2019-11-07 11:02:40 · 2121 阅读 · 1 评论 -
什么是单例模式
什么是单例模式单例模式的特点1. 单例模式只能有一个实例。2. 单例类必须创建自己的唯一实例。3. 单例类必须向其他对象提供这一实例。单例模式的实现 第一步:将类的构造函数生命为私有的构造函数,这样我们在外部就无法通过Singleton s = new Singleton()来实例化该,因为Private生命的成员只有在该类的内部可以访问。这样可以保证类的实例只有一个(那就是在类的内部给...原创 2018-04-28 23:50:31 · 135 阅读 · 0 评论 -
使用ajax的$.ajax()实现和后台servlet的交互
使用ajax的$.ajax()实现和后台servlet的交互1.编写前台的ajax代码function sendRequest() { $.ajax({ url: "Hello",//提交到servlet的地址 type: "GET",//提交方式 dataType: "json",//后台返回的数据类型 da...原创 2018-04-28 23:13:55 · 1161 阅读 · 0 评论 -
Java WEB开发过程中后台接受前台的中文信息乱码问题解决
前台数据传输到后台中文乱码问题方法一: 在后台servlet里边一行代码搞定,request.setCharacterEncoding("gb2312"); 这个是最简单的,也是最有效解决问题的,大家可以先试试这个,如果解决不了问题再看下边方法二:配置tomcat中的 server.xml。 server.xml文件在tomcat根目录下的conf文件中<Connector port=...原创 2018-04-28 22:25:51 · 529 阅读 · 0 评论 -
过滤器
过滤器在项目中用的比较多,使用过滤器的好处是可以避免好多冗余代码过滤器: 当页面发送请求时,符合filter过滤范围的请求会首先进入过滤器,过滤器就可以执行一些过滤操作:比如编码格式,session验证,日志记录等。 要实现一个过滤器,需要继承Filter接口,实现init、doFilter和destroy方法,这三个方法分别在过滤器初始化、过滤器运行和过滤器销毁时执行。 ...原创 2018-04-19 14:27:00 · 166 阅读 · 0 评论 -
什么是MVC
MVC是三个单词的缩写,这三个单词分别为:模型(Model)、视图(View)和控制(Controller)。1、模型(Model) 模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑. 2、视图(View) 视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。 3、控制器(controller) 控制器工作就是根据用户的输入,控制用户界面数据显示和更新model对象状态。 通俗...原创 2018-04-02 12:35:17 · 350 阅读 · 0 评论 -
javaweb项目连接MySQL数据库
1.下载jar包并把jar包放到WebRoot/WEB-INF/lib/下:mysql-connector-java-5.1.27.jar(百度一搜有好多),mysql-connector-java-5.1.27.jar2.加载驱动//com.MySQL.jdbc.Driver3.获取连接 Connection对象4.获取用于向数据库发送SQL的Statement对象 5.执行sql,获取数据,...原创 2018-05-16 15:21:51 · 21100 阅读 · 0 评论 -
java调支付宝
当时写的时候没注意,后来发现调的不是即时到账,也懒得改了,以后写注意,本次调的不是即时到账接口1.配置文件配置相关配置alipay: dev: true //true沙箱 //false正式 sign-type: RSA2 app-id: 2016093000635565 private-key: MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBK...原创 2019-04-25 15:34:11 · 525 阅读 · 0 评论 -
IDEA使用技巧-大小写转换、驼峰式转换:CamelCasePlugin插件
CamelCasePlugin是一款可以快速进行格式转换的工具,较常用到的是大小写转换、驼峰式转换等1.setting->Plugins->搜索CamelCase->安装2.快捷键shift+alt+u...原创 2019-07-10 18:05:14 · 2528 阅读 · 0 评论 -
Java 并发编程
请谈谈你对 volatile 的理解volatile 是 Java 虚拟机提供的轻量级的同步机制保证可见性 禁止指令排序 不保证原子性JMM(Java 内存模型) 你谈谈基本概念 JMM 本身是一种抽象的概念并不是真实存在,它描述的是一组规定或则规范,通过这组规范定义了程序中的访问方式。 JMM 同步规定 线程解锁前,必须把共享变量的值刷新回主内存 线程加...转载 2019-07-06 13:58:42 · 140 阅读 · 0 评论 -
linux安装mysql
第一步:安装从网上下载文件的wget命令[root@master ~]# yum -y install wget第二步:下载mysql的repo源[root@master ~]# wgethttp://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm第三步:安装mysql-community-release-...原创 2019-07-24 18:28:15 · 109 阅读 · 0 评论 -
pt-duplicate-key-checker检查数据库的重复索引
pt-duplicate-key-checker这款工具也是percona-toolkit中一款非常适用的工具,它可以帮助你检测表中重复的索引或者主键。我们知道索引会更查询带来好处,但是过量的索引反而可能会使数据库的性能降低,这款工具可以帮助我们找到重复的索引并且还会给你删除重复索引的建议语句,非常好用。使用时要先安装percona-toolkit工具包,percona-toolkit只...原创 2019-07-24 18:34:04 · 321 阅读 · 0 评论 -
Java的赋值浅、克隆和深度克隆的区别
赋值 直接 = ,克隆 clone假如说你想复制一个简单变量。很简单:int a= 5; int b= a; b = 6;这样 a == 5, b == 6不仅仅是int类型,其它七种原始数据类型(boolean,char,byte,short,float,double.long)同样适用于该类情况。但是如果你复制的是一个对象、list集合的情况下,情况就有些复杂...原创 2019-08-24 20:43:04 · 315 阅读 · 0 评论 -
EL和JSTL的使用
EL和JSTL的使用EL表达式介绍EL表达式定义规则:以 $ 开头 内容写在 {} 中 例: ${test}EL表达式查找顺序(都是针对Attrbute()):如果使用类似于 ${username} 的时候没有在哪一个范围查找username 那么它会以:PageRequestSessionApplication为顺序来进行查找,加入中途找到了 username 那么就会返回值 如果一路没找到 ...原创 2018-03-25 22:13:31 · 319 阅读 · 0 评论