自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

憧憬美好生活的boy

一切的努力都是为了有一个美好的生活、

  • 博客(96)
  • 资源 (1)
  • 收藏
  • 关注

原创 如何设计一个秒杀系统?

本文作为许令波老师“如何设计一个秒杀系统?”这一课程的学习记录。同时也记录下今年项目中的一些原因导致秒杀、抢购服务器宕机秒杀系统的关键点秒杀系统其实主要解决2个问题,一个是并发读,一个是并发写。整体概况为“稳、准、快”高性能。 秒杀涉及大量的并发读和并发写,因此支持高并发访问这点非常关键。本文将从设计数据的动静分离方案、热点的发现与隔离、请求的削峰与分层过滤、服务端的极致优化这 4 ...

2018-12-29 16:17:04 15393 6

原创 《MySQL实战45讲》数据库更新语句执行原理

购买了林晓斌老师的这个课程,此文作为学习笔记update T set c=c+2 where ID=2这样一句更新的sql语句执行过程分为以下几个步骤:根据条件查询ID=2的记录(这里和查询语句的执行步骤是一样的)执行器执行更新记录日志redo log(重做日志、物理日志) binlog(归档日志、逻辑日志)redo logredo log是InnoDB 独有的重点来...

2018-11-23 20:05:38 583

原创 《MySQL实战45讲》数据库查询语句执行原理

购买了林晓斌老师的这个课程,此文作为学习笔记首先要知道MySQL的查询语句是如何执行的,就需要先知道MySQL的逻辑架构图上图看出MySQL可分为Server层和存储引擎层两部分1.Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储...

2018-11-15 23:20:09 1251

原创 什么是代理模式?

前言设计模式系列文章,主要是把自己开发过程中用到的设计模式。温习一下,并且记录这个过程。什么是代理模式?代理模式给某一个对象提供一个代理对象,并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。为了保持行为的一致性,代理类和委托类通常会实现相同的接口,所以在访问者看来两者没有丝毫的区别。通过代理类这中间一层,能有效控制对委托类对象的直接访问,也可以很好地隐藏和保护委托类对象,同时也为实施不同控制策略预留了空间,从而在设计上获得了更大的灵活性。举个栗子: 我要买一套二手.

2021-04-19 00:13:29 236

原创 大白话讲接口和抽象类的区别

有个亲戚系列我表弟,去年大学毕业后,找工作不太顺利。听了同学的推荐去学了Java开发,昨天晚上发微信,问我接口和抽象类的区别。表弟:哥,为什么设计出接口和抽象类?他们有什么区别?我:去百度吧,上面都能查到,而且说的很全面。表弟:搜了,百度上说的都是抽象类可以有非抽象方法,接口没有非抽象方法什么的。我:是啊,没说错啊。表弟:这些是没错,可是无法说服我为什么设计出这两个东西的初衷。回想曾经,我也有过这样的疑问。一直到后来,开发过程中慢慢体会到了他们的差异抛砖引玉那些

2021-04-01 00:30:03 306 1

原创 Xrebel提供了哪些功能?如何去使用?和PINPOINT相比有哪些优势?

Xrebel是一款性能分析插件,能够提供各个部分代码性能监控。例如:方法执行时间,出现的异常,SQL执行时间,输出的Log,MQ执行时间等。在本地开发中提供应用程序性能的实时反馈,以更快地发现和修复错误。XRebel提供的功能接口中调用的应用耗时接口中IO调用耗时接口的调用日志接口出现的异常信息接口中调用的应用耗时通过这个功能可以看到各个应用的耗时,以及耗时百分比分布接口中IO调用耗时通过这个功能,可以看到各个接口的IO耗时分布情况,右上角有筛选功能,可以选择需要优化的类型,如S.

2021-03-29 14:42:41 1036

原创 用状态模式的思想来处理电商订单的流转

状态机模式的实践代码地址:Gitee、Github前言当初弄出这个,也是因为订单有各种状态,状态流转做的事情都是一样的,而且不同的状态到目标状态有很多种途径.所以需要写很多service,各个操作都有对应的方法,这样显得不怎么集中状态模式就是用来解决大量不同场景不同行为的模式当然这个设计其实这不完全算是状态机模式,只是用状态机的思想,事件驱动状态流转。个人总结的一些经验,希望能对你有所帮助,如果有什么好的意见或者建议,欢迎指点。状态机介绍状态机可归纳为4个要素,即现态、事件、动作、次态

2021-01-09 15:50:54 938

原创 打开Github很慢,解决方式

打开hosts文件,配置如下映射即可31.13.64.49 github.global.ssl.fastly.net192.30.253.113 github.com185.199.108.153 assets-cdn.github.com185.199.108.153 documentcloud.github.com8.7.198.45 gist.github.com185.199....

