对象存储

abp学习(二)

萝らか妹 提交于 2019-12-04 06:29:20
翻译下首页截图的标签: DDD Base Classes 介绍: 应用程序代码库的分层是一种被广泛接受的技术,可帮助降低复杂性并提高代码重用性。为了实现分层架构,ASP.NET样板遵循域驱动设计的原则。 Domain Driven Design Layers 域驱动设计 (DDD) 中有四个基本层: 表示层:为用户提供接口。使用应用程序层实现用户交互。 应用程序层:在演示文稿层和域层之间起中介作用。协调业务对象以执行特定的应用程序任务。 领域层:包括业务对象及其规则。这是应用程序的核心。 基础设施层:提供通用技术功能,主要使用第三方库支持更高层。 总结:可以点进去看,这里只写了很少的一部分,具体页面还要一个很大的图片,并且配有讲解。 Repositories 存储库模式"使用类似于集合的接口访问域对象,在域和数据映射层之间进行中介"(马丁·福勒)。 实际上,存储库用于对域对象(实体和值类型)执行数据库操作。通常,每个实体(或聚合根)都使用单独的存储库。 在ASP.NET样板,仓库类实现 IRepository<TEntity, TPrimaryKey> interface。 ABP可以自动创建为每个实体类型的默认库。 您可以直接 inject IRepository<TEntity> (or IRepository<TEntity, TPrimaryKey>).

C语言存储类别和链接

拈花ヽ惹草 提交于 2019-12-04 05:30:40
目录 C语言存储类别和链接 存储类别 存储期 五种存储类别 存储类别和函数 分配内存malloc()和free() C语言存储类别和链接 ​ 最近详细的复习C语言,看到存储类别的时候总感觉一些概念模糊不清,现在认真的梳理一下。C语言的优势之一能够让程序员恰到好处的控制程序,可以通过C语言的内存管理系统指定变量的作用域和生存周期,实现对程序的控制。 存储类别 基本概念 对象 :在C语言中所有的数据都会被存储到内存中,被存储的值会占用一定的物理内存,这样的一块内存被称为 对象 ,它可以储存一个或者多个值,在储存适当的值时一定具有相应的大小。(C语言对象不同于面向对象语言的对象) 标识符 :程序需要一种方法来访问对象,这就需要声明变量来实现,例如: int identifier = 1 ,在这里 identifier 就是一个标识符,标识符是一个名称并遵循变量的命名规则。所以在本例中 identifier 即是C程序指定硬件内存中的对象的方式并提供了存储的值的大小“1”。在其它的情况中 int * pt 、 int arr[10] ,pt就是一个标志符,它指定了储存地址的变量,但是表达式*p不是一个标志符,因为它不是一个名称。 arr 的声明创建了一个可容纳10个 int 类型元素的对象,该数组的每一个元素也是一个对象。 作用域 :描述程序中可访问标识符的区域

漫谈值类型和引用类型

白昼怎懂夜的黑 提交于 2019-12-04 02:46:00
一.前言 从这个简单程序的输出结果,你想到了什么?是不是与你心中想的结果不一致?是不是觉得输出的结果应该为: i is 1,o is 8,o2 is 8 二.程序执行前 图 2 我们都知道,每一个方法在执行前,操作系统会给方法内每个变量分配内存空间。从图2中就可以看出,在执行前各变量(i,o,o2)已分配了内存,且各自都有初始值。 从图中,可以发现变量i和变量o,o2有些许不同。变量i在内存中存储的值和程序中的值是一样的,都是0;变量o,o2在内存中存储的值和程序中的值不一样,内存中存储的值是一个地址(0x00000000),程序中的值是null,那变量o,o2的null值存储在哪呢?为什么变量i和变量o,o2会有如此大的不同呢? 我们都知道,C#有两大类型:值类类型和引用类型。图2中int属于值类型,object属于引用类型。接下来,介绍一下值类型和引用类型: 1.值类型的值存储在内存栈上,引用类型的值存储在内存堆中。 园中有很多博文这么描述,我用程序验证了一下全局的值类型变量的值,静态的值类型变量的值,引用类型实例中值类型成员的值,如下图3 图 3 从图中,可以看出变量(j,o,seg,st)的值应该是在同一个存储区域中,而变量(gi)是在另外一个存储区域中。引用类型Student的成员Age的地址还未分配。所以说值类型的值存储在内存栈上是不准确的。 查找了一些资料

腾讯云对象存储COS批量删除工具及教程

