自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

helloworld的专栏

helloworld的专栏

  • 博客(39)
  • 资源 (9)
  • 收藏
  • 关注

原创 Thread.run or Thread.start

Common Pitfall: Calling run() Instead of start()When creating and starting a thread a common mistake is to call the run() method of the Thread instead of start(), like this:Thread newThread = new Threa

2017-12-28 20:56:15 255

原创 Python rfind and rindex

str.rfind(sub[, start[, end]]) Return the highest index in the string where substring sub is found, such that sub is contained within s[start:end]. Optional arguments start and end are interpreted as

2017-12-28 20:06:29 739

原创 Java Memory Model

The Java memory model specifies how the Java virtual machine works with the computer’s memory (RAM). The Java virtual machine is a model of a whole computer so this model naturally includes a memory mo

2017-12-28 19:49:15 397

翻译 Java 内存模型(Java Memory Model)

JVM内存模型定义的是Java虚拟机(JVM)如何在计算机内存(RAM)中工作机理。深入理解JVM内存模型对于多线程下编写正确的并发程序至关重要。Java内存模型指定了不同线程在什么时候、以什么样的方式访问其他线程写入到共享变量的值,以及如何同步访问共享变量。 最初版本的Java内存模型相对不够完善,JDK 1.5对此进行了完善,并一直沿用至Java 8The Internal Java Me

2017-12-27 20:00:30 486

原创 Java并发编程之ThreadLocal

This class provides thread-local variables. These variables differ from their normal counterparts in that each thread that accesses one (via its {@code get} or {@code set} method) has its own, ind

2017-12-27 14:20:29 388

原创 Java并发编程之CountDownLatch

java.util.concurrent.CountDownLatch 是jdk1.5引入的一种通过计数器的方式来实现多线程环境下等待指定操作完成的并发机制CountDownLatch 可以通过构造函数指定计数器的初始值,即countDown原子方法调用次数,countDown每调用一次,计数器减一CountDownLatch latch = new CountDownLatch(3);线程通过调

2017-12-26 20:08:31 219

原创 Java并发编程之CyclicBarrier

java.util.concurrent.CyclicBarrier是jdk1.5引入的一种线程同步机制,换句话说,CyclicBarrier是运行时一个特殊的运行节点,在多线程执行上下文中,所有线程通过调用CyclicBarrier.await()方法相互等待,直到所有的线程都运行到这个节点时,才允许继续下一步操作,即所有的线程资源开始释放,继续执行下一步操作,参见下图:创建CyclicBarr

2017-12-26 19:44:13 342

原创 Java之反射详解

Java反射技术提供了一种用以检查或者修改程序在运行的状态或者行为的一种机制。反射用途:可扩展性:你可以通过名字匹配的方式来创建用户自定义实例 提供类管理功能和可视化开发上下文:类管理器可以用来枚举类中的成员变量,而可视化的开发环境可以帮助开发人员书写准确的代码提供调试与测试工具:调试人员可以借助反射检查类中的私有变量,测试人员可以利用反射获取类提供的接口集合,提高代码覆盖率反射的缺点反射虽

2017-12-26 13:23:20 306

原创 Python get path separator

print("pathsep is %s" % os.pathsep)print("path.sep is %s" % os.path.sep) pathsep is ; path.sep is \

2017-12-25 19:45:16 1799

原创 Python 使用mysql-connector-python访问MySql

