java
文章平均质量分 58
m47838704
这个作者很懒,什么都没留下…
展开
-
自己花了一个星期用java写的网络题库程序
用的java的socket+多线程+mysql编程(如果连接数量大的话用java的NIO)服务器端是java写的运行在unix上多线程,客户端也是用java写的也是多线程,中间的通信协议是通过传输序列化的对象来实现的,主要结构是“包头”+“包体”的结构,利用循环队列实现消息缓冲区。(后面写了一个App版本的,但是不要截图)下面是客户端和服务器端的代码结构下面是socket的序列原创 2015-08-24 23:59:06 · 1625 阅读 · 2 评论 -
spring多数据源路由小记
授之以鱼,不如授之以渔首先讲一讲如何实现自己的多数据源的配置和使用。多数据源的配置:这个问题很简单,什么jdbc.url….之类的多来几套即可以了,然后编写一个类读取几套该配置并为每一套连接建立一个连接池即可。如何使用多数据源呢:多个数据源提供统一的获取连接的接口,接口参数是数据源的key,该接口通过key值来找到对应的数据源的连接池,返回相应的连接即可。上面就是一个多数据的配置和原创 2018-02-03 22:16:20 · 547 阅读 · 0 评论 -
mybatis小记——数据库连接池实现
简单实现 说到数据库连接池的实现,可能大家并不陌生,应该都或多或少的实现过,那么先来说说一个简单的数据库连接池的实现。既然是连接池,首先得有连接,然后有池子(废话),连接使用jdk的Connection,池子使用一个List<Connection>即可,需要连接的时候从list中获取,如果list中没有那么就新new一个并加入到list中就可以了。使用完成之后,将连接放回list...原创 2018-02-10 21:51:16 · 2775 阅读 · 0 评论 -
java远程ssh小记——jsch那些坑
jsch是java ssh远程连接的框架,在使用的时候首先看了一下官方的实现,然后看了一下这个框架的源码,发现该源码注释太少了,简直可以说是没有注释,只能老老实实的把相关的关键类看一下,并结合官方例子完成java ssh连接和远程命令的执行,下面是官方的例子(官方的例子加入了一些界面相关的代码,看着比较混乱):/* -*-mode:java; c-basic-offset:2; inden...原创 2018-02-25 10:38:34 · 13182 阅读 · 3 评论 -
Netty小记——引用计数机制
引用计数机制在很多框架中都有使用,如果在游戏引擎框架coscos2dx中,这种机制可以很简单的进行对象的生命周期的管理,netty引用计数机制原文:http://netty.io/wiki/reference-counted-objects.htmlSince Netty version 4, the life cycle of certain objects are managed by t...原创 2018-03-05 00:17:18 · 1422 阅读 · 0 评论 -
Java引用分类和缓存实现
在JVM中将对象的引用分为了四类: 强引用:在GC阶段不会被垃圾回收 软引用:在GC阶段可能会被回收 弱引用:在GC阶段肯定会被回收 虚引用:不会影响对象的GC,当对象被GC的时候会得到一个通知如果用JVM做缓存的,考虑到缓存的性质,缓存中的数据并不是需要一直存在在jvm的整个生命周期中,所以可以在内存不够用的时候进行回收,所以可以使用软引用、弱引用的数据结构,如WeakHashMap...原创 2018-03-13 22:40:58 · 644 阅读 · 0 评论 -
ThreadPoolExecutor实现分析
该类是JDK中提供的线程池的实现,可以根据业务需求配置合适的参数,这样可以提高线程池的性能,该线程池的使用在前面的文章中已经讲解过了,本节主要分析其实现的机制是如何的。如果让开发者自己设计线程池,肯定也会提出下面几个问题: 1、在初始化的时候,线程池的初始化大小。 2、当线程池中线程不够用了,线程池如何处理。 3、线程池中只有很少或者没有任务运行的时候,线程池中空闲的线程该如何处理。...原创 2018-03-13 23:18:35 · 252 阅读 · 0 评论 -
LockSupport源码解析
绪今天和朋友讨论Java中的锁机制的时候,谈论到了LockSupport类,在之前一直没有使用过该类,所以当提到该类的时候还是有点陌生,然后看了一下JDK的源码和该类相关的技术博客,整理了一下该类的原理和使用场景。使用package mthread;import org.junit.Test;import java.util.concurrent.TimeUnit;i...原创 2018-03-26 00:21:53 · 677 阅读 · 0 评论 -
java类加载机制的深入分析
绪jvm类加载机制在很多书籍里面都有讲解,主要介绍了基于委托的类的加载机制、类加载链接初始化的过程、以及类加载时机等,本篇文章通过编写自定义的classloader来对相关概念进行更加具体直观的分析。源码样例分析SelfClassLoader.javapackage cloader;import java.io.File;import java.io.FileInputSt...原创 2018-03-28 00:49:43 · 356 阅读 · 0 评论 -
tomcat源码解读——启动过程分析
参考文章:tomcat源码解读——启动过程分析在上一篇文章中介绍了idea中tomcat源码调试环境的搭建,调试环境搭建完成之后首先配置tomcat的启动信息,配置信息如下(具体配置步骤参考源码中的README文件) 配置好了tomcat的启动信息之后,就可以开始从源码启动并调试tomcat了,在深入到tomcat的源码之前,为了对tomcat有一个更加直观的了解,可以首先分析一下tomcat...原创 2018-04-23 00:07:35 · 1094 阅读 · 1 评论 -
深入分析ReentrantLock公平锁和非公平锁的区别
在ReentrantLock中包含了公平锁和非公平锁两种锁,通过查看源码可以看到这两种锁都是继承自Sync,而Sync又继承自AbstractQueuedSynchronizer,而AbstractQueuedSynchronizer又继承自AbstractOwnableSynchronizer,下面是类的继承关系图: 其中AbstractOwnableSynchronizer是提供了设置占...原创 2018-04-20 00:24:41 · 23062 阅读 · 3 评论 -
JDK源码分析——Java的SPI机制分析与实战
重点提示:在我博客中的所有的源码分析的实例,我都将会放到github上,感兴趣的朋友可以下载下来调试运行,我相信还是可以有所收获的。我的目的是让所有读到我博客的朋友都可以了解到有价值的东西,学习到java核心的原理,使用起来更加得心应手。所有实例的GitHub地址:https://github.com/mh47838704/JavaExample ,我会不定期的更新代码,所有大家可以长期关注一...原创 2018-05-01 23:21:52 · 364 阅读 · 0 评论 -
JDK源码分析——类加载器的分析和实战
本篇文章中的实例代码已经放入github的JavaExample中:github地址:https://github.com/mh47838704/JavaExample该文章中的实例代码:https://github.com/mh47838704/JavaExample/tree/master/src/test/java/com/mh/JavaExample/cloader实例放在...原创 2018-05-02 23:42:40 · 662 阅读 · 0 评论 -
tomcat源码解读——Idea调试环境搭建
转载:tomcat源码解读——Idea调试环境搭建由于tomcat源码本身是基于ant构建的,所以如果想要在idea中运行,那么需要重新进行配置。通过在网络上查询相关的资料,找到了相关的配置,通过该配置可以在idea中正常的编译调试。已经添加好了配置文件的tomcat的源码可以在我的github上找到,下面是该源码的地址: https://github.com/mh47838704/...原创 2018-04-21 15:44:48 · 1161 阅读 · 0 评论 -
JDK源码分析——ThreadPoolExecutor参数详解
参考文章:JDK源码分析——ThreadPoolExecutor参数详解本篇文章主要对jdk中线程池ThreadPoolExecutor的参数进行详细分析ThreadPoolExecutor已经对上面的各种情况进行了封装处理,并且提供了相应的参数对上述各种情况进行控制,首先我们看一下该类的构造函数,从源码我们可以看出该类的构造函数有很多个,不同的构造函数需要填写的参数不同。针对没有填写的参...原创 2018-04-28 15:47:40 · 371 阅读 · 0 评论 -
Netty小记——web socket分片聚合实现
在netty中已经对web socket的分片重组进行了相应的实现,具体的实现类是 WebSocketFrameAggregator,该类继承自netty的消息聚合器MessageAggregator。MessageAggregator ...... * @param the type that covers both start message and content messag原创 2018-02-03 20:46:38 · 1552 阅读 · 0 评论 -
Java多线程之—ForkJoinPool源码分析
首先推荐阅读ForkJoinPool的作者Doug Lea的一篇文章《A Java Fork/Join Framewor》 http://gee.cs.oswego.edu/dl/papers/fj.pdf 英文原文下载地址还推荐一个不错的资源java并发编程文章资源下面将首先介绍一下该类的使用,以及某些关键的函数接口的实现原创 2018-01-08 21:07:10 · 563 阅读 · 0 评论 -
Java线程池深入分析
Java中线程池设计介绍 Java中的线程池的实现主要主要在rt.jar下面的java.util.concurrent包下的,主要由Executor(1.5)、Executors、ExecutorService、AbstractExecutorService、ScheduledExecutorService、ThreadPoolExecutor、ScheduledThreadPoolExecu原创 2018-01-06 22:02:18 · 176 阅读 · 0 评论 -
想写一个网络游戏(PS:纯粹是为了好玩)
最近用java语言写了一个C/S的题库程序,这个程序设计的最初目的是为了方便那些即将毕业找工作,或者是准备找工作的人们来分享面试题的,用户提供题目和自己心目中的答案,其他用户可以评论,支持信息的推送...具体的细节就不在这里详谈了,在我上一篇文章中有提到。这篇问题主要是想表述一下我这两周来一直准备的事情,我打算利用java+mysql+memcache+cocos2dx+lua+MMORPG的原创 2015-08-25 00:32:42 · 1049 阅读 · 0 评论 -
java Socket多线程聊天程序(适合初学者)
一个非常简单的java聊天程序,有客户端和服务器端,目前只有群聊功能,其他的所有功能都可以在这个基础上添加,现在我分享出来主要是为了保持一个最简单的java聊天程序便于初学者学习,界面也非常的简洁,只有两个文件,主要是用了socket,java多线程,知识点不是很多,很适合初学者 下面是服务器端代码package tk.socket;import java.awt.Dimension;i原创 2015-08-07 20:46:39 · 18448 阅读 · 12 评论 -
源码分析——HashMap和HashTable区别
HashMap和HashTable的主要区别是什么?应用场景分别是什么?区别: HashMap和HashTable都是用来存放键值对的,关键的区别是HashMap是非线程安全的,而HashTable是线程安全的。 不同应用场景: 由于HashMap和HashTable的区别是是否线程安全,所以HashMap更适合单线程应用,而HashTable更适合多线应用。这也就解释了为什么初学者大多会使用Ha原创 2016-04-28 14:06:27 · 838 阅读 · 0 评论 -
(spring AOP)VS(动态代理的例子)
包括了Spring如何使用AOP的例子,以及使用java的动态代理的例子,通过两者进行对比,是的开发者对Spring中AOP的原理有一个大致的了解!下面是下载地址 http://download.csdn.net/detail/m47838704/9515905代码是eclipse的JASE程序!解压导入eclipse即可,相应的依赖包在lib下面,如果在导入的时候出现错误,可能需要将lib下面的原创 2016-05-10 21:55:41 · 494 阅读 · 0 评论 -
equals和==的区别,以及如何将自定义类作为HashMap的Key
最近正在筹备实习的面试,所以在google了一些和java有关的面试题,虽然这些面试题都有相应的答案,但是如果要真正理解这些答案还是得从阅读java的源代码入手,只有真正看懂了源代码,才能真正的理解这些面试题出现的原因以及才能真正的理解相应的答案!今天这篇博客虽然题目是如何将一个对象作为HashMap的Key,但是涉及的内容还是比较广泛的,一个是平时面试问的比较多的“==”和“equal”的主要区别原创 2016-04-29 18:01:58 · 1121 阅读 · 0 评论 -
Java程序的路径问题
在javaSE程序中 项目名: –src –xxxx.java –image –xxx.png 如果要读取xxx.png那么程序的相对路径应该是(image/xxx.png)在javaEE中,把需要读取的文件放到webapp下面 webapp –imag原创 2016-04-18 17:44:01 · 296 阅读 · 0 评论 -
JVM内存管理简介
垃圾回收机制对象的引用计数:每一个对象都有一个整型的ref引用计数的值,每一个对象都有相应的父对象,所以说当父对象创建子对象的时候,子对象的引用计数就为ref=1,如果该对象被其他的对象引用,或者是被添加到List中,都会导致引用计数+1;当其他对象删除对该对象的引用,或者是该对象从List或者Map中移除的时候,都会使得引用计数-1,所以在垃圾回收的时候,会通过判断对象的ref值是否为零来决定是原创 2016-05-04 16:13:49 · 373 阅读 · 0 评论 -
commons-pool源码分析总结
不论进行什么程序或者框架的源码分析,总是要建立在使用它的基础之上的,当我们使用了它,然后才会有好奇心和动力去分析它是怎么样实现的。其实有很少的编程人员会直接使用commons-pool,但是常常在我们的项目中需要使用到它。我是如何开始接触commons-pool的呢?这是在我学习javaEE开发的时候接触的,当时候的时候需要使用dbcp作为数据库连接池,然而dbcp依赖于commons-pool来缓原创 2016-05-09 17:45:35 · 3058 阅读 · 0 评论 -
java学习阶段性总结
废话最近一直在忙着写一个项目,比较忙,所以最近一直没有来得及写博客,但是这个所谓的一直,我自己都记不清楚是多久了。在以前我是不喜欢写博客的,觉得太麻烦,还有就是自己的写作能力太差,虽然脑袋里面有很多的想法,但是确实由于表达能力和协作能力太差而不能成文,不能将自己的想法以及见解固化下来,俗话说好记性不如烂笔头还是有一定的道理的。在写博客的这段时间,还有一个感想就是,写作有时候也能帮助我们自己理清楚思路原创 2016-07-07 16:02:15 · 1589 阅读 · 0 评论 -
JDK中内部类的使用分析
序扯很多书籍都在讲内部类的功能,比如说内部类可以直接访问外部类的属性和方法等,但是在java中是如何使用的呢,如果不是有相应的需求,相信大家平时也是使用的很少的,但是我们有经常被告知内部类的重要性,而且在很多面试中也会问道内部类的相关问题,在这种情况我们如何更好的去了解内部类呢?从我个人看Java的源码的经验来说,如果你很想搞清楚Java中的一个概念呢,首先可以编写小例子然后查看运行效果,可以适用于原创 2016-07-20 21:57:02 · 1274 阅读 · 0 评论 -
tomcat6-源码分析(1)
相关基础概念容器 在tomcat中的容器有:Engine、Host、context等容器,主要用于服务的封装和组织。连接器 在tomcat中的连接器其实就是一个多线程的serversocket的accept的过程,把获取的socket分配给连接处理器处理。连接处理器 在tomcat中,连接处理器主要是对客户端的socket的http请求进行解析,并调用相应的内部过滤器 先进行预处理,然后原创 2017-11-11 21:25:35 · 252 阅读 · 0 评论 -
tomcat源码分析3—>代理模式深入分析
java动态代理:hello接口public interface Hello { void sayHello();}HelloImp实现public class HelloImp implements Hello { public void sayHello() { System.out.println("你好,世界!"); }}public class M原创 2017-12-26 11:07:39 · 226 阅读 · 0 评论 -
tomcat源码分析3—>cglib动态代理深度解析
通过对cglib的核心类enhancer的分析,该类库实现动态代理的方式是: Enhancer.java....../** * Set the class which the generated class will extend. As a convenience, * if the supplied superclass is actually an interface,原创 2017-12-26 12:01:28 · 257 阅读 · 0 评论 -
基于netty的web socket小记
1、WebSocketProtocolHandler里面包含了handshake过程,并且会在handshake完成之后产生一个用户事件往后面的管道传递,可以通过该事件判断web socket是否建立成功。ping、pong心跳帧已经在该handler中处理,管道后面的handler可以不用处理。2、在web socket服务器开发的时候,会用到http codec相关的handler,这些h原创 2018-01-22 22:32:24 · 543 阅读 · 0 评论 -
JDK源码分析——SecurityManager安全管理器实例分析
样例github安全管理器简介样例分析样例相关文件调试分析1、直接运行(无参数)2、配置默认安全管理器3、配置默认管理+自定义策略文件(=)4、配置默认管理+自定义策略文件(==)样例githubhttps://github.com/mh47838704/JavaExample参考文章:http://47777205.com/view/24...原创 2018-05-15 14:20:42 · 1802 阅读 · 0 评论