放肆的年华 提交于 2019-12-04 02:01:08
COS是腾讯云推出的一款云对象存储产品,用户可将任意动态、静态生成的数据、文件,存放到COS上,再通过HTTP的方式进行访问。腾讯云为了扶持中小站点及推广产品,现提供50GB永久免费存储空间及每月50GB免费下载流量。 但是腾讯云对象存储COS在设计时出于用户数据安全考虑,不允许批量删除COS Bucket内的数据,为解决COS用户批量删除Bucket内文件的需求,腾讯云提供了一个COS批量删除工具rm_recursive供用户使用。 下载地址 COS批量删除工具使用方法(工具是用python写的,需在python环境下运行): 1、下载文件并解压。 2、找到并编辑“app_conf.json”配置文件。按配置文件要求输入属于你的腾讯云COS:APP ID、secretID、secretKey。(可在腾讯云存储COS管理页面点击“获取secretKey”查看) 3、运行COS批量删除。 例如删除Bucket名称为"yinyuey"下“music”目录下的所有文件: python rm_recursive.py yinyuey /music/ 例如删除Bucket名称为"yinyuey"下的所有文件: python rm_recursive.py yinyuey / 以上示例是在Centos系统上完成的,如果你的windows电脑安装了python运行环境

在网络通讯中应用Protobuf

╄→гoц情女王★ 提交于 2019-12-04 01:06:19
Protobuf的设计非常适用于在网络通讯中的数据载体,它序列化出来的数据量少再加上以K-V的方式来存储数据,对消息的版本兼容性非常强;还有一个比较大的优点就是有着很多的语言平台支持。下面讲解一下如何在TCP通讯应用中集成Protobuf. Protobuf提供一种简单的对象消息方式来描述数据的存储,通过相关实现可以简单地实现数据流和对象之间的转换。但由于Protobuf序列化后的信息并不包括一些相应对象类型描述,只有消息体的内容;因此在进行通信交互过程中默认情况是不知道这些数据和对象的对应关系;既然对方不清楚这些数据对应那种类型,那数据还源成对象就根本没办法入手。所以把 Protobuf用到网络通讯中我们还需要外加一些协议来规范数据的对应关系。 在通讯协议上只需要在消息体中先写入类型然后再写入Protobuf数据,TypeName主要是用于对方配匹数据对应的对象关系,这个TypeName是string还是int或其他就根据自己喜好来制定了。 在通讯上问题就解决了,但还要面对实际中使用的一种情况消息太多了……那处理TypeName->Object则一个蛋痛的事情。还好在.net和android下有类元素表这玩意还能在运行行进行操作,从而可以大大节省这些if判断处理。由于本人熟悉的语言平台有限,在这里分别提供java和c#的解决方法。 Java public static void

Java-String.intern的深入研究

天涯浪子 提交于 2019-12-04 00:10:32
来源:Secondworld When---什么时候需要了解String的intern方法: 面试的时候(蜜汁尴尬)!虽然不想承认,不过面试的时候经常碰到这种高逼格的问题来考察我们是否真正理解了String的不可变性、String常量池的设计以及String.intern方法所做的事情。但其实,我们在实际的编程中也可能碰到可以利用String.intern方法来提高程序效率或者减少内存占用的情况,这个我们等下会细说。 What---String.intern方法究竟做了什么: Returns a canonical representation for the string object. A pool of strings, initially empty, is maintained privately by the class String. When the intern method is invoked, if the pool already contains a string equal to this String object as determined by the equals(Object) method, then the string from the pool is returned. Otherwise, this String object is

存储分类(四)-对象存储

柔情痞子 提交于 2019-12-03 20:59:51
而对象存储是一种新的网络存储架构,基于对象存储技术的设备就是对象存储设备,简称:OSD 典型设备 :内置大容量硬盘的分布式服务器 对象存储最常用的方案,就是多台服务器内置大容量硬盘,再装上对象存储软件,然后再额外搞几台服务作为管理节点,安装上对象存储管理软件。管理节点可以管理其他服务器对外提供读写访问功能。 之所以出现对象存储这种东西,是为了克服块存储与文件存储各自的缺点,发扬各自的优点。简单来说块存储读写快,不利于共享,文件存储读写慢,利于共享。能否弄一个读写块,利于共享的存储出来呢?于是就有了对象存储。 首先, 一个文件包含了属性(术语:metadata,元数据,例如该文件的大小、修改时间、存储路径等)以及内容(数据)。 像FAT32这种文件系统,是直接将一份文件与metadata一起存储的,存储过程先将文件按照文件系统的最小块大小来打散(比如4M的文件,假设文件系统要求一个块4K,那么就将文件打散称为1000个小块),再写进硬盘里,过程中没有区分数据和metadata的。而每个块最后会告知你下一个要读取的块地址,然后一直这样 顺序 的按图索骥,最后完成整份文件的所有块的读取。 这种情况下读写速率很慢,因为就算你有100个机械臂在读写,但是由于你只有读取到第一个块,才能知道下一个块在哪里,其实相当于只能有1个机械臂在实际工作。 而对象存储则将元数据独立出来了

