自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(143)
  • 收藏
  • 关注

原创 Mysql 索引使用规则和设计优化

大部分情况下,尤其是记录数量较少的情况下Mysql总是能正常运转的很好,但不可避免的,随着数据库记录数的增长以及SQL语句越来越复杂,总会有一些实际效果与数据库或SQL设计人员理解相违背的情况,这就需要开发者对Mysql的原理和存在的问题有一个基本的认识。本文主要探讨了Mysql索引的使用和相关知识,这些知识并不复杂,不需要专业的数据库学习经验就能搞明白,理解了这些可以帮助开发人员更好的进行数据库索引设计和SQL查询语句的编写。Mysql 是如何使用索引的索引可以帮助我们快速的找到包含指定列值的行。

2020-08-07 15:32:03 303

转载 Spring官方都推荐使用的@Transactional事务,为啥我不建议使用!

编程式事务基于底层的API,如PlatformTransactionManager、TransactionDefinition 和 TransactionTemplate 等核心接口,开发者完全可以通过编程的方式来进行事务管理。编程式事务方式需要是开发者在代码中手动的管理事务的开启、提交、回滚等操作。public void test() { TransactionDefinition def = new DefaultTransactionDefinition(); Tra

2021-04-09 10:35:49 339

转载 MySQL用得好好的,为什么要转ES?

京东到家订单中心系统业务中,无论是外部商家的订单生产,或是内部上下游系统的依赖,订单查询的调用量都非常大,造成了订单数据读多写少的情况。我们把订单数据存储在MySQL中,但显然只通过DB来支撑大量的查询是不可取的。同时对于一些复杂的查询,MySQL支持得不够友好,所以订单中心系统使用了Elasticsearch来承载订单查询的主要压力。Elasticsearch作为一款功能强大的分布式搜索引擎,支持近实时的存储、搜索数据,在京东到家订单系统中发挥着巨大作用,目前订单中心ES集群存储数据量达到10亿个文

2021-03-24 11:55:30 260

原创 Redis的常用淘汰策略以及算法实现

一、Redis的内存配置1,Redis配置内存为多少合适?默认:如果不设置最大内存大小或者设置最大内存大小为0,在64为操作系统下不限制内存大小,在32位操作系统下最多使用3GB内存。极限情况:留出一倍内存。比如你的redis数据占用了8G内存,那么你还需要再预留8G空闲内存。也就是内存需求是16G。内存占用率低于50%是最安全的。普通情况:正常情况下,在序列化周期内,不会更改所有数据,只会有部分数据更改,那么,预留出可能产生的更改部分的空间,就行。如果实在要说一个数据的话,一般推荐Redis设置内

2021-03-17 09:40:10 844

原创 Idea 编译Gradle 乱码情况

这种情况Help | Edit Custom VM Options-Dfile.encoding=UTF-8gradle-wrapper.propertiesorg.gradle.jvmargs=-Xmx4g -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8第二种lombok 引起的问题 annotationProcessor 'org.projectlombok:lombok:1.18...

2021-03-10 11:52:16 413

原创 Es的基本语法

生活中的数据先说说Lucen 核心概念基本使用性能优化存储设备内部索引优化调整配置参数JVM调优由于近期在公司内部做了一次 Elasticsearch 的分享,所以本篇主要是做一个总结,希望通过这篇文章能让读者大致了解 Elasticsearch 是做什么的以及它的使用和基本原理。生活中的数据搜索引擎是对数据的检索,所以我们先从生活中的数据说起。我们生活中的数据总体分为两种:结构化数据非结构化数据结构化数据: 也称作行数据,是由二维表结构来逻辑表达和实现的数据.

2021-03-09 12:09:10 3659 1

原创 InnoDB索引允许NULL对性能有影响吗

谈谈InnoDB辅助索引的几个特征。初始化测试表、数据问题1:索引列允许为NULL,对性能影响有多少结论1,存储大量的NULL值,除了计算更复杂之外,数据扫描的代价也会更高一些问题2:辅助索引需要MVCC多版本读的时候,为什么需要依赖聚集索引结论2,辅助索引中不存储DB_TRX_ID,需要依托聚集索引实现MVCC问题3:为什么查找数据时,一定要读取叶子节点,只读非叶子节点不行吗结论3,在索引树中查找数据时,最终一定是要读取叶子节点才行问题4:索引列允许为NULL,会额外存储更多字节吗.

2020-08-07 16:10:51 598

原创 mongdb分组 年月日周

// project:显示哪几个字段,这里显示createTime字段,and..as是把and后的字段重命名为as后的字段,这里把createTime处理后重命名为date // group:分组操作,这里按date分组,计算数量,结果数量重命名为count // 第二个project:previousOperation...

2020-04-27 18:04:17 280 1

转载 linux实现内网穿透

准备两台机器内网机: 192.168.0.154 (公司电脑)外网机: 1.1.1.1 (阿里服务器,出于安全性考虑这里展示的是虚拟地址,换成自己的外网地址就行)需求: 使用ssh通过公网ip直接登录内网机这里因为外网机无法主动访问连接到内网机上,所以这里我们使用ssh让内网机能够连接上外网机内网机上执行 ssh -o ServerAliveInterval=60 -f -N -R 90...

2020-04-17 10:37:42 55373 1

原创 记录脚本

ps -ef|grep -w halo |head -n 1|awk '{print $2}' $0全部找寻第一条的匹配规则查看id

2020-04-10 15:15:29 200

原创 记一次坑爹的docker 拉取问题

首先我配置了阿里镜像但是还是不能拉取拉取直接报错Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)这...

