自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Welocme

你要为你的梦想负责

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

原创 2022 年终复盘

2022年终

2023-01-04 17:37:14 221

原创 2021年终复盘

2021 年终复盘 学习方面 ​ 今年学习方面确实没有很大的收获。学习了一部分的知识包括,手写Spring核心功能(精通)、学习(Go,Rust)、本来想了解Go源码一直没有进度,看了ES源码解析与优化实战书并尝试自己操作,了解下设计思想。 ​ 还看了几本书,增长黑客、Spring源码讲解、ES源码解析与优化实战书、向上成长。 ​ 国庆节加入了dubbogo社区,感谢于老板让我参与哈哈,当然了还是要自己主动去找机会,然后国庆节那天贡献了一个pr,尽管代码很简单但是对我来说是一小步,然后慢慢对开源社区多了一份

2021-12-31 23:09:19 345 1

原创 TCP协议与UDP协议 & 什么是三次握手与四次挥手

TCP协议与UDP协议 & 什么是三次握手与四次挥手 tcp协议和udp协议都工作在传输层,他们的目标都是在程序之间传数据。 数据可以是文本文件可以是视频也可以是图片。 TCP和UDP区别是什么 TCP基于连接,UDP基于非连接 举个例子 如果把人与人的通信,比喻为进程与进程的通信。 有两种方式,不过这两种方式之间最大的区别是什么? 写信,基于非链接UDP 对方是否能收到 内容是否完整 消息是否按顺序 收信地址收信人是否存在,都无法确认 打电话,基于TCP连接 电话接通 互相通话 结束挂断

2021-06-14 23:37:25 243 3

原创 使用SpringBoot的InitializingBean特性,编写可扩展可维护的拦截器

