自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

疯一样的女子

耐得住寂寞,守得住繁华!

  • 博客(41)
  • 收藏
  • 关注

转载 Dubbo常见面试题

Dubbo是国内最出名的分布式服务框架,也是 Java 程序员必备的必会的框架之一。Dubbo更是中高级面试过程中经常会问的技术,无论你是否用过,你都必须熟悉。下面我为大家准备了一些 Dubbo 常见的的面试题,一些是我经常问别人的,一些是我过去面试遇到的一些问题,总结给大家,希望对大家能有所帮助。1、Dubbo是什么?Dubbo是阿里巴巴开源的基于 Java 的高性能 RPC 分布...

2019-07-31 21:02:59 656

转载 Dubbo工作原理

面试题说一下的 dubbo 的工作原理?注册中心挂了可以继续通信吗?说说一次 rpc 请求的流程?面试官心理分析MQ、ES、Redis、Dubbo,上来先问你一些思考的问题,原理(kafka 高可用架构原理、es 分布式架构原理、redis 线程模型原理、Dubbo 工作原理),生产环境里可能会碰到的一些问题(每种技术引入之后生产环境都可能会碰到一些问题),系统设计(设计 MQ,...

2019-07-31 19:54:26 421

原创 hibernate常见错误分析

错误原因: 在hibernate内部,不知道Person是一个持久化类 错误之一: 在hibernate.cfg.xml文件中,没有把person的映射文件加进去错误原因: 表不存在 根据持久化类和映射文件没有建立表 在hibernate.cfg.xml中,得配置 <property name="hbm2ddl.auto">u...

2019-07-26 15:15:50 209

转载 深入理解Mysql索引底层数据结构与算法

索引索引是帮助MySQL高效获取数据的排好序的数据结构(容易忽略的点:排好序)(形象点就是教科书的目录)索引存储在文件里(也就是说有IO操作)索引结构:这里说说在几种数据结构中,mysql为什么选择hash,B+Tree二叉树红黑树hashBTree首先,如果数据没有索引,那么我们读取数据是这样的这里有一篇很好的硬盘存取原理文章,看完更容易理解:https:...

2019-07-19 20:45:07 413

转载 spring的@Transactional注解详细用法

概述事务管理对于企业应用来说是至关重要的,即使出现异常情况,它也可以保证数据的一致性。Spring Framework对事务管理提供了一致的抽象,其特点如下:为不同的事务API提供一致的编程模型,比如JTA(Java Transaction API), JDBC, Hibernate, JPA(Java Persistence API和JDO(Java Data Objects) 支持...

2019-07-19 19:29:55 127

转载 spring框架介绍及使用

Spring框架—控制反转(IOC)1 Spring框架概述1.1 什么是SpringSpring是一个开源框架,Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之...

2019-07-15 13:42:57 124

转载 redis之pipeline详解

一、pipeline出现的背景:redis客户端执行一条命令分4个过程: 发送命令-〉命令排队-〉命令执行-〉返回结果1这个过程称为Round trip time(简称RTT, 往返时间),mget mset有效节约了RTT,但大部分命令(如hgetall,并没有mhgetall)不支持批量操作,需要消耗N次RTT ,这个时候需要pipeline来解决这个问题二、pepeline的...

2019-07-13 15:29:15 14702 1

转载 什么是分布式锁及如何使用redis实现分布式锁

分布式锁  分布式锁其实可以理解为:控制分布式系统有序的去对共享资源进行操作,通过互斥来保持一致性。 举个不太恰当的例子:假设共享的资源就是一个房子,里面有各种书,分布式系统就是要进屋看书的人,分布式锁就是保证这个房子只有一个门并且一次只有一个人可以进,而且门只有一把钥匙。然后许多人要去看书,可以,排队,第一个人拿着钥匙把门打开进屋看书并且把门锁上,然后第二个人没有钥匙,那就等着,等第一个出来...

2019-07-13 10:47:20 308

转载 单进程单线程的Redis如何支持高并发

1、基本原理采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗)(1)为什么不采用多进程或多线程处理?多线程处理可能涉及到锁 多线程处理会涉及到线程切换而消耗CPU(2)单线程处理的缺点?无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善2、Redis不存在线程安全问题?Redis采用了线程封闭的方式,把任...

2019-07-13 10:26:27 977

转载 Redis知识点

0.redis单线程问题单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。1.为什么说redis能够快速执行(1) 绝大部分请求是纯粹的内存操作(非常快速)(2) 采用单线程,避免了不必要的上下文切换和竞争条件(3) 非阻塞IO - IO多路复用...

2019-07-12 20:51:26 79

转载 Redis和I/O多路复用

最近在看 UNIX 网络编程并研究了一下 Redis 的实现,感觉 Redis 的源代码十分适合阅读和分析,其中 I/O 多路复用(mutiplexing)部分的实现非常干净和优雅,在这里想对这部分的内容进行简单的整理。几种 I/O 模型为什么 Redis 中要使用 I/O 多路复用这种技术呢?首先,Redis 是跑在单线程中的,所有的操作都是按照顺序线性执行的,但是由于读写操作等待用...

2019-07-12 20:10:36 157

转载 [IDE工具]程序员喜欢的5款最佳代码比较工具

俗话说:三句不离本行,对于程序员这个可爱的群体来说也是一样,即使面对无休无止的编程工作,程序员们依旧任劳任怨的埋头苦干,梦想着用自己码下的代码改变世界。工欲善其事,必先利其器,每一位程序员都有自己私藏的编程必备工具,接下来小编就给大家推荐5款程序员最佳的代码比较工具。  一:Beyond Compare  推荐:★★★★★  Beyond Compare可以很方便地对比出两份源代码文件...

2019-07-12 19:20:32 1117

转载 ThreadLocal的原理和使用场景

个人理解就是直接在线程内新建了一个“局部变量”,之所以加引号是因为,这个局部变量实际上可以是本线程内的全局变量。使用方法如下:ThreadLocal<String> threadLocalOld = new ThreadLocal<String>(){ @Override protected String initialValue() { return...

2019-07-12 15:39:51 296

转载 线程池的4种常见创建方式

每次启动一个线程都要创建一个新的浪费资源的,还有时候线程过多的时候回造成服务器崩溃,所以有了线程池的诞生,线程池是用来管理线程的,下面是常用的几种创建线程的方式:一:创建大小不固定的线程池//这是一个线程类public class ThreadChi implements Runnable{ public void run(){ for(int i=0;i<...

2019-07-11 21:02:12 2374

转载 线程池参数详解

JDK1.5中引入了强大的concurrent包,其中最常用的莫过了线程池的实现ThreadPoolExecutor,它给我们带来了极大的方便,但同时,对于该线程池不恰当的设置也可能使其效率并不能达到预期的效果,甚至仅相当于或低于单线程的效率。ThreadPoolExecutor类可设置的参数主要有:corePoolSize在创建了线程池后,默认情况下,线程池中并没有任何线程,而是等待...

2019-07-11 20:29:33 1671 1

转载 线程不安全类与写法

常见线程不安全的类有哪些呢下图中,我们只画出了最常见的几种情况,我们常见的Collections集合都是线程不安全的StringBuilder-demo:@Slf4jpublic class StringExample1 { //请求总数 public static int clientTotal = 5000; //同时并发执行的线程数 pub...

2019-07-11 19:45:09 105

转载 什么是线程安全

在探讨线程安全之前,我们先来聊聊什么是进程。什么是进程?电脑中时会有很多单独运行的程序,每个程序有一个独立的进程,而进程之间是相互独立存在的。比如下图中的QQ、酷狗播放器、电脑管家等等。什么是线程?进程想要执行任务就需要依赖线程。换句话说,就是进程中的最小执行单位就是线程,并且一个进程中至少有一个线程。那什么是多线程?提到多线程这里要说两个概...

2019-07-11 19:21:23 149

转载 Thread wait和sleep的区别

这两者的施加者是有本质区别的.sleep()是让某个线程暂停运行一段时间,其控制范围是由当前线程决定,也就是说,在线程里面决定.好比如说,我要做的事情是 "点火->烧水->煮面",而当我点完火之后我不立即烧水,我要休息一段时间再烧.对于运行的主动权是由我的流程来控制.而wait(),首先,这是由某个确定的对象来调用的,将这个对象理解成一个传话的人,当这个人在某个线程里面说"暂停...

2019-07-11 17:25:25 5221

转载 为什么ConcurrentHashMap的读操作不需要加锁?

我们知道,ConcurrentHashmap(1.8)这个并发集合框架是线程安全的,当你看到源码的get操作时,会发现get操作全程是没有加任何锁的,这也是这篇博文讨论的问题——为什么它不需要加锁呢?ConcurrentHashMap的简介我想有基础的同学知道在jdk1.7中是采用Segment + HashEntry + ReentrantLock的方式进行实现的,而1.8中放弃了...

2019-07-11 08:53:26 1320

转载 分布式缓存

只要是位正儿八经的程序员自然知道「缓存」是什么,甚至我司的很多做运营的小姐姐现在和程序员小哥哥的交流中都时不时冒出「缓存」字眼,让人压力山大(本文讨论的「缓存」皆指的是软件层面运用的缓存)大家都知道的一点是,缓存可以让原本打开很慢的页面,变得能“秒开”。你平时访问的APP、网站几乎都有涉及到缓存的运用。那么,缓存除了能加速数据的访问之外,还有什么作用呢?另外,任何事物都有两面性,我们如...

2019-07-10 20:40:24 123

转载 大型网站的页面静态化

目录前言 方案一:网页静态HTML化 伪静态 布局样式模板化 应用层nginx 分发层nginx前言我们小伙伴们在访问淘宝、网易等大型网站时有没有考虑到,网站首页、商品详情页以及新闻详情页面是如何处理的?怎么能够支撑这么大流量的访问呢?很多小伙伴们就会提出他们都采用了静态化的方案,这样用户请求直接获取静态数据html,就不需要访问数据库了,性能就会大大提高;而且提高网站SE...

2019-07-10 20:21:38 14395

转载 高并发的核心技术-幂等的实现方案

一、背景我们实际系统中有很多操作,是不管做多少次,都应该产生一样的效果或返回一样的结果。例如:1. 前端重复提交选中的数据,应该后台只产生对应这个数据的一个反应结果。2. 我们发起一笔付款请求,应该只扣用户账户一次钱,当遇到网络重发或系统bug重发,也应该只扣一次钱;3. 发送消息,也应该只发一次,同样的短信发给用户,用户会哭的;4. 创建业务订单,一次业务请求只能创建一...

2019-07-10 20:01:12 88

转载 同一个SQL语句,为啥性能差异咋就这么大呢

《数据库允许空值,往往是悲剧的开始》一文通过explain来分析SQL的执行计划,来分析null对索引命中情况的影响,有不少朋友留言,问explain结果中的type字段,ref,ALL等不一样的值究竟是什么含义。今天花1分钟简单说下,常见的type结果及代表的含义,并且通过同一个SQL语句的性能差异,说明建对索引多么重要。explain结果中的type字段代表什么意思?...

2019-07-09 19:39:37 1112

转载 单点登录原理与简单实现

一、单系统登录机制1、http无状态协议  web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系  但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器请求,必...

2019-07-09 19:22:11 111

转载 Java开发人员最常犯的10个错误

阅读目录Array转ArrayList 判断一个数组是否包含某个值 在循环内部删除List中的一个元素 HashTable与HashMap 使用集合原始类型(raw type) 访问级别 ArrayList和LinkedList 可变与不可变 父类和子类的构造方法 “”还是构造方法 未来工作这个列表总结了10个Java开发人员最常犯的错误。Array转Arra...

2019-07-08 09:18:45 179

转载 使用gitbash来链接mysql

使用gitbash来链接mysql  最近在重拾MySQL,因为平时用的shell是git的gitbash比较多【毕竟好看-。-】,所以练习连接MySQL的时候用的也是gitbash,但是貌似没有相关的命令,上网寻找了相关的资料,发现解决方法是直接使用winpty调用下windows命令就可以了。  具体使用方法是这样的:1 winpty mysql -uroot -p  这...

2019-07-06 16:18:04 547

转载 使用IDEA进行JUnit测试的基本操作(二)

. 两种错误:Error和FailureError是代码错误@Test publicvoid testAdd() { int z=new T().add(5,3); assertEquals(8,z); int a=8/0; //这一句是有错误的 }Failure是测试失败@Test publicvoid...

2019-07-06 15:36:56 698

转载 使用IDEA进行JUnit测试的基本操作(一)

JUnit是一个回归测试框架(regression testing framework)。Junit测试是程序员测试,即所谓白盒测试,因为程序员知道被测试的软件如何(How)完成功能和完成什么样(What)的功能。Junit是一套框架,继承TestCase类,就可以用Junit进行自动测试了。1. 创建项目其中:1)com.junit.MyClass用于存放类2)为了不将测试...

2019-07-06 15:30:36 13323

转载 Intellij Idea乱码解决方案都在这里了

乱码场景使用Intellij Idea经常遇到乱码问题,可以总结为以下几类乱码的场景。1、工程代码乱码。2、main方法运行,控制台乱码。3、tomcat运行,控制台乱码。解决方案1、工程代码乱码Settings > Editor > File Encodings > Global Encodings & Project Encoding...

2019-07-06 13:42:52 2529

转载 使用 F12 开发人员工具调试 HTML 和 CSS

怎样打开Chrome的开发者工具?你可以直接在页面上点击右键,然后选择审查元素:或者在Chrome的工具中找到:或者,你直接记住这个快捷方式: Ctrl+Shift+I (或者Ctrl+Shift+J直接打开控制台),或者直接按F12。打开的开发者工具就长下面的样子:不过我一般习惯与点左下角的那个按钮,将开发者工具弹出作为一个独立的窗口:下面来分别说下每个Tab的作用。...

2019-07-06 12:44:34 3634

转载 如何使用浏览器的F12调试页面

如何使用浏览器的F12调试页面?一个程序员按照要求编写一个网页,不可能一次编写就完全达到目的,一般要对自己的的代码修改调试几次后才能到达要求,浏览器的F12开发人员工具就可以很方便的帮助程序员调试自己的代码。 F12 开发人员工具是一套按需采用的工具,网站开发人员可以随时在任何网页上使用 F12 工具,从而快速调试 JavaScript、HTML 和级联样式表 (CSS),...

2019-07-06 12:03:03 10153 1

转载 面试官对于JVM类加载机制的猛烈炮火,你能顶住吗

目录: 前文回顾 JVM在什么情况下会加载一个类? 从实用角度出发,来看看验证、准备和初始化的过程 核心阶段:初始化 类加载器和双亲委派机制 昨日思考题的解答 今日思考题 1、前文回顾咱们今天先来回顾一下昨天讲到的JVM整体的一个运行原理。我们首先从“.java”代码文件,编译成“.class”字节码文件,然后类加...

2019-07-05 14:49:37 223

转载 数据库允许空值(null),往往是悲剧的开始

数据库字段允许空值,会遇到一些问题,此处包含的一些知识点,和大家聊一聊。数据准备:create table user (id int,name varchar(20),index(id))engine=innodb;insert into user values(1,'shenjian');insert into user values(2,'zhang...

2019-07-04 21:00:03 10542

转载 基础不牢、地动山摇

经常有同学跟我说,很多的基础知识学过就忘,比如操作系统、数据库、网络协议等方面的底层原理。而这些往往都是技术面试必考的内容。每次被问到这个,我都不知怎么回答,跟他说多看几次,就记起来了?--- 这似乎是一句废话,但好像又对,细细想来,这后面还是有不少思考的。我觉得很多同学在基础知识上的问题,不是技巧的问题,而是对基础知识的态度和理解的问题。所以,这不是一篇教你怎么...

2019-07-04 20:16:16 590

转载 Synchronized的几种用法

我们都知道 Synchronized 是线程安全同步用的,大部分程序可能只会用到同步方法上面。其实 Synchronized 可以用到更多的场合,栈长列举了以下几个用法。1、同步普通方法这个也是我们用得最多的,只要涉及线程安全,上来就给方法来个同步锁。这种方法使用虽然最简单,但是只能作用在单例上面,如果不是单例,同步方法锁将失效。/***用在普通方法*/privates...

2019-07-04 19:58:20 486

转载 Java并发编程:Synchronized及其实现原理

一、Synchronized的基本使用  Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。Synchronized的作用主要有三个:(1)确保线程互斥的访问同步代码(2)保证共享变量的修改能够及时可见(3)有效解决重排序问题。从语法上讲,Synchronized总共有三种用法:  (1)修饰普通方法  (2)修饰静态方法  (3)修饰代码块...

2019-07-04 19:52:49 61

转载 IntelliJ IDEA 修改内存大小,运行大项目再也不卡了

运行大点的项目特别卡?没关系,我们改一下IDEA的最大占用内存就可以了。怎样查看IDEA内存使用情况呢?在 Settings -> Appearance & Behavior 设置窗口中,勾选 Show memory indicator 选项,然后主界面右下角会显示 Heap 总大小以及使用状况了。接下来找到idea*.exe.vmoptions,不同的操作系统,文件...

2019-07-04 19:34:59 19574 2

转载 为什么很多程序员工作时都戴耳机?

为什么很多程序员工作时都戴耳机?观点一:非诚勿扰,想静静。1、啥也没听,只是带着耳机而已。只是想告诉别人不要打扰我,选择性屏蔽一些讨厌的人说的话,不回答他。2、在听笑话或者有声小说。特别不想工作的时候会很认真地听,如果进入工作状态了,自己也就不知道在听什么了,然后等到没事的时候会再翻过去听一遍。3、在听歌。大概率的情况是在听歌。开发工作,有很多逻辑内容,需要...

2019-07-03 09:17:14 203 1

转载 高可用的常见策略

高并发是为了让系统“有效率”,高并发是让系统“更可靠”。高可用是架构设计中必须考虑的,也是技术面试时经常问到的。下面整理了一些常用的高可用策略,包括:(1)多副本(2)隔离(3)限流(4)熔断(5)降级(6)灰度发布与回滚(7)监控体系(8)日志报警1. 多副本避免单点,不把鸡蛋放到一个篮子里。例如网关、应用服务器、缓存服务器、数据库……,通常都...

2019-07-03 09:13:30 1458

转载 [数据库]MySQL索引原理和深度优化

一、摘要本文以MySQL数据库为研究对象,讨论与数据库索引相关的一些话题。特别需要说明的是,MySQL支持诸多存储引擎,而各种存储引擎对索引的支持也各不相同,因此MySQL数据库支持多种索引类型,如BTree索引,哈希索引,全文索引等等。为了避免混乱,本文将只关注于BTree索引,因为这是平常使用MySQL时主要打交道的索引,至于哈希索引和全文索引本文暂不讨论。二、常见的查询算法及数据...

2019-07-02 20:36:52 416 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除