[置顶] 菜鸟学习JVM(二)——分代回收

分代回收 上篇文章介绍了几种垃圾回收的算法,但这些算法当中并没有一个是完美的,可以代替其他所有算法,他们各自有各自的优势。因此JVM需要根据垃圾回收对象的特性,选择合适的回收算法。 JVM中大部分对象的生命周期非常短,朝生夕灭;还有一些对象,他们的生命周期很长,有的甚至长生不老、寿与JVM齐。于是就有了分代的概念。 分代 新生代(Young Generation) +Eden +...
阅读(3752) 评论(7)

[置顶] 菜鸟学习JVM(一)——垃圾回收算法

Java垃圾回收算法所有的垃圾回收算法都是为了解决三个问题: * 哪些内存需要回收 * 什么时候回收 * 怎么回收引用计数法(Reference Counting) 引用计数法原理很简单,给每个对象分配一个计数器,当被引用时就加一,引用失效就减一。计数器为零时,则说明该对象不可能再被使用。引用计数法效率不错,大部分情况下是个不错的算法,但它有一个非常明显的缺点,就是无法回收互相引用的对象,从...
阅读(4088) 评论(5)

[置顶] 菜鸟学Java(二十三)——Java内存分析

我们常说的Java内存主要分为四大块(寄存器不在考虑之内,我们无法用代码来操控它):stack(栈)、heap(堆)、data segment(数据区)、code segment(代码区)。它们的主要用途如下图所示:而在上面四个当中,我们经常谈论的是右边那两个家伙——stack和heap。今天我们就来聊聊Java代码在运行的过程中,在stack和heap中到底是什么样子的吧。我们先看下面一段代码:...
阅读(3366) 评论(14)

[置顶] 菜鸟要做架构师(二)——java性能优化之for循环

完成同样的功能,用不同的代码来实现,性能上可能会有比较大的差别,所以对于一些性能敏感的模块来说,对代码进行一定的优化还是很有必要的。今天就来说一下java代码优化的事情,今天主要聊一下对于for(while等同理)循环的优化。作为三大结构之一的循环,在我们编写代码的时候会经常用到。循环结构让我们操作数组、集合和其他一些有规律的事物变得更加的方便,但是如果我们在实际开发当中运用不合理,可能会给程序的...
阅读(11927) 评论(17)

[置顶] 菜鸟要做架构师(一)——如何快速开发中小型系统

俗话说:不想当项目经理的程序员不是好的架构师。相信每一个有上进心的程序员,都有一个架构师的梦。最近完成了一个中小型的项目,让我有了一些感受和想法,于是决定新开一个系列——《菜鸟要做架构师》。经常看我博客的人应该了解,我写了好几个“菜鸟”系列了。有很多人问我,你都是大牛了,怎么写博客还叫菜鸟?有人觉得太过低调了,也有人觉得这是在装B。其实呢,我是觉得自己真的还只是个菜鸟。就光拿计算机行业来说吧,就有...
阅读(9469) 评论(33)

[置顶] 菜鸟学SSH(十六)——Struts2内部是如何工作的

