自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

我爱娃哈哈的专栏

没有任何动物比蚂蚁更勤奋,然而它却最沉默寡言。

  • 博客(35)
  • 资源 (7)
  • 论坛 (8)
  • 问答 (4)
  • 收藏
  • 关注

原创 公司开始走下坡路,如何保持个人能力的提升?

在当今行业用人越发紧缩、技术开发者全方位内卷的大背景下,我们一个普通人要怎样去选择一个对自己有利的上升路径?大部分人选择公司都关注钱、人、事大部分人在选择新公司、新岗位的时候,常关注的只有三点:第一是钱,毕竟要吃饭养家,一个人除了社会责任外,还有家庭责任;第二点是所谓的人,一方面大家会关注进入新公司后周围的同事是否优秀,是否能一起成长;另一方面,也会关注是否能拿到管理权限,会带多少人的团队;第三点是事,具体干什么工作,是否有利于自己的经验积累,是否是自己喜欢的。你可以问问自己,在换工作选择公

2021-09-23 21:17:18 561 1

原创 最终一致性和实时一致性是什么?在架构设计中,我们应该选择哪种方式?

前面我们聊了微服务的9个痛点,有些痛点没有好的解决方案,而有些痛点刚好有一些对策,后面的几篇文章我们就来聊聊某些痛点对应的解决方案。本篇文章我们先解决数据一致性问题。一、业务场景使用微服务时,很多时候我们往往需要跨多个服务去更新多个数据库的数据,类似下图所示的架构。如果业务正常运转,3 个服务的数据应该变为 a2、b2、c2,此时数据才一致。但是如果出现网络抖动、服务超负荷或者数据库超负荷等情况,整个处理链条有可能在步骤二失败,这时数据就会变成 a2、b1、c1,当然也有可能在步骤三失败,最终数据

2021-09-05 22:15:56 16

原创 微服务的痛:用实际经历告诉你它有多坑(三)

我们在前面已经说了微服务的六个痛点:(1)微服务的职责划分之痛;(2)微服务的粒度拆分之痛;(3)没人知道系统整体架构全貌之痛;(4)重复代码过多之痛;(5)服务器资源耗费更多之痛;(6)分布式事务之痛。在这里我们继续来聊其他的痛点:一、服务之间的依赖在设计类时,我们往往需要遵循类与类之间不可循环依赖的原则,因此最终设计出来的类关系类似下图所示的层次分明的结构。如果我们把依赖关系转移到微服务,结果会怎么样呢?我们先举个例子看看。比如商品系统针对不同门店类型设置不同价格时需要调用门店系统中的类型,

2021-08-26 23:24:41 24

原创 微服务的痛:用实际经历告诉你它有多坑(二)

在前面我们说了微服务的两个痛点:微服务的职责划分和微服务的粒度拆分痛点,这里接着聊剩下的痛点:一、没人知道系统整体整体架构的全貌不知道大家有没有碰到过这种情况:每隔几个月或半年,大领导就会发话让我们汇报下每个部门的微服务数量、公司微服务总数量、每个微服务都用来做什么等情况。因为企业微服务数较多,所以每次给大领导汇报时,都是长长的一条清单。然后大领导开始抱怨:“几百个微服务?系统这么复杂了吗?谁能知道所有系统的全貌啊,如果出现问题,我们如何快速定位问题点呢?”此时负责人们只好乖乖地低着头,其中一个同事偷

2021-08-24 15:49:40 26

原创 你的项目真的适合微服务架构吗?微服务架构有哪些痛呢?(一)

在介绍业务场景之前,我们先来谈谈对微服务的一些理解。一、单体式架构 VS 微服务架构为了快速理解单体式架构与微服务架构之间的区别,我们先来看一个新零售系统的例子。比如门店(门店分为自营店和加盟店)想研发一款新零售系统进行商品售卖,它需要包含订单、营销、门店、商品、加盟商、会员等功能模块。在搭建新零售系统架构时,如果我们使用单体式架构进行设计,它的架构图如下所示:从图中我们发现,单体式架构将所有模块的代码存放在一个应用中,所有模块的数据存放在一个数据库中。在这种架构模式下,当业务功能增加到一定程度

2021-08-22 17:59:46 13

原创 如何预防一个服务故障崩掉整个系统?(10)【熔断】