深入分析Synchronized原理

一曲冷凌霜 提交于 2019-12-03 20:06:27
前言 记得开始学习Java的时候,一遇到多线程情况就使用synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是, 随着学习的进行我们知道在JDK1.5之前synchronized是一个重量级锁,相对于j.u.c.Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它 。 不过, 随着Javs SE 1.6对synchronized进行的各种优化后,synchronized并不会显得那么重了 。下面来一起探索synchronized的基本使用、实现机制、Java是如何对它进行了优化、锁优化机制、锁的存储结构等升级过程。 大家可以点击加群【JAVA架构知识学习讨论群】 473984645, (如多你想跳槽换工作,但是技术又不够,或者工作遇到了瓶颈,我这里有一个Java的免费直播课程,讲的是高端的知识点,只要有1-5年的开发工作经验可以加群找我要课堂链接。)注意:是免费的 没有开发经验的误入。 1 基本使用 Synchronized是Java中解决并发问题的一种最常用的方法,也是最简单的一种方法。 Synchronized的作用主要有三个 : 原子性 :确保线程互斥的访问同步代码; 可见性 :保证共享变量的修改能够及时可见

Think in Java —— JAVA 对象

久未见 提交于 2019-12-03 18:41:42
1.用引用操作对象 在java当中一切都被视作为对象,在这具有共同特征的时候就可以采用单一固定的语法来对这些对象进行处理和分析。尽管一切都看成了对象,但真正操纵的并不是对象本身,而是对象的一个“引用”(举一个书中的例子就很明了了,遥控器和电视,电视是一个对象,而遥控器是所谓的“引用”。只要掌握遥控器这个“引用”就可以操控遥控器“对象”,实际上操控的是遥控器而非对象本身)。此外就算是没有电视机,引用依然可以存在。当然如果你需要去使用遥控器,就要和对象进行绑定起来。这就是引用和对象的关系了。 2.对象存储在什么地方 在程序运行时,对象是怎样进行放置安排的?内存又是怎样分配的。 寄存器 。 这是最快的存储区,因为它位于不同于其它存储区的地方——处理器内部。但是寄存器的数量极其有限,所以寄存器根据需求进行分配,你不能直接控制,也不能在程序中感觉到寄存器的存在。 堆栈。 位于通用RAM(随机访问存储器)中,但通过堆栈指针可以从处理器那里获得直接支持。堆栈指针若向下移动,则分配新的内存;若向上移动,则释放这些内存。这是一种快速有效的分配存储方法,仅次于寄存器。创建程序时,Java系统必须知道存储在堆栈内所有项的确切生命周期,以便上下移动堆栈指针。这一约束限制了程序的灵活性,所以某些Java数据存储于堆栈中——特别是对象引用,但是Java对象并不存储在其中。 堆。 一种通用的内存池

Java中HashMap的实现原理

六月ゝ 毕业季﹏ 提交于 2019-12-03 16:57:02
一、Java中的hashCode和equals 1、关于hashCode hashCode的存在主要是用于查找的快捷性,如Hashtable,HashMap等,hashCode是用来在散列存储结构中确定对象的存储地址的 如果两个对象相同,就是适用于equals(java.lang.Object) 方法,那么这两个对象的hashCode一定要相同 如果对象的equals方法被重写,那么对象的hashCode也尽量重写,并且产生hashCode使用的对象,一定要和equals方法中使用的一致,否则就会违反上面提到的第2点 两个对象的hashCode相同,并不一定表示两个对象就相同,也就是不一定适用于equals(java.lang.Object) 方法,只能够说明这两个对象在散列存储结构中,如Hashtable,他们“存放在同一个篮子里“ 再归纳一下就是hashCode是用于查找使用的,而equals是用于比较两个对象的是否相等的。 以下对hashCode的解读摘自其他博客: 1.hashcode是用来查找的,如果你学过数据结构就应该知道,在查找和排序这一章有 例如内存中有这样的位置 0 1 2 3 4 5 6 7 而我有个类,这个类有个字段叫ID,我要把这个类存放在以上8个位置之一,如果不用hashcode而任意存放,那么当查找时就需要到这八个位置里挨个去找,或者用二分法一类的算法。