杂项
文章平均质量分 84
百里挑一
这个作者很懒,什么都没留下…
展开
-
关于Log4j
Log4j是Apache的一个开源项目,通过使用Log4j可以灵活的配置和控制日志功能,将日志信息输出到控制台、文件、GUI组件、套接字服务器指定端口的服务、Windows NT的事件记录器、UNIX Syslog守护进程等,同时也可以控制每一条日志的输出格式以及日志的级别。Log4j通常由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地和日志信息的输出格式。日志信息的优先级从高到低有F原创 2016-12-02 16:08:14 · 474 阅读 · 0 评论 -
框架开发之Java注解的妙用
注解的好处:1.能够读懂别人写的代码,特别是框架相关的代码。2.本来可能需要很多配置文件,需要很多逻辑才能实现的内容,就可以使用一个或者多个注解来替代,这样就使得编程更加简洁,代码更加清晰。3.(重点)刮目相看。(但是怎么样才能让别人刮目相看呢?会用注解不是目的,最重要的是要使用自定义注解来解决问题。)举个栗子:如果面试的时候,你跟老板说你会使用注解,老板觉得你原创 2017-02-21 16:32:29 · 1852 阅读 · 2 评论 -
技术人的基础生存技能:高效用 Google
如果票选近二十年最伟大的发明,我相信搜索引擎肯定会占据一个不容小觑的位置,它不单是一项发明,更是一项成就,最大程度消灭了信息的不平等。既然人人都可以接触到海量的信息,那么衡量信息财富多寡就只剩下技巧这惟一的标准了:善用搜索引擎的都是信息时代的富翁,不懂搜索引擎的都是信息时代的负翁。而像程序员这种必须终生学习的职业,搜索引擎就是我们的左膀右臂。懂搜索引擎就是我们的基本功,不,应该是童子功。只原创 2017-01-03 17:45:51 · 326 阅读 · 0 评论 -
单点登录原理与简单实现
一、单系统登录机制1、http无状态协议web应用采用browser/server架构,http作为通信协议。http是无状态协议,浏览器的每一次请求,服务器会独立处理,不与之前或之后的请求产生关联,这个过程用下图说明,三次请求/响应对之间没有任何联系但这也同时意味着,任何用户都能通过浏览器访问服务器资源,如果想保护服务器的某些资源,必须限制浏览器请求;要限制浏览器原创 2016-12-16 17:27:18 · 426 阅读 · 0 评论 -
jdk线程池中调整coreSize无效的问题分析及处理
近期在ETL项目中,增加一个用于监控队列数和当前线程数之间的关系,并动态调节线程池大小的一个功能。其作用机制即是指当发现队列中任务太多时,能够增大线程数,以达到使用更多的线程来运行任务的目的。相应的伪代码如下所示:extThreadPoolExecutor.setCorePoolSize(newCorePoolSize);extThreadPoolExecutor.prestartCor原创 2016-11-28 13:03:21 · 1517 阅读 · 0 评论 -
谈谈HashMap线程不安全的体现
HashMap的原理以及如何实现,之前在JDK7与JDK8中HashMap的实现中已经说明了。那么,为什么说HashMap是线程不安全的呢?它在多线程环境下,会发生什么情况呢?1. resize死循环我们都知道HashMap初始容量大小为16,一般来说,当有数据要插入时,都会检查容量有没有超过设定的thredhold,如果超过,需要增大Hash表的尺寸,但是这样一来,整个H原创 2016-11-28 13:01:42 · 683 阅读 · 0 评论 -
IO模型
前言说到IO模型,都会牵扯到同步、异步、阻塞、非阻塞这几个词。从词的表面上看,很多人都觉得很容易理解。但是细细一想,却总会发现有点摸不着头脑。自己也曾被这几个词弄的迷迷糊糊的,每次看相关资料弄明白了,然后很快又给搞混了。经历过这么几次之后,发现这东西必须得有所总结提炼才不至于再次混为一谈。尤其是最近看到好几篇讲这个的文章,很多都有谬误,很容易把本来就搞不清楚的人弄的更加迷糊。最适合原创 2016-11-28 12:54:04 · 365 阅读 · 0 评论 -
Java中的4种引用类型
对象的强、软、弱和虚引用在JDK 1.2以前的版本中,若一个对象不被任何变量引用,那么程序就无法再使用这个对象。也就是说,只有对象处于可触及(reachable)状态,程序才能使用它。从JDK 1.2版本开始,把对象的引用分为4种级别,从而使程序能更加灵活地控制对象的生命周期。这4种级别由高到低依次为:强引用、软引用、弱引用和虚引用。1、强引用(StrongReference)强引用是原创 2016-12-09 14:56:21 · 585 阅读 · 0 评论 -
为什么1000 == 1000返回为False,而100 == 100会返回为True?
如果你运行如下代码:Integer a = 1000, b = 1000; System.out.println(a == b);//1Integer c = 100, d = 100; System.out.println(c == d);//2你会得到以下运行结果:falsetrue我们知道,如果两个引用指向同一个对象,那么==就成立;反之原创 2016-11-25 14:22:11 · 473 阅读 · 0 评论 -
如何通过编程发现Java死锁
死锁是指,两个或多个动作一直在等待其他动作完成而使得所有动作都始终处在阻塞的状态。想要在开发阶段检测到死锁是非常困难的,而想要解除死锁往往需要重新启动程序。更糟的是,死锁通常发生在负载最重的生产过程中,而想要在测试中发现它,十分不易。之所以这么说,是因为测试线程之间所有可能的交叉是不现实的。尽管出现了一些静态分析库可以帮助我们发现可能出现的死锁,我们还是有必要在运行时检测到死锁,并且得到有用的信息原创 2016-11-14 11:25:27 · 268 阅读 · 0 评论 -
算法复杂度速查表
这篇文章覆盖了计算机科学里面常见算法的时间和空间的大 OBig-O 复杂度。我之前在参加面试前,经常需要花费很多时间从互联网上查找各种搜索和排序算法的优劣,以便我在面试时不会被问住。最近这几年,我面试了几家硅谷的初创企业和一些更大一些的公司,如 Yahoo、eBay、LinkedIn 和 Google,每次我都需要准备这个,我就在问自己,“为什么没有人创建一个漂亮的大 O 速查表呢?”所以,为原创 2016-11-23 14:10:05 · 236 阅读 · 0 评论 -
Java中创建对象的5种不同方法
作为Java开发者,我们每天都会创建大量的对象,但是,我们总是使用管理依赖系统(如Spring框架)来创建这些对象。其实还有其他方法可以创建对象,在接下来的文章中我会进行详细介绍。1.使用new关键字这是最常见的创建对象的方法,并且也非常简单。通过使用这种方法我们可以调用任何我们需要调用的构造函数。Employee emp1 = new Employee();0: new原创 2016-11-23 13:05:53 · 494 阅读 · 0 评论 -
关于日志记录的一些感想
刚刚我们组的产品经理和法务部的同事找我,说公司正在和某个客户打官司。为了反驳客户的某一些说辞,需要我帮忙找一找某个客户的某一份合同文件的操作日志。也就是:需要确定就是这个客户在某一天的某个时间进入我们的某个系统进行了「合同签署」这个操作事后我想了一下,里面确实有很多我们平时设计系统,实现系统功能时需要注意的一些点,所以我基于我目前的眼界和经验,总结一下,希望对大家有所帮助,争取不浪原创 2016-11-23 11:32:10 · 307 阅读 · 0 评论 -
Java性能优化全攻略
让Java应用程序运行是一回事,但让他们跑得快就是另外一回事了。在面对对象的环境中,性能问题就像来势凶猛的野兽。但JVM的复杂性将性能调整的复杂程度增加了一个级别。这里Refcard涵盖了JVM internals、class loading(Java8中更新以映射最新的元空间)、垃圾回收、故障诊断、检测、并发性,等等。性能测试工具Loadrunner(https://www.evget.原创 2016-11-23 11:30:42 · 483 阅读 · 0 评论 -
对Java意义重大的7个性能指标
本文中,小编搜集了7个最有影响的衡量标注,让你可以不依赖日志文件来了解应用程序。现在,让我们看看这些性能指标,并了解如何查看并收集它们:1.响应时间和吞吐量根据应用程序的响应时间可以知道程序完成传输数据所用的时间。也可以从HTTP请求级别,或者成为数据库级别来看。对那些缓慢的查询你需要做一些优化来缩短时间。吞吐量是另一个角度衡量传输数据的指标,是指单位时间内系统处理的客户请求的数量原创 2016-11-23 11:26:03 · 1308 阅读 · 0 评论 -
Java书推荐
Java1. 《Java核心技术 卷1 基础知识》2. 《Java核心技术 卷II 高级特性》Java 领域最有影响力和价值的著作之一。其中《卷1》主讲基础知识,全面讲解 Java 语言的核心概念、语法、重要特性和开发方法,是 Java 入门必备,重在理论,可多刷,打下坚实基础。《卷2》主讲高级特性,深入解析 Java 中的高级特性和开发技巧,是 Java 进阶必备转载 2017-02-21 16:34:12 · 597 阅读 · 0 评论