2020-03-24 19:51:34 1401 1

原创 Java面试题分享

本文意在分享最近的一些面试题明源云1.熔断用了吗,怎么用的2.分布式锁怎么实现 超时时间设置多少合适3.首页为什么要拆分单独的服务4.springcould资源隔离5.为什么那么多分布式框架要选择springcould6.mysql主从同步原理,有延时吗7.读写分离是怎么去做的。8.一张1000w数据的订单表,10个字段,还有一张500w数据的用户表。8个字段。现在要得到任...

2019-08-27 11:11:45 2436

原创 为什么要有volatile?volatile的三大特性是什么?

volatile是虚拟机提供的轻量级的同步机制volatile三大特性保证可见性不保证原子性禁止指令重排(有序性)可见性:每个线程创建时JVM都会为他创建一个工作内存,工作内存是每个线程的私有数据区域,Java内存模型中所有的变量都存在主内存,线程对变量的读取和赋值都要在工作内存中完成。所以首先要将变量拷贝到工作内存,修改后再写回主内存,如果有多个线程都读取了这个变量。修改后则需要...

2019-06-16 18:25:12 335

原创 记录开发中遇到的坑

此ip地址不允许调用接口,如有需要请登录微信支付商户平台更改配置微信支付企业付款到零钱接口,需要配置IP白名单。配置了服务外网IP之后死活不对原因是服务器出口IP和外网IP不一致。通过下面方式获取出口IP即可curl http://members.3322.org/dyndns/getip...

2019-05-27 16:29:06 313

原创 生产事件实录-Mysql Waiting for table metadata lock

专栏链接地址1、生产事件实录-浅谈XEE漏洞2、生产事件实录-CPU报警超负载原因查找问题起源订单日志表4000w数据,某同事执行了下面类似一条DDL语句,因为事务过长导致用户下单时,订单插入日志的事务一直等待释放锁。服务不可用长达十分钟。alter table gp_order_log modify column operator varchar(30);问题分析DDL语句执...

2019-04-25 15:47:21 305

原创 生产事件实录-浅谈XXE漏洞

问题起源微信商户平台收到了微信的安全通知,如下所示,漏洞详情则是XEE漏洞。所以就去了解了XEE早在2018年7月初有国外白帽子就发现了这个漏洞,作为一线技术人员竟然全然不知(自我检讨ing…)什么是XEE漏洞?XXE是指基于xml的,xml外部实体攻击下面看一段简单的xml文档代码,其中‘username’,‘password’,'address’被称为xml的元素<?xm...

2019-04-19 10:44:35 331

原创 生产事件实录-CPU报警超负载原因查找

线上环境在无秒杀、营销活动等情况下,出现CPU满载,报警线上环境在无秒杀、营销活动等情况下,出现CPU满载,报警top命令找到消耗CPU的进程top -Hp 29751(shift+p 按cpu排序,shift+m 按内存排序)找到进程中消耗CPU的线程printf ‘%x\n’ 7065 得到16进制PIDjstack 29751 |grep 1b99 -A 30 打印当前时...

2019-04-15 20:32:27 571

原创 TCP、UDP详解

TCP、UDP是什么连接、无连接含义TCP:传输控制协议,提供的是面向连接、可靠的字节流服务。当客户和服务器彼此交换数据前,必须先在双方之间建立一个TCP连接(面向连接),之后才能传输数据。TCP提供超时重发,丢弃重复数据,检验数据,流量控制等功能,保证数据能从一端传到另一端。UDP:用户数据报协议,是一个简单的面向数据报的运输层协议。UDP不提供可靠性,它只是把应用程序传给IP层的数据...

2019-03-23 16:31:09 246

原创 RocketMQ部署采坑记录

org.apache.rocketmq.remoting.exception.RemotingTooMuchRequestException: sendDefaultImpl call timeout发送消息时报错问题原因不明,按照下面教程指定IP就可以了#进入任意目录,编写配置文件,并写好配置#echo &amp;quot;brokerIP1=服务器的外网IP&amp;quot; &amp;amp;gt; broker.propertie...

2019-01-30 18:21:11 586

原创 Docker安装、命令详解、自定义镜像

文章只做基本操作命令记录,后续持续学习更新1.安装 uname -r #检查内核版本是否是3.10以上 yum update #如果低于3.10就需要更新内核 yum install docker #安装docker systemctl start docker #启动docker docker -v #查看docker版本2.操作命令#搜索需...

2018-12-11 17:28:25 412

原创 Git怎么把不用提交的IDE等配置文件忽略?

