一起学Java(22)-[JDK篇]学习Java中String的字符编码和代理对机制
上文《一起学Java(21)-[配置篇]Gradle控制台乱码问题配置和解决》中,我们解决了Gradle控制台字符乱码问题,这个问题实际是在研究Java String的字符编码机制时产生的。本文回归正题,研究下Java中String的字符编码和代理对机制。
系统梳理 Java 基础、Log 日志门面演进、Spring 核心、Netty 高性能网络通信与 JVM 字节码研究。
上文《一起学Java(21)-[配置篇]Gradle控制台乱码问题配置和解决》中,我们解决了Gradle控制台字符乱码问题,这个问题实际是在研究Java String的字符编码机制时产生的。本文回归正题,研究下Java中String的字符编码和代理对机制。
在《一起学Java(18)-[配置篇]一个诡异(有趣)的Gradle Wrapper问题》中,我们解决了一个有趣的Gradle Wrapper使用问题,这次我们在研究Java String编码的时候,又遇到了Gradle使用中的控制台乱码问题,遂记录并分享问题的现象和解决的过程。
![一起学Java(21)-[配置篇]Gradle控制台乱码问题配置和解决](/images/post/java-go-21/java-build-and-run.png)
在《一起学Java(19)-[测试篇]教你通过Gradle配置和使用JUnit5》中,我们引入了JUnit5单元测试框架。在进行单元测试时,我们不仅要关注测试的正确性和完整性,还要关注测试的覆盖率。覆盖率反映了测试用例对代码的覆盖程度,能够帮助我们发现潜在的测试盲区,确保代码的每个部分都得到了适当的验证。 为了更好地分...
![一起学Java(20)-[测试篇]教你通过Gradle配置和使用JaCoCo单元测试覆盖率检查工具](/images/post/java-go-20/jacoco-report.png)
前文已详细介绍了JUnit框架的特点以及JUnit5和JUnit4版本的核心差异(《一起学Java(17)-[测试篇]教你认识Java单元测试框架JUnit,JUnit5和JUnit4区别详解》)。本文将进入应用实战,详细介绍如何在Gradle项目中引入、配置和使用JUnit5测试框架。
![一起学Java(19)-[测试篇]教你通过Gradle配置和使用JUnit5](/images/post/java-go-19/junit5-report.png)
在研究JUnit使用的时候,遇到了一个有趣的Gradle Wrapper使用问题,经过若干天的研究,终于找到并解决了问题,记录分享如下,这也是我们一起学Java过程中遇到的问题。
在上一篇文章中(《一起学Java(16)-[测试篇]教你知道什么是单元测试,单元测试的特点以及Java主要的单元测试框架》),我们介绍了什么是单元测试,单元测试的特点以及Java主要的单元测试框架。其中提到,JUnit是Java世界中最广泛使用且最具影响力的单元测试框架。本文将重点介绍JUnit框架,特别是其最新版本J...
看起来好像学习的主题有些跳跃,因为正在研究Java单元测试覆盖率统计相关问题,所以跳到单测这个领域。为了更好理解这个问题,我从什么是单元测试学起,逐步深入到如何做单元测试、单元测试效果如何检查,最后落到Jacoco单元测试覆盖率工具介绍和使用这个主题。个人感觉这个路径还是比较便于理解的。 本文主要聚焦什么是单元测试,单...
在文章《2024年主流使用的JDK版本及其核心特性介绍》中,我们详细介绍了Java8、Java11、Java17等主流Java版本主要新增特性。针对其中的一些核心特性,展开研究一二。
研究完Log4j2与SLF4J集成的原理(一起学Java(13)-[日志篇]教你分析SLF4J和Log4j2源码,掌握SLF4J与Log4j2桥接集成原理),学习如何真正应用Log4j2。
![一起学Java(14)-[日志篇]教你用透Log4j2,掌握Log4j2配置原理和实际应用](/images/post/java-go/log4j2-config.png)
研究完SLF4J和Logback这种无缝集成的方式(一起学Java(12)-[日志篇]教你分析SLF4J源码,掌握SLF4J如何与Logback无缝集成的原理),继续研究Log4j2和SLF4J这种需要桥接集成的方式。
继续完成上篇(一起学Java(11)-[日志篇]教你分析SLF4J源码,掌握Logger接口实现类加载原理)留给自己的任务,研究Logback是如何和SLF4J无缝集成的。
![一起学Java(12)-[日志篇]教你分析SLF4J源码,掌握SLF4J如何与Logback无缝集成的原理](/images/post/java-go-12/logback-provider.png)
最近各种事情很忙,今天继续。在第十篇(一起学Java(10)-为项目引入Log框架(Log篇二-引入SLF4J接口层框架))中,我们为项目(https://github.com/lihongzheshuai/java-all-in-one)引入了SLF4J和Logback框架,按计划通过阅读源码研究下SLF4J的实现原...
![一起学Java(11)-[日志篇]教你分析SLF4J源码,掌握Logger接口实现类加载原理](/images/previews/concrete-bindings.png)
在上一节一起学Java(9)-为项目引入Log框架(Log篇一-框架演进和设计逻辑中,我们已经理清了Java日志框架的演进过程、设计思想和核心框架。从这节开始,进入实战研究环节。
在项目开发中,日志记录(Logging)扮演着至关重要的角色。日志是开发人员调试代码和诊断问题的重要工具。例如:在生产环境中,开发人员通常无法直接调试代码,日志提供了一个详细的执行轨迹,帮助开发人员重现问题。因此,在进入其他框架和代码研究前,我首先想到的就是先完成项目日志框架的引入,进一步夯实基础工作。 要完成Log框...
![一起学Java(9)-[日志篇]教你掌握Java日志框架的演进和设计逻辑](/images/previews/concrete-bindings.png)
我们的java-all-in-one项目的第一个PR比我预想的来的早了很多。感谢来自我的QQ群友(插播广告,欢迎大家加入Java技术交流群982860385)的PR。今天就介绍一下这次PR和项目调整的主要内容。
![一起学Java(8)-[起步篇]教你如何进行本项目的PR和将IDE相关文件移除版本控制](/images/post/java-go-8/firstpr_2024-08-04_14-48-41.png)
在现代软件开发中,README文件是任何项目中不可或缺的一部分。它不仅为用户提供了项目的基本信息,还指导开发者如何使用、安装和贡献代码。其实,早在2014年的文章《为项目编写Readme.MD文件》中,我就提到过关于README的事情。今天为了我们的项目,旧事重提也为让大家再get一个知识点,我们再来说说这个READM...
![一起学Java(7)-[起步篇]教你为本开源项目编写README文件](/images/post/java-go-7/readme-preview_2024-08-01_21-15-25.png)
前两篇文章(《一起学Java(4)-java-all-in-one协作项目相关文件研究(Gradle篇-上)》和《一起学Java(5)-java-all-in-one协作项目相关文件研究(Gradle篇-下))》)我们已经完成了对项目中Gradle相关文件的研究,按照计划我们继续研究项目的其他配置文件,主要是Git和I...
![一起学Java(6)-[起步篇]教你掌握本协作项目中Git和IDEA相关配置文件](/images/post/java-go-6-idea-files/idea-files.png)
接上篇《一起学Java(4)-java-all-in-one协作项目相关文件研究(Gradle篇-上)》,本文继续研究项目中Gradle相关文件。
将思绪拉回java-all-in-one项目,如果你fork并下载了代码,你会看到在项目中除了HelloWorldMain代码外,还存在很多文件。如果你并不了解他们的作用并有足够的好奇心,那你应该想要知道他们的作用。带着好奇,今天我也来研究一下,先从Gradle相关的开始。
在第一步创建的项目(java-all-in-one)项目里,我们提到了使用Gradle作为项目构建工具。看到这里,不知道你是否有疑惑,什么是项目构建工具。Java项目常用构建工具有哪些?都有什么特点? 带着疑惑,本文对Java的构建工具进行一些梳理,以同步理解。从而使大家对我们项目中使用到的技术栈和技术工具都有个基本的...
在第一步中(一起学Java(1)-新建一个Gradle管理的Java项目)我们已经完成了项目的创建并托管到了Github上。现在自然要首先解决同学们如何下载代码和进行代码同步更新和联系的问题。这就涉及到Git的fork理念和协作模式的问题。具体介绍如下。
![一起学Java(2)-[起步篇]教你如何利用Github fork一起进行开源项目协作](/images/post/java-go-2-work-on-github/fork.png)
一时兴起,也为了便于跟大家同步学习进展和分享样例代码,遂决定创建一个全新的Java项目,并通过Github与大家分享。本文就是记录该项目的创建过程以及其中的一些知识要点(如Gradle等)。为了紧跟技术潮流和提高操作效率,本项目通过IDEA直接创建,用Gradle进行配置管理和用Git进行版本管理,并托管到Github...
![一起学Java(1)-[起步篇]教你如何创建一个Gradle管理的Java开源项目(java-all-in-one)](/images/post/java-go-1-new-gradle-project/new_gradle-proj_2024-07-21_15-15-50.png)
经常听到有同学讨论,在Java中String判断值相等应该用equals()而不能用==,并且分析的信誓旦旦。那么真相真的是这样么?==就完全不能用么?Java内部的原理究竟是如何呢?这需要理解它们背后的原理。下面是详细的原理分析:
经常遇到初学者问到关于Java环境变量配置的问题,基本围绕在集中情况:(1)环境变量要配哪些;(2)2024年了还需不需要配;(3)为啥我这个没配、那个没配也好用。会不会有什么影响。今天我就展开讲讲关于Java环境变量的定位和本质。 在配置 Java 环境变量时,主要涉及两个重要的变量:JAVAHOME 、 PATH和...
在群里交流的时候,经常遇到不同同学使用的JDK版本五花八门,并且很多不知道其使用版本的特点。作为Java开发者,理解不同JDK版本的核心特性和优势不仅能提高我们的开发效率,还能帮助我们更好地选择适合自己项目的版本。
经常遇到各种新人在学习Java过程中遇到迷茫、学习路线不清、发展路径不明的情况,最长听到的一个问题就是,我学完了基础语法我该学什么呢?下面我就结合我的一些粗浅经验给新手一些基本的建议。 新手开始学习Java,建议的学习路线应包括以下几个阶段,每个阶段都有相应的学习目标和推荐资源(尽量中文)。这种循序渐进的路径可以帮助你...
在Oracle官网下载Java Development Kit (JDK)安装包时,针对 Windows 操作系统,除zip压缩包外,安装包通常有两种格式:.exe 和 .msi。 这两种安装包在使用体验和功能上有一些区别。下面详细解释它们的区别:

更新节奏缓慢,因为每晚学习注意力不够集中,学习进展缓慢。本还给自己找了一大堆其他理由,但摸着良心问自己,似乎只有这个理由说的通。 想搞懂的太多,却始终没搞明白。先看一个用Netty编写的NIO Server的样例。 <!--break-- ServerHanler代码 上述代码改自Netty官方手册。NettyNioS...
距离上一篇博文已经过去了半个多月。这期间有一周多的时间用在了准备单位举办的英语竞赛上。余下的时间沉迷于陪孩子玩耍和睡觉,日复一日。 当然,我也抽空学习了Java NIO(None-Blocking / New IO) 一些知识,现总结如下。 Java的非阻塞IO的原理是采用了操作系统的多路复用器机制,即在一个通道(ch...
2012年,由于项目的需要我第一次接触到了Netty,当时Netty还处于3.x版本。我用十几篇博文记录了自己自学Netty的过程,虽然内容浅薄,但没想到被各处转载,我想主要是因为当时Netty的资料确实较少的缘故。 五六年过去了,Netty早已发展到了4.x系列,好奇也好,求知也罢,我打算重学Netty,虽然严格来说...
Problem Given an array where elements are sorted in ascending order, convert it to a height balanced BST. <!--break-- Java 实现 分析 二叉树的处理,首先想到递归。剩下就好处理了。
Problem Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary tree is defined as a binary tree in which the depth...
Problem Given a binary tree, return the bottom-up level order traversal of its nodes' values. (ie, from left to right, level by level from leaf to root). For ex...
Problem Given a binary tree, find its maximum depth. The maximum depth is the number of nodes along the longest path from the root node down to the farthest lea...
Problem Given a binary tree, check whether it is a mirror of itself (ie, symmetric around its center). For example, this binary tree [1,2,2,3,4,4,3] is symmetri...
Problem Given two binary trees, write a function to check if they are the same or not. Two binary trees are considered the same if they are structurally identic...
Problem Given a sorted linked list, delete all duplicates such that each element appear only once. For example, Given 1-1-2, return 1-2. Given 1-1-2-3-3, return...
Problem Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: You may assume that nums1 has enough space (size that...
Problem You are climbing a stair case. It takes n steps to reach to the top. Each time you can either climb 1 or 2 steps. In how many distinct ways can you clim...
Problem Implement int sqrt(int x). Compute and return the square root of x. x is guaranteed to be a non-negative integer. Example 1: Input: 4 Output: 2 Example...
Problem Given a non-negative integer represented as a non-empty array of digits, plus one to the integer. You may assume the integer do not contain any leading...
Problem Given a string s consists of upper/lower-case alphabets and empty space characters ' ', return the length of last word in the string. If the last word d...
Problem Given two binary strings, return their sum (also a binary string). For example, a = "11" b = "1" Return "100". 题目的意思就是按二进制的方式计算两个数相加。 <!--break-- Java 实...
Problem Find the contiguous subarray within an array (containing at least one number) which has the largest sum. For example, given the array [-2,1,-3,4,-1,2,1,...
Problem The count-and-say sequence is the sequence of integers with the first five terms as following: 1. 1 2. 11 3. 21 4. 1211 5. 111221 1 is read off as "one...
Problem Implement strStr(). Returns the index of the first occurrence of needle in haystack, or -1 if needle is not part of haystack. 题目其实就是实现Java中String的indexO...
Problem Given an array and a value, remove all instances of that value in place and return the new length. Do not allocate extra space for another array, you mu...
Problem Given a sorted array, remove the duplicates in place such that each element appear only once and return the new length. Do not allocate extra space for...
Problem Merge two sorted linked lists and return it as a new list. The new list should be made by splicing together the nodes of the first two lists. 即合并两个已经排好序...
Problem Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the co...
Problem Write a function to find the longest common prefix string amongst an array of strings. 就是找出一个字符串数组中元素,最长的通用前缀。例如:{"ab","abc","abd"},答案是 "ab"。 <!--break-...
Problem Given an integer, convert it to a roman numeral. Input is guaranteed to be within the range from 1 to 3999. 跟[Roman To Integer][1]是对应问题。即将整数转换成对应的罗马数字。罗...
Problem Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 即将罗马数字1-3999转换成对应的整数。罗马数字规则见wiki:[罗马数字规则][1]...
Problem Reverse digits of an integer. Example1: x = 123, return 321 Example2: x = -123, return -321 Note: The input is assumed to be a 32-bit signed integer. Yo...
Problem Determine whether an integer is a palindrome. Do this without extra space. 即返回一个数是否是回数。例如:1,1221,12321是回数,负数不是回数。题目特别提醒,不要使用额外的空间,即不要考虑转换成String来处理。 <!-...
研究背景 上篇(Httpcomponents-core 从池中获取连接代码解析)研究中,我们知道,Httpcomponents-client底层维护了一个socket连接池,对于同一个地址,默认只可以建立2个连接。如果连接不及时释放,就会造成连接池中无可用的连接获取,从而导致请求等待(阻塞)。因此,我们需要关注连接池释...
最近使用Httpcomponents-client过程中遇到一个线程阻塞的问题。通过jstack dump线程发现,是block在AbstractConnPool的getPoolEntryBlocking中,于是决定研究一下Httpcomponents-client的源码。 <!--break-- 问题背景 邮件发送线...

刚发布的Java9中,有一个特性是新增了快速构造不可变集合的工厂函数。官方说明如下: JEP 269: Convenience Factory Methods for Collections Makes it easier to create instances of collections and maps with...
很久没更新博客,本想写篇关于Java9 集合工厂函数的博客,却没想到阴差阳错先遇到Lombok与Java9的兼容性问题。 <!--break-- 我在一个试验用的工程里,想做一些关于Java9新特性的试验,该工程原本是依赖lombok的。结果,编译时,原有的使用@Slf4j注解的的类报编译错误。 Error:(18,...
通信流程概括 任务部署时,xd-admin和container之间通过zookeeper的节点监听通信。container监听zk deployment节点,执行部署。同事绑定kafka message consumer和reactor subscriber。 任务启动时,xd-admin和container通过kaf...

对于保存在.properties文件中的敏感信息,支持采用加密的方式保存。然后在程序中解密使用。 <!--break-- 实现方案 采用自定义PropertySourceLoader的方式,在.properties配置文件加载期,遍历值,遇到指定格式的值,则执行解密操作。具体代码如下: CodecUtil即加解密工具类...
Spring XD on Yarn在使用过程中发现不论是YarnClient还是AppMaster对Yarn HA的支持都不好。在Yarn的RM重启或切换的情况下,YarnClient必须修改配置文件中的RM地址才可以继续使用,即使在配置文件中配置了Yarn HA的相关配置也不生效。而AppMaster同样会因为长时间...
SpringXD on Yarn支持Container分组。可以更好的控制admin和container分配。 控制组内成员 以组单位整体控制生命周期 动态创建组 重启失败的容器 <!--break-- 实际上,XD on Yarn有内置分组admin和container。结合例子使用: 查看分组列表: 创建新的分组...

配置Spring Flo可在SpringXD的admin-ui页面提供拖拽式的组合job的定义。 从Pivotal官方下载Flo for XD 1.0.1版本 https://network.pivotal.io/products/p-spring-flo <!--break-- 解压flo-spring-xd-adm...

SpringXD中的Job实际即为Spring Batch中的Job,因此我们先按照Spring Batch的规范开发一个简单的Job。 <!--break-- 项目依赖: 实际这里无需配置spring-batch的依赖,因为会在springxd的parent pom中声明。而springxd的parent一般我们都会...
Spring XD可以on yarn运行。 下载on yarn运行包并解压 部署本地Hadoop环境 要on yarn运行需要依赖本地的Hadoop环境。下载Hadoop安装包并解压。笔者试验环境中已经提供了针对Hadoop的自动化配置脚本,这里不再赘述。 xd on yarn配置 修改servers.yml配置文件,...
Spring XD有两种运行模式:单机和分布式模式。这里关注分布式模式的部署和运行时特点。 <!--break-- 分布式集群组件 Spring XD分布式环境包含以下组件: - Admin 管理节点。管理Stream和Job的配置和发布,提供REST接口等。 - Container 运行流式任何和批量任务的节点,部署...
<a href="https://github.com/pagehelper/Mybatis-PageHelper" target="blank"Mybatis-PageHelper</a应该是目前使用比较广泛的一个Mybatis分页插件。我在几个项目里都引入了该插件。今天偶然阅读其源码,却发现了一个不小的问题。 注:...

为自己快速写博客开发的yami程序初稿基本完成了。需要打成jar通过命令行快速调用。具体可看Readme。 项目地址:[https://github.com/lihongzheshuai/yami ](https://github.com/lihongzheshuai/yami ) 搜了一下Gradle 打包execu...
在乱学装饰模式的时候给出了一篇参考文章,是对比装饰模式和代理模式的。自然,这就是OneCoder现在需要理解的问题。 先复习一下设计模式6大原则: 设计模式的六大原则(引自:http://zz563143188.iteye.com/blog/1847029) <blockquote 1. 开闭原则(Open Close...
码农写码3,4年,设计模式用了不少,但又有一种在乱用的感觉。要么叫不出名字,要么感觉摸不到其精髓。其实所谓Java中的23种设计模式,OneCoder之前也乱乱的看过几遍,但是至今感觉也没有什么深刻的领悟。 之前,看到每种设计模式总会有一种“理所应当”的感觉,心里就好像在说本来就应该这么做啊,我也是这么写的啊。但是后头...
先简单介绍下CSV和TSV文件的区别: <blockquoteTSV ,Tab-separated values的缩写,即制表符分隔值。关于TSV标准,参考:<a href="http://en.wikipedia.org/wiki/Tab-separatedvalues"http://en.wikipedia.org...
项目里要求实现在项目上线前社内测试团地可以正常访问系统,而外部访问用户看到的是系统尚未开放的页面。 OneCoder的第一反映就是实现一个filter,配置可访问的IP规则,通过正则进行匹配。通过的正常进入系统,不通过的redirect到指定欢迎页面。 整个代码没什么难度,核心就是一个IP规则的检验功能。考虑到配置的简...
<p 工作里用到了Spring Batch项目,以前我也是做并行计算的,听说过Spring Batch不过并没有去具体了解过。今天抽空看看官方文档进行下初步的了解。</p <p 官方文档地址:<a href="http://docs.spring.io/spring-batch/trunk/reference/html...
<p 最近解决大文件下载的问题,遇到一个"Out of memory"的exception。建厂controller层的代码,发现是用BufferdOutputStream写入Response中的,缓冲区也只有8m,按理说不应该出现内存溢出的。</p <p 仔细观察异常堆栈,发现堆栈中出现了&ldq...
<p 官网:<a href="http://projectlombok.org/"http://projectlombok.org/</a</p <p 通过官网的视频,可以看到Lombok可以帮助我们节约很多机械而繁琐的代码。例如在写Pojo类或者Log的时候。写段代码体会一下:</p <p Gradle依赖配置:</...
<p 好久没有更新博客了,<a href="http://www.coderli.com"OneCoder</a没挂,只是儿子出生,忙了一个多月。生活节奏有点小乱。这期间也抽空换了份工作,坚持技术路线不动摇。So,抓紧调整一下状态,继续读书,写码。</p <p 面试题系列,是<a href="http://www.co...
<p 本以为一个无足挂齿的小问题,没想到还折腾了一下。遂记录一下。主要搜索出的结果排名靠前的大多是在hibernate.cfg.xml中的配置方式。与我的环境不符。正确配置方式如下。已测试。</p <p 注:注释掉的配置value配置方式和prop配置方式,均有效。<br / </p
<p 最近遇到日志文件记录错误的问题。一个任务的日志信息会被莫名的拆分到两个不同目录中。且有一个目录还是曾经执行过的任务的目录。经过分析,首先怀疑的是MDC没有清理的问题,这也是最直观的问题。因为任务是在线程池(fixedThreadPool)中运行的。由于线程会被重用,而MDC是绑定在Threadlocal上的,所以...
<div 最近事情多,OneCoder折腾了好几天,总算翻译完成了。</div <div 翻译自官方文档:<a href="http://netty.io/wiki/new-and-noteworthy-in-5.x.html"http://netty.io/wiki/new-and-noteworthy-in-5.x...
<p 在考虑使用ZeroMQ时,灵活夸平台使用的问题。除了要在编译不同平台的版本,还需要在不同的平台下,进行相应的环境变量的配置。简要说明一下:<br / 首先,对于JNI调用来说,不论什么平台都需要指定本地动态链接库的位置,指向包含动态链接库的文件夹:</p <p 不过光这样是不够的,因为底层C/C++ 库之间也需要...
<div 最近研究利用zeromq实现多对多的双向自由收发。在官方上发现了MDP协议,经过验证貌似可行。正在开发中,将验证代码分享如下。</div <div </div <div style="text-align: center;" <img alt="" src="/images/oldposts/Gd...
<div 学习ZeroMQ使用,根据官方文档介绍,写了如下Java验证代码。仅供参考。需要依赖jzmq的jar包和本地库。</div <div </div <div 1、请求-响应模式</div <div style="text-align: center;" <img alt="" src="/image...
<p 首先,先说明的是,OneCoder采用的是使用vs2010的编译方式,zeromq的版本是3.2.4。</p <p 先编译zeromq3.2.4的源码。双击builds/msvc/ 目录下的msvc.sln导入到VS2010。选择x64位编译器,生成解决方案。</p <p style="text-align: c...
<p ZeroMQ是什么可以自己去官网了解。<br / <a href="http://zeromq.org/"http://zeromq.org/</a</p <p Mac下,对于安装了brew的朋友,很简单了。<br / 首先安装zeromq</p <pre class="brush:shell;first-lin...
<p 使用Restlet进行同步请求,有时可能处理的时间会很长所以需要客户端进行较长时间的等待。从API中查得客户端的设置方式如下:</p <!--break-- 不过,设置后,OneCoder经测试却发现无效。无论socketTimeout设置为多少。均会在1分钟左右超时。 这好像是由于Restlet默认使用的是一个...
<p <a href="http://www.coderli.com\"OneCoder</a在Restlet 2.1.4中 匪夷所思的ObjectRepresentation的构造函数中,提到过在使用2.1.4的时候遇到的异常</p <blockquote <p Exception in thread "m...
看到Spring Framework4.0发布的消息,看了下new future,<a href="http://www.coderli.com"OneCoder</a很喜欢spring这种追“时髦”的风格,groovy脚本配置和Java8都支持了。顺便就翻译了一下官方的迁移指南。对一般使用来说...
<p 虽然log4j2 目前还是beta版,不过<a href="http://www.coderli.com"OneCoder</a已经忍不住要尝试一下。跟使用log4j 比起来,上手上主要的区别有。<br / 1、依赖的jar包。使用slf4j+log4j2 时,依赖的jar包如下:(gradle配置,Maven对...
<p <a href="http://www.coderli.com"OneCoder</a验证用Restlet做服务,读取远端文件内容功能,编写验证代码。目前测试通过,主要是利用restlet内部提供的InputRepresentation对象,通过ReadableByteChannel,按字节流的方式读取文件内容。...
<a href="http://www.coderli.com"OneCoder</a使用Restlet最新版2.1.4开发样例,却一直抛出异常: Exception in thread "main" java.lang.IllegalArgumentException : The serialized represe...
<p 日志是项目中必用的东西,日志产品里最普及应该就是log4j了。(logback这里暂不讨论。) 先看一下常用的log4j的用法,一般来说log4j都会配合slf4j或者common-logging使用,这里已slf4j为例。添加gradle依赖:</p <p 最直接的用法就是在每个需要记录日志的类里,构造一个属于...
<p 还是<a href="http://www.coderli.com"OneCoder</a在项目中沙箱的问题,用classloader隔离做的沙箱,反复运行用户的任务,出现永生区内存溢出:<br / java.lang.OutOfMemoryError: PermGen space</p <p 这个问题在tomc...
<p 最近<a href="http://www.coderli.com"OneCoder</a在开发隔离任务运行的沙箱,用于隔离用户不同任务间以及任务和框架本身运行代码的隔离和解决潜在的jar包冲突问题。<br / <!--break-- 运行发现,隔离的任务正常运行,但是却没有任何日志记录。从控制台可看到如下错误信...
在项目里需要分类收集处理日志信息,使用log4j的MDC在线程中添加分类信息。不过最近却出现日志信息记录错误的情况,具体来说,就是会出现本来是属于下一个分类的一部分信息莫名的记录到上一个分类的日志文件中了。这很显然是MDC信息错误造成的。其实,最开始暴露给我们的现象是,在日志清空后,第一次运行任务,会出现两条日志。显然...
<p 今天遇到在处理一个多classloader调用本地native方法报错的问题的时候,想要通过调用本地的一个dll进行测试。该dll是在32位环境下编译的。而<a href="http://www.coderli.com"OneCoder</a的调试机器是64位的win7。自然调用会报如下错误:</p <block...
最近很多人问我有没有Netty4的Hello World样例,很早之前知道Netty要出4,当时只知道4的包名完全边了,因为Netty从JBoss中独立出来了,并采用了新的netty.io的域名,但是没想到代码也有这么大的调整。 <!--break-- 既然答应了别人,就抽时间看一下Netty4,也顺便补充一下自己的知...
<blockquote <p SLF4J: Failed to load class "org.slf4j.impl.StaticLoggerBinder". SLF4J: Defaulting to no-operation (NOP) logger implementation SLF4J: See <uhttp:...
在项目中需要自定义实现一个log4j的appender。根据log中MDC里的信息,构造日志存储的目录结构。自定义实现log4j appender的方法已经介绍过了。主要是覆盖AppenderSkeleton中的appender方法。 日志内容的获取和格式处理,通过Layout进行格式化 这里有个问题,一般情况下,我们...
从Maven切换到Gradle,原有的几G的本地缓存库当然想继续使用。在用户手册中找到了答案。在50.6.3章节。 如果想使用Maven本地缓存,需要定义: Gradle使用与Maven相同的策略去定位本地Maven缓存的位置。如果在settings.xml中定义了本地Maven仓库的地址,则使用该地址。在USERHO...
现在我们来看一个典型的多项目构建的例子。下面是工程的布局: 样例7.10 多项目构建 - 分层布局 构建结构 注意:本样例的代码可以在Gradle完整安装包的samples/java/multiproject目录下找到 这里我们有三个工程。api工程生成用于Java客户端访问XML webservice服务的JAR包。...
7.2 一个基本的Java项目 我们来看一个简单的例子。把下面的代码加入你的构建文件,以使用Java插件: 例子 7.1 使用Java插件 注意:该样例的代码可在Gradle的安装包中的samples/java/quickstart路径下找到。 这就是你定义一个Java项目所需要做的一切。这就会在你项目里使用Java插...
译者注:从第六章开始翻译,为了个人学习需要,先省略了前面已经了解和不太相关部分。见谅。<br / <br / 6.1 项目和任务<br / <br / Gradle里的一切都基于两个基本概念:项目和任务。(projects and tasks)。<br / <br / 每个Gradle构建都是由一个或多个项目组成的。项...
7.1 Java插件 <p 如我们所了解的,Gradle是一个通用的构建工具。它可以通过你的构建脚本实现几乎任何你想做的事情。不过,作为开箱即用的产品,它不会做任何构建脚本不包含的任务。</p 大多数的Java项目都跟基础情况很相似:你需要编译你的Java源文件,执行单元测试,并且创建一个包含你的类的JAR包。如果你不...
log4j,应用最广泛的日志框架。其作者后来推出logback,也是好选择。不多说废话。 log4j组件介绍 Log4j主要有三个组件: Logger:负责供客户端代码调用,执行debug(Object msg)、info(Object msg)、warn(Object msg)、error(Object msg)等方...
<p 利用JPPF进行并行计算,计算任务运行在远端节点上,那么如何收集运行在远端的任务日志,用于跟踪和分析呢?</p <p JPPF框架对此也有封装,主要的实现思路是,通过自定义实现一个log4j的appender,对外提供JMX服务。客户端(监控端)实现一个监听器,监听远端日志,这样即可把远端日志采集到本地进行统一的...
<p 不算什么深入的研究,主要是了解下JPPF中类的加载和隔离机制。</p <p JPPF中类的加载采用的是分布式类加载技术。这样既可在Node节点运行在node上并不存在的类。也就是类可以仅在用户的Client端存在。</p <p style="text-align: center;" <img alt="" src...
<p 先说一个挺有意思的事情,就在OneCoder准备记录试用过程的时候,给大家截图下载页面的时候,发现最新版本变成3.3.4了。于是,我也只好重新下载了:)</p <p 关于JPPF的介绍,可访问其官网:<a href="http://www.jppf.org"http://www.jppf.org</a<br /...
<p 最近用Hessian4.0.7做文件上传,先给出自己做试验的样例代码,写在tomcat7下,采用servlet3.0,配置代码如下:</p <p 定义接口,并在服务端实现,Hessian4.0开始支持流作为参数传递,以前则采用byte[]方式传递:</p <p class="p1" 客户端调用:</p <p 很简...
<p Gradle是什么就不多说了,跟Maven是同类型的工具。Spring和Hibernate都早已经迁移了过来。官网地址:<a href="http://www.gradle.org"http://www.gradle.org</a。最新稳定版为1.4</p <p Gradle Eclipse Plugin是spr...
<a href="http://www.coderli.com"OneCoder</a最近入手一台Mac Pro。其实这个话题本来没什么可写的。但是考虑确实自己开始是不知道的,哪怕是一丁点的收获,也应该记录下来。 其实Java开发环境无非就是安装JDK,安装IDE,配置环境变量。JDK自然从官网下载Mac版的,IDE,...

其实这个本来没什么可写的,只是<a href="http://www.coderli.com"OneCoder</a恰巧用到又不会,在网上查了一下找到了答案,所以记录一下,也做分享。 很简单,一句话,执行: 会将依赖的包拷贝到工程的lib目录下。
在一个下雨的夜晚,我在思考Java中内存管理的问题,以及Java集合对内存使用的效率情况。我做了一个简单的实验,测试在16G内存条件下,Java的Map可以插入多少对象。 这个试验的目的是为了得出集合的内部上限。所以,我决定使用很小的key和value。所有的测试,都是在64w位linux环境下进行的,操作系统是ubu...
JUnit单元测试用例中使用Spring框架,之前我的使用方式很直接。 在测试的过程中,有人提到,想要获取ApplicationContext实例。于是,添加了对ApplicationContext的注入。 其实,Spring中早已直接提供了更加方便使用的基类:AbstractJUnit4SpringContextTe...
在上回介绍Spring3.1+Hibernate4.1.7基于注解配置的时候(<a href="http://www.coderli.com/spring-hibernate-base-annotation"《SpringMVC3.1+Hibernate4.1.7完全基于注解配置(零配置文件)》</a)说过,在修改配置...
其实这篇文章应该是上篇<a href="http://www.coderli.com/springmvc-servlet3-code-bases-configuration"《Servlet3.0下基于注解的SpringMVC3.1配置-完全零配置文件》</a的续篇,因为上篇只介绍到web工程和Spring(包括MVC...
<p Spring3.1.x系列的一个新特性就是支持了Servlet3.0规范,基于注解的方式配置SpringMVC框架。官方文档描述如下:</p <blockquote <div <div <div <h3 3.1.10 Support for Servlet 3 code-based configurat...
<p 其实是一个不值得一提的小问题,不过既然验证了,就拿出来分享一下吧。</p <div <a href="http://www.coderli.com"OneCoder</a在要做一个周期性的任务,Timer即可实现,不过考虑到有可能在一个周期内,任务可能没有结束,不知道Timer的处理方式,是直接启动下一个,还是等...
<p 十一匆匆的就过去了,OneCoder过的也是有点恍惚。不知道都做了什么,心却有点散。做一篇翻译,权当收收心,找找感觉吧。</p <div 原文地址:<a href="http://www.markhneedham.com/blog/2012/09/23/java-parsing-csv-files/"http:/...
<a href="http://www.coderli.com"OneCoder</a准备自己慢慢写点东西,把离散的知识点汇总一下。给出的版本没什么特别的含义,只是<a href="http://www.coderli.com"OneCoder</a目前使用的环境而已。 <ul <li IDE:Eclipse4.2 J...
<p 看到一篇通过模拟Runnable和Callable对话的方式,形象的讲述Java中Runnable和Callable区别的文章,遂决定翻译过来加深印象与大家分享。</p <p 英文原文地址:<a href="http://java.dzone.com/articles/callable-vs-runnable-b...
有一段事件没有更新文章了,各种原因都有吧。搬家的琐事,搬家后的安逸呵呵。不过,<a href="http://www.coderli.com"OneCoder</a明白,绝不能放松。对于Netty的学习,也该稍微深入一点了。 所以,这次<a href="http://www.coderli.com"OneCoder</...

今天<a href="http://www.coderli.com"OneCoder</a遇到一个不大不小的问题。用Restlet开启了一个rest服务,并且在这个服务内部还会访问其他的rest服务,结果遇到404的错误。但是通过浏览器直接访问却可以访问,通过测试用例直接访问也可以,只有在间接通过restlet访问的时...
如果您持续关注<a href="http://www.coderli.com"OneCoder</a,您可能会问,在<a href="http://www.coderli.com/netty-oio-nio"《Java NIO框架Netty教程(十四)- Netty中OIO模型(对比NIO)》</a中不是说下节介绍的是...
<a href="http://www.coderli.com"OneCoder</a这个周末搬家,并且新家目前还没有网络,本周的翻译的任务尚未完成,下周一起补上,先上一篇OIO和NIO对比的小研究。 Netty中不光支持了Java中NIO模型,同时也提供了对OIO模型的支持。(New IO vs Old IO)。 首...
其实是一个很简单的技巧,就是利用Maven的appassembler-maven-plugin插件,就可以实现自动打包可运行的脚本,还可以跨平台。(Windows/linux) 首先在pom.xml文件的build节点下配置插件: 然后选择你要编译的工程,右键-maven build... 命令如下图: 然后Run一下...

在上节(<a href="http://www.coderli.com/netty-concurrency-problem-test-two" target="\blank"《Java NIO框架Netty教程(十二)-并发访问测试(中)》</a),我们从各个角度对Netty并发的场景进行了测试。这节,我们将重点关注上...

今天,我学到了一个在Eclipse中管理引用的小技巧。当然,你可以在单个文件中用Ctrl+shift+O去移除未使用的引用。但是,如果你想移除很多类的无用的引用你该如何去做,比如移除整个包下的类? 很简单,在包浏览(Package Exporler)视图下,右击你想要修改的包,然后依次选择source -> Or...
今天群里(Java爱好者群:982860385)的朋友,问我该如何看帮助文档,或者说在遇到问题的时候如何解决。希望我能介绍一下我的方法。 这个<a href="http://www.coderli.com"OneCoder</a其实没有资格高谈阔论,只能说说个人的习惯和方式。自学和自我解决问题确实是一项非常非常重要的能...

写在前面:对Netty并发问题的测试和解决完全超出了我的预期,想说的东西越来越多。所以才出现这个中篇,也就是说,一定会有下篇。至于问题点的发现,<a href="http://www.coderli.com"OneCoder</a也在努力验证中。 继续并发的问题。在<a href="http://www.coderli...

之前更新了几篇关于JVM研究的文章,其实也是在做本篇文章验证的时候,跑的有点远,呵呵。回归Netty教程,这次要讲的其实是针对一个问题的研究和验证结论。另外,最近工作比较忙,所以可能会分文章更新一些阶段性的成果,而不是全部汇总更新,以免间隔过久。 起因是一个朋友,通过微博私信给我一个问题,大意是说他在用Netty做并发...
在Java虚拟机中,堆(Heap)是可供各条线程共享的运行时内存区域,也是供所有类实例和数组对象分配内存的区域。 Java堆在虚拟机启动的时候就被创建,它存储了被自动内存管理系统(Automatic Storage Management System,也即是常说的"Garbage Collector(垃圾收集器)")所...

突兀的出来一个libvirt的教程三,您可能会觉得奇怪,其实这是OneCoder以前写的一个小系列教程,原来发在51cto的博客上,前两篇已经发了过来,考虑到完整性,就把第三篇也发过来。前两篇地址: - 《<a href="http://www.coderli.com/windows-libvirt-one/" tar...

最近有段时间没有更新Netty的教程了,却发了一些其他的东西。可能有的朋友会问,难道这就完事了?不会的。两方面原因。第一、笔者也是需要工作的人,自然要完成好工作中的任务,这里面也有很多东西需要学习和研究,这也是我分享的方向和源泉。第二、想要掌握好Netty,周边的知识也不能少,这也是笔者在恶补的东西。所以,你完全可以把...

如果您一直关注OneCoder,我们之前有两篇文章介绍关于Netty消息连续收发的问题。( <a href="http://www.coderli.com/netty-message-receive-count-mismatch/" target="\blank"《Java NIO框架Netty教程(五)- 消息收发次...
还是梳理代码,频频到Future这个字眼,很自然的让我想到了未来。 还是那对男孩和女孩,女孩问男孩,你会娶我吗?男孩说,一定会,等我为你盖好一栋美丽的房子……
今天在梳理项目里一些老的代码逻辑和结构的时候,发现了一段观察者的代码。脑海里同时浮现出这样一个故事…… 有一个女孩和一个男孩,他们在山里迷路了。晚上,他们都精疲力尽。男孩对女孩说,你睡会吧,我看着,有动静我叫你,然而……
看到题目,有的同学可能会想,上回不是说过<a href="http://www.coderli.com/netty-object-transmit/" target="\blank"对象传递</a了吗?是的,只是在<a href="http://www.coderli.com/netty-object-transmit...
这是一个在比较特殊情况下才会发生的问题。不过却在笔者的身上发生了,既然如此,那就记录一下,也许还有其他朋友也会碰到。 问题描述:笔者办公环境使用Proxifile全局代码上网,不过对于一些不想走代理的程序和地址进行了过滤。然后笔者发现,Eclipse更新不好用了。查看Proxifile记录,发现Eclipse访问网址,...

说了这么多废话,才提到对象的传输,不知道您是不是已经不耐烦了。一个系统内部的消息传递,没有对象传递是不太现实的。下面就来说说,怎么传递对象。 如果,您看过前面的介绍,如果您善于专注本质,勤于思考。您应该也会想到,我们说过,Netty的消息传递都是基于流,通过ChannelBuffer传递的,那么自然,Object也需要...
在<a href="http://www.coderli.com/netty-message-receive-count-mismatch/" target="\blank"《Java NIO框架Netty教程(五)- 消息收发次数不匹配的问题》</a里我们试图分析一个消息收发次数不匹配的问题。当时笔者还是心存疑惑的。...
看到标题,您可能觉得,这跟Netty有什么关系呢?确实,如果你完全是使用Netty的,那么可能你可以完全不需要了解Selector。但是,不得不提的是,Netty底层关于NIO的实现也是基于Java的Selector的,是对Selector的封装。所以,我个人认为理解好Selector对于使用和理解Netty都是很多有...
周末是最好的学习时间,不过这周末收房子,可想而知事情自然也不会少。这段时间的周末,可能很少有时间学习了。见缝插针吧。 不说废话了,好好学习。<a href="http://www.coderli.com/netty-channel-stream/" target="\blank"上回</a通过代码理解了Netty底层信...
OneCoder原创系列 - <a href="http://www.coderli.com/netty-course-hello-world/" target="\blank"Java NIO框架Netty教程(一) - Hello Netty</a - <a href="http://www.coderli.com...
在<a href="http://www.coderli.com/netty-string-channelbuffer/" target="\blank"字符串消息收发</a中提到。ChannelBuffer是Netty中非常重要的概念。所有消息的收发都依赖于这个Buffer。我们通过Netty的官方的文档来了解一下,...
昨晚有朋友问我这样的一个问题。 打印的结果为什么是 0。 其实我一下也说不清楚,第一反应就是看看编译后的class文件。 这就好解释了: 至此完成i = i++,所以最后i的值为0 iinc 指令是直接对局部变量区进行操作,操作数栈不发生任何变化,这是由JVM规范定义的。
了解了Netty的<a href="http://www.coderli.com/netty-two-concepts/" target="\blank"基本概念</a,开发起来应该会顺手很多。在<a href="http://www.coderli.com/netty-course-hello-world/" tar...

<a href="http://www.coderli.com/netty-course-hello-world/" target="\blank" "Hello World"</a的代码固然简单,不过其中的几个重要概念(类)和 Netty的工作原理还是需要简单明确一下,至少知道其是负责什。方便自己以后更灵活的使用和扩...

先啰嗦两句,如果你还不知道Netty是做什么的能做什么。那可以先简单的搜索了解一下。我只能说Netty是一个NIO的框架,可以用于开发分布式的Java程序。具体能做什么,各位可以尽量发挥想象。技术,是服务于人而不是局限住人的。 Netty的简介和下载可参考:开源Java高性能NIO框架推荐。注意,此时的最新版已经为3....
一个小问题,却让我感觉到,现在真正动脑的人很少。。我来说说吧。 今天遇到一个小问题,log4j输出到文件乱码,控制台正常。显然是编码问题导致。Google一搜,几乎一水的说: 项目中log4j在英文版linux下输出中文日志为乱码。由于log4j配置文件中没有设置编码格式(encoding),所以log4j就使用系统默...

今天有人提出了代码中一个的NullPointException问题。这类问题,很好解决,找到所在行,一看便知。 但是这次,有点意外。抛异常的行,只是一个简单的Pojo的get、set方法。出错的行在 很自然的想到b会为null。但是前面的代码已经用过b了,也就是说,如果b是null。早就抛出空指针了。a是新new的。不...
使用Netty开发分布式框架,对象的传输是基本的需求。但是,在开发中却总遇到服务端接受不到客户端的对象发送数据。遂动手解决。 如果看到最后,你可能会发现,笔者的问题是那么的二,不适合你。。所以,你可以决定不看,或者只看样例代码。笔者记录的是,个人的解决过程。 先看一下官方提供的,对象传输的样例代码:(核心部分) 代码很...
本文讲述的是Java中try finally代码块执行顺序,和当其存在于循环中的时候的跳出和执行问题。白话,也要简化,一段代码,来说明问题。 执行结果: 如果还没看明白,那我再啰嗦两句:finally就是最后的,跟try和catch是兄弟,就好像正常人走try分支,走着走着你不正常了,就开始走catch分支,但是不管你...
今天遇到一个小问题。在使用apache-commons-codec包进行编码/解码的时候,用到了Base64类的decodeBase64(String base64String)方法,这个方法在1.4版中才提供。而我们的工程中对codec存在两个间接的依赖,一个依赖1.2版本,一个依赖1.4版本,打包后,只有1.2版本...
今天处理一个关于Double.NaN的异常。 Unknown column 'NaN' in 'field list' NaN = Not a Number。就是不是数字。我们用0/0.0打印出来的结果就是NaN。 JDK的Double类里,提供的NaN的实现是: 如果是非零的数除以0.0,得出的是:Infinity。...
Maven 批量安装本地 Jar文件到本地Maven库小程序。根据自己的需求临时开发完成。 使用方式: - 在config.properties中,配置待安装jar文件的存放路径。 - 安装时groupId,artifactId,version等信息,根据jar文件的文件名获得。采用分割"-"的方式,解析出来。所以,推...
最近开发过程中,在更新maven库时,如果网络问不定或者是一些自己手动安装到本地maven库的jar包,在中心库找不到对应的jar,会生成一些.lastUpdated文件,会导致m2e工具无法找到依赖的jar包,从而提示编译错误。 对于该问题,我也没有找到很好的解决方案,只能手动删除一下lastUpdated文件。文件...
关于"白话", 偶然想到的词。目的就是用简洁,明快的语言来告诉您,我所知道的一切。 Java中的线程分两类,用户线程和守护线程。 这样就是用户线程。 这样就是守护线程。 起了"守护"线程这么动听的名字,自然要起到"守护"的作用。就好比男人要守护妹子。守护线程的作用,按照网上的说法是: 守护线程则是用来服务用户线程的,如...

介绍完<a href="http://www.coderli.com/windows-libvirt-one" target="/blank"libvirt Java API的部署工作</a,接下来我们就介绍一下接口的使用和代码样例。 libvirt的管理单位是单个主机,所以探测和监控接口所能获取的信息的最大范围也是主...
<a href="http://libvirt.org/" target="\blank"Libvirt</a是一个优秀的虚拟化环境管理的工具包。核心用c实现,不过提供了不同语言的调用API。官网的简介如下: libvirt is: - A toolkit to interact with the virtualiza...

发现很多人问如何把Jar转成exe程序。可能是想双击运行和随处运行。其实这个并不难,我就简单总结几种方法,供大家参考,关键还是要知其所以然。 Java程序的运行不可能脱离JRE,不管你是Jar包还是exe程序。这点你必须了解。那么在没有JRE的机器上你的程序怎么跑?很简单,在你程序里带一份JRE就行了。 先介绍集中打包...

今天在我的一个qq群里有人问了这样一个问题。 输出是nullnull。问为什么是这样。 其实问题并不复杂,很多同学也觉得自己知道原因,遂不予关注。但是我相信还是有初学Java的同学在这里是存在误会的。很典型的误会就是如一个群里的朋友说的String类型的变量如果没有显示初始化,默认的值就是"null"。支持的理由就是...
从log4j切换到logback会发现,原来在log4j使用的日志格式 %l 的功能不见了。Eclipse控制台的输出,不再带有可快速进入的链接了。 在logback里,需要使用%c%L才能打印出完整的类路径和行号。但是却没有链接。查阅了一下,发现了caller这个Pattern。配置好caller:%caller{1...

写过Junit单元测试的同学应该会有感觉,Junit本身是不支持普通的多线程测试的,这是因为Junit的底层实现上,是用System.exit退出用例执行的。JVM都终止了,在测试线程启动的其他线程自然也无法执行。JunitCore代码如下 RealSystem: 所以要想编写多线程Junit测试用例,就必须让主线程等...
最近需要用Maven打包工程,却不想遇到乱码问题。在Eclipse中通过Maven Plugin执行install 命令报错如下: [ERROR] Failure executing javac, but could not parse the error:"一串乱码" 错误信息都是乱码,问题解决起来就头疼了。所以决定...

继续前文<a href="http://www.coderli.com/spring-filesystem-filepath-parse/" target="blank"《[原创] Spring源码学习-FileSystemXmlApplicationContext路径格式及解析方式》</a的问题。 先测试分析包含通配...
了解完了FileSystemXmlApplicationContext构造函数,我们来看看路径解析的问题。 - 支持路径格式的研究。(绝对?相对?通配符?classpath格式又如何? - 路径如何解析? 下面,我们就来一一验证和解答。先放出本次测试用的配置文件(app-context.xml和test.propert...

宅男Coder,没有其他爱好,闲暇之余抱着瞻仰的心态去阅读一下Spring的源码,期许能收获一支半解。要学习Spring的源码,第一步自然是下载和编译Spring的源码,这个我在之前的博文中已经发表过了。具体可参考:<a href="http://www.coderli.com/springframework-sour...
废话不多说,直接进入主题。首先是下载源码,跟spring一样,hibernate也采用git管理。 - git://github.com/hibernate/hibernate-orm.git 下载后,hiberante同样也是采用了gradle进行编译,所以同样同之前说的spring的编译, 参考阅读: - <a h...
作为一个Java程序员,多方面的知识储备是相当重要的。面对各种的情况,都有自己的解决方案也是一种能力的体现。Java优秀的开源项目很多,除了传统的SSH,作为一个Java程序员,你应该知道的更多:) Netty简介 Netty 是一个异步的,事件驱动的网络编程框架和工具,使用Netty可以快速开发出可维护的,高性能、高...
Spring已经将源码从svn迁移到了git。所以,首先需要安装git环境。我使用的是Windows下的TortoiseGit,带图形界面,比较直观。 SpringFramework的GitHub地址:https://github.com/SpringSource/spring-framework Git clone地...
Eclipse的代码注释模板很丰富,如:user、year、date、time等等,请参考附件。 尽管模板变量如此之多,但是对于复杂多边的实际项目而言,还是不够用,怎么办?自己增加新的呗! Eclipse配置界面都不支持定制自己的注释模板变量,没办法,改Eclipse源码。 具体怎么改,好像无头苍蝇,百度和谷歌了2天,...
项目中对于注释和代码规范的要求往往是毕比较严格的,如果全靠手动完成效率低,还难以保证保证的规范。幸好Eclipse给我们提供了自定义代码模版的功能。 先说一下Java代码注释模版,它是指这里的配置: 是不是跟你的不一样,多了@author和@date。恩,这是我自定义过的注释模版。效果是在给方法用/注释内容/,注释的时...

写在前面:一年前的某一天,在coder前面加上苦逼二字,聊以自嘲。却不曾想苦逼二字如今与IT如影随形。突觉感慨连连,遂成此杂文,记录心情。 关于我 性格里,不喜表露内心,所以一直以来博客,都是分享技术,从未描绘内心。不爱指点江山,评头论足。深以为自己没资历,没资格评判。粗浅的阅历,更谈不上任何指导意义,避免一切的误导和...
优先级队列,是堆数据结构的典型应用。优先级队列的一个典型应用,就是排队任务的有限调度,当一个任务结束后,优先执行当前优先级最高的任务。队列一个任务是,调用INSERT方法。
最近看到slf4j+logback的日志方案,并且介绍说,与log4j出自同一作者且做了不少优化,所以决定从commons-logging+log4j切换过来。 logback官网:(该作者即为log4j的作者)http://logback.qos.ch/ 切换方式非常简单,在原有基础上加入如下jar包即可。 slf4...
现在无论笔记本还是台式机的内存都已经是白菜价,4G以上的内存配置随处可见。我最近也将笔记本的内存升至8G,自然想更好的支持大容量内存,安装64系统成了必要的选择。就个人的使用情况来看,基本没发现什么常用软件对64位win7有不兼容的情况,使用良好。 回到正题,作为一个coder,开发环境自然必须搭建。64位系统下,最常...
最近遇到一些Jar包内外配置文件读取的问题。索性自己测试总结一下,与大家分享。 主要是关于ClassLoader.getResource和Class.getResource方法路径区别的问题。
最近在学习Spring源码的过程中,遇到了spring-asm工程的重新打包的问题,于是突然就想研究一下asm这个开源字节码操作工具。秉承我的一贯风格,想到啥就立马学啥。 对于开源产品,我的一贯风格就是通过其官方提供的源码版本管理地址(svn/git等),直接下载最新代码,构建Java工程,直接通过工程依赖的方式研究学...