自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(407)
  • 资源 (23)
  • 问答 (9)
  • 收藏
  • 关注

原创 Tomcat源码分析-JMX(下)

背景上一节分析了Registry类的功能,其引用management包中所有的类,也就是JDK支持JMX功能的类,本节将继续分析类图的其他部分。类图分析JMX的类图截取如下:分析类图得到几点信息如下: 第一,JmxBeanServer和DefaultMBeanServerInterceptor类,它们都是MBeanServer接口的实现类,即它们都是MBeanServer类型。Tomcat中引用是

2017-06-25 09:20:47 1673 2

原创 Tomcat源码分析-JMX之Registry类(中)

背景“Tomcat源码分析-StandardServer类”,这一篇文章的分析中,我们知道StandardServer类的实例被注册到JMX的服务器的过程,是通过Tomcat定义的Registry类完成的,那么这个类又是如何完成JMX相关功能的呢,本文就记录一下本人在源码跟踪过程中的分析结果。流程回顾从StandardServer类的initInternal中跟踪到,注册流程最终是通过Lifecyc

2017-06-23 15:29:09 2849

原创 Tomcat源码分析-JMX(上)

背景从LifecycleMBeanBase 类分析那一篇文章中,我们已经知道 Tomcat的所有的组件都实现了JmxEnable接口,并且在初始化过程中通过Registry类注册成为Java Managed Bean 了。那么JMX在Tomcat是的运用原理是什么呢?今天就这个问题进行了实践和探究,记录一下流程。JMX基本概念首先,我们来看一下sun公司的官方定义 JMX(Java Manag

2017-06-22 18:09:52 1341

原创 Tomcat源码分析-catalina.home和catalina.base

背景Bootstrap启动的时候使用了两个系统变量catalina.home和catalina.base,从官网和源码中的注释可以知道这两者的区别主要是:catalina.home是Tomcat产品的安装目录,而catalina.base是tomcat启动过程中需要读取的各种配置及日志的根目录。默认情况下catalina.base是和catalina.home是相同的,本章就为了解决本人看到这两个东

2017-06-20 09:19:46 6701

原创 Tomcat源码分析-StandardServer类

类概况StandardServer类是Tomcat初始化流程中的第一个组件,本章需要结合“Tomcat源码分析-初始化流程” 的时序图继续看。时序图中Catalina类调用了StandardServer类的init方法,而这个模版方法是调用子类的initInternal类的,所以该类着重关注这个方法即可。类图绘制如下:主要流程初始化流程主要通过该类的initInternal方法完成的,而它的star

2017-06-19 17:37:42 2033 1

原创 网易邮箱被盗用记录

背景早上导出在icloud上导出通讯录操作时,执行解除手机的双重验证功能,需要输入验证邮箱,就输入另一个2007年注册的邮箱帐号,登录该邮箱查看验证码的时候,发现该邮箱有大量退信邮件高达3000多封。 查看帐号登录信息,正好是昨天到今天凌晨4点期间,帐号有异常登录。异常登录都是通过POP3方式,不知道这是否跟我设置了邮箱的POP3服务有关,前段时间因为项目中的邮箱服务功能,开启了该帐号的POP3服

2017-06-18 08:21:54 4478

原创 Tomcat源码分析-LifecycleMBeanBase

类概况关注这个类是因为上一回跟踪了AccessLogValve类,它是LifecycleMBeanBase的一个子类,搞清楚这个类的各个子类结构,也就理顺了Tomcat容器中各个组件的协助流程了。管中窥豹,还是先从这个顶层抽象类开始吧。 这个类的结构很简单,类图绘制如下:父类LifecycleBase Base implementation of the Lifecycle interfac

2017-06-16 14:21:19 2030

原创 Tomcat源码分析-AccessLogValve类

类概况Tomcat的server.xml中,Host节点的子元素名称是Valve,用来定义一系列的处理器,AccessLogValve就是用来记录容器访问请求的日志处理类。Valve,本意是阀门的意思,AccessLogValve是处理生成访问日志的,梳理它的类图如下: 它的所有的成员变量大多都跟日志文件写入操作有关。使用方法tomcate的默认配置为: <Valve className="org

2017-06-15 18:39:52 6111

原创 高考和我的职业之路

前天高考,也正好是我高考结束10年,我是2007年6月7日参加高考的,想想我的成长之路,有几分幸运,也不免心酸,趁着这个高考的话题,我也来理理自己19岁到29岁这十年的成长之路吧。高中的时候没有人关注过心理问题,在那些只有漫天书卷的日子里,我不可避免地患上了考前综合症,每到大考之前,必定辗转失眠,势必影响第二天的考试,考试结果依旧不会太好,如此往复,直到高考前夕。毫无悬念,即使...

2017-06-10 14:02:08 948

原创 简单东西:Nginx 实现 Tomcat 负载均衡

基本概念百度百科上定义Nginx是这样的: Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。由俄罗斯的程序设计师Igor Sysoev所开发,供俄国大型的入口网站及搜索引擎Rambler(俄文:Рамблер)使用。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,

2017-06-08 14:45:01 837

原创 Tomcat源码分析-Java原生态log运用

背景调试tomcat源码过程中,控制台日志打印的都是INFO级别的日志,于是就想修改下日志级别,打印Digester类的DEBUG级别的日志,便于观察Digester类解析server.xml的流程,顺便跟踪了一下tomcat使用日志的流程,整理如下。使用方法Java提供了原生态的日志工具包java.util.logging,功能虽然没有log4j强大,但是够用了,我想这也是tomcat使用原生日志

2017-06-07 16:19:02 970

原创 Tomcat源码分析-初始化流程

主要类图Tomcat的Bootstrap类关联的几个主要类整理如下:初始化入口类是Catalina,它的load()完成初始化所有类的过程,主类StandardServer类有两个父类,它提供了生命周期的管理方法,同时也具有ManagedBean的功能。 进一步分析得到初始化过程中的时序图。初始化时序图 start方法包括两个步骤,load和start。load操作最终转换为Catalina类的

2017-06-06 16:15:33 1764

原创 架构启示录

背景2017年6月3日,本人参加了一个培训机构组织的架构分享大会,大会的主题是“一言以蔽之,十年架构之路汇成一句话”,八位一线专家现场畅谈对软件架构的理解和体会,剖析和分享架构实践过程中的难忘的问题。我这种井底之蛙,听完之后果犹如醐醍灌顶,眼界大开。 同行同事归程途中感慨以前工作都荒废了,需要学习补课了。我也是这样想的啊,说来也挺巧,最近也是开始反思个人能力水平,开始关注软件架构,正好单位

2017-06-05 15:26:52 1107

原创 Tomcat源码分析-CatalinaProperties类

这个类很简单,就是一个属性获取的公共类。但是用法却很巧妙,代码相当优雅,所以忍不住想要再说说这个类。它的功能是管理 `catalina.properties` 类文件中的配置属性获取,只有一个方法 `getPropertity(String name)`。

2017-06-05 11:25:23 1632

原创 Tomcat源码分析-Bootstrap类

背景本人真正从事Java开发工作已经五年了,最近一直在思考五年的工作经历,技术应该达到一个什么样的水平的呢。运用SWOT方法,剖析了一下自己目前的现状: 1 能快速熟悉一个项目,厘清项目框架、主要功能模块,找到值得学习的设计思想,发现明显的设计缺陷。 2 有代码洁癖,看到烂代码就有重构的冲动,深受代码重构、代码简洁之道等Java经典著作的毒,写代码的时候简直会有“我是作家,我的代码我做主”

2017-06-02 17:57:53 3300

原创 MySQL修改密码

许久不用MySQL了,今天打开HediSQL连接MySQL时发现root密码忘记了,修改密码操作捣鼓了一阵子,记录一下,以备后用。(Win10本机操作)1 关闭MySQL服务:net stop MySQL2 以管理员身份打开cmd控制台窗口,进入MySQL所在目录的bin目录,执行mysqld --skip-grant-tables3 再另开一个cmd窗口直接执行mysql命令(由于2操作已经是

2017-06-01 10:15:02 568

原创 Linux基础应用

近期工作中运用Linux命令组合获取机器信息的几个命令整理:获取本机IP获取本机IP,主要是用ifconfig命令,结合正则,及awk命令进行截取。执行操作如下: 发现awk命令特别好玩,是基于行单位的,默认以空格、tab键分割,打印序号从1开始的。设置分隔符可用-F(file_seperator)来自定义分隔符。 最后用sed阶段命令,只打印第一行就是本机IP,

2017-05-27 09:58:31 372

原创 Linux的主机名基础

什么是主机名主机名就是计算机的名称,局域网内计算机之间相互访问,可以通过主机名称来访问。主机名修改跟主机名有关的命令是hostname,可以用来显示当前机器的主机名,也可以修改主机名称。 永久修改主机名称的方法 1)hostname 主机名称,只会生效一次,机器重启主机名就会被还原。 2)修改/etc/sysconfig/network中的HOSTNAME属性名称与hostname设置的主机名

