- 博客(75)
- 资源 (6)
- 收藏
- 关注
转载 金融机构银行架构变迁
银行属于传统的金融行业,银行业随着科技的不断进步和客户需求的不断提升,对银行科技系统的要求也是逐渐提高,而且随着近几年互联网金融的快速发展,传统银行业系统的发展也是非常迅速,本人08、09年最早在外企从事北美银行网银和手机银行的产品开发工作,后来从10年一直到16年一直在大型国有银行从事软件开发和架构设计的工作,16年中从国有银行离开加入互联网电商,做了不到一年因为种种非技术问题离开又回归了银行系统,目前在一家微型民营银行从事产品设计、架构设计的工作。总的来说还是经历了这几年银行系统快速发展的时期,也涉及了
2020-06-23 16:21:32
1488
1
原创 人工智能知识体系梳理
本文将从以下几个角度阐述AI的知识体系:基础算法&模型,NLP,机器学习(深度学习),数据挖掘(大数据处理),开发语言选择,主流第三方库(框架)基础算法首先说说涉及到的基础知识,包括高等数学,线性代数,概率论以及统计学。基础算法有线性回归,逻辑回归,决策树,贝叶斯,神经网络等等。常用算法如下图:注意算法与模型的关系:算法是指一系列解决问题的清晰指令,它代表着用系统的方...
2019-11-27 10:54:41
4033
原创 Btc和Eth的架构及其异同
先看看架构的相同点和不同点。简单来说,都是由底层(网络) 核心层(区块数据结构&共识或者合约&安全) 应用层构成。Btc架构:(1)P2P网络层完成P2P的组网,网络连接管理,节点状态的维护,为比特币提供数据传输服务;(2)安全与共识层这一层主要向上层提供安全与数据共识服务,保证比特币中的交易数据的安全与区块链(账本)的...
2019-11-08 16:01:40
4757
原创 区块链系统简要架构和重点知识点梳理
区块链几大核心:分布式帐本,所需技术:微服务架构,高性能RPC通讯。区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,每一个数据链表可以看作账本。它由多个区块构成了一个有时序的链表,而每个区块里含有多条交易trasaction(缩写为tx)构成的链表。智能合约机制,所需技术:共识算法1. 智能合约:智能合约就是一段代码,一个具体的场景下的应用程序。...
2019-11-06 15:27:22
4537
原创 分库分表解决方案及常用框架
分库分表的经验:第一原则:能不切分尽量不要切分。 第二原则:如果要切分一定要选择合适的切分规则,提前规划好。 第三原则:数据切分尽量通过数据冗余或表分组(Table Group)来降低跨库 Join 的可能。 第四原则:由于数据库中间件对数据 Join 实现的优劣难以把握,而且实现高性能难度极大,业务读取尽量少使用多表 Join。常用框架cobar,mycat,sharding-jdb...
2019-09-26 10:13:13
4007
转载 携程实时大数据平台演进
携程最初基于稳定和成熟度选择了Storm+Kafka,解决了数据共享、资源控制、监控告警、依赖管理等问题之后基本上覆盖了携程所有的技术团队。今年的两个新尝试是Streaming CQL(华为开源)和JStorm(阿里开源),意在提升开发效率、性能和处理消息拥塞能力,目前已有三分之一的Storm应用已经迁到JStorm 2.1上。 今天给大家分享的是携程在实时数据平台的一些实践,按照时间顺
2017-04-26 14:28:51
4975
原创 Redis特性一览
总结一下Redis的特性以及Redis分布式的相关知识1. 单线程2. 支持对象类型丰富StringHash:key对应一个hashmap,类似于Bean的存储ListSetSorted setpub/sub:发布于订阅,适用于实时消息系统Transactions:不完全的事务,但在大多数正常情况下,可以保证一连串的命令是顺序在一起执行的(提供了一个Watch功能,你可以对
2017-03-10 09:13:06
853
转载 分布式系统全链路应用监控系统解决方案
分布式系统越做越大,服服务化规模也越来越复杂,为了减轻运维压力、提高排错能力,分布式系统的全链路监控系统就显得尤为重要了。监控系统通常会包括几个部分:第一, 数据埋点和采集 ,这个相当重要,其实说白了,数据是整个监控系统最核心的部分,必须有能力快速和正确和方便地采集日志,所以我们在数据埋点和采集上做了很多文章。第二, 指标计算 。指标计算有好几种方式,一种我可以在客户端做一些计算,
2016-12-21 14:01:25
6250
转载 CAS-比较&交换并发处理策略
这是一种可以称为基于冲突检测的乐观锁。这种模式下,已经没有所谓的锁概念了,每条线程都直接先去执行操作,计算完成后检测是否与其他线程存在共享数据竞争,如果没有则让此操作成功,如果存在共享数据竞争则可能不断地重新执行操作和检测,直到成功为止,可叫CAS自旋。乐观锁的核心算法是CAS(Compareand Swap,比较并交换),它涉及到三个操作数:内存值、预期值、新值。当且仅当预期值和内存值相
2016-08-25 17:42:13
2931
转载 1号店11.11:从应用架构落地点谈高可用高并发高性能
2. 1号店如何做三高1号店技术部从1个人做起到今天千人级别的规模,系统支持每天亿级的访问量、单Service支持每天亿级的请求、订单支持每分钟几万单级别、Service服务可用性达到99.9999%,架构上也经历了历次演进,今天我们就从应用架构历次演进的落地点谈起。1号店应用架构的演进大致经历了以下历程:强依赖-> Service化->业务解耦->读写分离->异步->水平/垂
2016-06-06 17:39:36
1355
原创 Java基础知识点收集
1. ThreadLocal 内存模型对于多线程资源共享的问题,同步机制采用了“以时间换空间”的方式,而ThreadLocal采用了“以空间换时间”的方式。前者仅提供一份变量,让不同的线程排队访问,而后者为每一个线程都提供了一份变量,因此可以同时访问而互不影响ThreadLocal本质上是一个类似Map的结构,以各个线程对象本身为Key,将其值存放进去。这个结构在所有的基于同一个线程类
2016-06-02 10:34:39
656
转载 Java中“引用”的几种类型
强引用:无论内存是否足够,不会回收。软引用:内存不足时,回收该引用关联的对象。弱引用:垃圾回收时,无论内存是否足够,都会回收。虚引用:任何时候都可能被垃圾回收器回收。在Java中,虽然不需要程序员手动去管理对象的生命周期,但是如果希望某些对象具备一定的生命周期的话(比如内存不足时JVM就会自动回收某些对象从而避免OutOfMemory的错误)就需要用到软
2016-05-28 10:59:56
4605
转载 多租户(数据层的多租户)架构相关资料
多租户(Multi Tenancy/Tenant)是一种软件架构,其定义是:在一台服务器上运行单个应用实例,它为多个租户提供服务。在SaaS实施过程中,有一个显著的考量点,就是如何对应用数据进行设计,以支持多租户,而这种设计的思路,是要在数据的共享、安全隔离和性能间取得平衡。主流的方案是:独立数据库共享数据库、独立 Schema共享数据库、共享
2016-02-16 15:16:08
4141
原创 分布式系统应对雪崩及如何防范数据被非法篡改
最近遇到这两个问题,整理思路如下。应对雪崩通过流控,然后对每秒请求数量的限制,或者线程并发的限制。让系统不雪崩。或者说通过实时的监控平台,发现雪崩的正在形成。然后实时调整参数,避免雪崩。某个业务大概有多少的量其实一般都是比较清楚的,不会超过太多,设置时增加一点的量,给一个数值给它,如果超了,或者达到的报警值,那么就可以查下原因,是真的业务增长了还是的系统出了问题。另外,及时识别和处
2015-02-28 11:45:46
3587
原创 防范XSS攻击
参考:http://www.ibm.com/developerworks/cn/web/wa-vulnerabilities/index.html同源策略所谓同源是指,域名,协议,端口相同。当一个浏览器的两个tab页中分别打开来 百度和谷歌的页面,当浏览器的百度tab页执行一个脚本的时候会检查这个脚本是属于哪个页面的,即检查是否同源,只有和百度同源的脚本才会被执行。因为
2015-01-07 11:55:25
1010
原创 一些基础算法基础编程思维
1. 数组中两个元素相加等于指定数的所有组合(仅用一次循环且不能创建新的数组或者集合)思路:从数组的前后两端(i=0,j=array.lengths)分别利用指针(计数器)来扫描数组,如果满足相加等于目标则打印,否则当sum// 快速寻找满足条件的两个// 数组中两个数的和满足指定结果public class Test{ static int[] arr = {
2014-12-25 13:31:35
1028
原创 HashMap的工作原理-hashcode和equals原理的再次深入
前言首先再次强调hashcode (==)和equals的真正含义(我记得以前有人会说,equals是判断对象内容,hashcode是判断是否相等之类):equals:是否同一个对象实例。注意,是“实例”。比如String s = new String("test"); s.equals(s), 这就是同一个对象实例的比较;等号(==):对比对象实例的内存地址(也即对象实例的ID),
2014-12-21 23:30:12
11688
转载 rabbitmq和redis的集群方案
rabbitmq和redis都是常用的中间件和缓存系统。分别简单记录一下他们的分布式集群方案。以备后用Rabbitmq: 普通集群与mirror queuehttp://blog.youkuaiyun.com/whycold/article/details/19413399Redis:1. 最简单的主从方案:支持master和slave的配置,通过配置文件进
2014-12-16 21:01:54
3924
原创 业务中场景中,调用多个service,事务处理中要注意的问题
在业务层:service中,经常会发生一个操作调用多个service的情况。此时,事务的定义和处理需要注意以下几个关键点:场景描述: 在A类中循环调用B类的 methodB,B类中包含对其他C, D 两个service的调用。1. 如果在A类中仅仅只try,catch B类的methoB方法,如果第二次循环中,methodB抛出异常(methodB没有异常处理),则A类中其他的调
2014-11-27 20:56:38
27461
原创 AJAX的原理-如何做到异步和局部刷新
Overriew: onReadyStateChange被回调函数赋值,则能实现异步调用,回调函数直接操作DOM,则能实现局部刷新。那么XMLHttpRequest的onReadyStateChange如何知道服务ready了呢?状态如何change了呢(观察者模式)?则是通过客户端对服务的状态询问(定期轮询)所实现的。参考:http://www.cnblogs.com/mingmingr
2014-03-26 23:19:14
39344
2
转载 零拷贝
很多 Web 应用程序都会提供大量的静态内容,其数量多到相当于读完整个磁盘的数据再将同样的数据写回响应套接字(socket)。此动作看似只需较少的 CPU 活动,但它的效率非常低:首先内核读出全盘数据,然后将数据跨越内核用户推到应用程序,然后应用程序再次跨越内核用户将数据推回,写出到套接字。应用程序实际上在这里担当了一个不怎么高效的中介角色,将磁盘文件的数据转入套接字。数据每遍历用户内核一
2014-02-26 20:55:15
1525
原创 Zookeeper学习资料收集与整理
Zookeeper的几个核心术语:Znode, Watcher,ZK事件通知的延时,Leader Election:也就是选出一个 Master Server。和前面的一样每台 Server 创建一个 EPHEMERAL 目录节点,不同的是它还是一个 SEQUENTIAL 目录节点,所以它是个 EPHEMERAL_SEQUENTIAL 目录节点。之所以它是 EPHEMERAL_
2014-02-18 10:25:34
1994
原创 系统测试
使用loapUI 建立测试case,加载sopaui的业务测试(soap request),loadui相当于 integration,配置各种测试方案(增量,请求数,对服务器发请求的负载方式) soapui是具体的测试单元(业务)性能测试(performancetest)对确定系统运行特性的性能指标测试,如数据吞吐量,响应时间,CPU使用率等•验证测试:
2014-01-30 15:30:07
1077
转载 移动互联网应用-架构思考
对于移动互联网应用,他所涉及到的架构难点和传统互联网有些不一样。比如,Instagram的架构:http://blog.sina.com.cn/s/blog_56c9b55c0101195u.html 以及 http://www.poluoluo.com/jzxy/201105/134258.html简单的总结就是,移动应用的整体架构,主要考虑以下几个方面:1. 消息推送: andro
2014-01-26 14:49:56
1565
转载 java多线程中的异常处理 - 异常处理在多线程中的原则
在java多线程程序中,所有线程都不允许抛出未捕获的checked exception,也就是说各个线程需要自己把自己的checked exception处理掉。这一点是通过java.lang.Runnable.run()方法声明(因为此方法声明上没有throw exception部分)进行了约束。但是线程依然有可能抛出unchecked exception,当此类异常跑抛出时,线程就会终结,而对
2014-01-17 14:23:29
996
转载 Java性能调优
http://www.cnblogs.com/redcreen/archive/2011/05/04/2037057.html调优步骤:衡量系统现状、设定调优目标、寻找性能瓶颈、性能调优、衡量是否到达目标(如果未到达目标,需重新寻找性能瓶颈)、性能调优结束。寻找性能瓶颈性能瓶颈的表象:资源消耗过多、外部处理系统的性能不足、资源消耗不多但程序的响应速度却仍达不到要求。
2013-12-27 13:34:17
971
转载 Twitter所使用的开源项目
以下是Twitter所使用的开源项目,简要浏览之后,我觉得是一个很好的关于分布式架构,大数据,异步网络传输(客户端,服务端)学习的list,做个备份,以便后用。1. 分析和搜索服务Twitter的搜索服务每天支持超过10亿次的查询,其背后的开源项目包括:Apache Cassandra:一套分布式NoSQL数据库系统,以Amazon专有的完全分布式的Dynamo为
2013-12-10 13:37:58
6199
转载 Http Basic Authentication 与 ws-security: 加密,签名,证书等
HTTP Basic Authentication, 基于HTTP规范的认证方式,username和password会以base64加密后存入header的Authentication.reference: http://zh.wikipedia.org/wiki/HTTP%E5%9F%BA%E6%9C%AC%E8%AE%A4%E8%AF%81spring security的实现: htt
2013-11-29 09:56:57
2321
转载 activeMQ 点对点以及发布与订阅 - 以及spring的整合&集群方式
activeMQ 点对点消费者生产者示例ActiveMQConnectionFactory connectionFactory = new ActiveMQConnectionFactory("tcp://10.10.40.174:61616"); Connection connection = null; Session session = null;
2013-11-15 11:38:01
9077
原创 分布式事务会面临的问题
spring JTA对于A这边,timeout的事务,A系统会做记录,然后轮询B系统,是否那边也是失败的,如果是失败的。则不管,若是成功的,则通知管理员,手动把A系统对应的状态,改回来
2013-11-13 23:23:04
5501
转载 Java线程池使用
1. 为什么要用线程池? 在Java中,如果每当一个请求到达就创建一个新线程,开销是相当大的。在实际使用中,每个请求创建新线程的服务器在创建和销毁线程上花费的时间和消耗的系统资源,甚至可能要比花在实际处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个JVM中创建太多的线程,可能会导致系统由于过度
2013-11-13 13:09:06
3587
转载 平衡二叉树
平衡因子的计算方式:某个节点的平衡因子就是那个节点左子树的高度减去右子树的高度比如A节点的因子就是它左边的子树的高度,这里是3,减去右子树的高度,这里是2,所以=1对于B节点,左子树高度为1,右边为2,所以1-2=-1就是B节点的平衡因子平衡二叉树(Balanced binary tree)是由阿德尔森-维尔斯和兰迪斯(Adelson-Velskii and L
2013-10-10 17:54:51
1909
转载 java实现二叉树算法 - 查找
构造树如下:其中二叉树节点类/** 二叉树节点 */public class BTNode { private char key; private BTNode left, right; public BTNode(char key) { this(key, null, null); } pub
2013-10-09 14:54:33
4785
转载 JVM 垃圾回收算法介绍
主要思考 引用计数的缺点 和 效率较高的分代收集算法:新生代采用标记—复制算法,老年代采用标记—整理算法。在说垃圾回收算法之前,先谈谈JVM怎样确定哪些对象是“垃圾”。1.引用计数器算法:引用计数器算法是给每个对象设置一个计数器,当有地方引用这个对象的时候,计数器+1,当引用失效的时候,计数器-1,当计数器为0的时候,JVM就认为对象不再被使用,是“垃圾”了。引用计数器实现
2013-10-09 14:40:08
801
转载 再一次 - Java的引用传递与值传递
传值意味着传的是副本,不会改变被传递对象本身。传引用既是传内存地址,如果传递的对象发生了改变,那么被传递的对象也将改变(所有某些场景需要深拷贝)1、对象是按引用传递的,原始数据类型是按值传递的2、Java 应用程序有且仅有的一种参数传递机制,即按值传递,如果对象被当作参数传递,外部对象(实参)不变,函数内容的对象(实参)会变以代码下来证明3,4,哪一个是正确
2013-09-30 16:50:12
995
原创 spring security - 登录成功后不redirect
spring 的AbstractAuthenticationProcessingFilter提供了AuthenticationSuccessHandler,以便于登录成功之后的处理。但是当项目的UI端和后台服务端是完全分离的情况下,Server端不应做任何URL的指定,只告诉UI登录成功与否即可。但是如果使用默认的AuthenticationSuccessHandler实现,登录成功后会自动跳
2013-08-20 16:39:57
4284
线程安全测试类
2013-10-08
在Android上实现Iphone风格 bottom tab + title bar
2012-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人