分类目录归档:JAVA

关于java的那些事儿

apche common-net-3.0.1.jar上传FTP文件

之前用的sun的ftp包,在java7 下面,过时了,不能用,无法引入。觉得还是用Apache的吧。 下载了一个commons-net-3.0.0.jar的包搞了一通以后,发现上传的文件为0大小,郁闷啊。 在百度里翻了半天别人问的这个问题,无正确回答 最后跑google翻出去看外国人说是包有毛病,得用3.0.1的,于是跑去下载个commons-net-3.0.1.jar,就成功了。 伟大的google啊。(真是百度一根毛也找不到) 顺便提供一份commons-net-3.0.1.jar包下载(我快翻遍了百度google,才找到这个。CSDN要积分,我积分消耗完毕了。) 下载jar包 package com.javaer.commcon;   import org.apache.commons.net.ftp.FTP; import org.apache.commons.net.ftp.FTPClient; import org.apache.commons.net.ftp.FTPClientConfig; import org.apache.commons.net.ftp.FTPReply;   import java.io.*; import java.net.SocketException; import java.text.SimpleDateFormat;   public class AFtp {   private static String userName; // FTP 登录用户名 private … 继续阅读

发表在 JAVA | 标签为 , , , | 留下评论

java如何获取url域名,对url自动拼接

将一个主URL和当前URL内的url进行合并,自动获取下一次点击应该跳转的地方 比如一个网页叫 http://xx.com/a2/ 解析这个网页的内容,里面有许多 <a href="/b2/">b2</a> <a href="2.html">2.html</a> <a href="../3.html">3.html</a> 如果逐个计算,好像也可以忍受,使用java来判断比如开头为/表示要和根目录相加,../表示要跳上去一级别 如果出现了../../呢。 跳上去2级 ../../../跳上去3级 还有一些意想不到的 比如 ./ 没必要一个个判断,java早已经内置了函数来解决url拼接问题。 joinUrl("http://xx.com/a2/","/b2/"); 一切都搞定。 public static String joinUrl(String curl,String file){ URL url = null; String q = ""; try { url = new URL(new … 继续阅读

发表在 JAVA | 标签为 | 一条评论

免费跨平台Apache组织压力测试工具JMeter入门

官方地址 http://jmeter.apache.org/ JMeter 最早是为了测试 Tomcat 的前身 JServ 的执行效率而诞生的。到目前为止,它的最新版本是2.9,它的测试能力也不再仅仅只局限于对于Web服务器的测试,而是涵盖了数据库、JMS、Web Service、LDAP、JUNIT等多种对象的测试能力。 1. 测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器。 2. 线程组代表一定数量的并发用户,它可以用来模拟并发用户发送请求。实际的请求内容在Sampler中定义,它被线程组包含。 3. 监听器负责收集测试结果,同时也被告知了结果显示的方式。 4. 逻辑控制器可以自定义JMeter发送请求的行为逻辑,它与Sampler结合使用可以模拟复杂的请求序列。 5. 断言可以用来判断请求响应的结果是否如用户所期望的。它可以用来隔离问题域,即在确保功能正确的前提下执行压力测试。这个限制对于有效的测试是非常有用的。 6. 配置元件维护Sampler需要的配置信息,并根据实际的需要会修改请求的内容。 7. 前置处理器和后置处理器负责在生成请求之前和之后完成工作。前置处理器常常用来修改请求的设置,后置处理器则常常用来处理响应的数据。 8. 定时器负责定义请求之间的延迟间隔。 简单的测试是JMeter来测试一个网页的抗并发。 下面写个示例 <?php /* ‘r’ 只读方式打开,将文件指针指向文件头。 ‘r+’ 读写方式打开,将文件指针指向文件头。 ‘w’ 写入方式打开,将文件指针指向文件头并将文件大小截为零。如果文件不存在则尝试创建之。 ‘w+’ … 继续阅读

发表在 JAVA, PHP | 标签为 , , | 一条评论

java遍历redis的key读取整个数据库

redis提供了灵活的数据查询方式,最牛的就是key的搜索支持正则表达式。 jedis.keys(“*”);表示搜索所有key jedis.keys(“abc*”)表示搜索开头为abc的key数据 遍历了key就能遍历到value。 其实就是一个set RedisDO rd = new RedisDO(); rd.open(); Set s = rd.jedis.keys("*"); Iterator it = s.iterator();     while (it.hasNext()) { String key = (String) it.next(); String value = rd.jedis.get(key); System.out.println(key + value); } rd.close(); rd的算法为集成redis 运算 … 继续阅读

发表在 JAVA, 高并发与大数据 | 标签为 , , , | 留下评论

java awt窗口文本框内容变化监控

最近搞的超级编辑器,发现需要监测文本框内容变化,即监控用户输入。不过发现简单的addKeyListener无法监测用户输入了中文,输入英文或者空格就可以。 发现监测awt的文本框变化,还得用addInputMethodListener。 据资料显示Jtextpane和JText方法名称可能有所差别。 package com.javaer.examples.awt;   import java.awt.Dimension; import java.awt.event.InputMethodEvent; import java.awt.event.InputMethodListener; import java.awt.event.KeyAdapter; import java.awt.event.KeyEvent;   import javax.swing.JFrame; import javax.swing.JTextPane; import javax.swing.WindowConstants;   public class TextListen extends JFrame { JTextPane textPane; public TextListen(){ textPane = new JTextPane(); textPane.setBounds(0, 0, … 继续阅读

发表在 JAVA | 留下评论

java编写文本编辑器字体加粗,上颜色功能

最近修改以前一个超级网站编辑器,之前仅仅有格式化字符的功能,最近需要一个能给字体加粗的功能。 发现java编写awt 窗口还是蛮费劲的。 特留在此,方便朋友们相互学习。 实现功能: 对选取的一段文字进行加粗 (上颜色自己发挥,原理一样。) 要点 1.不能用JTextArea 2.采用JTextPane 3.获取选中的文本算法 package com.javaer.examples.awt;   import java.awt.BorderLayout; import java.awt.Color; import java.awt.Container; import java.awt.Dimension; import java.awt.Font; import java.awt.Rectangle; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.WindowAdapter; import java.awt.event.WindowEvent;   import javax.swing.ImageIcon; import javax.swing.JButton; import … 继续阅读

发表在 JAVA | 标签为 , , , , , | 5 条评论

java和php读写memcache乱码不兼容问题

memcache java php不兼容问题。 故事背景:我用java插入一条数字记录,用php读取无法正确读取。 今天发现如果使用MemCachedClient来插入一条数字,或者java的对象,那么在php调出来就是乱码。 对象可以理解,简单的数字也会乱码 如 mcc.set(“a”,25); php中出来的是乱码,同时如果采用telnet的方式来进行查询 get a 出来问号。 翻了一圈说要改类包。 最后发现个问题,如果改用字符串,那么java和php就能通用了。 mcc.set(“a”,”25″); 而且telnet 192.168.0.1 11211进入进行get也能得出正确的数字了。 本来我要对a这个值进行加法运算,觉得采用int会方便一些,居然和php读取memcache的时候有冲突。还是来回进行变量类型转换吧。 如果你也在使用java写入memcache,php读出memcache,通用一个字符串存储,就可以避免很多问题了。 不是java的类包不行。

发表在 JAVA, PHP, 高并发与大数据 | 标签为 , , | 一条评论

Linux下Memcache安装及java调用

ubuntu下就是方便啊。 直接apt-get install memcached memcached -d -m 500 -p 11211 -u root -l 192.168.0.11 服务启动 说明 -m表示给多少内存给memcache -p 端口 -u 指定用户执行身份 -d 守护进程模式 本地查看 telnet 192.168.0.11 11211 进入以后敲入 stats 下载java操作memcache客户端 https://github.com/gwhalin/Memcached-Java-Client/downloads 将解压缩的jar包全部复制到java工程lib下。 开始搞了。 import com.danga.MemCached.MemCachedClient; import com.danga.MemCached.SockIOPool;   public class … 继续阅读

发表在 JAVA, Linux, 高并发与大数据 | 标签为 , , , | 留下评论

UniteStack讲工程师的价值和提升

工程师是个多么奇妙的名字,但是我们在中国为何感觉不到自己的价值。 钢铁侠1里面讲:你们这些人的最大弱点就是不懂科技。 科技如此重要,为何中国工程师老感觉不到自己存在的价值,下面分享一遍一名硅谷创业的中国老工程师的想法。 ——————————————————————————————— 本来想写招聘广告的,结果谈工程师就花了大把的篇幅,算了,就索性换了一个标题,讨论一下工程师的价值和发展。 我一直认为,工程师,尤其是一线的,是最接近真相的人,也是最懂业务的人,应该有充分自由去实现自己想做的事情,去改造存在问题的项目,去颠覆陈旧的观念,可惜中国的土壤不好,公司的文化和观念也不是一天能改过来的,如果你能有机会去硅谷,那恭喜你,工程师在那里的地位是最高的,有像Facebook一样的工程师驱动的文化,有自由的空间和足够大的舞台。但在中国,作为工程师,想改变大环境很困难,那么只能改变自己,自己寻求更高的价值和更好的发展。 我经常跟朋友说,一个工程师的价值取决于两个方面: 一是你的内功,即综合能力、技术水平、思考力等等自己本身的素质,内功的价值如果有一个标尺的话一般由你公司给的年薪确定; 另一个是外延,或曰影响力系数,就是将你的内功表达出来,让他人能够欣赏到你的价值。也取决于你在行业的被认知度,有多少高质量的connection,你的代码有多少开发者用了,在开源社区有多少代码被approve了,你做的产品有多少用户等等,这个系数变数较大,一般的业界公认的牛人这个系数可以做到100,两个因素相乘就是你的价值。比如,对于这样的牛人,如果在公司的年薪是20万,那么在资本市场上,如果要收购你,需要花2,000万,真不贵,看看美国公司的人才并购中,基本上团队中单个人都大于这个价值。 提升内功我就不说了,作为工程师,不能不知道如何提升内功。这里更多分享一下如何提高外延。根据我最近一年多的经历和感悟总结了三点: 分享 高质量的分享,认真去写你每一博客,有干货,有思考,有原创性,不要有废话,即使是微博,也要言之有物,有观点和态度。如果有好的文章,不防投稿到网络媒体如InfoQ,杂志如《程序员》广泛传播。如果你功底足够强,同时对某方面有非常系统的理解,写书也是一个不错的渠道。公众演讲也是一个极佳的分享机会,当然要想收到演讲邀请必须先经营好自己的『自媒体』,让别人觉得你很有价值,想听到你的发言。 开源 开源社区,尤其是著名的开源社区,比如Linux, OpenStack等,有patch被approve进主干,是对工程师能力的一个背书,而且是公开的,谁都能看到,大家都能感知到,如果这个patch还非常重要,一些大牛和公司会赞赏你。无形中,你的个人价值就提升不少。只为自己公司写代码,再牛逼,也只有同事或公司知道你的价值,在HR面前议价能力不大。换一家公司在评估你价值的时候也很困难, 国际化 国际化有两个重要原因:一是由于中国特殊的不重视工程师的环境,我们就要寻求外部的支持,比如价值背书、融资支持;二是通过国际交流,缩短与老外在境界、思想以及方法论上的差距,提升自信心,有助于设计出有国际竞争力的产品,更有助于你站在浪潮之巅去思考问题,如果没有足够的交流,总是认为老外高人一等,无法平等对话,一辈子活在大公司的屋檐下,无法超越。 做到这三点,你已经不是一般人了。 提醒一下,扩大外延不就是你主动是攀附某些比较层次高的人,而是尽量去提升自己的层次,以跟其他人能够Match,这样才能平等的交流和对话,更能找到好伙伴和真心朋友。 以上是我这么长时间对工程师价值和发展的思考,好多想法和结论都是亲身经历体会出来的,一般人我不说的。价值和发展谈到这里,刚突然又想到另外一个故事: 去年第一次参加OpenStack Summit让我印象最深刻的还不是美国那些有活力的OpenStack创业公司,而是一个老太太,Nextenta的一位工程师,约莫60-70岁的样子,头发发白,牙齿也掉光了,在讲Swift存储优化的方案,如果没有记错的话应该是讲排重和多版本支持,用了到很多Nextenta存储里面的技术,非常深入地讲解架构和一些技术细节,思路非常清晰,应该还在写代码。演讲结束后与她交流,还是讨论技术,完全感受不到对方是一个老太太,而是一个资深的架构师。 中国工程师的优势是学习能力强,上手快,聪明,但遗憾的是一般生命周期很短,平均只有2~3年,要想发展必须向Manager的Level晋升,但很有可能,你就远离你钟爱的代码了,所以在中国很难有像老外一样做几十年coding的工程师。工程师普通缺乏的是全局掌握和架构能力,更缺乏长远规划。 这是为什么这么多年来,中国软件行业真正自主研发的基础软件很少的原因:一批生命周期只有2~3年的工程师却要自主研发需要有10年甚至更多生命周期的基础性软件,是多么不靠谱的一件事情。 因此,对于我们这帮年轻的中国工程师需要充分认识自己不足和优秀,在基础性、平台性大软件领域,尤其是偏底层的,我们要避免重复造轮子,多学习国外这些真正的资深架构师设计的工具或平台,最好的办法是参与开源,通过contribute back,与社区那些资深工程师一起工作,进而提升自己。 —————————————————————— 月小升说在最后: 1.博客是要好好写 2.还得去挑战自己参与开源软件 3.英语,君不见微博里那些超牛的技术人员都是英语呱呱叫。 http://www.ustack.com/unitedstack-engineer-value/

发表在 JAVA, 程序视点 | 标签为 , , , , , | 留下评论

需要熟练使用的Eclipse快捷键

快捷键的使用,会大大提高我们做事情的效率。 如果按下两个键就能搞定的事情,我们老是用鼠标来完成,不就慢了么。 不追求速度的程序猿可以绕过。(当然这仅仅是一个小细节。) Eclipse常用快捷键大全。 Ctrl+K 光标放在一个变量上(注意,是变量,如果你的光标放在了字符串上,按下Ctrl+K光标会定位到下一个相同的变量 Shift+Ctrl+K 跟Ctrl+K功能一样,方向相反 Ctrl+O 打开类似大纲视图的小窗口 Alt+ 左右方向键,跳到前一次/后一次的编辑位置 (经常会用到) 双击左括号(小括号,中括号,大括号),将选择括号内的所有内容 F3打开声明该引用的文件 F4打开类型层次结构 Ctrl+H打开搜索窗口 Shift+Ctrl+S保存全部 Shift+Ctrl+R打开资源 Ctrl+Q回到最后一次编辑的地方 Ctrl+Shift+G在workspace中搜索引用 Alt+上、下方向键,将选中的行向上或向下移动 Shift+Enter在当前行的下面添加一个空行,光标可以当前行的任意位置 Ctrl+L跳转到某行 Ctrl+M最大化当前的Edit或View,再按则反之 Ctrl+/注释当前行,再按则反之 Ctrl+T显示当前类的继承情况(可以查看类的目录树) Ctrl+E显示当前Edit的下拉列表 Ctrl+/(小键盘) 折叠当前类中的所有代码 Ctrl+*(小键盘) 展开当前类中的所有代码 Alt+/代码助手,提示代码 Ctrl+J正向增量查找 Ctrl+Shift+J反向增量查找 Ctrl+Shift+F4关闭所有打开的edit Ctrl+Shift+R查找文件 Ctrl+Shift+T查找类 Alt+Shift+R重名命 Alt+Shift+M抽取方法 … 继续阅读

发表在 JAVA | 标签为 , , | 留下评论