Skip to content

YolenLew/yolenlew.github.io

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

52 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

[TOC]

covid vaccine near me

Java基础

反射

集合框架

List

Map

HashMap

Queue

并发技术

多线程

线程池

线程池创建

美团技术团队

分类记忆规则:

以Async结尾的方法,都是异步方法,对应的没有Async则是同步方法,一般都是一个异步方法对应一个同步方法。

以Async后缀结尾的方法,都有两个重载的方法,一个是使用内置的forkjoin线程池,一种是使用自定义线程池

以run开头的方法,其入口参数一定是无参的,并且没有返回值,类似于执行Runnable方法。

以supply开头的方法,入口也是没有参数的,但是有返回值

以Accept开头或者结尾的方法,入口参数是有参数,但是没有返回值

以Apply开头或者结尾的方法,入口有参数,有返回值

带有either后缀的方法,表示谁先完成就消费谁

作者:愤怒的酸菜鱼 链接:https://juejin.cn/post/6844904195162636295 来源:稀土掘金 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

线程池通讯

why技术

线程池监控

why技术

线程池执行

任务取消

线程池销毁

多线程实战

八哥记录

Java锁事

StampedLocks vs ReadWriteLocks and Synchronized

美团技术团队

Synchronized

基础

应用

其他

Lock接口

队列同步器

底层原理

接口与实例

实现分析

重入锁

ReentrantLock

读写锁

LockSupport工具

Condition接口

源码分析

并发容器

阻塞队列

实现原理

阻塞队列的实现原理:通知模式

实现方式举例:lock锁的多条件(condition)阻塞控制

Java中实现等待/通知又有两种类型:

  • 一种是基于Object类中的wait()/notify()方法来实现
  • 另一种是基于AQS中Condition类的await()/signal()方法来实现

ArrayBlockingQueue

源码解析

LinkedBlockingQueue

源码解析

SynchronousQueue

源码解析

Disruptor

美团技术团队

队列比较

并发工具

CountDownLatch

leesf

原子类

CAS

CAS是一条CPU的原子指令(cmpxchg指令),不会造成所谓的数据不一致问题,Unsafe提供的CAS方法(如compareAndSwapXXX)底层实现即为CPU指令cmpxchg。

实战案例

百万级消息推送系统

并发问题

内存泄漏

JVM

实际案例

JVM调优

数据库

MySQL

联表查询

实战记录

触发器

慢查询

ClickHouse

简介

基础概念

函数语法

原理分析

clickhouse-client --send_logs_level=trace <<< 'select * from table' > /dev/null

clickhouse-client --send_logs_level=trace <<< 'select  index_col from table' > /dev/null

clickhouse-client --send_logs_level=trace <<< " select  index_col from table where index_col='xxx' " > /dev/null

安装配置

技术选型

实战案例

多数据源

框架技术

Spring

  • 想用@Autowired注入static静态成员?官方不推荐你却还偏要这么做

  • 图解Spring解决循环依赖♻️

    • 个人认为并不能理解为缓存,缓存的最终目的是为了解决性能,而这三个map的目的更多的是标识一个bean的创建状态。比如在单例池中的表示bean已经完整的被创建,在单例工厂中的表示bean正在被创建,在early中的表示已经被创建但不完整
    • Spring内部维护了三个Map,也就是我们通常说的三级缓存。在Spring的DefaultSingletonBeanRegistry类中,你会赫然发现类上方挂着这三个Map:
      • singletonObjects 一级缓存,俗称“单例池”“容器”,缓存创建完成单例Bean的地方。
        • 用于保存实例化、注入、初始化完成的bean实例
      • earlySingletonObjects 二级缓存,映射Bean的早期引用,也就是说在这个Map里的Bean不是完整的,甚至还不能称之为“Bean”,只是一个Instance.
        • 用于保存实例化完成的bean实例
      • singletonFactories 三级缓存,映射创建Bean的原始工厂
        • 用于保存bean创建工厂,以便于后面扩展有机会创建代理对象

img

SpringBoot

原理技术

集成开发中间件

整合多数据源

Mason技术记录

HelloWoods lv-2

应用案例

认证

SpringCloud

Spring&SpringBoot&SpringCloud

版本对应

异同

SpringSecurity

功能拓展

Mybatis-plus

日志框架

总述

Log4j2

核心技术

Redis

原理解析

Katio#硬核Redis

实际应用

Zookeeper

分布式锁

ElasticSearch

基础原理

实战应用

Java8新特性

Stream流