上一篇我们聊了微服务的全链路日志问题,这里我们就来聊聊所有微服务会遇到的第二个问题——熔断。可能你想说,熔断不是流量大时才会出现吗?我们公司流量又不大,应该不用考虑熔断的问题吧。其实不是的,这里你存在一定误区,希望通过下面内容的内容能助你走出误区。一、业务场景为了便于理解下面的内容,我们先从一个业务背景入手。一个新零售架构系统中,有一个通用用户服务(很多页面都会使用),它包含两个接口。第一个接口是用户状态接口,包含用户车辆所在位置,并且在用户信息展示页面都会使用到,比如客服系统中的用户信息页面。.

2021-07-02 21:07:48 40 2

原创 如何根据日志来了解一个请求经历了什么?

上一篇我们介绍了服务的注册发现,本篇文章我们再来聊聊另一个问题——全链路日志。为了便于理解,我们依然从业务场景入手。一、业务场景当时公司的微服务刚刚迁移到Springcloud,服务注册发现基于Spring Cloud Zookeeper实现,不过组件方面只使用了Spring Cloud的服务间调用(Feign)。迁移到微服务之后,就得考虑日志跟踪的事情了。之前我们只是简单把日志打印到本地文件上,然后使用ELK进行日志收集、分析、,因此日志记录比较随意且没有形成一个统一的规范。与技术人员商量后,

2021-05-23 02:52:57 27 3

原创 后端服务太多,且涉及多种语言,如何进行高效管理?

从本章开始,我们开始聊聊微服务内容。这里我们还是从场景入手,逐步展开说明,达到快速掌握微服务的一些组件实现原理,最终理解微服务架构的本质。一、业务场景(八)当前公司已经拥有了50多个服务,并且服务之间存在调用关系,而这些服务是使用各种语言编写的,比如Java、Go、Node.js。因为跨语言,而目前流行的 Spring Cloud、Dubbo 都是针对 Java 语言的,所以我们没有使用 Spring Cloud、Dubbo 这些微服务框架。那么,我们是如何配置各个服务之间的调用关系的呢?我们一起还

2021-04-19 00:59:40 196 3

原创 「面试高频」秒杀架构的设计套路,你值得拥有!

本篇文章我们开始我们来聊下秒杀架构的相关内容,秒杀架构可以说是综合性非常强的一个场景,而且面试官特别喜欢基于这个场景进行提问,因此有必要好好了解下。在正式开始之前,我们先来回顾下前面几篇文章的内容。在第五篇中我们聊了缓存,我们先把数据存放到缓存中,每次请求通过缓存读取数据,大大减少了数据库读请求的压力。第六篇文章里我们聊了写缓存,流量洪峰时,我们先将数据写入缓存中,再逐步搬运数据到数据库,大大较少了数据库写请求的压力。第七篇文章里我们聊了数据收集,利用消息队列我们可以把缓存中的数据搬运到数据库中。而这.

2021-03-19 13:08:15 73

原创 高频数据采集如何不影响主业务(7)

上一篇文章讨论了写缓存的架构解决方案,它虽然可以减少数据库写操作的压力,但也存在不足。比如需要长期高频插入数据时,这个解决方案就无法满足,本篇文章我们就围绕这个问题逐步提出解决方案。在架构方案层层展开的过程中,你会发现不断会有新问题需要考虑。一、业务背景因业务快速发展,公司系统日活用户高达500万,基于现有业务模式,业务侧要求我们根据用户行为做埋点,旨在记录用户在指定页面的所有行为、开展数据分析与第三方进行费用结算。(至于为啥要做结算,我就不说了,嘿嘿)当然,在埋点过程中,业务侧还要求能在后台实时查询

2021-03-11 02:02:27 158 1

原创 如何节省数据库写操作资源(6)【写缓存】

我们在上一篇文章里面详细讨论了缓存的架构方案,它可以减少数据库读操作的压力,却也存在着不足。比如写操作并发量大时,这个方案并不奏效,那该怎么办呢?我们先来看一个具体的业务场景。一、业务场景五有一个这样的场景:一场超低价预约大型线上活动,在某天9:00-9:15期间,用户可以前往预约详情页半价预约抢购一款热门商品。根据市场部门的策划方案,这次活动运营目标是几十万左右的预约量。面对如此之大的预约量,如何防止涌进来的请求压垮数据库?之前,公司给系统做个一次压测:并发量保持在8000左右时,系统响应速度最高

2021-02-28 00:58:16 86 1

原创 数据量大读写缓慢如何优化(5)【读缓存】

