自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 每日解答(一)Thread.join会释放资源吗

一:简述 join()是提供多线程间实现资源协调的一种方式,主要用于A线程等待B线程执行完毕,A继续执行的功能;长话短说,在A线程中调用B.join(),会释放A持有的B资源吗?答案是会的二:源码和示例1.join的实现 1)join、wait、isAlive都不是static方法,所以wait的执行是一个对象,即B线程; 2)A线程调用 B.wait(),所以A...

2019-11-27 14:26:16 2099 2

原创 每日疑问:2019.11.25

1.复习一下,链表,双向链表,待做2.二叉平衡树,看了它的搜索、最大最小值、先驱节点、后继节点、插入、删除;二叉搜索树可以作为一个字典或者优先队列;3....

2019-11-25 17:20:04 173

原创 三:Kafka消费者(2)

1.消费者拉取消息之前,一定要保证已经分配了分区,步骤如下: 1)消费者向协调者申请加入消费组; 2)服务端存在管理消费组的协调者,协调者将消费者加入消费组; 3)触发消费组再平衡操作,协调者为所有消费者分配分区; 4)消费者从协调者获得分配的分区; 5)从协调获取偏移量,然后开始拉取分区的消息;2.消费者执行再平衡和提交偏移量都是直接与协调者交互:...

2019-11-10 18:00:34 193

原创 kafka的一些理解

1.生产者的架构比较简单,逻辑上也相对简单,受分区再平衡的影响也比较小; 生产者这块包括几部分:1.网络客户端,用来建立连接、发送请求、读取响应之类; 2.记录聚集器,将消息按分区聚集,并放入队列; 3.发送线程,从队列中,获取消息,并批量发送给Brokers;2.消费者这边的功能略负责一些: 包括:再平衡处理、网络客户端、拉取线程拉取消息、客户端消费消息、...

2019-11-10 16:53:53 171

原创 三:Kafka消费者(1)

一:简介 1.默认规则:一个分区只有一个消费者来消费; 2.消费组再分区:消费组发生; 3.消费进度:消费者保存,提交到分区,以消费组为单位,一般在ZK或者内部主题中(consumer_offset);根据不同的提交,也分“Once more”、“once least”; 4.ZK中记录了Kafka的内部元数据,包括Brokers、topic、分区状态、消费者...

2019-11-05 10:00:31 222

原创 二:kafka生产者

一:简介 1.相比较消费者、协调者、控制器、日志存储而言,生成者的功能相对较简单,因大部分的工作都交给Broker来处理,生产者需要关注的是消息提交失败、消费者反馈的失败的处理上面; 2.生产消息的流程:消息放入队列中、由消息发送线程拉取消息、批量发送给Brokers; 3.生产程序KafkaProducer; 4.消息收集器,RecordAccumulator,负责缓存生...

2019-11-04 09:59:35 177

原创 一:kafka简介(看书总结版)

一:基本概念1.kafka 的作用:解决应用解耦、异步消息、流量削峰的问题; 个人理解:kafka使用于业务流程的分支部分,用来解耦,也可以加强并发;比如评论的技术功能,订单系统的送积分等等;好处多多,使主流程更轻薄、逻辑清晰、高请求量下仍保证功能可用性等等;缺点也有些:需要做好失败的准备,尤其是消费者需要处理“仅有一次”,做好进度commit、失败记录、失败通知等;2.kafka...

2019-11-03 17:14:21 818

原创 select 中for update的使用

1.它是用来进行数据并发访问时,保证数据同步的一种方式; 它是属于悲观锁的一种,悲观锁适用于数据库的写操作比较多的场景,更进一步划分属于意向排他锁; 上的锁会在该事务被commit或者rollback语句结束释放; 2.产生的锁:根据where的条件字段 是否是索引 + 是都有数据 ,可以产生 不上锁、行锁、表锁; 一般来讲,没有数据不会产生锁,有索引会产生行锁...

2019-11-03 16:17:00 4683

原创 学习计划

一:总的学习目标:1.Java方面:JVM内存管理、IO、多线程、集合、spring等Java方面的基础知识,还有一些最新的Java版本更新信息;2.数据库、Redis方面:重点的工具,设计到原理、优化等;3.工具类:kafka、zookeeper、nginx、elk、docker、k8s、tomcat,还有一些监控、日志等相关的;4.设计类:包括设计模式、并发系统设计、数据库、功...

2019-08-08 10:45:29 468

转载 JVM内存相关

1.转载,从top讲到分析:https://www.analysys.cn/article/detail/20019016

