Java
文章平均质量分 89
菠萝-琪琪
这个作者很懒,什么都没留下…
展开
-
常用SQL优化总结
然而,如果在编译时建立访问计划,变量的值还是未知的,因而无法作为索引选择的输入项。14)并不是所有索引对查询都有效,SQL是根据表中数据来进行查询优化的,当索引列有大量数据重复时,SQL查询可能不会去利用索引,如一表中有字段sex,male、female几乎各一半,那么即使在sex上建了索引也对查询效率起不了作用。11)在使用索引字段作为条件时,如果该索引是复合索引,那么必须使用到该索引中的第一个字段作为条件时才能保证系统使用该索引,否则该索引将不会被使用,并且应尽可能的让字段顺序与索引顺序相一致。原创 2022-10-08 22:20:04 · 132 阅读 · 0 评论 -
Sentinel 深度分析
流控配置:资源名的填写分feign/dubbo不同方式:feign 填写请求地址 dubbo 填写sentinel注解的value值@SentinelResource(value = "circle.checkPopulation", blockHandler = "checkPopulation", blockHandlerClass = {BlockExceptionHandler.class})有种更加简单的方式,直接通过簇点链路菜单看各个资源地址,直接进行流控配置针对来原创 2022-05-17 14:09:10 · 523 阅读 · 0 评论 -
JMeter实用教程【二】-BeanShell的使用
为什么要使用BeanShell之前在做客服域相关接口生产环境压测的时候,遇到一个问题,那就是签名如何生成,网关的同学是有提供相关签名计算的jar包,如何使用提供的jar包在JMeter中生成签名?BeanShell这个小工具可以帮到你。BeanShell简介Beanshell 是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。BeanShell执行 标准Java语句和表达式,另外包括一些脚本命令和语法。它将脚本化对象看作简单闭包方法(s.原创 2021-06-01 10:52:23 · 1820 阅读 · 2 评论 -
Java11 ZGC垃圾回收器
一、简介Java 11包含一个全新的垃圾收集器--ZGC,它由Oracle开发,承诺在数TB的堆上具有非常低的暂停时间。 在本文中,我们将介绍开发新GC的动机,技术概述以及由ZGC开启的一些可能性。那么为什么需要新GC呢?毕竟Java 10已经有四种发布多年的垃圾收集器,并且几乎都是无限可调的。 换个角度看,G1是2006年时引入Hotspot VM的。当时最大的AWS实例有1 vCPU和1.7GB内存,而今天AWS很乐意租给你一个x1e.32xlarge实例,该类型实例有128个vCPU和3,90原创 2020-12-29 13:33:30 · 1141 阅读 · 0 评论 -
雪花算法生成简化数据中心和机器ID获取
/** * @program: simple_tools * @description: 雪花算法代码实现 * @author: qiqi **/public class IdWorker { // 时间起始标记点,作为基准,一般取系统的最近时间(一旦确定不能变动) private final static long twepoch = 1288834974657L; // 机器标识位数 private final static long workerIdBits原创 2020-06-29 18:15:53 · 5479 阅读 · 4 评论 -
HashMap 死循定位以及JDK8对它的优化
HashMap 是非线程安全的,在多线程处理场景下,严禁使用。多线程要用ConcurrentHashMap。 大家都知道,相比于HashTable,HashMap是一个非线程安全的实现类。为什么说HashMap是非线程安全的呢?因为在高并发情况下,HashMap在一些操作上会存在问题,如死循环问题,导致CPU使用率较高。下面来看下怎么复现这个问题。如下代码所示,我们创建10个线程,这10个线程并发向一个HashMap种添加元素。package com.light.swordimport java..原创 2020-06-28 22:42:37 · 333 阅读 · 0 评论 -
Shardingjdbc的深度定制化过程
公司原先使用的数据库中间件是mycat,但是mycat由于很早就开始不维护了,所以我们再使用过程中出现了很多问题都无法的到解决,如果各位同学有兴趣可以再压测时观察下mycat的堆栈活动,ygc是非常频繁的,并且很不稳定,当时考虑切换到Sharding-Proxy上面去,同样是数据库中间件这种方案我们内部认为是改动最小的。可是事实证明我们错了,Sharding-Proxy由于也是刚开源不久的东西,其实也存在不少BUG,虽然社区活跃但是官方文档实在太不全了,导致我们遇到每一个问题都需要花很大的精力去排查、定原创 2020-05-26 14:47:47 · 560 阅读 · 0 评论 -
阿里巴巴Arthas诊断工具平台化改造
Arthas是一款开源且非常棒的在线诊断工具,阿里巴巴在16年就出品了,经过几年的功能迭代以及代码重构又出了不少新的诊断命令在Github上面搜索Arthas即可下载源码,原生的Arthas实现了TunnelClient和TunnelServer的交互,但是总的来说还是单机版本的,在大企业中使用的时候避免不了需要封装改造下,不可能每次监控都去手动输入一个registerId,下面就介绍我们对他...原创 2020-04-24 22:27:27 · 1188 阅读 · 0 评论 -
Java-ReadWriteLock读写锁的使用
Java并发包中ReadWriteLock是一个接口,主要有两个方法,如下:public interface ReadWriteLock { /** * Returns the lock used for reading. * * @return the lock used for reading */ Lock readLock();...原创 2019-03-13 16:26:08 · 544 阅读 · 0 评论 -
redis集群使用算法:一致性哈希算法原理
一致性Hash算法背景 一致性哈希算法在1997年由麻省理工学院的Karger等人在解决分布式Cache中提出的,设计目标是为了解决因特网中的热点(Hot spot)问题,初衷和CARP十分类似。一致性哈希修正了CARP使用的简单哈希算法带来的问题,使得DHT可以在P2P环境中真正得到应用。 但现在一致性hash算法在分布式系统中也得到了广泛应用,研究过memcached缓存数据库的人...原创 2019-03-07 15:05:52 · 868 阅读 · 0 评论 -
阿里面试题汇总 2019持续更新
Volatile的内存语义:当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存。当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。Volatile的重排序1、当第二个操作为volatile写操做时,不管第一个操作是什么(普通读写或者volatile读写),都不能进行重排序。这个规则确保volat...转载 2019-02-27 18:23:36 · 2747 阅读 · 1 评论 -
详细讨论Java中偏向锁、轻量级锁及重量级锁实现原理
最近因为工作关系遇到了很多Java并发编程的问题,然后恶补了一下,现在就来说说Java目前的锁实现原理其实在JDK1.5以前的早期版本,还没有那么细粒度完善的锁机制,基本上就一个synchronized打遍天下,但是从JDK1.6之后Oracle对Java锁进行了很大的改动,也就出现了偏向锁/轻量级锁机制和锁的升级/降级机制偏向锁和轻量级锁都属于乐观锁,偏向锁指的是没有其他线程竞争资源,只...原创 2019-01-16 17:32:17 · 2722 阅读 · 5 评论 -
2018年JAVA最新面试题
整理一下2018年java技术要领Top基础篇Top基本功面向对象的特征 final, finally, finalize 的区别 int 和 Integer 有什么区别 重载和重写的区别 抽象类和接口有什么区别 说说反射的用途及实现 说说自定义注解的场景及实现 HTTP 请求的 GET 与 POST 方式的区别 session 与 cookie 区别 s...原创 2018-12-24 11:11:41 · 325 阅读 · 0 评论 -
微服务系统服务跟踪监控-Zipkin配置
Springboot 使用2.0版本后相应的Zipkin也需要使用2.0版本的,官方建议直接在服务器使用命令运行Zipkin,Zipkin官网安装说明1.运行起来后访问http://localhost:9411即可访问到如下界面:2.然后在项目1中POM文件加入:<!-- 服务追踪 --> <!-- https://mvnrepository.com/art...原创 2018-11-18 12:42:44 · 653 阅读 · 0 评论 -
Consul 注册中心集群搭建
简介之前公司一直用的是Eureka 1.X版本,但是自从SpringBoot升级到2.X版本后Eureka团队对外宣布不再开源且Eureka 2.X版本不在维护,这就一下子懵逼了,开始寻找Eureka的替代方案,最终选择使用Consul进行服务发现以及服务管理。网上有很多关于Consul的介绍和对比,我这里也不献丑了,大家搜索的时候可能会经常看到这么一个表格,此表格采摘自:https://...原创 2018-10-17 13:53:42 · 1848 阅读 · 1 评论 -
Java NIO以及其他线程模型原理解析
IO基本概念Linux环境Linux的内核将所有外部设备都可以看做一个文件来操作。那么我们对与外部设备的操作都可以看做对文件进行操作。我们对一个文件的读写,都通过调用内核提供的系统调用;内核给我们返回一个file descriptor(fd,文件描述符)。对一个socket的读写也会有相应的描述符,称为socketfd(socket描述符)。描述符就是一个数字(可以理解为一个索引),指向内...原创 2018-08-06 09:38:18 · 4497 阅读 · 0 评论 -
Spring + Quatz 组合提供动态定时任务
我们都知道Quatz配合Spring可以进行定时任务的功能开发,但是大家是否知道如何提供动态定时功能呢?在不重启项目的情况下提供接口给其他调用者调用实现动态生成定时任务 公司因为已经开始实施微服务,所以对各个服务拆分已经划的比较细致,具体微服务架构实施会在下一个博客放出,此文只讨论动态定时功能,我们公司把定时功能已经独立成了定时组件 定时组件提供了2个接口,一个动态添加定时任务...原创 2018-06-06 01:12:10 · 1239 阅读 · 1 评论