自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 sql语句的优化

如果想要统计的是结果集的行数,count(*)会忽略所有的列,直接统计行数,语义清晰,性能也会很好,MyISAM保存了表的行数,直接使用 count( *)会很快,但是前提是没有where条件。扫描索引是很高效的,但是如果索引不能覆盖查询所需要的列,就需要回表去查询对应的列,这基本上就是随机i/o,这种比顺序全表扫描还慢。另外在应用层做关联,一条数据只需要查询一次,而在数据库查询,可能需要重复的访问一部分数据,查询本身的效率可能会有所提升。在其他条件都相同的时候,尽可能少的查询当然更好,

2023-02-11 16:11:32 679

原创 mysql一条sql语句的执行过程

在解析一个查询语句之前,如果查询缓存是打开的,那么会优先检查这个查询是否命中查询缓存中的数据,如果命中,就立刻返回结果,跳过解析、优化和执行阶段。在判断缓存是否命中的时候,mysql不会解析sql语句,而是直接使用客户端发送过来的原始信息进行对比,任何字符上的不同,都会导致缓存不命中。应用程序不需要关心是通过查询缓存返回的结果还是实际执行查询返回的结果,因为两者的结果是完全相同的,而且查询缓存也不需要使用任何语法。mysql使用的是基于成本的优化器,它会预测执行一个某种执行计划的成本,然后选择最小的一个。

2023-02-11 16:09:37 2965 2

原创 mysql函数

函数函数可以把我们经常使用的代码封装起来, 需要的时候直接调用即可。这样既 提高了代码效率 ,又 提高了可维护性。在 SQL 中我们也可以使用函数 对检索出来的数据进行函数操作。使用这些函数,可以极大地 提高用户对数据库的管理效率。不同DBMS函数的差异 我们在使用 SQL 语言的时候,不是直接和这门语言打交道,而是通过它使用不同的数据库软件,即 DBMS。DBMS 之间的差异性很大,远大于同一个语言不同版本之间的差异。实际上,只有很少的函数是 被 DBMS 同时支持的。

2023-01-02 22:49:20 346

原创 Dubbo前后端分离监控中心搭建

监控中心,因为监控中心现在前后端分离,所以相比与老版有变动,首先下载压缩包官网: https://github.com/apache/dubbo-admin/tree/develop下载安装包,使用IDEA打开解压好的文件夹,稍等片刻让Maven下载好相关依赖首先调整项目为:jdk8编辑模块下的配置文件:然后打开IDEA右侧的maven面板,如果没有面板点击IDEA左下角的小方块就可以找到,点击maven面板的闪电图标,跳过单元测试,然后依次双击 对进行打包这里的账号密码就是前端页面的登录密码将jar包

2022-12-03 22:03:02 705

原创 springboot+zookeepr+dubbo的远程服务调用

首先一定确保zookeeper正常工作为了简化代码,可以把需要其他服务调用的接口,抽取为公共接口模块dubbo-common-service,服务提供方导入dubbo、zookeeper依赖配置文件为:提供方实现接口并暴露服务,在接口实现类增加@DubboService启动类加上@EnableDubbo接口调用方启动类controller接口通过本服务的Service 来远程调用接口访问controller接口,得到:远程调用成功

2022-12-03 21:56:48 372

原创 clickHouse基础语法

​ 粒度,指的是在一级索引的前提下,在记录数据的粒度,比如说,有很多重复的数据,一级索引记录的区间为1-10,10-20,20-50等,想要判断35数据在哪一个区间,就需要判断3次,这里的粒度是5,也就是把五个区间合并为一个二级索引,使得区间的范围更大,查找更高效,也就是对于一级索引粒度的粒度。主键提供的索引为稀疏索引,默认间隔为8192,除非有大量的重复值,一般不需要改这个值,可以减少索引文件的大小,以及快速定位,但是没办法避免在一个区间内的扫描。

2022-11-27 20:48:51 1828

