• Jsp技术网
    • 首页
    • Java
    • Jsp
    • Framework
      • MVC
      • ORM
      • Maven
    • MySQL
    • Nosql
      • MongoDB
      • Redis
    • Nginx
    • Linux
    • Other
    • 登录/注册

    Framework

    验证码生成神器之-google patchca

    验证码生成神器之-google patchca

    admin October 10, 2014 0
    之前在做项目时都是使用自己写的JAVA类来生成验证码,感觉一是不方便配置,二是比较简单,无意中在google上发现了一个比较小巧的验证码生成框架,使用了下,感觉非常不错,特推荐之. 先看看他在google上的项目:                   再看看我在项目中使用情况:                     目前在大多数项目中使用了spring, 然后和我spring结合了下,写成了配置文件: 如果调用呢? 很简单
    maven工程在发布之后如何升级项目版本

    maven工程在发布之后如何升级项目版本

    August 27, 2014
    Mybatis缓存之redis实现

    Mybatis缓存之redis实现

    July 11, 2014

    Nginx

    将nginx注册成linux的服务(service)

    将nginx注册成linux的服务(service)

    admin August 27, 2014 0
    在安装nginx之后,经常会进行重启操作,一般的操作都是在安装目录下运行./nginx -s reload命令,很是不便, 通常的做法是将nginx注册成service, 这样就能很方便的进行操作了, 代码如下: vi后保存至/etc/init.d/nginx文件, 然后赋予权限755即可 注: 需要修改的地方,我都标记为高亮显示了,这些都需要根据你自己的nginx安装目录进行修改
    在windows下将nginx注册成服务,开机启动

    在windows下将nginx注册成服务,开机启动

    May 20, 2014
    Nginx禁止IP访问服务器WEB站点

    Nginx禁止IP访问服务器WEB站点

    March 12, 2014

    MySQL

    简述SQL中的“外连接”

    简述SQL中的“外连接”

    admin February 27, 2014 0
    1、SQL中外连接分为三种:左外连接、右外连接、全外连接。 2、英文书写格式: 左外连接:LEFT OUTER JOIN(LEFT JOIN); 右外连接:RIGHT OUTER JOIN(RIHT JOIN); 全外连接:FULL OUTER JOIN(FULL JOIN)。 3、简记: 左外连接显示“左边全部的”和“右边与左边相同的”; 右外连接显示“右边全部的”和“左边与右边相同的”; 全外连接显示左、右两边全部的。 4、举例: (1)查询所有球员及对应球队的记录,包括没有对应球队的球员记录?(处于自由状态的球员暂时不归属于任何球队) (2)查询所有球员及对应球队的记录,包括没有任何球员的球队记录?(假设因战争等原因而不能组建的某国家队,在表中存有球队信息但是没有对应球员名单) (3)查询所有球员及对应球队的记录,包括没有任何球员的球队记录,并且包括不归属于任何球队的球员的记录? 5、查询语句: (1)查询所有球员及对应球队的记录,包括没有对应球队的球员记录? 等价于 (2)查询所有球员及对应球队的记录,包括没有任何球员的球队记录? 等价于 (3)查询所有球员及对应球队的记录,包括没有任何球员的球队记录,并且包括不归属于任何球队的球员的记录? 6、图例 通过图例结合第5点查看SQL语句: player_list team_id player_name 00001 卡卡 00002 贝克汉姆 00004 齐达内 team_list team_id team_name 00001 巴西队 00003 卢旺达 00005 伊拉克 查询所有球员及对应球队的记录,包括没有对应球队的球员记录 team_id···
    在Mysql命令行中进行数据库脚本执行中文乱码解决方法

    在Mysql命令行中进行数据库脚本执行中文乱码解决方法

    December 21, 2013

    近期文章

    验证码生成神器之-google patchca Framework MVC

    验证码生成神器之-google patchca

    admin October 10, 2014 0
    之前在做项目时都是使用自己写的JAVA类来生成验证码,感觉一是不方便配置,二是比较简单,无意中在google上发现了一个比较小巧的验证码生成框架,使用了下,感觉非常不错,特推荐之. 先看看他在google上的项目:                   再看看我在项目中使用情况:                     目前在大多数项目中使用了spring, 然后和我spring结合了下,写成了配置文件: 如果调用呢? 很简单
    透露下JDK9中的一些新东西 Java

    透露下JDK9中的一些新东西

    admin September 17, 2014 0
    随着标准Java的版本更新,开发者总是可以从升级后的版本中获取想要的功能。那么Java 9的发布为什么会让开发者如此的兴奋?下面列出了一些主要原因: 1、模块化的源代码 JDK源代码将以模块化的形式组织起来,生成系统将会在模块化编译上得到增强,并且在生成的时候模块之间的边界也将被强制区分开来。“Jigsaw的目标是为Java SE平台设计并实现标准的模块化系统,并将该系统应用到自身平台和JDK当中去。它的主要目标是为一些小型设备提供可简单扩展的实施方案,并且提高安全性和可维护性,提高应用系统的性能,以及为开发者提供更多的开发工具。”JDK优化建议中是这么描述的。 2、轻量级的JSON API 这是利用JSON数据交换格式生成文档和数据流的一个接口,某些时候,JSON完全可以替代XML。“JSON可以在Web服务中用得上了,Java SE也将采用JSON数据格式,同时这也是Java 9中提供的最需要的功能了。” 3、系统进程管理 这次升级将对管理操作系统进程的API作一些提高和完善,目前的API只能强制开发者使用本地代码,然而这次升级也克服了这一限制。在Java SE 7中,对本地操作系统进程的操作有很大的限制,但是Java 9中新的API也需要考虑不同操作系统的差异,尤其是Windows。“API的设计需要适应不同操作系统的移动设备,并且要能在这些设备上部署和应用。同时也应该要考虑同一个操作系统中多个Java虚拟机的情况。”JEP文档中是这么描述的。 4、完善竞争锁 该目标是为了提升访问对象时的线程竞争处理,文档中是这样说的:“完善锁之间的竞争对现实中的应用系统是非常有益的。” 5、分段代码缓存 这主要是将代码缓存分割成几块,每一块都包含编译好的代码,这样不仅可以提高程序运行时的性能,而且还更容易扩展。 6、智能Java编译器 该项目主要是为了提高Java编译器的性能,使其能够在编译大型项目上超越JDK,当前的实施方案确实非常棒,不仅提高了编译速度,而且还有增量编译的功能。但是由于代码质量和稳定性还尚未令人满意,所以该项目还未对外发布,敬请期待。 本文是码农网原创翻译,转载请看清文末的转载要求,谢谢合作!
    [转]开放平台API接口调用频率控制系统设计浅谈 Other

    [转]开放平台API接口调用频率控制系统设计浅谈

    admin September 15, 2014 0
    先描述下基本场景: 系统API接口日均调用次数预计1亿次,提供5台服务器。 需要做两种层面的控制: > 单IP、单应用每小时调用次数不超过10000次 > 单应用、单用户、单接口每小时调用次数不超过1000次 要求每次对频控系统的调用的平均响应时间在20ms内。 此外,应用开发者和开放平台所属公司关心调用次数统计数据,如当天某应用所有接口被调用总次数、当天某应用某接口被调用次数、当天某应用用户使用数等。 根据上面,我们可以直接得到系统响应度要求和计算得到系统吞吐量要求,计算公式如下: 80%、40%是指一天中有80%的请求发生在40%的时间内,是粗略的估算值。5是服务器数量。所以得到吞吐量要求为4630tps。前期设计系统时必须参考这些性能指标,后期压测系统时必须根据这些指标设计测试计划。 总结下系统设计需要达成的目标: 请求的响应足够快 能支撑4630tps 占用的CPU、内存等硬件资源不能太夸张(隐性设计目标) A、数据结构设计初步尝试 计数是典型的key-value数据结构。 可能想到的最简单最自然的方式是下面这样的: startTime记录的是第一次调用的发生时刻,lastTime记录的是最近一次调用的发生时刻,它们用来判断是否应该重置计数值count和是否该拒绝调用。startTime和lastTime都只精确到秒级。 为了节省内存,有必要对key和value做特殊设计,最次的方案当然是直接拼接上面各个字段。但这是非常不合理的,我们来简单估算下: 假设应用有10,000个,平均每个应用的用户数为100,000,接口数为50,独立访问IP地址为1,000,000,那么数据项总共为: 那么如果每个数据项节省1个字节,能够节省的总数据存储是600G,这是非常可观的。 对于Key,一种更优方案是先拼接Key的字符串,然后MD5得到16位定长字符串作为Key,Key定长的话或许对性能提升也会有一定帮助。 对于Value,count、startTime、lastTime信息不能丢失,那么或许可以考虑下面两种优化方案: 无损压缩Value字符串,比如使用Snappy字符串压缩算法,但压缩和解压缩会带来额外的CPU计算消耗,需要权衡 计数不需要太精确,所以可以牺牲一定精确度换取空间节省。或许我们可以利用CountingBloomFilter?Key需要重新设计为:MD5(app_id, interface_id, 现在距离1970年1月1号的小时数),Value就是CountingBloomFilter数据结构了,每个调用先根据“app_id、interface_id和现在距离1970年1月1号的小时数”计算16位MD5值,然后得到所属的CountingBloomFilter(如果没有就创建),然后每次先检查是否已达到最大插入次数,如果是则直接返回,如果不是才插入。但是我们别忘了一点:CountingBloomFilter支持最大重复插入次数为15,远小于这里的1000次和10000次。所以很遗憾,CountingBloomFilter不适合这种方案。但这是一个很好的起点,Value的数据结构虽然不能用CountingBloomFilter,但或许可以用其他的优化数据结构,可以参考: http://blog.csdn.net/hguisu/article/details/7856239 还有一篇文章标题大概是用1k内存来排序亿级数组,找不到了。另外频率控制数据结构模型还可以参考“令牌桶算法”,这里不再深入,详情看:http://en.wikipedia.org/wiki/Token_bucket B、进一步的数据存储和数据结构设计 考虑到性能要求,肯定需要用到Cache,这里打算选用Redis做Cache。再根据上面的估算,数据项总共有600亿,所以不可能把所有数据项全部放到Redis Cache中(假设每个Cache项占100个字节,估算下需要多少内存,嘿嘿)。 所以我这里采用冷热数据分离方案。有这么三类数据: 冷数据存放在MySQL数据库,按照app_id、uid进行水平Shard 不冷不热数据采用Redis Hash结构存储(这种内存结构更加紧凑) 热数据放在另外的Redis库中,并且“展开式”存储以改善访问性能 先简单说下不冷不热数据的Redis Hash结构,Key是app_id,Field是MD5(ip, interface_id, uid, 现在距离1970年1月1号的小时数),Value包括两个计数值,即单IP、单应用已调用次数和单应用、单接口、单用户已调用次数。这样设计相当于把本来应该存成两项的数据合并到了一个缓存数据项中。 热数据的所谓“展开式”结构是指将上面两个维度的计数分开,即存成类似下面这两种结构: 这种方案有一个小缺陷,那就是小时区间的划分不太符合用户的直觉。用户的直觉是认为真正第一次调用的时刻才是计时起点。为了满足这个需求,可以回归到A节的数据结构上,变成如下: 另外,我后面仔细思考过,不冷不热数据采用Redis Hash和热数据展开存储,是否真的会像我推断的那样展开存储更快? 答案是不一定。因为Redis Hash存储的话,只需要一次Redis访问外加一些解析计算开销,而展开存储需要两次Redis访问。应该不是绝对的,需实际进行测量后才能下结论。 Redis···
    JAVA随机生成指定长度的密码 Jsp

    JAVA随机生成指定长度的密码

    admin September 5, 2014 0
    在用户注册时,一般都不会给用户设置指定密码,通用做法是将用户的密码随机生成后通过邮件的方式发送给用户,然后让用户激活后即可登录修改密码
    如何在tomcat服务器下配置jndi(三种方式) Jsp

    如何在tomcat服务器下配置jndi(三种方式)

    admin August 31, 2014 0
    jndi(Java Naming and Directory Interface,Java命名和目录接口)是一组在Java应用中访问命名和目录服务的API。命名服务将名称和对象联系起来,使得我们可以用名称访问对象。目录服务是一种命名服务,在这种服务里,对象不但有名称,还有属性。 tomcat配置jndi有全局配置和局部配置。大致的有以下三种配置方式: 第一种:全局配置 1)在tomcat的conf文件夹下的context.xml配置文件中加入: 2)在项目的web.xml中加入资源引用: 其中res-ref-name值要和context.xml的name值一致。 3)jndi测试方法: 4)在jsp中调用加载jndi方式,不可以直接用main方法测试,必须通过启动容器从jsp中调用: 第二种:局部配置(不推荐) 1)在tomcat的server.xml的标签内,添加: 其他配置同第一种方式。 第三种:局部配置(推荐) 1)在项目的META-INFO下面新建context.xml。加入: 其他配置同第一种方式。 总结:如果要配置局部的话,推荐使用第三种方式,这样不依赖tomcat了。但是还是推荐使用第一种方式好,虽然依赖tomat,但是是全局的,而且可以配置多个。对于以后切换使用方便。 注:在项目的web.xml中添加的资源引用可有可无。
    linux环境下java之证书生成与安装自动脚本 Java Linux

    linux环境下java之证书生成与安装自动脚本

    admin August 28, 2014 0
    在开启tomcat的https时,是需要提供https证书的,一般在本机或自己的服务器上测试都是使用jdk的keytool自行生成证书进行测试,在测试通过之后再才到专业的证书提供商处购买证书. 由于每次生成证书都需要自己去输入命令,很是麻烦,就写成一个自动的脚本,方便生成证书. 注: 使用此脚本时,需要配置JAVA_HOME环境变量, 这样才能方便找到JDK的命令. 证书名称和码请自行修改.
    将nginx注册成linux的服务(service) Linux Nginx

    将nginx注册成linux的服务(service)

    admin August 27, 2014 0
    在安装nginx之后,经常会进行重启操作,一般的操作都是在安装目录下运行./nginx -s reload命令,很是不便, 通常的做法是将nginx注册成service, 这样就能很方便的进行操作了, 代码如下: vi后保存至/etc/init.d/nginx文件, 然后赋予权限755即可 注: 需要修改的地方,我都标记为高亮显示了,这些都需要根据你自己的nginx安装目录进行修改
    maven工程在发布之后如何升级项目版本 Maven

    maven工程在发布之后如何升级项目版本

    admin August 27, 2014 0
    项目发布之后,一般都需要升级现有项目的版本,这个时候,由于工程中的子模块非常多,如果手动来修改难免会有遗漏和出错,此时就需要一个工具来帮助我们来升级版本了: 目的:管理pom.xml中出现的各种版本号,包括子模块的版本号和各种插件的版本,单个更新,整体更新模块,子模块和插件(其中更新策略有,更新到指定的版本号,更新到发布版,下一发布版,更新到SNAPSHOT,最新版(配置好的资源库)等等)。
    Mybatis缓存之redis实现 ORM Redis

    Mybatis缓存之redis实现

    admin July 11, 2014 0
    mybatis对于缓存的处理不是很强大,但也算是能凑合使用下,今天项目中要使用到,就打算用redis来扩展下他的接口,做一个实现 以上代码中的RedisClient为自己封的jedisx操作, 你可以直接替换成你自己的封装,或者直接使用原生的jedisx
    使用linux的shell脚本自动触发jenkins构建并爬取结果 Linux

    使用linux的shell脚本自动触发jenkins构建并爬取结果

    admin July 8, 2014 0
    现在越来越多的东西都在使用jenkins进行自动构建,也极大的方便了测试与运维人员进行打包部署,但唯一美中不足的是,不能进行自动部署,昨天写了一个脚本来做这项工作,以达到一键自动打包部署. 调用方法如下:
    • 1
    • 2
    • 3
    • …
    • 5
    第 1 页 / 共 5 页

    日历

    September 2023
    M T W T F S S
    « Oct    
     123
    45678910
    11121314151617
    18192021222324
    252627282930  

    Recent Comments

    • Leo on 留言
    • Jerry on 留言
    • Leo on linux下mongodb安装及配置
    • Leo on 留言
    • ydf on 留言

    Tags

    cache centos configure failover firefox google Gravatar全球通用头像 hibernate install IP iptables Java jdk jdk5 jdk7 jetty jpa jsp linux manifest maven minimal mongodb mybatis mysql nginx pagespeed plugin redis sentinel socket sort spring tomcat vmware 中文乱码 出错页面 多域名 学习心得 文件传输 网络配置 自定义头像 配置 防火墙 验证码
    © 2014-2023   Jsp技术网 All Right Reserved · 粤ICP备13086960号-1 · ♥ Tint & Design by WordPress主题.

    发送私信

    登录

    现在注册 忘记密码?