自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Gongyl的博客

初入Java

  • 博客(119)
  • 收藏
  • 关注

原创 GeoHash分享

GeoHash是一种地址编码,可以将二维的经纬度编码成遵循“最左匹配原则”的字符串,在LBS(Location Based Services)服务中具有非常广泛的用途。

2023-10-23 11:56:39 222

原创 联合主键NULL值过多,ON DUPLICATE KEY UPDATE不更新的问题

近来遇到一个问题,一个数据保存接口。两处调用,一处在联合主键相同是总是更新数据,一处在联合主键相同时却新增了一条。

2023-10-11 15:01:32 490

原创 Doris数据同步:stream load Java工具类实现

java调用doris接口,快速进行数据导入

2022-09-01 11:58:18 1972

原创 鹤壁异地公积金组合贷款攻略

异地公积金组合贷款购房攻略

2022-07-16 17:31:29 693 3

原创 重谈Java类加载机制

一、什么是类加载机制虚拟机把描述类的数据从 Class 文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的 Java 类型,这就是虚拟机的类加载机制二、类加载的步骤加载 通过全限定名获取定义此类的二进制字节流; 将字节流所代表的静态存储结构转化为方法区的运行时数据结构; 在内存中生成一个代表该类的Class对象; 连接 验证:确保Class文件的字节流中包含的信息符合《Java虚拟机规范》,文件格式验证、元数据验证、字节码验证、符号引用验证等;

2021-08-14 18:02:37 301 1

原创 JVM篇:垃圾收集器总结

太老的收集器就不做笔记了,想了解的可以看《深入理解JVM》只要有垃圾收集和用户线程并行的,就必须要考虑新对象创建的问题;三个重要指标:内存占用、吞吐量、延迟; 与CAP协议类似的,三者不可兼得。。。垃圾收集器追求的变化:之前追求一次把整个java堆清理干净; 从G1开始追求收集的速度赶上对象分配的速度;一、ParNew+CMSParNewSerial的多线程版本CMS初始标记:枚举根节点,stw 并发标记 重新标记:stw 并发清除缺点:无法处理浮动垃圾

2021-06-20 16:43:12 134

原创 Mysql:记一次线上索引失效

一、起因今天在看服务质量看板时,发现我的一个服务质量明显偏低,可用性不到三个9,根据监控面板找到一个分页查询数据的接口频繁失败,故此找一下原因二、排查过程通过查询错误日志,发现ga...

2021-05-31 17:46:22 251 3

原创 数据结构之优先队列

一、数据结构二叉堆首先,二叉堆是一颗被完全填满的二叉树。有任意节点的左节点为2i+1,右节点为2i+2; 在一个堆中,对于每一个节点X,X的父亲中关键字小于(或等于)X中的关键字,根节点除外。 insert操作:上滤,从下往上寻找可以插入的节点; delete操作:下滤,删除根,递归根节点的最小儿子补位。 定理:包含2^(k+1)-1个节点,高为h的理想二叉树的节点的高度和为2^(k+1)-1-(h+1);d-堆d-堆是二叉堆的简单推广,它就像一个二叉堆,只是所有节点都有d个儿子,

2021-05-09 19:28:47 206

原创 Spring事务管理(三):How Spring TX Work?

在事务管理(二)中,已经分析了Spring如何生成事务增强代理类,这一章分析一下Spring事务代理类是如何工作的。一、执行上一章的最后TransactionManagementConfigurationSelector加载了ProxyTransactionManagementConfiguration,里边注册了一个bean:TransactionInterceptor,实现了MethodInterceptor(Spring方法拦截器),事务就是在这个类中进行处理的,首先看一下类图因为实现

2021-01-02 17:48:26 379 2

原创 Spring事务管理(二):Spring生成事务代理增强类源码分析

