自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(21)
  • 资源 (1)
  • 收藏
  • 关注

原创 java反序列化版本不一致的问题

今天遇到一个这样的问题本地的对象文件增加了一个字段redis里序列化的对象并没有这个字段所以反序列化的时候会出现下面这样的错误那如何解决呢?通过重写RedisSerializer 和 ConfigurableObjectInputStream 来实现重写RedisSerializer deserialize 的方法public Object deserialize(@Nullable byte[] bytes) { if (bytes == ...

2022-05-18 20:41:01 557 1

转载 人工智能-学习笔记3-神经元-大自然的计算器

因为今天买的耳机到了,想玩游戏,懒得自己码字了,大部分都从书上粘过来,但是矩阵部分是必要重要的,因此需要彻底理解虽然我们的计算机拥有大量的计算元件,有巨大的存储空间,而且这些元件的运行频率比生物大脑快很多,但是即便是像鸽子一样小的大脑,其能力也远超我们的计算机科学家们发现,传统的计算机按照串行的顺序,相当准确的处理数据,对计算机而言不存在模糊与不准确性。而另一方面,生物大脑看上去以较慢的方式运行,但似乎是以并行的方式处理信号,模糊性是其计算的一种特征让我们来观察生物大脑中的基本单元.

2021-09-13 20:03:00 579

原创 人工智能-学习笔记2-通过分类器来了解如何自动调整参数

上一篇文章,让一个机器接受输入,通过误差去调节常数项C使预测机的输出渐渐接近正确答案,我们称之为预测机这一篇文章我们想通过一个分类机的例子,了解学习率的作用现在我们有一组这样的数据在上图中可以清楚的看到两群虫子,毛虫细而长,瓢虫短而宽如果可以画一条直线,可以把这两群小虫区分开来,像下图这样很显然,这条直线并不能正确的区分 毛虫和瓢虫,但如果我们增加一点斜率,像下图这样那么这条直线就可以整齐的将毛虫和瓢虫区分开来了,但这个斜率是如何得到的呢?在这里不需要引用前沿的数学.

2021-09-08 22:19:16 357

原创 人工智能-学习笔记1-构建一台简单的预测机

AI是有趣的也是复杂的,如果有兴趣学习的话,其实也并没有难到学不会,无法入门的那种程度。这一系列教程,会简单的写一个手写数字识别的神经网络模型,由浅入深,了解机器学习的原理。做到这一点,并不需要多高深的数学知识,只需要一些简单的微分,线性代数知识,就可以轻松学习。即便你不会这些数学知识,但也可以继续看下去,因为这并不太影响对原理的掌握学习机器学习之前,我们有必要了解一下,计算机擅长做什么,人类的大脑又擅长做哪些事。对于计算机来说,在1秒内,计算百万千万的加减乘除是很容易做到的,但这对于人类来

2021-09-07 22:13:52 168

原创 Netty-ServerBootstrap-源码学习笔记

初始化流程channel 绑定端口流程class ServerBootstrap 线程池,child数组的实例由 newChild 方法提供 EventLoopGroup bossGroup = new NioEventLoopGroup();NioEventLoopGroup{ protected EventLoop newChild(Executor executor, Object... args) throws Exception { EventLoopTask

2021-02-20 21:02:30 84

原创 ReentrantLock-非公平-非共享 源码备忘录

ReentrantLockReentrantLock 是日常开发种常用的加锁工具类这里主要记录一下 他实现的原理 new Thread(() -> { lock.lock(); lock.lock(); System.out.println(Thread.currentThread().getName()); lock.unlock(); }).start();

2021-02-19 17:44:19 81

原创 Ribbon源码备忘录

Ribbon做为一个负载均衡组件,可谓是非常的重要本篇重要是自己读源码的一个备忘录,并不是为了给大家讲解Ribbon源码的RibbonAutoConfiguration先从 RibbonAutoConfiguration 讲起这个 configurations 里的Config 是通过 RibbonClientConfigurationRegistrar 注册的@RibbonClients(defaultConfiguration = TestClient.class)@Retention(R

2021-02-06 09:48:34 105 1

原创 Feign源码备忘录

前言Feign作为一个RPC组件,开发中经常会用到,为什么在Class上加一个FeignClient就可以实现远程调用呢?这得从 @EnableFeignClients 这个注解说起了我们可以通过这个 RemoteClientService 调用对应的服务@FeignClient(serviceId = "pms"fallback = RemoteClientService.ForBack.class)public interface RemoteClientService { @GetMa

2021-02-05 21:39:22 75

原创 Gateway源码备忘录

简介在日常开发中,我们经常会用到Gateway这个组件,但是我们只是做到会用是远远不够的,还得了解这个组件的执行原理,该文章只是自己用来记录一些关键的代码,可能写的不是很通俗易懂,望请见谅下面,从一个请求到达网关开始,了解这个请求是如何被转发到我们的服务里的先来看一个简单的一个Route配置spring: cloud: routes: # 这个是我们配置的网关的ID - id: cms-system # 这个是配置指的是我们要转发到哪个

2021-02-05 16:16:00 183

原创 一文读懂 线程 挂起

做为一个码农,在开发的时候,经常会使用到 Object.wait 等操作,挂起当前线程,当时我心里一直有个疑惑,这个挂起底层到底是如何实现的呢?要想理解线程挂起,我们得先明白线程是如何被执行的,当程序运行之后,系统会创建一个进程,进程是一个资源单位,代表程序可以使用的资源,而线程才是真正的执行单位,参与操作系统的调度每个线程都有一个 task_struct 结构体(简称PCB),当然也可以理解为一个对象,这个结构体会被操作系统添加到一个队列中(简称 调度队列 ),这个结构体如下操作系统给每.

2020-12-31 15:49:52 1473 1

原创 关于redis的持久化的2种模式详解

前言我们都知道,redis是基于内存存储的,如果redis因为异常导致进程结束,那么我们的数据就会丢失,为了解决这个问题,redis提供了2种持久化方式,默认为 rdb 方式RDB方式RDB的持久化方式是通过快照方式进行的,当符合一定的条件时,redis会把当前内存中的数据做一个副本,然后持久化到磁盘上,这个过程称为快照,redis会在下列情况下进行快照根据配置规则自动快照用户执行sa...

2020-04-24 11:20:33 332

原创 java内网穿透

基于netty实现这是码云地址喜欢的小伙伴们 帮忙给点个 star O(∩_∩)Ohttps://gitee.com/haojiangbo/venomous_sting

2020-04-22 22:46:56 482

原创 mysql innoDB的行锁复习

数据库innodb的行锁模式InnoDB实现了两种类型的行锁,1共享锁(S)允许一个事务去读取一行,阻止其他事务获取该行的排它锁2排它锁(X)允许获得排他锁的事务去修改该行的数据,并且组织其他事务获取该行的 共享锁和排他锁对于UPDATE ,DELETE,INSERT语句,mysql会自动给涉及到的数据行添加排他锁,对于普通SELECT语句是不添加任何锁的,但是呢可以通过显示的添加...

2020-04-22 22:27:13 98

原创 Semaphore实现原理

Semaphore实现原理Semaphore的acquire 方法首先定义一个变量,初始化 semaphore 设置凭证为 0 个public static Semaphore semaphore = new Semaphore(0);这个方法尝试去获取一个信号量semaphore.acquire(); 我们看源码实现,可以看到这个方法调用了 sync 的 acquireShare...

2020-04-22 14:49:28 417

原创 java类加载机制?双亲委派模型有可能被破坏吗

什么是类加载机制?虚拟机把描述类的数据从Class文件加载到内存,并对数据进行,校验,转换解析,初始化,最终形成可以被java虚拟机直接使用的java类型,这就是虚拟机的类加载机制与一般的编译语言不同,在java语言里面,类的加载,解析,链接,初始化等都是在运行时动态进行的,这样虽然有一些性能开销,但是为java语言提供了很大的灵活性类加载时机类文件被加载到内存中开始,卸载出内存为...

2020-04-21 21:58:16 549

原创 synchronized笔记

synchronized的作用1 保证线程互斥访问同步代码2 可见性,对于一个共享变量,保证执行加锁之前,从主存中重新加载,解锁之前刷新到主存3 有序性,“happen-before” 保证同步代码块之前的代码和之后的代码不会和同步代码块中的代码重排序synchronized实现原理一般我们开发中常用到的 synchronized 加锁方式有2种,同步方法和同步代码块1、同步...

2020-04-20 23:02:19 119

原创 java引用的四种类型

1.强引用强引用在代码中普遍存在,类似于“Object obj = new Object()”这样的,只要强引用还在,垃圾回收器永远不会回收他们2.软引用用来描述一些还有用但非必须的对象,由于软引用还关联着对象,在系统将要发生内存异常之前,将会把这些对象列进回收范围准备二次回收,如果这次回收还没有足够内存,将会抛出异常 。JDK1.2之后提供了 SofeReference实现软引...

2020-03-31 21:49:37 150

原创 JVM运行时数据区域的几个概念

学习笔记java虚拟机在运行时会把他管理的内存划分为几个区域,这些个区域有自己的创建和销毁时间,有些区域随着jvm进程的启动而存在,有的区域则依赖用户的线程启动或结束而存在1、程序计数器程序计数器是一块较小的空间,它可以看做是当前线程执行的字节码的行号,解释器通过改变这个计数器的值来选取下一条要执行的指令,但是如果执行的是本地方法,计数器的值是undefind,现代计算器的每个核都在...

2020-03-31 20:58:19 100

原创 avl 平衡二叉树

package com.haojiangbo.avltree;//AVL二叉查找树public class AvlTree { public Node root; public void add(Node node){ if(null == root){ root = node; return; ...

2019-07-25 23:23:14 70

原创 LinkedBlockingQueue是如何实现阻塞队列的

/** * Inserts the specified element at the tail of this queue, waiting if * necessary for space to become available. * * @throws InterruptedExcept...

2019-04-27 21:17:02 413

原创 学习笔记 从class指令文件中理解java的多态是如何实现的

这段代码的结果是什么呢,结果出乎我以前对java的认识public class TestClass {    static void sayHello(P p){        System.out.println("P");    }    static void sayHello(A p){        System.out.println("A");    }    st...

2018-08-02 23:13:21 117

冒泡排序.java

这是1段价值10个亿的代码

2019-07-20

空空如也

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

TA关注的人

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