自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

qq_34446716的博客

努力学习,努力赚钱

  • 博客(928)
  • 资源 (1)
  • 收藏
  • 关注

原创 一文读懂,网联和银联的区别

1、银联是从纸币发展到银行卡阶段,为满足各家银行互联互通交易而产生的,比如工商银行部署的刷卡pos机只能刷工商银行的卡,而不能刷建行的卡,其他银行也一样,所以出现了银联。2、网联,是互联网支付时代,也为各家第三方支付公司比如微信、支付宝、翼支付、宝付支付等等第三方支付公司互联互通交易。而网联与银联同等地位,主要负责线上(互联网)业务。由于银联快捷支付和新兴的云闪付业务也涉及线上业务,所以大家会有这个疑问:网联,银联怎么界定业务边界?,要么接入网联做线上业务,只要接入央行的亲儿子即可,管他是老大还是老二。

2023-06-07 23:58:57 2220

原创 google guava源码分析之eventbus(一)

测试

2022-05-04 17:20:47 297

原创 HBase环境搭建

使用StandAlone的方式进行搭建需要注意保证本地文件夹已经建好http://localhost:16010/master-status#memoryStats访问该地址有相应的页面信息H

2022-04-06 19:52:28 1238

原创 彻底弄懂OAuth

​OAuth简介OAuth是一个开放的标准,能提供一种安全的API授权,使第三方应用不需要密码账号,就可以申请获得该用户资源的授权。1.使用场景例子如果一个用户需要两项服务:图片在线存储服务A、图片在线打印服务B。由于服务A与服务B是由两家不同的服务提供商提供的,所以用户在这两家服务提供商的网站上各自注册了两个用户,假设这两个用户名、密码都各不相同。当用户要使用服务B打印存储在服务A上的图片时,用户该如何处理?方法一:用户先将待打印的图片从服务A上下载下来并上传到服务B上打印,这种方式安全但处理比

2022-04-06 19:50:28 2064

原创 系统之美Think in System

testTODO

2022-01-17 22:44:54 108

原创 MySQL各种Pool总结

ChangeBufferChangeBuffer用的是BufferPool里的内存我们都知道MySQL为了降低随机写的开销,把所有的写操作暂时放在redolog里面(其实是先写入redolog buffer中),然后批量写,减小了随机写的IO,那么当我们读的时候不在内存,或者需要update的时候怎么办呢,其实ChangeBuffer就是降低了随机读的开销(相对于唯一索引不能使用ChangeBuffer而言)。ChangeBuffer不适合那种写多读少的情况,ChangeBuffer会merge到磁

2021-09-15 08:29:00 657

原创 线程池最佳实践

1、拒绝策略可以用一个兜底的线程池来执行自定义拒绝策略实现该接口,重写该方法,在这个方法中用兜底的线程池去执行public interface RejectedExecutionHandler { void rejectedExecution(Runnable r, ThreadPoolExecutor executor);}2、每个业务线一个线程池,每个线程池有自己的名字,排除问题起来简单3、自定义参数来建立线程池,不要使用JDK自带的,类似于无界队列,会OOM4、一般设

2021-09-13 21:06:18 766

原创 Actor模型

Actor模型Actor模型本质上是一种计算模型,基本的计算单元称为Actor,换言之,在Actor模型中,所有的计算都是在Actor中执行的。在面向对象编程里面,一切都是对象;在Actor模型里,一切都是Actor,并且Actor之间是完全隔离的,不会共享任何变量。当看到“不共享任何变量”的时候,相信你一定会眼前一亮,并发问题的根源就在于共享变量,而Actor模型中Actor之间不共享变量,那用Actor模型解决并发问题,一定是相当顺手。的确是这样,所以很多人就把Actor模型定义为一种并发计算模型。

2021-09-13 13:41:58 1094

转载 cpu使用率过高和jvm old占用过高排查过程

CPU过高排查过程后序待补充

2021-09-12 19:16:58 160

原创 浅谈JVM调优

JVM调优小白,理论知识走一波首先如果条件允许(内存在8G以上)选择G1,领先PN+CMS和PS+PO不只是一两个数量级。但是我们更期待ZGC的到来,在ZGC成为stable之前还是得有一点点了解。吞吐量优先,选择PS+PO低延迟选择PN+CMS几个重要的参数-XX:MaxTenuringThreshold=2 表示该对象经过多少次GC后晋升到老年代,但是JVM在进行GC时也会判断年轻代一半以上的对象的最小年龄,把大于该年龄的晋升到老年代。-XX:ParallelGCThreads=4 .

2021-09-12 17:34:39 223 1

原创 序列化常见工具

