自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

晨猫

https://morningcat2018.github.io

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

原创 openjdk opensource

openjdkhttp://jdk.java.net/java-se-ri/8-MR3icedteahttp://openjdk.java.net/projects/icedtea/https://icedtea.classpath.org/wiki/Main_Pageatlassian adoptopenjdkhttps://adoptopenjdk.net/– 开发版 jdk 国内镜像https://mirrors4.tuna.tsinghua.edu.cn/AdoptOpenJDK/?

2020-06-01 12:03:18 79

原创 Java8 Documentation

Java8 Documentation : Java Platform, Standard Edition (Java SE) 8About Java SE 8What’s New (Features and Enhancements)Commercial Features 商业特色Compatibility Guide 兼容性指南Known Issues 已知问题Downl...

2019-12-19 15:58:54 120

原创 git本地仓库 连接 远程github仓库

github 使用笔记1.申请github账号申请地址:https://github.com/join2.添加SSH Key本地生成SSH Key秘钥对ssh-keygen -t rsa -C "your@mail.com"将公钥文件id_rsa.pub里的内容添加到github SSH keyscat ~/.ssh/id_rsa.pub将内容复制进https://...

2019-03-16 23:04:15 176

原创 morningcat2018 LearningDocs

LearningDocs学习资料与文档J2EE patterns http://www.corej2eepatterns.com/JSR Java 规范提案 https://jcp.org/en/jsr/allJSR-j2se https://www.jcp.org/en/jsr/platform?listBy=2&listByType=platformJSR-j2ee http...

2019-02-13 17:02:15 106

原创 maven scope 简要笔记

maven scope 简要笔记maven scopecomplietestprovidedruntimesystemimportmaven scope可参考官网文档大致有 complie(缺省值),test,provided,runtime,system,import 等选项;complie示例 <dependency> <groupId>com.mycompany.app</groupId> <artifactId

2020-12-21 22:30:18 11

原创 Spark 自学笔记1 初尝试

downloadhttp://mirror.bit.edu.cn/apache/spark/spark-3.0.1/https://mirrors.tuna.tsinghua.edu.cn/apache/spark/spark-3.0.1/初尝试cd software/spark-3.0.1-bin-hadoop2.7启动 master./sbin/start-master.sh访问 http://localhost:8080 得到 spark://MacBook-Pro-2.lo

2020-09-23 01:42:29 29

原创 如何保证幂等性简略梳理

参考资料:https://www.cnblogs.com/aspirant/p/11628654.html保证幂等性通过代码逻辑实现boolean pay(int orderId,int accountId,BigDecimal amount);-- order_id-- 状态流转UPDATE user_order ua set ua.balance=ua.balance-21 ,ua.order_status=2 WHERE gs.order_id='123' and gs.order_s

2020-07-20 10:51:50 51

转载 mysql符合某条件的记录是否存在?使用 Limit 1 代替 select(*)

