`
文章列表
最近在项目中,频繁使用到ByteBuffer,对于其中的一些用法感到迷惑,于是在闲暇的时间,查看了jdk文档,并使用少量的代码测试了对几个方法的使用,分享给大家。 1.传输数据 在jdk.doc里有说明: 此类的每个子类都定义了两 ...
关于字符串处理在Java中通常有三个类进行处理: StringStringBuilderStringBuffer 这三个类进行字符串拼接,StringBuilder和StringBuffer都有同样的方式,都拥有append()方法.而StringBuilder和StringBuffer不同之处在于,在做一次append操作的时候,StringBuffer是线程安全的(仅仅是在一次操作)。StringBuffer的线程安全在于,做append()操作的时候,在方法前增加了synchronized操作。所以可以预见StringBuilder和StringBuffer在做append()的方 ...
JVM内存模型1、栈Java栈是与每一个线程关联的,JVM在创建每一个线程的时候,会分配一定的栈空间给线程。存储局部变量、引用、方法、返回值等。StackOverflowError:如果在线程执行的过程中,栈空间不够用,那么JVM就会抛出此异常,这种情况一般是死递归造成的。2、堆 Java中堆是由所有的线程共享的一块内存区域,堆用来保存各种JAVA对象,比如数组,线程对象等。   2.1堆的分代JVM堆一般分为三个部分:Young:年轻代Young区被划分为三部分
  根据sql语句生成对应的dao,以及ibatis文件。   代码地址 https://github.com/qq54903099/ibatis-dalgen
关于Integer比较的小问题   Integer a = 1; Integer b = 1;   Integer c = 127; Integer d = 127;   Integer e = 128; Integer f = 128;     System.out.println(a==b); System.out.println(c==d); System.out.println(e==f);     结果会是什么呢?   true true false   why?   这里用到了java的装箱功能。 在编辑阶段一个Integer的变 ...
现在使用Master-Slave的放方式配置Solr的集群,Master用来创建索引,Slave从Master复制索引。   Mater-solrConfig.xml 写道 <requestHandler name="/replication" class="solr.ReplicationHandler" > <lst name="master"> <str name="replicateAfter">commit</str> <str name= ...
主要通过_response将byte[]输出到前端。 _response.setHeader("Content-disposition","attachment; filename="+dateFrom+"_"+type+(StringUtil.isEmpty(subType)?"":"_"+subType)+".xls");//filename是下载的xls的名,建议最好用英文         _response.setContentType("applica ...
这周部门同事要求我来进行分享一下Tomcat,我也在空余的时间对Tomcat的源码进行了阅读。   最初拿到这样一个事情,我也是比较头疼的,找不到着手点进行讲解。后来在网上查询了一些资料,对Tomcat的整体架构也有了一点了解。于是我开始着手于对Tomcat源码跟踪。   Tomcat整体是由多个组件组成,最顶层的组件是Server,一个Server代表着一个JVM实例,由Server进行初始化、销毁下面的组件。整个实例就好像一条流水线一样,由上层组件初始化下层组件,就这样一层一层的进行初始化和启动。     由上面的图可以看出,组件的组合关系。 Server包含多个Se ...
概述 虽然单个Quartz实例能给予你很好的Job调度能力,但它不能满足典型的企业需求,如可伸缩性、高可靠性满足。假如你需要故障转移的能力并能运行日益增多的 Job,Quartz集群势必成为你应用的一部分了。使用 Quartz 的集群能力可以更好的支持你的业务需求,并且即使是其中一台机器在最糟的时间崩溃了也能确保所有的 Job 得到执行。 Quartz 中集群如何工作 一个 Quartz 集群中的每个节点是一个独立的 Quartz 应用,它又管理着其他的节点。意思是你必须对每个节点分别启动或停止。不像许多应用服务器的集群,独立的 Quartz 节点并不与另一其的节点或是管理节点通信。Quar ...
1.数组转换成list   将数组转成成List一般使用Arrays.asList()这个方法。 List<String> staticList = Arrays.asList(strArray); 查看源代码可以看到,这里生成的List是Arrays的内部静态类,这个List继承了了AbstractList,但有一些方法没有实现。比如add,delete方法。所以这里直接生成的不能对List的大小进行改变。如果直接调用add或者其他方法会抛出:UnsupportedOperationException()。   那么,如何才能将数组转换成List并且可以进行更改列表大 ...
 Java线程一共有七个状态,分别是新建,可运行,运行中,睡眠,阻塞,等待,死亡。 
出于很多原因我们想使用自定义的序列化方法取代Java默认的机制。一个最常见的原因是提高性能,而另一个原因是有时候我们无法使用默认的序列化方法。在这篇文章中,我们具体来讨论怎样通过定制的序列化方法,对一个较大的、带有不可序列化属性的对象进行序列化。 下面这段代码定义了一个简单的类。它可以把一个给定的对象序列化到一个指定的文件,或者从相同的文件中把对象反序列化出来。在这片文章中,我将使用这个类进行演示。 SerializationDemonstrator.java
起源面试中面试官问我的一个问题: long l1 = 10L long l2 = 10L 问: l1==l2 是true还是false 我毫不犹豫回答true 他接着问,为什么? 我卡住了,回答不上来。 紧接着, Object o1 = new Object() ; Object o2 = new Object() ; 问:o1==o2 是true还是false 我回答是false 他又说了,为什么呢? 我回答,因为o1和o2是指向不同的对象。 他:那为什么上面就不是指向不同的对象了么? 。。。 好吧,我承认,我回答不上来。 回来之后,查了相关资料,特此把心 ...
用VIM打开一个文件时,出现一下错误信息提示:E303: Unable to open swap file for "[No Name]", recovery impossible在命令行模式下执行::help E303输出相关信息如下:Unable to open swap file for "{filename}", recovery impossible Vim was not able to create a swap file.  You can still edit the file, but ifVim unexpected exits th ...
最近在学习Python,之前也练习过,但时间一长有些东西还是有一点生疏,如果仅仅停留在看的级别上,那么对一门语言的学习也仅仅停留在了解的基础上。 今天闲着无聊,便动手写了一个计算Java代码有效行数的这样一个DEMO,里面用到了正则表达式,这个东西w 我现在用起来还是比较吃力的,纵观整个代码不过100行,但确实用了我今天一天的时间。   这个DEMO,不计算空行、单行注释、多行注释,只计算有效代码(其实后面应该把import以及花括号独在一行的代码也不计算在内,但目前没有处理)   代码很短,有些关键地方也进行了注释,其他的就不在赘述。   #coding=UTF-8 im ...
Global site tag (gtag.js) - Google Analytics