原名:《新形势下的商业一线经营之三:资产业务转型篇――以业务为例》作者:初理想,西泽研究院特约研究员,供职于(,)北京分行投行部微信:
本文逻辑:一、新经济、新经济客群二、为什么要发展新经济业务三、标准和效果:怎么才是成功的发展新经济业务四、成功推进新经济业务的组织路线五、成功推进新经济资产业务的操作路线(战术)(正文约2万字,阅读时间约45分钟,请耐心阅读,亦可先分享或)
从一个人,到一个国家,如果不能克服“寻求眼下最舒服姿势”(熵增)这一低层次本能,不能承认外部现实和展望未来,调配内部和争取外部资源转型,为之投资,为之创新(创新就必然要承担一定风险,对此一种“理性”的做法是避免投资创新),到头来一定会承担最大的不理性风险――对于未来什么都不做的风险(包括只是表面在做),无法逆转地走向混乱、消逝。
处于市场竞争环境中,不盈利就会泡沫化、边缘化直到消失的企业,更是如此。乐观一些,即使一些特殊行业尚不会消逝(不代表其中一些企业不会),其中存活下来的企业也会被边缘化,盈利停滞,相对于时代增长红利,其职工收入却持续下降。典型的如电信运营商,从固话、2G时代的舞台中心和躺赢,到网时代的陪练,这些当年看似最有条件大发展的企业,并没有享受到移动的丰沛红利,其职工们也从当年的高收入群体变为了普通白领。众多银行从业者中,是否相当多的人已有了类似感受?
“有牙没豆,有豆没牙”是常见现象,走出舒适区的转型,需要抓住时间窗口。在国内商业银行身上是否也会/也已经出现,有冗余资源条件转型的时候动力不足,有足够动力的时候,就要/已经没有资源条件了?
如何转型?转型需要付出巨大的人力、制度和风险成本,背后是多方格局的博弈。“一将难求”的银行高管,既要有动力,还要有能力,既要有意愿意志,还需要各类资源支持;既要有理论框架,还要有基层经验;既要调整存量(会触动既有格局),还要培育新生力量;既要引导对外业务发展,还要重塑内部组织。
“行有不得者皆反求诸己”。商业银行要活下去,将来活得好,现实转型目标,概括起来需要做两方面工作:一是要梳理挖掘已有的和潜在的(包括外部可得的)人、财、物、科技、组织流程等经营资源,和对应着的人力、计财、网点、IT、组织机制等管理资源,进行战术创新、战略升维;二是更重要的,要在组织认识和文化管理上着力,才能保证战术创新、战略升维执行落地,真正实现战略转型。近些年来,国内银行在科技、产品方面做了很多创新,但组织管理方面的进化不足,结果就是对市场需求(已不限于金融服务)的实际供给,跟不上经济转型的现实需要――“金融供给侧改革”反映在银行内部的重大意义即在于此。
体制庞大的银行转型,必然伴随着经营思想、发展理念、风险文化的变革。思想认识提高,内心认可,才可能真的实施落地。因此,真正的务实,恰恰要从提高认识理念和认同深层逻辑开始。同时,一个建立在现实条件上的清晰操作方案,除了能为行动提出指引外,反过来还会促进人们对相应认识理念和深层逻辑的认可――这正是本系列研究想做的。
本系列研究是在理解我国商业银行一线经营现状和现实约束条件的基础上(注定无法摆脱的既有资源禀赋、文化形态,和路径依赖),结合现实提出的接近操作层面的建议方案。意图助力现阶段的商业银行能以较少的时间、成本,向5G、AI时代的现代商业银行转型升维(不是升级)。
本篇为五篇系列文章的第三篇。五篇分别为《新形势下的商业银行一线经营之一:组织管理篇――人的组织和领导》《…之二:风险组织篇――对风险管理的管理》《…之三:资产业务转型篇――以新经济业务为例》《…之四:资产业务技术篇――债权业务、股权投资》《…之五:业务升维转型篇――客户平台,高频生态》。
感谢领导同事在工作中的教授启示,感谢赵建教授系列文章提出问题的启发。
01新经济,新经济客群
本文的新经济,指“三新”经济。
根据国家统计局权威口径{国统字〔2018〕111号-新产业新业态新商业模式统计分类(2018)},“三新”经济即国民经济中涉及“新产业、新业态、新商业模式”的生产经营活动的集合。跨第一二三产业,其中重点反映先进制造业、互联网+、创新创业、跨界综合管理等,涉及244个细分行业,可分为9大类:现代农林牧渔业、先进制造业、新型能源活动、节能环保活动、互联网与现代服务、现代技术服务与创新创业服务、现代生产性服务活动、新型生活性服务活动、现代综合管理活动。
(1)新产业,指应用新科技成果、新兴技术而形成一定规模的新型经济活动。具体表现为:一是新技术应用产业化直接催生的新产业;二是传统产业采用现代信息技术形成的新产业;三是由于科技成果、信息技术推广应用,推动产业的分化、升级、融合而衍生出的新产业。
(2)新业态,指顺应多元化、多样化、个性化的产品或服务需求,依托技术创新和应用,从现有产业和领域中衍生叠加出的新环节、新链条、新活动形态。具体表现为:一是以互联网为依托开展的经营活动;二是商业流程、服务模式或产品形态的创新;三是提供更加灵活快捷的个性化服务。(3)新商业模式,指为实现用户价值和企业持续盈利目标,对企业经营的各种内外要素进行整合和重组,形成高效并具有独特竞争力的商业运行模式。具体表现为:一是将互联网与产业创新融合;二是把硬件融入服务;三是提供消费、娱乐、休闲、服务的一站式服务。
第二三产业中,相关的行业维度统计口径,还包括下述四个:
一是高技术制造业,有6大类{国统字〔2017〕200号-高技术产业(制造业)分类(2017)}:医药制造,航空、航天器及设备制造,电子及通信设备制造,计算机及办公设备制造,医疗仪器设备及仪器仪表制造,信息化学品制造。
二是高技术服务业,有9大类{国统字〔2018〕53号-高技术产业(服务业)分类(2018)}:信息服务、电子商务服务、检验检测服务、专业技术服务业的高技术服务、研发与设计服务、科技成果转化服务、知识产权及相关服务、环境监测及治理服务和其他高技术服务。
三是战略性,有9大领域{国家统计局令第23号-战略性新兴产业分类(2018)}:新一代信息技术产业、高端装备制造产业、新材料产业、生物产业、汽车产业、新能源产业、节能环保产业、数字创意产业、相关服务业等。
四是知识产权(专利)密集型产业,有7大类{国家统计局令第25号-知识产权(专利)密集型产业统计分类(2019)}:信息通信技术制造业,信息通信技术服务业,新装备制造业,新材料制造业,医药医疗产业,环保产业,研发、设计和技术服务业等。
国家统计局2019年7月28日公布数据显示,“三新”经济已经成为我国经济的重要部分。2018年“三新”经济增加值相当于GDP的比重为)
往期精彩推荐赵建:银行是如何逐渐丧失转型动力的对话文一教授:后工业化时代需要什么样的国家能力赵建:从两条主线看百年未有之大变局下的业
本文首发于微信公众号:西泽研究院。文章内容属作者个人观点,不代表和讯网立场。投资者据此操作,风险请自担。
(责任编辑:张洋 HN080)
序:很久没写博客啦,各项事情尘埃落定,先输出一波之前找工作时候记录的一些东西
同步 IO 进行 IO 操作时会阻塞进程。IO 操作分两个阶段(数据准备和拷贝数据),阻塞 IO 是这两步都阻塞,非阻塞 IO 是数据准备阶段,不会阻塞进程。数据准备完成后,进程主动在此调用 recvfrom 函数将数据从内核拷贝到用户内存
相当于用户进程将 IO 操作整个交给内核去完成,内核会返回事件完成通知。在此阶段,用户进程不需要检查 IO 操作状态,也不需要主动拷贝数据,用户进程完全没有阻塞
ACID特性,原子性、一致性、隔离性、持久性
一致性是指事务使得系统从一个一致的状态转换到另一个一致状态。这是说数据库事务不能破坏关系数据的完整性以及业务逻辑上的一致性
多个事务并发访问时,事务之间是隔离的,一个事务不应该影响其它事务运行效果。这指的是在并发环境中,当不同的事务同时操纵相同的数据时,每个事务都有各自的完整数据空间。由并发事务所做的修改必须与任何其他并发事务所做的修改隔离
持久性,意味着在事务完成以后,该事务所对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。即使出现了任何事故比如断电等,事务一旦提交,则持久化保存在数据库中
通过加锁保证同一行数据更新串行,避免提交丢失。
通过MVCC保证事务内读一致性。
通过隔离模式实现不同级别下的隔离性。
通过锁和MVCC实现隔离模式下的读写并行。
实际上堆空间也有可能占用
感觉从内存上讲没好处,看需求把,是否需要改那个数。
1,引用实际是通过指针实现的。
2,引用是一个常量指针。
3,引用在内存中占4个字节。
4,在对引用定义时,需要对这个常量指针初始化。
5,因为在在表达式中,使用引用实际上就像使用变量本身一样,所以直接用sizeof是得不到引用本身的大小的。
简单介绍,协议细节和包含了什么
请求方法 URL 版本协议
版本协议 状态码 状态码描述
vector内存结构,扩容缩容
string扩容缩容,连续的
优先级队列,以vector为存储结构的堆
一个接口,根据调用的对象不同产生不同的结果
通过参数列表的不同实现根据输入参数类型不同选择对应的函数
重载是相同函数名,但函数的参数不能完全相同。重写是指派生类改写基类虚函数的函数体
对齐与不对齐的访问内存区别
小端(先存小的) 数值高位 放在内存低位
string有字节序的说法吗
没有,字节序是指byte的排序,string里面都是char,一个char就是1字节
只要出现索引的地方,一定是索引越大地址越大
慢启动和快重传的触发条件
怎么区分是网络的原因(连发3次ack说明丢包)
对着tcp的可靠传输方法改
进程重启如何读到之前的东西(比如本来有个map,重启后继续读到)
红包算法,3个人抢5块的红包,每个人不能超过2块
先每人分2块,再加权取随机数按比例加权扣一元
进程调度:记录系统中的所有进程的状态、优先级数和资源的需求情况确定调度算法,决定将 CPU 分配给哪个进程多少时间分配处理机给进程,进行 CPU 现场的保护和移交
进程调度算法:先来先服务调度算法、短作业优先调度算法、非抢占式优先级调度算法、抢占式优先级调度算法、高响应比优先调度算法、时间片轮转法调度算法
这种算法的思想和队列是一样的,OS维护一个当前在内存中的所有页面的链表,最新进入的页面在尾部,最久的在头部,每当发生缺页中断,就替换掉表头的页面并且把新调入的页面加入到链表末尾。
一种合理的改进,称为第二次机会算法。即给每个页面增加一个R位,每次先从链表头开始查找,如果R置位,清除R位并且把该页面节点放到链表结尾;如果R是0,那么就是又老又没用到,替换掉
最理想的状态下,我们给页面做个标记,挑选一个最远才会被再次用到的页面。当然,这样的算法不可能实现,因为不确定一个页面在何时会被用到。
系统为每一个页面设置两个标志位:当页面被访问时设置R位,当页面(修改)被写入时设置M位。当发生缺页中断时,OS检查所有的页面,并根据它们当前的R和M位的值,分为四类:
编号越小的类,越被优先换出。即在最近的一个时钟滴答内,淘汰一个没有被访问但是已经被修改的页面,比淘汰一个被频繁使用但是“clean”的页面要好。
最近最少使用,简单来说就是将数据块中,每次使用过的数据放在数据块的最前端,然后将存在的时间最长的,也就是数据块的末端的数据剔除掉这就是 LRU 算法
TCP/IP协议并不完全符合OSI 标准定制的七层参考模型,它采取了四层的层级结构
网络接口层:接收IP数据包并进行传输,从网络上接收物理帧,抽取IP 转交给下一层,对实际网络的网络媒体的管理,定义如何使用物理网络 ,如以太网。
网际层IP: 负责提供基本的数据封包传送功能,让每一块数据包都能打到目的主机,但不检查是否被正确接收,主要表现为IP协议
传输层:在此层中,它提供了节点的数据传送,应用程序之间的通信服务,主要是数据格式化,数据确认和丢失重传等。主要协议包括TCP和UDP
应用层:应用程序间沟通单层,如万维网(WWW)、简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等
Ping 是一个应用程序,是基于 ICMP 协议实现的。ICMP 协议是位于 IP 层的一个协议。它是 TCP/IP 协议族的一个子协议,用于在 IP 主机、路由器之间传递控制消息。
Ping 命令的基本原理?答:ICMP,发送主机发送 echo 请求,接受主机回复 echo 报文
Ping 的如果是域名,还要先经过 DNS 解析
因为要考虑到一个服务器通常会连接多个客户端,因此由用户在应用层自己实现心跳包,代码较多 且稍显复杂,而利用TCP/IP协议层为内置的KeepAlive功能来实现心跳功能则简单得多。 不论是服务端还是客户端,一方开启KeepAlive功能后,就会自动在规定时间内向对方发送心跳包, 而另一方在收到心跳包后就会自动回复,以告诉对方我仍然在线。 因为开启KeepAlive功能需要消耗额外的宽带和流量,所以TCP协议层默认并不开启KeepAlive功 能,尽管这微不足道,但在按流量计费的环境下增加了费用,另一方面,KeepAlive设置不合理时可能会 因为短暂的网络波动而断开健康的TCP连接。并且,默认的KeepAlive超时需要7,200,000 MilliSeconds, 即2小时,探测次数为5次。对于很多服务端应用程序来说,2小时的空闲时间太长。因此,我们需要手工开启KeepAlive功能并设置合理的 KeepAlive参数
心跳包一般来说都是在逻辑层发送空的echo包来实现的。下一个定时器,在一定时间间隔下发送一个空包给客户端,然后客户端反馈一个同样的空包回来,服务器如果在一定时间内收不到客户端发送过来的反馈包,那就只有认定说掉线了
这两种方式分配的都是虚拟内存,没有分配物理内存。在第一次访问已分配的虚拟地址空间的时候,发生缺页中断,操作系统负责分配物理内存,然后建立虚拟内存和物理内存之间的映射关系
持久性是指一个事务一旦被提交了,那么对数据库中的数据的改变就是永久性的,即便是在数据库系统遇到故障的情况下也不会丢失提交事务的操作。
MySQL采用了一种叫WAL(Write Ahead Logging)提前写日志的技术。意思就是说,发生了数据修改操作先写日志记录下来,等不忙的时候再持久化到磁盘。这里提到的日志就是redo log。
redo log称为重做日志,当有一条记录需要修改的时候,InnoDB引擎会先把这条记录写到redo log里面。redo log是物理格式日志,它记录的是对于每个页的修改。
redo log是由两部分组成的:一是内存中的重做日志缓冲(redo log buffer);二是用来持久化的重做日志文件(redo log file)。为了消耗不必要的IO操作,事务再执行过程中产生的redo log首先会redo log buffer中,之后再统一存入redo log file刷盘进行持久化,这个动作称为fsync
binlog记录了mysql执行更改了所有操作,但不包含select和show这类本对数据本身没有更改的操作。但是不是说对数据本身没有修改就不会记录binlog日志。
- binlog是mysql自带的,他会记录所有存储引擎的日志文件。而redo log是InnoDB特有的,他只记录该存储引擎产生的日志文件
- binlog是逻辑日志,记录这个语句具体操作了什么内容。Redo log是物理日志,记录的是每个页的更改情况
- redo log是循环写,只有那么大的空间。binlog采用追加写入,当一个binlog文件写到一定大小后会切换到下一个文件
在应用程序启动之后,就马上创建一定数量的线程,放入空闲的队列中。这些线程都是处于阻塞状态,这些线程只占一点内存,不占用 CPU。当任务到来后,线程池将选择一个空闲的线程,将任务传入此线程中运行。当所有的线程都处在处理任务的时候,线程池将自动创建一定的数量的新线程,用于处理更多的任务。执行任务完成之后线程并不退出,而是继续在线程池中等待下一次任务。当大部分线程处于阻塞状态时,线程池将自动销毁一部分的线程,回收系统资源。
使用一个全局变量进行标志
取地址的、有名字的就是左值。左值的生存期长,可以作为赋值的对象。
右值指临时对象,只在当前语句有效,右值又可以细分为纯右值、将亡值。纯右值指的是临时变量和不跟对象关联的字面量值;将亡值则是 C++11 新增的跟右值引用相关的表达式,这样表达式通常是将要被移动的对象(移为他用)。如std::move 的返回值。将亡值可以理解为通过“盗取”其他变量内存空间的方式获取到的值
shared_ptr、unique_ptr、weak_ptr。shared_ptr多个指针指向相同的对象。shared_ptr 使用引用计数,每一个 shared_ptr 的拷贝都指向相同的内存。每使用他一次,内部的引用计数加 1,每析构一次,内部的引用计数减 1,减为 0 时,自动删除所指向的堆内存。shared_ptr 内部的引用计数是线程安全的,但是对象的读取需要加锁。
unique_ptr“唯一”拥有其所指对象,同一时刻只能有一个 unique_ptr 指向给定对象(通过禁用拷贝构造函数和赋值运算符、只有移动语义来实现)。
当父类对象包含子类对象且子类对象包含父类对象,然二者又互相赋值的时候,将会发生互相引用的情况,资源将得不到释放。
弱指针 weak_ptr 不控制对象的生命期,指向一个shared_ptr 管理的对象,但是引用计数不在进行加 1。
它只可以从一个 shared_ptr 或另一个 weak_ptr 对象构造。,然后赋值给它的构造和析构不会引起引用记数的增加或减少.防止两个 shares_ptr 互相引用使得释放时引用计数为 1,无法得到释放。不能通过 weak_ptr 直接访问对象的方法,需要先将 weak_ptr 转为shared_ptr,才可以。某个 weak_ptr 调用 lock()转变为
双端队列(deque)是一种支持向两端高效地插入数据、支持随机访问的容器。和 vector 容器采用连续的线性空间不同,deque 容器存储数据的空间是由一段一段等长的连续空间构成,各段空间之间并不一定是连续的,可以位于在内存的不同区域。为了管理这些连续空间,deque 容器用数组(数组名假设为 map)存储着各个连续空间的首地址。也就是说,map
数组中存储的都是指针,指向那些真正用来存储数据的各个连续空间
当 deque 容器需要在头部或尾部增加存储空间时,它会申请一段新的连续空间,同时在 map 数组的开头或结尾添加指向该空间的指针,由此该空间就串接到了 deque 容器的头部或尾部。如果 map 数组满了怎么办?很简单,再申请一块更大的连续空间供 map 数组使用,将原有数据(很多指针)拷贝到新的 map 数组中,然后释放旧的空间。
Linux 内核中引入了伙伴系统算法(buddy system)。把所有的空闲页框分组为 11 个块链表,每个块链表分别包含大小为 1,2,4,8,16,32,64,128,256,512 和 1024 个连续页框的页框块。最大可以申请 1024 个连续页框,对应 4MB 大小的连续内存。每个页框块的第一个页框的物理地址是该块大小的整数倍。
假设要申请一个 256 个页框的块,先从 256 个页框的链表中查找空闲块,如果没有,就去 512 个页框的链表中找,找到了则将页框块分为 2 个 256 个页框的块,一个分配给应用,另外一个移到 256 个页框的链表中。如果 512 个页框的链表中仍没有空闲块,继续向 1024 个页框的链表查找,如果仍然没有,则返回错误。页框块在释放时,会主动将两个连续的页框块合并为一个较大的页框块。
epoll中就绪列表引用着就绪的socket,所以它应能够快速的插入数据。程序可能随时调用epoll_ctl添加监视socket,也可能随时删除。当删除时,若该socket已经存放在就绪列表中,它也应该被移除。所以就绪列表应是一种能够快速插入和删除的数据结构。双向链表就是这样一种数据结构,epoll使用双向链表来实现就绪队列。
既然epoll将“维护监视队列”和“进程阻塞”分离,也意味着需要有个数据结构来保存监视的socket。至少要方便的添加和移除,还要便于搜索,以避免重复添加。红黑树是一种自平衡二叉查找树,搜索、插入和删除时间复杂度都是O(log(N)),效率较好。epoll使用了红黑树作为索引结构
IO 准备好 / Sleep 时间到 前不会调度该线程
中断是指计算机运行过程中,出现某些意外情况需主机干预时,机器能自动停止正在运行的程序并转入处理新情况的程序,处理完毕后又返回原被暂停的程序继续运行.
是一条CPU指令,用以自陷一个中断。由于软中断指令通常要运行一个切换CPU至内核态(Kernel Mode/Ring 0)的子例程,它常被用作实现系统调用(System call)
缓存穿透是指缓存和数据库中都没有的数据,而用户不断发起请求,如发起为id为“-1”的数据或id为特别大且不存在的数据。这时的用户很可能是攻击者,攻击会导致数据库压力过大。
- 接口层增加校验,如用户鉴权校验,id做基础校验,id<=0的直接拦截;
从缓存取不到的数据,在数据库中也没有取到,这时也可以将key-value对写为key-null,缓存有效时间可以设置短点,如30秒(设置太长会导致正常情况也没法使用)。这样可以防止攻击用户反复用同一个id暴力攻击
缓存击穿是指缓存中没有但数据库中有的数据(一般是缓存时间到期),这时由于并发用户特别多,同时读缓存没读到数据,又同时去数据库去取数据,引起数据库压力瞬间增大,造成过大压力
设置热点数据永远不过期
加互斥锁降低从数据库中读取数据频率
缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是,缓存击穿指并发查同一条数据,缓存雪崩是不同数据都过期了,很多数据都查不到从而查数据库
- 缓存数据的过期时间设置随机,防止同一时间大量数据过期现象发生。
- 如果缓存数据库是分布式部署,将热点数据均匀分布在不同搞得缓存数据库中。
- 设置热点数据永远不过期。
内存泄漏是指由于疏忽或错误造成了程序未能释放掉不再使用的内存的情况。内存泄漏并非指内存在物理上消失,而是应用程序分配某段内存后,由于设计错误,失去了对该段内存的控制。
2.如何保证消息不丢失
3.如何保证消息不重复
HTTPs 是以安全为目标的 HTTP 通道,简单讲是 HTTP 的安全版,即HTTP 下加入 SSL 层,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL
HTTPs的握手过程包含五步
- 服务器返回证书:证书里面包含了网站地址,加密公钥,以及证书的颁发机构等信息,服务器采用非对称加密算法(RSA)生成两个秘钥,私钥自己保留
- 浏览器收到证书后作以下工作:
3.1 验证证书的合法性
3.2 生成随机(对称)密码,取出证书中提供的公钥对随机密码加密;浏览器即客户端使用非对称加密来加密对称加密规则,对称加密用于加密后续传输的信息
3.3 将之前生成的加密随机密码等信息发送给网站- 服务器收到消息后作以下的操作
4.1 使用自己的私钥解密浏览器用公钥加密后的消息,并验证 HASH 是否与浏览器发来的一致;获得浏览器发过来的对称秘钥
4.2 使用加密的随机对称密码加密一段消息,发送给浏览器- 浏览器解密并计算握手消息的 HASH:如果与服务端发来的 HASH 一致,此时握手过程结束,之后进行通信
大端模式:是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址端。
小端模式,是指数据的高字节保存在内存的高地址中,低位字节保存在在内存的低地址端
网络字节序类似于大端模式,因为UDP/TCP/IP协议规定:把接收到的第一个字节当作高位字节看待,类似于大端模式低地址存放高字节的存储方式,实际上也确实像,因为无论是收还是发,都是从低字节开始的,那么收到的第一个字节理应放到低地址。
两个小顶堆的优先队列,O(n)即可解决
找出规律不能为7的倍数,每次取到只剩7的倍数个糖果即可