自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 数仓架构总结

架构图一、数仓分层数仓概念什么是数仓:数据仓库是为企业所有决策制定过程,提供所有系统数据支持的战略集合。通过对数据仓库中数据的分析,可以帮助企业改进业务流程、控制成本、提高产品质量等。数据仓库并不是数据的最终目的地,而是为数据最终的目的地做好准备。这些准备包括对数据的清洗、转义、分类、重组、合并、拆分、统计等等数仓的输入系统:埋点产生的用户行为数据、JavaEE 后台产生的业务数据、爬虫数据。输出系统:报表系统、用户画像系统、风控系统、推荐系统、机器学习等ODS(原始数据层

2022-04-09 17:15:48 1268

原创 读【mysql单表最大两千万】文章有感

前言mysql我们都很熟悉,现在常用的存储引擎是innodb,mysql数据是存储在物理磁盘上的,而真正的数据处理又是在内存中执行的。由于磁盘的读写速度非常慢,如果每次操作都对磁盘进行频繁读写的话,那么性能一定非常差。为了上述问题,InnoDB将数据划分为若干页,以页作为磁盘与内存交互的基本单位,一般页的大小为16KB。这样的话,一次性至少读取1页数据到内存中或者将1页数据写入磁盘。通过减少内存与磁盘的交互次数,从而提升性能。那么mysql单表的瓶颈是多大呢?阿里巴巴《Java 开发手册》提出单表行

2022-04-09 16:13:54 1728 1

转载 记一次性能优化,单台4核8G机器支撑5万QPS

前言这篇文章的主题是记录一次Python程序的性能优化,在优化的过程中遇到的问题,以及如何去解决的。为大家提供一个优化的思路,首先要声明的一点是,我的方式不是唯一的,大家在性能优化之路上遇到的问题都绝对不止一个解决方案。如何优化首先大家要明确的一点是,脱离需求谈优化都是耍流氓,所以有谁跟你说在xx机器上实现了百万并发,基本上可以认为是不懂装懂了,单纯的并发数完全是无意义的。其次,我们优化之前必须要有一个目标,需要优化到什么程度,没有明确目标的优化是不可控的。再然后,我们必须明确的找出性能瓶颈在哪

2021-09-15 17:28:17 457

原创 java通过字节数组查看真实内容

前言当我们打开debug模式时,经常能看到变量里有这么一坨。看着一脸懵逼,我们知道这是byte数组,java在通信时,都会将内容转换为二进制流来传输,二进制流在debug模式里最直观的体现就是byte数组。最小单位就是byte。今天我们不通过程序去转换内容,而是通过计算器去算出真实的内容,主要目的还是理解存储的意义。实验字符串定义一个字符串变量a="123",然后通过getBytes方法转换为字节数组。代码如下:转换后的字节输入如下:可以看到字节数组长度为3,每.

2021-07-28 13:25:17 1911

原创 SpringSecurity+Oauth2+Jwt的配置

前言文章搭建工程基于Idea。SpringSecurity+Oauth2+Jwt实现了什么功能?SpringSecurity主要的工作就是拦截请求,只有满足基于springSecurity你定义的规则,才允许继续访问相应的资源或接口。可以说是一套权限管理的框架。能非常方便细致的帮助我们管理接口和资源的权限。比如一个apicontroller里定义了多个接口,admin可以访问所有接口,角...

2021-07-16 13:49:21 1741 2

原创 netty中handler的理解

前言在写netty服务端代码时,我们一般会定义handler如下:或者定义成这样看到这你能说出两者的区别吗?还是没有区别?正题我们先看下initChannel的调用时机:当客户端建立连接时,会调用initChannel方法,所以每建立一个连接,就会调用pipeline.addLast("netmsg", new MessageHandler());那区别也就出来了,假如是new MessageHandler()这种写法,就代...

2020-11-22 13:34:59 4370 4

转载 Mars长连接管理

对长连的管理有两个方面,一个是心跳(HeartBeat),一个是重连(Reconnect)。这两个动作都是有策略性的。一般心跳会间隔性的发出一个很小的心跳包,通过服务端返回来判断连接是否健康。在网络断开会,会自动重连,一般遵循逐渐递增的方法,递增的策略有所不同。在Mars中,对这两个策略有更精细化的管理,在Mars中对App运行的状态分了两种1.前台活动状态(forground-active),前台状态10分钟以上,可以认为是App正常运行状态2. 后台活动状态(background-a

2020-11-13 17:12:10 275

转载 Protobuf3语法详解

定义一个消息类型先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。可以采用如下的方式来定义消息类型的.proto文件了: 1 2 3 4 5 6 7 syntax ="proto3"; message SearchRequest { string query =1; int32...

2020-11-11 11:19:18 835

原创 mysql修改字段卡住问题总结

前言线上环境如何修改表字段才能保证服务的稳定运行呢?大概方法罗列:方案1:业务低峰期进行alter table操作。方案2:创建临时表、加字段、插入旧数据,增量数据插入和重命名表名。方案3:用第三方开源工具实现,具体实现步骤看链接:方案4:在从库进行添加字段操作,然后进行mysql主从切换注意事项:主从复制日志格式如果为row格式,添加的新列必须是在表的最后。参考文章:http://blog.itpub.net/15498/viewspace-2153012/笔者就是采用方案1

2020-10-29 21:07:24 11855 6

原创 IM技术调研

协议选型选用什么网络传输协议(TCP/UDP/HTTP) ?udp协议虽然实时性更好,但是如何处理安全可靠的传输并且处理不同客户端之间的消息交互是个难题,实现起来过于复杂. 目前大部分IM架构都不采用UDP来实现。 HTTP http可以用来实现状态协议,离线消息用拉模式,避免 tcp 通道压力过大,影响即时消息下发效率。 IM进行图片聊天的时候: http能够很方便的处理 断点续传和分片上传等功能。 TCP: 维护长连接,保证消息的实时性, 对应数据传输协议.目的: 及时收发消息。综合考

2020-10-21 15:59:45 501 2

原创 ES常用操作笔记

创建索引模板以下参数配置定义官网都有介绍,这块就直接记录官网的地址,方便查阅。索引模板的具体参数参考官网:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/indices-templates-v1.html索引setting具体参数参考:https://www.elastic.co/guide/en/elasticsearch/reference/7.9/index-modules.html#index-modules-set

2020-10-12 19:41:17 1046

转载 MySQL-没有必要的varchar(255)长度及存储汉字问题汇总

起因最近在整理代码规范,按照之前oracle的习惯,定了以下的字段长度设定规范:名称字段:varchar(200) 较长的名称字段/简介字段:varchar(500) 特别长的描述字段: varchar(2000) 超过2000中文字的字段:text 为什么是200长度,而不是100或300,也是拍脑袋想的,类似DND里的房规。 但在被问起为什么不设置为经常见到的varchar(...

2020-05-08 13:42:15 18225 4

原创 使用Navicat将Excel数据导入mysql

前言其实这个功能挺简单,但是网上没有搜索到比较准确的文字,遂自己写一篇总结下,也方便别人。环境先叙述下我的环境,以免由于版本等问题,出现不成功,说我的文章不起作用。Navicat版本如下:mysql版本:5.7操作准备一份excel文件。准备一个待导入数据的表。首先在excel的头行加上数据库对应的字段。由于我的表是自增id,这块就去掉了id列。然后将exc...

2020-05-08 09:42:27 5602 11

原创 ElasticSearch安装及使用

前言网上关于ES的文章非常多,为什么还要去重复的写一篇呢?别的人终归是别人的,自己总结出来的看起来最方便。由于javaweb的框架非常之多,你冷落其中几个,过段时间就忘记了,只记得个大概,然后再搜索资料。何不自己总结好方便日后使用查看呢?简单介绍ES是一个强大的搜索引擎,它是基于lucene实现的,lucene被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。而且ES是开源...

2020-04-05 22:03:26 408

原创 Linux基础复习总结

前言对于linux,因为日常开发使用的不是太频繁,有些东西总是会忘记,遂写一篇总结。加深记忆,便于使用时查看。系统选用linux系统作为服务器的话,一般选用centos系列,为什么呢,首先是因为它是redhat旗下的开源版本,是商用免费的,其次它是没有界面的,直接命令行,所以性能和稳定性相比ubantu会好一些。一般选择稳定的7点几版本,如7.2.我使用的是centos7.7版...

2020-03-22 16:42:08 447

原创 MybatisPlus分页查询【如何使用自定义sql语句】

前言MybatisPlus结合了Mybatis和JPA的精华,让我们操作数据库非常的方便。具体的使用方式参考官网。在使用MybatisPlus时,对于分页传搜索条件这块甚是苦恼。因为分页方法MybatisPlus提供了两个。如下: /** * 根据 entity 条件,查询全部记录(并翻页) * * @param page 分页查询...

2020-03-04 20:51:42 10977 5

原创 【二】做一个秒杀系统【tomcat的并发】

前言第一篇文章介绍了高并发减库存的方法,接下来,我们分析下,自己服务器的并发到底能达到多少。搜索相关资料发现,很多都是一个固定的数量。显然不准确,今天就撸起袖子大干一场。构建一个服务想要测试就先准备一个tomcat秒杀服务,话不多说,直接通过springboot来快速构建一个服务。通过idea自动构建springboot的web工程,初始化完毕后,新建SecKillControll...

2020-02-18 16:02:39 649

原创 【一】做一个秒杀系统【高并发减库存】

前言疫情期间,闲来无事,空闲时间利用起来,秒杀系统走起。秒杀业务流程要做秒杀系统,先弄明白具体业务流程。用户点击秒杀按钮、跳转到订单页面、填写好订单信息后(地址、数量等信息)、点击提交订单按钮、生成订单。以上就是一个成功下单的基本流程。这里我们不关心前端的控制,只实现java后台。所以直接从用户点击提交按钮开始。概括为:用户点击提交订单按钮向后台发送请求。请求内容包括秒杀i...

2020-02-17 21:29:50 1450 1

原创 AQS源码分析

前言最近非常着迷阅读源码,周末闲来无事,又把AQS【AbstractQueuedSynchronizer】过了一遍。网上有很多这方面的文章,为什么还要自己去写呢?一是为了加深记忆,二是为了方便日后查看,三是锻炼归纳总结的能力。有缘的读者可以大致看一下。或许有些帮助。对于初学者来说可能并不熟悉AQS,它是java.util.concurrent包下的工具类,日常开发中,很少有人去使用它,...

2020-01-11 22:01:09 222

原创 web項目打包后依賴module是如何存在的

为什么写这个问题今天在做架构设计时,出现了一个疑问,参考项目结构这是一个工程下的两个module,其中common-model是公共model类,device-manage是一个业务模块,可以单独发布,后续还会有order-manage业务模块。他们都会共用common-model模块中的类。这块产生一个疑问,当我发布device-manage模块时,common-model中的...

2020-01-06 16:01:23 214

原创 Docker安装及入门

环境说明本文使用centos7.7构建docker。Docker要求操作系统必须为64位,且centos内核版本为3.1及以上。安装docker安装依赖软件包yum install -y yum-utils device-mapper-persistent-data lvm2# 安装前可查看device-mapper-persistent-data 和 lvm2 是否已经安...

2019-12-02 21:41:09 186

原创 利用mycat搭建mysql集群

说明我的环境是centos7.7+mysql8,在不同版本主机及不同版本mysql命令不一样,如果想参考我的文章,尽量选择跟我一样的配置,这样可以省去一些麻烦,如果不一样,尽量理解思想,对于某个步骤的命令执行总是报错,或者找不到对应的文件,那就需要自己去网上搜索下对应版本的命令,不要死磕,会很浪费时间。如果对于centos的安装和配置不熟悉的话,参考我的另外一篇文章:https://blo...

2019-11-30 13:32:51 463

原创 使用centos7搭建zookeeper集群

下载安装vmware去官网下载的话需要注册才能下载,随便在网上找了一个15的版本,发现安装失败。网上的解决办法也是千奇百怪没有尝试。然后下载了14的版本,安装成功。安装centos7首先去阿里的镜像官网找到centos7相应版本下载,地址:https://mirrors.aliyun.com/centos/7.7.1908/isos/x86_64/下载镜像成功后。使用vmware打...

2019-11-27 09:59:16 257

原创 mysql事务隔离级别的研究

四种隔离级别概述1.未提交读(read-uncommitted)在一个事务中,可以读取到其他事务未提交的数据变化,这种读取其他会话还没提交的事务,叫做脏读现象,在生产环境中切勿使用。2.已提交读(read-committed)在一个事务中,可以读取到其他事务已经提交的数据变化,这种读取也就叫做不可重复读,因为两次同样的查询可能会得到不一样的结果。3.可重复读(repetable...

2019-11-19 17:03:19 165

原创 Mybatis源码分析

前言本文通过debug形式,来一步步分析mybatis源码。在开始分析前,我插入了入门demo,以便回忆下mybatis的基本使用。在此基础上,进行源码的分析。工具:IDEA入门demo新建maven工程打开IDEA,新建project,新建一个maven工程,填写项目名称等信息一直下一步即可。导入坐标打开pom.xml文件,依次导入mybatis、mysql驱动、ju...

2019-11-03 22:25:22 225

原创 关于医保你可能不了解的

前言今年年初,身边亲人得了大病,治病花了很多钱。前几天医保的报销款下来了,结合最近一年发生的事,说一下关于医保你可能不知道的,了解了这些知识,可能对你以后有帮助。医保分类以前医保分为:城镇职工医保:在正规公司就业的人员,单位都会给缴纳的医疗保险。 居民医保:适用于没有参加职工医保但是有当地户籍,包括在校学生、婴幼儿等,没有职工医保的老人也可参保。 新农合医保:是以大病统筹为主的...

2019-10-31 21:09:40 1013

原创 redis知识整理

前言日常开发中经常使用redis,但每次项目基本只配置过一次,或者复制粘贴,对于从零搭建redis,其中的原理流程模糊不清,所以在这里做个梳理,日后回顾也很方便。Redis的官网打开比较慢,而且全英文对英文不好的同学看起来不方便,这块推荐去redis中文网查看官方文档,官网地址:http://www.redis.cn/。其实大部分内容官网都介绍的很清楚了,在这里只是对知识做一个梳理,方...

2019-10-22 11:11:10 892

原创 springmvc整理

前言日常开发中经常使用springmvc,但每次项目基本只配置过一次,或者复制粘贴,对于从零搭建springmvc,其中的原理流程模糊不清,所以在这里做个梳理,日后回顾也很方便。入门demo创建项目使用Idea工具,新建maven工程,选择maven模板webapp模板,写好工程名,一直下一步到finish。导入pom依赖工程初始化完毕后,打开pom.xml,导入需要的依赖...

2019-10-10 21:39:17 157

原创 SpringDataJpa使用详解

概述这里就不引用冠冕堂皇的介绍了。用我概括的话说。他就是一个类似hibernate,mybatis数据访问层的框架。官网有详细的介绍,戳这里Jpa是什么?他是一套规范,类似restful风格一样,都是一套规范。使用Jpa必须按照它的规范来操作数据访问。SpringDataJpa==Jpa规范+Hibernate底层为什么要用jpa笔者其实很喜欢用mybatis写sql...

2019-08-23 13:21:32 4239 6

原创 搭建spring框架时遇到的错误

Load balancer does not have available server for client这个错误一般是在使用feign调用服务时遇到,其实很简单,就是调用的服务不满足负载均衡需求,具体报错信息如下:Whitelabel Error PageThis application has no explicit mapping for /error, so you are...

2019-08-17 17:21:54 6473 4

转载 非常不错一片介绍auth2的文章

转载地址:https://www.cnblogs.com/bigben0123/p/8334824.html1美好的旧时光我经常怀念三十年前那美好的旧时光, 工作很轻松, 生活很悠闲。上班的时候偶尔有些HTTP的请求发到我这里, 我简单的看一下, 取出相对应的html文档,图片,发回去就可以了, 然后就可以继续喝茶聊天。我的创造者们对我很好, 他们制定的一个简...

2019-07-05 13:26:46 842

原创 Jwt的使用场景

什么是JwtJwt是JSON Web Tokens的简称,从单词可以看出它也是一种token,其实可以理解为一种生成token的框架或规范。既然也是token那我们可以换一种问法,token是什么?为什么要使用token?token是什么Token是服务端生成的一串字符串,以作客户端进行请求的一个令牌,当第一次登录后,服务器生成一个Token便将此Token返回给客户端,以后客户端只需...

2019-07-02 09:48:22 8206 8

原创 最简单的SpringBoot+Mybatis配置及简单测试

开发工具本文使用当下比较流行的IntelliJ IDEA开发工具。新建工程打开IntelliJ IDEA工具选择new project,弹出如下窗口:我们选择左侧的Spring Initializr,jdk要求1.8及以上。选择默认的Default下一步:写demo其实我们可以不改这些信息直接下一步,如果想改名字可以自己修改Group及Artifact,和最下边的pack...

2019-06-24 10:33:09 3438 1

原创 安装nodejs以及webpack

下载nodejs下载地址:这里。拿win10安装为例,直接运行下载好的msi文件。一直下一步安装即可。期间选择对应的安装盘符。最后点击finish。安装完成后,可以cmd打开命令行,输入node -v 来查看node的版本,同时可以通过npm -v 查看npm的版本。配置npm通过输入npm config ls会显示npm的默认配置如下:; cl...

2019-06-20 10:48:43 1592

原创 String、new String()的知识点梳理

前言String str="1"和new String("1")的区别,其实是个老生常谈的问题,理解起来也挺简单,但是许多人还是很模糊。今天跟新人交流时发现他们对这块的认识也存在偏差,遂在这里系统整理一下String的相关问题。在叙述问题先,我们要先明白赋值和引用。因为这点对我们理解下边的代码很重要,不然很容易晕。参考这篇文章:https://blog.csdn.net/yz930618/...

2019-05-12 14:58:34 1461

原创 使用5个线程计算数组之和

前言之前写过多线程累加计数,原理跟本篇类似,传送门累加计数比计算数组之和逻辑稍微简单一点,如果对于这块不熟悉的,可以先看下累加计数。基本思想已经在之前那篇文章里写过了,这里就直接贴代码了。这里分别通过自己创建线程来实现功能,还有通过线程池来实现功能。思想都差不多。只是代码写法略有不同。仅供参考。代码一:五个线程交替累加计算数组之和,这种方法其实不如单线程直接累加快,因为交替...

2019-05-08 11:13:38 3096

原创 从源码角度详细分析View的绘制流程

前言源码分析基于api27即android8.1版本。网上翻阅了很多篇view的绘制流程文章,基本全流程介绍的很少,或者中间有很大的断档不好衔接。本文从源码角度,每个方法的调用和跳转说的比较详细。文章比较长,因为是看源码,比较枯燥,可以分几次阅读。文章的意义:帮助自己和他人,从源码的角度梳理流程。读者可以跟着文章的流程,自己也走一遍源码。看源码的作用我觉得主要是帮助我们更加深入的理解a...

2019-04-26 17:31:03 336

原创 Windows Process Activation Service (WAS) 服务无法启动相关解决方案

起因:笔者在做.NET开发时,需要用到IIS(win10系统),但是点击启动就会弹出报错,无法启动WWW万维网服务。于是笔者去服务列表里找发现确实启动不起来,去网上搜索,多数人都说需要先启动这个服务。当我启动Windows Process Activation Service服务时,就会报错,大致错误描述是:系统找不到文件路径(The system cannot find ...

2019-03-08 09:37:32 31857 7

转载 SQLSERVER数据库性能优化【转载】

出处:https://blog.51cto.com/jimshu/1250066前言  我1998年第一次接触SQL Server 6.5 for Windows NT 4.0,当时的感觉就认为SQL Server只是一个功能强大的Excel文件。现在回想起来,当年抱着这样一种态度,我开发的那些应用程序应该是非常幼稚的,其性能可想而知。记得那时候随便查询一笔记录就要花费十几秒,已是司空见惯...

2019-02-27 13:25:48 444

原创 # SQLServer 复制数据库

SQLServer 复制数据库有时候我们要在一个数据库连接中,复制一个数据库到另外一个连接地址,或者复制一个数据库改一个名字。如何实现呢?复制表新建数据库在我们的目标地址,新建一个数据库。如图在弹出的窗口输入数据库,点击确定即可。导入表数据在新建的数据库中,右键,任务,导入数据在弹出的窗体中,选择好数据源和目标。选择需要复制的表。这里要注意,不要勾选视图,如果勾选了视图,复...

2018-11-30 10:48:54 505

空空如也

空空如也

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

TA关注的人

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