- 博客(142)
- 资源 (5)
- 收藏
- 关注
原创 Maven入门
1.Maven的基本概念 Maven(翻译为"专家","内行")是跨平台的项目管理工具。主要服务于基于Java平台的项目构建,依赖管理和项目信息管理。1.1.项目构建 项目构建过程包括【清理项目】→【编译项目】→【测试项目】→【生成测试报告】→【打包项目】→【部署项目】这几个步骤,这六个步骤就是一个项目的完整构建过程。理想的项目构建是高度自动化,跨平台,可重用的组件,标准化...
2019-08-20 17:54:18 354
原创 Maven--setting.xml
1.概览当Maven运行过程中的各种配置,例如pom.xml,不想绑定到一个固定的project或者要分配给用户时,我们使用settings.xml中的settings元素来确定这些配置。这包含了本地仓库位置,远程仓库服务器以及认证信息等。settings.xml存在于两个地方:1.安装的地方:$M2_HOME/conf/settings.xml2.用户的目录:${user.hom...
2019-08-20 17:40:22 506
原创 Maven--pom.xml
参考来源:Maven的pom.xml标签详解<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0....
2019-08-20 17:31:55 320
原创 volatile关键字及其应用
1.并发编程中的三个概念原子性即一个操作或者多个操作要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行。可见性是指当多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。举个简单的例子,看下面这段代码://线程1执行的代码int i = 0;i = 10; //线程2执行的代码j = i;j的取值0或10 , 线程1...
2019-08-20 17:27:56 639
原创 文件查找---find、grep、tail、more、less
1.find(http://man.linuxde.net/find)在使用linux时,经常需要进行文件查找。其中查找的命令主要有find和grep。两个命令是有区的。区别:(1)find命令是根据文件的属性进行查找,如文件名,文件大小,所有者,所属组,是否为空,访问时间,修改时间等。 (2)grep是根据文件的内容进行查找,会对文件的每一行按照给定的模式(patt...
2019-08-20 17:20:56 1417
原创 文本编辑器--vim
英文文章来源:Learn Vim Progressively中文翻译来源:简明 Vim 练级攻略四个步骤学习vim:1.存活2.感觉良好3.觉得更好,更强,更快4.使用VIM的超能力1.存活当你安装好一个编辑器后,你一定会想在其中输入点什么东西,然后看看这个编辑器是什么样子。但vim不是这样的,请按照下面的命令操作:启 动Vim后,vim在 Norm...
2019-08-20 17:18:35 123
原创 Git、Maven 面试题
问题 答案 Git和SVN有什么区别? Git是一个分布式的版本控制工具;SVN 是集中版本控制工具 客户端可以在其本地系统上克隆整个存储库;版本历史记录存储在服务器端存储库中 即使离线也可以提交;只允许在线提交 Push/pull 操作更快;Push/pull 操作...
2019-08-20 10:39:50 1300
原创 项目问题整理
问题 ABTest 参考: 排序策略: 价格高低、单双多、促销、置顶 评估结果:卖品点击率(用户点击/页面总PV) 下单率(用户下单/页面总PV) 实验组:排序策略调整组 对照组:原始策略组 域 层 变更系统 ...
2019-08-19 17:35:56 220
原创 Spring Cloud 微服务架构
Spring Cloud是一个全家桶式的技术栈,包含了很多组件 限流、熔断、降级 问题 回答 限流 限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务(定向到错误页或告知资源没有了)、排队或等待(比如秒杀、评论、下单)、降级(返回兜底数据或默认...
2019-08-19 17:24:01 185
原创 算法-面试题整理
算法 解答 动态规划 0-1 背包问题 背包: 容量N 物品i:容量w[i] 和 价值v[i] https://blog.csdn.net/a_b_c_d_e______/article/details/81512036 dp[i][j] : 前 i 件物品体积不超过 j 的情况下能达到的最大价...
2019-08-19 16:59:09 143
原创 设计模式面试题
设计模式 详解 设计模式 参考: https://www.jianshu.com/p/fc4b2e679a1e 单例模式 整个应用中保证只有一个类的实例存在 参考: https://mp.weixin.qq.com/s/dlVXW6aW4wLc...
2019-08-19 16:50:02 2269
原创 秒杀系统设计
参考来源: 极客时间《如何设计一个秒杀系统》1.概述秒杀系统遇到的问题及解决方法:并发读:尽量减少用户到服务端来“读”数据,或者让他们读更少的数据并发写:在数据库层面独立出来一个库,做特殊的处理。设计兜底方案,以防止最坏的情况发生秒杀系统整体架构目标:稳:高可用,保证秒杀活动顺利完成。流量符合预期时肯定要稳定,超出预期时也同样不能掉链子。准:保证数据的一致...
2019-08-19 15:41:58 928
原创 负载均衡 LVS nginx
LVS参考来源:https://www.cnblogs.com/gaoxu387/p/7941381.html四层负载均衡 IP负载均衡技术工作模式 工作模式 工作原理 优点 缺点 NAT (Network Address Translation)即网络地址转换 ...
2019-08-19 14:27:05 167
转载 Kafka 源码解析
Producer 端参考来源:https://github.com/wangzzu/awesome/issues/7 Producer<String, String> producer = new KafkaProducer<>(props); for (int i = 0; i < msgNum; i++) { ...
2019-08-19 11:42:53 582
原创 MQ 的设计原理
参考 : 如何从0到1设计一个MQ消息队列1.Producer(消息生产者):发送消息到Broker。2.Broker(服务端):Broker这个概念主要来自于Apache的ActiveMQ,特指消息队列的服务端。主要功能就是:把消息从发送端传送到接收端,这里会涉及到消息的存储、消息通讯机制等。3.Consumer(消息消费者):从消息队列接收消息,consumer回复消费确认...
2019-08-19 11:32:23 1221
原创 MQ 问题集合
KAFKA 当前版本 2.2.1 项目使用 2.X朱小厮kafka面试题整理 问题 答案 kafka acks参数对消息持久化的影响 参考:https://mp.weixin.qq.com/s/IxS46JAr7D9sBtCDr8pd7A acks参数,是在KafkaProducer,也就是生产者客户端里设置...
2019-08-19 11:27:13 267
原创 分布式协调服务Zookeeper
参考来源:从Paxos到ZooKeeper漫画:什么是ZooKeeper?当前版本3.4 项目使用 3.XZooKeeper是什么ZooKeeper是一个典型的分布式数据一致性的解决方案,分布式应用程序可以基于它实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能。ZooKeeper的设计目标目标一:...
2019-08-19 11:04:45 254
原创 分布式事务解决方案
1.分布式事务概述1.1 事务简介1.1.1 本地事务大多数场景下,我们的应用都只需要操作单一的数据库,这种情况下的事务称之为本地事务(Local Transaction)。本地事务的ACID特性是数据库直接提供支持。本地事务应用架构如下所示:在JDBC编程中,我们通过java.sql.Connection对象来开启、关闭或者提交事务。代码如下所示:Co...
2019-08-18 16:51:45 327
原创 分布式事务面试题
概念 说明 分布式事务 横跨多个服务,操作多个数据库; 跨库、分库分表、分服务 DTP 模型 DTP模型的5个基本元素: 应用程序 AP 资源管理器 RM 事务管理器 TM 通信资源管理器 CRM 通信协议 CP XA规范 定义了RM-TM的交互接口 ...
2019-08-18 16:30:19 14982
原创 分布式全文检索引擎-Elasticsearch
Elasticsearch是一个基于Apache Lucene(TM)的开源搜索引擎。 分布式的实时文件存储,每个字段都被索引并可被搜索 分布式的实时分析搜索引擎 可以扩展到上百台服务器,处理PB级结构化或非结构化数据 在Elasticsearch中,文档归属于一种类型(type),而这些类型存在于索引(index)中,我们可以画一些简单的对比图来类比传统关系型...
2019-08-18 16:23:57 325
转载 缓存架构文章集锦
来源:架构师之路:https://mp.weixin.qq.com/s/4J3oM1j5hcLq4w4TdSEMPg缓存是互联网系统架构中必不可少的一环,近一个月,写了一些缓存的文字。《缓存架构到底设计了些啥?》1.《进程内缓存究竟怎么玩?》缓存,可以分为:进程内缓存,缓存集群。文章介绍了:(1)什么是进程内缓存(2)进程内缓存的优缺点(3)进程内缓存保存一致性的3种方案(4)...
2019-08-18 15:26:42 145
原创 缓存穿透、击穿、雪崩、热点key问题
参考来源:缓存世界中的三大问题及解决方案关于【缓存穿透、缓存击穿、缓存雪崩、热点数据失效】问题的解决方案 定义 问题 解决方案 缓存穿透 业务系统访问缓存和数据库都查询不到的数据。 发生情况: 1.恶意攻击,故意营造大量不存在的数据请求 2.代码逻辑错误 请求都会落到数据库中,数据库压力剧增...
2019-08-18 15:18:56 192
原创 Redis 面试问题
当前版本5.0 稳定版,项目使用 5.0 C语言写的问题 答案 Redis 基本数据结构 参考: https://mp.weixin.qq.com/s/gRtiSNDCuS0c8nF_Q8Tv9A https://mp.weixin.qq.com/s/TR8oe7c1SlOrk78untXdOA string...
2019-08-18 15:17:42 441
原创 分布式发号器
1、分布式环境下,保证每个序列号(sequence)是全系统唯一的;2、序列号可排序,满足单调递增的规律;3、特定场景下,能生成无规则(或者看不出规则)的序列号;4、生成的序列号尽量短;5、序列号可进行二次混淆,提供可扩展的interface,业务方自定义实现。方案 介绍 单机数据库 主键ID用bigint类型,并且设置为自增、无符号 优点...
2019-08-18 13:01:20 1017
原创 单点登录 SSO 及 CAS
问题 答案 单系统登录限制 单系统登录解决方案的核心是cookie,cookie携带会话id在浏览器与服务器之间维护会话状态。 但cookie是有限制的,这个限制就是cookie的域(通常对应网站的域名),浏览器发送http请求时会自动携带与该域匹配的cookie,而不是所有cookie。 同域下的单点登录 web应用群中所有子系统的域名统...
2019-08-18 13:00:48 312
原创 Thrift 面试题
问题 答案 socket socket是 应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口,它把复杂的TCP/IP协议族隐藏在Socket接口后面 服务端:socket() 创建socket描述符;bind()绑定实际地址;listen() 监听; accept 建立链接; 客户端:socket() 创建socket描述符;connect()连...
2019-08-18 13:00:34 3317
原创 Spring 系列面试题
问题 答案 Servlet(类) Java编写的程序,此程序是在服务器端运行的;处理客户端的请求并将其发送到客户端;担当Web浏览器或其他HTTP客户发出的请求,与HTTP服务器上的数据库或应用程序之间的中间层。 Servlet 工作原理 1、Web Client 向Servlet容器(Tomcat)发出Http请求、Servlet容器接收Web Client的请...
2019-08-16 18:16:27 163
原创 一条SQL语句是怎么执行的?
1.查询语句mysql> select * from T where ID=10;大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。Server 层:包括连接器、查询缓存、分析器、优化器、执行器存储引擎层:负责数据的存储和提取。其架构模式是插件式的,支持 InnoDB、MyISAM、Memory 等多个存储引擎。不同的存储引擎共用一个Serv...
2019-08-16 18:02:33 376 1
原创 Mysql事务的实现原理
事务理论概述:https://blog.csdn.net/hla199106/article/details/48348261MySQL 是一个支持多引擎的系统,但并不是所有的引擎都支持事务。比如 MySQL 原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被 InnoDB 取代的重要原因之一。4个隔离级别:read uncommited ,read commited ...
2019-08-16 17:56:53 17499 6
原创 Mysql 面试问题
问题 答案 ACID Atomic 原子性:事务中的所有操作,要么全部完成,要么全部不完成,执行错误会回滚 Consistent 一致性:一个事务操作前与操作后的状态一致,事务完成后,符合逻辑运算 Isolated 隔离性:多个事务并发执行,各个事务独立执行一样,其他事务对本次事务的影响 Durable 持久性:事务处理的结果能够被永久保存下来 ...
2019-08-16 17:43:31 213
原创 JVM-性能监控分析工具
来源:4大JVM性能分析工具详解,及内存泄漏分析方案1.VisualVMVisualVM 是javajdk自带的牛逼的调优工具,也是平时使用最多调优工具,几乎涉及了jvm调优的方方面面。启动起来后和jconsole 一样同样可以选择本地和远程,如果需要监控远程同样需要配置相关参数。这个工具放在JDK安装目录的bin目录下(例:/Library/Java/JavaVirtualMa...
2019-08-16 17:11:25 413
原创 JVM-性能调优
来源:JVM性能调优的6大步骤,及关键调优参数详解1.JVM调优目的对JVM内存的系统级的调优主要的目的是减少GC的频率和Full GC的次数。1.1.Full GC会对整个堆进行整理,包括Young、Tenured和Perm。Full GC因为需要对整个堆进行回收,所以比较慢,因此应该尽可能减少Full GC的次数。1.2.导致Full GC的原因1)年老代(Tenure...
2019-08-16 16:53:51 492 1
原创 JVM 面试问题
响应时间(RT):系统处理请求的时间吞吐量:单位时间内处理请求的数量QPS:每秒的响应请求数,也即是最大吞吐能力。(吞吐量的增大,有时会把平均响应时间作为牺牲,来换取一段时间处理更多的请求)问题 答案 JVM 内存划分 栈参考: https://blog.csdn.net/seebetpro/article/details/49202037...
2019-08-16 16:51:06 357
原创 java 集合面试问题
问题 答案 构造函数 方法 ArrayList 动态数组,非线程安全,允许添加null。查找效率高,但每次插入或删除元素,就要大量地移动元素,插入删除元素的效率低。 fast-fail事件产生的条件:当多个线程对Collection进行操作时,若其中某一个线程通过iterator去遍历集合时,该集合的内容被其他线程所改变;则会抛出Concur...
2019-08-16 15:47:12 140
原创 synchronize的实现原理
参考:https://blog.csdn.net/u012715840/article/details/58247556https://blog.csdn.net/East_MrChiu/article/details/89163865总结 : 1. 对象锁标记初始值为匿名偏向锁2. 线程第一次获取锁是升级为偏向锁3. 不止一个线程获取偏向锁,CAS 线程Id 失败的...
2019-08-16 15:24:48 492
原创 并发编程面试问题
更多问题参考:Java多线程面试题通关手册:https://mp.weixin.qq.com/s/w8KTx1K8RpcZl_In-CxIMQ问题 答案 线程与进程的区别? 进程是操作系统分配资源的最小单元,线程是CPU调度和分派的最小单元。 一个线程可以创建和撤销另一个线程,同一个进程中的多个线程之间可以并发执行 进程有独立的地址空间,线程有...
2019-08-16 15:04:37 172
原创 Java 基础知识面试题
问题 答案 java 1.7 1.8 1.9 新特性 参考: https://www.cnblogs.com/aspirant/p/8617201.html 抽象方法不能有具体实现 1.7 在Switch中可以用String字符串 ;二进制变量的表示,支持将整数类型用二进制来表示,用0b开头;Catch多个异常;泛型实例的创建可以通...
2019-08-15 17:13:56 251
原创 KMP算法--字符串模式匹配算法
字符串模式匹配:求一个字符串(模式串)在另一个字符串(主串)中的位置,称为字符串模式匹配KMP算法时间复杂度:O(n+m)核心思想:当一趟匹配过程中出现字符不匹配时,不需要回溯主串的指针,而是利用已经得到的“部分匹配”,将模式串尽可能多地向右“滑动”一段距离,然后继续比较。1.暴力算法public static int kmpMatch(String s, String t){...
2019-07-13 21:40:01 478
原创 Thrift--Thrift简介
1. Thrift介绍Thrift是一个跨语言的远程服务调用框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Coco
2016-09-17 18:47:10 670
原创 Mysql 常用命令
1、mysql服务的启动和停止 停止服务:net stop mysql 启动服务:net start mysql2、登陆mysql mysql -u用户名 -p用户密码 -h机器IP -P端口号 -D数据库名 例:mysql -uroot -p'123' -h10.0.0.4 -P3306 -Dtest 注: 1
2016-08-18 11:40:17 448
程序员编程艺术
2016-04-08
MySQL技术内幕:SQL编程(带书签)
2015-09-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人