分类目录归档:JAVA

关于java的那些事儿

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 | 标签为 , , | 留下评论

红帽redhat免费空间服务openshift申请

openshift是redhat的开源空间,支持java,php,python,等等。你可以在上面搞一个java应用或者php应用。系统会给你一个ssh账户,等于你有了一台VPS 而且这一切都是免费的 http://www.openshift.com/ 先注册,不拉不拉一大堆资料填写。 成功以后 直接创建一个wordpress 3.0 成功以后openshift给月小升发送了一大堆账户密码(直接显示在界面上的) MySQL 5.1 database added. Please make note of these credentials: Root User: xxxxxx Root Password: fZ-_Ydg Database Name: wordpress Connection URL: mysql://$OPENSHIFT_MYSQL_DB_HOST:$OPENSHIFT_MYSQL_DB_PORT/ You can manage your new MySQL database by also embedding … 继续阅读

发表在 JAVA, Linux, PHP, 国外主机 | 标签为 , , , , , | 8 条评论

java使用RandomAccessFile快速读取超大文件

服务器的日志文件往往达到400多M,简单的文件读取实在太慢,太占用机器资源。 特别是如果你需要5分钟就扫描一次日志文件,来统计一些即时数据。比如刚才10分钟的来访客户(大型网站用户统计系统例如51.la 会经常用到吧。)即时扫描大数据文件中的一部分显得非常之重要。 本文讲述了如果使用java的RandomAccessFile方法从一个很大的文件来读取部分字节 测试文件总大小46085个字节 读取文件最后85个字节 文件大小:46085 85 测试效果 ?展功能 —> 优酷视频   其他的如奇艺,土豆之类操作顺序相同。 当然我们也可以读取从46000只读取20个字节,看个人需要,这里仅仅作为示例 package com.javaer.examples.file;   import java.io.IOException; import java.io.RandomAccessFile;   public class ReadBigFile { public static void readBigFile() throws IOException{ String fileName = "/Users/mc2/Desktop/youku.txt"; RandomAccessFile randomFile = … 继续阅读

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

自定义java toString方法

java里我们经常System.out.println(xx) xx可以是一个List 一个HashMap 一个HashSet 一个什么奇怪的自定义的类。 只要能正确显示字符串的背后起作用的都是一个叫toString 的方法。 看个例子 package com.javaer.examples;   import java.util.ArrayList;     class Girl{ String name = ""; int age = 0; }   public class JToString {   /** * @param args */ public static void … 继续阅读

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

java多线程扫描某服务器端口【黑客?】

端口扫描是不少黑客进行网络攻击第一步要做的事情。 扫描你的mysql服务3306端口是不是很恐怖啊。扫描你的22 Linux服务器远程登陆端口。恐怖吧。月小升觉得这个办法也可以用来监测自己的服务器是否有对外不该公开的端口被自己公开了。 package com.javaer.examples.socket;   import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException;   public class ScanPort extends Thread{ private static int i=1; public void run(){ while(i< 65536){ int temp=i; try{ Socket client = new Socket("baidu.com",temp); //如果client不为空,说明该端口对外开放。 //否则该端口没有在监听的服务,或者是该端口对外屏蔽。 if(client!=null){ System.out.println("Port :"+temp+" … 继续阅读

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

java优先队列 PriorityQueue

PriorityQueue是个基于优先级堆的极大优先级队列。 此队列按照在构造时所指定的顺序对元素排序,既可以根据元素的自然顺序来指定排序(参阅 Comparable), 也可以根据 Comparator 来指定,这取决于使用哪种构造方法。优先级队列不允许 null 元素。 依靠自然排序的优先级队列还不允许插入不可比较的对象(这样做可能导致 ClassCastException) 比如队列 1 3 5 10 2 自动会被排列 1 2 3 5 10 package com.javaer.examples.datastruct;   import java.util.Comparator; import java.util.PriorityQueue; import java.util.Queue;   import org.apache.poi.ss.formula.functions.Count;   public class PriorityQueueExample {   … 继续阅读

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

java的栈学习

栈(stack)在计算机科学中是限定仅在表尾进行插入或删除操作的线性表。 栈是一种数据结构,它按照后进先出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据。 栈是只能在某一端插入和删除的特殊线性表。用桶堆积物品,先堆进来的压在底下,随后一件一件往堆。取走时,只能从上面一件一件取。堆和取都在顶部进行,底部一般是不动的。栈就是一种类似桶堆积物品的数据结构,进行删除和插入的一端称栈顶,另一堆称栈底。插入一般称为进栈,删除则称为退栈。 栈也称为后进先出表。 package com.javaer.examples.datastruct;   import java.util.Stack;   public class StackExample {   /** * @param args */ public static void main(String[] args) { Stack s = new Stack(); Object o; s.push("1"); s.push("2"); o = s.push("3"); System.out.println(o);   … 继续阅读

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