String.replaceAll方法,正则妙用
更多精彩文章。 我通常是不太关心代码的具体实现的,因为我的开发语言很杂,倾向于一些最简单通用的方式去解决。今儿不小心在群里看到一位朋友发了下面的java代码,感觉自己还是很局限很无知的: 通过输出可以看到,这段代码的作用是把驼峰命名格式的字符串替换成下划线分割,这个功能比较简单…
7个设计模式在Spring中的应用
更多精彩文章。 Spring中提供了FactoryBean接口,用于创建各种不同的Bean。 开发人员也可以自己实现该接口,常用于框架集成。比如SqlSessionFactoryBean就是如此。 Spring针对JDBC,JMS,JPA等规范,都提供了相应的模板方法类,如Jd…
Echo,Linux上最忧伤的命令
Echo是Linux上常用的命令,用来在Shell中输出一些提示信息。 加上参数-n,可以去掉echo命令末尾的换行。echo命令还可以输出一些彩色的内容,使的shell输出更加直观。 echo在英文中是回音的意思。意思是,你在山的这头呼唤,只能听到山谷中的回声。渐行渐远,若隐…
谈谈 redis 在项目中的常见使用场景
可以把 redis 的队列视为分布式队列,作为消息队列时,生产者在一头塞数据,消费者在另一头出数据: (lpush/rpop, rpush/lpop)。不过也有一些不足,而这些不足有可能是致命的,不过对于一些丢几条消息也没关系的场景还是可以考虑的 scrapy-redis 作为…
必看!java后端,亮剑诛仙(最全知识点)
你可能有所感悟。零散的资料读了很多,但是很难有提升。到处是干货,但是并没什么用,简单来说就是缺乏系统化。另外,噪音太多,雷同的框架一大把,我不至于全都要去学了吧。 这里,我大体根据基础、Java基础、Java进阶给分了下类,挑的也都是最常用最重要的工具。 这篇文章耗费了我大量的…
Java线程池「异常处理」正确姿势:有病就得治
更多精彩文章。 假设我们有一个线程池,由于程序需要,我们向该线程池中提交了好多好多任务,但是 这些任务都没有对异常进行try catch处理,并且运行的时候都抛出了异常 。这会对线程池的运行带来什么影响? 正确答案是:没有影响。 这可不是好事情。 想一下,如果是你开发了一个线程…
127.0.0.1和0.0.0.0地址的区别
更多精彩文章。 欢迎Linux和java后端的同学关注公众号。 1. 问题引入 之前在使用tomcat的时候,启动tomcat默认都会绑定到127.0.0.1这个地址,最近在使用hexo写博客的时候发现通过 hexo server命令启动服务的时候绑定的ip地址是0.0.0.0…
Node 中的日志收集与 requestId
使用 requestId 唯一标识每个请求,有时它又被称为 sessionId 或者 transactionId。 如上,在每次数据库查询时手动对 requestId 进行标记过于繁琐。可以统一设计 logger 函数进行标记 另外可以通过 zipkin 来追踪全链路耗时。
Curator(ZoooKeeper客户端)使用详解
更多精彩文章。 欢迎Linux和java后端的同学关注公众号。 Curator是netflix公司开源的一套zookeeper客户端,目前是Apache的顶级项目。与Zookeeper提供的原生客户端相比,Curator的抽象层次更高,简化了Zookeeper客户端的开发量。C…
FIFO/LRU/LFU三种缓存算法
更多精彩文章。 欢迎Linux和java后端的同学关注公众号。 JVM内缓存是缓存体系中重要的一环,最常用的有FIFO/LRU/LFU三种算法。 1、FIFO是简单的队列,先进先出。 2、LRU是最近最少使用,优先移除最久未使用的数据。是时间维度。 3、LFU是最近最不常用,优…
揭秘中间件集成的一般过程【Canal为例】
为什么要做数据同步?因为数据很多,还要共享或做它用。举个栗子,你从移动硬盘拷贝一份小小电影到你的Macbook上赏析,也叫数据同步。但系统不比你的单纯,它使用的场景千奇百怪。数据同步,不管爱与不爱,你总会遇见,它会在某个时间等你,不见不散。 哎,不就是A到B么,一个管道,罩得住…
分享关于诗词的 graphql API
一声叹息,jdk竟然有4个random
更多精彩文章。 我们从jdk8说起。主要是四个随机数生成器。神马?有四个? 接下来我们简单说下这几个类的使用场景,来了解其中的细微差别,和api设计者的良苦用心。 最常用的就是Random。 用来生成伪随机数,默认使用48位种子、线性同余公式进行修改。我们可以通过构造器传入初始…
高并发之限流,到底限的什么鬼 (精品长文)
更多精彩文章。 你可能知道高并发系统需要限流这个东西,但具体是限制的什么,该如何去做,还是临摹两可。我们接下来系统性的给它归个小类,希望对你有所帮助。 google guava中提供了一个限流实现: RateLimiter,这个类设计的非常精巧,可以适用于我们日常业务中大多数流…
信号量限流,高并发场景不得不说的秘密
限流可以认为是一种降级,一般是根据后台的负载提前预估的一个阈值(也可以动态调整)。超过了这个值,就要进行一些旁路处理。根据业务形态,会有直接拒绝、延迟处理、保持等待、部分穿透、默认返回等响应方式。 concurrent包中的信号量,由于使用简单,易于理解,被广泛应用。但是,你要…
这是一张top命令的动动图
更多精彩文章。 如图,下面是废话,凑字数用的,否则显的太单调。图片已压缩,几百k,不小心进来不要心疼流量。 按下键盘上的某个键位,top会有不同的反应。比如上面8个。 显示每个cpu的运行情况。可以看到机器上有多少个cpu,机器nx的话整个屏幕都被占满了。 让top进入高亮模式…
Linux上,最常用的一批命令解析(10年精选)
更多精彩文章。 Linux这么多命令,通常会让初学者望而生畏。下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合。 任何一个命令其实都是可以深入的,比如tail -f和tail -F的区别。我们不去关心,只使用最常见的…
异常监控服务 Sentry 的部署
Sentry 是一个使用 python 写的异常监控服务,并有支持很多语言的 SDK。 如果使用 nginx 作为反向代理,设置 proxy-pass 即可,不细讲。 从十五分钟的内存使用图表中可以看出部署完成后有一个尖峰,后逐渐平稳了下来。
Node 中异常收集与监控
API/GraphQL 层,在 API 层的最外层使用一个中间件对错误集中进行处理,并进行上报。在具体逻辑层往往不需要主动捕捉异常,除非针对异常有特殊处理,如数据库事务失败后的回退 ... ... ... 对于数据校验,数据库异常与请求失败,我们通常会使用第三方库。 此时可以根…
没有预热,这不叫高并发,叫并发高
更多精彩文章。 大家都知道,高并发系统有三把斧子:缓存、熔断和限流。但还有一把斧子,经常被遗忘在角落里,郁郁不得志,那就是预热。 先说两个现象。这些现象,只能在并发高的系统中出现。 好吧,它已经引起了多个故障。 一个高并发环境下的DB,进程死亡后进行重启。由于业务处在高峰期间,…