原创 clickhouse单节点以及集群的安装

​ 在clickhouse集群中,没有主从一说,所有的节点都是主,相互之间互为副本,某一个节点的数据发生变化,就会提交写日志给zookeeper,其他节点就会从zookeeper监听到数据发生了变化,然后从数据发生变化的节点同步数据。Centos取消SELINUX(linux的一种安全机制,非常强大,但是也非常麻烦),是内核级别的东西,必须重启,也可以设置为临时生效,等下次服务器维护重启,配置自然也生效了。分片,下面是资源不够用的情况,只有3个节点,没有副本。在 中编辑。

2022-11-27 20:43:30 2387

原创 zookeeper+openfeign远程调用

首先确保zookeeper集群可用。

2022-11-20 21:41:17 924

原创 zookeeper3.8.0集群安装及基础命令

zookeeper数据模型与Uinx文件系统很相似,整体可以看作是一棵树,每个节点 默认能够存储1MB数据,每个节点都可以通过文件路径来唯一标识。服务器操作:创建服务器连接,将自己注册到zookeeper集群(也就是创建对应的节点,上线一台服务器就创建一个节点,下线节点就消失)通过通信的线程将注册的监听事件发送给zookeeper ,再zookeeper的注册监听列表中将注册的监听事件添加到列表中。再一个mian线程里,创建zookeeper客户端,会有两个线程,一个负责网络通信,一个负责监听。

2022-11-20 21:30:38 1771

原创 java虚拟机垃圾回收器

垃圾回收器是java的招牌能力,极大的提高了开发效率7款经典的垃圾回收器:串行回收器:Serial、 Serial old (垃圾回收时,只有一个线程进行垃圾回收)并行回收器:ParNew 、Parallel Scavenge 、 Parallel old (垃圾回收时,有多个垃圾回收线程)并发回收器:CMS、G1 (垃圾回收线程和工作线程交替执行)不同的垃圾回收器可以回收的不同区域不同的jdk版本,垃圾收集器的组合方式。...

2022-08-28 21:31:07 1041 1

原创 java虚拟机垃圾回收相关概念

软引用是来描述一些还有用,但是非必须的对象,只被软引用关联的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行第二次回收,如果这次回收没有足够的内存,才会抛出内存溢出异常,所以软引用是不会造成内存溢出的(内存溢出和强引用以外的引用无关)一个对象是否有虚引用,完全不会决定对象的生命周期,如果一个对象只有虚引用,那么几乎和没有引用是一样的,随时都能被垃圾回收器回收掉,唯一的作用就是跟踪垃圾回收的过程,能在对象被收集器回收时起到一个系统通知。

2022-08-22 22:34:29 287

原创 java虚拟机垃圾回收基本概念

在c/c++的时代,垃圾回收是手动进行的,使用new关键字申请,使用delete关键字进行内存的释放,这样会很灵活,但是管理内存会很繁琐,如果忘记释放,会导致内存泄漏,随着时间的增加,内存的使用会越来越高,有可能造成内存溢出,进而导致程序的崩溃。分代收集算法基于:不同的对象的生命周期不同,因此不同生命周期的对象采取不同的收集方式,以便提高回收效率,一般是把对分为新生代、老年代,不同的年代采用不同的算法,提高垃圾回收的效率。这中方式清理出来的内存不是连续的,容易产生内存碎片,还需要维护一个空闲列表。...

2022-08-14 21:39:18 268

原创 java虚拟机字符串常量池

String 是final的,jdk1.8的时候,底层是一个char[ ] , jdk1.9的时候用的是 byte[ ],原因是堆空间中有大量的字符串,实际使用时发现大部分字符串都是拉丁文,1个字节就可以存放,而char 需要2个字节,所以为了节约空间,和减少GC的次数,就把char[ ] 改成了 byte[ ] ,在我们创建字符串的时候,会尝试压缩字符串,如果有大量的重复字符串,使用intern 可以节约内存空间,(虽然也会创建很多对象,但是会及时回收掉,直接从常量池中使用,而不是直接使用堆中的对象)..

