自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 什么是数据仓库

数据立方体由多个维度和事实组成。它通过收集、整合、存储和管理来自多个数据源的数据,为企业提供全面、准确的数据支持。本文将简要介绍数据仓库的概念、发展历程和应用场景,并重点阐述数据仓库中的核心概念——数据抽取、转换和加载(ETL)以及数据立方体(Data Cube)。随着数据的爆炸性增长和人工智能技术的不断发展,数据仓库将会发挥越来越重要的作用,成为企业决策支持和发现新的商业机会的重要工具。数据仓库的实现需要经历以下步骤:需求分析、数据源识别、数据抽取、数据转换、数据加载、数据管理和数据安全等。

2024-01-24 11:08:33 364 1

原创 面向对象的五大基本原则

尽量使用合成/聚合达到复用,尽量少用继承。原则: 一个类中有另一个类的对象。又叫最少知识原则,一个软件实体应当尽可能少的与其他实体发生相互作用。应当为客户端提供尽可能小的单独的接口,而不是提供大的总的接口。超类存在的地方,子类是可以替换的。实现尽量依赖抽象,不依赖具体实现。每一个类应该专注于做一件事情。面向扩展开放,面向修改关闭。

2023-02-02 10:33:08 135

原创 RabbitMQ消息丢失的三种情况

RabbitMQ消息丢失的三种情况。

2023-02-01 14:17:15 273

原创 怎样算是一款成功的产品

公司的技术层面可以实现该产品,并且可以长期维护,持续完善;该产品可以为公司创造长期的可持续价值,包括但不限于利润,盈利模式,市场价值,战略地位等。能持续不断的解决目标用户的需求;用户操作简单方便,在使用产品后能够快速的有效的解决问题。该产品相较于其他竞品有着独特的优势,产品能够持续不断的迭代以满足目标用户的需求。

2023-01-11 11:04:29 172

原创 Redis如何保证高可用和高并发以及哨兵模式的四个主要功能

Redis主从架构+Sentinel模式,一主多从,可以满足高可用和高并发。当出现某个实例宕机后会自动进行主备切换,配置读写分离,能够缓解Master读写压力。使用哨兵(sentinel)机制时当主节点出现故障时,由Sentinel自动完成故障发现和转移,并通知应用方,实现高可用性。一、Redis如何保证高可用和高并发。

2023-01-11 10:50:33 108

原创 解决跨域的几种方式总结

解决跨域的问题HttpClient转发使用过滤器允许接口可以跨域 响应头设置Jsonp 不支持我们的post 属于前端解决Nginx解决跨域的问题保持我们域名和端口号一致性Nginx也是通过配置文件解决跨域的问题基于微服务网关解决跨域问题,需要保持域名和端口一致性使用网关代码允许所有的服务可以跨域的问题使用SpringBoot注解形式@CrossOrigin...

2022-04-19 14:49:29 2322

原创 jenkins和docker区别和联系

两者区别可以用一张图来解释可以看出,jenkins充当的是一个自动构建的作用,而Docker相当于虚拟机,或者说是一个容器。补充:1、jenkins是一个插件的集合

2022-03-16 13:56:39 4641

原创 synchronized的底层原理以及synchronized是怎样保证线程安全