2020-04-03 21:38:14 191

原创 爬坑Jenkins部署sonar

真的要吐血首先 这坑货需要 mysql5.7,mysql 8.0以上别尝试了 很难受审核的话yaring 这个可以支持但是jenkins 没尝试过首先我们用的是pipeline的一个风格所以我们的jenkins 就用的比较简单的脚本sonar-project.properties 放在根目录下面# must be unique in a given SonarQube instanc...

2020-03-27 16:18:17 202

原创 gitlab仓库地址修改

最近使用GitLab 搭建了Git的私有仓库,但是发现私有仓库的地址是一串序列号,搞了半天克隆时都是提醒仓库无效,后来才觉得不对,不是本机的Ip改变了需要修改1:进入命令行界面输入[root@localhostconfig]#cd/opt/gitlab/embedded/service/gitlab-rails/config替换成我们对应的端口就可以了...

2020-03-25 21:15:43 1100

原创 Linux关闭防火墙命令

下面是red hat/CentOs7关闭防火墙的命令!1:查看防火状态systemctl status firewalldservice iptablesstatus2:暂时关闭防火墙systemctl stop firewalldservice iptablesstop3:永久关闭防火墙systemctl disable firewalldchkcon...

2020-03-23 19:43:11 109

原创 基于Canal和Kafka实现MySQL的Binlog近实时同步

前提近段时间,业务系统架构基本完备,数据层面的建设比较薄弱,因为笔者目前工作重心在于搭建一个小型的数据平台。优先级比较高的一个任务就是需要近实时同步业务系统的数据(包括保存、更新或者软删除)到一个另一个数据源,持久化之前需要清洗数据并且构建一个相对合理的便于后续业务数据统计、标签系统构建等扩展功能的数据模型。基于当前团队的资源和能力,优先调研了Alibaba开源中间件Canal的使用。这篇文...

2020-03-18 09:04:34 181

原创 Spring Boot 服务监控,健康检查,线程信息,JVM堆信息,指标收集,运行情况监控等!

去年我们项目做了微服务1.0的架构转型,但是服务监控这块却没有跟上。这不,最近我就被分配了要将我们核心的微服务应用全部监控起来的任务。我们的微服务应用都是SpringBoot 应用,因此就自然而然的想到了借助Spring Boot 的Actuator 模块。本篇是我在完成这个工单之后,对Spring Boot Actuator模块 学习应用的总结。在本篇文章中,你可以学习到:1、Spring ...

2020-03-17 14:17:27 433

原创 面试官问我如何保证Kafka不丢失消息