// 流处理:Stream<T> sorted(Comparator<? super T> comparator)
list.stream()
    .sorted(Comparator.comparing(DeskInfo::getUpdateTime).reversed())
    .collect(Collectors.toList());
//根据源文本字数倒叙
List<DocErrorSet> sortErrorSet = docErrorSetList.stream()
    .sorted(Comparator.comparing(e -> e.getTagetText().length(),Comparator.reverseOrder()))
    .collect(Collectors.toList());
// 直接排序:list.sort(Comparator<? super E> c)
list.sort(Comparator.comparingInt(String::length).reversed());

// 太繁琐
List<DocErrorSet> collect = list.stream().collect(
    Collectors.collectingAndThen(
        Collectors.toCollection(
      () -> new TreeSet<>(Comparator.comparing(o -> o.getTagetText()))), ArrayList::new));

Git仓库管理

基础用法

软件配置

前端技术

工具技巧

随机数

开发效率

计算机技术

正则表达式

数据结构

红黑树

开发应用

接口开发

AK-SK签名

概述

image-20220121005804923

日志开发

日志追踪

  • TLog-轻量级分布式日志标志追踪

消息推送

生产案例

1、Java 基础、线程池、JVM

Java 应用线上问题排查思路、常用工具小结:Java 应用线上问题排查思路、常用工具小结 | Richard's Code Studio 详解一次由读写锁引起的内存泄漏 :高并发服务优化篇:详解一次由读写锁引起的内存泄漏 一次 Java 线程池误用引发的血案(OOM)和总结 - 文西(字节架构师):一次Java线程池误用引发的血案和总结 - 知乎 一次线程池引发的线上故障分析:一次线程池引发的线上故障分析 线程池运用不当的一次线上事故:线程池运用不当的一次线上事故 | HeapDump性能社区 Java 中 9 种常见的 CMS GC 问题分析与解决: Java中9种常见的CMS GC问题分析与解决 - 美团技术团队

2、MySQL 死锁、事务、编码、慢查询 MySQL死锁系列-线上死锁问题排查思路:MySQL死锁系列-线上死锁问题排查思路 - 云 社区 - 腾讯云 一个诡异的 MySQL 查询超时问题,居然隐藏着存在了两年的 BUG:一个诡异的MySQL查询超时问题,居然隐藏着存在了两年的BUG - CoderW喜欢写博客 - 博客... MySQL 可重复读,差点就让我背上了一个 P0 事故!:MySQL 可重复读,差点就让我背上了一个 P0 事故! 慢查询引发的车祸现场,案例分析!:慢查询引发的车祸现场,案例分析! 为什么不建议在MySQL中使用UTF-8?: 为什么不建议在MySQL中使用 utf8 ?

3、Redis 高可用、高性能、分布式锁 Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文:Redis为什么变慢了?一文讲透如何排查Redis性能问题 | 万字长文 如何从0到1构建一个稳定、高性能的Redis集群?(附16张图解):如何从0到1构建一个稳定、高性能的Redis集群?(附16张图解) 颠覆认知——Redis会遇到的15个「坑」,你踩过几个?:颠覆认知——Redis会遇到的15个「坑」,你踩过几个? Redis——由分布式锁造成的重大事故:Redis——由分布式锁造成的重大事故 - 掘金

4、Kafka 一次 Kafka 消息堆积问题排查:一次 kafka 消息堆积问题排查 记一次 Kafka 重启失败问题排查:记一次 Kafka 重启失败问题排查 记一次 Kafka 集群线上扩容:记一次 Kafka 集群线上扩容

5、 Spring Boot 警惕 Spring Boot Actuator 引发的安全问题 - Kirito 的技术分享:警惕 Spring Boot Actuator 引发的安全问题

6、网络 万字长文让你掌握网络问题排查技巧!:万字长文让你掌握网络问题排查技巧!

博客记录

博客搭建

hexo

halo

语录共勉

@dotnetgeek

看来已经摆脱了日常CRUD 业务Boy了,专注研究架构技术方面。


在这年代,我们所作的大部分系统、平台都依赖于数据库的。只要落实到具体的业务开发,所谓的“CURD”是无法避免的。技术服务于架构,架构服务于业务。

就算我已经做了多年系统架构师,我还是尊重写“CRUD”业务开发。

开源项目

面经

  1. 测试多行commit
commit -m "" -m "" -m "";
  1. 单引号:windows cmd下不一定可以
commit -m "
第一行
第二行
第三行
";

  1. Git Bash测试双引号换行

About

personl blog

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages