`
cpszgy
  • 浏览: 23305 次
  • 性别: Icon_minigender_1
  • 来自: 合肥
社区版块
存档分类
最新评论
文章列表
     今天接到任务要去爬sina微博内容。爬虫爬得有cookie,所以要用httpclient写个登录接口。 用到的分析工具:Live HTTP Headers(火狐的一个插件) 参考资源:http://blog.csdn.net/yodlove/article/details/5938022;                http://blog.csdn.net/jk_yu520/article/details/6622661; 用到单点登陆真是蛋疼。而且还跳来跳去,不得不跟着一步一步来。 修改:        昨天没看细节,发现cookie有问题。导致登陆是成功的,但是使用cookie ...
不要在构造器中将this对象发布出去 public class Escape { int i; public Escape() { // TODO Auto-generated constructor stub new Thread (){ public void run() { print(); }; }.start(); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO Auto-generated catch ...
我刚开始认为如果一个 字符A--(UTF-8)--》字节数组1--(GBK)---》字符1--(gbk)--》字节数组2--(utf-8)---》字符B。 这种类似的逆转换都是可以的。 然后昨天下午仔细查了下资料。终于弄清楚了原来并不是100%可以的。 主要原因是字节数组1通过某种编码方案时,如果这个字节组合并不在该编码方案的范围内。那么这时这种逆转换就无法工作了。因为这时这种编码方案会把这种不认识的字节数组映射到一个特殊字符,那么再解码的时候,就会丢失原来的字节数组了。 除非该中间字符集可以映射到所有的字节,那么逆转换就是没有问题的。
今天突然想到这个问题。 看到了int等基本数据类型之间的转换。 其实就是 短位-》长位 按短位的最高位进行补位。 长位-》短位 按短位的位数进行截位。 还有几个小点: java中都是带符号位的。 那些Integer , Long中的byteValue就是强制转换到byte,也就是截位。
Class类中有个getResourceAsStream()方法。 ClassLoader类中也有getResourceAsStream()。 Class类是委托给ClassLoader。 但是对于传进去的参数会做处理。 如果开头是以“/”。则去掉。 否则 获得这个Class所在的包。再加上传进去的参数。 所以XX.class.getResourceAsStream("/conf/ss.txt")==XX.class.getClassLoader.getResourceAsStream("conf/ss.txt"). 对于ClassLoader 如何获得 ...

关于URL URI

URL url = Steel.class.getClass().getResource("/steel.arff"); FileReader fdata = new FileReader(new File(url.toURI())); 不要这样用,因为实际上,资源从文件系统的角度看,已经不存在了(在jar包中), 它只能是个资源,只有这样想,你的开发环境和运行环境才能保持一致, 要这样: Java code InputStream in=this.getClass().getResourceAsStream(""); Reader fdata=ne ...
一直很少使用内部类。今天发现内部类使用起来确实挺方便。 内部类主要是为了在外部类里面使用一个外部类无法容易继承的接口。 比如你有个A类。现在想用到一个I接口的一个特性。 目前又不好让A去继承I。那只好新建一个内部类去实现I。 这样A就能使用I的特性了。 如果用匿名内部类,实现起来代码确实显得很漂亮。 以后要多关注这种使用方式。
spring 提供了声明式的事务处理。 这种处理比较灵活方便。 不过也有几个需要注意的: 1.spring 事务回滚只会处理unchecked Exception 所以如果在DAO要抛出RuntimeException 这类的子类。(spring 只是发现错误。并不处理错误。不会影响你的业务逻辑) 2.事务所处理的类应该是业务逻辑层。而不是dao。 3.aop式的处理需要cglib ,aspect 的包。

maven的初步使用

maven 构建工具。 默认的仓库是在当前用户的目录下,可以使用conf/settings.xml去设置默认路径。 以 . 开头的文件夹在linux中是隐藏的。 你想要执行mvn命令需要到含有pom.xml的项目那一层。 如果想改动当前用户的配置。可以使用 :mvn -s 路径 myeclipse 中自己集成了maven。需要自己去配置jdk。setting.xml的位置

hadoop 相关

使用linux安装RPM版的hadoop。 它默认的conf用的是/etc/hadoop里面的配置文件。 而且如果用的是root用户在创建datanode时会出现错误 unrecognized option:-jvm 修改/usr/bin/hadoop文件 找到-jvm那一行 删除jvm选项。 使用 hadoop CLASSNAME 命令,需要找到hadoop classpath。运行hadoop classpath命令即可。
      今天在做neo4j的spring事务管理时遇到了jar包问题:       主要是少了aopalliance-1.0.jar;asm-commons-2.2.3.jar;asm-2.2.3.jar;cglib-nodep-2.2.jar。这些jar包的版本还是相当重要的。目前这几个jar包和3.0还是可以工作良好的。      主要就是关联的事务处理,AOP。要用到这几个jar包。如果没有就会产生NoClassFound或者是.IllegalAccessError。       后一个错误主要是cglib包的问题 主要报错代码: net.sf.cglib.core.ClassEmit ...
      今天写好了一个程序,涉及到了许多setProperty(String key,Object value)的调用、 还有涉及getProperty(String key)。在初写代码的时候Key的值是用简单的id来表示。 写到后面需要改变了。好吧后来就把所有涉及set,get方法都改过来了。结果有一个query(String query)里面是个涉及这个Key的查询语句。结果就是程序读了好多遍都没发现错误。。。。 还有个是query里面的一个Key少了一个字母。也是找了很久才发现。 所以尽量避免用神秘字符。不仅涉及到更改的时候方便,而且也会避免拼写的错误。毕竟编译器会帮你检查。

Neo4j

这几天在学习使用Neo4j,这东西中文资料基本太少。只能去看他官网的开发文档。 它的数据库存在的位置是解压包下面的data里面的XX.db文件夹。相关噢诶之在conf文件夹下。 那个bin是启动它自带的一个web服务管理工具。就相当于以个图形化工具。lib文件夹里是开发用的包。当然也是这个web服务必备的包。 简单使用的代码(1.41版本): //载入数据库 GraphDatabaseService neo = new EmbeddedGraphDatabase( "D:\\xxx\\neo4j-community-1.4.1\\data\\graph.db" ...
知识概要: java中字符在内存中的是以Unicode形式、 系统会有一个默认的字符集。在中国当然是GBK。 乱码产生原因:以一个不正确的字符集去解码一个字符。 产生情况: 1.都很能认识到的从外部读取数据。如文件,文件是二进制形式。所以在编辑文件时会有指定的字符集。然后字符变为二进制。如果你以GBK编辑的文件,再以UTF-8去读文件,自然会乱码。 当然在读入时,字节流变字符流会有字符参数让你指定。java中的转码都会围绕Unicode,你getBytes(GBK),实际是将Unicode转为对应的GBK。new String(byte[],"GBK")又是将GBK转为对应 ...
耦合的3个标准: 规模:模块的连接数。越少越好。 可见性:连接的显著程度。越明显越好。 灵活性:模块之间的连接是否容易改变。 其实对于灵活性的理解会和参数传递中传递对象,还是对象中的成员有关联。 按照灵活性来说传递的该是对象中的成员。 当然也不能一味的为了灵活性而只传对象中的成员。 更多确定是传对象还是成员还得根据子程序的抽象层次决定。这其实信息隐藏的一个方面:有些信息隐藏在子程序中,而有些信息隐藏对子程序是隐藏的。信息按照有必要了解的原则进行传递。 有时候你发现有一对数据总是会结对出现,比如说经纬度。那么可以把这二个参数作为一个对象来传递。 耦合种类: 简单数据耦合:模块传递简单数据 简 ...
Global site tag (gtag.js) - Google Analytics