![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java
文章平均质量分 81
易德军
what it doesnt kill me ,it will make me stronger!
展开
-
Log4j的使用
一、介绍 Log4j是Apache的一个开放源代码项目,通过使用Log4j,我们可以控制日志信息输送的目的地是控制台、文件、GUI组件、甚至是套接口服务 器、NT的事件记录器、UNIX Syslog守护进程等;我们也可以控制每一条日志的输出格式;通过定义每一条日志信息的级别,我们能够更加细致地控制日志的生成过程。 Log4j由三个重要的组件构成:日志信息的优先级,日志信息的输出目的地,日志信息的输转载 2009-07-23 11:43:00 · 645 阅读 · 0 评论 -
站稳马步——(10)java I/O整理1
InputStream是所有字节输入流的祖先,而OutputStream是所有字节输出流的祖先。Reader是所有读取字符串输入流的祖先,而writer是所有输出字符串的祖先。原创 2010-11-17 15:42:00 · 870 阅读 · 0 评论 -
Java线程安全总结
主要内容:1.什么是可见性2.什么是有序性3.多线程情况下如何保证可见性和有序性4.synchronized关键字和volatile关键字介绍转载 2011-02-24 17:01:00 · 849 阅读 · 0 评论 -
解析Java中的多线程机制
一、进程与应用程序的区别 进程(Process)是最初定义在Unix等多用户、多任务操作系统环境下用于表示应用程序在内存环境中基本执行单元的概念。以Unix操作系统为例,进程是Unix操作系统环境中的基本成分、是系统资源分配的基本单位。Unix操作系转载 2011-07-05 11:39:29 · 824 阅读 · 0 评论 -
Spring MVC Controller的线程安全
“If you have an apple and I have an apple and we exchange these apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each o原创 2016-12-12 16:28:21 · 3995 阅读 · 2 评论 -
JSP片段
使用jspf在开发中写jsp页面时,通常都要通过如下方式在jsp文件头部引入我们需要的标签库,如:jsp核心标签库JSTL,Struts 中的自定义标签,时而还有我们自己写的自定义标签: 如果,每个jsp页面文件中都需要数十个或更多标签,那么每个jsp文件页面中都如上引入,是不是很麻烦呢?! 今天教大家一个偷懒的办法(记得,刚开始学习软件开发时,一位老师说:有时候,原创 2012-02-25 12:00:13 · 1385 阅读 · 0 评论 -
图数据库Neo4j实现人脉推荐——二度人脉
“吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。登高而招,臂非加长也,而见者远;顺风而呼,声非加疾也,而闻者彰。假舆马者,非利足也,而致千里;假舟楫者,非能水也,而绝江河。君子生非异也,善假于物也。”业务需求:通过现有系统“好友关系”和“用户通讯录”数据,实现人脉推荐——二度人脉….六度人脉技术实现分析:关系数据库(深度关联表,算死人)图数据库(天然图关系,选择Neo4j)原创 2016-12-06 19:11:30 · 13494 阅读 · 7 评论 -
Solr实现站内搜索
The palest ink is better than best memory——好记性不如烂笔头。2012补记一、需求:实现O2O公司站内商品搜索(当前是数据库Like模糊查询),提高用户体验二、方案:1) 基于Lucene自己进行封装实现。工作量大及扩展性差(除非自己很牛X,封装一个如Solr一样的),故不采用。 2) 调用Google、Baidu的API实现站内搜索。同第三方搜索引原创 2016-12-21 18:47:18 · 4843 阅读 · 5 评论 -
诡异的异常Cannot retry request with a non-repeatable request entity
越急越乱 越想早走,越让你走不了场景: 昨晚,使用solrj全量同步更新索引数据……生产环境 肚子饿……家里冰箱中还有半个西瓜…异常信息如下:org.apache.solr.client.solrj.SolrServerException: IOException occured when talking to server at: http://localhost:8080/solr/sd原创 2017-05-26 10:02:42 · 10481 阅读 · 0 评论 -
使用Netty搭建APP推送服务器
调用时序图如下:源码:https://github.com/Aresyi/pushServer(1)获取socket登录秘钥(登录口令):key. key的时效为1分钟,如果客户端在拿到key后,1分钟之内不执行socket登录验证的流程,则key自动生效;接口服务地址:/user/getPushKey(2)客户端拿到key后,与服务器端建立socket连接,并立即发送key到服务器。如果key过期原创 2016-08-17 16:54:17 · 10860 阅读 · 10 评论 -
使用HttpClient和Jsoup定向抓取数据
1.业务需求:从指定外网抓点货,冷启动2.站点分析:.限制IP… .需要登录…… .对登录账号有抓取频率限制………. .抓取频率过低,直接跳验证码页面………….. .验证码长度、模样(纯数字&字母数字混合)TM不固定………………..“我们能不能不抓了?“ “不行!必须得抓…” “……”这么说,此前写的爬虫,多线程、生产者—>消费者 并发抓取压根行不通。多线程毫无意义。3.使用技术:1原创 2017-06-07 21:26:11 · 2259 阅读 · 1 评论 -
Java中Callable和Future——简介
一、Java线程实现基础java中实现一个线程的方法是继承(extends)Thread类或者实现(implements)Runnable接口(我个人认为通过线程池启线程也算是)。继承Thread类:class A extends Thread{ @Override public void run() { //TODO }原创 2017-07-20 15:24:22 · 950 阅读 · 0 评论 -
Java中Callable和Future——引子
一、场景通常我们在一个事件方法中会去调用另外几个方法,如发用邮件,为了快速响应,一般最简单直接粗暴的是 新启一线程来异步发邮件(使用线程池较好)。这个时候我们不太在意所依赖的方法操作成功与否(即不需要结果)。但,多半我们是需要异步操作结果的。比如在Action层调用多个Service或在Service层方法中调用多个DAO。如下图,假设某Action层方法需要依赖调用a、b、c三个方法,它们三分别原创 2017-07-17 16:55:00 · 649 阅读 · 0 评论 -
演示springboot + mybatis或springjdbc集成CAT全链路监控
演示springboot + mybatis或springjdbc集成CAT全链路监控一、主要资料参考服务端部署:https://github.com/dianping/cat/blob/master/cat-doc/posts/ch4-server/README.md总文档:https://github.com/dianping/cat/tree/master/cat-doc二、核心...原创 2019-01-21 14:02:36 · 3444 阅读 · 0 评论 -
Maven中BOM
一、BOM简介BOM(Bill of Materials)是由Maven提供的功能,它通过定义一整套相互兼容的jar包版本集合,使用时只需要依赖该BOM文件,即可放心的使用需要的依赖jar包,且无需再指定版本号。BOM的维护方负责版本升级,并保证BOM中定义的jar包版本之间的兼容性。1.1、为什么需要BOM使用BOM除了可以方便使用者在声明依赖的客户端时不需要指定版本号外,最主要的原因...原创 2019-01-22 14:31:46 · 14347 阅读 · 1 评论 -
站稳马步——(11)java I/O整理2
选择流时:首先确定是输入还是输出;其次确定是字节流还是字符流;然后确定是节点流(看构造器,参数为数据来源,参数是String或File之类的)还是处理流;最后根据数据类型选择输入/输出流。(若考虑性能会在前试着加Buffered)原创 2010-11-19 15:46:00 · 820 阅读 · 0 评论 -
站稳马步——(9)java异常处理
Java提供了两类主要的异常:runtime exception和checked exception。所有的checked exception是从java.lang.Exception类衍生出来的,而runtime exception则是从java.lang.RuntimeException或java.lang.Error类衍生出来的原创 2010-11-16 11:40:00 · 850 阅读 · 0 评论 -
站稳马步——(8)java集合框架整理——Set
HashSet中实际是使用HashMap封装转载 2010-11-11 14:15:00 · 606 阅读 · 0 评论 -
Forward(转发)和Ridrect(重定向)的区别
一:首先看看转发和重定向在Action或Servlet的使用方式:1.转发 request.getRequestDispatcher("next.jsp").forward(request,response);2.重定向response.sendRedirect("next.jsp");可见,两者是通过不同对象(接口实例应用)操作的:HttpServletRequest,原创 2009-09-11 11:37:00 · 1840 阅读 · 0 评论 -
java代码的执行顺序
今天测试了一下java代码的执行顺序。通常,我们会认为jvm加载一个类时,首先会执行main方法,其实并不是这样的。测试一下得知,真正执行顺序如下:static变量—>Static代码块—> mani()—>实例变量—>代码块—>构造函数 JVM只为静态分配一次内存,在加载类的过程中首先找带static的,为其内存分配 测试代码:package test;/原创 2009-09-16 09:28:00 · 1198 阅读 · 0 评论 -
Java同步、异步相关知识点
Java同步、异步相关知识点一、关键字:thread(线程)、thread-safe(线程安全)、intercurrent(并发的)synchronized(同步的)、asynchronized(异步的)、volatile(易变的)、atomic(原子的)、share(共享)二、总结背景:一次读写共享文件编写,嚯,好家伙,竟然揪出这些零碎而又是一路的知识点。于是乎,Goog原创 2009-10-09 13:24:00 · 13278 阅读 · 4 评论 -
整理网上java数据类型、堆、栈知识(二)
第二篇:Java堆和栈的区别 http://wangjc-opal.javaeye.com/blog/232457 Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所转载 2010-03-10 10:32:00 · 823 阅读 · 0 评论 -
整理网上java数据类型、堆、栈知识(一)
第一篇:JVM基础概念总结:数据类型、堆与栈 http://java.chinaitlab.com/Jvm/798192.html 数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基转载 2010-03-10 10:29:00 · 894 阅读 · 0 评论 -
抽象类
众多人经常迷惑的是:抽象类中一定要有抽象方法。 直接又代码说明:package test;/** * @author ydj * @version Mar 22, 2010 9:05:54 AM */public abstract class AbstractClass {//说明:抽象类不一定要有抽象方法 void method(){};原创 2010-03-22 09:26:00 · 557 阅读 · 0 评论 -
内部类(NestedClass)使用(一)
此篇先以代码说明内部类中使用:什么样可以,什么样是错误的写法和使用。下一篇会以相关的资料说明为什么。为什么有时使用“内部类”,而有时却又使用“静态内部类”较好。 一下代码中,在使用非法处,均已经给出注释。 package test; /** * @author ydj * @version Mar 10, 2010 9:18:59 AM */public原创 2010-03-22 10:34:00 · 644 阅读 · 0 评论 -
明明白白Unsupported major.minor version 49.0的错误
以前时而碰到这样的错误:Unsupported major.minor version 49.0这里有一博文,对此问题剖析透彻,特此收藏学习。 http://www.blogjava.net/Unmi/archive/2007/12/04/165035.html转载 2010-04-20 10:49:00 · 944 阅读 · 0 评论 -
站稳马步——(1)重写 equals 和 hashCode 方法
尽管Object是一个具体的类,但是设计它主要是为了扩展。它所要的非final方法(equals hashCode toString clone和finalize)都有通用约定(general contract),因为它们被设计成要被覆盖(override)的。任何一个类,它在覆盖这些方法的时候,都有责任遵守这些通用的约定;如果不能做到这一点,其它依赖这些约定的类(例如HashMap和HashSet)就无法结合该类一起正常运行。原创 2010-10-25 09:39:00 · 1854 阅读 · 0 评论 -
站稳马步——(2)clone(克隆)、Cloneable
如果你碰到这种情况,你感觉是否需要copy一份呢?假设你从数据库中得到一个List列表后,你需要在各种情况下对此列表进行重新包装后返回此列表,那怎么办呢?如果在各种不同情况下分别去数据库取这个List,来操作,那岂不是要多次操作数据库!?于是,我一次读出,然后在不同情况下,对它进行copy。原创 2010-10-31 19:38:00 · 933 阅读 · 0 评论 -
站稳马步——(3)java比较器——Comparable和Comparator
使用java比较器排序原创 2010-11-01 16:21:00 · 797 阅读 · 0 评论 -
站稳马步——(4)String/StringBuffer/StringBuilder
在开发中,如果确定字符串会经常变化(拼接),建议使用StringBuffer(线程安全);如果再确认是在单线程环境中,建议使用StringBuilder(非线程安全)。打开Jdk源代码看看便知:StringBuffer中方法基本都是同步的(synchronized)——线程安全;StringBuilder是从 JDK 5 开始,为StringBuffer补充了一个单个线程使用的等价类。原创 2010-11-02 11:31:00 · 710 阅读 · 0 评论 -
站稳马步——(5)java集合框架整理A
java集合框架整体概述—— 真的不用学习“数据结构”吗?原创 2010-11-04 17:06:00 · 1099 阅读 · 1 评论 -
站稳马步——(6)java集合框架整理——List
ArrayList/Vector实现了动态数组;LinkedList内部使用“链表”数据结构;ArrayList不支持同步,Vector实现了同步原创 2010-11-05 16:40:00 · 682 阅读 · 0 评论 -
站稳马步——(7)java集合框架整理——Map
HashMap的内部实现机制主要使用“数组”+“链表”转载 2010-11-09 14:55:00 · 596 阅读 · 0 评论 -
Maven项目脚手架
一、背景&目标当前新建项目时,配置文件往往都是从其它项目拷贝过来,拷贝时很容易踩坑,并且不容易定位问题。尤其对新人来说由于在对公司项目结构、基础中间件、配置还不了解的情况下,会浪费很多不必要的时间。故,希望通过脚手架解决此痛点,达到如下几个基本目标:1.统一规范工程项目&代码层次结构——约定大于配置;2.提升工作效率——脚手架&代码生成器&自定义插件;3....原创 2019-01-23 10:55:16 · 3681 阅读 · 2 评论