本篇文章是 Stack Overflow 周报的第二周,共收集了 4 道高关注的问题和对应的高赞回答.公众号「渡码」为日更,欢迎关注. DAY1.  serialVersionUID 的重要性 关注: 2820,最高赞: 2152 这篇文章介绍一下 Java 中 serialVersionUID 属性的含义以及重要性.从属性可以看出它与序列化有关系,所以在  java.io.Serializable 接口的注释中对它有详细的介绍,下面我们对照文档注释来学习一下.Java 中每个可序列化的类都有一…
我从 Stack Overflow 上找的了一些高关注度且高赞的问题.这些问题可能平时我们遇不到,但既然是高关注的问题和高点赞的回答说明是被大家普遍认可的,如果我们提前学到了以后不管工作中还是面试中处理起来就会更得心应手.本篇文章是第一周的内容,一共 5 个题目.我每天都会在公众号发一篇,你如果觉得这个系列对你有价值,欢迎文末关注我的公众号. DAY1.  复合运算符中的强制转换 今天讨论的问题是“符合运算符中的强制转换”.以 += 为例,我编写了如下代码,你可以先考虑下为什么会出现下面这种情况…
Java高并发--CPU多级缓存与Java内存模型 主要是学习慕课网实战视频<Java并发编程入门与高并发面试>的笔记 CPU多级缓存 为什么需要CPU缓存:CPU的频率太快,以至于主存跟不上,这样在处理器时钟周期内,CPU常常需要等待主存,浪费了资源.所有缓存的出现是为了缓解CPU和主存之间速度不匹配的问题--将运算所需数据复制到缓存中,使得运算能快速进行:当运算结束后再将缓存同步回内存中,这样处理器无需等待缓慢的内存读写. 缓存并非存储了所有的数据,那么它存在的意义是什么? 时间局部性:如…
这是 Stack Overflow 第三周周报,由于本周周四外出,所以只有三篇内容.两篇 Java.一篇 Python.公众号「渡码」为日更,欢迎关注. DAY1. 枚举对象 == 和 equals 区别 我们在比较枚举常量时可以使用 == 运算符或者 equals 方法,如: 先考虑第一个问题:为什么可以用 == 判断枚举常量相等? 我们都知道判断对象的相等应该用 equals 方法,== 只是判断对象的引用是否相等,枚举常量能够使用 == 判断相等是因为枚举常量除了定义时初始化的对象外,没有…
这是 Stack Overflow 第三周周报,本周加入了 Python 的内容,原计划两篇 Java.两篇 Python.但明天过节所以今天就先把周报发了,两篇 Java.一篇 Python.公众号「渡码」为日更,欢迎关注. DAY1. 使用随机数打印"hello world" 今天我们看一个有意思的例子,看看下面的代码为什么每次运行都能输出 "hello world". public static String randomString(int i) { Ran…
写在前面 在Java中提供了synchronized关键字来保证只有一个线程能够访问同步代码块.既然已经提供了synchronized关键字,那为何在Java的SDK包中,还会提供Lock接口呢?这是不是重复造轮子,多此一举呢?今天,我们就一起来探讨下这个问题. 再造轮子? 既然JVM中提供了synchronized关键字来保证只有一个线程能够访问同步代码块,为何还要提供Lock接口呢?这是在重复造轮子吗?Java的设计者们为何要这样做呢?让我们一起带着疑问往下看. 为何提供Lock接口? 很多…
这个问题一般会出现在稍微高端一点的 Java 面试环节.要求面试者不仅对 Java 基础知识熟悉,更重要的是要了解内存模型. Java 对象模型 HotSpot JVM 使用名为 oops (Ordinary Object Pointers) 的数据结构来表示对象.这些 oops 等同于本地 C 指针. instanceOops 是一种特殊的 oop,表示 Java 中的对象实例. 在 Hotspot VM 中,对象在内存中的存储布局分为 3 块区域: 对象头(Header) 实例数据(Inst…
Properties常用于项目中参数的配置,当项目中某段程序需要获取动态参数时,就从Properties中读取该参数,使程序是可配置的.灵活的. 有些配置参数要求立即生效,有些则未必: 一.实时性要求非常高.项目中,有些参数要求实时性非常高,即在系统运行中,IT人员修改了该参数值,该新参数值要求立即在程序中生效: 二.实时性要求不高.其实,并不是每个配置参数都要求实时性那么高,有些配置参数基本不会在项目运行当中修改,或即使在运行当中修改,也只要求其在下一次项目启动时生效. 针对第二种情况,鉴于程…
atitit.java thumb生成高质量缩略图 php .net c++ 1. 图像缩放(image scaling)---平滑度(smoothness)和清晰度(sharpness) 1 2. 图片缩放原理与opencv的处理方法 1 3. 最近邻插值(简单,不推荐) 2 4. 双线性插值 3 5.  三次卷积插值 3 6. java-image-scaling是一个开源高质量的图像缩略图类 4 7. Thumbnailator    百度8w 4 8. javashop中Jmagick缩…
在逛 Stack Overflow 的时候,发现了一些访问量像阿尔卑斯山一样高的问题,比如说这个:Java 到底是值传递还是引用传递?访问量足足有 188万+,这不得了啊!说明有很多很多的程序员被这个问题困扰过.实话实说吧,我就是其中之一. 来回顾一下提问者的问题: 我一直认为 Java 是按引用传递的,但是我看一些博客上说不是的.我就纳闷了,Java 到底是值传递还是引用传递?值传递和引用传递有什么区别呢? 如果你也曾被这个问题困扰过,或者正在被困扰,就请随我一起来梳理一下问题的答案.打怪进阶…
一 序言 随着软件项目开发需求的增多,拥有一款优秀的.顺手的IDE(Integrated Development Environment)对程序员来说显得格外重要.本文就Java程序开发,选择了3款IDE来做调研分析,其中两款比较有代表性的是:Eclipse.IntelliJ IDEA,另外一款是我个人比较喜欢的轻量级编辑器:Sublime Text  3.下面是这些工具的下载地址: Eclipse:https://www.eclipse.org/downloads/ Sublime Text:…
  通常情况下,性能报告中只说CPU使用率高的时候,并不能帮助定位问题.因为CPU高会有多种不同的情况.CPU有五种状态(us sy id wa st), 在vmstat中能显示出来,这个想必很多人都清楚.在代码消耗CPU的时候(这也是通常性能分析中会遇到的),是US状态的CPU.当然还存在一种情况,就是代码产生的系统调用特别高,这种情况下SY的CPU也会高(这种情况比较少见,在我的职业生涯中只见过一次).对于JAVA语言来说,我们不需要特别复杂的profile工具就可以做到定位到代码. 在写具…
转自:https://blog.csdn.net/gududedabai/article/details/80816488…
There are many kinds of testing which really made me confused. To be honest, I've never heard of something like Mock testing, stub testing. I had to learn a lot before I can know little about testing. Whenever I saw something which was written by som…
前言: 在遨游了一番 Java Web 的世界之后,发现了自己的一些缺失,所以就着一篇深度好文:知名互联网公司校招 Java 开发岗面试知识点解析 ,来好好的对 Java 知识点进行复习和学习一番,大部分内容参照自这一篇文章,有一些自己补充的,也算是重新学习一下 Java 吧. 前序文章链接: Java 面试知识点解析(一)--基础知识篇 (一)高并发编程基础知识 这里涉及到一些基础的概念,我重新捧起了一下<实战 Java 高并发程序设计>这一本书,感觉到心潮澎湃,这或许就是笔者叙述功底扎实的…
解决 Twitter的“问题”就像玩玩具一样,这是一个很有趣的扩展性比喻.每个人都觉得 Twitter很简单,一个菜鸟架构师随便摆弄一下个可伸缩的 Twitter就有了,就这么简单.然而事实不是这样, Twitter的工程副总裁 Raffi Krikorian细致深入的描述了在 Twitter在可伸缩性上的演化过程,如果你想知道 Twitter的如何工作—从这里开始吧. Twitter发展太快,一切转瞬即过,但 Twitter已经长大了.它从一开始一个在Ruby on Rails上苦苦挣扎的小网…
这是java高并发系列第17篇. 本文主要内容: 介绍CyclicBarrier 6个示例介绍CyclicBarrier的使用 对比CyclicBarrier和CountDownLatch CyclicBarrier简介 CyclicBarrier通常称为循环屏障.它和CountDownLatch很相似,都可以使线程先等待然后再执行.不过CountDownLatch是使一批线程等待另一批线程执行完后再执行:而CyclicBarrier只是使等待的线程达到一定数目后再让它们继续执行.故而Cycli…
java中的线程池,这一篇就够了 java高并发系列第18篇文章. 本文主要内容 什么是线程池 线程池实现原理 线程池中常见的各种队列 自定义线程创建的工厂 常见的饱和策略 自定义饱和策略 线程池中两种关闭方法有何不同 扩展线程池 合理地配置线程池 线程池中线程数量的配置 什么是线程池 大家用jdbc操作过数据库应该知道,操作数据库需要和数据库建立连接,拿到连接之后才能操作数据库,用完之后销毁.数据库连接的创建和销毁其实是比较耗时的,真正和业务相关的操作耗时是比较短的.每个数据库操作之前都需要创…
这是java高并发系列第19篇文章. 本文主要内容 介绍Executor框架相关内容 介绍Executor 介绍ExecutorService 介绍线程池ThreadPoolExecutor及案例 介绍定时器ScheduledExecutorService及案例 介绍Excecutors类的使用 介绍Future接口 介绍Callable接口 介绍FutureTask的使用 获取异步任务的执行结果的几种方法 Executors框架介绍 Executors框架是Doug Lea的神作,通过这个框架…
第1天:必须知道的几个概念 第2天:并发级别 第3天:有关并行的两个重要定律 第4天:JMM相关的一些概念 第5天:深入理解进程和线程 第6天:线程的基本操作 第7天:volatile与Java内存模型 第8天:线程组 第9天:用户线程和守护线程 第10天:线程安全和synchronized关键字 第11天:线程中断的几种方式 第12天JUC:ReentrantLock重入锁 第13天:JUC中的Condition对象 第14天:JUC中的LockSupport工具类,必备技能 第15天:JUC…
Java高并发系列--检视阅读 参考 java高并发系列 liaoxuefeng Java教程 CompletableFuture AQS原理没讲,需要找资料补充. JUC中常见的集合原来没讲,比如ConcurrentHashMap最常用的,后面的都很泛,没有深入,虎头蛇尾. 阻塞队列讲得不够深入. 并发概念词 同步(Synchronous)和异步(Asynchronous) 同步和异步通常来形容一次方法调用,同步方法调用一旦开始,调用者必须等到方法调用返回后,才能继续后续的行为.异步方法调用更…
面试 一般都是由浅到深去问,思路是: 先考察基础是否过关,因为基础知识决定了一个技术人员发展的上限 再通过深度考察是否有技术热情和深度以及技术的广度 同时可能会提出一些质疑和挑战来考察候选人能否与有不同意见的人沟通 考察内容和方式 基础知识 技术上深度与广度兼顾 基础知识: 考察基础的时候一般都不会深入地去问,主要目的是考察知识面 计算机理论基础: 计算机网络 数据结构 计算机组成原理 计算机操作系统 JDK: 源码 集合 BIO或者NIO annotation等 JVM: 内存模型 类加载原理…
测试你是否和LTC水平一样高Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 17388 Accepted Submission(s): 5772 Problem Description大家提到LTC都佩服的不行,不过,如果竞赛只有这一个题目,我敢保证你和他绝对在一个水平线上!你的任务是:计算方程x^2+y^2+z^2= num的一个正整数解.…
传统的Java应用部署模式,一般遵循“硬件->操作系统->JVM->Java应用”这种自底向上的部署结构,其中JEE应用可以细化为“硬件->操作系统->JVM->JEE容器->JEE应用”的部署结构.这种部署结构往往比较重,操作系统.JVM和JEE容器造成的overhead很高,而很多时候一个Java应用并不需要跑满整个硬件的资源,导致这种模式的资源利用率是比较低的. 而另一方面,硬件虚拟化技术逐渐成熟:VMware Hypervisor.Xen.KVM.Powe…
最近项目有个需求,在新添加商户的时候,用户输入商户名称后,如果系统中有类似的商户名称,直接显示出来,如下图的效果: 实现这个功能,直接使用了JQuery UI 插件 目前我使用的实现版本是: 网友可以自行下载好js文件,css文件,放在你项目可以访问到位置就可以了. 引入这些文件之后,你就可以复制使用下面的页面来测试(注意引用文件的路径): <!doctype html><html lang="en"><head> <meta charset=…
视频课程内容包含: 高级 Java 架构师包含:Spring boot.Spring cloud.Dubbo.Redis.ActiveMQ.Nginx.Mycat.Spring.MongoDB.ZeroMQ.Git.Nosql.Jvm.Mecached.Netty.Nio.Mina.性能调优.高并发.tomcat 负载均衡.大型电商项目实战.高可用.高可扩展.数据库架构设计.Solr 集群与应用.分布式实战.主从复制.高可用集群等高端视频. 15 套目录(以下目录全是视频): 第一套:高级架构师…
用于快速排查Java的CPU性能问题(top us值过高),自动查出运行的Java进程中消耗CPU多的线程,并打印出其线程栈,从而确定导致性能问题的方法调用.目前只支持Linux.原因是Mac.Windows的ps命令不支持列出进程的线程id,更多信息参见#33,欢迎提供解法. PS,如何操作可以参见@bluedavy的<分布式Java应用>的[5.1.1 CPU消耗分析]一节,说得很详细: top命令找出消耗CPU高的Java进程及其线程id: 开启线程显示模式(top -H,或是打开top…
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1407 测试你是否和LTC水平一样高 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 14769    Accepted Submission(s): 4843 Problem Description 大家提到LTC都佩服的不行,不过,如果竞…
MongoDB Sharding架构下连接数很容易达到很高,这里连接数分为几个概念:tcp 连接数 netstat可以统计的,一般这个是最高.如果mongod/mongos在同一台服务器,更明显.参考命令:netstat -ant|awk '{print $5}' |awk -F: '{print $1}'|sort |uniq -c|sort -rnmongos/mongod 连接数 mongostat/db.serverStatus()/connPoolStats可统计.连接数多高算高呢?这…