
编程基础
zbuger
这个作者很懒,什么都没留下…
展开
-
淘宝开源Key/Value结构数据存储系统Tair技术剖析
作者 余刚 发布于 2010年9月8日Tair是由淘宝网自主开发的Key/Value结构数据存储系统,在淘宝网有着大规模的应用。您在登录淘宝、查看商品详情页面或者在淘江湖和好友“捣浆糊”的时候,都在直接或间接地和Tair交互。Tair于2010年6月30号在淘宝开源平台上正式对外开源,本文较详细地介绍了Tair提供的功能及其实现的细节,希望对大家进一步了解Tai转载 2016-06-19 21:34:21 · 497 阅读 · 0 评论 -
java导入cer证书
在项目开发中,有时会遇到与SSL安全证书导入打交道的,如何把证书导入java中的cacerts证书库呢? 其实很简单,方法如下: 每一步:进入某个https://www.xxx.com开头的网站,把要导入的证书下载过来, 在该网页上右键 >> 属性 >> 点击"证书" >> 再点击上面的"详细信息"切换栏 >> 再点击右下角那个"复制到文件"的按钮转载 2016-06-15 16:53:37 · 8869 阅读 · 0 评论 -
java ssl编程
实现技术:JSSE(Java Security Socket Extension)是Sun为了解决在Internet上的实现安全信息传输的解决方案。它实现了SSL和TSL(传输层安全)协议。在JSSE中包含了数据加密,服务器验证,消息完整性和客户端验证等技术。通过使用JSSE,可以在Client和Server之间通过TCP/IP协议安全地传输数据。为了实现消息认证。Server转载 2016-06-15 16:29:02 · 609 阅读 · 0 评论 -
java消息机制
1、问: 什么是 Java 消息服务?答: Java 消息服务(Java Message Service,JMS) API 是一个用于访问企业消息传递系统的 API。是 Java 2 Platform, Enterprise(J2EE)的一部分。2、目前流行的消息传送产品有哪些?答:目前流行的有ActiveMQ、IBM WebSphere MQ、SonicMQ等3、什么时候转载 2016-07-10 17:05:48 · 674 阅读 · 0 评论 -
digester使用
1. 概述解析XML一直都是编写程序的头疼问题,不是因为它难,而是因为各种地方需要对解析XML的结果要求不同,XML解析和业务逻辑融合在一起,所以每次解析时都感觉是从头开始,没有一套好用的类库。 在大多数应用系统中,都需要保存一个或多个配置信息,这些信息可以保存在数据库中,也可以保存在文件中,保存XML文件中是一个不错的选择,如下: xml转载 2016-06-25 20:06:36 · 841 阅读 · 0 评论 -
正则表达式学习
正则表达式1.判断ip地址,有点小缺陷,不影响:(2[5][0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})\\.(25[0-5]|2[0-4]\\d|1\\d{2}|\\d{1,2})原创 2016-06-24 20:12:06 · 351 阅读 · 0 评论 -
Shell入门
从程序员的角度来看, Shell本身是一种用C语言编写的程序,从用户的角度来看,Shell是用户与Linux操作系统沟通的桥梁。用户既可以输入命令执行,又可以利用 Shell脚本编程,完成更加复杂的操作。在Linux GUI日益完善的今天,在系统管理等领域,Shell编程仍然起着不可忽视的作用。深入地了解和熟练地掌握Shell编程,是每一个Linux用户的必修 功课之一。Linux的Shell转载 2016-06-24 11:55:57 · 368 阅读 · 0 评论 -
Unsupported major.minor version 51.0解决办法
我使用的是Eclipse-jee-indigo + JDK 1.6.23环境,结果使用时出现Unsupported major.minor version 51.0错误提示,下面我来介绍Unsupported major.minor version 51.0错误的解决办法今天偶然间同事遇到一个问题,也加深了自己对eclipse中build path和java compiler comp转载 2016-05-20 09:55:10 · 460 阅读 · 0 评论 -
java中 SSL认证和keystore使用
好久没用过SSL认证了,东西久不用,就有点生疏。博客就是有这个好处,可以做备忘录。java中是通过SSL认证,使用的是SSLSocket,通过SSLSocketFactory可以获得SSLSocket实例对象。通常SSLSocketFactory需要一个SSLContext环境对象来构建,构建一个SSLContext 环境:SSLContext sslc=SSLContex转载 2016-06-16 11:54:48 · 7168 阅读 · 0 评论 -
从Java Keystore文件中提取私钥、证书
Keystore是一个密码保护的文件,存放私钥和证书。可以通过JDK自带的keytool工具生成。但是keytool工具,并没有提供方便的方法,从keystore文件中到处私钥和证书。所以可以通过JDK提供的Java.security.KeyStore 类来编码完成相关工作。参见:http://www.anandsekar.com/2006/01/19/export转载 2016-06-16 11:57:51 · 6519 阅读 · 0 评论 -
HttpClient使用详解(ssl)
Http协议的重要性相信不用我多说了,HttpClient相比传统JDK自带的URLConnection,增加了易用性和灵活性(具体区别,日后我们再讨论),它不仅是客户端发送Http请求变得容易,而且也方便了开发人员测试接口(基于Http协议的),即提高了开发的效率,也方便提高代码的健壮性。因此熟练掌握HttpClient是很重要的必修内容,掌握HttpClient后,相信对于Http协议的了解会转载 2016-06-18 22:24:44 · 7138 阅读 · 0 评论 -
HTTP 代理原理及实现(二)
在上篇《HTTP 代理原理及实现(一)》里,我介绍了 HTTP 代理的两种形式,并用 Node.js 实现了一个可用的普通 / 隧道代理。普通代理可以用来承载 HTTP 流量;隧道代理可以用来承载任何 TCP 流量,包括 HTTP 和 HTTPS。今天这篇文章介绍剩余部分:如何将浏览器与代理之间的流量传输升级为 HTTPS。上篇文章中实现的代理,是一个标准的 HTTP 服务,针对浏览器转载 2016-06-20 13:30:26 · 639 阅读 · 0 评论 -
wireshark抓包分析
wireshark介绍wireshark的官方下载网站: http://www.wireshark.org/wireshark是非常流行的网络封包分析软件,功能十分强大。可以截取各种网络封包,显示网络封包的详细信息。wireshark是开源软件,可以放心使用。 可以运行在Windows和Mac OS上。 使用wireshark的人必须了解网络协议,否则就看不转载 2016-06-19 20:04:51 · 817 阅读 · 0 评论 -
Jetty 9嵌入式开发
官方网址:http://www.eclipse.org/jetty/下载地址:http://download.eclipse.org/jetty/stable-9/dist/文档网址:http://www.eclipse.org/jetty/documentation/当前Jetty网址上推荐使用的稳定版本:Jetty9.0。介绍 Jet转载 2016-06-19 19:44:07 · 2015 阅读 · 0 评论 -
java实现ssl单/双向认证通信[推荐]
有关SSL的原理和介绍在网上已经有不少,对于Java下使用keytool生成证书,配置SSL通信的教程也非常多。但如果我们不能够亲自动手做一个SSL Sever和SSL Client,可能就永远也不能深入地理解Java环境下,SSL的通信是如何实现的。对SSL中的各种概念的认识也可能会仅限于可以使用的程度。本文通过构造一个简单的SSL Server和SSL Client来讲解Java环境下SS原创 2016-06-17 00:30:48 · 15834 阅读 · 4 评论 -
JAVA利用HttpClient进行POST请求(HTTPS)
为了避免需要证书,所以用一个类继承DefaultHttpClient类,忽略校验过程。1.写一个SSLClient类,继承至HttpClient[java] view plain copy import java.security.cert.CertificateException; import java.security.c转载 2016-06-18 20:30:40 · 3479 阅读 · 0 评论 -
注意设置httpclient连接数
在使用Httpclient的过程中,当访问量增大的时候,会发现本地的连接等待时间急剧增加,例如从400ms增加到 78000ms,之前一直以为是航信系统问题,后面经过检查才发现,原来是本地httpclient设置时,最大连接数采用了默认设置的原因,而默认的最 大连接数只有2个,所以当有大量连接需要建立时,大多数连接只有等待。后面将连接数设置修改成32个之后,这个响应时间就基本上很少出现很大的时候。转载 2016-06-18 20:51:15 · 9075 阅读 · 0 评论 -
一道面试题比较synchronized和读写锁
一、科普定义这篇博文的两个主角“synchronized”和“读写锁”1)synchronized这个同步关键字相信大家都用得比较多,在上一篇“多个线程之间共享数据的方式”中也详细列举他的应用,在这就不多说只做几点归纳:Java提供这个关键字,为防止资源冲突提供的内置支持。当任务执行到被synchronized保护的代码片段的时候,它检查锁是否可用,然后获取锁,执行转载 2016-06-07 11:57:23 · 1789 阅读 · 1 评论 -
Apache Maven 入门篇(下)
作者:George Ma第一篇文章大概的介绍了一下Apache Maven以及它的下载和安装,并且运行了一个简单的示例。那么在对maven有了一点接触后,接下去的一步是要了解maven的核心概念,这样才能在使用maven的时候游刃有余。接下来我们介绍下面这几个核心概念:POM (Project Object Model)Maven 插件Maven 生命周期Maven 依赖管理Mav转载 2016-05-20 09:41:29 · 266 阅读 · 0 评论 -
Apache Maven 入门篇 ( 上 )
作者:George Ma写这个 maven 的入门篇是因为之前在一个开发者会的动手实验中发现挺多人对于 maven 不是那么了解,所以就有了这个想法。这个入门篇分上下两篇。本文着重动手,用 maven 来构建运行 hellow world 程序,体会一下不用任何 IDE ,只用 maven 是咋回事。然后下篇就讲解一下 maven 的核心概念。写这两篇文章特意回避了复杂的示例,也不使用 I转载 2016-05-20 09:40:56 · 307 阅读 · 0 评论 -
100的阶乘有多少个零
100! = 100*99*98*97*...*2*1 先看看结尾零是如何形成的:结尾零当一个5的倍数与2的倍数相乘时就会形成。所以我们只要计算有几对(2,5),就能知道有几个结尾零。 先来数5因子有几个:在100内,5作为因子的数有5, 10, 15, 20, 25... 总共有20个。但是注意到25, 50, 75, 100都包含了2个5作为因子(25=5*5,原创 2016-04-06 17:04:14 · 7242 阅读 · 0 评论 -
八皇后问题
题目描述请设计一种算法,解决著名的n皇后问题。这里的n皇后问题指在一个nxn的棋盘上放置n个棋子,使得每行每列和每条对角线上都只有一个棋子,求其摆放的方法数。给定一个int n,请返回方法数,保证n小于等于10测试样例:1输出:1import java.util.*; public class Queens { public int sum=0;原创 2016-04-08 15:26:07 · 386 阅读 · 0 评论 -
大数乘法
public class MyMultiply { public static void main(String[] args) { String str1 = "23456789009877666555544444"; String str2 = "346587436598437594375943875943875";原创 2016-03-26 13:24:57 · 464 阅读 · 0 评论 -
jvm调优(一)
数据类型 Java虚拟机中,数据类型可以分为两类:基本类型和引用类型。基本类型的变量保存原始值,即:他代表的值就是数值本身;而引用类型的变量保存引用值。“引用值”代表了某个对象的引用,而不是对象本身,对象本身存放在这个引用值所表示的地址的位置。 基本类型包括:byte,short,int,long,char,float,double,Boolean,returnAd转载 2016-03-25 10:09:05 · 352 阅读 · 0 评论 -
生成N位格雷码
递归生成码表这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造:1位格雷码有两个码字(n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0(n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1[3] n+1位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)原创 2016-03-25 10:03:23 · 1144 阅读 · 0 评论 -
java类实例化顺序
public class Initializing { public static void main(String[] args) { new TestSub(); }}class Sample { Sample(String s) { System.out.println(s); } Sample() { Syste原创 2016-04-06 10:17:10 · 450 阅读 · 0 评论 -
无状态类与静态类
黑格尔有句名言:存在即合理。以此为论据的话,静态类的使用必然有其合理性。不过物极必反,一旦代码过于依赖静态类,其劣化的解决则不可避免。这就好比罂粟作为一种草本植物,有其在药理上的价值,但如果肆无忌惮的大量使用,它就变成了毒品。什么是静态类所谓静态类指的是无需实例化成对象,直接通过静态方式调用的类。代码如下:12345转载 2016-04-05 09:18:42 · 1074 阅读 · 0 评论 -
自己写一个java.lang.String
可以,但是即使你写了这个类,也没有用。这个问题涉及到加载器的委托机制,在类加载器的结构图(在下面)中,BootStrap是顶层父类,ExtClassLoader是BootStrap类的子类,ExtClassLoader又是AppClassLoader的父类这里以java.lang.String为例,当我是使用到这个类时,Java虚拟机会将java.lang.String类的字节码加原创 2016-04-02 11:07:59 · 1501 阅读 · 0 评论 -
java线程池
Java通过Executors提供四种线程池,分别为:newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。newScheduledThreadPool 创建一个定长线程池,支持定时及周期性任务执行。转载 2016-03-19 12:33:55 · 338 阅读 · 0 评论 -
京东2016实习生招聘-选举游戏
京东2016实习生招聘 C++开发工程师在线考试编程题30分2/2选举游戏Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)Problem Description:小东和其他小朋友正在玩一个关于选举的游戏。选举是通过投票的方式进行的,原创 2016-04-12 19:57:06 · 676 阅读 · 0 评论 -
寻找直方图中最大矩形
题目描述有一个直方图,用一个整数数组表示,其中每列的宽度为1,求所给直方图包含的最大矩形面积。比如,对于直方图[2,7,9,4],它所包含的最大矩形的面积为14(即[7,9]包涵的7x2的矩形)。给定一个直方图A及它的总宽度n,请返回最大矩形面积。保证直方图宽度小于等于500。保证结果在int范围内。测试样例:[2,7,9,4,1],5返回:14import j原创 2016-04-10 13:36:54 · 1129 阅读 · 0 评论 -
java反射原理
要想理解反射,首先得了解类的加载过程,看下图: 我们的源代码经过编译之后变成字节码,然后在JVM中运行时通过类加载器加载字节码在内存中生成Class类对象,这个Class类对象内包含有field对象(类的成员变量生成)、constructor对象(类的构造方法生成)和method对象(类的方法生成)。当我们拿到一个类或者对象的时候就可以通过反射对它们进行转载 2016-04-11 10:26:20 · 908 阅读 · 0 评论 -
top k问题
问题描述:有N(N>>10000)个整数,求出其中的前K个最大的数。(称作Top k或者Top 10) 问题分析:由于(1)输入的大量数据;(2)只要前K个,对整个输入数据的保存和排序是相当的不可取的。 可以利用数据结构的最小堆来处理该问题。 最小堆如图所示,对于每个非叶子节点的数值,一定不大于孩子节点的数值。这样可用含有K个节点的最小堆来转载 2016-04-18 21:07:29 · 313 阅读 · 0 评论 -
程序员智力题
1、考虑一个双人游戏。游戏在一个圆桌上进行。每个游戏者都有足够多的硬币。他们需要在桌子上轮流放置硬币,每次必需且只能放置一枚硬币,要求硬币完全置于桌面内(不能有一部分悬在桌子外面),并且不能与原来放过的硬币重叠。谁没有地方放置新的硬币,谁就输了。游戏的先行者还是后行者有必胜策略?这种策略是什么? 答案:先行者在桌子中心放置一枚硬币,以后的硬币总是放在与后行者刚才放的地方相对称的位置。这样原创 2016-05-02 16:00:57 · 3152 阅读 · 0 评论 -
Trie树
一:概念 下面我们有and,as,at,cn,com这些关键词,那么如何构建trie树呢?从上面的图中,我们或多或少的可以发现一些好玩的特性。 第一:根节点不包含字符,除根节点外的每一个子节点都包含一个字符。 第二:从根节点到某一节点,路径上经过的字符连接起来,就是该节点对应的字符串。 第三:每个单词的公共前缀作转载 2016-04-18 16:15:13 · 303 阅读 · 0 评论 -
优先级队列与堆排序
在很多应用中,我们通常需要按照优先级情况对待处理对象进行处理,比如首先处理优先级最高的对象,然后处理次高的对象。最简单的一个例子就是,在手机上玩游戏的时候,如果有来电,那么系统应该优先处理打进来的电话。在这种情况下,我们的数据结构应该提供两个最基本的操作,一个是返回最高优先级对象,一个是添加新的对象。这种数据结构就是优先级队列(Priority Queue) 。本文首先介绍优先级队转载 2016-04-14 15:19:03 · 423 阅读 · 0 评论 -
Jacoco Maven Plugin - Plugin execution not covered by lifecycle configuration
I'm new to Maven and want to use the Jacoco Maven Plugin to build my projects.I've set up an example project with TestNG the only dependency.Here is part of the pom.xml: org.tes原创 2016-05-24 13:15:17 · 1964 阅读 · 0 评论 -
背包问题
背包问题 背包问题是计算机科学里的经典问题。在最简单的形式中,包括试图将不同重量的数据项放到 背包中.以使背包最后达到指定的总重量。不需要把所有的选项都放入背包中。 举例来说,假设想要背包精确地承重20磅,并且有5个可以选择 放入的数据项,它们的重量 依次为11磅、8磅、7磅、6磅和5磅。对于选择放入的数据项数量不大时,人类很善于通过观察 就可以解决这个问题。于是原创 2016-04-15 23:38:58 · 518 阅读 · 0 评论 -
Plugin execution not covered by lifecycle configuration
eclipse在其POM文件的一处提示出错如下:Plugin execution not covered by lifecycle configuration: org.apache.maven.plugins:maven-compiler-plugin:3.1:compile (execution: default-compile, phase: compile) 这表示原创 2016-05-24 11:40:22 · 456 阅读 · 0 评论 -
OOD六大原则
OOD基本上有6大原则,而实际上都是互补的,也就是说一些原则需要利用另一些原则来实现自己。6大原则如下:1) Open-Close Principle(OCP),开-闭原则,讲的是设计要对扩展有好的支持,而对修改要严格限制。这是最重要也是最为抽象的原则,基本上我们所说的Reusable Software既是基于此原则而开发的。其他的原则也是对它的实现提供了路径。2) Liskov Subs原创 2016-04-11 15:17:16 · 3679 阅读 · 0 评论