LDC

新金融分布式架构之SOFAStack解决方案

放肆的年华 提交于 2020-08-12 03:53:07
金融行业正在流淌着一股去IOE,去集中化的IT架构转型洪流。我有幸参与到这股洪流中,见证这一重大变革。以下是我对这股洪流的一些思考和想法。 1.当前主流金融的IT架构 众所周知,目前大部分金融机构的IT架构还是以“IOE”的IBM大小型机,Oracle数据库,EMC存储为基础的集中式架构。这种架构有以下优点: 成熟度高 可靠性高 可用性高 这些产品目前承载着世界上众多金融行业的核心系统,而这些产品的厂家在这个领域有几十年的积累,产品的成熟度,可靠性,可用性可见一斑。 不过这种架构也有三大缺点: 第一个就是成本高。硬件,软件,服务都价格不菲。这些费用在金融机构躺着赚钱的时代还是可以接受的,但是在现在以及未来瞬息万变的时代,金融机构的经营形势会越发趋紧,那么这一块IT架构支出就会成为金融机构的负担。 第二个就是IOE的东西都是黑盒,其核心科技就像一个迷。万一再来一个类似“棱镜门”,“华为门”的“IOE门”,金融IT架构的处境可想而知。虽说可能性不大,但是不怕一万就怕万一。所以,自主可控才不会受制于人。 第三个就是可扩展性较差。这种架构无法做到快速,无限制的扩展。之前也提到,未来是瞬息万变的时代,消费模式会从工厂生产什么,消费者消费什么的模式转变到消费者海量碎片化需求主导的模式。那么IT架构需要能支持随时扩展以便适应业务的快速发展。 2.新金融的IT架构 为了避免集中式架构的三大缺点

JVM详解之:类的加载链接和初始化

给你一囗甜甜゛ 提交于 2020-08-11 08:24:40
文章目录 简介 加载 运行时常量池 类加载器 链接 验证 准备 解析 初始化 总结 简介 有了java class文件之后,为了让class文件转换成为JVM可以真正运行的结构,需要经历加载,链接和初始化的过程。 这三个过程是怎么工作的呢?在本文中你将会找到答案。 加载 JVM可以分为三大部分,五大空间和三大引擎,要讲起来也不是特别复杂,先看下面的总体的JVM架构图。 从上面的图中,我们可以看到JVM中有三大部分,分别是类加载系统,运行时数据区域和Execution Engine。 加载就是根据特定名称查找类或者接口的二进制表示,并根据此二进制表示来创建类和接口的过程。 运行时常量池 我们知道JVM中有一个方法区的区域,在JDK8中,方法区的实现叫做元空间。这个元空间是存放在本地内存中的。 方法区中存放着每个class对应的运行时常量池。 当类或者接口创建的时候,就会通过class文件中定义的常量池来构建运行时常量池。 运行时常量池中有两种类型,分别是symbolic references符号引用和static constants静态常量。 其中静态常量不需要后续解析,而符号引用需要进一步进行解析处理。 静态常量分为两个部分:String常量和数字常量。 String常量是对String对象的引用,是从class中的CONSTANT_String_info结构体构建的。

JVM详解之:类的加载链接和初始化

主宰稳场 提交于 2020-08-11 00:19:11
简介 有了java class文件之后,为了让class文件转换成为JVM可以真正运行的结构,需要经历加载,链接和初始化的过程。 这三个过程是怎么工作的呢?在本文中你将会找到答案。 加载 JVM可以分为三大部分,五大空间和三大引擎,要讲起来也不是特别复杂,先看下面的总体的JVM架构图。 从上面的图中,我们可以看到JVM中有三大部分,分别是类加载系统,运行时数据区域和Execution Engine。 加载就是根据特定名称查找类或者接口的二进制表示,并根据此二进制表示来创建类和接口的过程。 运行时常量池 我们知道JVM中有一个方法区的区域,在JDK8中,方法区的实现叫做元空间。这个元空间是存放在本地内存中的。 方法区中存放着每个class对应的运行时常量池。 当类或者接口创建的时候,就会通过class文件中定义的常量池来构建运行时常量池。 运行时常量池中有两种类型,分别是symbolic references符号引用和static constants静态常量。 其中静态常量不需要后续解析,而符号引用需要进一步进行解析处理。 静态常量分为两个部分:String常量和数字常量。 String常量是对String对象的引用,是从class中的CONSTANT_String_info结构体构建的。 数字常量是从class文件中的CONSTANT_Integer_info, CONSTANT

