- 博客(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加密算法源码
2015-01-21
C++ Builder 汉诺塔算法动态演示系统
2009-03-29
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人