2017-05-06 18:33:13 807

原创 简单东西 Java 定时调度线程池用法

If any execution of the task encounters an exception, subsequent executions are suppressed. Otherwise, the task will only terminate via cancellation or termination of the executor. If any execution of

2017-03-10 18:16:58 1937

原创 html 文件中毒导致Java mail发邮件失败问题复盘

项目中有一个邮件发送的功能,实时监控服务器系统信息,并定时发邮件给系统管理员,邮件发送使用的是 html 格式的邮件正文。但是最近一次部署后,所有发送邮件操作均没有后台异常,但是收件箱没有收到任何邮件。这是怎么回事儿呢?邮件为什么被送达呢?

2017-02-28 09:10:47 1305

原创 ElasticSearch环境搭建

定义 ElasticSearch是什么?Elastic,英文意思是灵活的,弹性的。ElasticSearch就是一种全文检索引擎。Apache Lucene是迄今为止,最先进,性能最好、功能最全的搜索引擎,但是它只是一个搜索引擎库。而ElasticSearch是一个基于Apach Lucene的开源搜索引擎,是一个分布式可扩展的实时搜索和分析引擎。 它的定义是这样的,分布式的:、时文件存储(每个

2017-02-19 11:41:44 1156

翻译 GC判断可回收对象算法

声明:本文摘录周志明先生的《深入理解Java虚拟机》,记录下GC算法中的可达性算法分析。是在问答频道看到一个对可达性算法的疑问,梳理下,也是自我学习巩固的过程。关于可达性算法的几点记录如下: 首先,可达性算法基本思路是定义一些列称为"GC-Roots"的对象作为起始阶段,从这些节点向下搜索,搜索走过的路径称为引用链,当一个对象到GCRoots没有任何引用链时(即从GCRoots到这个对象不可达

2016-11-10 17:28:03 1247

原创 算法整理-二分查找列表最大值

需求描述 已知一个列表是先增后减的半有序列表,现在需要找出列表中的最大值,列表长度可能很大,考虑时间复杂度,该算法该如何实现?实现思路 在不考虑时间复杂的的情况下,可以直接遍历,用max标识来记录最大值,知道找到一个比最大值小的记录,说明列表开始降序,最大值就找到了。 如果考虑到时间复杂度,且是半有序的列表,收到二分查找的启发,可以使用二分查找,每次比较中间项与其相邻元素的大小,判断

2016-11-04 17:49:09 4938

原创 shell脚本实现sequoiadb数据导出功能

1 变量定义   Shell变量定义变量名称和赋值符号“=”之间不能有空格,否则会报语法错误2 变量引用   引用参数使用$参数序号,引用脚本定义的变量则用$变量名称3 if条件语句   使用[]包裹条件,语法为if[condition] then fi4 文件遍历   文件遍历,使用循环语句while读取文件的每一行,语法为while read 变

2016-10-18 11:31:38 817

原创 开发整理-jquery datatable插件问题总结

近日使用到了jquery的datatable插件作为页面分页列表,踩了不少坑,整理记录一下。        首先,创建table的方式有两种,一种是DataTable,还有一种是小写开头的dataTable,两种方式创建的表格对象能操作的方法也不同的,使用大写的DataTable创建的对象,有一个ajax().url().load()方法,可以动态重新加载新的请求,而小写开头的就没有。

2016-07-17 08:19:31 3159

原创 简单东西-group by与sum一起进行数据统计

今日看到一道sql统计的题目,要求根据已经知道的表编写sql统计成另一张表。需求是这样的,有一张teacher表记录了每一位老师在哪一天有课程,表结构如下: id week (星期几) 有课 1 1 有 1 1 有 1 2 有 1 3 有 2 1 有

2016-04-14 14:41:38 17528

原创 简单东西-面试经历总结

最近两周找工作,面试过程中碰到一些比较有深度的提问,现在整理整理,也是学习的过程。     分布式环境下java的同步机制失效如何是好     我们知道java中的锁同步机制,是应用层面的,只对当前应用有效,所以对共享成员变量的同步处理在单个应用中有效。但是如果涉及到集群部署的环境,那么单个应用中的锁同步机制不是就失效了吗?那么共享变量该怎么处理呢?这是面试过程中遇到的第一个由深度的问题:

2016-04-12 21:14:14 735

原创 简单东西-插入排序算法Java实现

简单插入排序算法       数据结构里面,常用的内部排序算法之一,简单插入排序。算法思想很简单,就是从第2个元素开始,用临时变量存储该待插入元素,然后从该位置处指针往回递减,如果某个位置处元素比该待插入元素大,就往后挪,直到找到某个位置处的元素比该元素小或相等,说明其后一个位置就是待插入元素的有序位置,则插入。实现算法如下:import java.util.Arrays;public

2016-03-16 08:40:07 763

原创 简单归并算法-有序数组合并算法实现

一个简单的有序数组合并算法:写一个函数,传入 2 个有序的整数数组,返回一个有序的整数数组。实现相当简单,创建一个长度为这两个长度之和的数组,然后分别用三个指针指向这三个数组,找到这两个数组中各个元素在合并数组中的位置并插入,直到某个数组指针到达尾部。再将另一个数组剩下的所有元素,直接放入归并数组尾部。算法的简单实现,需要注意的是对参数的校验,判断数组是否有序。      public

2016-03-14 14:33:50 2455

原创 归纳法-生成全排列算法Java实现

数学领域的全排列问题,从n个不同元素中任取m(m≤n)个元素,按照一定的顺序排列起来,叫做从n个不同元素中取出m个元素的一个排列。当m=n时所有的排列情况叫全排列。《算法设计与技巧分析》这本书中,使用归纳法生成一组数【1,2,3……n】的所有排列问题,并用数组P[1……n]来存放每一个排列。该归纳法基于这样一个假设:可以生成n-1个数的所有排列,那么就可以扩展方法,生成1,2,……n这

2016-02-19 14:11:57 2996

原创 Java基础-Map容器的并发访问控制

在并发环境中,多线程之间共享数据时,需要对数据访问进行并发控制。例如,经典的生产者-消费者的实例中,生产线程和消费线程共享同一个容器对象,那么必须使用线程安全的容器对象。        简单的使用HashMap,统计某些key的出现次数,正确的并发控制代码如下:

2016-02-15 23:00:17 2267

原创 Java基础-jdk自动资源管理功能

JDK1.7新功能中,一个很好用的功能就是自动资源管理功能try-with-resources。      try-with-resources 是一个定义了一个或多个资源的try 声明,这个资源是指程序处理完它之后需要关闭它的对象。try-with-resources 确保每一个资源在处理完成后都会被关闭。 任何实现了java.lang.AutoCloseable 接口和java.io.Cl

2016-02-14 22:19:48 871

原创 数据结构-单链表的java实现

单链表实现链表的打印及元素删除操作,链表的实现主要是next属性的定义,将一堆节点关联起来的。实现简单的链表如下:public class LinkNode { private int value; private LinkNode next; public LinkNode(int x) { value = x; } public LinkNode getNext(){

2016-01-22 17:26:52 1505

原创 简单东西-java动态更改JLabel背景图片

java的awt设置背景图片的一种方式是使用JLabel类,它的setIcon可以设置背景图片,但是如何动态修改背景图片呢?这源于问答频道上的一个问题,题主给的代码总是无法正确动态修改背景图片,找了一阵子,发现它处理点击事件的代码存在错误,JLabel类对象实例化一次就够了,然后动态setIcon修改背景。而不是在点击时重新实例化标签对象。public class DynamicBackgro

2016-01-17 21:17:24 9689 1

原创 简单东西-Java不变类编写

并发环境下设计线程安全的类,一个类如果是不变的,那么它一定就是线程安全的。这是设计模式中不变模式的一种,一个对象在创建之后,它的状态就不会再发生变化,它就是不变类。java中的String,各种基本类型的封装类型,都是不变类。在设计任何一个类的时候,应当慎重考虑其状态是否有需要变化的可能性。如果其状态没有有变化的必要,那么就应当将它设计成不变类。      设计不变的类,应该限制成员变量的操作

2016-01-14 13:50:06 1163

原创 简单东西-jQuery过滤数值

      $.grep() 方法,$.grep() 方法是按照某种条件来过滤数组,所以使用 $.grep() 方法可以从数组中过滤出我们想要的结果。一个简单的去除数组中与第一个元素相同的数据。   function distinctArray(array){ var result=[]; var baseValue; while(array.length>0){

2016-01-12 17:28:41 657

原创 Eclipse执行片段

发现Eclipse一个有用的功能,创建Scrapbook Page,可以执行一些代码片段,而不必编写完整的类文件。     新建ctrl+N,输入Scrapbook,选择Scrapbook Page,后生成一个.jpage文件,这样就可以在这个文件里面编写代码片段来执行了。选中需要执行的片段,右键execute执行,就可以看到自己编写的代码片段的执行结果了。不用写完整的类,非常简单,又便于调试

2016-01-10 22:08:38 933

原创 项目开发-微信公众号被动响应消息处理

过去参与的一个微信公众号开发的项目,其中处理被动响应消息的类相对臃肿,原因是该项目需要处理的消息类型较多,通过switch分支,分支方法都写在一个类里面。功能完成后,这个类就巨大无比了。闲来无事,就在想应该怎么重构一下呢?设计模式里面有解决大量if分支的状态模式,但是模式应用还没看明白。      想来,还是switch最直观的,为了便于维护,有必要把每个分支都抽取成一个处理类,同时做好包结构

2015-05-18 09:10:31 1821

原创 简单东西-斐波那契函数实现

CSDN首页的极客头条里看到一个问题,实现斐波那契函数,并且计算n等于100时的函数值。简单地想了下,所能想到的就是使用递归完成。用递归实现,测试发现递归效率非常低,尤其是当计算的N稍微大点时,计算N=100差不多耗费了3000秒。而且需要考虑长度问题,返回值不能用int,溢出的临界是N=50。       无意中逛CSDN的问答频道,恰好也看到一个斐波那契函数的问题,而且不是用递归而是用临时

2015-05-12 15:07:49 1501

原创 简单东西-jQuery解析xml数据

CSDN的ask频道看到一个问题,使用jQuery的ajax请求返回xml格式的数据,并对其进行解析。但是我测试了提问者的代码,结果是解析xml的find方法没有查到结果。查看了jQuery的find的API,其实这是个很简单的API运用问题,理解了find的用法,就很容易明白错误所在了。find() 方法获得当前元素集合中每个元素的后代,通过选择器、jQuery 对象或元素来筛选。    问

2015-05-06 08:47:20 1289

HugeGraph 图数据库 Hubble 的 https 部署脚本和证书文件

1、HugeGraph 图数据库 Hubble 的 https 部署脚本和证书文件 2、Hubble 版本1.6.0

2023-10-25

xxl-job-oracle.zip

xxl-job 支持 Oracle 的映射文件和建表语句

2021-04-11

CuckooStudy.rar

Cuckoo Sandbox 研究需要的 Guest 端介质。

2021-01-04

v8-1.0-SNAPSHOT.jar

OpenRASP-v8 jar 的 Java 包,可直接安装到本地,解决源码的依赖

2019-09-27

Node.js最新Linux版本

Nodejs的Linux下的解压版本,最新版本,为了解决下载难得问题,上传资源。

2019-02-14

IntelliJIDEA快捷键与Eclipse对比

IntelliJIDEA快捷键与Eclipse对比,让熟练运用Eclipse的同学能迅速找到IntelliJIDEA对应功能的快捷键。

2017-06-02

springMVC简单登陆例子

springMVC的一个简单例子。

2016-04-01

一个文件的读写例子

file io的简单实例

2016-03-30

strut2简单登录

strut2简单登录功能实现,作为学习Struts2的资源,共享。

2015-05-07

java web登录验证码

java web登录验证码实现,分享,共勉学习。

2015-05-07

SpringMVC学习demo

spring mvc的实例代码实现。简单的框架搭建,共享学习!

2015-04-24

strut2学习项目

struts2学习的demo源码,简单直观的。

2015-04-23

ReentrantLock源码分析

近日,阅读jdk并发包源码分析整理笔记。

2014-12-26

highcharts插件使用学习文档

highcharts用法学习文档,参照官网摘录了主要使用方法编写的学习文档

2014-09-03

jpa学习总结,pdf类型的,详细介绍了jpa的应用

jpa学习总结,pdf类型的,详细介绍了jpa的应用,对了解jpa的入门有一定的指导作用的,本资源下载源于传智播客的视频课程。

2010-10-07

iBatis视频,详细介绍,及总结,这是传智播客里面的一个教学资源,详细介绍了ORM的可靠产品iBatis的基本操作过程

iBatis视频,详细介绍,及总结,这是传智播客里面的一个教学资源,详细介绍了ORM的可靠产品iBatis的基本操作过程

2010-10-07

个人事务管理系统c++

个人事务管理系统c++,用MFC开发的个人事务管理系统的小软件,可以供软件编程的学者开发练习。

2010-07-20

java 的Jms开源项目的源代码

java 的Jms开源项目的源代码,是一个值得研究的开源项目。

2010-07-20

状态栏显示时间的MFC程序

状态栏显示时间的MFC程序,在MFC中实现的在状态栏显示

2010-06-27

百度面试试题及其分析

百度面试试题及其分析,IT行业的经典面试试题及其讲习。

2010-06-22

JDBC多层架构解析图

JDBC多层架构解析图,用图形可以清晰的描述出多层架构的表现。

2010-06-22

JDBC连接数据库的视频过程

java 的JDBC连接SQL2005数据库的视频讲解,可以帮助学习java数据库知识的同学们一下。

2010-06-22

windows的多线程消息机制

ppt讲述了windows的多线程消息机制可以供初学MFC的编程爱好者们些许的参考

2010-06-22

SWTSwingDesigner

这是一个压缩包文件,包含了Eclipse的控件的可视化工具,类似Delphi的控件包,可以拖而不必写大量的代码

2010-06-22

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

TA关注的人

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