conn = mysql.connector.connect(host='10.214.168.25', port='3306', user='user', password='password', database='test') cursor = conn.cursor() cursor.execute('se

2017-12-25 19:42:07 2312 1

原创 Python中的正则表达式

import repattern = "^\d{3}\-\d{3,8}$"phone0 = "010-66101234"phone1 = "010-123"phone2 = "010-12345"print("result is %s" % re.match(pattern, phone0))print("result is %s" % re.match(pattern, phone1))

2017-12-25 19:37:48 267

原创 Python 文件读写

1. 可以一次性加载到内存中def read_file(file_name): with open(file_name, "r", errors='ignore', encoding='utf-8') as f: str = f.read() print(str)2.按行读取def read_file_by_line(file_name): with

2017-12-25 19:34:21 311

转载 Java 8系列之重新认识HashMap

Java 8系列之重新认识HashMap摘要HashMap是Java程序员使用频率最高的用于映射(键值对)处理的数据类型。随着JDK(Java Developmet Kit)版本的更新,JDK1.8对HashMap底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7和JDK1.8的区别,深入探讨HashMap的结构实现和功能原理。 简介Java为数据结构中的映射定义了

2017-12-22 21:28:40 329

原创 使用Scrapy爬取CSDN博客首页文章

Scrapy, a fast high-level web crawling & scraping framework for PythonCSDN博客首页如下,包括:推荐、资讯、人工智能等栏目每一个栏目下有不同的推荐文章列表,我们使用Scrapy来读取这些栏目的推荐文章列表定义爬虫如下class QuotesSpider(scrapy.Spider): name = "csdn"

2017-12-20 19:58:59 1289

原创 JQuery选择器之自定义选择器

语法 描述 B:animated 匹配B的所有的动画元素 B:button 匹配B的所有button元素(button, input[type=submit], input[type=reset] or input[type=button]) B:checkbox 匹配B的所有checkbox元素( input[type=checkbox]) B:enabled 匹

2017-12-20 19:40:38 1717

原创 JQuery选择器之位置选择器

语法 描述 B:first 匹配页面上满足选择器B的第一个元素 B:last 匹配页面上满足选择器B的最后一个元素 B:first-child 所有匹配选择器B的第一个元素 B:last-child 所有匹配选择器B的所有最后一个元素 B:only-child 匹配选择器B的唯一元素。 B:nth-child(n) 匹配选择器B的第N个子元素,从1开

2017-12-20 19:35:07 3171

原创 Java中抽象类与接口区别

抽象类:抽象类是无法实例化的特殊类。所以问题是为什么我们需要一个不能被实例化的类,抽象类只能是子类(继承自)。换句话说,它只允许其他类继承它,但不能实例化。优点是它为所有子类执行特定的层次结构。简而言之,它是一种契约,它强制所有子类执行相同的层次或标准。 接口:接口不是类,由Interface关键词定义,接口只有方法签名,没有方法实现(8之后支持默认方法)。与抽象类类似,它也是一种契约,用

2017-12-20 09:18:19 4762

原创 再说装饰器模式

To extend or modify the behaviour of an instance at runtime decorator design pattern is used. Inheritance is used to extend the abilities of a class. Unlike inheritance, you can choose any single objec

2017-12-19 20:07:10 380

原创 什么是serialVersionUID?

作为一名Java程序猿,你可能不止一次的在你的代码中加上如下类似代码: private static final long serialVersionUID = -1621157410689606874L;但如果有人问你,为什么要这么做?或许有人可能说,IDE强制要求的。我们都知道序列化和反序列化是怎么回事,简单来讲,Java对象只存在于JVM中,当JVM退出时,对象也会被销毁。序列化就是将对

2017-12-19 19:44:14 1609

原创 使用Jackson进行序列化和反序列化

序列化: public static <T> String serialize(T t) throws JsonProcessingException { ObjectMapper mapper = new ObjectMapper(); String jsonResult = mapper.writerWithDefaultPrettyPrinter()

2017-12-19 10:26:38 1578

原创 pip命令使用代理

pip命令安装Python模块时,如果在内网需要使用代理上网,那么pip命令配置代理命令格式如下: pip install –proxy http://username:password@proxy_ip:proxy_port module_name

2017-12-18 20:30:39 10721

原创 Python convert a list to String

正常情况如果list由字串类型,一般可以用下面这种方法a_list = ["1", "2", "3"]print("".join(a_list))发散一下,如果list是数字型,那么上面这种方式就会报错: Traceback (most recent call last): File “D:/work/PyCharm/cn/com/icbc/basic/list_to_str.py”

2017-12-18 20:18:00 12184

原创 动态规划之最少硬币找零问题

假设有几种硬币,并且数量无限。请找出能够组成某个数目的找零所使用最少的硬币数。 private static final int MAX_VALUE = Integer.MAX_VALUE - 2; public static int coinChange(int[] coins, int change) { int[] seq = new int[change + 1];

2017-12-14 20:15:11 2689

原创 最大子序列和

给定一个整数序列,a0, a1, a2,…, an(序列项可以为负数),求其中最大的子序列和,如果所有整数都是负数,那么最大子序列和为0;首先定义两个变量:max_so_far和max_ending_here然后从左到右开始遍历输入序列,其中:max_ending_here用以表示序列中截止到当前位置的最大子序列和,max_so_far则是通过冒泡排序的方式获取max_ending_here的最大

2017-12-14 20:05:39 397

原创 Python3中dict按value排序

sorted_dict = sorted(keyword_dict.items(), key=lambda item: item[1], reverse=True)print(sorted_dict)sorted_dict = sorted(keyword_dict.items(), key=operator.itemgetter(1), reverse=True)print(sorted_d

2017-12-13 20:29:07 8555

原创 Python词云图绘制—看博客大佬们的写作热点

在《Python可视化展现》中,我们使用了Matplotlib可视化了一些博客大佬们的博客发表年份与数量的关系,接下来我们再看下这些博客文章的热点都有哪些。 我们仅对文章的标题进行分词处理,然后统计分词结果,并绘制出博客文章词云,我们使用了jieba和thulac进行中文分词,结果总体差不多,但thulac速度更显得慢。重新定义walk_treedef walk_tree_j(html, num)

2017-12-13 20:26:54 895

原创 Python可视化展现—看博客大佬们的写作规律

在《使用BeautifulSoup爬取CSDN博客文章》这篇文章中,我们使用了BeautifulSoup爬取了CSDN博客的访问情况以及文章列表信息,紧接着,我们可以做一些更好玩的事情,比如:分析下这些排名靠前的一些博客写作规律等信息,我们首先按时间维度分析下这些“博客大佬们“的产量信息: 我们定义一个dict用以记录博客发表年份与发表文章数量关系,修改walk_tree如下: article

2017-12-13 20:08:02 469

原创 春泥

漫天的话语 纷乱落在耳际 你我沉默不回应 牵你的手 你却哭红了眼睛 路途漫长无止尽 多想提起勇气 好好地呵护你 不让你受委屈 苦也愿意 那些痛的记忆 落在春的泥土里 滋养了大地 开出下一个花季 风中你的泪滴 滴滴落在回忆里 让我们取名叫做珍惜 迷雾散尽 一切终于变清晰 爱与痛都成回忆

2017-12-12 21:08:36 761

原创 使用BeautifulSoup爬取CSDN博客文章

Beautiful Soup 是一个可以从HTML或XML文件中提取数据的Python库 Requests is an elegant and simple HTTP library for Python, built for human beings. 通过Requests发起请求获取博客信息,然后再通过BeautifulSoup的基本应用,当然这里我们选取的是排名靠前的博客,注意如果是在内网

2017-12-12 20:41:57 785

原创 JQuery选择器之CSS选择器

核心选择器 语法 描述 * 选择所有元素 <type> 选择特定类型的元素 .<class> 选择具有特定class的元素 <type>.<class> 选择具有特定class的某类元素 ‘#id 选择具有特定id属性值的元素属性选择器 语法 描述 [attr] 选取定义了attr属性的元素,即使这个属性值为空 [attr=”val”

2017-12-07 20:47:53 1574

原创 JDK中的设计模式之装饰者模式

The decorator pattern is a design pattern that allows behavior to be added to an individual object, either statically or dynamically, without affecting the behavior of other objects from the same class

2017-12-07 20:20:47 916

原创 Python中的字符串反转

性能最佳者 推荐方法,使用切片:slicedef reversed_string(a_string): return a_string[::-1]可读性强def reverse_string_readable_answer(string): return ''.join(reversed(string))中规中矩 这种做法其实非常不推荐的,因为,记住,Python中字符串是

2017-12-06 20:38:02 4927 2

原创 JDK中的设计模式之观察者模式

The observer pattern is a software design pattern in which an object, called the subject, maintains a list of its dependents, called observers, and notifies them automatically of any state changes, usu

2017-12-06 20:17:31 557

原创 使用JQuery修改Table特定行的相关属性

一个简单的小问题,有如下一个表格:<table border="1" id="history"> <tr> <th>Month</th> <th>Savings</th> </tr> <tr> <td>January</td> <td>$100</td>

2017-12-05 20:33:17 3109

原创 使用枚举构造Singleton对象

单例的常见写法:私有构造器与静态成员public class SimpleSingletonY { public static final SimpleSingletonY INSTANCE = new SimpleSingletonY(); private SimpleSingletonY() { }}静态工厂public class SimpleSingletonX {

2017-12-05 20:22:51 256

原创 JavaBean之Builder模式

静态工厂和构造器重载构造函数,分别包含多个不同的参数 无法很好地扩展到大量的可选参数JavaBean方式调用一个无参构造函数来创建对象,然后通过setter方法来设置必要参数 对象构造过程被分割到了几个调用,构造过程中可能导致JavaBean处于不一致的状态,类无法通过检验构造器参数的有效性来保证一致性Builder模式 不直接生成想要的对象,通过调用构造器(或静态工厂),得到bui

2017-12-05 20:05:37 3162

原创 JWT(JSON Web Tokens)在Spring 微服务中的应用

关于JWT,之前的文章详细介绍,本篇我们将介绍JWT在Spring微服务中的应用。工作流程首先,客户端通过用户名和密码发起请求到开放接口,服务端收到请求之后,对用户名和密码进行验证,验证通过之后,生成JWT并响应给客户端。客户端收到服务器响应之后,将JWT保存到本地,后续客户端的所有请求的HTTP Header都将包含此Token信息,进而服务器端可以对所有请求进行授权验证。JWT的生成与验证pub

2017-12-04 21:07:32 787

原创 Java使用反射处理注解

Annotation: 注解,代码里的特殊标记,JDK1.5开始引入,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。通过注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充的信息。APT(Annotation Processor Tool)可以通过这些补充信息进行验证、处理或者进行部署,通过反射机制在进行必要的处理。自定义注解@Target(ElementType.TY

2017-12-01 20:29:38 1130

原创 Java 静态代理 vs 动态代理 vs CGLib Proxy

代理:为其他对象提供访问目标对象的一种控制或机制。接口定义public interface FontProvider { Font getFont(String name);}实现定义@Slf4jpublic class FontProviderImpl implements FontProvider { public FontProviderImpl() { lo

2017-12-01 19:46:49 360

3DES加密算法源码

3DES(或称为Triple DES)是三重数据加密算法(TDEA,Triple Data Encryption Algorithm)块密码的通称。它相当于是对每个数据块应用三次DES加密算法。 最早的定义了该算法的标准(ANS X9.52,1998年发布)将其描述为“三重数据加密算法(TDEA)”— 即为ANSI X3.92中定义的数据加密算法(DEA)的三次重复操作— 而完全没有使用术语“3DES”或“DES”。FIPS PUB 46-3(1999)定义了“三重数据加密算法”(TDEA),也使用了术语“Triple DES”和“DES”。该标准中互换的使用“数据加密算法”(DEA)和“DES”的概念,其中以此开始DES的定义: 数据加密标准(DES)应当包括下文中的数据加密算法(DES[4])与三重数据加密算法(TDEA,如ANSI X9.52中所描述的) NIST SP 800-67(2004,2008[5])主要使用术语TDEA,但也提到了“Triple DES(TDEA)”。ISO/IEC 18033-3(2005)使用“TDEA”,但其中提到: TDEA通称Triple DES(数据加密标准)。 没有一个定义了本算法的标准使用术语“3DES”。 3DESughhhg34465345556555678==算法== 3DES使用“密钥包”,其包含3个DES密钥,K1,K2和K3,均为56位(除去奇偶校验位)。加密算法为: 密文 = EK3(DK2(EK1(平文))) 也就是说,使用K1为密钥进行DES加密,再用K2为密钥进行DES“解密”,最后以K3进行DES加密。 而解密则为其反过程: 平文 = DK1(EK2(DK3(密文))) 即以K3解密,以K2“加密”,最后以K1解密。 每次加密操作都只处理64位数据,称为一块。 无论是加密还是解密,中间一步都是前后两步的逆。这种做法提高了使用密钥选项2时的算法强度,并在使用密钥选项3时与DES兼容。 密钥选项[编辑] 标准定义了三种密钥选项: 密钥选项1:三个密钥是独立的。 密钥选项2:K1和K2是独立的,而K3=K1 密钥选项3:三个密钥均相等,即K1=K2=K3 密钥选项1的强度最高,拥有3 x 56 = 168个独立的密钥位。 密钥选项2的安全性稍低,拥有2 x 56 = 112个独立的密钥位。该选项比简单的应用DES两次的强度较高,即使用K1和K2,因为它可以防御中途相遇攻击。 密钥选项3等同与DES,只有56个密钥位。这个选项提供了与DES的兼容性,因为第1和第2次DES操作相互抵消了。该选项不再为国家标准科技协会(NIST)所建议[6],亦不为ISO/IEC 18033-3所支持。

2015-01-21

mail.jar mail.jar

mail.jar

2014-05-11

Java2WSDL和WSDL2Java操作指南.doc

Java2WSDL和WSDL2Java操作指南.doc

2014-05-11

Java使用SOAP获取webservice实例解析.doc

Java使用SOAP获取webservice实例解析.doc

2014-05-11

dom4j-1.6.1

dom4j-1.6.1

2014-05-10

servlet-api

servlet-api

2014-05-10

jsp-api.jar

jsp-api.jar

2014-05-10

C++ Builder 汉诺塔算法动态演示系统

采用C++ Buidler开发环境,C++ 语言,结合线程技术,将经典的汉诺塔算法的执行过程动态的演示出来,对于用户理解汉诺塔算法产生巨大的帮助

2009-03-29

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除