![](https://img-blog.csdnimg.cn/20201014180756919.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高性能及分布式
文章平均质量分 71
大老二在不在
每天长期更新 以后长期技术干货 求关注
展开
-
闲来无事分享ThreadLocal
一. 先来了解几个概念什么是ThreadLocalThreadLocal叫做线程变量,意思是ThreadLocal中填充的变量属于当前线程,该变量对其他线程而言是隔离的。ThreadLocal为变量在每个线程中都创建了一个副本,那么每个线程可以访问自己内部的副本变量。*ThreadLocal源码解析如图主要的几个方法,下面逐一分析:public void set(T value) { Thread t = Thread.currentThread(); ThreadLocalMap map原创 2020-12-12 20:53:14 · 108 阅读 · 0 评论 -
公司的同事听说我连Java的11大特点都不知道,各种嘲讽我 太丢人了
Java是一种简单的,面向对象的,分布式的,解释型的,健壮安全的,结构中立的,可移植的,性能优异、多线程的静态语言。那么java语言的特点是什么呢? 1、Java语言是简单的 Java 语言的语法与C语言和C++语言很接近,使得大多数程序员很容易学习和使用Java。另一方面,Java丢弃了C++中很少使用的、很难理解的、令人迷惑 的那些特性,如操作符重载、多继承、自动的强制类型转换。特别地,Java语言不使用指针,并提供了自动的废料收集,使得程序员不必为内存管理而担忧。 2、Java语言是一个面向原创 2020-07-16 20:47:44 · 301 阅读 · 0 评论 -
初级Java工程师能轻松进行JVM调优你信么?原来我也不信的
Java 性能调优对于每一个Java程序员来说,是实现技术进阶必不可缺的知识了。比如:一台8G的服务器怎么配置JVM参数?我的JVM参数是否合理?如何分析内存Dump文件?如何分析线程Dump文件?等等...,你肯定或多或少都遇到过,熟知Java虚拟机的工作原理可以大幅提升日常编程的效率,对寻常Bug的修复更是轻而易举。为此,PerfMa推出了一款 Java 应用综合体检工具,将原本枯燥繁杂的配置项、线程状态等信息通过清晰美观的可视化界面展现,且对重要指标进行了分析和详解,来帮助 Java 工程师们可以原创 2020-07-03 20:36:04 · 218 阅读 · 0 评论 -
Java入门到服务端项目开发进阶,几个必须要经历的阶段!建议收藏
对于打算入门或者刚刚入门学习Java的人来说,刚开始接触这门学科,往往会觉得不知所措,也会觉得很迷茫。结合前人经验,就从入门到进阶对于Java的学习而言,应该对于学习时间、目标和内容规划有一个清晰的定位。 在入门阶段,除了学习必备的Java专业知识以外,在学习到一定程度之后还应该做到可以进行简单地项目开发。 入门阶段的学习,除了要阅读相关入门书籍之外,还应掌握Java代码规范、Java开发流程、Java开发工具等事项。Java入门书籍推荐《Java编程思想》、《Java核心技术:...原创 2020-07-03 14:48:55 · 424 阅读 · 0 评论 -
分布式锁实现大型连续剧之(一):Redis
前言:单机环境下我们可以通过JAVA的Synchronized和Lock来实现进程内部的锁,但是随着分布式应用和集群环境的出现,系统资源的竞争从单进程多线程的竞争变成了多进程的竞争,这时候就需要分布式锁来保证。实现分布式锁现在主流的方式大致有以下三种基于数据库的索引和行锁 基于Redis的单线程原子操作:setNX 基于Zookeeper的临时有序节点这篇文章我们用Redis来实...原创 2018-08-24 17:03:37 · 1624 阅读 · 0 评论 -
阿里P7级别架构师教你HashMap的工作原理
HashMap的工作原理是近年来常见的Java面试题。几乎每个Java程序员都知道HashMap,都知道哪里要用HashMap,知道Hashtable和HashMap之间的区别,那么为何这道面试题如此特殊呢?是因为这道题考察的深度很深。这题经常出现在高级或中高级面试中。投资银行更喜欢问这个问题,甚至会要求你实现HashMap来考察你的编程能力。ConcurrentHashMap和其它同步集合的引入...原创 2018-08-26 20:50:31 · 904 阅读 · 0 评论 -
Redis的n种妙用,不仅仅是缓存
redis是键值对的数据库,常用的五种数据类型为字符串类型(string),散列类型(hash),列表类型(list),集合类型(set),有序集合类型(zset)Redis用作缓存,主要两个用途:高性能,高并发,因为内存天然支持高并发应用场景分布式锁(string)setnx key value,当key不存在时,将 key 的值设为 value ,返回1。若给定的 key 已经...原创 2019-01-10 15:12:53 · 325 阅读 · 0 评论 -
看某明星偷税不如看老司机谈Kafka的Broker和集群是什么回事
一个独立的服务器被称之为Broker。Broker接收来自生产者的消息,为消息设置偏移量,并提交消息到磁盘保存。Broker为消费者提供服务,对读取分区的请求做出响应,返回已经提交到磁盘上的消息。根据特点的硬件及其特性特征,单个Broker可以轻松的处理数千个分区以及每秒百万级的消息量而多个Broker组成一个集群,每个集群里面都有一个Broker同时充当集群控制器的角色(这个角色是自动从活跃...原创 2018-10-10 14:54:50 · 427 阅读 · 0 评论 -
3 年 Java 程序员应该具备的技能!
一名3年工作经验的Java程序员应该具备的技能,这可能是Java程序员们比较关心的内容。我这里要说明一下,以下列举的内容不是都要会的东西—-但是如果你掌握得越多,最终能得到的评价、拿到的薪水势必也越高。1、基本语法这包括static、final、transient等关键字的作用,foreach循环的原理等等。今天面试我问你static关键字有哪些作 用,如果你答出static修饰变量、修饰...原创 2018-09-28 19:30:58 · 451 阅读 · 0 评论 -
java工资多少 程序员薪资很高吗?
北京程序员平均工资是12715 元,和此相差无几的是上海、深圳。达内是专业做精英程序员人才招聘的。据调查可知:在工作年限上,3-5年的工程师平均薪酬是20K上下。而 5年以后的工程师薪酬有了明显的上升,30K上下也是必须的。程序员的薪资都很高么,java程序员的薪资是多少呢?java新手工资一般多少?程序猿在世人眼里已经成为高薪、为人忠诚的代名词。然而,达内小编要说的是,不是所有的程序员工...原创 2020-07-27 15:24:02 · 43954 阅读 · 5 评论 -
为什么Java程序员的薪资一直居高不下?
为什么程序员工资那么高?为什么20多年来,Java程序员数量在日益增长的情况下,其薪资不降反升?众所周知,随着科技发展,国家政策的支持,IT行业可谓是目前最火、也是众多行业中薪资待遇最好的行业,其相关工作人员的基本薪资也使得许多传统行业望尘莫及。我特意去各招聘网站查了近半年软件开发工程师的工资,看完后我的心情是这样的...那么,程序员的工资到底有多高呢?以下列举最为核心的两...原创 2018-09-19 16:50:34 · 1562 阅读 · 0 评论 -
Java异常处理的9个最佳实践
无论你是新手还是资深程序员,复习下异常处理的实践总是一件好事,因为这能确保你与你的团队在遇到问题时能够处理得了它。在 Java 中处理异常并不是一件易事。新手觉得处理异常难以理解,甚至是资深开发者也会花上好几个小时来讨论是应该抛出抛异常还是处理异常。这就是为何大多数开发团队都拥有一套自己的异常处理规范。如果你初进团队,你也许会发现这些规范和你曾使用的规范大相径庭。尽管如此,这里还是有一...原创 2018-09-13 21:55:53 · 213 阅读 · 0 评论 -
Spring MVC中的二三事
HandlerMapping和HandlerAdapter这个两个组件应该算是spring mvc中最重要的几个组件之一了,当一个请求到达DispatcherSerlvet后,spring mvc就全靠这各两个组件定位并调用我们定义的Controller函数。是的,他们的功能就分别对应了“定位”和“调用”。HandlerMapping先看看该接口的申明: 1 2 ...原创 2018-09-07 16:18:59 · 143 阅读 · 0 评论 -
怎么从初、中级Java程序员过渡到高级Java程序员?
扩展性分为垂直扩展和横向扩展,垂直扩展就是增加单台服务器的处理能力,需要你熟悉硬件、操作系统、中间件的知识;横向扩展一般就是指集群式部署,这都有行业解决方案,你需要做的只是将你的系统设计的具有可扩展性,说白了就是系统可以多份部署,但对外表现为单一应用。分布式单台服务器处理能力有他的极限,但是我们可以将某一个业务拆分成多个子业务,分别部署在不同的服务器上,说白了就是在设计的时候要注意业...原创 2018-09-10 17:31:10 · 6804 阅读 · 0 评论 -
对Java意义重大的7个性能指标
本文中,小编搜集了7个最有影响的衡量标注,让你可以不依赖日志文件来了解应用程序。现在,让我们看看这些性能指标,并了解如何查看并收集它们:1.响应时间和吞吐量根据应用程序的响应时间可以知道程序完成传输数据所用的时间。也可以从HTTP请求级别,或者成为数据库级别来看。对那些缓慢的查询你需要做一些优化来缩短时间。吞吐量是另一个角度衡量传输数据的指标,是指单位时间内系统处理的客户请求的数量。我...原创 2018-09-06 22:03:38 · 240 阅读 · 0 评论 -
大话程序猿眼里的高并发(上)
高并发是指在同一个时间点,有很多用户同时的访问URL地址,比如:淘宝的双11,双12,就会产生高并发,如贴吧的爆吧,就是恶意的高并发请求,也就是DDOS攻击,再屌丝点的说法就像玩撸啊撸被ADC暴击了一样,那伤害你懂得(如果你看懂了,这个说法说明是正在奔向人生巅峰的屌丝。高并发会来带的后果服务端: 导致站点服务器/DB服务器资源被占满崩溃,数据的存储和更新结果和理想的设计是不一样的,比如:...原创 2018-09-05 20:58:39 · 248 阅读 · 0 评论 -
架构师进阶之路精选之Redis Lua脚本原理
2.6版本之后支持嵌入Lua脚本,客户端使用Lua脚本,直接在服务器端原子的执行多条命令Lua脚本执行过程创建并修改Lua环境1 创建基础Lua环境 2 载入函数库 3 创建全局表格Lua 4 替换随机函数 5 创建排序辅助函数 6 创建redis.pcall函数 7 全局环境保护 8 修改后的Lua环境保存到服务器状态的Lua属性,等待脚本执行Redis中带有不确...原创 2018-09-02 17:53:08 · 289 阅读 · 0 评论 -
Java面试:投行的15个多线程和并发面试题附送回答
多线程和并发问题已成为各种 Java 面试中必不可少的一部分。如果你准备参加投行的 Java 开发岗位面试,比如巴克莱银行(Barclays)、花旗银行(Citibank)、摩根史坦利投资公司(Morgan Stanley),你会遇到很多有关多线程的面试题。多线程和并发是投行面试的热门知识点,尤其是在面试有关电子交易开发工作时,他们喜欢用棘手的 Java 线程面试题轰炸面试者。他们希望确保面试者对...原创 2018-09-02 14:49:23 · 287 阅读 · 0 评论 -
Java高级工程师面试总结
面试技巧1、背熟你的简历原因:面试的第一个问题,一般都是让你简单介绍下你自己,或者介绍一下你最近的项目,而一个面试者,如果连自己的简历都无法熟知,对里面提到的项目、技术都无法描述清楚的话,我想没有哪家公司会接受这样的,哪怕你是超级人才,你自我表述不行,估计也会为此头疼,所以,切记:一定要背好自己的简历,不要求你能全部记下,至少要熟记你最近所待过的两家公司,这两家公司里面你做过的项目,你负责...转载 2018-06-28 15:05:06 · 290 阅读 · 0 评论 -
Java程序员跳槽应该学习哪些技术?
工作1-5年,当我们向老板提出加薪的时候,或者跳槽去“捡”offer的时候,我们底气够吗?敢不敢不给涨薪就“挥一挥衣袖,不带走一个bug”?是不是提出要求后你的主管、经理立刻同意,为了把你留住。然而,现实往往是...技术不过硬,其他的都免谈。小编给大家罗列一下近期最常用,最火的技术,大家检查一下你是否可以硬朗起来。阿里巴巴Dubbo+Zookeeper注册中心、阿里巴巴MyCa...原创 2018-04-19 12:33:34 · 441 阅读 · 0 评论 -
阿里优酷面试经历——学无止境
最近几周与阿里的面试官聊了聊,趁着我还有记忆先写下来。本人近5年工作的JAVA程序员,技术不精。大伙不必太过吐槽。哈哈。我曾两次时间投过简历。》2013年第一次是在2013年的时候,当时工作3年,第一轮面试还是比较容易的。就是讲项目的技术点是过了。二轮的话问一些基础然后可能就忘记了。失败告终。》2016年第一轮的时候问的比较细,像java Object有哪些方法,回答:...原创 2018-03-29 17:04:43 · 838 阅读 · 0 评论 -
深度学习-程序员的学习路径
程序员要开始学习深度学习,该如何入手? 看网上搜集的各种庞杂的DL学习资料列表,你可能会被吓死。但实际上大部分学习资料都包含了相当多重复的内容,下面是我个人总结的一些学习经验,希望能去芜存菁,帮助程序员快速进入深度学习的圣殿。 数学基础。如果你去读深度学习的论文,会发现数学对于DL非常重要,线性代数、概率论、甚至微积分都有用武之地。这些知识都还给学校了怎么办?难道要把所有这...原创 2018-04-04 17:04:01 · 436 阅读 · 0 评论 -
2018年一线互联网公司Java高级面试题总结
1、hashcode相等两个类一定相等吗?equals呢?相反呢?2、介绍一下集合框架?3、hashmap hastable 底层实现什么区别?hashtable和concurrenthashtable呢?4、hashmap和treemap什么区别?低层数据结构是什么?5、线程池用过吗都有什么参数?底层如何实现的?6、sychnized和Lock什么区别?sychnize 什么...原创 2018-04-04 15:05:27 · 491 阅读 · 0 评论 -
Java线程有哪些不太为人所知的技巧与用法?
萝卜白菜各有所爱。像我就喜欢Java。学无止境,这也是我喜欢它的一个原因。日常工作中你所用到的工具,通常都有些你从来没有了解过的东西,比方说某个方法或者是一些有趣的用法。比如说线程。没错,就是线程。或者确切说是Thread这个类。当我们在构建高可扩展性系统的时候,通常会面临各种各样的并发编程的问题,不过我们现在所要讲的可能会略有不同。从本文中你将会看到线程提供的一些不太常用的方法及技术。不管你是初...原创 2018-04-03 18:06:20 · 189 阅读 · 0 评论 -
程序员,什么是好的代码?
“什么狗屁代码,老子看了几个小时也没明白!”“这么烂的代码,到底是谁写的!”Bob大叔说:“衡量代码质量的唯一标准是阅读该代码时说脏话的次数”, 真是很有趣的说法。什么是好的代码? 这个问题可能是仁者见仁,智者见智。 我先说说我的看法,欢迎大家留言讨论。 我个人觉得好代码分为两个层面, 一个是道,一个术。1 好代码之“道”“道”这里指的设计,是对问题本质的洞察,是良好的抽象。对一个好的系统设...原创 2018-04-09 17:12:33 · 382 阅读 · 0 评论 -
《深入理解java虚拟机》学习笔记系列——java内存区域划分
Java 运行时数据区域的学习,是学习 jvm 以及 GC 机制的基础,也是深入理解 java 对象创建及运行过程的前提。废话不多说,直接进入正题:详细介绍程序计数器概念程序计数器是一个比较小的内存区域,用于指示当前线程所执行的字节码执行到了第几行,可以理解为是当前线程的行号指示器。字节码解释器在工作时,会通过改变这个计数器的值来取下一条语句指令。作用由于 Java 虚拟机的多线程是通过线程轮流切...原创 2018-04-08 14:34:47 · 131 阅读 · 0 评论 -
我教你一分钟如何撬开阿里爸爸的大门(想进阿里的都看过来)
前些日子我发了一篇 “如何让阿里巴巴为你转身?(内附面试真题)”类似于今天的文章。希望今天这篇文章能给帮助大家。希望大家能够看了这篇文章后可以顺利进入阿里。阿里味儿究竟是什么味儿?怎样才能闯进阿里?如何才能准确撩到面试官的心?这可能是迄今为止最全面的阿里面试技巧!(对,没有之一)然后给你们沉默三秒,在继续往后看。1:面试前的准备简历的准备如何让HR一眼就识到你?核心关键词:简洁...原创 2018-03-21 14:45:16 · 1155 阅读 · 0 评论 -
高级程序员是这样的
高级定义“高级程序员”的难题我是对“高级程序员”这个称号非常怀疑的,尤其因为当初在我有了9个月的正规编程经验,他们就为了给我涨工资而给了我这个称号之后。事实上,如果你找来两个有经验的程序员,让他们分别描述一下他们心中的“高级”是个什么样子,我敢保证他们的答案会大相径庭。“怎样才能叫高级程高序员”这个问题其实非常依赖于语境,而且弹性空间非常大,以致于在我们这个行业里各个公司都可以...原创 2018-03-30 14:05:27 · 283 阅读 · 0 评论 -
大师带你开悟高薪程序员之路——《编程之道》番外篇
编程之道》出自美国一位资深的程序设计师 Geoffrey James 之手。本文章是为番外篇,哈哈哈,有点儿无节操。1.1程序员见禅师:我学了 hello world 和水仙花数,想自己开发个操作系统,希望大师指点。禅师笑而不语,抓来一只鸡,在鸡腿上缠根线,他一拉线,鸡立即跌倒,鸡挣扎起来继续走,禅师又一拉,鸡又跌倒,如此反复八次之多。程序员若有所悟:“大师您是让百折不挠,...原创 2018-03-30 14:02:35 · 606 阅读 · 0 评论 -
自学真的是java开发的正确打开方式么?
Java在没有任何基础的情况下自学要多久呢,是不是很难,许多IT爱好者想通过自学掌握这门语言,这显然是不太现实的,Java的奥妙之深,之复杂是很难衡量的,而无论是网络上的教学视频还是书本里的知识都有一个循序渐进的过程,学会一步后才能了解下一步,如果问Java在没有任何基础的情况下自学多久能掌握,答案是很难学好,有关这个问题,动宝儿请教了Java培训机构的资深讲师。他给出了自学学不好Java的答...原创 2018-03-30 14:01:15 · 1119 阅读 · 0 评论 -
Java 10 新特性全览
在 Java 9 之后,Java 将采用基于时间发布的策略,每 6 个月一个版本。目前,Java 10 的新特性都已经确定。具体来看看。JEP 286: Local-Variable Type Inference局部变量的类型推导。很多人都会吐槽 Java 代码写起来太过繁琐,特别是涉及泛型的时候。就像 C++,也基于 auto关键字引入了类型推导功能。Java 也计划引入...原创 2018-03-22 16:39:37 · 324 阅读 · 0 评论 -
程序员如何学习新知识
想必大家都不是张无忌,人家三十年才可以练成的乾坤大挪移,张无忌大侠两个时辰就可以搞定,作为一个普通的程序员,经常遇到很多新技术和新知识,it界就是这样,日新月异,那么我们如何学习一门技术和新知识呢?下面是我粗浅的几点建议第一:精通一两门语言大家都听说过术业有专攻这个词,作为程序员一定要一个立身安命的技术,这个技术可以让你不失业,至少也能混口饭吃的就是需要精通一两门语言,对于你选择的这两...原创 2018-05-09 17:36:15 · 1993 阅读 · 0 评论 -
Java 编写的轻量级高性能手游服务端框架
mmorpg,是一个用java编写的轻量级高性能手游服务端框架。项目提供各种支持快速二次开发的组件,以及对生产环境的服务进行管理的工具。同时,为了使用户能够快速上手,项目提供了若干常用业务功能作为演示。项目特点支持socket/websocket接入,兼容手游/页游服务端架构有独立http后台网站,为游戏运维/运营提供支持框架提供多种组件,可以直接二次开发业务逻辑提供热更机制以及jmx接口,方便对...原创 2018-05-15 15:41:12 · 3348 阅读 · 0 评论 -
Java 已老,Kotlin 或将取而代之?
把你们的想法在在下面评论席上发表出来 小编会一个一个看的Java已经成为历史。它无法发展成现代语言,同时保证向后兼容性。但它为我们带来了最好的JVM生态系统,并引导了许多优秀语言的诞生,如Groovy、Scala、Clojure、Kotlin等。▌欢迎年纪最小的Kotlin!Kotlin诞生于2011年,但在去年Google宣布Kotlin成为安卓的官方开发语言之后迅速走红。Kot...原创 2018-06-26 17:07:14 · 271 阅读 · 0 评论 -
BATJ常见面试题汇总之一 让你瞬间升华起来
1.面向对象和面向过程的区别面向过程优点:性能比面向对象高,因为类调用时需要实例化,开销比较大,比较消耗资源;比如单片机、嵌入式开发、Linux/Unix等一般采用面向过程开发,性能是最重要的因素。缺点:没有面向对象易维护、易复用、易扩展面向对象优点:易维护、易复用、易扩展,由于面向对象有封装、继承、多态性的特性,可以设计出低耦合的系统,使系统更加灵活、更加易于维护缺点:性能比面向过程低2.Jav...原创 2018-06-24 20:58:58 · 898 阅读 · 0 评论 -
在北京三年java开发经验月薪16k,如何在四年经验时要到20k?
3年JAVA程序员的自评 半道出家的程序员,从不伪造简历,起点低,三年时才16k月薪*14在北京,认为混的比较差。当然补充一句,不要拿应届生的所谓待遇来比,不是你比不起,而是这么比没意义,应届生接触了四年计算机相关领域,你到现在接触这个行业也不到四年,应届生还有应届优势,你没有,所以这种半道出家的和应届生比毫无意义。举一个例子吧,那个培训班30人,上到框架那里就剩10个了,剩下20个与...原创 2018-06-23 21:10:01 · 1440 阅读 · 0 评论 -
Java虚拟机系列之Java内存结构简介
文我们将讲解Java虚拟机中各个区域以及各个区域的作用。一.程序计数器什么是程序计数器,有什么作用?程序技术器是一块比较小的内存区域,主要当做是线程中所执行的字节码的行号指示器,字节码解释器工作时就是通过改变这个计数器的值来选取下一个执行的字节码命令,分支、循环、跳转等基础功能都是依赖这个程序计数器来完成。有什么特点?Java虚拟机中的多线程是通过线程轮流切换分配处理器执行时间...原创 2018-06-15 14:21:31 · 144 阅读 · 0 评论 -
精选11道Java技术面试题并有答案(包含部分阿里和华为的面试题)
1. JVM的类加载机制是什么?有哪些实现方式?类加载机制:类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法去内,然后在堆区创建一个java.lang.Class对象,用来封装在方法区内的数据结构。类的加载最终是在堆区内的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。类加载有三种方式:1...原创 2018-06-22 17:16:37 · 201 阅读 · 0 评论 -
Java中如何实现线程的超时中断
背景之前在实现熔断降级组件时,需要实现一个接口的超时中断,意思是,业务在使用熔断降级功能时,在平台上设置了一个超时时间,如果在请求进入熔断器开始计时,并且接口在超时时间内没有响应,则需要提早中断该请求并返回。比如正常下游接口的超时时间为800ms,但是因为自身业务的特殊需求,最多只能等200ms,如果200ms之内没有数据返回,则返回降级数据。这里处理请求的线程可以看成是tomcat线程池...原创 2018-06-22 15:57:20 · 4205 阅读 · 0 评论 -
工作8年的Java程序员告诉你关于面试的六个知识点
正在为Java程序员岗位而做准备?只要准备好六部分的知识点,包你面试无压力! 0.基础部分无论是哪一种编程语言,基础永远是你不能忽视的部分。以下是比较常出现的十个点,当然最好是全都能熟悉。使用length属性获取数组长度,public、private、protected、friendly区别最有效率的方法算2*8等于几两个对象值相同,x.equal(y)==tru...原创 2018-06-13 15:22:11 · 2230 阅读 · 2 评论