【小白学C#】浅谈.NET中的IL代码

浪子不回头ぞ 提交于 2020-08-10 06:11:37
一、前言   前几天群里有位水友提问:”C#中,当一个方法所传入的参数是一个静态字段的时候,程序是直接到静态字段拿数据还是从复制的函数栈中拿数据“。其实很明显,这和方法参数的传递方式有关,如果是引用传递的话,肯定是会去静态字段直接拿值的;如果方法是以传值的方式使用参数的话,一定是从复制的栈中拿值的。   但是这位水友就是不相信这个结论(后来发现,这货整一个杠精啊!天天在群里跟人抬杠~),这个时候我忽然想到了可以反向看一下C#的IL代码,来了解一下程序运行的过程。的确,当我们对运行结果有异议的时候,可以通过IL代码透过表面看本质。 二、IL简介   在我们分析查看IL之前首先要了解下什么是IL?IL的全称是Intermediate Language (IL)即将.NET代码转化为机器语言的一个中间语言的缩写。在一定程度上,我们可以将其理解为伪汇编语言。我们在使用.NET框架中的C#、VB.NET、F#等语言的时候,编译过程并不是像C/C++一样直接编译出原生代码,而是编译成IL中间语言。通过IL中间语言这种方式,可以实现跨平台、提高程序灵活性等多种优点。   下面我们以C#语言为例,大致了解了解一下我们的源代码是如何编译成IL语言,继而运行在电脑上面的。       图1:.NET语言编译过程示意图   上图为C#语言的编译运行过程示意图

从一道初等几何题目聊聊作为工具的数学

╄→尐↘猪︶ㄣ 提交于 2020-08-06 23:24:24
作为一个在杭州的流民,每周末才能回家,早上例行家务,做完后例行刷10分钟手机,在朋友圈看到一个有意思的几何题,原题如下: 哈哈,这正是我的菜,一直都是,遂放下手机,拿了几张打印纸,开始比划。 这等题目背后一定暗藏着某种奇技淫巧,必须作出辅助线才能真相大白,我先后尝试了: 过C做CG平行于AB… 在AD上截取一点G,使得AG=AB,则三角形AGC等边… … 过A作AG交DC于G,使得角BAG=60度… 其中最后一个奏效: 很容易证明 △ A B G \triangle ABG △ A B G 等边,由于 A C = A G AC=AG A C = A G ,则可求 ∠ A G C = 80 \angle AGC=80 ∠ A G C = 8 0 ,进而 ∠ D G A = 100 \angle DGA=100 ∠ D G A = 1 0 0 ,这就好玩了,简单掐指一算, ∠ D A G = 40 \angle DAG=40 ∠ D A G = 4 0 ,我靠, A G = D G AG=DG A G = D G ,所以, △ G B D \triangle GBD △ G B D 等腰啊,所以, ∠ B D G = 180 − 40 2 = 70 \angle BDG=\dfrac{180-40}{2}=70 ∠ B D G = 2 1 8 0 − 4 0 ​ = 7 0 ,最终,

还不明白可空类型原理? 我可要挖到底了

对着背影说爱祢 提交于 2020-07-28 18:57:49
一:背景 1. 讲故事 下决心做好自媒体到现在有一个月了,关注我的兄弟应该知道我产出了不少文章,号里的粉丝也多起来了,我也尽最大努力做到有问必回,现在是基础的、高深的问题都接踵而来,可我也只是一只小菜鸟,想飞也飞不动了(┬_┬),昨天号里有位朋友被面试官问到可空类型的原理,回答的不好,面试官也是,面就面呗,又给不了多少银子,还动不动就原理,哪有那么多原理,搞得双方都尴尬😄😄😄。 二:给我锄头我要挖到底 这种问题要怎么挖呢? 我在之前的文章也聊过,C#代码到机器码中间有两个编译过程,一个是csc编译后的IL代码,一个是jit编译后的native代码,所以搞懂IL代码和native代码就是我们要深究的方向,我还是把那篇文章的图拿过来。 为了方便演示,我就定义一个 int? 类型,接收非null和null两种情况。 static void Main(string[] args) { int? num1 = 10; int? num2 = null; Console.WriteLine("执行结束啦!"); Console.ReadLine(); } 1. 挖IL代码 挖IL代码简单,用ILSPY小工具就可以了,编译后生成的IL代码如下: .method private hidebysig static void Main ( string[] args ) cil managed { /