场景描述:&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;在操作git时,把文件提交到暂存区,那些不必要的配置文件总是要被提交。如下图.idea和target目录或者文件都是不需要提交的解决方案打开https://github.com/github/gitignore,找到对应语言的.gitignore文件在C盘/用户/当前用户 文件夹下新建上面对应语言的.gitignore文件,如...

2018-11-29 16:38:11 1107

原创 IDEA创建项目push到git上报错“Push rejected: Push to origin/master was rejected”

Push rejected: Push to origin/master was rejected解决方案如下:1.“Show in Explorer”切换到自己项目所在的目录,Git Bash Here2.依次输入命令:git pullgit pull origin master#[ --allow-unrelated-histories]是告诉系统我允许合并不相关历史的内容...

2018-11-28 19:30:16 859

原创 Git基本操作及命令记录

1.本地库和远程库交互场景团队内部协作经理创建远程库,然后推送(push)代码到远程库,组员再clone到本地,修改后再push(前提是加入团队),经理再拉取(pull)跨团队合作A团队leader创建远程库,B团队的人fork一份到自己的远程库。然后B再clone一份在本地,解决问题后再push到自己的远程库。B的远程库怎么把代码合并到A团队的远程库呢?就需要B团队的人发起一个...

2018-11-27 19:57:15 188

原创 发送邮件javax.mail.MessagingException: 501 Syntax: HELO hostname

问题线上邮件发送失败,报异常javax.mail.MessagingException: 501 Syntax: HELO hostname解决方案//查看机器hostname[admin@zyhy-10-1-0-16 ~]$ hostname//查看hosts文件配置的127.0.0.1配置的hostname是否一致[admin@zyhy-10-1-0-16 ~]$...

2018-09-04 19:34:06 821

原创 学习《高性能MySQL》笔记-索引篇

1.索引释义:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息。如果想按特定职员的姓来查找他或她,则与在表中搜索所有的行相比,索引有助于更快地获取信息。比如书本的目录,那几页目录就是索引内容,目录中的维度比如“章节名称”、“首字母”对应的就是索引的列。2.索引优点:2.1&amp;amp;amp;amp;amp;amp;gt;索引大大减少了服务器需要扫描的数据量2.2&amp;amp;amp;amp;amp;amp;gt;索引可以帮助服

2018-08-22 18:39:35 261

原创 Dubbo记坑

1.因为没有配置dubbo请求连接超时时间,导致出现以下场景因为没有配置dubbo请求连接超时时间,消费者请求到生产者之后,调用了查询语句,但是消费者端报错了。说连接超时异常,当再请求一次,发现又可以了。com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method getUserList in the service c...

2018-06-26 15:25:12 746

原创 很舒服的Xshell配色方案

分享一个很舒服的Xshell配色方案 文件下载地址: https://pan.baidu.com/s/1a0Ly4SMSPNWy343MfRVARQ 密码: d5u8 导入即可 效果图

2018-06-21 11:12:24 8503 3

原创 FindBugs-IDEA插件的安装和使用

1.下载 因为使用idea在线无法下载,可下载这个链接的插件,亲测可用 https://download.csdn.net/download/libra_ts/10467779 2.安装 安装完成,重启。3.使用 a. Bad practice代码中的一些坏习惯Class names should start with an upper case letter ...

2018-06-08 17:53:18 2090

原创 ThreadPoolTaskExecutor参数详解、问题

前言当需要进行一项耗时操作时,就需要用到子线程,用到子线程时可以选择new一个子线程来操作,这样不是不行,但是效率会很低。而且消耗内存,所以就需要引用线程池来解决问题配置ThreadPoolTaskExecutor&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;lt;bean id=&amp;amp;amp;amp;amp;amp;amp;amp;amp;quot;taskExecutor&amp;amp;amp;amp;amp;

2018-05-11 23:06:12 12045

转载 Mysql SQL查询今天、昨天、n天内、第n天的数据

Mysql SQL查询今天、昨天、n天内、第n天注意:因为对索引列使用函数会导致索引失效,如果查询时需要使用到索引,请使用MySQL DATE_SUB() 函数查询当天的所有数据SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())=01查询昨天的所有数据SELECT * FROM 表名 WHERE DATEDIFF(字段,NOW())=-1...

2018-05-11 11:10:56 32345 5

原创 Linux centos安装mysql

安装步骤#解压tar -zxvf mysql-5.6.33-linux-glibc2.5-x86_64.tar.gz#复制解压后的mysql目录cp -r mysql-5.6.33-linux-glibc2.5-x86_64 /usr/local/mysql#添加用户组groupadd mysql#添加用户mysql 到用户组mysqluseradd -g mysql mys...

2018-05-04 18:03:10 269

原创 springboot乱码问题汇总解决

