编写高性能Java服务器,应该选用何种方案
首先,高性能是一个比较模糊的概念。最好用高吞吐,或着低延时。
其次,也要分析应用的场景,比如WEB就是大量并发的短连接。比如数据库或MQ,一般都是长连接,而且连接数不多。
对于,大量短连接用selector或者说reactor模型比较适合。但对于高并发低延时也有一些挑战要克服。
谢邀。
NIO和多线程并不矛盾,使用NIO多路复用模型,提升IO的处理性能;使用多线程来执行业务代码,提升CPU使用效率,两者结合才能获得更高的性能。
以Tomcat为例,看看tomcat的NIO模式是怎么实现的。tomcat的NIO代码主要在NioEndpoint类中实现。
NioEndpoint类的启动代码
上图是NioEndpoint类的启动代码,可以看到主要有几个步骤:创建工作线程池,初始化网络连接限制,启动poller线程组,启动Acceptor线程组。可以看到,tomcat使用NIO的多路复用模式来进行IO处理,使用线程池来处理业务请求。
总之,对于大型系统,没有单一的解决方案,需要具体分析,对于不同的场景,选择合适的技术来实现,是技术负责人的一项基本功。
欢迎大家批评指正,求关注,求评论。
用c语言刷Leetcode会不会很low
会的,抓紧换成c++ java python。鼓励python,其实换语言很快的,一般语法一周时间足够了。不要求你记住,一边刷一边看别人咋写的,俩月后你就熟练这门新语言了。
题外话,很多人总是尝试炫技整一些稀有的语法,或者语言中的模糊地带,常人搞不清的地方,来告诉你掌握一个语言需要百八十年(计算机的历史才几年?)。其实没必要,工作中用的语法都是常见的,这跟茴香豆的茴字有几种写法无差别,属于走火入魔类。
刷这个就很 低!
有修养的人,是不会刷这个的!
那没修养用c刷会不会低呢?
首先要说说耍的目的,为啥刷?难道是为了干净?显然不是!
那到底为啥?不就是练技术,学本领吗?语言只是载体,练技术和载体有关?
如果很低,那就不会有里扣了!