2022-08-13 16:06:00 607

原创 java虚拟机执行引擎

所以,hotspot在虚拟机启动时,解释器首先发挥作用,不必等到即时编译器全部编译完成在执行,这样可以省去很多不必要的等待时间,并且随着程序运行时间的推移,即时编译器逐渐发挥作用,根据热点探测功能把有价值的字节码编译为本地机器指令,以换取更高的执行效率,另外解释器还可以作为备选方案。如下图,如果只是为了跨平台,那么直接把代码翻译成汇编语言,再把汇编语言翻译为机器指令也是可以实现跨平台,但是这样堆虚拟机的要求会非常高,而引入字节码文件,可以降低虚拟机的要求,且能防止源代码泄露,且字节码可以跨语言。......

2022-08-08 21:17:14 759

原创 java创建对象的几种方式

实例数据:对象真正有效的信息,包括父类和自身拥有的字段,其中,父类中定义的变量会出现在子类之前;句柄访问,需要专门维护一个句柄池,空间开销较大,而且相对于直接指针来说效率较低,但是如果对象的位置方法变化(比如发生了GC),句柄访问就只需要维护句柄池,不需要区修改栈中的数据。直接指针,hotspot采用所谓方式,栈帧里的,局部变量表记录了 堆中对象的直接引用地址,堆中对象又有方法区中类的引用。句柄访问,维护了一个句柄池,句柄池在堆中,记录了对象的引用和类的引用,栈帧需要通过句柄池才能访问对象以及类。...

2022-08-08 21:11:02 712

原创 java虚拟机方法区

方法区和堆一样是多个线程共享的,《java虚拟机规范》中声明,所有的方法区在逻辑上可以看作是堆的一部分,但是一些简单的实现可能不会选择区进行垃圾收集或者压缩,而对于hotSpot而言,方法区还有一个别名叫做Non-Heap(非堆),目的就是要和堆分开,所以,方法区可以看作是一块独立与堆的内存空间,而且堆的主要目的是存放创建出来的各种对象,方法区里则会有类的信息,从内容来说,也不相同方法区在jvm启动时被创建,它的实际物理内存空间和java堆区一样都是可以不连续的方法区的大小和堆空间一样,可以固定大小也可以扩

2022-08-08 21:08:37 439

原创 java虚拟机堆空间

运行时数据区堆空间

2022-08-01 22:46:02 631

原创 java虚拟机栈

java虚拟机栈空间

2022-07-30 16:28:23 1106

原创 双亲委派机制

jvm双亲委派机制

2022-07-23 21:24:57 226

原创 jvm类加载子系统

jvm类加载子系统

2022-07-23 21:22:19 348

原创 es常用语法一

创建索引_search 查询索引数据信息_doc对文档的操作_cat查询索引本身的信息(有很多命令)插入及修改数据修改数据删除Mapping查看一个索引的映射删除映射Elasticsearch 支持如下简单域类型:当你索引一个包含新域的文档—之前未曾出现-- Elasticsearch 会使用 动态映射 ,通过JSON中基本数据类型,尝试猜测域类型例如:下面的语句,会自动映射查看自动隐射的结果是手动映射创建索引的时候一起创建映射,mapping一旦创建,type属性不能修改,具

2022-06-22 21:51:36 1037

原创 redis常用命令

启动redist带上配置文件启动redis,配置文件是手动拷贝到/etc目录的./redis-server /etc/redis.conf./redis-cli -p 6379 ping 验证是否连接成功pong 成功关闭redisshutdownexit库的操作select index 切换数据库,共有16个库,0-15flushdb 清当前库flushall 清除所有库dbsize 查看库大小exists key 判断key是否

2022-05-22 15:22:17 389

原创 elasticsearch 8.0 centos8安装部署