以SpringBoot为例,看下SpringBoot是怎么做的。看着代码很复杂,但是其实我们只关注跟事务相关的就行了,其他的只做了解,等事务的搞明白了,回过头来再研究其他的,事半功倍,我们还可以借助事务的初始化过程,来了解Spring内部加载是怎么实现的!!!一、/META-INF/spring.factories要想实现某个功能,首先要做的肯定是把bean加载到容器中,Spring通过spring.factories的方式可以加载一些特定的bean关于事务的bean请看下图:Tran

2020-12-27 17:41:17 723

原创 Spring事务管理(一):开篇,对于Spring事务的几个疑问

一、背景在项目开发的时候,经常会遇到方法加了事务注解,事务却没有生效的情况,请教同事之后,当时的一段代码是没有问题了,但是却不了解为什么,所以抽出一段时间专门学习下Spring的事务管理。二、范围本系列只讨论Spring+JDBC(MyBatis)声明式事务的实现原理三、疑问点为什么同一个类中,一个方法调用另一个加了事务注解@Transactional注解的方法,事务却没有生效? 假如有两个加了@Transactional注解的方法,但是他们的transactionManager不一样

2020-12-27 11:10:30 179

原创 Apollo分布式部署指南(云服务器)

参考:官方分布式部署指南一、为什么要写这篇文章之前参考quickstart,只能本地部署,当我想放到云服务器上时,本地java客户端总是连接不上; 为了加深记忆,下次部署时可以快速完成 云服务器部署时,请求eruaka返回给我的只有内网地址,需要在源码中加一行配置;二、准备工作准备工作比较繁琐,但是一步步来,也不会很难。1.首先你需要有一台云服务器,最好是centOS7版本的2.云服务器上需要装有jdk1.8的环境3.准备一个mysql5.7以上的版本,并且把apollo的sq

2020-11-01 20:36:54 751 4

原创 五个方面搞定MySQL优化

一、背景最近在网上看了很多关于SQL优化的文章,参考这些文章和《深入浅出MySQL》一书,做一个总结(结尾有图,大致总结出了五个方面)后期会持续优化这篇文章二、一些配置或者函数的解释// 1.开启慢查询日志:slow_query_log=1// 2.show status like 'Com_%';Com_select:执行 select 操作的次数,一次查询只累加 1。Com_insert: 执行 INSERT 操作的次数, 对于批量插入的 INSERT 操作, 只累加一次。

2020-08-27 23:02:25 162

原创 nginx负载均衡配置汇总