JDK核心JAVA源码解析(8)

ⅰ亾dé卋堺 提交于 2020-07-28 03:36:00
想写这个系列很久了,对自己也是个总结与提高。原来在学JAVA时,那些JAVA入门书籍会告诉你一些规律还有法则,但是用的时候我们一般很难想起来,因为我们用的少并且不知道为什么。知其所以然方能印象深刻并学以致用。 本文基于 Java 14 在JDK1.5引入自动装箱/拆箱,让开发更高效。自动装箱时编译器调用 valueOf() 将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似 intValue(),doubleValue() 这类的方法将对象转换成原始类型值。 自动装箱是将 boolean 值转换成 Boolean 对象,byte 值转换成 Byte 对象,char 转换成 Character 对象,float 值转换成 Float 对象,int 转换成 Integer,long 转换成 Long,short 转换成 Short,自动拆箱则是相反的操作。 public static void main(String[] args) { Long v = 6L; long a = v; if (a > v) { } } 通过 javap -c 命令查看: 0 ldc2_w #68 <6> 3 invokestatic #66 <java/lang/Long.valueOf> 6 astore_1 7 aload_1 8 invokevirtual #70 <java/lang

StringTable常量池

混江龙づ霸主 提交于 2020-05-04 19:14:27
package com.jvm; import org.junit.Test; /** * 常量池StringTable的详解 * 可以使用该命令查看,当前类的字节码常量池信息 * javap -v StringTableTest.class * * @author shiye * @date 2020-05-04 13:13 */ public class StringTableTest { @Test public void test1() { String s1 = "a";//放到常量池中 String s2 = "b";//放到常量池中 String s3 = "ab"; //放到常量池中 /** * 首先创建一个StringBuilder对象 然后从常量池中获取一个"a",然后再从常量池中获取一个"b"对象 * 然后再在堆中创建一个 new String("ab") 对象 * new StringBuilder().append("a").append("b").toString(); * --> toString()方法就是 new String("ab"); */ String s4 = s1 + s2; //放到堆中 System.out.println(s3 == s4); //一个在堆中,一个再常量池中 false /** * ldc #4 // String

C# 字符串拼接性能探索 c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能

末鹿安然 提交于 2020-05-01 04:57:15
本文通过ANTS Memory Profiler工具探索c#中+、string.Concat、string.Format、StringBuilder.Append四种方式进行字符串拼接时的性能。 本文涉及程序为.NET Core 2.0控制台应用程序。 一、常量字符串拼接 private static void TestPerformance(Action action, int times) { Stopwatch sw = new Stopwatch(); sw.Start(); for(int i = 0; i < times; i++) { action(); } sw.Stop(); Console.WriteLine(action.Method.Name + ", FullTime: " + sw.ElapsedMilliseconds); } 1.+方法 1.1连续拼接 private static void AddTest() { string s = string.Empty; s = "1" + "2" + "3" + "4" + "5" + "6" + "7" + "8"; } 运行时间: 内存情况: IL代码: .method private hidebysig static void AddTest() cil managed { // Code size

[转帖]IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”)

爷,独闯天下 提交于 2020-04-24 16:20:32
IPC网络高清摄像机基础知识1(IPC芯片市场分析以及“搅局者”华为海思 “来自2013年”) 2016-06-02 14:23:49 Times_poem 阅读数 9734 更多 分类专栏: IPC网络摄像头基础知识 版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 本文链接: https://blog.csdn.net/Times_poem/article/details/51566877 需求说明:了解IPC(IP Camera)网络摄像头行业 来自:http://info.secu.hc360.com/2013/06/031051730705-all.shtml#m4 阅读精华整理: 1、对于网络摄像机(IPCamera以下简称:IPC)而言,它用到的解决方案包括成像方案和编解码芯片方案两部分。 成像方案上,商家在CCD或CMOS这两个图像传感器流派间选择。在网络高清方面,采用CMOS的居多,盖因其技术比 较成熟,低功耗、高集成度以及性价比高;而且,CCD做高清还有响应速度慢、难以应对大数据量等一定的短板。 2、在编解码芯片方案上,商家可选择美国德州仪器公司(TexasInstruments,以下简称:TI)、华为海思、安霸 股份、台湾智原等片上系统(System-on-Chip以下简称:SoC),不一而足