elasticsearch 8.0官方下载地址:https://www.elastic.co/cn/downloads/past-releases/elasticsearch-8-0-0选择 LINUX X86_64解压安装包tar -zxvf elasticsearch-8.0.0-linux-x86_64.tar.gz 移动到指定文件夹mv elasticsearch-8.0.0 /usr/local/elasticsearch-8.0进入指定文件夹cd /usr/local/

2022-05-13 23:01:23 1732 1

原创 Centos防火墙端口

只针对Centos7以上查看已经开放的端口:firewall-cmd --list-ports开启端口: firewall-cmd --zone=public --add-port=8080/tcp --permanent关闭端口: firewall-cmd --permanent --zone=public --remove-port=8080/tcp 开启防火墙: systemctl start firewalld 重启防火墙:firewall-cmd --reload #重

2022-05-05 21:05:31 970

原创 kafka 3.1.0集群搭建

共采用三台虚拟机来组成kafka集群先找到kafka的安装目录cd /usr/local/kafka进入config目录,修改server.propertiescd config/ vim server.properties 主要修改三处配置按 i 进入编辑模式,/进行搜索,n搜索的下一项,N搜索的上一项第一个是broker.id,需要保证集群中每一个节点的id唯一第二个是isteners=PLAINTEXT://192.168.158.139:9092,这里的ip就是你的虚拟机i

2022-05-02 22:37:48 2075

原创 kafka启动报错:The Cluster ID 0dz1_QUqRT2I_P6W4ML9Mw doesn‘t match stored clusterId Some

自己搭建的kafka集群,很久不用之后,集群的每一台服务器 Cluster ID确实没有重复的,但是启动报错ERROR Fatal error during KafkaServer startup. Prepare to shutdown (kafka.server.KafkaServer)kafka.common.InconsistentClusterIdException: The Cluster ID 0dz1_QUqRT2I_P6W4ML9Mw doesn't match stored clus

2022-05-02 17:15:00 1357

原创 如何保证虚拟机ip地址不变

对于用到虚拟机的人来说,虚拟机ip地址改变会是一件非常讨厌的事,那么怎么保证ip地址不变呢在终端输入ifconfig,查看相关配置信息:然后输入 vim /etc/sysconfig/network-scripts/ifcfg-ens33命令。按 “i” 进行编辑 修改网卡配置文件把BOOTPROTO设置为static静态的然后在下面创建两个值ip和子网掩码加在上图任何位置就ok了IPADDR=192.168.158.131(填你的ip) #IP地址NETMASK=255.255.255.

2022-05-02 10:32:09 5548 1

原创 mysql计算两个时间的年月日时分秒值差(yMdHms)