拦截器 如果我们要用拦截器,拦截某个接口需要校验,还需要再拦截器方法写上/admin/** 等等,这样代码不可维护,不可扩展 我们可以使用注释来指定这个接口是否要拦截,使用到Spring的InitializingBean,再系统启动的时候通过注解拿到需要拦截的接口路径,代码编写一下 注释编写 @Target(TYPE) @Retention(RUNTIME) public @interface Interceptor { } 拦截器编写 public class AdminInterceptor impl

2021-04-14 14:29:50 187

原创 Java线程的6种状态及切换

Java线程状态 常见的线程状态有六种: new一个线程时,还没有调用start()该线程处于新建状态 线程对象调用start()方法时候,他会被线程调度器来执行,也就是交给操作系统来执行了,那么操作系统来运行的时候,这整个状态叫Runnable,Runnable内部有两个状态 (1)Ready就绪状态/(2)Running运行状态。就绪状态是说扔到CPU的等待队列里面去排队等待CPU运行,等真正扔到CPU上去运行的时候才叫Runnable运行状态。(调用yiled时候会从Running状态跑到Ready

2021-03-01 11:59:27 83

原创 Flink-四大组件

Flink-四大组件 作业管理器(JobManager) 控制一个应用程序执行的主进程,也就是说,每个应用程序都会被一个不同的JobManager所控制执行。 JobManager会先接收到要执行的应用程序,这个应用程序会包括:作业图(JobGraph)、逻辑数据流图(logical dataflow graph)和打包所有类、库和其它资源的JAR包。 JobManager会把JobGraph转换成一个物理层面的数据流图,这个图被叫做“柱形图”(ExecutionGraph),包含了所有可以并发执行的任务

2021-02-28 11:48:22 1145

原创 最快简单的Apache Flink入门

Flink-入门 安装 为了能够运行Flink,唯一的要求是安装有效的Java 8或11。您可以通过发出以下命令来检查Java的正确安装: java -version 安装环境 centos7 下载Flink ,我这里安装的是1.11.3版本,下载好文件并压缩 tar -zxvf flink-1.11.3-bin-scala_2.11.tgz cd flink-1.11.3 启动 ./bin/start-cluster.sh 访问ip:8081,注意访问flink页面注意端口是否开放,防火墙是否关闭

2021-02-23 18:13:17 362

原创 Java并发编程的艺术 - Java 阻塞队列

什么是阻塞队列 ​ 阻塞队列(BlockingQueue)是一个支持两个附加操作的队列。 支持阻塞的插入方法:当队列满的时候,队列会阻塞插入元素的线程,知道对了不满。 支持阻塞的移除方法:当队列为空时候,获取元素的线程会等待队列变为非空。 ​ 阻塞队列常用生产者和消费者的场景,生产者是向队列里添加元素的线程,消费者从队列里获取元素。阻塞队列就是生产者用来存放元素、消费者用来获取元素的容器。 ​ 在阻塞队列不可用时,附加操作提供了四种处理方式 方法/处理方式 抛出异常 返回特殊值 一直阻塞 超时退

2020-12-29 17:51:13 73

原创 ThreadPoolExecutor 介绍 使用

ThreadPoolExecutor 介绍 使用 ​ 想用好ThreadPoolExecutor线程池就必须要了解线程、进程和线程池是什么 什么是线程、线程和进程的区别是什么? ​ 线程、程序执行流的最小执行单元,是行程中的实际运作单位。 ​ 进程是一个动态的过程,是一个活动的实体。一个应用程序(英雄联盟)的运行就可以被看作是一个进程,而线程是运行中的实际的任务执行者。进程中包含了多个可以同时运行的线程。 单线程和多线程的区别? 单线程 ​ 在程序执行时,所走的程序路径按照连续的顺序排下来,前面的操作处理好

2020-12-28 18:12:05 836

原创 Java并发编程的艺术 - ConcurrentHashMap(JDK1.7版本)

Java并发编程的艺术 - ConcurrentHashMap(JDK1.7版本) 为什么要使用ConcurrentHashMap 在并发编程中使用HashMap会导致程序死循环。而使用线程安全的HashTable效率又非常低下。 线程不安全的HashMap ​ 在多线程环境下,使用HashMap进行put操作会引起死循环,导致CPU利用率接近100%,所以在并发的情况下不能使用HashMap。执行以下代码会造成死循环。 public class ConcurrentHashMapTest { f

2020-12-27 16:48:54 377 1

原创 Java 并发编程的艺术 - 线程的supend()、resume()、stop()

Java 线程的supend()、resume()、stop() public static void main(String[] args) throws Exception { Thread thread = new Thread(new Runner(), "PrintThread"); thread.setDaemon(true); thread.start(); TimeUnit.SECONDS.sleep(3);

2020-11-10 06:48:08 230 1

原创 Java 并发编程的艺术 - volatile

Java 并发编程的艺术 - volatile 在多线程并发编程中synchronized和volatile都扮演着重要的角色,volatile是轻量级的synchronized,它在多处理器开发中保证了共享变量的"可见性"。可见性的意思是当一个线程修改一个共享变量时,另外一个线程能读到这个修改的值。如果volatile变量修饰符使用适当的话,它比synchronized的使用和执行成本更低,因为它不会引起上下文的切换和调度。 volatile的定义与实现原理 Java编程语言允许线程访问共享变量,是为

2020-10-26 22:49:35 74

原创 Apache Flink 介绍

Flink 什么是Flink? Flink是一个框架和分布式处理引擎,用于对无限制和有限制的数据留进行有状态的计算。Flink被设计为可在所有常见的集群环境中运行,以内存速度和任何规模执行计算。 处理无界和有界数据 任何类型的数据都是作为事件流产生的。信用卡交易,传感器测量,机器日志或网站移动应用程序上的用户交互,所有这些数据均作为流生成。 数据可以作为无界流或有界流处理。 无界流有一个起点,但没有定义的终点。它们不会终止并在生成数据时提供数据,无界流必须被连续处理,即事件在被摄取后必须被及时处理。无法

2020-10-21 17:38:30 325 1

原创 Golnag 搭建国内镜像踩坑

Golnag 搭建国内镜像踩坑 在Windows系统下,go语言已经搭建好我们不在讲解,傻瓜式安装就好。 搭建国内镜像 打开此电脑属性,选择高级系统属性,环境变量设置 新增用户变量,我们添加两个环境 输入变量名:GO111MODULE 输入变量值:on 输入变量名:GOPROXY 输入变量值:https://goproxy.cn 完成搭建国内镜像了,安装快的起飞 ...

2020-07-23 14:34:54 350

原创 Spring 4 实战(跟踪 Spring MVC 的请求)

跟踪 Spring MVC 的请求 ​ 用户请求浏览器①,会带用户所请求内容的信息,至少会包含请求的URL,可能会带其他的信息,比如用户提交的表单信息。 ​ 请求的是Spring的DispatcherServlet。Spring MVC 所有的请求都会通过一个前端控制器(Controller)Servlet。前端控制器是常用的Web应用程序模式,在这里将请求给应用程序的其他组件来执行实际的处理,在Spring MVC中,DispatcherServlet就是前端控制器。 ​ DispatcherServl

2020-07-22 16:44:28 114

原创 ElasticSearch动态Mappings详解

Elasticsearch mappings 动态映射 ### Dynamic fieid mappings 默认情况下是根据es支持的数据类型类推测参数的类型,而动态模板允许您定义自定义映射规则,根据自定义的规则来推测字段值所属的类型,从而添加字段类型映射。 { "dynamic_templates": [ // 1 { "my_template_name": { //2 match conditions , //3

2020-06-23 14:57:44 380

原创 Java HashMap插入分析

Java HashMap插入分析 插入逻辑分析 首先定义要插入的键值对属于那个桶,定位到桶后,在判断是否为空。如果为空,将键值对存入。如果不为空,将键值对接在链表最后一个位置或者更新键值对。 首先HashMap是变长的集合,所以需要考虑扩容的问题。在JDK8中,HashMap引入了红黑树优化过长链表,还需要考虑多长的链表需要进行优化。 插入操作源码: public V put(K ...

2020-04-21 23:24:03 436

原创 Java JDK8 HashMap简介

Java中的HashMap的实现原理 hashCode 的作用 hashCode的存在主要是用于查找快捷性,如HashTable,HashMap等。hashCode是用来散列存储结构中确定对象的存储地址。 如果两个对象相同,就适用于equals(java.lang.Object)方法,那么这个两个对象的hashCode一定要相同。 如果对象的equals方法被重写,那么对象的hashCode...

2020-03-11 14:26:37 369

原创 google开源的用于监控基础设施应用的工具 cAdvisor 报错 inotify_add_watch /sys/fs/cgroup/cpuacct,cpu

错误问题 /usr/bin/docker-current: Error parsing reference: " --volume=/var/lib/docker/:/var/lib/docker:ro" is not a valid repository/tag: invalid reference format. 解决问题 输入以下命令符 mount -o remount,rw '/sys/f...

2020-02-29 17:35:43 1276

空空如也

空空如也

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

TA关注的人

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