根据某一条件从数据库表中查询 有与没有;平时我都是这样写SELECT count(*) FROM table_name WHERE a = 1 AND b = 2今天在公众号看到一种优化方案SELECT 1 FROM table_name WHERE a = 1 AND b = 2 LIMIT 1Integer exist = xxxDao.existXxxxByXxx(params);if ( exist != NULL ) { //当存在时,执行这里的代码} else { //

2020-07-16 18:12:50 545

原创 深入理解 Kafka 读书笔记 6 -- 生产者拦截器

深入理解 Kafka 读书笔记 6 – 生产者拦截器拦截器是 Kafka 0.10.0.0 引入的功能分类生产者拦截器消费者拦截器功能可以用来在消息发送前做一些准备工作修改消息、完善消息过滤不需要发送的消息可以用来在发送回调逻辑前做一些定制化的需求统计类工作实现 org.apache.kafka.clients.producer.ProducerInterceptor<K,V> 接口onSendKafkaProducer 在将消息序列化和计

2020-07-14 14:28:11 72

原创 深入理解 Kafka 读书笔记 5 -- 序列化器

深入理解 Kafka 读书笔记 5 – 序列化器概念生产者需要用序列化器把对象转换成字节数组才能通过网络发送给 Kafka 服务器消费者需要用反序列化器把从 Kafka 服务器中收到的字节数组转换成相应的对象序列化器与反序列化器需要一一对应序列化器需要实现 org.apache.kafka.common.serialization.Serializer 接口反序列化器需要实现 org.apache.kafka.common.serialization.Deserializer 接口kafka

2020-07-14 14:27:16 52

原创 深入理解 Kafka 读书笔记 4 -- 生产者架构

深入理解 Kafka 读书笔记 4 – 生产者架构kafka 生产者架构消息在由 KafkaProducer 发往 Kafka 服务器(Broker or Kafka Cluster)之前,需要经历可能的拦截器、序列化器、分区器等一系列的作用;生产者客户端由两个线程协调运行主线程由 KafkaProducer 创建消息,然后通过可能的拦截器、序列化器和分区器的作用之后缓存到消息累加器( RecordAccumulator ,也称消息收集器)RecordAccumulator 主要用来缓存消

2020-07-14 10:32:20 46

原创 深入理解 Kafka 读书笔记 3 -- java 基础 API

深入理解 Kafka 读书笔记 3 – java 基础 API基础 API<dependency> <groupId>org.apache.kafka</groupId> <artifactId>kafka-clients</artifactId> <version>2.5.0</version></dependency>package morning.cat.kafka;i

2020-07-13 15:50:29 48

原创 深入理解 Kafka 读书笔记 2 -- 基本概念

深入理解 Kafka 读书笔记 2 – 基本概念kafka 的功能消息系统Kafka 与传统的消息系统(消息中间件)都具备系统解耦、冗余存储、流量削峰、缓冲、异步通信、扩展性、可恢复性等功能;存储系统Kafka 把消息持久化到磁盘,可以把 Kafka 作为长期的数据存储系统来使用,只需要把对应的数据保留策略设置为永久或启用主题的日志压缩功能;流式处理平台为多个流行的流式处理框架提供了可靠的数据来源和流式处理类库;kafka 系统的组成一个 Zookeeper 的集群元数据

2020-07-10 16:17:24 38

原创 深入理解 Kafka 读书笔记 1 -- 环境搭建与脚本测试

深入理解 Kafka 读书笔记 1 – 环境搭建与脚本测试安装 JDK…Zookeeper 环境前提:JDK 已安装成功Zookeeper 环境搭建笔记Kafka 环境前提:JDK 已安装成功Zookeeper 已启动下载解压tar zxvf kafka_2.12-2.5.0.tgz配置vi conf/server.properties# 主要配置项broker.id=0# 对外提供服务的入口地址listeners=PLAINTEXT://localh

2020-07-10 16:13:51 31

原创 Java并发学习笔记17 LockSupport

Java并发学习笔记17 LockSupport基于 java 1.8.0LockSupport 示例package new_package.thread.locksupport;import java.util.concurrent.locks.LockSupport;public class LockSupportTest { public static void main(String[] args) { Object object = new Object(

2020-07-09 16:43:48 54

原创 Java并发学习笔记16 AQS 之 ReentrantReadWriteLock

bilibili-Java并发学习笔记16 AQS 之 ReentrantReadWriteLock基于 java 1.8.0P48_可重入读写锁底层源码分析及思想探究// ReadWriteLock 使用示例package new_package.thread.p45;import java.util.concurrent.TimeUnit;import java.util.concurrent.locks.ReadWriteLock;import java.util.concurrent

2020-07-06 18:28:08 40

原创 Java并发学习笔记20 线程池 ForkJoinPool
原力计划

bilibili-Java并发学习笔记20 线程池 ForkJoinPool基于 java 1.8.0P64_ForkJoinPool原理与构造方式详解分而治之工作窃取适合 CPU 密集型计算任务,不适合 IO 密集型任务 /** * @param parallelism 并行度级别 默认值 = java.lang.Runtime#availableProcessors * @param factory 创建新线程的工厂 默认值 = defaultForkJoin

2020-07-06 18:26:15 77

原创 Java并发学习笔记19 线程池 ThreadPoolExecutor
原力计划

bilibili-Java并发学习笔记19 Java线程池基于 java 1.8.0P52_Java线程池层次体系与设计原则ExecutorExecutorServiceAbstractExecutorServiceThreadPoolExecutor-> WorkerP53_线程池创建方式与工厂模式的应用创建 ThreadPoolExecutor 实例package new_package.thread.p52;import java.util.concurrent.*;

2020-07-04 14:35:55 53

原创 Java并发学习笔记15 ReentrantReadWriteLock 概览

bilibili-Java并发学习笔记15 ReentrantReadWriteLock 概览基于 java 1.8.0package java.util.concurrent.locks;/** * ReadWriteLock 维护了一对相关的锁,一个用于只读操作,另一个用于写入操作。 * 只要没有 writer,读取锁可以由多个 reader 线程同时保持。写入锁是独占的。 * * 所有 ReadWriteLock 实现都必须保证 writeLock 操作的内存同步效果 * 也要保持与

2020-07-03 14:21:50 29

原创 Java并发学习笔记14 AQS 之 ReentrantLock
原力计划

bilibili-Java并发学习笔记14 AQS 之 ReentrantLock基于 java 1.8.0P46_可重入锁对于AQS的实现源码分析ReentrantLock 使用案例 Lock lock = new ReentrantLock(); lock.lock(); try { // do something } finally { lock.unlock(); }公平锁和非公平锁 // 默认非公平锁

2020-07-02 16:49:32 61

原创 Java并发学习笔记13 AQS 概览

bilibili-Java并发学习笔记13 AQS 概览基于 java 1.8.0P45_AQS整体架构与设计原则剖析AbstractQueuedSynchronizer 源码package java.util.concurrent.locks;import java.util.concurrent.TimeUnit;import java.util.ArrayList;import java.util.Collection;import java.util.Date;import sun

2020-07-02 13:44:58 62

原创 Java并发学习笔记12 ThreadLocal
原力计划

bilibili-Java并发学习笔记12 ThreadLocal基于 java 1.8.0P43_ThreadLocal底层源码剖析与解读本质上,ThreadLocal 是通过空间换时间,从而实现每个线程当中都会有一个变量的副本,这样每个线程就都会操作该副本,从而完全规避了多线程的并发问题。package java.lang;import java.lang.ref.*;import java.util.Objects;import java.util.concurrent.atomic.A

2020-06-30 20:56:22 69

原创 Java并发学习笔记11 Future
原力计划

bilibili-Java并发学习笔记11 Future基于 java 1.8.0P41_Future模式示例剖析与源码详解package java.util.concurrent;/** * Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。 * 计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由 cancel 方法来执行。 * 还提供了其他方法,以确定任务是正常完成还是被取消了。一旦计算完成,就不能

2020-06-30 17:16:33 75

原创 Java并发学习笔记10 CAS
原力计划

bilibili-Java并发学习笔记10 CAS基于 java 1.8.0P39_CAS详解及透过字节码分析变量操作的原子性悲观锁synchronized 关键字与 Lock 等锁机制都是悲观锁:无论做任何操作,首先都需要先上锁,接下来再去执行后续操作,从而确保了接下来的所有操作都是由当前这个线程来执行的。乐观锁线程在操作之前不会做任何预先的处理,而是直接去执行;当在最后执行变量更新的时候,当前线程需要有一种机制来确保当前被操作的变量是没有被其他线程修改的;CAS 是乐观锁的一种非常

2020-06-30 14:51:36 50

原创 Java并发学习笔记9 CountDownLatch CyclicBarrier
原力计划

bilibili-Java并发学习笔记9 CountDownLatch CyclicBarrier基于 java 1.8.0P36_CountDownLatch使用场景与示例分析及底层源码解读package java.util.concurrent;import java.util.concurrent.locks.AbstractQueuedSynchronizer;/** * 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 * * 用给定的计数

2020-06-29 17:23:50 49

原创 Java并发学习笔记8 volatile

bilibili-Java并发学习笔记8 volatile基于 java 1.8.0P33_volatile关键字作用与锁的关系深入详解volatile 的作用:实现 long/double 类型变量的原子操作volatile double a = 1.0;jdk1.5 AtomicLong防止指令重排序实现变量的可见性JMM使用 volatile 时,不再会从寄存器中获取缓存值,而是直接从内存中获取;volatile 与 锁 相似的特点:确保变量的内存可见性

2020-06-29 16:09:16 40

原创 Java并发学习笔记7 Condition
原力计划

bilibili-Java并发学习笔记7 Condition基于 java 1.8.0P27_Condition详解及相比于传统线程并发模式的改进public interface Lock { /** * 返回绑定到此 Lock 实例的新 Condition 实例。 * * 在等待条件前,锁必须由当前线程保持。调用 Condition.await() 将在等待前以原子方式释放锁,并在等待返回前重新获取锁。 * * Condition 实例的具体

2020-06-28 19:32:27 72

原创 Java并发学习笔记6 Lock锁

bilibili-Java并发学习笔记6 Lock锁基于 java 1.8.0P24_Lock锁机制深入详解/** * Lock 实现提供了比使用 synchronized 方法和语句可获得的更广泛的锁定操作。此实现允许更灵活的结构,可以具有差别很大的属性,可以支持多个相关的 Condition 对象。 * 锁是控制多个线程对共享资源进行访问的工具。通常,锁提供了对共享资源的独占访问。一次只能有一个线程获得锁,对共享资源的所有访问都需要首先获得锁。不过,某些锁可能允许对共享资源并发访问,如 Rea

2020-06-28 14:00:45 106

原创 Java并发学习笔记5 锁升级(偏向锁/轻量级锁/重量级锁)、锁消除、锁粗化

bilibili-Java并发学习笔记5 锁升级(偏向锁/轻量级锁/重量级锁)、锁消除、锁粗化基于 java 1.8.0P18_锁升级与偏向锁深入解析在 JDK 1.5 之前(不包括1.5),若想实现线程同步,只能使用 synchronized 关键字这一方式来达到;jdk 层面,也是通过 synchronized 关键字来做到数据的原子性维护的;synchronized 关键字时 JVM 实现的一种内置锁,从 jvm 层面角度看,这种锁的获取和释放都是由 JVM 来完成的;在 JDK 1.5 中

2020-06-24 17:54:36 90

原创 Java并发学习笔记4 openjdk源码

bilibili-Java并发学习笔记4 openjdk源码基于 java 1.8.0P16_通过openjdk源码分析ObjectMonitor底层实现opensourceopenjdkMercurialdownloadhttp://hg.openjdk.java.net/jdk8u/jdk8u/hotspot/file/d2c2cd90513e/src/share/vm/runtime/objectMonitor.hppclass ObjectMonitor { public

2020-06-23 17:43:31 305

原创 Java并发学习笔记3 synchronized

bilibili-Java并发学习笔记3 synchronized基于 java 1.8.0P11_synchronized关键字原理详解P12_透过字节码理解synchronized关键字JVM学习笔记13 synchronized对当前类实例上锁package new_package.thread.p12;public class SynchronizedTest2 { public synchronized void hello() { int i = 18;

2020-06-23 14:09:01 69

原创 Java并发学习笔记2 wait 和 notify

bilibili-Java并发学习笔记2 wait 和 notify基于 java 1.8.0P6_wait与sleep方法字节码分析waitwait()在其他线程调用此对象的 notify() 方法或 notifyAll() 方法前,导致当前线程等待。换句话说,此方法的行为就好像它仅执行 wait(0) 调用一样。当前线程必须拥有此 monitor 。该线程释放对此 monitor 的所有权并等待,直到其他线程通过调用 notify 方法,或 notifyAll 方法通知在此对象的 mo

2020-06-22 16:30:26 54

原创 Java并发学习笔记1 Thread 类

bilibili-Java并发学习笔记1 理论基础基于 java 1.8.0P5_从Thread与Runnable说开去Thread 概览java.lang.Threadpublicclass Thread implements Runnable { /* Make sure registerNatives is the first thing <clinit> does. */ private static native void registerNatives

2020-06-22 16:04:14 53

原创 JVM学习笔记21 java 工具

bilibili-JVM学习笔记21 java 工具The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvm基于 java 1.8.0jmap与jstat工具实战分析 67➜ ~ jmap -hUsage: jmap [option] <pid> (to connect to running

2020-06-19 16:45:08 60

原创 MacOs 下的 C 编译器

clangclang编译 Cclang++编译C++案例:clang++ -std=c++11 -stdlib=libc++ example.cpp -o example_program> clang++ -vApple clang version 11.0.3 (clang-1103.0.32.59)Target: x86_64-apple-darwin19.3.0Thread model: posixInstalledDir: /Library/Developer/C

2020-06-19 14:34:33 365

原创 JVM学习笔记24 CMS 垃圾收集器

bilibili-JVM学习笔记24 CMS 垃圾收集器The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvmJVM学习笔记21JVM学习笔记22 垃圾回收理论知识JVM学习笔记23内存泄漏 和 VM参数设置基于 java 1.8.0安全点与安全区域详解 83Concurrent Mark Sweep --> CMS

2020-06-18 14:50:17 77

原创 JVM学习笔记23内存泄漏 和 VM参数设置

bilibili-JVM学习笔记23The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvmJVM学习笔记21JVM学习笔记22 垃圾回收理论知识基于 java 1.8.0Java内存泄露经典原因分析 77Java 内存泄漏的经典原因对象定义在错误的范围(Wrong Scope)异常(Exception)处理不当集合

2020-06-17 15:51:35 95

原创 JVM学习笔记22 垃圾回收理论知识

bilibili-JVM学习笔记22 垃圾回收算法The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间JVM学习笔记20 jvisualvm基于 java 1.8.0JVM垃圾回收重要理论剖析 74运行时区域程序计数器 PC本地方法栈Java虚拟机栈 (JVM Stack)Java 虚拟机栈描述的是 Java 方法的执行模型:每个方法执行的时候

2020-06-16 15:56:33 96

原创 JVM学习笔记20 jvisualvm

bilibili-JVM学习笔记20 jvisualvmThe Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM学习笔记19 JVM内存空间基于 java 1.8.0实战 jvisualvmpackage new_package.jvm.p62;import java.util.ArrayList;import java.util.List;/** * -Xms5m -Xmx5m -X

2020-06-15 16:22:46 63

原创 JVM学习笔记19 JVM内存空间

bilibili-JVM学习笔记19 JVM内存空间The Java Virtual Machine Specification - Java SE 8 EditionJVM学习笔记18 字节码知识总结JVM内存空间划分与作用详解

2020-06-13 18:12:42 63

MD5Util.class

class文件,用于自定义ClassLoader加载文件使用; 类加载器是负责加载类的对象。ClassLoader 类是一个抽象类。如果给定类的二进制名称,那么类加载器会试图查找或生成构成类定义的数据。一般策略是将名称转换为某个文件名,然后从文件系统读取该名称的“类文件”。

2020-04-23

空空如也

空空如也

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

TA关注的人 TA的粉丝

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