两个时间开始时间 : ‘2009-11-24 15:10:00’结束时间: ‘2009-11-24 15:12:24’计算他们的时间差,精确到时分秒,如果某一项为0,就不显示,例如:0h1m0s,结果为:1m,sql如下SELECT CONCAT(CONCAT(CASE WHEN(TIMESTAMPDIFF(HOUR ,'2009-11-24 15:10:00' ,'2009-11-24 15:12:24')%60) = 0THEN ""ELSEconcat(TIMESTAM

2022-04-24 14:38:39 1743

原创 java导出excel与word文档

导出excel与word依赖如下 <!--导出excel文档,easyexcel的依赖:为了防止poi版本冲突--> <dependency> <groupId>com.alibaba</groupId> <artifactId>easyexcel</artifactId> <version>2.2.6</version>

2022-04-23 20:23:45 2560 2

原创 @async注解的使用

异步调用1.使用:springboot中的启动类中需要添加注解@EnableAsync来开启异步调用,在需要异步执行的方法上添加@Async(“taskExecutor”)注解进行标注。@Target({ElementType.METHOD, ElementType.TYPE})@Retention(RetentionPolicy.RUNTIME)@Documentedpublic @interface Async {/** * A qualifier value for the speci

2022-04-12 21:42:14 501

原创 linux 修改时间

yum install ntpvim /etc/ntp.confserver 10.1.8.99systemctl enable ntpdsystemctl start ntpdsystemctl status ntpdntpstat

2022-04-02 16:55:12 1073

原创 sql的日期格式化

sql的日期格式化转化1. DATE_FORMAT() 函数用于以不同的格式显示日期/时间数据。DATE_FORMAT(date,format)%a 缩写星期名%b 缩写月名%c 月,数值%D 带有英文前缀的月中的天%d 月的天,数值(00-31)%e 月的天,数值(0-31)%f 微秒%H 小时 (00-23)%h 小时 (01-12)%I 小时 (01-12)%i 分钟,数值(00-59)%j 年的天 (001-366)%k 小时 (0-23)%l 小时 (1-12)

2021-11-30 09:56:58 21620

原创 sql将数据按照某一列合并

oralce写法:select WM_CONCAT(A.title) as citys from tmpcity Asql server写法:select stuff((select ‘,’+A.title from tmpCity A FOR xml PATH(’’)), 1, 1, ‘’) as citysmysql写法:select GROUP_CONCAT(A.title) as citys from tmpcity A; --默认的逗号分隔select GROUP_CONCA

2021-11-26 18:12:32 2211

原创 spring boot 集成es分页、条件查询

这里用的es7.8版本,该版本最好和你安装的版本一致 <!--spring-data集成es--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dep

2021-11-14 16:14:33 3966

原创 SpringCloud Eureka参数配置项

Eureka客户端配置 1、RegistryFetchIntervalSeconds 从eureka服务器注册表中获取注册信息的时间间隔(s),默认为30秒 2、InstanceInfoReplicationIntervalSeconds 复制实例变化信息到eureka服务器所需要的时间间隔(s),默认为30秒 3、InitialInstanceInfoReplicationIntervalSeconds 最初复制实例信息到eureka服务器所需的时间(s),默认为4..

2021-10-22 09:47:47 254

原创 feign 熔断工厂 fallbackFactory的简单实现

普通的熔断方法实现方式 是实现接口,当有错误响应是无法获取response信息现在有一个方法就是熔断工厂,再也不用实现接口就能捕获错误接口的返回信息了1.引入jar包 org.springframework.cloud spring-cloud-starter-openfeign </dependency> <dependency> <groupI

2021-10-13 11:24:56 2182

原创 登陆mysql数据库

mysql -u root -p查看user表mysql> use mysql;mysql> select host,user,password from user;+--------------+------+-------------------------------------------+| host | user | password |+--------------+------+..

2021-10-11 13:43:44 170

原创 spring boot测试类自动注入service或dao

使用Spring Boot进行单元测试时,发现使用@Autowired注解的类无法自动注入,当使用这个类的实例的时候,报出NullPointerException,即空指针异常。Spring Boot中的单元测试先简单说一下Spring Boot中的单元测试。要在Spring Boot中使用单元测试是很简单的,Spring Boot提供了spring-boot-starter-test的依赖,即JUnit的相关依赖。在pom.xml文件中引入依赖: org.springframework.

2021-10-11 10:08:05 1936

原创 在Java filter中调用service层方法

在项目中遇到一个问题,在 Filter中注入 Serivce失败,注入的service始终为null。如下所示:public class WeiXinFilter implements Filter{ @Autowired private UsersService usersService; public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain

2021-10-08 18:52:21 1455

原创 启动高版本的jmeter5.0报错,且已有jdk

解决方案:1.配置jmeter环境,修改path:%SystemRoot%\system32;%SystemRoot%; 添加在最前面2.jmeter.bat文件前面加上以上两句:SET JAVA_HOME=C:\Program Files\Java\jdk1.7.0_51 (jdk路径)SET PATH=%SystemRoot%/system32;%SystemRoot%;%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin注意:高版本的jmeter是需要高版本的jdk的。这

2021-10-03 22:41:23 331

空空如也

空空如也

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

TA关注的人

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