
后端码事
文章平均质量分 77
Java 技术补略
windwant
公众号【后端码事】
展开
-
MySql InnoDB 存储引擎表优化
适时的使用 OPTIMIZE TABLE 语句来重组表(表数据到达一定的量,或者有了较大的数据增长之后),压缩浪费的表空间。这是在其它优化技术不可用的情况下最直接的方法。OPTIMIZE TABLE 语句通过拷贝表数据并重建表索引,使得索引数据更加紧凑,减少空间碎片。语句的执行效果会因表的不同而不同。过大的表或者过大的索引及初次添加大量数据的情况下都会使得这一操作变慢。原创 2024-04-10 11:47:29 · 1232 阅读 · 0 评论 -
Java也可以像python般range出连续集合
Java lamada:IntStream--range(int startInclusive, int endExclusive):前包后不包IntStream.range(0, 10).forEach(System.out::print);输出:0123456789--rangeClosed(int startInclusive, int endInclusive):前后全包...原创 2020-03-12 19:26:00 · 74 阅读 · 0 评论 -
关于 Executor 和 ExecutorService
一、Executor:是一个接口用于执行提交的任务解耦任务提交和执行(线程的创建及调度)Executor的实现可以根据实际需求延展不同的逻辑:1、对于提交的任务同步或者异步执行,如下同步执行:class ThreadPerTaskExecutor implements Executor { public void execute(Runnable r) { ...原创 2020-02-28 13:04:00 · 54 阅读 · 0 评论 -
文本编码范围
ASCII < latin1 < GB2312 < GBK < GB18030Unicode(UTF-8、UTF-16等)原创 2020-03-16 01:37:00 · 59 阅读 · 0 评论 -
Java Lamada
Collection:->stream:返回一个以 colleciotn 元素为数据源的数据流。-->map: 入参Function 对象,将此流中的元素依次作用于传入的Function,然后返回新的数据流。示例:List<String> list = new ArrayList<>(); list.add("1"); ...原创 2020-02-27 13:13:00 · 43 阅读 · 0 评论 -
Nacos 服务发现,注册及管理
NacosNacos(官网:https://nacos.io) 发现,注册及管理。Nacos 支持发现,配置及管理几乎所有类型的服务:Kubernetes ServicegRPC| Dubbo RPC ServiceSpring Cloud RESTful ServiceNacos关键特性:服务发现及健康检查Nacos 支持基于DNS方式及RPC方式的服务发现。...原创 2020-03-02 15:29:00 · 56 阅读 · 0 评论 -
TCP连接性能指标之TCP关闭过程(四次挥手)
TCP关闭过程(四次挥手):ESTABLISHED: 当前建立连接状态CLOSE_WAIT:Server端收到来自Client端的FIN包后,发送ACK回Client端,进入CLOSE_WAIT 状态。LAST_ACK:同时Server端向上层应用告知客户端关闭消息,发送FIN包回Client端,然后进入LAST_ACK阶段,等待客户端ACK。CLOSED:Server端收到Clien...原创 2020-03-12 01:39:00 · 85 阅读 · 0 评论 -
NUMA 平台
What is NUMA?This question can be answered from a couple of perspectives: the hardware view and the Linux software view.From the hardware perspective, a NUMA system is a computer platform that comp...原创 2020-02-23 12:43:00 · 50 阅读 · 0 评论 -
轻量级熔断降级框架 alibaba sentinel 应用
一、简介:wiki:https://github.com/alibaba/Sentinel/wiki选择:♥ 开源,成熟(功能完备、实际应用),活跃(功能维护及拓展)♥更轻量:依赖资源少;api方式或者注解方式资源定义;提供扩展入口(自定义slot规则)♥性能损耗小:只有在业务单机量级超过 25W QPS 的时候才会有一些显著的影响(5% - 10% 左右)♥♥资源,规则分离:...原创 2020-01-13 12:34:00 · 61 阅读 · 0 评论 -
基于spring-boot、grpc、zookeeper的分布式微服务架构
总览:开源、高性能、多语言、跨平台、易扩展rpc框架 。Protocol Buffers 使用默认使用protocol buffers,Google 开源的成熟序列化机制:文件格式:.proto 文本文件.程序文件生成:官方提供的 protoc 程序生成目标程序文件。示例定义:通信数据格式:message Person { string name = 1; int3...原创 2020-02-19 00:14:00 · 62 阅读 · 0 评论 -
Java 11 新垃圾回收器 ZGC
可伸缩、低延迟的垃圾回收器GC 暂停时间不超过 10ms堆管理容量范围(小M级别,大到T级别)对应用吞吐量影响不超过15%(对比 G1)为进一步的添加新特性和优化做基础默认支持 Linux/x64 系统一、 启用Linux Large PagesZGC 启用Large Pages 是一种对应用高性能的折中(吞吐量、低延迟及启动时间),但是却不会带来明显的弊端。除了在应用启动上需...原创 2020-02-22 18:15:00 · 51 阅读 · 0 评论 -
Java 13 新特性
一、core-libs/java.nio添加 FileSystems.newFileSystem(Path, Map<String, ?>) 方法java.nio.file.FileSystems针对任何将文件内容视作文件系统的文件系统提供者,添加了三个扩展方法:newFileSystem(Path)newFileSystem(Path, Map<String, ...原创 2020-02-22 16:47:00 · 58 阅读 · 0 评论 -
传输控制协议--- Transmission Control Protocol (TCP)
Transmission Control Protocol (TCP)用于网络通信的传输控制和网络协议套件,包括很多协议,其中最主要的是TCP和IP协议。TCP/IP属于UNIX类系统的内置协议,被广泛应用于网络通信,并且已然成为网络传输的标准。即使是对于拥有专有网络协议的网络操作系统,如Netware。IP协议用于处理数据包,TCP则主要用于网络连接的建立及数据的传输,保障数据包的的可靠...原创 2019-03-10 00:29:00 · 74 阅读 · 0 评论 -
spring boot 使用及最佳实践
一、Spring boot的使用1. 使用maven进行构建用户可以通过继承spring-boot-starter-parent来获取默认的依赖。默认java1.8编译级别默认UTF-8编码设置默认的DependencyManagement,继承与spring-boot-dependencies pom文件,用于管理常用依赖及版本。后续使用添加maven依赖可以省略version信息...原创 2019-03-10 21:39:00 · 59 阅读 · 0 评论 -
ThreadPoolExecutor 使用说明
它是一个ExecutorService,使用线程池中的线程执行提交的任务。通常我们使用 Executors 框架,定义使用。一、线程池主要用来解决两类问题:1、通过缓存一定数量的可用线程,避免频繁的线程创建,销毁,来提升执行大量异步任务的性能。2、资源管理,包括线程及任务。同时也维护一些诸如完成任务数等统计数据。为了能够获得更广泛的适用性,此类提供了多个可调整的参数及扩展性钩子,但是,开...原创 2019-03-14 13:46:00 · 60 阅读 · 0 评论 -
alibaba/Sentinel 分布式 系统流量防卫兵
Sentinel: 分布式系统的流量防卫兵Sentinel 是什么?随着微服务的流行,服务和服务之间的稳定性变得越来越重要。Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。Sentinel 具有以下特征:丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范...原创 2019-01-26 12:20:00 · 53 阅读 · 0 评论 -
leetcode 一些算法题及答案
1. 两数之和给定一个整数数组 nums 和一个目标值 target,请你在该数组中找出和为目标值的那 两个 整数,并返回他们的数组下标。你可以假设每种输入只会对应一个答案。但是,你不能重复利用这个数组中同样的元素。示例:给定 nums = [2, 7, 11, 15], target = 9因为 nums[0] + nums[1] = 2 + 7 = 9所以返回 [0, 1]...原创 2019-02-28 16:38:00 · 54 阅读 · 0 评论 -
nginx 定义的一些状态码
ngx_string(ngx_http_error_494_page), /* 494, request header too large */ ngx_string(ngx_http_error_495_page), /* 495, https certificate error */ ngx_string(ngx_http_error_496_page), /* 496,...原创 2019-03-03 09:21:04 · 48 阅读 · 0 评论 -
网络设备性能指标之pps
基本概念:Bps:Byte per second 每秒传输多少字节bps: bits per second 每秒传输多少位 ,这个也叫做端口速率pps:Packet Per Second(包每秒),网络设备的转发性能以“包转发性能”来表示,即设备在单位时间内能够处理多少个“包”,这决定了设备转发能力的强弱。mbps:Million bits per second = 1,000,000 ...原创 2020-03-12 00:42:00 · 221 阅读 · 0 评论 -
Apollo(阿波罗)配置中心Java客户端使用指南使用指南
Apollo(阿波罗)是携程框架部门研发的分布式配置中心,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端,并且具备规范的权限、流程治理等特性,适用于微服务配置管理场景。一、准备工作二、Maven Dependency三、客户端用法3.1 API使用方式3.1.1 获取默认namespace的配置3.1.2 监听配置变化事件...原创 2020-03-16 09:53:00 · 282 阅读 · 0 评论 -
Azkaban 2.5 Documentation
OverviewAzkaban was implemented at LinkedIn to solve the problem of Hadoop job dependencies. We had jobs that needed to run in order, from ETL jobs to data analytics products.Initially a single ...原创 2020-03-22 01:26:00 · 376 阅读 · 0 评论 -
Apache Thrift 白皮书
介绍:轻量级、跨语言。简洁的抽象和实现:数据传输、序列化、应用逻辑处理。IDL及代码生成系统。基本架构图如下:28种语言支持:28 programming languages。支持客户端及服务端版本非原子性升级。Thrift whitepaper一、IDL1、基本数据类型:• bool A boolean value, true or false• byte A sign...原创 2020-04-12 17:13:00 · 100 阅读 · 0 评论 -
服务器网络问题分析之丢包
一、关于 ethtool:获取设备信息及诊断信息获取设备统计数据控制因特网设备速率(speed)、全双工(duplex)、自动协商(autonegotiation)、流控(flow control)控制 checksum offload 及其它设备 offload控制 DMA ring sizes 及中断 moderationmultiqueue 设备的接收队...原创 2020-04-15 14:11:00 · 71 阅读 · 0 评论 -
线上问题排查
1、找到进程idjps:ps aux | grep javatop:2、找到线程pidtop -Hp 进程pid快捷键“R”进行排序,可以通过快捷键“H”查看帮助信息。快捷键“1” 查看每个cpu使用情况:3、查看gc情况jstat -gc 进程pid也可以加额外的参数循环输出:jstat -gc 进程pid 间隔时间 输出次数4、线程pid转化为进制pri...原创 2020-04-27 13:04:00 · 39 阅读 · 0 评论 -
关于Java 线程的运行状态
首先需要说明的是,所指状态为JVM线程状态,而非操作系统线程状态。同一时间,一个线程只会存在于一种状态。线程状态,enum State:1、NEW已创建,未运行。2、RUNNABLE线程于JVM中运行中。3、BLOCKED阻塞等待 monitor lock 以进入或重新进入 synchronized 同步块或方法,由Object.wait 触发。4、WAITING触发方法:O...原创 2020-04-19 15:37:00 · 38 阅读 · 0 评论 -
rsync 运维利器,同步工具
NAME rsync - faster, flexible replacement for rcpSYNOPSIS rsync [OPTION]... SRC [SRC]... DEST rsync [OPTION]... SRC [SRC]... [USER@]HOST:DEST rsync [OPTION]... SRC [SRC]....原创 2020-03-19 19:22:00 · 418 阅读 · 0 评论 -
Redis redis-cli 你需要知道这些有用的命令
一、--stat 输出当前 redis 服务节点状态命令:redis-cli -h host -p port --stat输出:连续输出,默认interval 1s键数 | 内存 | 客户端数 | 阻塞数 | 累积请求(增加请求) | 连接数二、--bigkeys 扫描大key命令:redis-cli -hhost-pport--bigkeys输出:执行 scan 操...原创 2020-03-29 01:54:00 · 79 阅读 · 0 评论 -
关于Guava ForwardingMap
ForwardingMap是什么?ForwardingMap 是一个装饰器负责把所有的map操作转发到所代理的map。操作转发是直接的,不经任何中间操作的。对方法的覆写要慎重,比如关联的put和putAll,必须同时处理。不保证线程安全示例:Map map = new HashMap();ForwardingMap fmap = new ForwardingMap() { ...原创 2020-04-18 16:33:00 · 64 阅读 · 0 评论 -
关于 ThreadLocalRandom 随机数生成器
ThreadLocalRandom线程安全随机数获取。示例随机整数:java.util.concurrent.ThreadLocalRandom.current().nextInt();线程Thread类中的三个变量:threadLocalRandomSeed、threadLocalRandomProbe、threadLocalRandomSecondarySeed图1这三个字段是由...原创 2020-04-19 14:20:00 · 61 阅读 · 0 评论 -
线上问题分析之java dump文件生成
一、查看java进程jpsorps aux | grep java二、生成dump文件jmap -dump:live,format=b,file=xxxx.bin 进程ID三、查看dump文件:jhat启动分析web服务: jhat -J-mx512m xxxx.binReading from xxxx.bin...Dump file created Thu...原创 2020-03-19 23:21:00 · 63 阅读 · 0 评论 -
关于 redis 内存分析,内存优化
对于 redis 来说,什么是最重要的?毋庸置疑,是内存。一、reids 内存分析redis 内存使用情况:info memory示例:可以看到,当前节点内存碎片率为 226893824/209522728 ≈ 1.08,使用的内存分配器是 jemalloc。used_memory_rss 通常情况下是大于used_memory 的,因为内存碎片的存在。但是当操作系统把 re...原创 2020-05-16 11:35:00 · 60 阅读 · 0 评论 -
今天,你遇到redis线上连接超时了吗?
一封报警邮件,大量服务节点 redis 响应超时。又来,好烦。redis 响应变慢,查看日志,发现大量 TimeoutException。大量TimeoutException,说明当前redis服务节点上已经堆积了大量的连接查询,超出redis服务能力,再次尝试连接的客户端,redis 服务节点直接拒绝,抛出错误。那到底是什么导致了这种情况的发生呢?总结起来,我们可以从以下几方面进行关...原创 2020-05-17 00:01:00 · 52 阅读 · 0 评论 -
关于 ThreadLocal 你需要知道的几点
一、ThreadLocal是什么?一个类对象类型,提供属线程本地变量,也就是同一个变量对不同线程保存了不同的值,但是和线程自身定义的自属变量不同。通常以私有静态类型定义,用以保存特定线程特定状态属性。线程存活期间保持对ThreadLocal的弱引用,线程结束后,则变量会被垃圾回收器回收。二、ThreadLocal使用//定义一个ThreadLocal变量用以存储不同线...原创 2020-04-18 23:27:00 · 49 阅读 · 0 评论 -
所谓并发编程,所谓有其三
一、高速缓存的两面性cpu->高速缓存->内存高速缓存:平衡cpu和内存之间的速度差异,变量从内存首先加载到高速缓存然后以供cpu计算使用。对于同一个cpu来说,存储于其高速缓存中的变量,对于使用其时间碎片的线程来说,都是原子可见的,任何的变更都能及时的感知到其所被使用的线程。但是对于不同cpu来说,每个cpu都有对应的高速缓存,对于使用不同cpu时间碎片的线程来说,如果没有...原创 2020-05-10 13:47:00 · 39 阅读 · 0 评论 -
怎样才是线程安全的?
一、final 一下final 关键字,具有不可变性。所以并发中对于其的使用时线程安全的。final 可以修饰变量,方法及类对象。不可变:不可被修改,不可被继承,不可被覆盖,重写等。二、加锁锁的本质就是一个同步块,处于同步块儿中的操作可以认为是线程安全的。那怎么加锁呢?1、synchronized 关键字底层其实对应的是用 monitorenter 及 monitorexit 字...原创 2020-05-10 15:09:00 · 49 阅读 · 0 评论 -
白话分解入门操作系统到 Java
一、完成一个任务需要什么?时间 + 资源 + 处理能力时间就是时间。资源就是资源。处理能力就是能够利用时间和资源完成任务的主体。二、关于操作系统处理能力就是cpu。资源就是存储。时间就是cpu的时间。cpu的处理能力:很快很快。cpu需要获取存储资源:这个过程我们称之为IO,IO很快,但是和cpu相比,它很慢,很慢。所以,就像一个思想快于嘴巴的人,想要表达的时候,通常都会...原创 2020-05-10 00:29:00 · 45 阅读 · 0 评论 -
从 findbugs-maven-plugin 到 spotbugs-maven-plugin 帮你找到代码中的bug
一、findbugs-maven-plugin介绍:Status: Since Findbugs is no longer maintained, please use Spotbugs which has a Maven plugin. It is located athere.Please Note - This version is using Findbugs 3.0.1...原创 2020-04-08 23:01:00 · 100 阅读 · 0 评论 -
关于redis,你需要了解的几点!
一、关于 redis key:1、是二进制安全的,也就是说,你可以使用任何形式的二进制序列来作为key,比如一个string,或者一个jpg图片的数据,需要说明的是,空字符串也是一个有效的key。2、不建议使用过长的key,影响内存占用及数据查性能,对于过长的key,可以通过hash(例如SHA1)处理转换。3、建议使用有意义及统一格式的key。4、最大允许key大小为512M。二、S...原创 2020-05-15 18:58:00 · 43 阅读 · 0 评论 -
关于Guava Cache 需要注意的几点
一、元素过期策略expireAfterWrite(long duration, TimeUnit unit):在元素【写入】或者【值更新】后的一段时间之后,自动移除元素。当duration=0时,意味着缓存写入的元素会立刻过期;过期周期不可为负数,否则会抛IllegalArgumentException异常过期周期会转化为nano,TimeUnit.NANOSECONDS.c...原创 2020-03-27 22:23:00 · 43 阅读 · 0 评论 -
Impala 高性能、低延迟的大数据查询引擎
Impala是什么?Impala提供对大数据更快速,交互式 SQL查询。Impala支持对存储在HDFS、HBase及S3等数据查询。Impala使用和Hive相同的元数据、SQL定义、ODBC驱动及用户接口。Impala提供实时、批数据的统一查询平台。Impala是对现有大数据查询工具的补充,不能替代基于Hive的MapReduce批处理任务框架(适用于耗时长的批处理任务,例如ETL...原创 2020-05-05 23:29:00 · 63 阅读 · 0 评论