自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

书唐瑞的博客

www.infuq.com/

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

原创 python逆向切片理解

str = '0123456789'如上,我们有一个数值型字符串,接下来我们分别从正向和逆向两个维度截取数据.str[start:end:step]start表示起始下标end表示结束下标step表示步长下面这个图,表示了正向和逆向下标的值首先我们要说一下方向的事情.不管是正向还是逆向,它们都是有方向的.当我们表示str[2:-3]时,方向是从左向右的当我们表示str[-3:2]时,方向是从右向左的步长step也是有方向的我们先不考虑步长的值,我们先说方向str[::2]

2020-09-20 19:51:13 4521 3

原创 __getitem__与自定义迭代器

一般方式遍历数据#!/usr/bin/env python# -*- coding: utf-8 -*-class Language(object): def __init__(self, languages): self.languages = languages def __getitem__(self, item): return self.languages[item]if __name__ == '__main__': languages = ['Java', 'C

2020-09-20 16:26:31 333

原创 redisson实现分布式锁底层通信与协议

在之前的Netty在Redis客户端中的应用文章中我们介绍了Netty在Redisson中的使用.在之前的jedis实现分布式锁底层通信与协议文章中我们介绍了关于Redis客户端与服务器通信的协议.那么,在本篇文章我们介绍下Redisson中如何实现客户端与服务器通信协议的.阅读本篇文章之前请先阅读上面的两篇文章在创建Redisson的过程中会创建一个org.redisson.client.RedisClient类,在这个类的内部会创建一个io.netty.bootstrap.Bootstrap

2020-09-20 02:09:35 818

原创 jedis实现分布式锁底层通信与协议

通过此篇文章可以了解Redis的底层通信,Redis的协议,以及自己手写与服务器通信.在分布式锁的实现上, 基于Redis的实现是其中一种.而具体的实现依赖包又有两个<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.0.1</version></dependency&g

2020-09-15 04:16:38 373

原创 Windows 10安装Linux子系统(WSL)时遇到的问题及解决

在Windows 10的Microsoft Store安装好Ubuntu系统之后,点击Launch提示如下错误解决控制面板–>程序与功能–>启动或关闭Windows功能勾选适用于Linux的Windows子系统,重启即可

2020-09-14 02:53:56 3922 2

原创 在Windows上用到的一些命令

netstat -ano -p TCP | findstr "127.0.0.1" | findstr "ESTABLISHED" | findstr "9612" | wc -l

2020-09-14 02:52:05 230

原创 hutool工具中的雪花算法

如果在面试中被问及分布式唯一标识,却没有答道雪花算法,那么就有点说不过去了.关于分布式唯一标识中的雪花算法,网络上的介绍很多,它只是一个算法,可以用Python,Java等不同的语言实现它.即便是同一个语言,它的实现也有不同.美团(Leaf)百度(uid-generator)这两个也是业界比较知名的实现雪花算法的工具.然而还有一个工具类,它就是<dependency> <groupId>cn.hutool</groupId> <art.

2020-09-13 20:57:49 18189

原创 Netty在Redis客户端中的应用

在我们日常使用Redis实现分布式锁中,依赖如下<dependency> <groupId>org.redisson</groupId> <artifactId>redisson</artifactId> <version>3.10.1</version></dependency>在使用Redisson作为客户端,它需要与服务端进行通信,那么它的底层通信使用的是Netty.在启动

2020-09-10 06:37:09 951

原创 线程状态&线程池状态&任务状态

在平时的开发工作中,我们一定会接触到线程,线程池,以及FutureTask等.那么它们的状态又是如何流转的呢?接下来我用三张图来让读者从全局观了解熟悉它们的状态变化.线程状态线程的状态共有6个,分别是NEWRUNNABLEWAITINGTIMED_WAITINGBLOCKEDTERMINATED这里所说的线程状态是线程在JVM中的状态,那么线程在操作系统中的对应状态又是什么呢?这个我们会在后面的文章中详细介绍.线程池状态线程池的状态共有5个,分别是RUNNINGSHUTDOW

2020-09-07 01:34:04 561

原创 排查CPU利用率高的线程

在日常工作中,我们有时候需要排查线上问题,找出系统中CPU利用率最高的线程.当然,我们这里默认被排查的线程在JVM中,而不是其他非JVM的线程.涉及的命令$ top$ ps$ jstack思路1.根据top和ps命令查找到进程中CPU利用率最高的线程(内核级线程)2.将内核级线程的十进制转成十六进制3.根据jstack命令获取JVM级的线程信息方式一1.通过top命令找到CPU消耗(%CPU列)最高的进程, 并记住PID2.通过top -Hp PID 找到CPU消耗(%CPU列)最

2020-09-06 01:14:10 321

原创 Integer.valueOf和Integer.parseInt

在日常开发工作中,我们经常需要将一个字符串值转换成整型值,这个时候我们可以选择Integer.valueOf和Integer.parseInt两个选择.接下来我们分析下这两个方法的区别.Integer.valueOf返回值是Integer类型Integer.parseInt返回值是int类型而且,在Integer类中还有一个内部的缓存类IntegerCache,它默认缓存了[-128, 127]的Integer值.Integer.parseInt很简单,它是将一个字符串转成10进制的int数值.

2020-09-05 16:40:08 675

原创 LinkedBlockingQueue#put操作

JDK提供了7大阻塞队列,常用于实现生产者和消费者,LinkedBlockingQueue是最常用之一.public void put(E e) throws InterruptedException { if (e == null) throw new NullPointerException(); int c = -1; Node<E> node = new Node<E>(e); final ReentrantLock putLock = th

2020-09-05 14:05:41 741

空空如也

空空如也

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

TA关注的人

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