- 博客(51)
- 资源 (3)
- 收藏
- 关注
原创 [欠下的支付清算知识博客]-有空更新20190822
一,支付的核心-简明账户体系设计1.1 复式记账法复试记账简介充值提现转账资金流1.2 会计科目设置银行存款与客户资金共同损益类充值提现转账涉及的会计科目1.3 分布式事务与单机事务分布式事务单机事务1.4 单机事务异步化实现思路二,支付的后端-清结算与资金核对2.1 结算体系结算依据结算数据源结算处理过程实时与批量结算2.2 核对方法2.2.1 业务核对方...
2019-08-22 16:03:43
304
原创 2017实习生面试经历
前言5个月没发博客了,今天开始正式启航!!!!!实习生的面试已经告一段落了,回想,这一个多月的面试经历,实在是令我感慨万千,多准备一点再出发,这样感觉会比较好。面试了不少公司了,以时间顺序分别是阿里,美团,招行信用卡中心,腾讯,和京东。以下均为本人经历,不带假话,时间久远,可能不尽详细吧。阿里巴巴 ,共2面,惭愧 本身作为一名程序员,写了比较多的java,对阿里巴巴还是挺向往的,没过,对自己的一种
2017-05-02 15:53:18
2441
3
原创 基于JDK和CGLib的链式动态代理
动态代理与链式动态代理 链式代理就是将多个代理串链在一起,一个一个的去执行,执行的顺序取决于链上的先后顺序。JDK的动态代理只能代理实现了接口的类实例,而CGLib则可以代理普通的类实例。执行链式代理的样子大概如下图所示:这很像Spring Aop的前后增强,实际上我也是基于这个想到,如果增强有多个,那么就是链式动态代理的样子了。好像Filter也是这样的,Node.js中如Express的中间件
2016-12-29 11:19:06
1129
原创 Servlet工作原理摘要
Servlet容器是如何工作的Context容器直接管理Servlet的包装类WrapperTomcat public addWebapp() {创建Context(StandardContext),ConextConfig配置}ContextConfig:负责完成整个Web应用的配置文件解析工作ContextConfig的init:{创建用于解析XML的contextRegister对象。读取默
2016-12-28 16:00:20
1024
原创 JVM内存管理基础
一个Java进程的哪些部分需要分配内存Java堆 用于存储Java对象的区域,需要分配内存,堆大小在JVM启动时就向操作系统申请了。通过-Xmx和-Xms来控制大小,前者表示最大的堆的大小,后者表示初始化的堆的大小。 JVM管理着堆内存,对象创建由应用程序控制,而对空间的释放由GC垃圾收集器来完成。根据GC算法的不同,回收的时机也不尽相同。线程 JVM运行程序的实体就是线程。所以需要一
2016-12-14 16:05:20
573
原创 深入分析ClassLoader工作机制
ClassLoader 较为深入分析。from <深入分析Java Web>加载CLASS到JVM中,审查每个类应该由谁加载,父优先的等级加载机制。加载机制ClassLoader类结构分析ClassLoader抽象类,有很多子类,一般在实现自己的ClassLoader时候,一般都会继承URLClassLoader这个子类,因为这个类已经实现了大部分的工作,就像Servlet通过会直接HttpServ
2016-12-10 00:26:49
4327
4
原创 Future模式的简单实现
Future模式的简单实现From 《Java 高并发程序设计》 Future模式,核心思想是异步调用,就是当调用一个方法时,这个函数可能执行得很慢,就需要等待,但是有时候并不着急要这个结果,所以选择不去傻傻等待,而是做其他的事情。就好比”双十一”购物,你买到了想要的东西,那么你不可能等待它到货,然后才做另一件事情,你可能想继续购物其他的商品。而对于已经购买得商品,会生成一个订单,你只需要等待这个
2016-11-29 15:31:03
1523
原创 SkipList A Probabilistic Alternative to Balanced Trees
Skip Lists: A Probabilistic Alternative to Balanced Trees写博客,顺便看了一篇论文,也是挺好的。其实这篇博客我一直想写,但是怕写不好,没什么勇气。 跳跃表是一种可以用来替代平衡树的数据结构,因为它使用的是基于概率选择而不是严格平衡的方法,导致了在跳跃表中,插入和删除变得更加简单,速度明显变快。 跳跃表大概长这个样子,由图可以看出,是一种空间
2016-11-27 12:20:54
1986
原创 Java并发基础<2>
Volatile 变量的声明11/21/2016 7:21:53 PM From 《高并发程序设计》volatile 保证一个线程修改变量之后,另一个线程能看到这个改动。 声明一个volatile变量相当于告诉虚拟机,这个变量的值极有可能被修改,为了确保该变量能被应用程序的所有线程访问看到,需要用volatile去声明,在本人所学的Linux C中,定义的volatile变量意味着不对这个变量去
2016-11-21 21:09:43
878
1
原创 Java并发基础<1>
java内存模型基本概念原子性:32位机器中long型的读写是不具有原子性的。可见性:在并行关系中,当一个线程修改了某一共享变量的值时,其他的线程是否能立即知道这个修改。就比如CPU1 存在共享变量t的cache值,而CPU2修改了t的值,而CPU1还是直接从cache处取值,数据不一致。,产生可见性的问题。(指令重拍以及编译器优化都可能产生这个问题.)有序性: 就是执行时候,代码排在前的后执
2016-11-19 17:36:34
760
原创 Https双向证书申请
生成服务端证书执行keytool -genkey -keyalg RSA -dname "cn=localhost,ou=sango,o=none,l=china,st=beijing,c=cn" -alias server -keypass password -keystore server.jks -storepass password -validity 3650在D盘生成server.jks
2016-11-15 14:54:21
963
原创 JSQLParser源码分析之CreateTable
源码地址 https://github.com/JSQLParser/JSqlParser源码分析ColDataType 列数据类型有2个属性:String dataType 标识数据类型List argumentsStringList 类型参数例如 `user_num` VARCHAR(50) NOT NULL COMMENT '用户编号'中的 VARCHAR(50) NOT NUL
2016-11-12 11:13:29
4404
原创 事务处理及锁定
摘自《MYSQL高效编程》,根据自身需要,将一些重要的知识总结致此。Mysql 存储引擎: 默认高速存储引擎为MyISAM,不支持事务处理。如果要使用事务处理功能,必须将表设置为使用InnoDB引擎。 具体如何设置为InnoDB引擎CREATE TABLE sys_users ( `id` INT NOT NULL PRIMARY KEY AUTO_INCREMENT COMMENT '主键
2016-11-09 16:52:14
994
原创 JavaCC中扩展的正规表达式
From 《Compiler Construction Using Java ,JavaCC ,Yacc》 在JavaCC使用的扩展正规表达式中,字母表中的符号或这些符号的串括在双引号中。如表示 “b”或者“c”的表达式是 "b"|"c"其中竖线表示联合操作 而"b|c"只表示一个串”b|c”,因为竖线被包含在引号中,不属于联合操作。 在javacc扩展正规表达式中,可以
2016-10-31 20:01:09
1196
原创 JavaCC详解 绝对干货
考虑到在CSDN,没有搜索到很多关于javacc的东西,绝对干货。javacc概述javacc概述 JavaCC 是一个词法分析生成器和语法分析生成器。 词法分析和语法分析是处理输入字符序列的软件构件, 编译器和解释器协同词法分析和语法分析来“解密” 程序文件。 javacc的获取:https://java.net/projects/javacc/downloads从此处下载了javacc 5.
2016-10-29 12:47:39
20799
3
原创 Leetcode之SingleNumber I/II/III
Single Number I题解https://leetcode.com/problems/single-number/Single Number Given an array of integers, every element appears twice except for one. Find that single one.相同的数异或为0。 0和任何数异或都为这个数。 所以 全
2016-10-20 22:29:18
726
原创 前缀树及应用两数异或Leetcode之 Maximum XOR of Two Numbers in an Array
题目 前缀树题目地址:https://leetcode.com/problems/implement-trie-prefix-tree/ 题目地址:https://leetcode.com/problems/maximum-xor-of-two-numbers-in-an-array/ 421. Maximum XOR of Two Numbers in an Array Ques
2016-10-18 22:08:26
2392
原创 Leetcode之CoinChange
题目题目地址 https://leetcode.com/problems/coin-change/ You are given coins of different denominations and a total amount of money amount. Write a function to compute the fewest number of coins that you
2016-10-17 09:58:34
652
原创 实现一个简单的类加载器
功能 用来加载某包下的所有类,比如使用了某些注解的所有类,比如所有的@Service,或者Controller类 实现类加载器的3个功能获取类加载器根据类名称加载类获取指定包下的所有类获取类加载器 获取类加载器的实现非常简单,简单到只需要一句话,获取当前线程的ClassLoader即可。 /** * 获取类加载器 * * @retur
2016-10-16 16:35:02
1547
原创 华为Oj--识别有效的IP地址和掩码并进行分类统计
华为机试题识别有效的IP地址和掩码并进行分类统计题目描述题目描述请解析IP地址和对应的掩码,进行分类识别。要求按照A/B/C/D/E类地址归类,不合法的地址和掩码单独归类。所有的IP地址划分为 A,B,C,D,E五类A类地址1.0.0.0~126.255.255.255;B类地址128.0.0.0~191.255.255.255;C类地址192.0.0.0~223.255.255.255;D类地址2
2016-10-13 10:10:21
1695
原创 window下备份数据库到LinuxFTP服务器上并自动删除7天前数据备份文件
开启Windows任务计划程序 附件->系统工具->任务计划程序 打开后创建一个任务,并制定要运行的批处理文件为D:/backup/ftp.bat,设定每天运行时间,不是主要内容,不详细描述。安装LinuxFTP服务器也不是主要内容,本人是照着以下教程实现的http://jingyan.baidu.com/article/67508eb4d6c4fd9ccb1ce470.html能否访
2016-10-13 09:38:05
1726
原创 Base64编码的原理与Java实现
Base64原理编码原理 编码原理:将3个字符转换成4个字符((3X 8)=24字节=(4X 6)) ,取输入流中的3个字节,每次取6位(共4次),以此6位值做索引去查表,输出相应的字符。 如果输入流中字符不是3的倍数,最后结果缺的就以”=”填充(输入流中最后只剩1个字符就填2个=;剩2个就填1个=)alphabet[]=”ABCDEFGHIJKLMNOPQRSTUVWXYZabcde
2016-10-07 20:59:36
1728
原创 2016/9/9阿里笔试编程题-字符串的查找替换
题目 对于输入的字符串,我们需要完成的任务是从左到右扫描字符串,如果存在由三个以上(包括三个)连续相同字符组成的子串,就将这个子串从原串中去掉,并将原串剩下的部分拼接到一起。重复上述过程,直到无法去掉任何子串示例inputAAABCCDDDCBAABBBABBBAoutputBBACode/** * Created by bamboo on 2016/9/9. */public cl
2016-09-09 22:26:44
2946
3
原创 Bloom Filter --海量数据过滤的发动机
Bloom Filter 布隆过滤器部分内容参考这位大神的http://blog.csdn.net/hguisu/article/details/7866173 在保证一定高效空间效率和一定的出错率的前提下判断元素是不是集合中的成员。而存在的错误只可能存在于元素位于集合中, 对于元素不存在集合中的情况是不会产生错误的情况的。由于存在一定的可能低错误,则不适用于“0错误”的场合。介绍 如果存在上百
2016-09-05 21:42:16
670
原创 Leetcode之 largest divisible set
题目题目地址 :https://leetcode.com/problems/largest-divisible-subset/题意解析给定一个数组,这个数组数唯一且为正数,求在这个数组中,满足能整除的最大集合。求解很自然地想到用动态,因为满足重叠子问题和最优子结构 重叠子问题:整个数组的最大集合,可以认为是多个子问题组成的 最优子结构:反证法,显而易见。 定义最优解:最大集合是什么。定义最优解
2016-08-13 14:23:28
725
原创 Leetcode 之Search a 2D Matrix
题目https://leetcode.com/problems/search-a-2d-matrix/题意解析在二维数组中找一个数,这个二维数组满足2个特性同一行中的数字右边的比左边的大。下一行的第一个数比上一行的最后一个数大。求解应该找到这样的一个点,使得这样一个点和target数比较的时候如果小于只能是在其左边找,大于则只能在其下方找,想找这样的理由是根据二维数组的特性得到的。如果是从第一
2016-08-12 10:58:57
421
原创 Leetcode之Unique Paths II
题目 题目地址:https://leetcode.com/problems/unique-paths-ii/题意解析题目的意思还是求路径,不过路径中会存在阻碍,阻碍的位置将不能通过。这个是和前一个问题中不一样的地方,也因为这样,难度升高了一点点。求解定义最优解:最优解为从原点出发的所有路径。 定义最优解的值:这样的路径有多少个。递归式表示最优解的值:f[i,j] 表示从[0,0]出发到[i,j
2016-08-11 11:16:38
358
原创 Leetcode 之 Unique Paths
题目 原题目地址:https://leetcode.com/problems/unique-paths/ 题意解析题目的意思是给定一个二维数组网格,从原点(0,0)出发到达最末尾总共有几种路径做法,每次操作的时候只能向右或者向下。 一看到题意 就让我很自然地想到了动态规划,DP问题需要满足2个条件:重叠子问题和最优子结构 其中重叠子问题:显然满足情况。最优子结构:也满足,可以用反证法。定
2016-08-10 21:43:29
538
原创 Leetcode 之 Insert Delete GetRandom O(1)
题目Design a data structure that supports all following operations in average O(1) time.insert(val): Inserts an item val to the set if not already present.remove(val): Removes an item val from the set
2016-08-09 18:32:25
1307
原创 Leetcode之Search for a Range
Search for a Range 题目Given a sorted array of integers, find the starting and ending position of a given target value. Your algorithm’s runtime complexity must be in the order of O(log n). If the targ
2016-08-07 23:33:38
920
2
原创 Java UDP编程实例
总序在学习UDP的编程 虽然可能在实际项目上用不到,但是并不影响我学习。由于时间原因 先贴出代码,后续的解释在未来修改添加UDP客户端UDP服务器端UDP客户端package UDPTest;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import jav
2016-06-28 23:04:09
1300
原创 Three.js中的纹理Texture
总序有了材质,总想让它更好看点,像我最近做的一个小“代码情书”的demo。不仅仅将照片纹理添加到方块网格中,而且还将这些方块组成一个球体,下面LOVE四个按钮,可以转换成不同的效果,有照片墙,照片环等。 -ImageUtils.loadTexture:从指定位置加载图片文件,文件格式可以是PNG,GIF或JPEG文件。ImageUtils.loadTexture2个很关键的值得注意的点:这个
2016-05-22 15:11:49
29485
4
原创 THREE.JS中常用的3种材质
总序材质和几何体构成网格,决定几何体是否像金属,透明与否,已经是否显示成线框。MeshBasicMaterial:对光照无感,给几何体一种简单的颜色或显示线框MeshLambertMaterial:这种材质对光照有反应,用于创建暗淡的不发光的物体MeshPhongMaterial:这种材质对光照也有反应,用于创建金属类明亮的物体材质的共有属性材质虽然可能有不同的分类,但是都是材质啊,还是有共
2016-05-15 16:26:01
29912
1
原创 THREE.JS中常用的4种光源
总序如果没有光源,就不可能看到任何渲染结果。AmbientLight: 环境光,基础光源,它的颜色会被加载到整个场景和所有对象的当前颜色上。PointLight:点光源,朝着所有方向都发射光线SpotLight :聚光灯光源:类型台灯,天花板上的吊灯,手电筒等DirectionalLight:方向光,又称无限光,从这个发出的光源可以看做是平行光.AmbientLight=>影响整个场景的光
2016-05-08 22:58:12
12930
原创 Threejs场景中的基本组件
总序相机:决定哪些东西将要在屏幕上渲染 光源:决定对材质会如何显示和生成阴影的使用 物体: 相机中被渲染的对象Scene场景的几个方法Scene.add(object);//往场景中添加物体Scene.remove(object);//场景中去除物体Scene.children;//Scene的子对象列表;数组吧,包括相机和光源Scene.getChildByName()//通过物体的n
2016-05-07 21:43:50
7865
原创 利用Three.js构建粒子系统
THREE.JS本文假设读者已经了解了Three.js是什么样的库,如果不了解,请看 https://github.com/mrdoob/three.js 作为一个优秀的开源项目,应该广而告之。粒子系统粒子系统指的是,通过创建很多细小的物体,用来模拟雪花或者雨滴的系统。 本文用到的js文件都可以在 https://github.com/josdirksen/learning-threejs
2016-04-24 21:24:01
7353
2
原创 npm模块corn源码分析
About cornnpm地址:https://www.npmjs.com/package/cron 用途:如Linux系统有一个定时执行任务的工具cron,cron作者实现了类似的功能。使用这个模块简单实用/** * Created by bamboo on 2016/4/15. */var cronJob = require('cron').CronJob;var job1 = ne
2016-04-15 21:52:29
2205
原创 一个支持事件event的自定义EventTarget类型
EventTarget关键字:自定义的类型,支持事件 实现此EventTarget的目的是为了更好地理解事件event的实现机制。要实现这个机制,就应当实现几个主要的接口分别是addListener:根据监听事件的类型,添加listener函数,对于监听同一事件的所有listener函数,应该在监听到事件的时候执行所有的listener函数,故简单地将这些listener放在一个数组中。rem
2016-04-12 17:19:19
2698
原创 npm模块generic-pool源码分析
About generic-poolgithub地址:https://github.com/coopernurse/node-pool description: Generic resource pool. Can be used to reuse or throttle expensive resources such as database connections. 由此可以看出,该模块是
2016-04-11 17:16:42
7185
2
原创 使用nodemailer发送邮件
使用nodemailer发送邮件https://github.com/nodemailer/nodemailer nodemailer源码的位置/** * Created by bamboo on 2016/4/5. */var nodeMailer = require('nodemailer');var user = '244553933@qq.com',//见笑本人的邮箱 pas
2016-04-05 15:33:46
863
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人