Giter Club home page Giter Club logo

jtea's Introduction

简介

在我潮汕地区,茶是必不可少的,人们品尝就跟喝水一样平常,但茶却包含了很多学问和人生道理。茶之道,在于心境的平和,人生如茶,沉时坦然,浮时淡然,沉浮之间,淡然处之,可谓茶壶虽小,内涵乾坤。自古以来,以茶会友,以茶道来醒悟人生之道。可以说茶就好像国外的咖啡一样,而咖啡正是java的原意,这也是本仓库命名的由来。在技术的道路上,需要不断的醒悟和感悟,技术的远方是无止境的,但只要以平和的心态持之以恒,终能有所收获。

目录

spring/spring boot/cloud

spring bean生命周期
spring session统计登录人数
spring容器初始化完成事件
spring循环依赖
@Async循环依赖分析
spring cloud gateway + nacos
spring cloud gateway filter
eureka 原理/集群
feign
服务优雅下线
动态创建bean托管到spring
除了java-jar,还能这样运行你的springboot应用

webflux

错误处理
日志追踪
全局异常处理
expand递归
swagger
debug
map&flatMap
源码分析

中间件

nacos集群
canal简介
canal quick start
canal server ha
kafka消费者重启消息重复消费
kafka错误日志问题
apache common pool2
熔断-hystrix
熔断-resilience4j
熔断-sentinel

elasticsearch

核心概念
倒排索引
es/kibana/集群/cerebro搭建
分词
常用api
es写入原理
使用java访问es
es中的分页

linux

基础命令
实操
系统
五种IO模型
零复制
顺序IO

mybatis

核心组件
springboot是如何集成mybatis的

mysql


数据库开发规范
mysql三种log
一条危险的update语句
使用p6spy监控应用sql
这么分页查数据居然重复了
MVCC原理
深入理解索引
sql到底慢在哪里
order by居然有bug?
mysql到底有没有解决幻读问题
[buffer pool]
我又遇到order by的坑了

设计

分层设计
mq多环境topic设计
解决多环境下微服务实例乱窜
加强版ThreadPoolExecutor
加强版ThreadPoolExecutor升级

算法

使用TreeSet优化任务分配.md
限流算法
[时间轮算法]
[缓存淘汰算法]
一致性hash算法
比例分配算法
手写lru

redis

详解redis网络IO模型
redis常用配置参数
resp协议
redis单机和集群搭建
缓存和数据库一致性问题
分布式锁
string类型底层SDS
redis geo地理空间
zset
zset实践
hash
持久化机制

jvm

jvm常用参数
jdk常用命令
TLAB堆内存中的线程私有区域
三色标记法

java基础

@Transactional不生效?
java开发规范
什么?@Transactional又不生效了?
cas
java集合类型-Queue继承体系
happend before
java内省机制

问题排查

java cpu占用高问题排查
java 内存占用高问题排查
HttpClient线程池设置问题
rm命令删除文件了,但磁盘空间没有释放
一次内存泄漏排查
一次redis带宽占用高分析
线程池shutdown引发TimeoutException

工具

arthas实践
[arthas tunnel]
git
git hook解决多仓库代码合规问题
ssh多个远端仓库
jmeter
curl
idea插件汇总
写一个idea插件通知你gitlab远端分支变更了

面试

双亲委派机制
jdk动态代理与cglib
tcp三次握手四次挥手
CountDownLatch和CyclicBarrier
并发编程wait和notify
面试再也不怕问ThreadLocal了

其它

druid加密
jasypt加密配置文件
ThreadLocal扩展
单元测试启动加速
如何优雅的统计方法执行时间
如何做好code reivew

一些总结

  • 蝴蝶效应
    亚马逊河一只蝴蝶煽动翅膀,可能引起周边环境的变化,进而引起更多的天气反应,造成龙卷风。一个很小的问题,可能引起一系列反应,变成一个很大的问题。
  • 墨菲定律
    如果事情有可能变坏,无论这种可能性有多小,它总会发生。
  • 破窗效应
    如果一扇窗破了,其它的窗在不久内也会一起破掉。有个地方代码写得烂,那么不久,就会有越来越多的烂代码,导致项目的可维护性越来越低。
  • 鲁棒性
    指在系统某些参数的抖动下,仍然维持它的某些特性(性能、稳定)。
  • 背压
    当消费者消费数据的顺序小于生产者的顺序,通知生产者较低生产速度。
  • 康威定律
    一口气吃不了一个胖子,能搞定的先搞定。大而复杂的系统更倾向于分解,合久必分,分而治之,独立子系统可减少沟通成本。
  • 让营地比来时更干净
    美国童子军谚语,美国童子军相当于半军事化管理的夏令营,每次孩子们离开时都需要打扫干净,让营地比来时更干净。反应到软件开发中,就是不要破坏规则,不要引入混乱,每次提交代码都要比上次更优。
  • 好莱坞法则
    演员只需要把简历交给好莱坞演艺公司就可以了,后面的流程由好莱坞全面控制。“不要给我们打电话,我们会给你打电话”,表明了绝对控制权。
  • kiss原则
    keep it simple and stupid,保持简单,意思不要把东西搞得复杂
  • 大拇指法则
    又叫经验法则,是一种简单的,经验性的,探索性的,但不是很准确的原则。
  • 悲观思维
    开发过程中要保持一种悲观思维,类似于悲观锁一样,想法悲观,认为各种情况都可能出现问题,这样就能做好防范,保证程序的健壮性。
  • 奥卡姆剃刀原理
    如何必要,勿增实体。化繁为简,抓住重点。关注核心和关键点,不做一些没有必要的事情。
    ========================================================================
  • 注意性能问题
    包括调用对方接口性能,sql查询,算法复杂度,使用正确的数据结构等。
    在高并发场景下,性能问题会加倍放大,很容易导致整个服务挂掉。
  • 不要信任外部
    不要信任前端,不要信任第三方服务,对所有可能的情况都应该进行校验。
  • 接口设计
    为上层提供接口(方法)应该从领域出发,保持一定的通用性,避免接口(方法)膨胀。
  • 不要忽略细节
    在一次接口对接中,我发现对方有一个单词拼写错误写少一个l字母,我觉得不需要告诉对方,并且对接不报错即可。过了许久,我在另一个项目也需要对接这个接口,我已经忘记这个单词错误问题,并且直接写对的单词,造成了一个bug。
  • 生产上执行语句要非常小心
    生产上的操作都需要仔细,确保不会出错,最好有回滚措施。举例:在使用跳板机查看redis集合内容时,不小心遍历一个大的集合,导致业务操作都阻塞。
  • 日志很重要
    有效的日志有时候是排查问题唯一的方式,例如要追溯一个较久前的数据。反之,无效无用的日志不要打。
  • 不只代码
    工作中不只程序,人事关系,职场规则,如何更好地与不同性格的人相处,控制情绪,提高说话的艺术,这很重要。
  • 做好准备
    汇报工作,安排工作,讨论方案,技术分享...什么事情要提前做好准备,才能有底气,不会被别人带节奏。
    举例:讨论方案,对方给了一个方案,开始你没准备好,对方解释得头头是道,大家都觉得可以,后来你发现你有更好方案,但已经和别人定好,没用了,如果能提前准备好,价值就能体现。

jtea's People

Contributors

jmilktea avatar lhcheng avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.