2019-06-11 10:33:25 176

原创 Spring定时任务注解

1.功能描述 需要起一个定时任务,定期去刷新缓存中的数据;2.操作步骤 a)本项目使用的是Spring Boot,在入口处加上注解@EnableScheduling,并在定时任务的方法处加上@Scheduled(cron = "0 0/1 * * * *"),即可1min起一个定时任务;3.Scheduled注解的参数: a)cron是设置定时执行的表达式,如 0 ...

2019-03-19 12:13:43 770

原创 Guava Cache的使用和参数配置

一:适用场景 1.“尺寸较小”、“高频的读取操作”、“变更操作较少”,这样的场景下比较适合Guava这种“嵌入式”缓存; 2.当然对于一些“数据较大”、“需要一定的持久化”保障的,需要考虑redis、memcached等分布式缓存二:使用 1.创建方式:使用CacheLoader:这样可以直接使用cache.get(key)即可public static co...

2019-03-19 12:00:27 5473

原创 学习目标对齐

一:三月份1.三月份最基本的计划是将spring源码看完,熟练掌握spring的各个设计的原则,并搞清楚它的来龙去脉;2.进阶是把Spring boot的原理也搞清楚;3.再进阶是学习Spring cloud的应用;4.再再进阶是学习Spring cloud的原理;二:四月份(kafka+zookeeper)1.三:五月份(redis+db)1.四:六月份...

2019-03-11 19:54:39 400

原创 Gson序列化的一些点

1.忽略不存在的字段、忽略指定字段:@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段。@JsonIgnoreProperties({ "data", "hasMore" })指定的字段不会被序列化和反序列化。 2.FieldNamingPolicy.LOWER_CASE_WITH_UNDERSC...

2019-02-12 12:00:04 1001

原创 Log处理(一)_Log4j和Logback

一:简介1.其实已经有很多的log4j的文章,但是为了自己以后用起来方便,还是自己写一个吧2.Log4j是一个很流行的Java日志记录工具,提供了很多日志打印的特性,常用的配置包括:logger、appender和layout,即日志对象、输出位置、输出样式;3.Log4j的日志级别分为7个等级:ALL、DEBUG、INFO、WARN、ERROR、FATAL、OFF,从左到右等级由低到...

2018-12-20 18:36:00 499

原创 Log处理(一)_Slf4j

一:简介1.因为最近在搭建一个项目,需要用到ELK框架+filebeat,来整理、分析和可视化日志,所以就花些时间一并消化整理了;2.slf4j的官网文档的解释:它是一系列日志框架的简单的外观或者抽象,比如logback和log4j;它允许使用者在部署时去插入需要的日志框架;而且你的应用启用SLF4J,只需要一个额外的依赖:slf4j-api-xxxx.jar。The Simple ...

2018-12-20 16:25:22 616

原创 LockSupport的用法和原理

一:简介1.先说下以前刚开始用LockSupport的时候,没有看JDK源码注释,有个地方坑了很久,悲剧,希望大家没我这么low!   原因是:park(Object)方法的用处是“Disables the current thread for thread scheduling purposes unless the permit is available”,unpark(Thread)...

2018-12-12 20:31:40 405

原创 Java的异步编程(四):CompletableFuture的静态工厂方法、控制方法

一:构造函数和静态工厂方法1.方法列表 a).CompletableFuture提供了丰富的静态构造方法,从线程类型上支持Runnable、Callable,从线程池上支持自己提供的和默认的;//构造方法public CompletableFuture() {}//针对Callable的异步Future静态工厂方法,使用内部的ForkJoinPoolpublic static...

2018-12-10 18:10:11 781

原创 Java的异步编程(二):Future源码剖析

一:简介1.上文介绍了Future的使用,Future一般搭配Callable来使用,一般我们使用Thread或者ExecutorService来执行,并返回执行结果Future;2.在JDK中,FutureTask实现了Future,并且封装了Runnable和Callable两种形式的任务;3.该源码的环境是一个FutureTask被Thread A执行,一个Thread List...

2018-12-10 18:09:10 545

原创 Java的异步编程(三):CompletableFuture的简介和成员变量

一:简介上文提到了Future是实现异步调用的工具,但是Future存在着使用不便的缺点,Java8中提供了CompletableFuture来完善异步流程;CompletableFuture能够在不同线程中执行回调,也可以将回调作为继续执行的同步函数,还有在异步的任务完成后,可以通过thenAccept、thenApply、thenCompose等方法继续执行,而无需阻塞等待下一步执行;...