kafka如何保证不丢消息生产者丢失消息的情况生产者(Producer) 调用send方法发送消息之后,消息可能因为网络问题并没有发送过去。所以,我们不能默认在调用send方法发送消息之后消息消息发送成功了。为了确定消息是发送成功,我们要判断消息发送的结果。但是要注意的是 Kafka 生产者(Producer) 使用 send 方法发送消息实际上是异步的操作,我们可以通过 get()方法...

2020-03-17 10:54:32 593

原创 SpringBoot 处理异常的几种常见姿势

1. 使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常这是目前很常用的一种方式,非常推荐。测试代码中用到了 Junit 5,如果你新建项目验证下面的代码的话,记得添加上相关依赖。新建异常信息实体类非必要的类,主要用于包装异常信息。src/main/java/com/twuc/webApp/exception/ErrorResponse.ja...

2020-03-17 10:49:08 264

原创 使用枚举简单封装一个优雅的 Spring Boot 全局异常处理!

使用 @ControllerAdvice 和 @ExceptionHandler 处理全局异常@ExceptionHandler 处理 Controller 级别的异常ResponseStatusException通过这篇文章,可以搞懂如何在 Spring Boot 中进行异常处理。但是,光是会用了还不行,我们还要思考如何把异常处理这部分的代码写的稍微优雅一点。下面我会以我在工作中学到的一...

2020-03-17 10:36:14 647

原创 SpringBoot线程池的创建、@Async配置步骤及注意事项

前言最近在做订单模块,用户购买服务类产品之后,需要进行预约,预约成功之后分别给商家和用户发送提醒短信。考虑发短信耗时的情况所以我想用异步的方法去执行,于是就在网上看见了Spring的@Async了。但是遇到了许多问题,使得@Async无效,也一直没有找到很好的文章去详细的说明@Async的正确及错误的使用方法及需要注意的地方,这里简单整理了一下遇见的问题,Sring是以配置文件的形式来开启@A...

2020-03-17 10:29:13 310

原创 SpringBoot 整合SpringSecurity示例实现前后分离权限注解+JWT登录认证

1 说明SpringSecurity是一个用于Java 企业级应用程序的安全框架,主要包含用户认证和用户授权两个方面.相比较Shiro而言,Security功能更加的强大,它可以很容易地扩展以满足更多安全控制方面的需求,但也相对它的学习成本会更高,两种框架各有利弊.实际开发中还是要根据业务和项目的需求来决定使用哪一种。JWT是在Web应用中安全传递信息的规范,从本质上来说是Token的演变,是...

2020-03-16 08:44:14 1790 4

原创 基于Spring Boot实现定时任务的动态增删启停

1 基于Spring Boot实现定时任务的动态增删启停在spring boot项目中,可以通过@EnableScheduling注解和@Scheduled注解实现定时任务,也可以通过SchedulingConfigurer接口来实现定时任务。但是这两种方式不能动态添加、删除、启动、停止任务。要实现动态增删启停定时任务功能,比较广泛的做法是集成Quartz框架。但是本人的开发原则是:在满足项目...

2020-03-11 09:07:10 935

原创 AJAX 请求为什么不安全?我没有回答出来。。。

开篇三问前言大纲AJAX请求真的不安全么常见的几种Web前端安全问题AJAX和HTTP请求的区别CORS与AJAX安全性之间的关联再看,AJAX请求真的不安全么?AJAX请求哪里不安全?怎么样让AJAX请求更安全?写在最后的话附录开篇三问AJAX请求真的不安全么?AJAX请求哪里不安全?怎么样让AJAX请求更安全?前言本文包含的内容较多,包括AJAX,CO...

2020-03-10 09:49:07 262

转载 curl 的用法指南

简介curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具。本文介绍它的主要命令行参数,作为日常的参考,方便查阅。内容主要翻译自《curl cookbook》。为了节约篇幅,下面的例子不包括运行时的输出,初学者可以先看我以前写的...

2020-03-09 08:55:53 203

转载 1.3万亿条数据查询如何做到毫秒级响应?

