自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(28)
  • 资源 (3)
  • 收藏
  • 关注

原创 Tomcat无缘无故停止

最近遇到个问题,有个线上的tomcat总是运行一会儿就自动停止了,莫名其妙的没有任何报错。在网上搜了一下,发现是跟这篇文章同样的一个原因http://www.77dev.com/2014/07/tomcat-randomly-shuts-down-without-any-logs.html原来罪魁祸首就是启动脚本里的一个 tail -ftail -f shows the lo...

2020-09-04 18:17:34 13689

原创 动手实现舞蹈链算法

把 简书 的文章转过来,这边看的人应该多点。舞蹈链(Dancing links)实际上是一种数据结构,可以用来实现 X算法,以解决精确覆盖问题。什么是精确覆盖(Exact Cover)问题呢?维基百科上对精确覆盖的定义如下:在一个全集 X 中若干子集的集合为 S。S* 是 S 的一个子集,当且仅当 X 中的每一个元素在 S* 中恰好出现一次时,S* 称之为一个精确覆盖。在计算机科学中,精确覆盖...

2020-02-14 16:28:14 576 3

原创 使用UrlRewriteFilter如何在Tomcat crossContext的情况下上传文件

正常情况下,使用UrlRewriteFilter是可以转发文件上传的请求的,

2014-07-19 16:06:05 2235

原创 spring boot集成shiro,使用java annotation配置而不是xml配置的经验

主要麻烦在于LifecycleBeanPostProcessor和AuthorizationAttributeSourceAdvisor的配置LifecycleBeanPostProcessor可以配成static的但AuthorizationAttributeSourceAdvisor依赖securityManager,所以就不太方便配成static的了那么怎么办呢?因为secu

2014-06-30 18:37:41 16527 1

原创 JAVA并发编程笔记(4)

Thread Confinement如果数据只被一个线程访问,那自然就不需要同步。所以Thread Confinement是获得线程安全最简单的方式之一。这有几种方式。可以完全依赖于实现,也就是调用者来保证只有单线程访问,但这有可能不是很安全。所以还有其它办法来实现这一点。Stack Confinement局部变量必然是线程安全的,只要它们没有escape。局部变量存在于当前线程的栈中

2010-05-06 23:36:00 959

原创 JAVA并发编程笔记(3)

