自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 资源 (10)
  • 收藏
  • 关注

原创 JAVA的NIO模型

JAVA的NIO模型什么是NIONIO的基本组成NIO的epoll BUG什么是NIOjava的NIO全称为non-blocking IO,使用它可以提供非阻塞式的高伸缩性网络NIO的基本组成NIO主要有三部分:Channel、Buffer和SelectorChannel是一个对象,可以用过它进行数据的读取和写入,它是面向缓冲区的,所有的数据都通过Buffer来处理,永远不会直接将字节写入通道中,而是将数据写入包含一个字节或者多个字节的缓冲区早多线程模式下,阻塞IO时,一个线程只能处理一个请求,

2022-04-20 21:42:14 751

原创 服务注册中心概述

服务注册中心概述多款注册中心比较多款注册中心比较序号比较项EurekazookeeperNacosConsul1集群结构平级主从支持平级和主从主从2集群角色主人Leader、follower observerleader、follower、candidateserver-leader、server以及client3是否可以及时知道服务状态变化不能及时知道会及时知道不能及时知道不能及时知道4一致性协议(CAP)注重可用性(AP

2022-04-17 22:37:46 1693

原创 JAVA学习——基于AQS的共享式锁CountDownLatch解析

笔者最近在解析基于AQS的ReentrantLock实现,ReentrantLock是可重入的独占锁,今天解析一下juc包中的共享锁CountDownLatch实现,仅当笔记。CountDownLatch是一种共享锁,区别于独占锁,共享锁在某一个时刻可能有多个线程同时访问共享资源,当指定的线程都完成操作后,CountDownLatch才允许后续的操作继续进行。就好像百米赛跑,只有所有选手都跑完全程,裁判才能记录选手成绩,在此之前,裁判只能等待。CountDownLatch与ReentrantLock.

2020-06-28 22:28:42 342

原创 JAVA学习——基于AQS的ReentrantLock公平锁和非公平锁的实现

之前笔者解析了AQS的源码,在JUC中有很多锁是基于AQS实现的,今天想写个简单的ReentrantLock实现,代码也基本是在看了ReentrantLock源码后写出来的,做个笔记

2020-06-27 21:47:33 943

原创 Java学习——AQS解析

最近在学习JUC,发现里面大部分的并发组件都是基于AQS,因此研读了一下源码,在此做个笔记。AQS(AbstractQueuedSynchronizer)翻译为抽象队列同步器,是除Synchronized关键字外java自带的锁机制。AQS使用一个int类型变量state来表示线程要竞争的资源,state的值即为可获取的资源数,当一个线程尝试获取锁时,会使用CAS方式去尝试改变state的值,如果改变成功,即获取了锁。CAS的实现是使用了Unsafe类底下的一系列compareAndSet*方法,这.

2020-06-15 22:26:45 222

原创 Java学习——ArrayList的源码解析

ArrayList是JAVA的一种泛型容器,它实际上是一个用数组实现的链表,今天解析一下ArrayList的源码,并写个简单的实现。ArrayList的依赖关系首先我们来看ArrayList的依赖继承关系:通过ArrayList继承实现的接口说明了该类具有以下特性:ArrayList具有链表的特性Collection接口表示ArrayList是一个数据集合,但是这个数据集合没有位置和顺序关系,因此ArrayList实现了类似isEmpty,contains的方法RandomAccess接口说

2020-06-02 22:57:31 185

原创 Java——CompletableFuture接口解析

CompletableFuture接口说明CompletableFuture是Future的子类,接口Future接口虽然实现了异步调用,但是存在一个问题,为了判断线程是否已完成计算,或者要获取计算结果,我们需要不断的轮询,通过循环调用Future的isDone方法或者是直接调用get的方法阻塞线程。在JDK8中,提供了CompletableFuture类来解决这类问题,它可以在线程完成计算后用when、then等方式调用我们定义后续处理方法,省去了轮询的操作(笔者最近在读RocketMQ源码,发现在B

2020-05-27 20:43:37 716

原创 java——线程创建与Callable接口解析

在Java当中,最基本的线程创建方法有两种,一种是通过继承Thread类,重写run方法:class MyThread extends Thread{ @Override public void run() { System.out.println("this is MyThread!"); } } public static void main(String[] args) { Thread myT

2020-05-20 22:27:04 398

原创 RocketMQ源码阅读笔记-NameSrv功能解析

NameServer是RocketMQ的路由管理、服务注册与服务发现中心,首先简要说明一下NameServer的主要功能:所有的Broker服务器会向所有的nameServer注册自己的信息消息生产者(Producer)在发送消息时,也会向NameServer请求Broker服务器的地址信息,然后从中选择一台broker服务器进行消息发送NameServer会与Broker服务器保持一个连接,接收Broker定时发送回来的心跳信息,如果超过一定时间没收到心跳,那么NameServer将会删除该Bro

2020-05-16 22:01:23 284 1

原创 RocketMQ-网络传输与线程框架

由于工作的原因,需要在RocketMQ源码的基础上进行修改,实现自己的功能,因此打算读读源码,写写日记,后续会使用aeron替换掉netty,比较两者的性能指标。RocketMQ主要包括NameSrv、Broker、Producer和Consumer四个模块,模块之间通过Netty进行底层网络传输,因此,RocketMQ的线程模型也是根据Netty的特点进行构建。RocketMQ在原生Netty的基础上,封装了自己的Server和Client,分别为NettyRemotingServer和NettyR

2020-05-15 17:23:13 591

原创 Netty学习前的基本知识

网络I/O的基本知识主要的I/O模型:阻塞I/O模型非阻塞I/O模型在发起I/O请求后,立即返回,然后进行轮询,直到数据到达I/O复用模型系统提供select/ poll,进程将一个或多个fd传递给select或poll系统调用,阻塞在select操作上,select会顺序扫描fd,将就绪的fd返回信号驱动I/O模型应用程序在发起IO请求后立即返回,并且通过系统调用sigact...

2020-04-12 20:51:20 485

原创 Java线程池简单实现

工作中经常用到线程池实现并发设计,基本都是使用的Java自带的线程池,写了个简单的demo,说明Java自带线程池的基本原理。ThreadPool主要有coreSize(核心线程数)、maximumSize(最大线程数)、任务队列和线程队列参数,这主要是因为线程池具有动态创建线程和销毁的特性。为此线程池的相关参数设置: private final int coreSize; //核心线...

2020-04-06 18:04:48 177

原创 AERON:archive学习笔记

由于工作上要求,需要用到aeron,一个高性能的rpc/ipc框架,之前也琢磨了一段时间,都没记录下来,现在需要用到archive,先记录一下吧,希望能坚持记录下去…为了启动Archive Service,必须先启动ArchivingMediaDriver每个订阅者(以channel +streamId标识)的结果都会会被archive记录,记录结果用一个recordingId标识re...

2020-04-03 09:59:00 748

原创 maven笔记

mvn clear 清理上次已经编译好的代码mvn compile 自动编译项目mvn test 自动运行所有的测试用例mvn package 完成打包的所有操作(包括清理、编译、测试的过程)...

2020-04-01 15:12:34 95

原创 在ubuntu系统下配置c++项目使用的vlfeat环境

由于工作原因,需要在ubuntu系统下的c++项目中使用vlfeat,上网查了一下,ubuntu系统下的vlfeat大部分是运用在MATLAB下,但是还好vlfeat也有C的接口,所以可以在ubuntu系统配置实现对vlfeat的使用,在此记录一下。1、下载vlfeat源码,下载方法一搜就有,不再赘述2、利用make . 进行编译(注意后面的.不能漏掉)3、将vlfeat所在目录路径放到系统...

2018-05-08 13:57:27 1504 3

原创 CMakeLists.txt基本语法

1、指定最低要求的cmake版本cmake_minimum_required(VERSION 2.8)2、指定项目的名称project(test)3、设定目录,编译器将在设定的目录中查找include文件INCLUDE_DIRECTORIES(./include)4、将src目录下的源文件的名字保存到变量DIR_SRCS当中aux_source_dire...

2018-05-01 20:14:19 450

原创 在win7下利用ssh向远程ubuntu服务器上传文件的方法

首先需要安装putty软件和pscp软件,这两个都可以从putty官网下载,地址如下:https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html。其中putty软件是为了通过ssh连接远程ubuntu服务器,你也可以利用其它方式连接。 安装完两个软件后,将pscp.exe文件所在目录加入到系统路径当中,或者放置在要传送的文件的同级...

2018-04-24 17:53:24 1518

原创 C++设计模式:工厂模式

工厂模式:工厂模式是在简单工厂模式的基础上,将工厂类也抽象为一个接口,然后根据不同要求,编写具体的生产对象的工厂子类。代码实现思路:建立操作基类和工厂基类,然后再建立具体的操作子类继承操作基类;建立具体的工厂子类继承工厂基类。因此,当要增加新的操作时,只需要增加此功能的操作子类和工厂子类即可,而不用再修改原有代码逻辑,体现了C++的面向对象的思想。代码:#include<iostream>using

2017-08-05 21:00:49 255

原创 C++设计模式:装饰模式

装饰模式:动态地给一个对象添加一些格外的职责,这个只是对某个对象添加,而不是对整个类。就添加功能来说,装饰模式比生成子类更为灵活。实现思路:定义一个基类,然后定义装饰基类继承基类,然后每一个具体的装饰类都继承装饰基类,在需要装饰的对象上面添加功能。代码如下:#include<iostream>#include<string>using namespace std;class person{

2017-07-26 22:20:12 338

原创 C++设计模式:策略模式

策略模式:定义了算法家族,分别封装起来,然后定义一个统一的借口,算法之间可以相互替换。使用该模式可以让算法的变化不影响到使用算法的客户。模式实现:策略模式具体实现时通常与工厂模式相结合,定义一个工厂类,来决定初始化哪个算法。代码如下:#include<iostream>using namespace std;enum RA{LRU,FIFO,RANDOM};class ReplaceAlgorit

2017-07-26 20:36:04 246

原创 中兴捧月算法大赛Dijkstra派解决方案

比赛题目:最强大脑中的收官蜂巢迷宫变态级挑战,相信大家都叹为观止!最强大脑收官战打响后,收视率节节攀升,就连蚁后也不时出题难为一下她的子民们。在动物世界中,称得上活地图的,除了蜜蜂,蚂蚁当仁不让。在复杂多变的蚁巢中, 蚂蚁总是能以最快、最高效的方式游历在各个储藏间(存储食物)。今天,她看完最新一期节目,又发布了一项新任务:小蚁同学,我需要玉米库的玉米,再要配点水果,去帮我找来吧。小蚁正准备...

2017-06-19 17:29:03 3046 9

原创 C++设计模式:观察者模式

观察者模式:定义了一对多的依赖关系,让多个观察者对象同时监听一个主题对象。这个主题对象在状态发生改变时会通知所有观察者对象,使它们能够自动更新自己。代码实现思路:定义抽象的观察者基类和主题基类,通过不同的基类继承抽象基类。并且定义通知函数,当主题对象发生改变时,能通知所有观察对象。代码:#include<iostream>#include<list>#include<string>using

2017-06-18 20:17:51 307

原创 C++设计模式:简单工厂模式

简单工厂模式:将业务逻辑与界面逻辑分开,实际上是表现了c++面向对象的思想。代码实现思路:定义一个基类,保存所有类的基本信息。然后类的实例化推迟到其子类。再用一个单独的类来做创造实例的过程,就是工厂。代码:#include<iostream>#include<exception>#include<string>using namespace std;class Operation{prot

2017-06-18 16:59:24 281

原创 C++设计模式:单例模式

单例模式:保证一个类仅有一个实例,并且提供一个访问它的全局访问点。即让类本身负责保存它的唯一样例。代码实现思路:在类内定义一个私有的静态实例,并且将构造函数也定义为私有,然后定义一个共有的静态方法来获取实例,作为唯一全局访问点。代码:#include<iostream>using namespace std;class Singleton{private: static Singleto

2017-06-18 16:44:36 304

ehcache.xsd

在springboot上配置ehcache时用到的xld文件,在编写xml时会报找不到ehcache.xsd文件,把这个文件放到resources目录底下即可

2020-07-27

dubbo用户指南

阿里的Dubbo用户指南,非扫描版,高清带目录的,不是网上常见的截图版,发出来给大家共享一下

2018-09-27

kaggle 猫狗识别问题 测试集

这是kaggle 猫狗识别比赛的测试集,由于文件太大,里面有一万张照片,训练集我也有,需要的请联系,我再上传

2018-05-16

vs2010编译的32位opencv+opencv_contrib3.4.1

用vs2010编译的32位的opencv和opencv_contrib,亲测有效

2018-05-16

李宏毅教授-一天搞懂深度学习

台湾李宏毅教授的深度学习教程,非常系统且入门的深度学习教程

2018-04-18

kaggle 文本情感分析数据集

kaggle 电影评论情感分析(Bag of Words Meets Bags of Popcorn)的全部数据集,自己上网找了半天都找不到,最后是让同学上外网下的,在这里分享给想学习nlp的同学

2018-01-09

2017中兴捧月算法精英挑战赛Dijstra提交报告

这是本人参加中兴比赛的提交报告,因为有同学看了我的提交代码之后私信跟我要报告,所以发出来,我的提交结果是中南赛区的区域优胜奖

2018-01-07

深度学习 中文高清版

这本书学习机器学习的人应该都知道,bengio大神关于深度学习的圣经,不用我多说,分享一个高清中文版本吧,省得很多同学去瞎找。

2018-01-06

海康威视2017软件精英挑战赛初赛c++源码

该源码是海康威视2017软件精英挑战赛初赛的最终提交结果,这次比赛是根据汽车入库情况,规划泊车机器人的路径,将汽车载入停车位或送车出库,该源码的初赛排名第四。由于官方要求,所有的代码在同一文件中,运行环境为vs2013

2017-08-07

中兴捧月算法大赛Dijkstra派解决方案

文件是本人参加2017年的中兴捧月算法大赛(Dijstra派)的代码和可执行文件,得分86,获得中南赛区区域优胜奖

2017-06-19

空空如也

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

TA关注的人

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