自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

babyZeng

个人博客

转载 mysql性能优化(10) mysql查询查询技巧

1、查询 SQL 尽量不要使用 select *,而是 select 具体字段 反例: select * from employee; 推荐写法: select id,name from employee; 推荐理由: 只取需要的字段,节省资源、减少网络开销。 select * 进...

2020-05-28 19:37:16 171 0

转载 java(优化28) 优化if-else写法

优化方案 1:提前 return,去除不必要的 else 如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。 优化前: if(condition){ //doSomething }else{ ...

2020-03-11 18:33:55 872 0

转载 架构师之路(17)如何设计出健壮的秒杀系统?

一、秒杀应该考虑哪些问题 1.1 超卖问题 分析秒杀的业务场景,最重要的有一点就是超卖问题,假如备货只有100个,但是最终超卖了200,一般来讲秒杀系统的价格都比较低,如果超卖将严重影响公司的财产利益,因此首当其冲的就是解决商品的超卖问题。 1.2 高并发 秒杀具有时间短、并发量大的特点,...

2020-01-20 18:04:58 107 0

转载 架构师之路(16)定时任务的防重设计

一、起因 金融、支付类公司,易产生资损的业务当属代发、转账、卡券权益兑换类等出金交易。每一位致力于此的架构师、开发工程师最担心重复代发、重复兑换的问题,尤其对于批量的出金类业务,由于设计不当导致的大量的资金、资产损失后果惨重。因此批处理任务的防重设计极为重要。 二、定时任务演进 2.1 古代...

2020-01-20 16:25:47 109 0

转载 JAVA基础(44)Java锁Synchronized和Lock的区别

一、Synchronized和Lock对比图 二、锁的种类 锁的种类挺多,包括:自旋锁、自旋锁的其他种类、阻塞锁、可重入锁、读写锁、互斥锁、悲观锁、乐观锁、公平锁、可重入锁等等,其余就不列出了。我们这边重点看如下几种:可重入锁、读写锁、可中断锁、公平锁。 2.1 可重入锁 如果锁具备可...

2020-01-08 17:53:14 65 0

转载 架构师之路(15)每秒30W次的点赞业务,怎么优化?

一、需求描述: 实现类似新浪微博的点赞功能,高峰流量30WQPS,如何这样的服务呢? 二、需求分析 可以看到,这个业务的特点是: (1)吞吐量超高; (2)能够接受一定数据不一致;画外音:计数有微小不准确,不是大问题。 三、设计思路 有几点是最容易想到的: (1)肯定不能用数据库抗实时读...

2020-01-02 13:47:41 310 0

转载 java(优化27) 使用Stream API优化代码

前言: Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读 一、流如何简化代码 如果有一个需求,需要对数据库查询到的菜肴进行一个处理: 筛选出卡路里小于400的菜肴 对筛选出的菜肴进行一个排序...

2019-12-31 15:39:45 48 0

转载 java面试(7)Synchronized的5种用法

1.同步普通用法 这个也是我们用得最多的,只要涉及线程安全,上来就给方法来个同步锁。这种方法使用虽然最简单,但是只能作用在单例上面,如果不是单例,同步方法锁将失效。 /** * 用在普通方法 */ private synchronized void synchronizedMethod(...

2019-11-12 19:43:33 69 0

原创 mysql基础(10) MYSQL 组合索引使用(一)

MYSQL版本: 一、建表SQL DROP TABLE IF EXISTS `index_test`; CREATE TABLE `index_test` ( `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键ID',...

2019-10-24 23:23:07 66 0

转载 高性能开发(4) Redis缓存哨兵模式配置

主从切换技术的方法是: 当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。 一、哨兵(Sentinel)模式概述 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵...

2019-10-10 22:35:44 46 0

转载 JAVA基础(43)彻底理解cookie、session、token

发展史 1、很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, 不需要记录谁在某一段时间里都浏览了什么文档,每次请求都是一个新的HTTP协议, 就是请求加响应, 尤其是我不用记住是谁刚刚发了HTTP请求, 每个请求对我来说都是全新的。这段时间很嗨皮。 2、但是随着交互式W...

2019-08-16 18:50:08 76 0

转载 mysql小结(1) MYSQL索引特性小结

1.Sql执行顺序 (1) FROM 子句 组装来自不同数据源的数据 (2)WHERE 子句 基于指定的条件对记录进行筛选 (3) GROUP BY 子句 将数据划分为多个分组 (4)使用聚合函数进行计算 (5)使用HAVING子句筛选分组 (6)计算所有的表达式 (7)使用ORDER BY对结...

2019-08-15 20:20:02 47 0

转载 JAVA基础(42)浅谈一个Java类的生命周期

前言 一个Java类从被加载到虚拟机内存开始,到卸载出内存为止,它经过了哪些步骤呢?这篇文章就来简述一下关于Java类生命周期相关的知识,其中每个生命周期的具体内容不会细讲,因为内容太多,我准备专门花一篇文章介绍类生命周期中的详细步骤。概述 一个Java类从开始到结束整个生命周期会经历7个阶段:加...

2019-08-15 15:36:29 67 0

转载 java(优化26) Lambda表达式(一)

1.Lambda表达式的由来 案例: 班导想了解一下各个同学的相关情况: 1、来自苏州的有哪些同学 上面的伪代码,是不是很简单,写一个方法,直接过滤出苏州地区的学生。 问:班导又想知道来自北京的有哪些同学,那代码执行优化一下,可以动态传地区参数。 2、地区参数化 这样是不是就...

2019-08-15 14:48:13 63 0

转载 java面试(6)挑战10个最难回答的Java面试题

1.为什么等待和通知是在 Object 类而不是 Thread 中声明的? 一个棘手的 Java 问题,如果 Java编程语言不是你设计的,你怎么能回答这个问题呢。Java编程的常识和深入了解有助于回答这种棘手的 Java 核心方面的面试问题。1.1 为什么 wait,notify 和 noti...

2019-08-15 11:45:00 101 0

转载 架构师之路(14)RPC框架详解

1.RPC(Remote Procedure Call): 远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的思想。 RPC 是一种技术思想而非一种规范或协议。 2.常见 RPC 技术和框架有: 应用级的服务框架:阿里的 Dubbo/Dubbox、Googl...

2019-07-02 16:01:10 303 0

转载 spring(基础24) Spring注解@Transactional配置事务

1、详细介绍 事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种方式。 编程式事务指的是通过编码方式实现事务;声明式事务基于 AOP,将具体业务逻辑与事务处理解耦。声明式事务管理使业务代码逻辑不受污染, 因此在实际...

2019-06-17 14:30:36 56 0

转载 tomcat优化(五)tomcat调优

Tomcat 调优大致分为两大类: 1.Tomcat 的自身调优: 采用动静分离节约 Tomcat 的性能 禁用 AJP 连接器 调整 Tomcat 的线程池 调整 Tomcat 的连接器 修改 Tomcat 的运行模式 2.JVM的调优: 调优Jvm内存 一、Tomcat 自身调优...

2019-05-27 11:18:23 152 0

转载 多线程(1)ThreadLocal用法及原理

前言: ThreadLocal和Synchonized都用于解决多线程并发访问。 synchronized是利用锁的机制,使变量或代码块在某一时该仅仅能被一个线程访问。 而ThreadLocal为每个线程都提供了变量的副本,使得每个线程在某一时间訪问到的并非同一个对象,这样就隔离了多个线程对数据...

2019-05-23 18:25:32 78 0

转载 java面试(5)Dubbo和SpringCloud微服务架构之间的区别

微服务主要的优势: 1、降低复杂度 将原来偶合在一起的复杂业务拆分为单个服务,规避了原本复杂度无止境的积累。每一个微服务专注于单一功能,并通过定义良好的接口清晰表述服务边界。每个服务开发者只专注服务本身,通过使用缓存、DAL等各种技术手段来提升系统的性能,而对于消费方来说完全透明。 2、可独...

2019-05-23 17:44:08 1361 0

转载 阿里面试题(1)redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现?

一、面试原题 redis的过期策略都有哪些?内存淘汰机制都有哪些?手写一下 LRU 代码实现? 二、面试官心里分析 如果你连这个问题都不知道,上来就懵了,回答不出来,那线上你写代码的时候,想当然的认为写进 redis 的数据就一定会存在,后面导致系统各种 bug,谁来负责? 常见的有两个问题...

2019-04-29 17:27:20 161 0

转载 nginx学习(1) nginx配置详解

1.定义 nginx是一款轻量级服务器/反向代理服务器及电子邮件代理服务器,在BSD-like 协议下发行。其特点是占有内存少,并发能力强。 2、静态HTTP服务器 首先,Nginx是一个HTTP服务器,可以将服务器上的静态文件(如HTML、图片)通过HTTP协议展现给客户端。 静态http...

2019-04-29 17:03:49 61 0

转载 Spring Cloud学习(三) Spring Cloud原理与核心

一、定义 Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。 Spring并没有重复制造轮子,...

2019-04-26 11:06:58 70 0

原创 JAVA基础(41)java元注解之@Target、@Retention、@Documented详解

一、元注解 元注解的作用就是负责注解其他注解。Java5.0定义了4个标准的meta-annotation类型,它们被用来提供对其它 annotation类型作说明。Java5.0定义的元注解:     1.@Target,     2.@Retention,     3.@Documented...

2019-04-25 17:29:38 213 0

原创 spring(基础23) try catch对Spring事务的影响

一、spring事务回滚 Spring 的默认事务机制,当出现unchecked异常时候回滚,checked异常的时候不会回滚。 异常中unchecked异常包括error和runtime异常。需要try catch或向上抛出的异常,为checked异常比如IOException, 也就是说程...

2019-04-25 15:47:01 258 0

转载 架构师之路(13)系统如何支持高并发

高并发系统各不相同。比如每秒百万并发的中间件系统、每日百亿请求的网关系统、瞬时每秒几十万请求的秒杀大促系统。 他们在应对高并发的时候,因为系统各自特点的不同,所以应对架构都是不一样的。 另外,比如电商平台中的订单系统、商品系统、库存系统,在高并发场景下的架构设计也是不同的,因为背后的业务场景什么的...

2019-04-02 17:24:15 324 0

原创 eclipse导入maven项目报错"Missing artifact com.sun.:tools:jar:1.8.0"错误解决方法

一、报错信息 1.1分析原因 选中项目-->右键 -->"Properties"-->"Java Build Path" 二、解决步骤 在报错的pom.xml文件中添加: <dependency> ...

2019-04-01 18:14:54 8721 1

转载 Spring Cloud学习(二) Spring Cloud Eureka详解

一 Eureka服务治理体系 1.1 服务治理 服务治理是微服务架构中最为核心和基础的模块,它主要用来实现各个微服务实例的自动化注册和发现。 Spring Cloud Eureka是Spring Cloud Netflix微服务套件中的一部分,它基于Netflix Eureka做了二次封装。主...

2019-03-28 19:28:34 72 0

原创 java代码 EXCEL实战(一) 导入手机号

一、需求描述: 管理后台用户管理模块下某用户操作界面,需要一个批量导入手机号的功能。 二、前端代码: 2.1 html代码 &lt;table&gt; &lt;tr&gt; &lt;td&gt; &lt;...

2019-02-27 15:36:49 651 0

转载 架构师之路(12)多库多事务降低数据不一致概率

一、案例缘起 我们经常使用事务来保证数据库层面数据的ACID特性。 举个栗子,用户下了一个订单,需要修改余额表,订单表,流水表,于是会有类似的伪代码: start transaction; CURDtable t_account; any Exception rollb...

2019-02-22 17:07:43 65 0

转载 架构师之路(11)单点系统架构的可用性与性能优化

一、需求缘起 明明架构要求高可用,为何系统中还会存在单点? 回答:单点master的设计,会大大简化系统设计,何况有时候避免不了单点 在哪些场景中会存在单点?先来看一下一个典型互联网高可用架构。 典型互联网高可用架构: (1)客户端层,这一层是浏览器或者APP,第一步先访问DNS-s...

2019-02-22 15:52:38 105 0

原创 Spring Boot运用(一)Spring Boot添加切面,记录日志

一、AOP简介 AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是Spring框架中的一个重要内容, 它通过对既有程序定义一个切入点,然后在其前后切入不同的执行内容,比如常见的有:打...

2019-01-08 14:59:32 1112 0

转载 JAVA基础(40)Log4j和Log4j2的区别

相信很多程序猿朋友对log4j都很熟悉,log4j可以说是陪伴了绝大多数的朋友开启的编程。我不知道log4j之前是用什么,至少在我的生涯中,是log4j带我开启的日志时代。 log4j是Apache的一个开源项目,我们不去考究它的起源时间,但是据我了解,log4j 1已经不再更新了。  下面引用官...

2018-09-10 10:19:47 112 0

转载 mysql基础(九) MYSQL 索引类型

一、简介 MySQL目前主要有以下几种索引类型: 1.普通索引 2.唯一索引 3.主键索引 4.组合索引 5.全文索引 二、语句 CREATE TABLE table_name[col_name data type] [unique|fulltext][index|key][index_n...

2018-08-24 14:55:46 104 0

原创 分布式运用(一) redis分布式锁的实现方法

前言 分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。 一、可靠性 首先,为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件: 1)互斥性。在任意时刻,只有一个客户端能持有锁。 2)不会发生死锁。即使有一个...

2018-08-24 14:41:42 163 0

转载 Spring Boot学习(三)Spring Boot配置大全

############################################################# # mvc ############################################################# spring.mvc.as...

2018-07-31 15:07:00 196 0

转载 Spring Cloud学习(一) ZuulFilter 过滤器详解

本文转自:https://blog.csdn.net/liuchuanhong1/article/details/62236793 1、继承ZuulFilter类,为了验证Filter的特性,我们这里创建3个Filter 根据用户名来过滤 package com.chhliu.spring...

2018-07-30 15:15:00 656 0

原创 Spring Cloud项目(一) ZuulFilter 过滤器的使用

一、实现步骤 1.1 pom.xml添加jar包 &lt;?xml version="1.0" encoding="UTF-8"?&gt; &lt;project xmlns="http://maven.apache....

2018-07-30 14:35:38 1089 0

转载 JAVA基础(39) java命令详解

Java是通过java虚拟机来装载和执行编译文件(class文件)的,java虚拟机通过命令java  option 来启动,-option为虚拟机参数,通过这些参数可对虚拟机的运行状态进行调整.   一、如何查看参数列表:   虚拟机参数分为基本和扩展两类,在命令行中输入java 可得到基本...

2018-07-26 15:30:47 125 0

转载 学习分布式事务(四)

  一、例子 你上Taobao买东西,需要先扣钱,然后商品库存-1吧。但扣款和库存分别属于两个服务,这两个服务中间要经过网络、网关、主机等一系列中间层,万一任何一个地方出了问题,比如网络抖动、突发异常等待,都会导致不一致,比如扣款成功了,但是库存没-1,就会出现超卖的现象,而这就是分布式事务需...

2018-07-24 18:09:16 173 0

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