Publication and Escape发布一个对象意味着能够从它能够从它当前范围之外被访问到。比如,保存可以被其他代码找到的这个对象的一个引用,或者将其作为一个非私有方法的返回值,或者将其作为参数传递给其它的类。public static Set knownSecrets;public void initialize() { knownSecrets = new H

2010-05-02 00:44:00 544

原创 JAVA并发编程笔记(2)

可见性Visibility这玩意儿很微妙,很容易违反直觉。要在多线程之间读写内存保证可见性,需要使用同步:always use the proper synchronization whenever data is shared across threads.Stale Datapublic class MutableInteger { private int value;

2010-05-02 00:09:00 414

原创 还是得记点笔记

很多书看了一遍之后就忘了,比如前面这个java concurrency in practice。记了笔记至少能帮助自己回忆,这样也不用再费那么大劲重新去复习几百页的英文书——还是电子版的。所以重新开始记点笔记写点摘要,也算是一个积累。

2010-04-22 13:04:00 333

原创 java并发编程实践 笔记(1)

线程安全 什么是线程安全(thread-safe)? 一个类,如果能够在多线程并发访问的环境下(不管线程访问的顺序)正确表现自己的行为,并且无需外部调用添加任何同步之类的操作,这个类就是线程安全的。 这个正确性可以这么理解,就是说多线程访问的结果不会不同于单线程的访问。 线程安全的类不需要外部调用提供任何附加的同步。 无状态(stateless)的类永远是线程安全的。

2010-04-22 11:54:00 471

原创 Agile & Iterative Development (1)

软件不是可以预测的或大规模生产制造过程。软件是新产品的开发。 迭代开发计划的驱动方式包括风险驱动和客户驱动。两种方式应该结合使用。风险驱动是指从技术的角度来说,开发人员选择风险最高的部分先进行开发。而客户驱动则是由客户从业务的角度上选择最有业务价值的部分优先进行开发。 固定的时间盒——迭代周期是固定的。这是指一旦迭代开始时定下来了本次迭代的长度,那么这个时间就不应该再更改了。如果在这个迭代周期

2010-04-22 11:47:00 500

原创 09年工作总结

工作上,没有什么进步。没有什么进步!!! 10年展望:过慢点,就是成功。

2010-01-06 16:06:00 418

转载 送一句话(转)

转载自o6z的bloghttp://ozzzzzz.javaeye.com/blog/198057 朋友要去应聘了,信心不是很足。我有一句话:对自己没信心无所谓,只要对自己的代码有信心。我很久之前认识一个人,他几乎不符合所有的做成功程序员的必要条件:不勤奋,不学习,不喜欢交流,不遵守纪律,不注意团结。总之你可以想到的会令他失败的条件,他都具备了。唯独他能写出好的

2009-11-11 13:59:00 512

转载 We Feel Overwhelmed. It Isn't Going to Get Any Better

为自己打打气,转帖一篇好文章,来自于Michael Feathers的《Working effectively with legacy code》。当你面对一堆大粪构成的大山的时候,还是有点事情可以做的——Working in legacy code is difficult. There is no denying it. Although every situation

2009-10-14 10:34:00 859

原创 塔木德遗产分配问题

这是个很有趣的问题,来自于古书《塔木德》中记述的如何给三个老婆分配遗产。先介绍一下《塔木德》。按照wikipedia词条里的解释,《塔木德》(希伯来文:התלמוד‎,转写:Talmud),是犹太教认为地位仅次于《塔纳赫》的经籍。源于公元前2世纪至公元5世纪间,记录了犹太教的律法、条例和传统。其内容分三部分,分别是密西拿(Mishnah)——口传律法、革

2009-10-12 19:01:00 9238 1

原创 软件最重要的是做什么,而不是怎么做

假设把软件分成两个方面,一个方面是做什么,一个方面是怎么做,那么哪个方面更重要貌似是不言而喻的。实际上,我认为跟软件相关的任何人,都应该将自己对软件关注的焦点首先放在做什么上。似乎前面说的有点废话,但我感觉程序员在编写代码的时候,往往会忽略了这一点。太多的代码纠结于如何去实现一个功能,而这个功能本身究竟是什么,从代码上看却经常是模糊不清的。我还是认为任何一段代码都应该清晰的反映出这段代码所代表

2009-09-27 21:24:00 999

原创 我对软件质量的认识

我想世界上绝大多数企业存在的目的恐怕都是为了使自己的利润最大化。对于一个软件公司来说,最直接实现这个目标的方法就是卖出更多的软件。那么如何实现这一点呢? 市场营销可能是很重要的一点。另外从长久来看,软件产品必须给客户带来利益。也就是说,软件必须能够满足客户的需要,能够对客户提供实实在在的帮助。达不到这样要求的软件最终一定会被客户和市场所抛弃。 考虑软件本身,除了软件外在的那些属性——也就是软件

2009-09-14 09:56:00 5272 2

原创 young tableau

把1到16填到4*4的正方形里,满足从左到右,从上到下均由小到大排列,共有多少种排法?据说是百度的一道笔试题。粗看起来不难,但做起来发现还真不好算。当然如果用编程的方法很容易就可以搞定,不过人家是要求用笔算的。水木Mathematics的高人说到这个是Young Tableau问题。呃,见wiki http://en.wikipedia.org/wiki/Young_tableau

2009-09-10 19:59:00 696

原创 沟通,简单,灵活

Kent Beck在他的《实现模式》里面,提到了编程的价值观问题。沟通,简单,灵活,这就是Kent Beck认为的编程时影响他每一个决策的核心的价值观。我完全认同他的观点。在我的编程实践里,我也时刻朝着这个方向努力。这种价值观都建立在这样一个基础之上,就是说代码是经常需要人去维护的。事实上维护代码的成本远远高于构建它们的成本。当然,如果一个软件写出来之后就基本上不需要再维护,那么我们或许应该采

2009-09-10 01:14:00 553

原创 jBPM 3 流程模型

以前写的。 jBPM 流程模型简介 面向图的程序设计 jPDL ( jBPM Process Definition Language )是建立在 JBoss jBPM 框架之上的一个流程语言。它的核心功能被封装成了一个简单的 java 库,用来管理流程定义和流程实例执行的运行时环境,可以很方便的嵌入到我们的应用中。 面向图的程序设计( Graph Oriented Programming

2009-09-09 13:28:00 1602

原创 High Performance MySQL, Chapter2: benchmarking and profiling

为了发现系统瓶颈benchmarking是为了确定系统性能表现究竟怎么样profiling是为了了解为什么系统会表现成这样benchmark的作用:测试应用当前的性能验证系统的可伸缩性减少系统将来扩展的风险测试系统在变化的环境下的表现测试系统在不同硬件、软件配置下的表现benchmark的策略测试整个应用,或仅仅测试MySQLwhat t

2009-09-02 11:24:00 474

原创 High Performance MySQL chapter 1

A logical view of MySQL server architecture Read/Write LocksLock granularity: table locks/row locksTransactions: ACIDIsolation Levels: Read uncommitted, read committed, repeatable read

2009-08-31 22:56:00 485

原创 面向对象分析与设计(第3版)

Booch的这本书分成三个部分,第一部分介绍了面向对象的基本概念。我觉得这是这本书写得最好的一部分。虽然我觉得从理论上而言讲的可能还是不够深入,但至少读完之后对面向对象会有一个直观上的认识。第二部分则介绍了UML2.0,以及软件开发生命周期和项目管理等方面的一些知识。同样的,后面这两点也不够深入,只是简略的介绍。第三部分属于实战部分,作者依次介绍了五个项目如何用面向对象分析与设计的方法进行开发。这

2009-08-31 10:08:00 857

原创 应该如何使用Mock

话说昨天看了一篇《Mock Roles, not Objects》的论文,彻底颠覆了我对mock的理解和认识。这篇论文是jMock作者在2004年发表的,描述了Mock Objects应该如何在TDD的过程中使用。 按照这篇文章的说法,Mock最重要的用途是用于推进纯粹的测试驱动开发。 例如,我们在开发一个对象A的时候,A需要一个service S,但这时S还没有编写实现。于是

2009-08-25 10:10:00 1021 1

原创 来点推理题

   网上流传的一个微软面试题就是给出一组相关的问题,每个问题的答案都跟其它题目相关,单看一道题目也许几个答案都是正确的,必须综合整组问题才能做出正确的回答。      现在我也来出几套类似的,嘿嘿。    1. 第6题的答案为?  (A)C (B)D (C)A (D)B (E)E   2. 答案为B的题目个数是?  (A)4个 (B)1个 (C)3个

2009-08-24 15:13:00 560

原创 关于测试驱动和遗留系统

   随手google到gigix的blog,看了一些他的观点和若干人等的相关评论,有些觉得颇有道理,摘录如下。    看“测试驱动开发”这个名字,首先应该明确:与它对应的是“文档驱动开发”。它是一种开发过程,这里的测试是一个设计问题,而不是QA问题。在没有 TDD之前,“正统的”开发过程要求有设计文档:高层设计描述一个模块“做什么事”,详细设计描述一个模块“如何做这些事”。软件工程课讲得

2009-08-24 15:11:00 419

原创 开发人员最重要的技能

08年初写的。话说我现在越来越发现,想写出好的代码真不是一件看上去那么简单的事情,要远远比学习某些特定的技术困难得多。 2008-01-23 19:37  阅读了Martin Fowler最新的一篇blog,颇有感触。  http://martinfowler.com/bliki/PreferDesignSkills.html    这篇文章一开始就提到这样一个场景:假设你

2009-08-24 15:06:00 400

原创 project euler

   http://projecteuler.net  编程解数学题的网站。比较有意思。 一年前做了153题,第154题当时卡在了那里,后来就一直没往下做。今天打开网站看了看已经出到252题了,我在中国的排名也跌到第18了。欠了99题,嗯,有时间我要继续开始做。

2009-08-24 15:01:00 532 1

原创 决定在这里留下点什么

把博客中关于计算机技术的内容贴过来。

2009-08-24 15:00:00 302

Kafka in action MEAP

MEAP v12,有前10章的内容。 Kafka in Action is a practical, hands-on guide to building Kafka-based data pipelines. Filled with real-world use cases and scenarios, this book probes Kafka’s most common use cases, ranging from simple logging through managing streaming data systems for message routing, analytics

2020-11-09

Microservices vs. Service-Oriented Architecture

One of the fascinating aspects of software engineering is how great concepts endure, but their execution and application are regularly reinvented using the tools and practices of the day. The rise of microservices patterns and practices is a great example of this process.

2018-03-05

Java虚拟机规范(Java SE 7)

Java虚拟机规范 (Java SE 7版) 原文版本. 2011/07/28 译文版本. 2011/11/13 作者: Tim Lindholm、Frank Yellin Gilad Bracha、Alex Buckley 译者: 周志明([email protected]) 吴璞渊([email protected]) 冶秀刚([email protected]

2012-12-12

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除