自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

刘本龙的专栏

个人邮箱:[email protected]. 技术交流群:684457529

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

原创 jupyter notebook 导出PDF报错:nbconvert failed: xelatex not found on PATH

jupyter notebook 下载PDF文档失败:xelatex not found on PATH

2023-01-31 17:20:09 2269 1

转载 jupytor 误删单元格怎么办

原文链接:https://wenku.baidu.com/view/8fe3fce0a900b52acfc789eb172ded630b1c9805.html

2022-05-18 17:22:08 282 1

原创 docker搭建Redis6.2哨兵集群

环境准备搭建docker环境参考 docker/k8s(1):docker安装使用下载Redis最新镜像$ docker pull redis$ docker imagesREPOSITORY TAG IMAGE ID CREATED SIZEredis

2021-09-18 16:01:14 842

原创 mac安装mysql8.0.25及客户端querious

下载MySQL安装包 mysql-8.0.25-macos11-x86_64.dmg双击dmg文件,在此双击下面的***.pkg,傻瓜安装即可 注意下面的密码设置,由于是我自己本地安装,就没必要使用strong的密码了,否则客户端链接特麻烦。安装MySQL客户端我这里安装的破解版的querious,当然也可以使用Navicat。querious界面比较丑陋,功能支持比较单一,不过够用了。...

2021-09-15 16:06:29 702

原创 安装使用Jupyter

一、什么是Jupyter Notebook?简介Jupyter Notebook是基于网页的用于交互计算的应用程序。其可被应用于全过程计算:开发、文档编写、运行代码和展示结果。——Jupyter Notebook官方介绍简而言之,Jupyter Notebook是以网页的形式打开,可以在网页页面中直接编写代码和运行代码,代码的运行结果也会直接在代码块下显示。如在编程过程中需要编写说明文档,可在同一个页面中直接编写,便于作及时的说明和解释。组成部分① 网页应用网页应用即基于网页形式的、结

2021-02-08 15:48:11 1227

原创 Python入门--06错误、调试和测试

