JAVA多线程使用场景和注意事项

我曾经对自己的小弟说,如果你实在搞不清楚什么时候用HashMap,什么时候用ConcurrentHashMap,那么就用后者,你的代码bug会很少。他问我:ConcurrentHashMap是什么? -.-编程不是炫技。大多数情况下,怎么把代码写简单,才是能力。多线程生来就是复杂的,也是容易出错的。一些难以理解的概念,要规避。本文不讲基础知识,因为你手里就有jdk的源码。线程Thread第一类就是

使用Netty,我们到底在开发些什么?

在java界,netty无疑是开发网络应用的拿手菜。你不需要太多关注复杂的nio模型和底层网络的细节,使用其丰富的接口,可以很容易的实现复杂的通讯功能。和golang的网络模块相比,netty还是太过臃肿。不过java类框架就是这样,属于那种离了IDE就无法存活的编码语言。最新的netty版本将模块分的非常细,如果不清楚每个模块都有什么内容,直接使用netty-all即可。单纯从使用方面来说,ne

非规范SQL的sharding-jdbc实践

在《“分库分表" ?选型和流程要慎重,否则会失控》中,我们谈到处于驱动层的sharding-jdbc。开源做到这个水平,已经超棒了,不像tddl成了个太监。但还是有坑。不过不能怪框架,毕竟有些sql,只有程序和鬼能懂。<select id="getCodes" resultMap="BaseResultMap" parameterTyp

”MySQL官方驱动“主从分离的神秘面纱(扫盲篇)

假如你日后的工作,需要快速实现MySQL的读写分离功能,你一定会想起这篇文章。如果你再次回到这里,证明你已经迫切需要一个简单快捷的解决方案了--那就是MySQL官方驱动层实现的读写分离,偏小众,但很有效。JDBC驱动我们经常使用的MySQL驱动jar包,其实默认有非常棒的功能,那就是主从分离和HA。如果你只是需要一个主从分离、failover的功能,不要sharding。一个驱动就够了,不需要引入

服务端开发学习路径图,心疼小哥哥们

在github上看到一种图的表现形式很不错(https://github.com/kamranahmedse/developer-roadmap),迫不及待的自己做了一张:服务端开发学习路径图,表现力还是很强的。我们从选择一门开发语言说起,经历了摸索阶段、集群阶段和进阶阶段,希望你最后都能以架构师的思路去思考。可以看到后端工程师还是很辛苦很悲催的,每一个方块,都能写一本书啊,一个书橱都装不下啊啊啊

Java堆外内存排查小结

简介JVM堆外内存难排查但经常会出现问题,这可能是目前最全的JVM堆外内存排查思路。通过本文,你应该了解:pmap 命令gdb 命令perf 命令内存 RSS、VSZ的区别java NMT起因这几天遇到一个比较奇怪的问题,觉得有必要和大家分享一下。我们的一个服务,运行在docker上,在某个版本之后,占用的内存开始增长,直到docker分配的内存上限,但是并不会OOM。版本的更改如下:升级了基础软

LRU缓存就像你的鞋柜,附实现攻略

问题今天我们讲一下怎么实现一个简单的最近最少使用(LRU)的缓存。概念LRU是Least Recently Used 的缩写,意为“最近最少使用”。LRU缓存简单的说就是缓存一定量的数据,当超过设定的阈值时就把一些过期的数据删除掉。举个生活中的例子,你有一堆鞋子,肯定是最新买的最喜欢穿的放在身边,鞋柜满了的话,如果你不是壕,扔鞋子也会先扔破鞋。如图,把格子想想成你的鞋柜。一个格子只能放一双鞋子哦。

初级java基础知识

我觉得有必要贴一点非常非常基础的Java知识,来吸引一下小哥哥小姐姐们~目的:了解常用的类和方法,了解Java语言的语法和意义。抽象类与接口有什么区别?抽象类与接口都用于抽象,但是抽象类可以有自己的部分实现,而接口则完全是一个标识(同时有多重继承的功能)。什么是自动拆装箱?自动装箱是Java编译器在基本数据类型和对应的对象包装类型之间做的一个转化。比如:把int转化成Integer,double转

jstat 详解

jstat -gc pid可以显示gc的信息,查看gc的次数,及时间。其中最后五项,分别是young gc的次数,young gc的时间,full gc的次数,full gc的时间,gc的总时间。jstat -gccapacity pid可以显示,VM内存中三代(young,old,perm)对象的使用和占用大小,如:PGCMN显示的是最小perm的内存使用量,PGCMX显示的是perm的内存最大

JAVA CMS垃圾回收器简介

总体介绍CMS是以牺牲吞吐量为代价来获得最短回收停顿时间的垃圾回收器。对于要求服务器响应速度的应用上,这种垃圾回收器非常适合。在启动JVM参数加上-XX:+UseConcMarkSweepGC,这个参数表示对于老年代的回收采用CMS。CMS采用的基础算法是:标记—清除。在整个CMS的垃圾回收过程中,大部分是可以和用户的应用并发执行的,不需要暂停用户的应用。但是为了保证正确的运行,CMS仍旧需要少量

JAVA内置锁的可重入性

锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 ReentrantLock等等) 。在JAVA环境下 ReentrantLock 和synchronized 都是可重入锁。我们来看看synchronized,它拥有强制原子性的内置锁机制,是一个重入锁,所以在使用synchronized时,当一个线程请求得到一个对象锁后再次请求此对象锁,可以再次得到

最新文章

最近回复

  • lycying: 已修改
  • lycying: 是的
  • Taxz: 请问在master选举时,为什么 需要Thread.sleep(...
  • hesl: 正文宽度太窄了
  • donald: 什么时候开放rss
  • 宜城有少年: 我试了下好像还是不需要注解都行。。。
  • 宜城有少年: 意思是说如果我把这个去掉就是实现了注解方式的对吗
  • lycying: 见文中,SpringBoot启动会自动读取 src/main/r...
  • 宜城有少年: 博主,我想问下,为什么只要我引入了JAR包,不需要注解都可以使用。。。
  • lycying: 是的,而且不能是private
  • 宜城有少年: 博主请问下引用的注解是放在微服务被调用的里面吗方法里面吗
  • 宜城有少年: 这个是将整个springboot项目打成JAR包吗?
  • lycying: 女人养的狗
  • vbyzc: 女人吗??
  • anshingy: 支持
  • anshingy: 很好,支持
  • 忠实粉丝: 6666666
  • Giving丶: 6666666
  • Giving丶: 男的女的?
  • lycying: 谢谢反馈~ 技术在于分享,个别不自觉的可以忽略

分类

标签

归档

其它