什么是序列化和反序列化序列化:将对象转成二进制进行传输或者持久化反序列化:将二进制转成对象常见的序列化工具1. Java原生序列化 Serializable只要让类实现 Serializable 接口就行,序列化具体的实现是由ObjectOutputStream和ObjectInputStream来实现的。注意以下几个点:1、serialVersionUID 一定要自己写,不要省略,不然会导致无法序列化或者修改之后报错如下出现兼容性问题:java.io.InvalidClassExce.

2021-09-11 15:39:16 3061

原创 方法区概述

存储的是什么方法区是非堆区,独立于堆的内存空间,受本地内存限制,不建议指定方法区大小,因为你无法掌握到底有多少个类被加载,同样的是线程共享的存储有:类元信息(类模板信息)常量静态变量即时编译后的代码缓存堆、栈、方法区的关系如何解决这些OOM通过堆dump,拿到dump文件,判断到底是内存泄露还是内存溢出如果是内存泄露找出GC Roots的引用链,存w...

2021-09-06 21:00:32 62

原创 Redis那些不熟悉的底层知识点

要透过现象看本质~redis的数据类型和对应的底层数据结构大key问题当value为字符串时一般指单个字符串超过1M,如果是其他的集合类型那么指的是集合元素过多根据如下的时间复杂度,我们知道查询的一个数的O(n)的时间复杂度是很可怕的redis的string类型底层Entry -> RedisObject -> SDSEntry 指向RedisObject,RedisObject 指向SDSRedis 扩张采用渐进式hash。1、在原先的基础上增加一倍2、拷贝原.

2021-09-06 19:27:42 121

原创 源代码中help GC的联想

今天在看AQS的源码时看到了这段代码,有个注释,写了help GC,联想到实习的时候,组内有同学将使用完的对象也置为了null,到底这个置为null就不需要GC了吗,其实和C/C++ 的free不一样,你置为了null可以在短时间内进行gc,并不是不需要gc就释放了。你有一个方法很长,里面定义了一个map对象,这个对象内存占用很大,如果该方法没有结束,那么这个map是无法进行回收的,此时如果想要在方法没有返回前回收这个没有用的map,就可以将map置为null来提前进行gc。java.util.conc

2021-09-06 17:00:06 566 2

原创 24点游戏输出表达式

