![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JAVA
文章平均质量分 66
zh_harry
这个作者很懒,什么都没留下…
展开
-
DDD 战术设计开源实践
在国内互联网高速发展的近十年来,深刻体会到C端消费互联网的高速发展推动着技术的成熟,同时对传统产业不断深入重构,随之带来的业务的日益复杂。DDD的概念逐惭回到大家的视野。 DDD 不是新的技术,反而是古老的,`DDD其实是让我们更准确的使用面向对象`。反观我们走过来的这十几年,其实是在用面向对象的语言,在写面向过程的代码。原创 2022-10-26 19:04:31 · 594 阅读 · 0 评论 -
零基础暖心计划 spring cloud alibaba 全家桶项目开源
从小白零基础到spring cloud alibaba 全家桶落地,再到ddd架构的完整微服务分布式项目落地的开源项目启动了。文章列出所有相关资料!原创 2022-10-18 02:38:41 · 404 阅读 · 1 评论 -
tomcat 日志那点事
tomcat 启动时使用的是java.util.logger 日志框架tomcat 实现类[code]package org.apache.juli.logging;import java.util.logging.ConsoleHandler;import java.util.logging.Formatter;import java.util.logging.H...2017-07-15 14:06:31 · 166 阅读 · 0 评论 -
疯子在思考之-异常与return 的差别
程序异常会中断程序执行,所有所有的异常都需要捕获,否则会导致程序中断,一般异常由服务提供者捕出,由服务调用者捕获。这里借用think in java 的服务器程序员与客户端程序员概念。 为什么使用异常1 返回的类型不支持,通过异常返回给用户。例如 boolean login(username,password)2 可以显示的提示客户端程序员进行捕获异常并做出处理存在问题...2013-10-14 14:46:03 · 199 阅读 · 0 评论 -
MANIFEST.MF 文件内容完全详解
打开Java的JAR文件我们经常可以看到文件中包含着一个META-INF目录, 这个目录下会有一些文件,其中必有一个MANIFEST.MF,这个文件描述了该Jar文件的很多信息,下面将详细介绍MANIFEST.MF文件的内 容,先来看struts.jar中包含的MANIFEST.MF文件内容:Manifest-Version: 1.0Created-By: Apache Ant 1.5.1E...原创 2013-09-02 14:49:15 · 192 阅读 · 0 评论 -
疯子奉献-一个符号惹的祸
程序员是严谨的,但是再严谨也容易出问题,这就叫做bug。我奉献几点自己遇到过的几点问题。1 =与==这个问题很容易被忽视,经常少一个=,在C语言陷阱里有这个问题,就是工作几年的老程序员,也同样遇到过。2 =与!=讲一个真事,公司一个同事做注册用户的用户名敏感词过滤,结果少写了一个!结果可想而知,还开玩笑说,我只少写了一个符号。3 -与_这里是在url里,给第...2013-08-30 14:14:52 · 120 阅读 · 0 评论 -
疯子在思考之-从日志想到的软件架构
谈到架构是一个很泛的话题这里我们讨论一下兼容性与扩展性我们为什么用接口?这是很多java程序员都会问过的问题我的答案是为了扩展和兼容最近的框架中想加入日志功能,想自己写一个简单的日志操作类其实我们最常用的应该是log4j但jcp标准是java.util.logger 这两个东西完全不兼容,网上有很多说明了原因。有兴趣的同学可以去网上查一查。其实日志随便用...2013-08-28 18:57:23 · 86 阅读 · 0 评论 -
疯子在思考之java 线程的那点事儿
很长时间没写博客了,最近事情比较多之前在文章中提到过tomcat 的main函数在哪?被很多朋友拍砖了今天继续就这话题展开,先了解几个线程有关的概念1、多线程 multithread 为什么要用多线程?就是让cpu别太闲,有空就要干活,提高效率。2、线程池 threadpool 为什么要用线程池,所有跟池相关的,如connectionPool(数据库连接池),ajax re...2013-08-14 15:13:26 · 293 阅读 · 0 评论 -
Sparrow 框架设计哲学
sparrow 框架麻雀虽小,但五脏俱全为什么要写这个框架?这个框架我从11年开始写,中间重构了n遍,最原始的代码可能都找不到了,之所以坚持写,不是想新造轮子。 主要是从中学习基础原理。 经过近十年的打磨,有些设计思想和理念,是值得学习的,比如spring mvc 的设计模式,orm ico 等等。 虽然很多朋友们都了解,但要真正自己实现起来也并不是那么容易。而这个过程对原来的深入...2018-01-24 13:21:26 · 464 阅读 · 0 评论 -
SPARROW架构介绍
sparrow 框架设计最大化解耦,理论上业务层只依赖SPARROW-FACADE即可,接口可由第三方如spring c3p0 fastjson logback 具体实现。整体架构图如下:SPARROW 架构图 SPARROW-FACADE基础核心层,实现了一些框架和上层业务涉及到的一些工具类类,如图 工具类库 包括bean properties ...2018-01-24 22:02:15 · 1426 阅读 · 0 评论 -
SPARROW 框架redis客户端封装实践
redis 本身有客户端,先抛出来一个问题?为什么要对redis客户端进行二次封装?大概在11年时侯,第一次接触redis,那时侯研究过redis的各种数据结构,直接拿redis的客户端jedis直接用。公司安排人要对jedis进行封装,当时就很不理解,为什么非要封装一次才可以?后来自己写框架,意识到一些东西是需要封装的,比如连接的打开和释放,比如一些危险的方法,比如keys * 比如f...2018-01-25 21:41:35 · 225 阅读 · 0 评论 -
REDIS客户端封装实践2
接上一篇[REDIS客户端封装意淫](https://www.jianshu.com/p/03132e0d50e2) 对现在有接口,进一步重构。 进一步对客户端友好封装,对数据类型的转换,封装进框架内。增加CacheDataNotFound hook,并保留原有异常抛出接口,提供客户端灵活调用。对key的business 部分提供灵活扩展接口,为特定业务的监...2018-01-30 13:32:43 · 157 阅读 · 0 评论 -
自己动手写mvc框架SPARROW MVC
SPARROW-MVCSPARROW-MVC 是SPARROW框架其中的一员,模拟SPRING MVC功能实现。 目前实现功能列表参数自动化注入FLASH参数跨页面传递(包括中传页面和重定向页面)RESTFUL风格支持参数解析功能返回结果解析URL-METHOD映射URL REWRITE功能(自动原生支持)拦截器支持国际化支持JSON返回支持(原生...2018-02-01 22:31:35 · 264 阅读 · 0 评论 -
Sparrow 算法篇 由日期取交集到思维模式
日期交集早在13年左右的时侯,做过一个系统,功能很简单,做一个日程管理功能,这里边涉及到一个小知识点,就是日期取交集。今天跟大家分享的是从这个点展开的,时间段取交集的话题。业务逻辑逻辑很简单,就是一两个日期段取交集,可如果按正常思维去实现,其实日期交集的场景我们可以穷举出来,大概有4种情况 s1--------------e1 s2-----------...2018-02-06 23:46:34 · 184 阅读 · 0 评论 -
高性能轻量级markdown 解析器java 版sparrow-markdown
动机markdown 已成为网络博客最主要的排版格式。但一般都是有现成的软件支持,比如有道云笔记。但要想将markdown 功能集成到自己的博客或者公司的oa 上,需要一款开源的轻量的markdown解析程序,从github 找了一些开源项目相对都比较重,二次开发成本较大,所以笔者在春节期间开发了一款轻量级的markdown解析程序,符合oop开发原则,最大化复用和解耦。方便二次开发集成。...2018-02-24 17:17:34 · 2911 阅读 · 0 评论 -
Sparrow算法篇 从日期取交集到思维模式-2
接上一篇Sparrow算法篇 从日期取交集到思维模式这样的时间段有成百上千条该如何处理?如果我们需要根据具有日期交集的时间段分组呢?如果我们的业务不是日期,而是其他数据类型呢?如何抽象出计算模型?非日期型数据也可以进行分组?上一篇分享日期取交集的核心逻辑。 但映射到具体业务上可能有更复杂的场景,比如第一个问题,两个日期取交集还好搞好,但日期段很多的情况下,如何按每一个时间...2018-03-09 18:04:52 · 286 阅读 · 0 评论 -
SPARROW-JS 从0开始写 0依赖,原生JS框架
SPARROW-JS 前端JS框架变幻莫测,但原生js 接口不会变,所以以不变应万变,需要对前端js的原生api熟练掌握。为减少学习成本,将sparrow js 开放,支持大部分网站开发常用组件,代码简洁,无冗余。功能列表STRING 方法ARRAY 方法AJAXBROWSER 浏览器相关支持VALIATE 前端验证框架Toolip 提示MENU菜单支持JQ...2018-03-15 19:52:49 · 473 阅读 · 0 评论 -
linux 自动重启tomcat 脚本
Tomcat作为开源的服务器,性能与稳定性上比起一些商业服务器还是要差一些。将项目部署到Tomcat后隔段时间就会死掉,出现这种问题的主要原因可能是内存数据溢出,因为Tomcat容器在发生大量与数据库交互查询或者操作的时候很容易出现问题。定时重启是一个很好的补救措施,定时重启可以定时的清理内存也降低了Tomcat运行的风险,从而保持tomcat的最佳性能。 一、写一个shell脚本mytt.s...原创 2013-08-12 17:59:13 · 197 阅读 · 0 评论 -
tomcat 优化及错误All threads (10) are currently busy, waiting. Increase maxThreads错误
1. 如何加大tomcat连接数在tomcat配置文件server.xml中的配置中,和连接数相关的参数有:minProcessors:最小空闲连接线程数,用于提高系统处理性能,默认值为10maxProcessors:最大连接线程数,即:并发处理的最大请求数,默认值为75acceptCount:允许的最大连接数,应大于等于maxProcessors,默认值为100enabl...原创 2013-08-12 17:42:39 · 668 阅读 · 0 评论 -
log4j继承
log4j的logger继承 1、log4j的继承是通过命名来实现的。比如logger.a.b就会继承logger.a的一些设置。2、子logger会默认继承父logger的appender。如果配置中这样写:logger.a=INFO,app_a,logger.a.b=DEBUG,app_b,那么实际上,logger.a.b的配置是这样的:logger.a.b=DEBUG...原创 2013-08-12 17:07:28 · 196 阅读 · 0 评论 -
ibatis源码详解
[img]http://dl2.iteye.com/upload/attachment/0086/8250/0a9cc953-6786-3356-afa0-b6933e860371.jpeg[/img]主要类结构如上图sqlMapClient 代理sqlMapSession 类进行数据库操作,因为这里的session意味着每次请求,而大部分web服务器是单例多线程,即每个threa...原创 2013-07-11 16:40:50 · 109 阅读 · 0 评论 -
动态代理实现dataSource ConnectionPool
编写连接池需实现java.sql.DataSource接口, DataSource接口中定义了两个重载的getConnection方法: Connection getConnection() Connection getConnection(String username, String password) 没有close或release方法那么怎么 释放到池中呢?...原创 2013-07-11 21:39:40 · 144 阅读 · 0 评论 -
关于软件架构
软件架构包括硬件和软件部分,硬件部分主要是机房的选择,服务器部署南北同步,动静分离等。文章主要讲软件架构从以下几个问题分析 未涉及到的请各位补充可读性 兼容性 扩展性 可复用性 可维护性 可读性:即思路清楚,逻辑简单,用简单的逻辑实现复杂的业务。兼容性:对第三方框架或项目的兼容,比如spring对hibernate及ibatis的兼容可扩展性:即对接口的灵活运用,由客户...原创 2013-07-15 11:56:43 · 111 阅读 · 0 评论 -
SPRING MVC源码解析
DispatcherServlet extends FrameworkServlet extends HttpServletBean extends HttpServletBean extends HttpServlet服务方法 请求的第一个方法[code="java"]/** * Exposes the DispatcherServlet-specific requ...原创 2013-07-17 16:06:59 · 173 阅读 · 0 评论 -
关于JAVA框架的思考
目前的JAVA 企业级开发框架,我们常用的大致包括IOC AOP MVC ORM框架1、 IOC spring是一个非常棒的ico容器,其思想非常简单,用一个集合对象如MAP 来缓存对象(对象都是单例的),这也就是spring 所说容器内单例,它和java中的单例模式的区别在于单例模式是在当前java进程中保持单例,因为它有三个必要条件:private static 自身对象、private ...2013-07-18 16:15:14 · 101 阅读 · 0 评论 -
ThreadLocal独家解秘 附JDK源码
public class ThreadLocalTest { ThreadLocal tl = new ThreadLocal(); ThreadLocal t2 = new ThreadLocal(); /** * @author zlz * * @time 2013-7-11上午10:14:50 * @param args */ p...2013-07-18 17:01:57 · 108 阅读 · 0 评论 -
spring 缺陷
1、spring.core 功能比较多,我觉得应该再减少并集成ioc功能。这样一般项目只引用这个包就可以了,其中会依赖其他jar包,其实以spring 的能力完全可以写的。 2、spring aop有点鸡肋这个可以不用 3、spring mvc annotation全是jdk反射 通过方向名注入,所以要对方法名注解,其实可以通过方法获取到方法名(直接写代码解析.class文件就可以,还不用...2013-07-18 17:52:36 · 108 阅读 · 0 评论 -
REDIS LUA脚本使用经验分享
redis lua脚本出现之前redis是没有服务器端运算能力的,主要是用来存储,用做缓存用,运算是在客户端进行,这样带来了很大的带宽流量。lua出现之后这一问题得到了充分的解决,非常棒!redis lua脚本api介绍eval 在redis服务器端执行lur脚本evalsha 在redis 以脚本的sha1签名值在服务器端执行lua 脚本script exists 判断脚...原创 2013-07-19 09:08:11 · 589 阅读 · 0 评论 -
疯子在思考之IOC
控制反转 英语:Inversion of control,缩写为IoC我想很多同学都会思考过这样的一个问题,控制反转,什么地方反转了,是不是翻译的不对?这里插一句当年马云借着盖茨的嘴说:“互联网会改变世界。”其实是他自己说的,因为那时侯没有人认识马云,如果我说是翻译错误,大家肯定拍砖说我没理解。大家对spring都用了很多年,有喜欢看书的同学一定会看到过spring 技术内幕,非常...2013-07-21 01:26:36 · 85 阅读 · 0 评论 -
疯子解决eclipse 编码问题的小工具
eclipse 默认为中文编码为gbk,当用gbk环境写的代码,其物理文件的编码为gbk.即使用eclipse 改为utf-8其物理文件的编码仍不变,所以通过以下代码生成。[code="java"]package com.sparrow.utils;import java.io.BufferedReader;import java.io.File;import ja...2013-07-21 10:50:12 · 85 阅读 · 0 评论 -
疯子在思考之从零说MVC
这篇主要讲web开发基础,MVC概念的原型会从这里体现。[b]首先提一个问题main方法在哪?[/b]我们学的第一种语言,写hello world时都会写main方法(除脚本语言外),那么我们想一下,我们写web程序时main在哪?我们以b/s结构为例,很容易想到main其实有两个,一个在服务器端一个在客户端。那么服务器和客户端的通信走的是socket。通信的内容要有协议,即我们熟悉的...2013-07-23 09:44:54 · 72 阅读 · 0 评论 -
疯子在思考之从零说MVC-2
前几篇文章写了JAVA框架的思考[url]http://lizhizhang.iteye.com/blog/1909415[/url]IOC的思考[url]http://lizhizhang.iteye.com/blog/1910976[/url]MVC的思考入门篇[url]http://lizhizhang.iteye.com/blog/1912005[/url]今天接着...2013-07-25 16:16:57 · 102 阅读 · 0 评论 -
疯子在思考之自己动手写MVC
MVC-1[url]http://lizhizhang.iteye.com/blog/1912005[/url]MVC-2[url]http://lizhizhang.iteye.com/blog/1913546[/url]自己动手写MVC3,前两篇我们分析了MVC的基础,在这里大家对main函数有争论,接下来会有java多线程的文章,与大家分享。(这里会略带一些tomcat ma...2013-07-29 09:56:00 · 84 阅读 · 0 评论 -
LOG4J 的日志写到了哪里?有经验的同学请拍砖
一个实际例子直接帖代码[code="java"]# log4j configuration file################################################################### Pattern to output the caller's file name and line number.#############...2013-07-30 15:20:42 · 719 阅读 · 0 评论 -
疯子在思考之-mybatis3的sqlSession
关于sqlsession我们先看这些问题:我们做web开发,很容易联系到http的session,那么它跟进http的session有关系吗?如果非要映射到web开发中的某个对象他到底跟哪个对象很象呢?sqlssion是用来做什么的?如果只是数据库连接为什么不直接用sqlconnection呢?我们从配置文件可以看出他由sqlsessionfactory产生,sqlsess...2013-08-02 11:54:40 · 368 阅读 · 0 评论 -
[转]spring mvc 多方法-简单例子
package com.jp.action;import java.util.HashMap;import java.util.Map;import java.util.logging.Logger;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletRespon...原创 2013-08-06 10:47:12 · 96 阅读 · 0 评论 -
substring 陷阱
数据库substring(source,startIndex,length)javascritp substring(source,startIndex,endIndex)java substring(source,startIndex,endIndex)c# substring(soiurce,startIndex,length)有遇到的大家补充~...2013-08-06 23:17:25 · 159 阅读 · 0 评论 -
开源的高性能 0 依赖的JAVA基础开发框架SPARROW
麻雀虽小,但五脏俱全sparrow 源自中国俗语 麻雀虽小,但五脏俱全,努力打造一个全新的低耦合,0依赖的高性能java 开发基础框架。 这个框架我从11年开始写,中间重构了n遍,最原始的代码可能都找不到了,之所以坚持写,最初并不是想造新轮子。 主要是从中学习基础原理。 经过近十年的打磨,发现有些设计思想和理念,是值得学习的。比如spring mvc 的设计模式,orm ico 等等。 虽...原创 2013-06-30 00:36:29 · 299 阅读 · 0 评论