在前面的四篇文章中,我们从数据持久化层来聊了一些架构设计方案,来处理数据量大读写缓慢的问题。但是架构设计并不是只有这一方面的设计思路,本篇开始我们来从缓存层面来一起看看如何设计。一、业务场景四在一个电商系统中,存放了50000多条商品数据,每次用户浏览商品详情页时,需要先从数据库中读取数据,再进行数据拼装和计算,耗费的时间有时长达1秒。这就导致每次点击商品详情页时,页面打开速度慢,此时该如何减少数据库读操作的压力呢?在项目时间紧张,赶进度的时候,没更多的精力关注此类问题。但是当系统流量起来之后,这.

2021-02-15 18:33:41 294 3

原创 数据库表数据量大读写缓慢如何优化(3)【Elasticsearch的使用】

在上一篇文章里有提到Elasticsearch能在短时间内搜索、分析大量数据,并作为查询数据的存储系统。坦白的说,Elasticsearch确实是个好东西,毕竟它在分布式开源搜索和分析引擎中处于领先地位。不过他也存在不少的坑,以至于网上也一直能看到有人抱怨它有多么多么不好用。对于Elasticsearch而言,我们想掌握好这门技术,除需要对它的用法了如指掌外,还需要对技术中的各种坑了然于心。因此,在本篇文章中我们来主要来讨论Elasticsearch以下的知识点:如何使用Elasticsearch设计表.

2021-02-03 19:07:49 311

原创 数据库表数据量大读写缓慢如何优化(4)【分库分表】

在第二篇文章中说到,查询分离中存在三大不足,其中一个不足就是:当主数据量越来越大,写操作缓慢,遇到这个问题我们该如何解决呢?为此,这篇文章我们主要围绕这个问题来讨论,拆分存储如何进行技术选型?分库分表的实现思路是什么?分库分表存在哪些不足?一、业务场景三为了便于理解,我们通过一个业务场景来入手。有一个电商系统架构优化工作,该系统中包含用户和订单2个主要实体,每个实体涵盖数据量如下表所示:实体数据量增长趋势用户千万级每日10万订单亿级每日百万级,后续可能千万级

2021-02-01 19:25:32 482

原创 数据库表数据量大读写缓慢如何优化(2)【查询分离】

上一篇聊到过,冷热分离解决方案的性价比高,但它并不是一个最优的方案,仍然存在诸多不足,比如:查询冷数据慢、业务无法再修改冷数据、冷数据多到一定程度系统依旧扛不住,我们如果想把这些问题一一解决掉,可以用另外一种解决方案——查询分离。(注意:查询分离与读写分离还是有区别的。)业务场景二某 SaaS 客服系统,系统里有一个工单查询功能,工单表中存放了几千万条数据,且查询工单表数据时需要关联十几个子表,每个子表的数据也是超亿条。面对如此庞大的数据量,跟前面的冷热分离一样,每次客户查询数据时几十秒才能返回..

2021-01-13 14:26:29 666

原创 数据库表数据量大读写缓慢如何优化(1)【冷热分离】

今天讨论的内容是冷热分离,也许概念并不陌生,对其使用场景也比较熟悉,但涉及锁的内容时仍然需要认真思考,这部分内容在我们实际开发中的“坑”还是不少的。业务场景一曾经经历过供应链相关的架构优化,当时平台上有一个订单功能,里面的主表有几千万数据量,加上关联表,数据量达到上亿。这么庞大的数据量,让平台的查询订单变得格外迟缓,查询一次都要二三十秒,而且多点击几次就会出现宕机。比如业务员多次查询时,数据库的 CPU 会立马狂飙,服务器线程也降不下来。当时,我们尝试了优化表结构、业务代码、索引、SQL 语句等.

2021-01-05 21:54:25 540 1

原创 如何通过NGINX的log日志来分析网站的访问情况,试试这些命令