带表达式输出的24点游戏,如果只是判断能不能组成24点,那么比较简单,输出所有的表达式不能将中间值保存到list中,需要额外的一个变量去保存中间结果,然后依次保存即可/** * @Author 17912 * @Date 2021-9-6-006 9:53:24 * @Version 1.0 */import java.util.ArrayList;import java.util.Random;public class Main { public static void

2021-09-06 10:03:00 594

原创 Docker 和k8s

DockerDocker比较虚拟机传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程;而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。Docker的本质Docker容器本质上是宿主机上的进程。Docker 通过namespace实现了资源隔离,通过cgroups实现资源限制,通过写时复制机制(Copy-on-write)实现了高效的文件操作。/* 定义一个给 clone 用的栈,栈大小1M

2021-07-12 20:13:09 205

原创 线程池相关

主池控制状态ctl是一个原子整数,打包了两个概念字段workerCount,表示有效线程数runState,表示是否正在运行,正在关闭等为了打包成一个int,我们限制workerCount为(2^29 )-1(约 5 亿)个线程而不是 (2^31)-1(20 亿)个其他可表示的线程。 如果这在未来成为一个问题,可以将变量更改为 AtomicLong,并调整下面的移位/掩码常量。 但是在需要之前,这段代码使用 int 会更快更简单。 workerCount 是允许启动和不允许停止的工人数量。 该值可能与实际的

2021-07-10 00:17:14 276

原创 BIO、NIO、AIO

第一章 BIO、NIO、AIO课程介绍1.1 课程说明​ 在Java的软件设计开发中,通信架构是不可避免的,我们在进行不同系统或者不同进程之间的数据交互,或者在高并发下的通信场景下都需要用到网络通信相关的技术,对于一些经验丰富的程序员来说,Java早期的网络通信架构存在一些缺陷,其中最令人恼火的是基于性能低下的同步阻塞式的I/O通信(BIO),随着互联网开发下通信性能的高要求,Java在2002年开始支持了非阻塞式的I/O通信技术(NIO)。大多数读者在学习网络通信相关技术的时候,都只是接触到零碎的

2021-06-18 22:12:35 329

原创 Linux命令

关机/重启/注销常用命令作用shutdown -h now即刻关机shutdown -h 1010分钟后关机shutdown -h 11:0011:00关机shutdown -h +10预定时间关机(10分钟后)shutdown -c取消指定时间关机shutdown -r now重启shutdown -r 1010分钟之后重启shutdown -r 11:00定时重启reboot重启init 6重启init

2021-06-09 11:27:36 124

原创 小技巧收集

1、网页视频加速https://blog.csdn.net/qq_40306266/article/details/104060801document.querySelector('video').defaultPlaybackRate = 2.0;//默认两倍速播放document.querySelector('video').play();/* 设置当前值 */document.querySelector('video').playbackRate = 1.5; //此值设置当前的播放倍

2021-05-30 19:49:53 249

原创 MySQL知识点

1、在建表时如果是varchar,char,text等字符类型的话,建完我们可以发现后面有个collate类型,是不是觉得很好奇呢,其实不难理解,该字段是用来指明是否忽略大小写的。我们一般用utf8_bin 表示区分大小写,并且二进制数据存储,如果用后面带cs的,就不会区分大小写了,亲测过utf8_bin将字符串中的每一个字符用二进制数据存储,区分大小写。utf8_genera_ci不区分大小写,ci是case insensitive的缩写,即一般大小写不敏感。insensitive ; 中文解释

2021-05-28 20:57:26 125

原创 测试指令重排

我们都知道语句之间可能存在指令重排,那么我们怎么知道语句发生了重排了,as - if-serial 就像是串行重排的两个条件:1、两条语句前后之间不依赖2、重排之后的执行结果和单线程一样看代码验证发生了指令重排两个线程在正常情况下,怎么运行都不会发生x==0&& y == 0 那么只有唯一的一种指令重排情况,需要运行的时间有点长。package 高并发.mashibinggaobingfa;import java.util.concurrent.CountDownLatch

2021-05-21 00:08:41 238

原创 三、每个查询的最大异或值(BiWeekly Contest 50)

题目描述:给你一个 有序 数组 nums ,它由 n 个非负整数组成,同时给你一个整数 maximumBit 。你需要执行以下查询 n 次:找到一个非负整数 k < 2maximumBit ,使得 nums[0] XOR nums[1] XOR … XOR nums[nums.length-1] XOR k 的结果 最大化 。k 是第 i 个查询的答案。从当前数组 nums 删除 最后 一个元素。请你返回一个数组 answer ,其中 answer[i]是第 i 个查询的结果。示例 1:输

2021-05-04 11:31:37 102

原创 一、最少操作使数组递增(BiWeekly Contest 50)

题目描述:给你一个整数数组 nums (下标从 0 开始)。每一次操作中,你可以选择数组中一个元素,并将它增加 1 。比方说,如果 nums = [1,2,3] ,你可以选择增加 nums[1] 得到 nums = [1,3,3] 。请你返回使 nums 严格递增 的 最少 操作次数。我们称数组 nums 是 严格递增的 ,当它满足对于所有的 0 <= i < nums.length - 1 都有 nums[i] < nums[i+1] 。一个长度为 1 的数组是严格递增的一种特殊

2021-05-04 11:29:02 840

原创 二、统计一个圆中点的数目(BiWeekly Contest 50)

题目描述:leetcode链接还是比较简单的,看题目给的提示数字不大,可以直接平方,不用开平方进行计算,一些简单的函数实现可以不调用系统自带的函数,尽量使用增强for循环代码class Solution { public int[] countPoints(int[][] points, int[][] queries) { int[] res = new int[queries.length]; for (int i = 0; i < queri

2021-05-04 11:26:36 102

原创 2021-04-21

第一章 ElasticSearch入门篇第一节 ElasticSearch概述1.1ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTfulweb接口。ElasticSearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。构建在全文检索开源软件Lucene之上的Elasticsearch,不仅能对海量规模的数据完成分布式索

2021-04-21 17:05:01 480

转载 Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

转载Java动态代理机制详解(JDK 和CGLIB,Javassist,ASM)

2021-04-17 20:10:03 104

转载 网络的各个层的协议

转载DNS使用的是UDP协议网络各个层的协议HTTP协议老王喜欢看岛国小片,时常泡在论坛上和网友交流最新资讯,老王是通过浏览器浏览网页的,而浏览器是借助HTTP协议与论坛服务器沟通交流。FTP协议老王购买了该网站的会员,可以无限制下载高清小片,老王是通过浏览器下载影音文件的,浏览器是借助FTP协议与文件下载服务器沟通交流。SMTP协议近10个G的高清文件,老王心潮澎湃打开文件,傻了,“孙悟空大战白骨精”映入眼帘。。。老王怒了,打开电子邮件客户端写投诉邮件,怒斥不良网站的欺诈行为!电子邮件客

2021-04-17 19:39:50 527

原创 1、接口的幂等性

一、什么是幂等性简单来说就是一次操作和多次操作结果一致,对系统不会产生任何影响。幂等性: 多次调用方法或者接口不会改变业务状态,可以保证重复调用的结果和单次调用的结果一致。二、什么情况下回产生幂等性1、前端重复提交用户注册,用户创建商品等操作,前端都会提交一些数据给后台服务,后台需要根据用户提交的数据在数据库中创建记录。如果用户不小心多点了几次,后端收到了好几次提交,这时就会在数据库中重复创建了多条记录。这就是接口没有幂等性带来的 bug。2、接口超时重试对于给第三方调用的接口,有可

2021-04-17 00:05:46 118

原创 数据库date比较

前端穿进来的我们用import com.xiaoju.automarket.cayenne.common.util.DateUtil;这个类,遇到不正确的可能是Date 转换出的问题 Date start = DateUtils.parseDate(request.getStartDate(), DateUtil.FORMAT_YYYY_MM_DD);

2021-04-15 19:31:28 674

原创 各种配置问题和设置以及开发的坑

comand not found可能build.sh不是执行文件,chmod 777 build.shJava Mac 安装教程JAVA_HOME 查看和配置可能你的JAVA_HOME没有配置,检查一下 echo ${JAVA_HOME}如果没有的话,可能需要配置一下配置文件步骤:首先是open .bash_profile看有没有,没有的话就touch .bash_profile输入的内容如下JAVA_HOME=/Library/Java/JavaVirtualMachines/j

2021-04-13 15:28:12 118

原创 Dubbo Adaptive机制

参考链接就是说可以根据你传进来的参数进行实例化相应的类。

2021-04-11 21:54:50 110

原创 三、最少侧跳次数(Weekly Contest 216)

题目链接dp就可以解决,需要注意的是初始化的时候要注意,区分为当前有石头,那么设置成标志位,这里为max >> 1 防止溢出没有石头,和前面的一样,然后比较从别的位置跳过来大小

2021-04-11 21:16:04 100

原创 Java 逗号分隔字符串

private static final Pattern NAME_SEPARATOR = Pattern.compile("\\s*[,]+\\s*"); String[] names = NAME_SEPARATOR.split(value);value = “1,2,3,4” 。

2021-04-07 21:13:27 733

原创 MySQL 表锁和行锁机制

参考https://blog.csdn.net/xts5701046/article/details/81395958

2021-03-29 21:07:19 67

原创 MySQL几种索引和基本概念

Mysql性能优化:什么是索引下推?MySQL 的覆盖索引与回表Mysql索引整理总结基于InnoDB存储引擎聚簇索引主键会自动创建索引,并且称为聚簇索引,查询条件中含有主键索引的直接就查找到了,因为聚簇索引的叶子节点包含的是整行记录那么有人问了,如果主键呢?三种情况:如果表设置了主键,则主键就是聚簇索引如果表没有主键,则会默认第一个NOT NULL,且唯一(UNIQUE)的列作为聚簇索引以上都没有,则会默认创建一个隐藏的row_id作为聚簇索引InnoDB必须要有至少一个聚簇索引。

2021-03-27 17:51:11 57 1

原创 276、旋转链表

题目描述:给你一个链表的头节点 head ,旋转链表,将链表每个节点向右移动 k 个位置。示例 1:输入:head = [1,2,3,4,5], k = 2输出:[4,5,1,2,3]示例 2:输入:head = [0,1,2], k = 4输出:[2,0,1]提示:链表中节点的数目在范围 [0, 500] 内-100 <= Node.val <= 1000 <= k <= 2 * 109来源:力扣(LeetCode)链接:https://leetcod

2021-03-27 11:55:32 68

原创 Spring原理

06Spring原理讲解1、什么是Spring框架,Spring框架主要包含哪些模块​ Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从

2021-03-23 19:33:43 199

原创 mybatis的update的set

保存一下备用https://blog.csdn.net/qq_39940205/article/details/79517742?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-2.control&dist_request_id=&depth_1-utm_source=distribute.pc_relevant.none-task-blog-BlogCommendFromMa

2021-03-02 11:52:08 202

原创 自己实现RPC调动

技术栈:动态代理的相关知识Spring容器动态注入,获取一个包下的所有类,注入到容器中http请求 post相关方法和工具类使用

2021-02-23 20:32:41 68

第十一章并发上海交大.pdf

<h1>数据库 <h1><h1>数据库 <h1><h1>数据库 <h1><h1>数据库 <h1><h1>数据库 <h1>

2020-07-12

空空如也

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

TA关注的人

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