2018-12-10 14:18:44 1027

原创 Optional使用(终于明白版)

一:简介以前一直不懂Optional有啥用,感觉太无语了,Java8还把它当做一个噱头来宣传,最近终于发现它的用处了,当然不用函数式编程的话,是没感觉的;举例:一个非洲的Zoo,提供add一个animal进来的功能,可是有可能是用Future来捕捉动物的,也就是说可能没有catch到animal,但是为了防止以后使用的时候,有NPE错误,只有做判断; a)不使用Optional的版本,...

2018-12-06 11:13:49 60769 47

原创 Java的异步编程(一):Future的使用

一:Future介绍和使用简介:Future、Callback和Promise模式是在并发编程中经常会用到的非阻塞的模型;a)其中Future模式可以理解为将任务提交给线程执行,其执行结果为Future(未来的结果),期间可以去做其他事情,等需要结果时,再从Future那里获取结果;其中Future模式可以理解为将任务提交给线程执行,其执行结果为Future(未来的结果),期间可以去做其他事...

2018-12-05 11:26:47 474

原创 Java多线程_Volatile关键字

一、简介volatile是用来描述变量的内存可见性的关键字,使得对变量的读取每次都需要到主内存中去操作,但是不能保证变量操作的原子性,比如count++;引入原因:1)由于Java的内存模型分为工作内存和主内存,变量一般在主内存上分配,但是工作线程会将变量copy到工作内存上去执行;2)这就可能会导致一个线程在主内存中修改了一个变量的值,而另一个线程还在继续使用它在寄存器中的值,会导致数...

2018-12-03 17:16:40 225

转载 为什么对象应该是不可变的【转载】

http://www.importnew.com/14027.html

2018-12-03 10:34:24 96

原创 线程池ThreadPoolExecutor(三)成员变量

三:ThreadPoolExecutor成员变量和方法介绍1. 成员变量:      a)corePoolSize核心池大小、maximumPoolSize最大线程数量,它们是用来控制线程的数目,总体流程为1:若小于Core则新建线程执行;2:若大于等于Core,则加入BlockingQueue;3:若BlockingQueue满了之后,若小于Maximum,则新建线程来执行任务,若大于等...

2018-11-29 15:25:34 1080

原创 线程池ThreadPoolExecutor(四)方法介绍(待续)

1.核心方法execute(Runnable command)2.运行任务 final void runWorker(Worker w)3.添加任务 private boolean addWorker(Runnable firstTask, boolean core)

2018-11-29 15:25:17 148

原创 线程池ThreadPoolExecutor(二)继承关系和周边类

二:ThreadPoolExecutor的父类介绍(应该抽空画一个UML类图的)1.总览:该类继承了AbstractExecutorService抽象类,它实现了ExecutorService接口,ExecutorService又继承了Executor接口;2.Executor中定义了execute(Runnable)方法,这是在没有引入Callable之前的定义的,但是在引入了Calla...

2018-11-29 15:16:55 1281

原创 线程池ThreadPoolExecutor(一)简介

一:简介1.在java1.5中发布的java.util.concurrent包中,包含了许多关于并发同步相关的工具,包括atomic原子类包、lock包、一些同步数据结构、异步Future,还有下面要分析的线程池相关,包括Executor、Executors、ThreadPoolExecutor、ForkJoin并发框架等;2.其中Executor是接口,Executors是与之对应的接口...

2018-11-29 14:12:58 215

原创 分布式理论相关

一:CAP理论1. 一个分布式系统中最多只能同时满足一致性(Consistency)、可用性(Availability)、分区容错性(Partition tolerance)中的两项;2.关于一致性Consistency:客户端和服务端关心的一致性不一样,服务端关心更新如何复制到整个系统,客户端关心多并发访问时更新的数据如何获取的问题;当然前提都是在并发访问下,只有在这种才有一致性的问题;...

2018-11-28 09:52:48 339

原创 走过路过的Linux命令(一)

一:习惯忘记的1.查看当前系统的版本号 uname -a ,或者 cat /proc/vesion;2.查看当前所有用户cat /etc/passwd,查看当前所有用户组 cat /etc/group二:一些常识性的:1.在进行cd的时候,可以省略./,表示当前目录下,比如 cd bin,表示切换到当前目录下的bin文件夹;    cd 进入/home目录下,cd -,返回到上...

2018-11-26 12:28:21 145 2

原创 Docker学习