一、轮询每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。upstream backserver { server 192.168.0.14; server 192.168.0.15; } 二、指定权重指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况upstream backserver { server 192.168.0.14 weight=8; server 192.168.0.

2020-08-26 16:19:09 134

原创 Synchronized底层是如何实现的,锁升级过程

首先,其实我们在看博客或者看视频都可以学到这个知识点,但是还是强烈建议大家看书,然后针对某一个不理解的细节去针对性的看博客或者视频。一、Synchronized作用范围谷歌翻译是已同步的意思。是Java为了处理并发编程的一个关键字。代表多个线程需要争抢同一把锁,抢到了才能进行自己的工作。在Java中,任何对象都可以用作线程竞争的锁,这也能解释,为什么Object类中有wait,notify等方法了。可以作用在三个地方:作用在代码块,需要传入一个锁对象;此时锁住的是传入的对象; 作用在非静态

2020-08-23 22:59:45 292

原创 第四代编程语言会是什么样子的?

当我对编程语言越来越熟悉,发现从0101到汇编语言,再到高级语言,计算机语言还会继续发展么?越来越感觉现在的各种框架思想都是慢慢的将服务变得透明化来实现的,服务只负责一个职责,如何实现对外界透明,那如果抽象一下,这岂不是跟if,for这些关键字功能相同么?会不会有第四代编程语言的出现,以某些特定的计算为编程基础,例如,一个冒泡排序方法可能最后就会简化为一个关键字,用最优的内部实现来进行处理。或者在服务层面,一个功能明确的服务就会被抽象成一个组件,然后万事万物协调配合,构成了第四代编程语言。如果是

2020-08-20 13:34:31 383

原创 MyBatis原理(四):MyBatis中代理模式的运用

问题先来思考几个问题:为什么我们在mybatis中只需要写一个dao层接口就可以直接调用方法,返回数据库查询结果呢?一、JDK动态代理先说出答案,MyBatis是使用JDK动态代理来设计的:利用java.lang.reflect.Proxy对象实现,底层用到其实是反射。被代理对象必须实现接口(因为java类是单继承的,动态代理类在被创建后继承了Proxy类,所以目标对象必须实现接口,其实跟静态代理的条件差不多,只不过通过反射,很多东西可以动态执行,不需要手写) static Obje

2020-08-18 00:00:39 647

原创 SpringMVC中DispatchServlet是单例还是多例(附源码分析)

一开始我只知道DispatchServlet是在web.xml中配置的,所以想当然的以为是单例,但结果和我预想的是有出入的。一、servlet规范因为DispatchServlet也是Servlet的一种,所以DispatchServlet和Servlet的表现结果应该相同。先贴上从网上找的servlet规范对于servlet实例个数的描述:“Deployment Descriptor”, controls how the servlet container provides instances

2020-08-16 21:06:39 1178

原创 Redis学习(十三):使用哨兵自动管理主从数据库

一、什么是哨兵顾名思义,哨兵的作用就是监控Redis系统的运行状况。它的功能主要包括以下两个:监控主数据库和从数据库是否正常运行; 主数据库故障时自动将从数据库转换为主数据库,并使其他从数据库连接到新的主数据库上二、哨兵配置配置文件名称:sentinel.conf,内容如下:sentinel monitor mymaster 127.0.0.1 6379 1首先,对于一个主从数据库系统,哨兵只需要配置主数据库地址即可(后边解释),哨兵还可以同时监控多个主从数据库系统 sentin

2020-08-08 16:56:31 268

转载 Gitee项目上传步骤(转载)

简书:将本地项目上传到码云,只需这几步,每个步骤都有图文

2020-08-04 10:54:29 472

原创 MyBatis学习(三):MyBatis原理

阅读本文默认您对mybatis有一定的认识,所以在此一些概念性的东西就不贴了,以一个查询为例,复现MyBatis如何通过封装和动态代理调用底层JDBC代码,在此期间经历了什么。需要注意的点:对于mybatis使用的查询方式和类型的实现类,这里使用的是SimpleXXXXXX,不同的实现类有不同的实现方式 主要介绍使用sqlSession执行查询时,底层代码流转,使用mapper方法查询的放到动态代理中,因为底层也是使用的sqlSession。一、MyBatis如何执行一条sql?先来看看我们

2020-08-02 17:52:00 200 2

原创 设计模式(二):工厂模式

一、工厂模式工厂模式是用工厂方法代替new操作的一种模式。简单来讲就是提供给客户端一种统一的调用方式。调用者不必知道对象是怎么被创建出来的; 只需知道需要的对象名称或者类型信息即可;优点:一个调用者想创建一个对象,只要知道其名称就可以了; 拓展性较高,如果想增加一个产品,只需拓展一个工厂实现类即可; 屏幕产品的具体实现,对调用者透明化缺点:拓展性高所带来的缺点是,每增加一个产品,我们都需要额外的拓展一个工厂实现类,使得系统中类的数量成倍增长 一定程度上会增加系统复杂度基础类代码

2020-08-02 11:52:27 177

原创 TCP/IP(一):协议分层

一、TCP/IP协议分层(与UDP进行比较)网络访问层:提供了与物理网络连接的接口。针对传输介质设置数据的格式,根据硬件的物理地址实现数据的寻址,对数据在物理网络中的传递提供错误控制(数据报在此被称为帧); 网际层:提供独立于硬件的逻辑寻址,从而让数据能够在具有不同物理结构的子网之间传递。提供路由功能来降低流量,支持网间的数据传递(术语“网间”(internetwork)指的是多个局域网互相连接而形成的较大的网络,比如大公司里的网络或Internet)。实现物理地址(网络访问层使用的地址)与逻辑地

2020-07-29 18:05:04 588

原创 MySQL索引学习

听同事提起索引,只知道是一种类似树的结构,可以大幅提高查询效率,但是具体原理却不懂,所以搜索资料学习一下。一、索引分类1.主键索引:根据主键pk_clolum(length)建立索引,不允许重复,不允许空值;ALTER TABLE 'table_name' ADD PRIMARY KEY pk_index('col');2.唯一索引:用来建立索引的列的值必须是唯一的,允许空值;ALTER TABLE 'table_name' ADD UNIQUE index_name('col')

2020-07-28 18:06:37 104

原创 SpringCloud(一):简介

一、Spring Cloud简介Spring Cloud是一个基于Spring Boot实现的云应用开发工具,它为基于JVM的云应用开发中的配置管理 服务发现 断路器 智能路由 微代理 控制总线 全局锁 决策竞选 分布式会话 集群状态管理等操作提供了一种简单的开发方式。Spring Cloud包含了多个子项目(针对分布式系统中涉及的多个不同开源产品),比如:Spring Cloud Config、 Spring Cloud Netflix、 Spring Cloud

2020-07-24 11:19:33 124

原创 SpringBoot2.X学习(三):缓存

一、Cache配置注解详解@CacheConfig:主要用于配置该类中会用到的一些共用的缓存配置。在这里@CacheConfig(cacheNames = "users"):配置了该数据访问对象中返回的内容将存储于名为users的缓存对象中,我们也可以不使用该注解,直接通过@Cacheable自己配置缓存集的名字来定义。 @Cacheable:配置了findByName函数的返回值将被加入缓存。同时在查询时,会先从缓存中获取,若不存在才再发起对数据库的访问。该注解主要有下面几个参数: value、c

2020-07-23 16:05:59 574

原创 SpringBoot2.X学习(三):JSR-303请求参数校验

一、什么是JSR?JSR是Java Specification Requests的缩写,意思是Java 规范提案。是指向JCP(Java Community Process)提出新增一个标准化技术规范的正式请求。任何人都可以提交JSR,以向Java平台增添新的API和服务。JSR已成为Java界的一个重要标准。二、JSR-303定义的是什么标准?JSR-303 是JAVA EE 6 中的一项子规范,叫做Bean Validation,Hibernate Validator 是 Bean Vali

2020-07-18 12:49:09 283

原创 SpringBoot2.X学习(二):使用Swagger2构建强大的API文档

https://github.com/SpringForAll/spring-boot-starter-swagger

2020-07-18 11:08:35 156

原创 SpringBoot2.X入门(一):Spring配置文件学习

一、YAML文件的不足YAML文件的优势可以说一目了然,目前YAML的不足,例如无法通过@PropertySource注解来加载配置。但是,YAML加载属性到内存中保存的时候是有序的,所以当配置文件中的信息需要具备顺序含义时,YAML的配置方式比起properties配置文件更有优势。二、自定义参数自定义的参数可以在应用中使用@Value来获取。@Value注解支持两种表达式配置PlaceHolder方式,格式为${...},大括号内为PlaceHolder SpEL表达式(Spri.

2020-07-18 10:40:39 146

转载 开启-XX:+PrintGCDetails,具体日志内容分析

看一段程序package day20200314;import java.lang.ref.SoftReference;/** * @Author: xiaoshijiu * @Date: 2020/3/14 * @Description: 分析GC打印的日志具体内容 */public class GCDetailsAnalyze { public static void main(String[] args) { SoftReference<byt

2020-07-17 09:35:00 1279

原创 聊聊 MySQL 的大表优化方案

当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段 尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上UNSIGNED VAR

2020-07-16 18:06:11 193

原创 redis知识点总结

一、redis持久化机制Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数据持久化。当Redis重启后通过把硬盘文件重新加载到内存,就能达到恢复数据的目的。过程:单独创建fork()一个子进程,将当前父进程的数据库数据复制到子进程的内存中,然后由子进程写入到临时文件中,持久化的过程结束了,再用这个临时文件替换上次的快照文件,然后子进程退出,内存释放。持久化方式:RDB:Redis默认的持久化方式,按照一定的时间周期策略把内存的数据以快照的形式保存到硬盘

2020-07-12 16:34:29 186

转载 布隆过滤器

一、什么是布隆过滤器本质上布隆过滤器是一种数据结构,比较巧妙的概率型数据结构(probabilistic data structure),特点是高效地插入和查询,可以用来告诉你 “某样东西一定不存在或者可能存在”。相比于传统的 List、Set、Map 等数据结构,它更高效、占用空间更少,但是缺点是其返回的结果是概率性的,而不是确切的。二、实现原理HashMap 的问题讲述布隆过滤器的原理之前,我们先思考一下,通常你判断某个元素是否存在用的是什么?应该蛮多人回答 HashMap 吧,确实

2020-07-12 14:50:00 412

原创 浅谈String.intern()方法

非常好:https://blog.csdn.net/u011635492/article/details/81048150

2020-04-12 12:58:49 155

原创 oracle 对expdp慢的原因进行trace

https://developer.51cto.com/art/201908/601690.htm

2020-03-30 11:36:07 1083

原创 expdp 导出报:ORA-39001:invalid argument value和ORA-00980: synonym translation is no longer valid

Export: Release 11.2.0.4.0 - Production on Mon Mar 30 09:39:55 2020Copyright (c) 1982, 2011, Oracle and/or its affiliates. All rights reserved.Connected to: Oracle Database 11g Enterprise Editio...

2020-03-30 10:03:54 2195

原创 oracle数据泵导入导出

一 关于expdp和impdp 使用EXPDP和IMPDP时应该注意的事项:EXP和IMP是客户端工具程序,它们既可以在客户端使用,也可以在服务端使用。EXPDP和IMPDP是服务端的工具程序,他们只能在ORACLE服务端使用,不能在客户端使用。IMP只适用于EXP导出的文件,不适用于EXPDP导出文件;IMPDP只适用于EXPDP导出的文件,而不适用于EXP导出文件。expdp...

2020-03-27 17:26:43 207

翻译 设计一个公平的洗牌算法

设计一个公平的洗牌算法1.看问题,洗牌,显然是一个随机算法了。随机算法还不简单?随机呗。把所有牌放到一个数组中,每次取两张牌交换位置,随机 k 次即可。如果你的答案是这样,通常面试官会进一步问一下,k 应该取多少?100?1000?10000?很显然,取一个固定的值不合理。如果数组中有 1000000 个元素,随机 100 次太少;如果数组中只有 10...

2020-03-27 11:27:40 559

原创 Oracle使用MD5函数,加密字符串

一、加密字符串方法CREATE OR REPLACE FUNCTION MD5(passwd IN VARCHAR2) RETURN VARCHAR2 IS retval varchar2(32);BEGIN retval := utl_raw.cast_to_raw(DBMS_OBFUSCATION_TOOLKIT.MD5(INPUT_STRING => passwd));...

2020-03-24 10:35:22 754

转载 oracle停止expdp/impdp导入导出

平时导入导出时由于命令错误想终止操作,于是就按ctr + c 中进入export交互界面,然后exit退出然后查看操作系统进程发现没有expdp进程了以为就是停掉了,但发现导出的dmp文件还在一直增加,其实任务并没有停止。正确方法1.查看视图dba_datapump_jobsselect job_name,state from dba_datapump_jobs;发现任务确...

2020-03-02 18:07:38 2428

空空如也

空空如也

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

TA关注的人

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