作为中国最大的知识共享平台,我们目前拥有 2.2 亿注册用户,3000 万个问题,网站答案超过 1.3 亿。随着用户群的增长,我们的应用程序的数据大小无法实现。我们的 Moneta 应用程序中存储了大约 1.3 万亿行数据(存储用户已经阅读过的帖子)。由于每月累计产生大约 1000 亿行数据且不断增长,这一数字将在两年内达到 3 万亿。在保持良好用户体验的同时,我们在扩展后端方面面临严峻挑战。...

2020-03-06 14:03:16 302

原创 Spring Cloud 详细总结!

首先我给大家看一张图,如果大家对这张图有些地方不太理解的话,我希望你们看完我这篇文章会恍然大悟。什么是 Spring cloud构建分布式系统不需要复杂和容易出错。Spring Cloud 为最常见的分布式系统模式提供了一种简单且易于接受的编程模型,帮助开发人员构建有弹性的、可靠的、协调的应用程序。Spring Cloud 构建于 Spring Boot 之上,使得开发者很容易入手并快速应...

2020-03-03 10:44:07 229 1

原创 Kafka!

一、kafka概述1.1、定义Kakfa是一个分布式的基于发布/订阅模式的消息队列(message queue),主要应用于大数据的实时处理领域1.2、消息队列1.2.1、传统的消息队列&新式的消息队列的模式上面是传统的消息队列,比如一个用户要注册信息,当用户信息写入数据库后,后面还有一些其他流程,比如发送短信,则需要等这些流程处理完成后,在返回给用户而新式的队列是,比如一个...

2020-03-01 12:15:45 116

原创 消息队列面面观

一、为什么使用消息队列?消息队列有什么优点和缺点?Kafka、ActiveMQ、RabbitMQ、RocketMQ 都有什么优点和缺点?其实面试官主要是想看看:第一,你知不知道你们系统里为什么要用消息队列这个东西?不少候选人,说自己项目里用了 Redis、MQ,但是其实他并不知道自己为什么要用这个东西。其实说白了,就是为了用而用,或者是别人设计的架构,他从头到尾都没思考过。没有对自己...

2020-02-28 10:58:41 110

原创 SpringBoot 一个依赖搞定 session 共享,没有比这更简单的方案了!

有的人可能会觉得题目有点夸张,其实不夸张,题目没有使用任何修辞手法!认真读完本文,你就知道松哥说的是对的了!在传统的单服务架构中,一般来说,只有一个服务器,那么不存在 Session 共享问题,但是在分布式/集群项目中,Session 共享则是一个必须面对的问题,先看一个简单的架构图:在这样的架构中,会出现一些单服务中不存在的问题,例如客户端发起一个请求,这个请求到达 Nginx 上之后,被...

2020-02-27 08:49:05 108

原创 spring 跨域问题

