- 博客(47)
- 收藏
- 关注
原创 python lambda(匿名函数)
当我们在传入函数时,有些时候,不需要显式地定义函数,直接传入匿名函数更方便。在Python中,对匿名函数提供了有限支持。还是以map()函数为例,计算f(x)=x2时,除了定义一个f(x)的函数外,还可以直接传入匿名函数:>>> map(lambda x: x * x, [1, 2, 3, 4, 5, 6, 7, 8, 9])[1, 4, 9, 16, 25, 36...
2017-04-26 11:39:04
124
原创 python 闭包
返回函数:阶函数除了可以接受函数作为参数外,还可以把函数作为结果值返回。我们来实现一个可变参数的求和。通常情况下,求和的函数是这样定义的: def calc_sum(*args): ax = 0 for n in args: ax = ax + n return ax 但是,如果不需要立刻求和,而是在后面的代码中,根据需要再计算怎...
2017-04-26 11:34:02
100
原创 python map/reduce/filter/sorted
python 内建了map()和reduce()函数。map:map()函数接收两个参数,一个是函数,另一个是序列,map 将传入的函数依次作用到序列的每个元素,并把结果作为新的list返回。举例说明,比如我们有一个函数f(x)=x2,要把这个函数作用在一个list[1,2,3,4,5,6,7,8,9]上,就可以用map()实现:>>> def f(x):...
2017-04-26 10:47:50
141
原创 python高阶函数
变量可以指向函数:以Python内置的求绝对值的函数abs()为例,调用该函数用以下代码: >>> abs(-10)10 但是,如果只写abs: >>> abs<built-in function abs> 可见,abs(-10)是函数调用,而abs是函数本身。 要获得函数调用结果,我们可以把结果赋值给变量...
2017-04-26 10:33:39
106
原创 python 列表生成式
列表生成式即List Comprehensions,是Python内置的非常简单却强大的可以用来创建list的生成式。举个例子,要生成list [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]可以用list(range(1, 11)): >>> list(range(1, 11))[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] ...
2017-04-25 17:32:23
67
原创 python 高级特性
切片:对于取一个 list 的部分元素是非常常见的操作,比如>>> L = ['Michael', 'Sarah', 'Tracy', 'Bob', 'Jack']要去前面3个元素,怎么处理:笨方法:>>> [L[0], L[1], L[2]]['Michael', 'Sarah', 'Tracy'] 对这种经常取指定索引范围的操作,用循环十分繁琐...
2017-04-25 17:24:49
84
原创 python 函数
函数:函数是重用的程序段,它们允许你给一块语句一个名称,然后你可以在你的程序的任何地方 使用这个名字任意多次的运行这个语句块。这被称为 调用函数。函数用def关键字 定义,def关键子后面跟一个函数的标识符,然后跟一对圆括号。圆括号中可以包括一些变量名,该行以冒号(:)结尾。 #!/usr/bin/python#FileName: fun1.pydef sayHel...
2017-04-24 11:39:47
93
原创 oracle表结构查询
select t.table_name 表名,t.column_name as 字段名,t.data_type as 字段类型,t.data_length as 字段长度,t.nullable as 是否为空,t.data_default as 默认值from USER_TAB_COLS t where TABLE_NAME ='table_name';...
2017-04-20 16:39:41
231
原创 工作中关于Hedge fund
本文主要简单介绍下本人工作经历中关于对冲基金的业务: Hedge Funds:Use wide range of complex and sophisticated Investment StrategiesInvestment VehiclesBig BetsWide range of assetsSpecialise in sophisticated investm...
2017-04-20 15:46:07
417
原创 manve,jenkins常用的坑
用 maven 构建java:mvn clean install -DskipTests对于 eclipse 项目:mvn -U clean eclipse:eclipse -DskipTests mvn -X (注意X 大写) ,查询mvn的一些配置信息,比如setting.xml 配置文件在哪里。 Jenkins 使用 execute shell的时候,通...
2017-04-13 11:44:16
141
原创 重入线程
当某个线程请求一个由其他线程持有的锁时,发出的请求的线程就会阻塞。然而,由于内置锁是可重入的,因此如果某个线程试图获得一个已经由它自己持有的锁,那么这个请求就会成功。”重入“ 意味着获取锁的操作的粒度是“线程”,而不是“调用”。重入的一种实现方法是 为每个锁关联一个获取计数值和一个所有者线程。当计数值为0时,JVM将记下锁的持有者,并且将获取计数值置为1。如果同一个线程再次获取这个锁,计数值...
2017-04-11 13:04:56
98
原创 内置锁
Java 提供了一种内置锁机制来支持原子性:同步代码块。同步代码块包括两部分:一个作为锁的对象引用,一个作为由这个锁保护的代码块。以关键字synchronized来修饰的方法就是一种横跨整个方法体的同步代码块,其中 该同步代码块的锁就是方法调用所在的对象。静态的synchronized方法以Class对象作为锁。 synchronized(lock){//访问或修改由锁保护的共享状态...
2017-04-11 12:49:44
172
原创 复合操作
我们将“先检查后执行”以及“读取-修改-写入"等操作统称为符合操作:包含了一组必须以原子方式执行的操作以确保线程安全性。后面我们会讨论加锁机制,这是Java中用于确保原子性的内存机制,我们还可以使用一个现有的线程安全类:public class CountingFactorizer implements Servlet{ private final AtomicLong count...
2017-04-11 11:05:19
184
原创 延迟初始化的竞态条件
使用“先检查后执行”的一种常见情况就是延迟初始化。延迟初始化的目的是将对象的初始化推迟到实际使用时才进行,同时要确保只被初始化一次。 public class LazyInitRace{ private ExpensiveObject instance=null; public ExpensiveObject getInstance(){ ...
2017-04-10 18:14:13
132
原创 原子性
当我们在无状态的对象中增加一个状态时,会出现什么情况?假设我们希望增加一个“命中计数器”来统计所处理的请求数量。一种直观的方法是 在Servlet中增加一个long 类型的域,并且每处理一个请求就 将这个值加1,如下程序:public class UnsafeCountingFactorizer implements Servlet{ private long count=0;...
2017-04-10 10:08:10
97
原创 一个无状态的Servlet是安全的线程
示例: 通常,线程安全性的需求并非来源于对线程的直接使用,而是使用相Servlet这样的框架。我们来看一个简单的例子:一个基于Servlet的因数分解服务,并逐渐扩展它的功能,同时确保它的线程安全性。 这个Servlet从请求中提取出数值,执行因数分解,然后将结果封装到该Servlet的响应中 public class StatelessFactorizer im...
2017-04-10 09:52:39
324
原创 项目没有被eclipse检测成java项目
有些导入eclipse的项目中,没有被eclipse检测成java项目,项目目录的左上角没有J字母,应该是.project没有配置好,需要给此项目配置一个插件,如下:<?xml version="1.0" encoding="UTF-8"?><projectDescription> <name>ProjectDemo</name>...
2017-04-10 09:44:22
499
原创 线程安全性
“共享”意味着变量可以由多个线程同时访问,而“可变”则意味着变量的值在其生命周期内可以发生变化。一个对象是否需要是线程安全的,取决于它是否被多个线程访问。要使得对象是线程安全的,需要采用同步机制来协同对对象可变状态的访问。当多个线程访问某个状态变量并且其中有一个线程执行写入操作时,必须采用同步机制来协同这些线程对变量的访问。Java中的主要同步机制是关键字synchronized,它提供了...
2017-04-07 18:20:05
95
原创 垃圾收集器参数总结
UseSerialGC :虚拟机运行在Client模式下的默认值,打开此开关后,使用Serial+Serial Old组合进行内存回收。UseParNewGC :打开此开关后,使用ParNew+Serial Old组合回收UseConcMarkSweepGC:打开此开关后,使用ParNew+CMS+Serial Old 的收集器组合进行内存回收,Serial Old 收集器将作为CMS...
2017-04-03 17:11:59
102
原创 内存分配与回收策略
Java技术体系中所提倡的自动内存管理最终可以归结为 自动化地解决了两个问题 : 给对象分配内存以及回收分配个对象的内存。接下来我们来讲一讲内存分配的事情。 对象的内存分配,往大方向讲,就是在堆上分配,对象主要分配在新生代的Eden上,如果启动了本地线程分配缓冲,将按线程优先在TLAB上分配。少数情况下也可能会直接分配在老年代中。1,对象优先在Eden分配 大多数情况下,对象...
2017-04-03 15:53:52
72
原创 垃圾收集器
1. Serial 收集器 ("Serial" is a stop-the-world, copying collector which uses a single GC thread.) Serial收集器是最基本,历史最悠久的收集器,使用复制算法,在jdk 1.3.1之前是 虚拟机新生代收集的唯一选择,它是单线程的收集器,它在进行垃圾收集时,必须暂停其他所有的工作线...
2017-03-30 12:07:06
103
原创 垃圾收集算法
1,标记-清除算法 最基础的收集算法是“标记-清除”算法,如它的名字一样,算法分为“标记”和“清除”两个阶段:首先标记出所有需要回收的对象,在标记完成后统一回收掉所有的对象。之所以所它是最基础的收集算法,是因为后续的收集算法都是基于这种思想并对其缺点进行改进而得到的。它的主要缺点有两个:一个是效率问题,标记和清除过程的效率都不高;另一个是空间问题,标记和清除之后会产生大量不连续的内存...
2017-03-29 10:42:57
70
原创 再谈引用
有些对象,当内存空间还足够时,则希望能保留在内存中;如果内存在进行垃圾收集后还是非常紧张,则可以抛弃这些对象。很多系统缓存功能都符合这样的应用场景。 在JDK1.2之后,Java对引用的概念进行了扩充,将引用分为强引用,软引用,弱引用,虚引用四种,这四种引用强度依次逐渐减弱。 强引用就是指在程序代码之中普遍存在的,类似:Object obj=new Object() 这类的引用,只要强...
2017-03-28 11:33:00
112
原创 怎么判断对象已死
堆中几乎存放这Java世界中所有的对象实例,垃圾收集器在对堆进行回收前,第一件事情就是要确定这些对象有哪些还"存活"着,哪些已经"死去"(即不可能再被任何途径使用的对象)。1,引用计数算法 给对象添加一个引用计数器,每当有一个地方引用它时,计数器就加1;当引用失效时,计数器就减1;任何时刻计数器都为0的对象就是不可能再被使用的。客观地讲,引用计数法的实现简单,判定效率也高,但Java中...
2017-03-28 10:58:11
175
原创 java内存区域与内存溢出异常
java虚拟机运行时区域图:1,程序计数器:程序计数器可以看作是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,分支,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。 由于java虚拟机的多线程是通过线程轮流切换并分配处理器执行时间的方式来实现的,在任何时刻,一个处理器只会执行一条线程中的指...
2017-03-27 18:19:16
96
原创 spring 源代码分析
https://my.oschina.net/kaywu123/blog?sort=time&p=2&temp=1490337522517
2017-03-24 14:37:02
80
原创 Sublime Text2.0.2注册码--转
----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-855605813A03DD 5E4AD9E6 6C0EEB94 BC99798F942194A6 02396E98 E62C9979 4BB979FE91424C9D A45400BF F6747D88 2FB8807890F5CC94 1CDC92DC 8457107A F...
2017-01-11 15:07:10
73
原创 How the Rich Got Rich
link:http://www.moneytips.com/how-the-rich-got-rich November 19, 2015 Did you ever wonder how the rich acquired their money? Some simply inherit their wealth, but many built their fortunes thro...
2016-11-29 11:52:19
183
原创 Hibernate 缓存
Session的二级缓存Hibernate 提供了两级缓存,第一级缓存是Session 的缓存。由于Session对象的生命周期通常对应一个数据库事务或者一个应用事务,因此它的缓存是事务范围的缓存。第一级缓存是必须的,不允许而且事实上也无法被卸除。在第一级缓存中,持久化类的每个实例都具有惟一的OID。第二级缓存是一个可插拔的缓存插件,它由SessionFactory 负责管...
2016-10-26 17:59:21
77
原创 java虚拟机简单总结
1 . java运行时数据区域:程序计数器,java 虚拟机栈,java堆,方法区(运行时常量池 )程序计数器:是一块较小的内存空间,它的作用可以看作是当前线程所执行的字节码的行号指示器。java虚拟机栈: 与程序计数器一样也是线程私有的,生命周期与线程一样。虚拟机栈描述的是java方法执行的内存模型, 每个方法被执行的时候都会同时创建一个栈桢用于存储:局部变量表,操作栈,动态链...
2016-09-21 17:02:34
76
原创 string.intern
String.intern()检查字符串池里是否存在"abc"这么一个字符串,如果存在,就返回池里的字符串;如果不存在,该方法会把"abc"添加到字符串池中,然后再返回它的引用。 JDK的api文档是这么解释的: ======================================================================= 返回字符串对象的规范化...
2016-09-20 15:21:21
97
原创 数据库的事务
一、数据库事务就是多个SQL语句(一个团队),要么所有执行success,不然就fail。 它最终的目标:数据不会被破坏。即事务操作成功,数据的结果和业务期待的结果是一致的。这也就是ACID中的一致性(Consistency)。那什么是ACID。 二、ACID即原子性、一致性、隔离性和持久性。下面一一生动解释: a)原子性 原子是物质的最小单元,即不可再分。 每一个简单的...
2016-06-14 18:39:03
85
原创 java Object类源代码详解 及native method.
java Object类源代码详解 及native method.package java.lang; public class Object { /* 一个本地方法,具体是用C(C++)在DLL中实现的,然后通过JNI调用。*/ private static native void registerNat...
2016-06-08 18:07:58
168
原创 POI 追加写入excel.
poi操作excel ,摘自 :http://blog.csdn.net/goodleiwei/article/details/7247339记录以下,留后面验证:public class TestExceL{ public static void main(String[] args) throws Exception { Fi...
2016-05-11 18:06:01
624
原创 oracle sequence
1、先创建序列: CREATE SEQUENCE emp_sequence--创建序列,名为: emp_sequenceSTARTWITH 1 --从1开始MAXVALUE999999999 --最大值INCREMENT BY 1 --每次递增 1ORDER--排序NOCYCLE;--避免重新开始,关闭循环CACHE 10; 你就可以用CURRVAL,...
2016-03-04 11:48:01
123
原创 java开发工具与环境
框架:spring(spring mvc ,spring data, spring integration),hibernate,mybatis.版本控制:svn,git,github,客户端:TortoiseGit编译打包工具 :ant,maven,gradle测试 :junit,mockito,powermock,代码质量管理: sonarqube.Findbug,jaco...
2016-01-15 11:07:03
88
原创 Spring 事务
转载自:http://www.open-open.com/lib/view/open1350865116821.html Spring事务机制主要包括声明式事务和编程式事务,此处侧重讲解声明式事务,编程式事务在实际开发中得不到广泛使用,仅供学习参考。Spring声明式事务让我们从复杂的事务处理中得到解脱。使得我们再也无需要去处理获得连接、关闭连接、事务提交和回滚等这些操作。再也无需...
2015-12-30 16:42:30
60
原创 恢复 git reset -hard 的误操作
转自:http://www.cnblogs.com/mliudong/archive/2013/04/08/3007303.html有时候使用Git工作得小心翼翼,特别是涉及到一些高级操作,例如 reset, rebase 和 merge。甚至一些很小的操作,例如删除一个分支,我都担心数据丢失。不 久之前,我在做一些大动作(rebasing)之前,我总是备份整个版本库,以防万一。直到最近我...
2015-08-03 15:11:50
234
原创 mysql在ubuntu 14.04 安装。
1.添加 MySQL APT 仓库 1.1 下载apt仓库配置文件mysql-apt-config-ubuntu14.04.zip,解压1.2 将下面"/PATH/platform-and-version-specific-package-name" 部分替换为你系统的路径sudo dpkg -i /PATH/platform-and-version-specific-packag...
2015-07-25 17:36:24
70
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人