想知道你的网站每天的访问情况吗?有多少人访问了?访问最多的页面是哪个?哪个时段访问的人最多?哪个地方访问的最多?每秒有多少请求?很好奇吧,只要你是使用了nginx进行请求抓发,那么就试试下面的命令吧,会有惊喜哦!!一、IP相关统计1、统计IP访问量 统计PVawk '{print $7}' access.log|wc -l2、独立ip访问数量 统计UVawk '{print $1}' access.log | sort -n | uniq | wc -l3、查看某一时间段的IP访问量(..

2021-01-03 19:48:48 342

原创 还在手写数据库文档吗?用上它,划水干活儿两不误

一、 简介        在开发过程中,我们经常因为各种原因需要写数据库文档。照开发人员的角度来说,一个Navicat就解决了,但是不懂技术的人员,你跟他说再多也是无用,还得老老实实写文档。但是敏捷开始期间,需求随时变动,表结构也是没有个固定的,改代码时间都不够,哪有时间慢慢去修改数据库文档呢?为了不留坑给自己和其他人,还能让大家开开心心的合作,可以使用screw工具来自动生成文档,数据库文档这块就可以彻底放心了。二、s

2021-01-03 19:24:31 45

原创 不可能!我的内网服务器怎么会被黑客入侵?

文章目录背景一、解决办法1、查看max_allowed_packet设置2、设置方式二、揪出内鬼1、查日志(打开genearl_log)2、结论三、疑问1、MySQL是部署内网的,外网怎么访问?2、黑客是怎么知道用户名和密码的?3、防火墙怎么没防住?4、黑客是怎么发现漏洞的?5、黑客为什么要修改max_allowed_packet参数呢?四、防护措施1. 开启防火墙2. 用户名设置3.密码设置4. 权限设置五、总结背景最近,公司内网的一台centOS机器,上面安装了MySQL数据库,Redis等软件,

2020-11-28 21:32:43 749

原创 SpringBoot整合Swagger2实现接口文档自动生成

一、为什么使用Swagger2当下很多公司都采取前后端分离的开发模式,前端和后端的工作由不同的工程师完成。在这种开发模式下,维持一份及时更新且完整的 Rest API 文档将会极大的提高我们的工作效率。传统意义上的文档都是后端开发人员手动编写的,相信大家也都知道这种方式很难保证文档的及时性,这种文档久而久之也就会失去其参考意义,反而还会加大我们的沟通成本。而 Swagger 给我们提供了一个全新的维护 API 文档的方式,下面我们就来了解一下它的优点:1、代码变,文档变。只需要少量的注解,Swagger

2020-05-18 17:35:31 380

原创 ngrok内网映射

缘由​ web开发中,难免会遇到在某些情况下,我们必须借助外网才能调用某个API,然而,对于没有租赁云服务器的同学来说,白嫖习惯了,总得找个免费的方式来解决这个问题,在没有使用ngrok前,我们的操作方式:在一个具有外网可访问的服务器上搭建一个web环境(jdk、tomcat、maven、redis、mysql…可能docker可以解决这个问题-_-||)上传代码,调试接口(谁尝试过凭着感觉写代码,在服务器上跑完之后看日志线下解决问题,还觉得OK的,我给你点个赞_)发现问题,本地修改(

2020-05-14 12:05:14 133

原创 SpringBoot整合Druid数据库连接池实现数据库连接及监控

1、pom文件添加依赖:<dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.1.10</version></dependency>2、a

2019-03-12 19:14:08 417

原创 MySQL主从架构搭建及实现

环境:操作系统:CentOs6.5Mysql版本:5.6.25主服务器:centos6.5 IP:192.168.13.101从服务器:centos6.5 IP:192.168.13.1021、主服务器配置2、从服务器配置3、配置主从同步Mysql版本:5.6.25)主服务器:centos6.5 IP:192.168.13.101从服务器:centos6.5 IP:192.168.13.1...

2019-03-03 17:53:58 496

转载 Nginx配置文件详解

######Nginx配置文件nginx.conf中文详解######定义Nginx运行的用户和用户组user www www;#nginx进程数,建议设置为等于CPU总核心数。worker_processes 8;#全局错误日志定义类型,[ debug | info | notice | warn | error | crit ]error_log /usr/local/nginx/logs

2017-07-03 20:56:50 310

原创 Java 使用udp协议发送数据

最近工作中用到使用udp和服务端通信,所以记录下….//客户端public static void send(byte[] data,String ip,int port) throws Exception{ DatagramSocket s = new DatagramSocket(null); s.setReuseAddress(true); /

2017-04-15 19:48:02 4682

原创 java连接数据库(SQL Server、MySQL、Oracle)及基本查询

备忘作用:package com.etrol.util;import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;import com.mysql.jdbc.PreparedS

2017-03-29 15:46:27 688

原创 软件、jar版本说明

软件、jar版本说明 α(Alpha) 此版本表示该软件仅仅是一个初步完成品,通常只在软件开发者内部交流,也有很少一部分发布给专业测试人员。 一般而言,该版本软件的bug(漏洞)较多,普通用户最好不要安装。 主要是开发者自己对产品进行测试,检查产品是否存在缺陷、错误,验证产品功能与说明书、用户手册是否一致。 β(beta) 该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存

2017-03-24 15:06:58 360

原创 java定时任务Timer和TimerTask使用

timer和timertask是jdk自带的定时任务实现,无需导入第三方jar包来完成 1、指定多久之后执行此任务,注意:只会执行一次public class TimerTest { Timer timer; public TimerTest(int time){ timer = new Timer(); timer.schedule(new ti

2017-02-14 13:33:13 8784 3

原创 Filter(过滤器)和Interceptor(拦截器)区别

一、filter基于filter接口中的doFilter回调函数,interceptor则基于Java本身的反射机制; 二、filter是依赖于servlet容器的,没有servlet容器就无法回调doFilter方法,而interceptor与servlet无关; 三、filter的过滤范围比interceptor大,filter除了过滤请求外通过通配符可以保护页面、图片、文件等,而inter

2017-01-17 17:43:53 1461 2

原创 MongoDB学习笔记(一)

MongoDB学习笔记(一) 下载地址:http://www.mongodb.org/downloads。 我自己是window10 64系统,也是可以的 下载完之后选择自定义安装 安装完成后需要在path中加入你的mongodb的bin目录 将MongoDB服务器作为Windows服务运行 mongod.exe –bind_ip yourI

2017-01-10 14:31:26 298

原创 Intellij IDEA2016.2.2工具使用遇到的问题以及部分快捷键(持续更新...)

Intellij IDEA2016.2.2工具使用遇到的问题以及部分快捷键(持续更新…) 1、代码自动补全(不需要手动改快捷键):File–>Power save Mode不要勾住(节点模式,如果勾选住 之后就不会提示,需要改快捷键才能弹出提示框)。 2、修改代码的提示快捷键:file–>settings–>keymap–>Main menu–>Code–>Complet

2017-01-06 13:53:51 425

原创 java实现将毫秒数转化为yyyy-MM-dd格式的数据

java实现将毫秒数转化为yyyy-MM-dd格式的数据;public static void main(String[] args) { Date dd = paseDate(1458201755); SimpleDateFormat sdf = new SimpleDateFormat(“yyyy-MM-dd:HH:mm”); System.

2016-04-25 18:08:01 2148

原创 使用maven打包项目遇到错误: http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException

今天在使用maven打包项目时遇到一个错误: [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.4:compile (default-compile) on project zjydpt: Fatal error compiling: tools.jar not found: D:\Jav

2016-03-02 21:28:50 41710

原创 sql使用建议及优化方法

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2016-02-25 12:48:03 2167

原创 控制台出现abd端口被占用,导致android项目不能正常运行

首先,我先罗列下我搜到的方法,大家也可以尝试。 1,关闭eclipse并在进程中杀掉adb.exe,然后重启。 2,如有真机连接,拔掉真机,重复1的步骤, 3,关掉eclipse,然后在命令行运行如下命令    adb kill-server    adb start-server    然后重启eclipse 我的问题最根本其实是端口5037被占用,查看指定端

2015-09-20 15:37:04 1147

软件项目各阶段文档模板(涉及立项、规划、监控、风险管理、需求、预研)

软件项目各阶段文档模板(涉及立项、规划、监控、风险管理、需求、预研)

2019-01-10

servlet读取cookie代码

使用servlet读取客户端浏览器中的cookie数据

2016-02-24

处理百万级以上的数据查询提高效率的办法

编写sql语句时可以看看,提高执行效率和sql优化

2016-02-24

oracle数据库常用语句+demo

oracle数据库常用语句用起来挺方便的

2016-02-24

mysql、sqlserver jar

mysql和sqlserver的jar包 自己以后找起来方便

2017-03-29

js实现导出table到excel

javascri实现将table中数据保存到excel中

2013-10-13

解决开发中乱码方案

解决web开发中中文乱码的解决方案,交流可以回复

2016-02-24

simditor使用遇到的问题

发表于 2016-07-29 最后回复 2019-12-17

jenkins构建maven项目遇到的问题

发表于 2018-06-29 最后回复 2018-12-07

离职了

发表于 2017-08-11 最后回复 2017-08-14

创建的新项目为毛这样

发表于 2017-05-11 最后回复 2017-05-12

去北京出差两天,第二天就遇到人生中第一次的沙尘暴

发表于 2017-05-05 最后回复 2017-05-06

五一加班不高兴。。。

发表于 2017-04-28 最后回复 2017-04-28

java调用的sql放在navicat中执行没问题,方法返回值有几个字段的数据为null

发表于 2016-06-29 最后回复 2016-07-29

struts2+spring+ibatis jsp页面发生中文乱码

发表于 2013-11-30 最后回复 2013-12-16

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

TA关注的人 TA的粉丝

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