一:常用命令1. docker run -i -t -p 9999:8080 ubuntu:15.10 /bin/bash,其中    -t是表示在容器内指定一个伪终端或者终端;    -i是表示允许和容器内的标准输入STDIN进行交互;    -p 8080:8080 是指用本地的9999端口去映射docker容器的8080端口,-P :是容器内部端口随机映射到主机的高端口;...

2018-11-24 10:46:47 306

原创 kafka学习(待继续学习)

一:概念  1.kafka中partition和broker中分配的关系为:   a)将所有 N 个 Broker 和待分配的 M 个Partition排序;   b)将第 i 个 Partition 分配到第 (i mod N) 个Broker上,这个Broker为leader;   c)将第 i 个 Partition 的第 j 个副本分配到第 ((i + j) mod N) ...

2018-11-20 19:59:15 172

原创 Mac的netstat和lsof使用

1.使用netstat命令,用来显示各种网络信息,比如网络连接、端口号、协议、状态、进程ID等信息;   使用lsof命令,用来显示当前系统打开文件的信息,因为包括端口和网络状态在linux和mac中都属于文件,所以系统也为它们分配了文件描述法fd。2.在Linux上面使用的方法通常为:netstat -nltp,参数含义为:查询TCP协议写Listen的信息    -a (all)显...

2018-11-20 14:57:09 10316

原创 Java的异步浅析(待续)

个人理解的计算机软件性能发展的三个方向,彼此交叉切不排斥1.分布式,通过集群来解决成本、性能和吞吐量等问题,常见的分布式问题包括CAP、选举、Zookeeper等问题;2.多线程,通过多线程来提高程序的并发度,对于IO操作频繁和多核的场景下很适宜,可以一定程度上提高软件的性能,但是对于共享变量的多线程同步容易出错,且处理不当对效率影响略大;3.异步,是为了减少因等待远程服务的返回而影响...

2018-11-09 14:26:56 168

原创 Spring的IoC和DI的实现(XML文件配置)

一.简介IoC和DI好处Spring的依赖注入和控制反转的功能是Spring很重要的一部分,通过这两个功能可以对系统进行解耦,也不需要琐碎的控制被依赖对象的声明周期;实现步骤IoC和DI的核心是通过Spring容器来管理bean,控制bean的声明周期,并提供给依赖方。Spring容器管理bean的步骤为:从配置中读取bean配置、beanFactory注册bean对象、bean的初始化...

2018-11-07 10:09:36 359

转载 数据处理_MapReduce_转发他人博客

https://blog.csdn.net/v_july_v/article/details/6637014

2018-11-06 16:50:53 143

原创 2018.11~2019.4马拉松训练计划

补充一点:1.霾太多,在没有霾的情况下再跑(无奈ing)2.早晨实在冷,呼吸太多冷空气,肚子很不舒服;so,12月份温度:(-8~8度),计划改成轻松愉快跑,可以减量,不可超量!a)周二、周四,每次3~5KM;b)周六、周天,每次7~15KM;   分割线------------------1.目标:武汉马拉松(若中签) -> 3h55min ,配速 5:34 !...

2018-11-06 11:14:56 325

原创 Lambda表达式

Lambda表达式作为Java8引入的一个重大特性,主要用来解决行为参数化的问题,一定程度上类似于策略设计模式;一:Lambda表达式和接口式编程的策略模式的区别1.Lambda表达式是在接口式编程的基础上,更加抽象了一层,一个Lambda表达式对应一个函数式接口;2.Lambda表达式对应的interface,必须只能有一个方法(default除外),而接口式编程可以有多个方法。...

2018-11-05 19:15:40 214

原创 Java8的简介

Java8是Java发布以来改动最大的一个版本,其中主要添加了函数式编程、Stream、一些日期处理类。函数式编程中中新加了一些概念:Lambda表达式、函数式接口、函数引用、默认方法等;Stream中提供了一些流式处理集合的方法,并提供了一些归约、划分等类的方法;日期中添加了ZoneDateTime、DataFormat等线程安全的方法类;一:Lambda介绍1.简介在Java8中引入了...

2018-11-05 14:42:58 5644

原创 UML类图

一:类自身的描述    1.类包括三部分,类名、属性和操作           一:关系1.继承,是is-a的关系     1.1 实现:是对一个抽象类或者接口的实现,通常用空心箭头的虚线表示;     1.2 泛化:是对一个对非抽象类的继承,通常是用空心箭头的实线表示; 2.聚合关系:是表示A是B的一部分,但是当B不存在了,A依然存在,用空闲菱形箭头的实线表示; ...

2018-11-03 11:51:06 139

空空如也

空空如也

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

TA关注的人

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