synchronized(关键字)的底层原理?synchronized 关键字底层原理属于 JVM 层面。① synchronized 修饰代码块的情况synchronized 同步语句块的实现使⽤的是 monitorenter 和 monitorexit 指令,其中 monitorenter指令指向同步代码块的开始位置,monitorexit 指令则指向同步代码块的结束位置。当执⾏monitorenter 指令时,线程试图获取锁也就是获取monitor的持有权。(monitor对象存在于每个Jav

2022-02-10 10:44:49 2519

原创 不同数据库SQL如何查询结果的前几条记录

在使用数据库查询语句的过程中,我们经常需要返回查询结果的前几条或者中间几条数据,下面是我总结的几种数据库常用的方法:(table是数据库表名,table2是table表的别名)1、SQLServersqlserver支持top关键字,返回前若干条数据。select top 5 * from table;// 返回前5行数据2、MySQLmysql支持limit,只能适用于mysql。limit子句用于强制select语句返回置顶的记录数,接受一个或两个数字参数,必须是整数常量。一个参数是返回前几条记

2022-02-09 11:22:18 4043

原创 String s = “hello”; String s = new String(“hello”) 的区别

代码详解:首先,通过main()方法进栈。然后再栈中定义一个对象s1,去堆中开辟一个内存空间,将内存空间的引用赋值给s1,“hello”是常3. 量,然后去字符串常量池 查看是否有hello字符串对象,没有的话分配一个空间存放hello,并且将其空间地址存入堆中new出来的空间中。在栈中定义一个对象s2,然后去字符串常量池中查看是否有”hello”字符串对象,有,直接把”hello”的地址赋值给s2.即s1中存的是堆中分配的空间,堆中分配的空间中存的是字符串常量池中分配空间存放”hello”的空间.

2022-02-08 13:54:48 399

原创 elasticsearch进行批量插入的时候总是少数据

一、问题现有a表和b表,两张mysql数据库的表,需要把两张表的数据取共同字段,合并并导入es中,其中a表共有数据1000条,b表共有数据1200条,a表和b表的主键id都是从1开始递增的,结果导入的时候显示成功导入2200条数据,而实际查询的时候却只显示b表1200条数据。二 、分析现在导致数据被删除的情况应该是a表和b表的主键id重复,es默认mysql中的 id 为主键 并且document 的_id 和id保持一致, 导致a表中的数据被删除掉了(替换掉了)三、解决方案新建一个字段保存数据库

2022-02-08 10:05:02 2132

原创 idea自动删除尾行空格(空行中空格)

升级完idea 2020以后,发现打开项目的任意文件修改完以后,会自动将该文件中所有空行中的空格 全部删除。如这个1133行本来是有空格的,idea自动保存以后就没有空格了解决办法:Strip trailing spaces on save 默认是all 改成none,或modfiled lines即可。...

2022-02-08 09:58:11 3496 2

原创 数据库索引优化

索引的建立对于数据库的高效运行是很重要的,索引可以大大提高数据库的检索速度。所以对于索引的优化能够进一步提高数据库的检索速度。索引的优化一般需要做到以下几点:1.尽量全值匹配如果使用了复合索引,而查询的列是索引列,不要使用select * 而用索引列2.最佳左前缀法则创建复合索引的时候,要考虑索引的使用场景,比如创建复合索引key(a,b,c) 在出现where条件的时候一定要出现a,只有a,b,c同时出现在where条件里,这个索引才是最高效的。3.不在索引列上做任何操作比如各种函数等,不要

2021-12-15 15:40:27 2306

原创 stringbuffer和stringbuilder区别点到底在哪总结

StringBuilder和StringBuffer的区别是面试的时候被提及最多的问题之一了,我们都知道stringbuffer是线程安全的,而stringbuilder不是线程安全的,通过看源码我进行以下总结stringbuilder是线程不安全的,因为stringbuilder继承了父类abstractstringbuilder的append方法,该方法中有一个count+=len的操作不是原子操作,所以在多线程中采用stringbuilder会丢失数据的准确性并且会抛ArrayIndexOutOfB

2021-12-14 17:56:15 190

原创 Linux 大文件日志快速定位错误或者异常的位置

1.得到错误日志或者异常日志的行号cat -n test.log |grep “error”cat -n test.log |grep “exception”2. 通过位置往前往后查看日志详细//339563 can not close IO 查询语句在 339500 -339600行中 ||100代表在339500 往后看100行cat -n test.log |tail -n +339500 |head -n 100...

2021-12-13 11:00:56 2209

原创 接口响应过慢怎样排查?

接口慢排查:一般会从以下几个方面入手:1.是不是资源层面的瓶颈,硬件、配置环境之类的问题2.针对查询类接口,是不是没有添加缓存,如果加了,是不是热点数据导致负载不均衡3.是不是有依赖于第三方接口,导致因第三方请求拖慢了本地请求4.是不是接口涉及业务太多,导致程序执行跑很久5.是不是sql层面的问题导致的数据等待加长,进而拖慢接口6.网络层面的原因?带宽不足?DNS解析慢7.确实是代码质量差导致的,如出现内存泄漏,重复循环读取之类...

2021-11-17 14:07:35 3288

原创 varchar与char有什么区别

区别一,定长和变长char 表示定长,长度固定,varchar表示变长,即长度可变。char如果插入的长度小于定义长度时,则用空格填充;varchar小于定义长度时,还是按实际长度存储,插入多长就存多长。因为其长度固定,char的存取速度还是要比varchar要快得多,方便程序的存储与查找;但是char也为此付出的是空间的代价,因为其长度固定,所以会占据多余的空间,可谓是以空间换取时间效率。varchar则刚好相反,以时间换空间。区别之二,存储的容量不同对 char 来说,最多能存放的字符个数 25

2021-11-11 16:04:31 342

原创 ArrayList和LinkedList哪个更占空间

ArrayListArrayList是List接口的一个实现类,底层是基于数组实现的存储结构,可以用于装载数据,数据都是存放到一个数组变量中transient Object[] elementData;transient是一个关键字,它的作用可以总结为一句话:将不需要序列化的属性前添加关键字transient,序列化对象的时候,这个属性就不会被序列化。你可能会觉得奇怪,ArrayList可以被序列化的啊,源码可是实现了java.io.Serializable接口啊,为什么数组变量还要用transien

2021-11-11 15:33:59 664

原创 一个6亿的表a,一个3亿的表b,通过外间tid关联,你如何最快的查询出满足条件的第50000到第50200中的这200条数据记录

1、如果A表TID是自增长,并且是连续的,B表的ID为索引select * from a,b where a.tid = b.id and a.tid>500000 limit 200;2、如果A表的TID不是连续的,那么就需要使用覆盖索引.TID要么是主键,要么是辅助索引,B表ID也需要有索引。select * from b , (select tid from a limit 50000,200) a where b.id = a .tid;...

2021-11-11 10:58:50 688

转载 JVM夺命连环10问

**JVM夺命连环10问**https://mp.weixin.qq.com/s/hXXcp7JiNxpFeUxSuHyXhQ你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。新的改变我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:全新的界面设计 ,将会带来全新的写作体验;在创作

2020-11-02 17:15:49 114 1

空空如也

空空如也

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

TA关注的人

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