错误处理在程序运行的过程中,如果发生了错误,可以事先约定返回一个错误代码,这样,就可以知道是否有错,以及出错的原因。在操作系统提供的调用中,返回错误码非常常见。比如打开文件的函数open(),成功时返回文件描述符(就是一个整数),出错时返回-1。用错误码来表示是否出错十分不便,因为函数本身应该返回的正常结果和错误码混在一起,造成调用者必须用大量的代码来判断是否出错:def foo(): r = some_function() if r==(-1): return (-1

2021-02-02 16:36:18 1612 1

原创 Python入门--05面向对象编程

面向对象编程类和实例定义类是通过class关键字,class后面紧接着是类名,即Student,类名通常是大写开头的单词,紧接着是(object),表示该类是从哪个类继承下来的,所有类都会继承object类。object可以不写类中的变量没有定义也可以直接赋值使用:class Student(object): passa = Student();a.name= '李四'print(a)print(a.name)结果:<__main__.Student object a

2021-02-02 16:35:35 513 1

原创 Python入门--04 函数式编程

概念编程语言,就是越低级的语言,越贴近计算机,抽象程度低,执行效率高,比如C语言;越高级的语言,越贴近计算,抽象程度高,执行效率低,比如Lisp语言。函数式编程就是一种抽象程度很高的编程范式,纯粹的函数式编程语言编写的函数没有变量,因此,任意一个函数,只要输入是确定的,输出就是确定的,这种纯函数我们称之为没有副作用。而允许使用变量的程序设计语言,由于函数内部的变量状态不确定,同样的输入,可能得到不同的输出,因此,这种函数是有副作用的。函数式编程的一个特点就是,允许把函数本身作为参数传入另一个函数,还允

2021-02-02 16:34:09 420 1

原创 Python入门-03 高级特性

切片类似于java里的split废话不多说,上代码a = list(range(20))print(a)print(a[0:10])print(a[2:10])print(a[:10]) # 前面是0可以省略print(a[:]) # 完整复制一份print(a[-10:-3]) # 允许倒着数,不过倒着数最后一个索引是-1.正在数第一个索引是0结果:[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 1

2021-02-02 16:31:27 277

原创 python入门--02 函数

函数定义defdef bijiao(param): if param > 0: return True elif param < 0: return False else: return "0"print(bijiao(0)) #输出结果为0返回多个值(其实是tuple)def move(x, y): x = x + 10 y = y+20 return x, yprint(mo

2021-02-02 16:30:52 464 1

原创 python入门-01

Python入门(一)-- HelloWordHelloWord程序代码:print('Hello Word!')print(' 1 + 2 =', 1 + 2)a = 5*6print(a)输出:Hello Word! 1 + 2 = 330输入input:name = input('请输入姓名:')print('hello', name)结果:请输入姓名:tomhello tom通用语法注释符号:#python没有大括号,是通过缩进来表示代码块的,通常使

2021-02-02 16:23:29 886 1

原创 python预测分析--环境搭建

Python数据处理分析是很强大的,本文介绍环境搭建,依赖包的引用等,为后面学习做准备。statsmodels statsmodels(http://www.statsmodels.org)是一个Python库,用于拟合多种统计模型,执行统计测试以及数据探索和可视化。statsmodels包含更多的“经典”频率学派统计方法,而贝叶斯方法和机器学习模型可在其他库中找到。statsmodels是一个Python软件包,为scipy提供了补充,以进行统计计算,包括描述性统计以及统计模型的估计和推断。

2021-01-25 15:51:47 602

原创 python开发环境搭建

安装PyCharm直接到 PyCharm官网 下载最新的PyCharm安装包,安装即可。安装python3无论mac还是Linux,目前默认安装的都是Python2版本。我这里要使用statsmodels,需要安装python3。安装方式有多种:去 python官网 下载对应安装包,然后配置环境变量即可。按照流程安装即可,会默认配置python3 环境。通过python3 -V命令查看Python版本信息:$ python3 -VPython 3.7.3PyCharm配置Pyth

2021-01-25 15:31:52 642 1

原创 使用lombok的@Data会导致栈溢出StackOverflowError

最近撸代码发现一个问题,使用lombok的@Data会导致栈溢出StackOverflowError。问题复现两个类,有循环引用:@Datapublic class Obj1 { private String a; private String b; private Obj2 obj2;}@Datapublic class Obj2 { private String a; private String b; private Obj1 obj1;

2020-12-30 16:57:39 3271 1

原创 java最长重复子串

例如:例如字符串 s =“abcdeabc”输出:abcpublic class Test { public static void main(String[] args) { System.out.println(maxString("ckabcabck")); System.out.println(maxString("abdcdyedhjhyed")); System.out.println(maxString("abcdeabc"));

2020-11-29 19:19:01 1010

原创 java 最长不重复子串,最长无重复字符子串

问题描述:输入:abdca 返回:abdc方法一:使用双指针(滑动窗口)来实现。该方法需要配合map保存已经出现过的字符。public static int maxLength(String nums, int begin, int end, int maxStr){ if (null == nums || nums.length() == 0) return 0; if (end>=nums.length()) return maxStr; Ma

2020-11-29 16:38:29 1241

原创 java异常处理规范

文章目录java 异常简介异常处理规范前面介绍了 日志打印规范, 如果想打印出合格的日志,还需要了解Java对异常处理的一些知识。java 异常简介先来看一下Java中异常的类图,该类图只是把常见的异常列了一下。更详细的请读者去看jdk源码。先看一下Throwable ,它是所有errors和exceptions的超类。 * The {@code Throwable} class is the superclass of all errors and * exceptions in the J

2020-11-28 17:41:28 1596

原创 稳定性可靠性设计--源码篇

文章目录概述日志空指针异常入参校验线程安全ThreadLocal注意有些类不是线程安全的volatile 不能保证原子性正确的try-cache-finally事务bigdecimal资源释放概述稳定性可靠性设计计划写4篇文章:源码篇网络篇流程篇架构篇存储篇大数据计算(本期不提供)本文是第一篇,源码篇。从源码角度来看如何写出稳定性高的系统。我这里把可靠性的内容也一起讲了,稳定性和可靠性也没必要分的太清,相辅相成的。其实目前已经有很多很优秀的代码规范可以很好的约束程序员写出可靠的,健

2020-11-28 13:35:16 706

原创 日志打印规范

文章目录打印日志的目的日志级别ERRORWARNINFODEBUG如何打印日志打印日志的位置打印输出哪些内容告警告警分级谁来处理告警拾遗空指针异常入参校验分布式链路追踪灵魂之问:撸了那么多年代码,你真的会打日志吗?打印日志的目的不仅是初学者,很多老码农也不能很好的打印日志(大牛除外,如果你是大牛,就不需要看本文了),本质的原因是没有意识到为什么要打印日志,打印日志的目的是什么,这里我就为大家介绍一下。最重要的原则:在确保日志数量有限的情况下,可以快速定位问题。你仔细想想,在你遇到问题的时候,尤

2020-11-28 13:31:55 3088

原创 LRU算法在MySQL/hbase/Caffeine 中的优化

在上一篇文章中介绍了LRU的原理及实现,但是实际企业级应用中不会直接使用如此简单的LRU算法。本文看看各个优秀的中间件是如何优化LRU算法的。mysql对LRU的优化大家思考一个问题,在我前面讲到的算法实现中,每次访问的数据都会立刻移动到链表的尾端,这样是否是稳定可靠的?答案显然是否定的。实际的应用场景是比较复杂的,大家考虑这样一个场景,你的系统运行了一段时间,缓存都根据LRU算法正常运行,此时,有一个大的查询,数据量比较大,新查询出来的数据根据LRU算法会插入到队尾,此时缓存的数据超出了容量限制,将队

2020-11-27 17:11:40 976 1

转载 zookeeper与etcd的对比

背景最近在看到Pachyderm的介绍时,看到作者拿YARN和Kubernetes做类比,拿Zookeeper和etcd做对比。YARN和Kubernetes的类比还相对比较好理解,毕竟他们都有资源管理和调度的职能,只不过YARN上运行的对象是JVM,而Kubernetes上运行的是容器。但是拿Zookeeper和etcd来类比我就有些不懂了,在我之前的概念里zookeeper并不是一个存储组件啊,因此有了本文的过程。Zookeeper和etcd可以做类比吗?etcd的官网介绍是一个分布式的K/V存储

2020-11-25 12:04:14 1796

转载 手撸一致性hash算法(java实现)

一、一致性Hash(Consistent Hashing)原理剖析引入一致性哈希算法是分布式系统中常用的算法。一致性哈希算法解决了普通余数Hash算法伸缩性差的问题,可以保证在上线、下线服务器的情况下尽量有多的请求命中原来路由到的服务器。在业务开发中,我们常把数据持久化到数据库中。如果需要读取这些数据,除了直接从数据库中读取外,为了减轻数据库的访问压力以及提高访问速度,我们更多地引入缓存来对数据进行存取。读取数据的过程一般为:图1:加入缓存的数据读取过程对于分布式缓存,不同机器上存储不同对象的数

2020-11-24 16:57:02 1019

原创 手撸LRU算法(java实现)

使用javaAPIjava 的LinkedHashMap可以实现LRU算法,LinkedHashMap 本身内部有一个触发条件则自动执行的方法:删除最老元素(最近最少使用的元素)。我们只需要通过参数控制数据排序逻辑和数据删除规则就行了。LinkedHashMap源码中有这么一个注释:<p>The {@link #removeEldestEntry(Map.Entry)} method may be overridden to * impose a policy for removing

2020-11-24 16:15:36 1181

转载 LVS介绍及工作原理图解

一、LVS简介LVS是Linux Virtual Server的简称,也就是Linux虚拟服务器,是一个由章文嵩博士发起的自由软件项目,官方站点是:http://www.linuxvirtualserver.org。现在LVS已经是Linux标准内核的一部分,在Linux2.4内核以前,使用LVS时必须重新编译内核以支持LVS功能模块,但是从Linux2.4内核心之后,已经完全内置了LVS的各个功能模块,无需给内核打任何补丁,可以直接使用LVS提供的各种功能。使用LVS技术要达到的目标是:通过LVS提供

2020-11-23 11:33:13 748

原创 spring3升级到spring4.3

项目中有一个外购的老的系统,使用的spring3,太老了,也不符合公司安全要求,固将其升级为spring4。这里就记录一下修改内容。升级spring版本<spring.version>3.2.18.RELEASE</spring.version>升级到<spring.version>4.3.29.RELEASE</spring.version>升级xml文件中的xsd版本如http://www.springframework.org/schem

2020-11-17 14:14:43 2450

原创 java设计模式之访问者模式

定义访问者(Visitor)模式的定义:将作用于某种数据结构中的各元素的操作分离出来封装成独立的类,使其在不改变数据结构的前提下可以添加作用于这些元素的新的操作,为数据结构中的每个元素提供多种访问方式。它将对数据的操作与数据结构进行分离,是行为类模式中最复杂的一种模式。优缺点访问者(Visitor)模式是一种对象行为型模式,其主要优点如下。扩展性好。能够在不修改对象结构中的元素的情况下,为对象结构中的元素添加新的功能。复用性好。可以通过访问者来定义整个对象结构通用的功能,从而提高系统的复用程度。

2020-10-14 17:35:06 435

原创 java设计模式之状态模式

状态模式的定义与特点对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。模式的结构状态模式包含以下主要角色。环境(Context)角色:也称为上下文,它定义了客户感兴趣的接口,维护一个当前状态,并将与状态相关的操作委托给当前状态对象来处理。抽象状态(State)角色:定义一个接口,用以封装环境对象中的特定状态所对应的行为。具体状态(Concrete State)角色:实现抽象状态所对应的行为。典型类图为:demo以学生成绩为

2020-10-14 16:47:35 515

原创 JIT实时编译优化带来的问题:几千次异常以后取不到错误信息了

问题public static void main(String[] args) { BigDecimal value1 = new BigDecimal("0.0000"); BigDecimal value2 = new BigDecimal("0.0000"); int i = 0; while (i < 11000) { try { value1.subtract(value2).divide(value2, 6, Bi

2020-09-30 11:29:55 676

原创 RocketMQ事务消息实现原理

文章目录概述RocketMQ事务消息实现原理RocketMQ事务消息流程概要RocketMQ事务消息设计事务消息优缺点优势缺陷注意概述在之前文章seata(一) 分布式事务解决方案汇总中介绍了十来种分布式事务的解决方案或理论,其中有一个是事务消息。rocketmq是支持事务消息的,本文将介绍rocketmq事务消息的实现原理,以及具体实例。RocketMQ事务消息实现原理RocketMQ是基于2PC协议基础之上演变而来的,同时增加一个补偿(回查)逻辑来处理二阶段超时或者失败的消息。2PC协议可以参

2020-09-22 16:22:51 1619 3

原创 seata(一) 分布式事务解决方案汇总

概述分布式事务是老生长谈的话题了,过去也一直没有很好的解决办法,没有很方便使用的架构。不过现在阿里开源了seata, 笔者正在学习中,顺便记录一下笔记。本文先来梳理一下目前流行的分布式事务的各种解决方案,以及他们的对比分析。什么是分布式事务事务: 由一组操作构成的可靠的独立的工作单元,事务具备ACID的特性,即原子性、一致性、隔离性和持久性。原子性(atomicity)。一个事务是一个不可分割的工作单位,事务中包括的操作要么都做,要么都不做。一致性(consistency)。事务必须是使

2020-09-19 19:47:48 655

原创 CreateProcess error=206, 文件名或扩展名太长

欢迎关注本人公众号近期接手一个老项目,启动报错:CreateProcess error=206, 文件名或扩展名太长这是因为Windows命令行支持的字符串长度有限制。Linux不会有这个问题。如果你是使用的gradle的bootrun方式启动,那么可以参考gradle官方文档 来解决这个问题,引入插件。方式一:Using the plugins DSLplugins { id "ua.eshepelyuk.ManifestClasspath" version "1.0.0"}方式二:

2020-07-20 21:12:49 23893 7

原创 seata(二) 分布式事务框架seata1.3 AT及XA模式实例演示

欢迎关注本人公众号概述Seata 是一款开源的分布式事务解决方案,致力于提供高性能和简单易用的分布式事务服务。Seata 将为用户提供了 AT、TCC、SAGA 和 XA 事务模式,为用户打造一站式的分布式解决方案。本文先将官方实例跑起来,看看运行效果,值后在对其原理和源码进行分析。下载源码进入seata的GitHub主页,下载seata和seata-samples两个项目。下载下来后可以用idea打开。下载完成后,idea导入seata-samples文件夹下的seata-xa和seata

2020-07-06 14:28:19 3368 3

原创 mysql8.0.20安装教程

欢迎关注本人公众号mysql8 的安装先比较之前的版本复杂了一些,下面就一步一步安装。下载到 mysql官网 下载最新版本的mysql下载完成后解压,并新建my.ini文件my.ini 文件配置my.ini文件内容:[mysqld]# 设置3306端口port=3306# 设置mysql的安装目录basedir=C:\Program Files\mysql-8.0.20-winx64# 设置mysql数据库的数据的存放目录datadir=C:\Program Files\my

2020-07-03 16:26:59 1841

原创 docker/k8s(1):docker安装使用

依赖docker使用安装docker使用yum安装最新版本dockeryum install docker查看docker版本[root@localhost ~]# docker versionClient: Version: 1.13.1 API version: 1.26 Package version: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the do

2020-07-01 17:46:55 580

原创 transmittable-thread-local:解决线程池之间ThreadLocal本地变量传递的问题

欢迎关注本人公众号概述当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值 一文中介绍了InheritableThreadLocal的问题:主线程变量修改后,子线程无法取到的问题。阿里开源的transmittable-thread-local解决了这个问题。transmittable-thread-local介绍git地址:transmittable-thread-local需求场景在ThreadLocal的需求场景即是TTL的潜在需求场景,如

2020-06-30 21:26:28 4821

原创 当InheritableThreadLocal遇到线程池:主线程本地变量修改后,子线程无法读取到新值

欢迎关注本人公众号之前已经介绍,InheritableThreadLocal可以在子线程创建的时候,将父线程的本地变量拷贝到子线程中。那么问题就来了,是只有在创建的时候才拷贝,只拷贝一次,然后就放到线程中的inheritableThreadLocals属性缓存起来。由于使用了线程池,该线程可能会存活很久甚至一直存活,那么inheritableThreadLocals属性将不会看到父线程的本地变量的变化public class InheritableThreadLocalTest1 { pub

2020-06-30 20:39:23 5118 1

原创 InheritableThreadLocal:子线程继承父线程的本地变量

欢迎关注本人公众号概述ThreadLocal可以保存一些变量仅供当前线程使用,其他线程不可见。实际工作中可能会由于任务复杂,父线程创建几个子线程并发致性任务,那么父线程的本地变量如何传递到子线程呢? 答案是使用InheritableThreadLocal。代码实例public static ThreadLocal<Integer> threadLocal = new InheritableThreadLocal<>(); public static void m

2020-06-30 20:15:48 2734

原创 ThreadLocal 内存泄漏 代码演示 实例演示

欢迎关注本人公众号阅读本文前请先阅读: ThreadLocal内存泄露原因分析不使用ThreadLocal下面这段程序创建了一个有5个线程的线程池。每个线程致性都申请5M大小的堆空间。public class MyThreadLocalOOM1 { public static final Integer SIZE = 500; static ThreadPoolExecutor executor = new ThreadPoolExecutor( 5, 5

2020-06-30 19:47:29 3066 14

原创 ThreadLocal内存泄露原因分析

欢迎关注本人公众号背景知识引用Object o = new Object();这个o,我们可以称之为对象引用,而new Object()我们可以称之为在内存中产生了一个对象实例。当写下 o=null时,只是表示o不再指向堆中object的对象实例,不代表这个对象实例不存在了。强引用一直活着:类似“Object obj=new Object()”这类的引用,只要强引用还存在,垃圾收集器永远不会回收掉被引用的对象实例。软引用有一次活的机会:软引用关联着的对象,在系统将要发生内存溢出异常之前,

2020-06-30 17:59:49 2631 3

转载 google aviator:轻量级Java公式引擎

文章目录常用的方法官方文档简介包依赖使用手册执行表达式使用变量exec 方法调用函数自定义函数编译表达式访问数组和集合三元操作符正则表达式匹配变量的语法糖nil 对象日期比较大数计算和精度字面量表示运算类型转换和提升decimal 的计算精度强大的 seq 库两种运行模式调试信息语法手册数据类型操作符算术运算符逻辑运算符关系运算符位运算符匹配运算符三元运算符内置函数常用的方法@Test public void playAviator(){ String string = AviatorEvalua

2020-06-30 15:44:14 18108 1

jquery右键菜单

jquery右键菜单 支持原著

2013-06-02

空空如也

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

TA关注的人

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