请求参数乱码:如果试遍了网上所说的所有方法,还是不行就修改启动虚拟机参数 IDEA1.找到安装目录D:\IntelliJ_IDEA\IntelliJ IDEA 2017.2.4\bin2.idea64.exe.vmoptions文件,如果是64位的就修改这个文件,否则就修改idea.exe.vmoptions3.编辑文件,加上-Dfile.encoding=UTF-8PS:如果...

2018-04-10 18:08:24 1548 2

原创 springboot把配置实体和配置文件关联

1.实体package com.tansen.study.springbootssm.bean;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component@ConfigurationProp

2018-04-10 15:50:30 820

原创 springboot无法读取mapper.xml的问题

记个坑,不知道为什么org.apache.ibatis.binding.BindingException: Invalid bound statement (not found):搭建springboot项目的时候,报上面这个异常,说明是mapper.xml配置文件没加载,检查了各种配置之后发现没问题,百思不得其解最后在网上看到,当配置没问题的时候,把文件转移到resources文...

2018-04-06 22:47:16 4746

原创 邮件发送工具类

工具类package com.morning.star.pt.common.component;import com.morning.star.exception.CODE;import com.morning.star.exception.MorningStarException;import com.morning.star.pt.common.entity.EmailAttachmentV

2018-03-13 18:57:31 820

原创 MultipartFile文件上传

file的name为files @RequestMapping ("/publish") @ResponseBody public WebJsonBean publish(@RequestParam MultipartFile[] files) throws IOException { try { for (int i = 0; i <

2018-03-09 17:07:38 1859 1

原创 AOP切面编程

注意:jar包版本必须和jdk版本一致,否则会出现错误 jdk1.8==>1.8<!-- aspectj 支持 --><dependency> <groupId>aspectj</groupId> <artifactId>aspectjrt</artifactId> <version>1.8.7</version></dependency><dependency> <g

2018-03-07 15:24:35 183

原创 ThreadLocal分析

ThreadLocal:线程局部变量在并发编程的时候,成员变量如果不做任何处理其实是线程不安全的,各个线程都在操作同一个变量,显然是不行的,并且我们也知道volatile这个关键字也是不能保证线程安全的。那么在有一种情况之下,我们需要满足这样一个条件:变量是同一个,但是每个线程都使用同一个初始值,也就是使用同一个变量的一个新的副本。这种情况之下ThreadLocal就非常使用例子比较: 不使用

2018-03-01 19:13:58 122

原创 <流程控制>shell学习之路(七)

if语句示例:a=10b=20if [ ${a} = ${b} ]then echo "a = b"elif [ $a > $b ] then echo "a > b"else echo "a < b"fi for 循环for item in 11 22 33 44 55 do echo $itemdone while循环int=1while(( $i

2018-02-08 18:00:12 130

原创 <运算符>shell学习之路(六)

shell运算符包括算数运算符 关系运算符 布尔运算符字符串运算符文件测试运算符原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,expr 最常用 变量和符号之间必须要有空格,否则就会按照原样输出 算数运算符 #!/bin/bashsum=`expr 2 + 2`mod=`expr 4 / 2`error=`expr 4-2`

2018-02-08 14:06:00 151

原创 <传递参数>shell学习之路(五)

传递参数在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为:$n$0 可以输出执行的文件名称n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数,以此类推……#输出所有参数${*}echo "${*}"echo "传递的第一个参数是${0}"echo "传递的第一个参数是${1}"echo "传递的第二个参数是${2}"执行[root@test-se

2018-02-07 18:35:05 179

原创 <数组>shell学习之路(四)

定义数组用括号来表示数组,数组元素用"空格"符号分割开,长度不限制。如下address=("ShenZhen" "ChangSha" "ShangHai")也可以单一去定义,但是下标可以是整数或算术表达式,其值应大于或等于0。address[0]="ShenZhen"address[1]="ChangSha"address[2]="ShangHai"读取数组${数

2018-02-07 18:33:23 125

原创 <字符串操作>shell学习之路(三)

字符串类型str="ABCDEFG"使用单引号和双引号定义都可以,区别如下:单引号字符串的限制: 单引号里的任何字符都会原样输出,单引号字符串中的变量是无效的; 单引号字串中不能出现单引号(对单引号使用转义符后也不行)。双引号的优点: 双引号里可以有变量 双引号里可以出现转义字符拼接字符串your_name="zhangsan"h1="h

2018-02-07 18:32:34 324

eclipse的maven插件eclipse-maven3-plugin

插件包使用方式: 将解压后的子文件夹features和plugins的jar包文件分别导入Eclipse安装目录下的features和plugins文件夹内,然后重启Eclipse就可以在Preferences中看到Maven选项了。即Maven插件配置成功。

2017-07-06

空空如也

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

TA关注的人

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