CROS(Cross-Origin Resource Sharing) 用于解决浏览器中跨域请求的问题。简单的Get请求可以使用JSONP来解决,而对于其它复杂的请求则需要后端应用的支持CROS。Spring在4.2版本之后提供了@CrossOrigin 注解来实现对Cross的支持。在Controller方法上配置@CrossOrigin(origins = {"http://loacl...

2020-02-26 15:43:54 143

原创 Apache Tomcat 曝文件包含漏洞:攻击者可利用该漏洞读取webapp目录下的任意文件

0x01 漏洞背景2020年02月20日, 360CERT 监测发现 国家信息安全漏洞共享平台(CNVD) 收录了 CNVD-2020-10487 Apache Tomcat文件包含漏洞Tomcat是由Apache软件基金会属下Jakarta项目开发的Servlet容器,按照Sun Microsystems提供的技术规范,实现了对Servlet和JavaServer Page(JSP)的支持。...

2020-02-24 09:43:47 2848

原创 10 分钟实现 Java 发送邮件功能

Spring Boot集成邮件服务竟如此简单,快速掌握邮件业务类的核心逻辑和企业邮件的日常服务。什么是SMTP?SMTP全称为Simple Mail Transfer Protocol(简单邮件传输协议),它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP认证要求必须提供账号和密码才能登陆服务器,其设计目的在于避免用户受到垃圾邮件的侵扰。什么是IMAP?IM...

2020-02-23 16:44:17 652

原创 基于Springboot+Dubbo+Nacos 注解方式实现微服务调用

大家好,我是你们的导师,我每天都会在这里给大家分享一些干货内容(当然了,周末也要允许老师休息一下哈)。上次老师跟大家分享了下基于 C/S 架构 Spring Boot + Vue的开发应用的相关知识,今天跟大家分享基于Springboot+Dubbo+Nacos 注解方式实现微服务调用的知识。1 项目结构|-- spring-boot-dubbo-demo (父级工程)|-- spring...

2020-02-21 15:54:04 721 1

原创 Java:实现文件批量导入导出实践(兼容xls,xlsx)

1、介绍java实现文件的导入导出数据库,目前在大部分系统中是比较常见的功能了,今天写个小demo来理解其原理,没接触过的同学也可以看看参考下。目前我所接触过的导入导出技术主要有POI和iReport,poi主要作为一些数据批量导入数据库,iReport做报表导出。另外还有jxl类似poi的方式,不过貌似很久没跟新了,2007之后的office好像也不支持,这里就不说了。2、POI使用详解...

2020-02-21 09:03:54 366

原创 你还在 new 对象吗?Java8 通用 Builder 了解一下?

程序员经常会遇到灵魂拷问:你有对象吗?没有,但我可以 new 一个!public class GirlFriend { private String name; private int age; // 省略 getter & setter ... public static void main(String[] args) { GirlF...

2020-02-20 09:04:03 305

原创 Nginx为什么快到根本停不下来?

Nginx 以其高性能,稳定性,丰富的功能,简单的配置和低资源消耗而闻名。本文从底层原理分析 Nginx 为什么这么快!Nginx 的进程模型Nginx 服务器,正常运行过程中:多进程:一个 Master 进程、多个 Worker 进程。Master 进程:管理 Worker 进程。对外接口:接收外部的操作(信号);对内转发:根据外部的操作的不同,通过信号管理 Worker;监控...

2020-02-19 08:13:39 490

原创 Git使用教程

导读:因为教程详细,所以行文有些长,新手边看边操作效果出乎你的预料。GitHub虽然有些许改版,但并无大碍。一、Git是什么?Git是目前世界上最先进的分布式版本控制系统。工作原理 / 流程:Workspace:工作区Index / Stage:暂存区Repository:仓库区(或本地仓库)Remote:远程仓库二、SVN与Git的最主要的区别?SVN是集...

2020-02-17 15:51:13 129

原创 单元测试不止 Junit

一、前言在前面的章节我们介绍过 Junit 的使用,也了解过 spring-test,今天我们来了解一个新玩意 – mock 测试。这里仅仅做一个入门,对返回视图和返回 Json 数据的方法进行测试演示,不会把所有的方法都介绍到,具体文档详见链接:Mock Test,本章节主要讲解以下两部分内容:1、Mock 测试简介2、测试用例演示二、Mock 测试简介1、什么是 mock 测试在测...

2020-02-16 09:01:25 137

原创 Mycat介绍

Mycat 是一个开源的分布式数据库系统,但是由于真正的数据库需要存储引擎,而 Mycat 并没有存 储引擎,所以并不是完全意义的分布式数据库系统;MyCat是目前最流行的基于Java语言编写的数据库中间件,也可以理解为是数据库代理。在架构体系中是位于数据库和应用层之间的一个组件,并且对于应用层是透明的,即数据库 感受不到mycat的存在,认为是直接连接的mysql数据库(实际上是连接的myca...

2020-02-15 12:47:57 145

原创 java 实现websocket的两种方式

简单说明1.两种方式,一种使用tomcat的websocket实现,一种使用spring的websocket2.tomcat的方式需要tomcat 7.x,JEE7的支持。3.spring与websocket整合需要spring 4.x,并且使用了socketjs,对不支持websocket的浏览器可以模拟websocket使用方式一:tomcat使用这种方式无需别的任何配置,只需服务端...

2020-02-15 11:52:47 330

空空如也

空空如也

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

TA关注的人

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