前面说完了Spring、Hibernate,很自然今天轮到struts了。struts的核心原理就是通过拦截器来处理客户端的请求,经过拦截器一系列的处理后,再交给Action。下面先看看struts官方的工作原理图:图1 struts原理图简单分析一下:首先客户端发来HttpServletRequest请求,传递给FilerDispatcher(ActionMapper是访问静态资源(struts...
阅读(3531) 评论(12)

[置顶] 菜鸟学SSH(十五)——简单模拟Hibernate实现原理

之前写了Spring的实现原理,今天我们接着聊聊Hibernate的实现原理,package com.tgb.hibernate; import java.lang.reflect.Method; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import...
阅读(3930) 评论(17)

[置顶] 菜鸟学SSH(十四)——Spring容器AOP的实现原理——动态代理

之前写了一篇关于IOC的博客——《Spring容器IOC解析及简单实现》,今天再来聊聊AOP。大家都知道Spring的两大特性是IOC和AOP,换句话说,容器的两大特性就是IOC和AOP。IOC负责将对象动态的注入到容器,从而达到一种需要谁就注入谁,什么时候需要就什么时候注入的效果,可谓是招之则来,挥之则去。想想都觉得爽,如果现实生活中也有这本事那就爽歪歪了,至于有多爽,各位自己脑补吧;而AOP呢...
阅读(6930) 评论(9)

[置顶] 菜鸟学SSH(十三)——Spring容器IOC解析及简单实现

最近一段时间,“容器”两个字一直萦绕在我的耳边,甚至是吃饭、睡觉的时候都在我脑子里蹦来蹦去的。随着这些天一次次的交流、讨论,对于容器的理解也逐渐加深。理论上的东西终归要落实到实践,今天就借助Spring容器实现原理,简单说说吧。简单的说,Spring就是通过工厂+反射将我们的bean放到它的容器中的,当我们想用某个bean的时候,只需要调用getBean("beanID")方法。原理简单介绍:Sp...
阅读(4681) 评论(11)

[置顶] 菜鸟学Java(二十)——你知道long和Long有什么区别吗?

Java的数据类型分两种:1.基本类型:如:long,int,byte,float,double,char  基本数据类型逻辑型  boolean整数型  byte short int long浮点型  float double字符型 char2.对象类型(类):Long,Integer,Byte,Short,Float,Double,Character,String,Boolean其它一切jav...
阅读(14677) 评论(19)

[置顶] 菜鸟学设计模式(一)——小单例有大秘密

单例模式大家并不陌生,也都知道它分为什么懒汉式、饿汉式之类的。但是你对单例模式的理解足够透彻吗?今天我带大家一起来看看我眼中的单例,可能会跟你的认识有所不同。 下面是一个简单的小实例: //简单懒汉式 public class Singleton { //单例实例变量 private static Singleton instance = null; //私有化的构造方法,保...
阅读(19664) 评论(189)

菜鸟调错(十一)——POI导出Excel报错No such file or directory

POI 3.8版本导出excel问题 使用poi 3.8版本导出excel时,在本地和测试环境都是好使的,但是部署到线上环境(linux+tomcat)后直接报错,报错日志如下:java.lang.RuntimeException: java.io.IOException: No such file or directory at org.apache.poi.xssf.strea...
阅读(1785) 评论(4)

菜鸟调错(十)——启动Tomcat报错“Unsupported major.minor version xxx ”

最近项目更新JDK,由之前的1.7更新到1.8。下载并安装好新的JDK以后,编译、启动Tomcat的时候,报错了,提示:“Unsupported major.minor version xxx ”。具体解决的过程就不在这详细说明了。跟大家分享一下解决方案吧。首先,出现这个错误是因为编译的JDK版本,跟运行时所用的JDK版本不一致所导致的。所以解决方案就是统一JDK的版本。具体如下:1,设置Mave...
阅读(2113) 评论(7)

菜鸟好文推荐(二十六)——避免Java堆空间错误的5个步骤

牢记以下五个步骤可以为你减少很多头痛的问题并且避免Java堆空间错误。通过计算预期的内存消耗。检查JVM是否有足够的可用空间。检查JVM的设置是否正确。限制节点使用交换空间和内存分页。设置实例slot数量小于JobTracker web GUI计算的数值。译者注:slot :slot不是CPU的Core,也不是memory chip,它是一个逻辑概念,一个节点的slot的数量用来表示某个节点的资源...
阅读(2006) 评论(2)

菜鸟好文推荐(二十五)——如何编写更棒的代码:11个核心要点

作为一个合格的程序员,有太多的理由促使你去编写干净利落且可读性强的代码。最重要的是因为你编写的代码,将来会有很多人一次次地阅读。当你有一天回过头来看自己的代码时,你就会明白编写优雅的代码是多么的重要。另外,如果别人来阅读你编写的代码,你是否想知道别人看到那些烂代码无比抓狂的感受。因此,花多一点的时间去编写优雅的代码,将来说不定会给你节省更多的时间。那么,如何编写更棒的代码,下面是11条基本规则:保...
阅读(2287) 评论(5)

菜鸟好文推荐(二十四)——用算法告诉你为何手机摔落时总是屏幕朝下?

日前,摩托罗拉的一项调查显示,英国有三分之一的人都在使用屏幕破裂的智能手机。  人们的手机摔落时,似乎总会遇到屏幕正面朝下的情况,从而导致屏幕四分五裂。这究竟是为何呢?  英国物理学家及阿斯顿大学客座教授Robert Matthews用理论解释了这一现象的发生。  Matthews教授在研究报告指出,人们在手拿智能电话通常不会握得很紧,用户的手指在手机重心下方,这样一来很容易导致手机跌落,一旦手机...
阅读(1979) 评论(8)

菜鸟好文推荐(二十三)——成为一名更好的程序员:如何阅读源代码

阅读源代码有许多益处。你会发现新的架构(construct)和库,与其他的代码维护者产生共鸣,但最重要的是学会如何组织代码,避免因内部极其复杂而变得不可维护。但是也有一个不好的地方,那就是阅读源代码太困难了。每当我看到一个新的代码库(code base)时,这种让人眩晕的感觉就充斥了我的大脑。我的内心告诉我压根不想趟眼前这趟浑水。这是(希望是)正常的反应。当我们的大脑接触过多的新东西,就会产生排斥...
阅读(2092) 评论(5)

菜鸟好文推荐(二十二)——让老板开心的程序员不是好程序员

我们每个人都有老板。我们也有为软件项目买单的客户,在合同期间他们也是我们意义上的老板。很明显,一个好员工/合作人员必须得让他的老板/客户高兴。但是,只有不好的员工才会朝着这个目标努力。如果将这个错误的目标定为追求的方向,那就只会毁了项目。专业的员工为项目而工作,而不是为老板。我们都是在为项目而工作,开发人员、设计师、程序员、项目经理、测试人员等等。老板也应该是项目中的一员。更正式地说,和我们每一个...
阅读(1919) 评论(3)

菜鸟好文推荐(二十一)——11款最棒的Linux数据恢复工具

无论你使用的是台式电脑还是笔记本,需要关注的重点之一都是如何保护好你的宝贵数据。因为总会有各种突发情况使你的系统崩溃,然后你要做的就是恢复数据。不管你怎么想,要是我失去了所有的数据却无法恢复的话,我会分分钟肢解了这台破电脑。不过幸好的是,现在市场上有不少的数据恢复工具,能帮助我们从系统的硬盘上恢复数据。如果你使用的是Linux操作系统,那么你一定想知道一旦硬盘崩溃的话又该如何保存和恢复数据。其实,...
阅读(2109) 评论(1)

菜鸟好文推荐(二十)——14个最佳的HTML/CSS设计和开发框架

专业的网页设计是既复杂又耗时的。它需要HTML和CSS框架的完美结合。这些框架不仅可以为设计方案增加特定的功能,还可以大大地节省时间和精力。高效的框架不仅是网站设计的基础,它提供的各种丰富多彩的功能,还提高整体的功能和性能。一个网站的外观和设计完全可以通过一些完美和可靠的工具而彻底改头换面。现在,越来越多的网页设计师和编辑人员选择使用CSS框架来创建网站。所以,如果你正在寻找一些高效的HTML和C...
阅读(2334) 评论(2)

菜鸟好文推荐(十九)——提高Java架构师和程序员效率的10个工具

Java受到全球百万计开发者的追捧,已经演变为一门出色的编程语言。最终,这门语言随着技术的变化,不断的被改善以迎合变化的市场需求。无论你是否拥有一家科技公司,软件已经成为几乎每一个企业不可或缺的一部分,为了吸引你潜在的顾客,你应该交付给客户一个技术上有创新的产品。那么,Java能提供这样的平台帮你实现这一技术创新。Java贡献者们一直保持着大幅度的更新,以提供最新最强大的功能。最近发布的 Java...
阅读(2665) 评论(1)

菜鸟好文推荐(十八)——月薪3万的程序员都避开了哪些坑?

程序员薪水有高有低,有的人一个月可能拿30K、50K,有的人可能只有2K、3K。同样有五年工作经验的程序员,可能一个人每月拿20K,一个拿5K。是什么因素导致了这种差异?我特意总结了容易导致薪水低的九大行为表现,避开这些大坑,你就离高薪不远了。习惯即刻回报他不懂得只有春天播种,秋天才会有收获。刚刚付出一点点,甚至还没有付出,就想要得到回报。技术刚刚掌握,能一边百度一边干活了就觉得该拿到多少多少钱了...
阅读(2730) 评论(2)

菜鸟好文推荐(十七)——人人都会的35个Jquery小技巧

收集的35个 jQuery 小技巧/代码片段,可以帮你快速开发.  1. 禁止右键点击$(document).ready(function(){ $(document).bind("contextmenu",function(e){ return false; }); });   2. 隐藏搜索文本框文字Hide when clicked in the search...
阅读(2327) 评论(1)

菜鸟好文推荐(十六)——Git使用详细教程

一:Git是什么?Git是目前世界上最先进的分布式版本控制系统。二:SVN与Git的最主要的区别?SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而干活的时候,用的都是自己的电脑,所以首先要从中央服务器哪里得到最新的版本,然后干活,干完后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,如果在局域网还可以,带宽够大,速度够快,如果在互联网下,如果网速慢的话,就纳...
阅读(5246) 评论(1)

菜鸟学JS(六)——JS在文本域光标位置插入文本

很久没有写关于JS的博客了,说实话,对于JS小弟仅限于会简单使用的程度。作为一个非前端人员,个人觉得更好更深入的掌握JS还是很有必要的。这不仅仅可以提高自身价值,更重要的是很多情况下使用JS可以更好的解决问题,带来更好的用户体验。扯得稍微远了一些,回归正题,今天跟大家分享一个很实用的小实例——在光标处插入文本。JS代码: function insertAtCursor(myField, my...
阅读(2962) 评论(1)

菜鸟教程之工具使用(二十)——解决m2eclipse插件无法执行Maven命令

在使用m2eclipse编译的时候报错,错误信息如下:-Dmaven.multiModuleProjectDirectory system propery is not set. Check $M2_HOME environment variable and mvn script match.  Maven3.3.x才有这个问题,之前的版本并不会出现这个错误,所以想只要换成3.3.x以前的版本就...
阅读(1700) 评论(3)

菜鸟好文推荐(十五)——9个基于Java的搜索引擎框架

在这个信息相当繁杂的互联网时代,我们已经学会了如何利用搜索引擎这个强大的利器来找寻目标信息,比如你会在Google上搜索情人节如何讨女朋友欢心,你也会在百度上寻找正规的整容医疗机构(尽管有很大一部分广告骗子)。那么如果在你自己开发的网站系统中需要能让用户搜索一些重要的信息,并且能以结构化的结果展现给用户,下面分享的这9款Java搜索引擎框架或许就可以帮助到你了。1、Java 全文搜索引擎框架 Lu...
阅读(1907) 评论(1)

菜鸟好文推荐(十四)——Java 常见异常及趣味解释

看到一篇关于Java异常的趣味介绍,感觉挺好玩的,分享给大家:常见 Java 异常解释:(译者注:非技术角度分析。阅读有风险,理解需谨慎:))java.langArithmeticException你正在试图使用电脑解决一个自己解决不了的数学问题,请重新阅读你的算术表达式并再次尝试。ArrayIndexOutOfBoundsException请查看 IndexOutOfBoundsExceptio...
阅读(1597) 评论(0)

菜鸟好文推荐(十三)——关于代码审查的几点建议

Code Review 即代码审查是软件开发中常用的手段,它和 QA 测试相比,更容易发现架构以及时序相关等较难发现的问题,还可以帮助团队成员统一编程风格,提高编程技能等。代码审查被公认为是一个提高代码质量的有效手段。目前很多开发团队虽然进行了代码审查,但是他们可能没有有效、合理的进行代码审查,以致没有很好达到代码审查的目的。近日,BIDS 贸易科技有限公司的 CTOJim Bird 总结了关于代...
阅读(1366) 评论(0)
215条 共11页1 2 3 4 5 ... 下一页 尾页
    我的微博
    个人资料
    • 访问:1578075次
    • 积分:25161
    • 等级:
    • 排名:第247名
    • 原创:209篇
    • 转载:2篇
    • 译文:4篇
    • 评论:4969条
    博客专栏