
java
文章平均质量分 78
帐前卒
有道云笔记Server端码农。勤于专研算法架构等诡异的计算机知识。
展开
-
Lambda表达式与图灵完备
引子 这篇还是用中文写吧。我基本上没有看到中文的推导过程。当然英文的也各种缺失推导过程。有空的话再用英文写一篇(我肯定没有空)。首先是lambda表达式。用过Python, Java, JS的,都应该知道。否则意味着你肯定没有好好学。我是从国外的视频中看到lambda表达式和图灵机等价这一观点的。然后人家就进行了简单的推导。然而我根本就看不懂。我很怀疑我的英语水平,于是又仔细看了几遍视频,仍然不懂原创 2017-10-16 21:20:42 · 2258 阅读 · 1 评论 -
JAVA mail MimeUtility.quote 函数抛出 NULL Pointer Exception.
帐 前卒今天遇到 JAVA mail MimeUtility.quote 函数抛出 NULL Pointer Exception 问题。找这个问题的确废了一番功夫:看栈信息,看源码,debug. 然后终于发现了问题的原因:在Email里MimeBody中有这样一行:Content-Type: application/octet-stream; name=""这句话相当的神奇,让JavaMail抛原创 2013-06-07 21:52:20 · 1587 阅读 · 0 评论 -
Spring MultipartResolver 或者 ServletFileUpload 冲突导致获取不到http数据/Multipart数据为空
如果不知道MultipartResolver 或者ServletFileUpload 的,请点击这里如果同时使用了MultipartResolver 和ServletFileUpload,就会在iter.hasNext()返回false.然后整个循环就跳出去了。if (isMultipart) { DiskFileItemFactory factory = new Disk原创 2013-05-22 21:10:00 · 6626 阅读 · 0 评论 -
JAVA 各种reference和垃圾回收机制
今天好好学习了一下java中的各种reference.一共分为以下几种:1. 强引用 2. 软引用 SoftReference3. 弱引用 WeakReference4. 虚引用 PhantomReference5. FinalReference 所有实现finalize()方法的对象一下是Oracle JDK. IBM的JDK会有些不同。强引用:String a = new String("A"原创 2013-05-20 08:43:04 · 1683 阅读 · 0 评论 -
Velocity 模版问题 值无法显示
今天发现一个velocity的问题。 如果传入velocity的对象中没有对某一个field有getter setter方法,那么即使那个field是public的,velocity也得不到值。 加上getter settter 方法,就ok了。原创 2013-03-22 14:37:30 · 1719 阅读 · 1 评论 -
java中的interrupt和stop方法——java中线程停止的方法
简单的看interrupt其实是设置了一个变量。除非有wait(), join(), sleep()等方法,否则调用interrupt()方法,是没有什么效果的。stop()确实是终止一个线程的方法。并且终止后,的确回收了部分资源。这里要看资源是什么,如果是socket, 和IO流等,这里需要自己去close().如果你觉得自己每次在调用的地方写麻烦,那就在线程的finalize()方法里定义如果原创 2013-02-20 19:55:25 · 2250 阅读 · 0 评论 -
JAVA 快速实现webService (同步逻辑)
今天因为需要调用第三方的接口些fake service, 用于testcase. 该第三方使用的是soap的webservice模式。首先是创建service。 package myws;import java.io.IOException;import javax.jws.WebMethod;import javax.jws.WebParam;import javax.jws.Web原创 2013-03-05 22:09:58 · 3462 阅读 · 0 评论 -
Unable to resolve host : No address associated with hostname
一般形如:Unable to resolve host "www.xxxx.com" : No address associated with hostname碰到这个问题是在android系统中。检测如下几点:1. 浏览器使用了proxy,但是你的app没有。设置System.setProperty("http.proxyHost", "my.proxyhost.com");System.se原创 2013-02-20 19:28:43 · 53674 阅读 · 4 评论 -
JAVA 远程debug
开启JVM的远程Debug模式, 在启动JVM的时候加上参数:// 非阻塞方式,这样启动jvm后,可以再任意时间attach到server上-Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=11312,server=y,suspend=n// 阻塞debug,启动JVM后,需要远程连接attach到相应的端口,JVM才会继续执行原创 2013-03-04 10:48:14 · 5067 阅读 · 2 评论 -
Log4j的使用
import org.apache.commons.logging.Log;import org.apache.commons.logging.LogFactory;今天又偶然用了一下log4j,不免有些生疏。所以贴出来总结一下:首先Log4j需要准备一个configure文件:log4j.properties文件格式:# Configure the log dir and file names原创 2012-12-04 22:55:00 · 1329 阅读 · 0 评论 -
HttpClient 卡死 response 为null
经常遇到HttpClient 发送请求后莫名卡死, 然后经历很长一段时间后,返回response 为null。这里设置了retry, 另外connect time 也设置的挺长的。但是还是出现了这个问题。开始以为是Server的问题,Server不稳定导致了HttpClient无法连接。后来发现其实不是这个问题。这个问题的其实是必现的,如果将链接请求数调小的话。但是发送的请求都在一个线程中,不会是原创 2012-11-09 13:38:05 · 8496 阅读 · 0 评论 -
spring ServletConfig() 或者ServletContext 不存在解决方案
抛出的异常可能是:ServletConfig has not been initialized进入debug模式,可能会发现servletConfig这个变量为null解决方案如下:首先看看你的那个类是什么?是controller还是HttpServlet.如果继承HttpServlet并且还有@Controller,那干脆不要使用HttpServlet这个东西。因为想得到ServletConf原创 2011-11-27 19:56:08 · 4396 阅读 · 0 评论 -
elf file OS ABI invalid
昨天调用第三方库的JNI时发现如下问题:elf file OS ABI invalid问题出自ldd,先看一下ldd的版本号。使用: ldd --version这个问题是因为在ldd 为2.12的机器上编译。拿到ldd 为2.5的机器上去运行加载,然后就挂掉了。解决方法就是使用ldd 2.5的机器编译。原创 2013-08-28 08:14:45 · 14355 阅读 · 0 评论 -
安全问题二三事
最近开始关注安全问题。 同时也在关注由于关注了安全导致的性能问题。第一件事是 微信收藏。 详细的内容点击: 微信公众平台的安全问题。 另外再原文的基础上补充几点:微信公众平台最不安全的地方就是它的内容是通过http方式传输的。只要能抓到包,内容都很容易知道。关键问题就是非常不容易抓到包。 所以微信平台才不使用Https传输。而不使用https传输的第二个原因是因为 https ssl密钥交换协议很原创 2013-09-05 09:34:05 · 1875 阅读 · 0 评论 -
java将对象注册到spring context中
很多时候需要从spring中取出相应的对象,很多时候又需要将对象注入到spring context中。原创 2013-10-23 20:55:00 · 1762 阅读 · 0 评论 -
JDK9/java9: flow feature
Flow 简介今天试用了一下jdk9, 最主要关注Flow这个新增的功能。结果发现,这个Flow其实是一个final class,构造函数还是private,没有任何正常方法将其实例化。这个是新功能?我抱着学习的心态看了一下java doc. 发现主要是几个interface. Interface…都是接口,到底有没有实现?想知道更多点击:http://chillyc.info/2017/jdk9/原创 2017-10-08 21:22:31 · 2664 阅读 · 0 评论 -
Jdk9/Java9: modular feature
这次写写JAVA9的modular,俗称模块化。这个应该是Java9的最出彩的地方。之前Java的那个项目叫做Jigsaw。 为什么会有这个项目呢?原因在于之前Java使用package作为管理的。大家为了图省事,里面写的class都是public class。 也就是说包外都可用。大家都使用各种包管理工具ivy, maven, gradle啥的。查看全文请点击:http://chillyc.inf原创 2017-10-08 21:20:30 · 1528 阅读 · 0 评论 -
fastjson 定制化解析
最近写了一个简单的定制解析。fastjson 解析 Map key value时有bug.public static class KVPair { private K key; private V value; public KVPair(){} public KVPair(K key, V value){ t原创 2016-03-28 10:28:43 · 3723 阅读 · 0 评论 -
充满BUG的世界观——再遇Java内存泄露
发现内存泄露除了仔细看代码的确没有太好的方法。首先看gc log, 确定是内存泄露,而不是内存不够。内存泄露的特点就是以每次Full GC后使用的最低内存为起点,拟合一条线。如果这条线是随时间递增的一条曲线,那么很大程度上代表着内存泄露。然后使用 jmap -histo [pid] 来查看你的所有对象所占内存的比例。你可能很不幸的发现[B 这个byte数组对象占用了绝大多数。这的确没有更好的方法了原创 2016-01-26 22:29:14 · 5324 阅读 · 4 评论 -
鲜活的java 8 --- java 8 进化之路
java8非常强大,期待放在生产环境中使用。介绍lamda表达式的进化史和使用方法。介绍java8的其他特性和使用方法。原创 2014-05-01 17:55:12 · 2274 阅读 · 0 评论 -
java.lang.OutOfMemoryError: unable to create new native thread
昨天,同事发现一个这样的问题:java.lang.OutOfMemoryError: unable to create new native thread。 发现heap内存还是充足的情况下,free memory还是充足的情况下,thread分配不了了。这个问题在于线程的数量 = (jvm进程内存 - jvm heap size) / 线程stack size. 所以这里解决的办法就是 增加原创 2014-01-16 08:57:08 · 2321 阅读 · 0 评论 -
Failed to convert value of type 'java.lang.String' to required type 'org.springframework.web.multipa
昨天遇到一个问题,请求发送之后直接返回了500错误,没有过ErrorController。并且Server这边的log里也没有异常。这真的是好奇怪。 产生问题的method是这样写的: @RequestMapping(params = "method=bulkChange", method = RequestMethod.POST) public @ResponseBody U原创 2014-01-14 12:43:21 · 9932 阅读 · 0 评论 -
JAVA迅速解决图片变红、变黑、压缩平滑问题
小卒 最近在做头像上传功能,发现对于带有alpha通道的图片,有的会变红,有的会变黑,有时压缩不平滑。发现是有几处程序写错了。首先贴一下原始的程序,这段程序的功能是将原图的(x,y,w,h)图块,转变为 (0,0,targetW,targetH)图片,并输出为jpg格式原创 2013-12-26 12:29:04 · 7912 阅读 · 3 评论 -
HTTP/1.1 413 FULL head
昨天,server调用新浪的OpenAPI功能失效。出现的现象是:服务器上线时是可以正常使用的。但是隔一段时间就变得不可用。刚开始以为是socket连接过多或者socket等资源没有释放。但后来发现不是。。。原创 2013-12-19 12:32:34 · 8544 阅读 · 0 评论 -
JAVA Server上传文件 Spring MultipartResolver 或者 ServletFileUpload
如果想上传文件,那么有两种方法可以解决。一种使用Spring框架中的东西。另外一种是使用原生的代码。使用Spring框架非常简单。将如下xml放入到servlet.xml中。<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">原创 2013-04-14 20:17:56 · 5182 阅读 · 4 评论 -
JAVA的HttpClient问题:The server failed to respond with a valid HTTP response
Caused by: org.apache.http.ProtocolException: The server failed to respond with a valid HTTP response昨天帐前 卒使用java 的HttpClient时遇到这个错误。这个错误大致是说server给的不是正确的http response.这个错误是可能是由于:使用同一个HttpClient长连接/保持原创 2013-06-04 13:58:08 · 31197 阅读 · 3 评论 -
解决 JavaMail Api 删除邮件时 诡异Exception
javax.mail.MessagingException: A7 NO STORE Can not find message 1; nested exception is: com.sun.mail.iap.CommandFailedException: A7 NO STOR原创 2011-09-14 20:56:38 · 3631 阅读 · 1 评论 -
wait、notify、notifyAll正确使用方法和解释说明
/*** 转载请注明作者longdick http://longdick.iteye.com**/wait()、notify()、notifyAll()是三个定义在Object类里的方法,可以用来控制线程的状态。这三个方法最终调用的都是jvm级的native方法。随着jv转载 2011-09-08 14:28:13 · 1569 阅读 · 0 评论 -
eclipse 快捷键
Ctrl+1 快速修复(最经典的快捷键,就不用多说了)Ctrl+D: 删除当前行 Ctrl+Alt+↓ 复制当前行到下一行(复制增加)Ctrl+Alt+↑ 复制当前行到上一行(复制增加)Alt+↓ 当前行和下面一行交互位置(特别实用,可以省去先剪切,再粘贴了)Alt+↑ 当前行和转载 2011-09-02 10:20:34 · 944 阅读 · 0 评论 -
java安全机制其实有点不安全
看下面的这段代码,摘自《Java Examples in a Nutsbell》(java实例技术手册):就是一个简单的通用的多线程服务器这个例子可以通过配置参数:java je3.net.Server -control www 3333 je3.net.Server$HTTPMirror 5555来启动,然后再ie中输入: http://localhost:5555就可以看到效原创 2007-03-17 19:58:00 · 2079 阅读 · 1 评论 -
java手记---String类
String a = " dfsd";///////////这时输出dfsd。 String b = a.trim();//////////除开头结尾的空格。 concat(string s)/////////////把s 加在执行串后。 substring(int n)///////////////从第n个字符之后的串。 boolean equals(String s);////////转载 2006-07-26 10:16:00 · 1190 阅读 · 0 评论 -
java手记---swing类和awt类
Graphics a; a.drawOval(size.width/4,size.height/4,size.width/2,size.height/2);////////此时椭圆在中心。 a.drawString("Hello world gj",20,200);///////////////////////////////////20是最左的象素坐标,200是基线 Cbox() { s转载 2006-07-26 10:07:00 · 1371 阅读 · 0 评论 -
java手记---抛出异常
Exception://////////throws出现在方法声明,而throw出现在可执行代码中。 如: public float getrain(float a) throws Exception{ if(a {Exception x = new Exception("the db must be wrong!");throw x;}else return 0;}///////转载 2006-07-26 09:59:00 · 1357 阅读 · 0 评论 -
java手记---package
///////////////程序包就是命名的类组。很像目录。是名称空间。类名在其中必须唯一///////////////sgsware程序包-raytracing子程序包-Mailbox.java中的Mailbox.class///////////////其全名为sgsware.raytracing.Mailbox///////////////程序包名为小写。c:> javac -d /路径转载 2006-07-26 09:56:00 · 1168 阅读 · 0 评论 -
java手记---public,protected,private,default作用范围
/////////////////////////////java文件中的public 类publicTest.javaclass A{public static void main(String [] args){System.out.println("hello");}}public class PublicTest{}///////这里编译会通过,不过运行时会给出缺省main函数的提示~~~原创 2006-07-26 09:46:00 · 3153 阅读 · 0 评论 -
java手记---静态和非静态
////////////////////构造函数不能声明为静态。关于静态与非静态的方法 MainClass.javaclass sub{ String a; int num; sub() { a = "Hello"; num = 3; }}public class MainClass{ String t; sub s; ///这样写没有错误。 MainClass() { s =转载 2006-07-26 09:44:00 · 1180 阅读 · 0 评论 -
java手记---类
一个类的实现:(1)当装载这个类的时候,实际上是调用的类的static方法或者访问类的static字段的时候,java解释器会搜寻classpath来找到这个类(2)装载类后,会对static数据进行初始化。(3)当用new创建一个新对象时,会在堆中为对象分配足够的内存(4)内存先被清零 ,自动把对象的数据成员赋上缺省值。变量为0或对应的true或/u0000,引用赋为null(5)执行转载 2006-07-26 09:40:00 · 1109 阅读 · 0 评论 -
java手记---数组,作用域,引用
boolean [] a; a = new boolean [] {true,false}; System.out.println(a[0]+" "+a[1]); //this is right. System.out.println(a[0]+a[1]); //this is wrong. Because two boolean cant add . System.ou转载 2006-07-26 09:35:00 · 1359 阅读 · 1 评论 -
java手记---break,continu的特殊用法
////////break和continu只能跳出一层循环。///////如果前面加上标签,就可以随意跳出循环outer:while(true) {while(true) {i++;System.out.println("i = " +i);if(i == 1) {System.out.println("continue");continue;}if(i == 3) {System.out.pri转载 2006-07-26 09:22:00 · 1499 阅读 · 1 评论 -
java手记---算术符号
第一个程序:public class Hello{ public static void main(String[] args) { System.out.println("Hello"); }}算术符号:>>右移 这是符号右移,如果为正则高位填充零,如果为负高位填充一>>>右移 不管是否为负,高位均填零char byte shor转载 2006-07-26 09:19:00 · 1171 阅读 · 1 评论