- 博客(32)
- 资源 (10)
- 收藏
- 关注
原创 深度学习模型转换技术
深度学习模型转换技术目前的转换技术在设计思路上主要存在两种差异,一种是直接将模型从现有框架转换为适合目标框架使用的格式,我们在这称此技术为直接转换技术;另外一种是针对深度学习设计一种开放式的文件规范,而主流深度学习框架最终都能实现对这种规范标准的支持,这种技术的代表是开放式神经网络切换框架——ONNX技术。2.1 直接转换技术转换器实现模型文件转换的基本原理涉及一下几步:读取载入A框架...
2019-12-24 10:29:55
1639
原创 深度学习简介
前言当用户基于各种原因学习并使用了一种框架的时候,常常会发现应用或者再训练的场景改变了,比如用户用 Caffe 训练好了一个图像识别的模型,但是生产环境是使用 TensorFlow 做预测。再比如某机构主要以TensorFlow作为基础的深度学习开发框架,现在有一个深度算法项目,需要将其部署在移动设备上,并希望使用速度较优的ncnn前向框架,以观测变现等等。传统地我们可能需要用tf重写Caffe...
2019-12-24 10:10:08
1127
原创 计算系统cache详解
.计算机存储体系简介 存储器是分层次的,离CPU越近的存储器,速度越快,每字节的成本越高,同时容量也因此越小。寄存器速度最快,离CPU最近,成本最高,所以个数容量有限,其次是高速缓存(缓存也是分级,有L1,L2等缓存),再次是主存(普通内存),再次是本地磁盘。。寄存器的速度最快,可以在一个时钟周期内访问,其次是高速缓存,可以在几个时钟周期内访问,普通内存可以在几十个或几百个时钟周期...
2019-04-12 10:50:33
3164
原创 初识LLVM
只要你和程序打交道,了解编译器架构就会令你受益无穷——无论是分析程序效率,还是模拟新的处理器和操作系统。通过本文介绍,即使你对编译器原本一知半解,也能开始用LLVM,来完成有意思的工作。LLVM是什么?LLVM是一个好用、好玩,而且超前的系统语言(比如C和C++语言)编译器。当然,因为LLVM实在太强大,你会听到许多其他特性(它可以是个JIT;支持了一大批非类C语言;还是App S...
2019-04-02 15:09:46
620
原创 浅谈B树、B+树索引
前言本文是在讲述什么样的数据结构适合作为索引,以及其适合作为索引的原因。而阅读本文需要对B树和B+树结构有稍微的理解。以及需要对磁盘操作知识有稍微的了解。什么是索引 索引(Index)是帮助数据库高效获取数据的数据结构。索引是在基于数据库表创建的,它包含一个表中某些列的值以及记录对应的地址,并且把这些值存储在一个数据结构中。最常见的就是使用哈希表、B+树作为索引。 为...
2019-01-29 16:39:18
436
原创 管理随笔
一、执行力和人情在管理中执行力和人情是成反比的,也就是说人情讲的越多,执行力越差,执行力越好,人情也就越差,当执行力遇到人情,若执行力受挫,在好的战略也不能得到落实二、系统思维现在企业存在新员工上手太慢,老员工又容易跳单或创业,很多老板认为是新员工能力不行,老员工品行不行,本质上是公司没有系统思维,企业要做大做强必须形成傻瓜流程,避免对人才的依赖,并行改变管理思维,从雇主思维转换为合伙...
2019-01-12 10:44:17
357
原创 Linux 软件性能优化以及常用工具
一、 影响Linux性能的CPU、内存、磁盘、网络等因素分析1.系统硬件资源:CPU,多核与超线程消耗CPU的业务:动态WEB服务,Mail服务器2.内存:物理内存与swap的取舍,64操作系统消耗内存的业务:内存数据库(Redis、hbase、mongodb)3.磁盘:RAID技术(RAID0/1/5/10),SSD消耗磁盘的业务:数据库服务器4.网络带宽:网卡/交换...
2018-12-25 14:55:47
1643
原创 分页查询性能优化
最常见的分页采用的是skip+limit这种组合方式,这种方式对付小数据倒也可以,但是对付上几百上千万的大数据,只能力不从心,skip如果跳过大量的数据会很慢,并且会越查越慢,针对这一情况,可以通过条件查询+排序+限制返回记录,即 边查询,边排序,排序之后,抽取上一页中的最后一条记录,作为当前分页的查询条件,从而避免了skip效率低下的问题。 ...
2018-12-20 10:35:24
434
原创 MVCC原理
在并发读写数据库时,读操作可能会不一致的数据(脏读)。为了避免这种情况,需要实现数据库的并发访问控制,最简单的方式就是加锁访问。由于,加锁会将读写操作串行化,所以不会出现不一致的状态。但是,读操作会被写操作阻塞,大幅降低读性能。在java concurrent包中,有copyonwrite系列的类,专门用于优化读远大于写的情况。而其优化的手段就是,在进行写操作时,将数据copy一份,不会影响原有数...
2018-12-19 19:32:02
1811
1
原创 数据库评测指标
主要指标:1、高吞吐量 满足高并发下的大数据量交互需求,满足数据备份或ETL过程的大数据量迁移。具体需求信息获取参照以上数据库应用需求。2、负载均衡 满足高并发下数据库的负载均衡能力,需求分析需要收集数据库的部署架构、负载均衡策略等数据信息。3、读写分离 获取需求的要点是明确哪些是写节点,哪些是读节点,并且切换的策略什么,数据同步的策略是什么。4、分区分片(分库分表) 获取需求的要...
2018-12-05 19:15:01
6483
原创 Sql 和Nosql区别
SQL类型数据特点1.SQL表创建一个严格的数据模板,因此很难犯错误。2.SQL规范化,多表关联模式最大限度的减少数据的冗余 。3.SQL 具有强大的join 多表关联4.SQL 具有外键保障数据的完整性5.SQL 良好的事物支持6.SQL CRUD 语法是标准化的陈述性语言Nosql类型数据库特点:1.NoSQL更加的灵活和宽容,能够存储任何数据,可能会导致一致性的问题。...
2018-12-05 19:08:15
896
原创 Reactor和proactor模式分析
1.先解释同步和异步:同步异步是一种通信机制。同步:调用方需要保持等待直到I/O操作完成。异步:调用方可以不用保持等待,只需要操作系统完成I/O操作通知调用方就可以了。2.再说说阻塞和非阻塞:阻塞非阻塞是一种调用机制。阻塞:调用方等待I/O操作完成后才返回,就是阻塞的。非阻塞:调用方不需要等待IO操作完成就立即返回。非阻塞的情况下,常常需要多次调用去check,才能获得...
2018-11-21 14:06:15
647
原创 ACE框架解读 - 源码篇
最近研究了ACE框架的源码,先考虑选取最新版本ACE6.0来读,但是发现代码量有30多万行,规模太大了花的时间会比较多,所以考虑选取旧一些的版本,最后选取ACE4.5版本来阅读,代码量13万行比较适中。下面是我读代码时的一些总结,把所有的目录和文件列出来,并针对每个文件里的主要类及其实现,根据自己的理解作了一些总结。文件总结[CORBA]COBRA整体略过。CORBA_Ha...
2018-11-21 13:53:12
2368
2
原创 memcache和redis对比
1.1 Memcached介绍 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态Web应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度,现在已被LiveJournal、hatena、Facebook、Vox、LiveJournal等公司所使用。 1.2 Memcached工作方式分析 ...
2018-11-13 10:28:38
1476
原创 LLVM编译原理和使用
LLVM简介:LLVM是构架编译器(compiler)的框架系统,以C++编写而成,用于优化以任意程序语言编写的程序的编译时间(compile-time)、链接时间(link-time)、运行时间(run-time)以及空闲时间(idle-time),对开发者保持开放,并兼容已有脚本。LLVM最早的时候是Illinois的一个研究项目,主要负责人是Chris Lattner,他现在就职于A...
2018-11-12 15:48:00
63999
4
转载 数据库原理
由于本文是个长篇技术文章,涉及到很多算法和数据结构知识,你尽可以慢慢读。有些概念比较难懂,你可以跳过,不影响理解整体内容。这篇文章大约分为3个部分:底层和上层数据库组件概况 查询优化过程概况 事务和缓冲池管理概况回到基础很久很久以前(在一个遥远而又遥远的星系……),开发者必须确切地知道他们的代码需要多少次运算。他们把算法和数据结构牢记于心,因为他们的计算机运行缓慢,无法承受对CP...
2018-10-11 11:05:57
251
转载 MapD的结构信息(几个图解)
MapD的结构信息(几个图解)MapD开源了有两个月的时间了,终于公布了其内部的一些结构信息,如下:MapD连接方式: 下面也是连接方式的图解:下面是MapD的数据分类的图示: ...
2018-09-26 19:40:00
3707
1
原创 mapd环境部署
MapD Technologies将MapD Core数据库进行开源啦。MapD是使用图形处理单元(GPU)以毫秒为单位分析数十亿行数据的先驱,比传统的基于CPU的数据库快几个数量级。MapD Core数据库及其可视化库开源让每个人都可以使用这个世界上最快的分析平台。准备工具服务系统为: CentOS 7 64位 SSH登陆工具系统准备 下面全部在root用户下执行,...
2018-09-26 16:52:32
3314
原创 GPU数据库
1. CPU需要很强的通用性来处理各种不同的数据类型 针对逻辑进行分支和跳转 针对顺序串行优化 :逻辑控制, 串行运算, 通用计算2. GPU 数据类型统一、不依赖大量数据、不被打断的纯计算:高并发(简单)运算, 高吞吐量运算, 计算密集(ALU单元)主流GPU数据库介绍MapD MapD成立于2013年,总部位于旧金山,是一家为企业提供图形处理器GPU数据分析服务的初创企...
2018-09-20 11:31:12
1469
原创 Paxos算法的通俗理解
Paxos算法的通俗理解维基的简介:Paxos算法是莱斯利·兰伯特(Leslie Lamport,就是 LaTeX 中的"La",此人现在在微软研究院)于1990年提出的一种基于消息传递且具有高度容错特性的一致性算法。Paxos算法目前在Google的Chubby、MegaStore、Spanner等系统中得到了应用,Hadoop中的ZooKeeper也使用了Paxos算法,在上面的各个系...
2018-09-19 16:27:10
255
原创 Zookeeper的功能以及工作原理
1.ZooKeeper是什么?ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户2.ZooKeeper提供了什么?1)文件系统2)通知机制3.Zookeeper文件系统每个子目录项如 N...
2018-09-14 17:31:02
105
原创 hyperledger fabric chaincode 开发
chaincode是由go语言写的,实现了定义的接口。其他语言例如JAVA也是支持的。通过application的transaction,chaincode可以初始化并管理Ledger状态。本文基于一个用于在Ledger上创建资产(键值对)的简单案例来讲述如何在fabric开发智能合约代码1.1 首选需要确定Go的环境被安装以及被合适的配置。为了简单起见,我们使用以下命令:mkdir ...
2018-09-12 15:49:26
603
原创 分布式技术点和技术趋势
本人参加了DTCC2018数据库大会,将各大公司明星产品的特点进行了个人总结,目前分布式数据库、存储领域内采用的比较领先的技术和技术趋势。RDMA、HTAP、用户空间文件系统以及底层高性能硬件的引入必然是未来的技术趋势 1)容器化技术: 容器化不是一个革命性想法,容器技术已经存在很多年并且被大量应用程序所使用,将数据库容器化是DBA架构...
2018-09-03 10:49:38
2894
原创 快速部署hyperleger_fabric1.0.0
CentOS下快速部署fabric项目1. 安装gityum install git2. 安装go环境centos的yum虽然提供了Go的安装,但是版本比较旧,最好的方法还是参考官方网站,下载最新版的Go。具体涉及到的命令包括:去https://www.golangtc.com/download下载相应版本安装包sudo tar -C /usr/local -xzf g...
2018-09-01 15:31:10
486
原创 Bittorrent 机制
一、做种现在很多BT软件都提供了做种功能,在做种时,我们都必须指定tracker服务器地址,如果该地址无效,则做出来的种子对BT协议来说是没有任何实际意义的。二、bt tracker服务对于纯BT协议来说,每个BT网络中至少要有一台Tracker服务器(追踪服务器),tracker主要基本工作有以下几个方面:记录种子信息(torrent文件信息) 记录节点信息 计算并返回节点列表给BT客户...
2018-08-27 19:28:26
1529
转载 架构 BitTorrent BT服务器
BitTorrent介绍:传统的文件下载服务都是基于客户端/服务器模型,被下载的文件放在服务器上,用户登录服务器,将该文件下载到本地。在文件下载的过程中,被传输文件的来源和目的端并不对等,服务器只是单向地将文件传送给客户端。 这种传统软件下载模式的缺点是显而易见的,整个系统的瓶颈位于服务器。由于受到服务器处理能力、互联网接入链路带宽等多种环境的制约,当下载量非常大时,服务器往往不堪重负。而...
2018-08-27 14:36:56
7221
原创 Nvidia TX1 开发环境搭建
一、 操作系统镜像刷机1.开发板设置刷机模式长按住rec键同时点击rst复位键一下 2s后松开rec键进入刷机模式2. usb 连接主机和开发板3 . untar Linux_for_Tegra sudo tar xpf Tegra210_Linux_R23.0.0_armhf.tbz24. Untar the files and assemble the rootfs...
2018-08-24 16:38:22
1457
原创 浅谈数据库操作的左连接、右连接、内外连接的作用
左连接: 左连接(left join)即为两张表进行连接时,是以处于left join语句左侧的表为基准去匹配left join语句右边的表,如果左表中的一条数据在右表中能找到与之对应的一条数据,那么就会出现在以虚表形式存在的结果表中,如果没有找到,那么会以null来代替右表中的数据去匹配左表。这样会有一个鲜明的对比,左表中的每一条数据中的对象在右表中的某个属性的存在性是一目了然的。同时在使...
2018-08-23 09:13:26
4410
原创 预研
一、预研介绍预研=预先+研究。在公司的项目开发中,当我们要新增一个功能模块(来自外部竞争对手的迫使、来自客户或市场的需求、来自公司高层的决策等),这个时候我们就需要提前研究下该功能模块的以下几个方面:1、如何实现新的功能?执行项目小组会商讨出实现功能的方案1,2,3。方案都具有理论可行性,到具体实操性有待论证,这点也是预研的工作。2、有哪些难点?(核心)方案1,2,3在实施的时...
2018-08-22 16:39:31
12260
原创 valgrind工具使用
Valgrind的最新版是3.2.3,该版本包含下列工具:1、memcheck:检查程序中的内存问题,如泄漏、越界、非法指针等。2、callgrind:检测程序代码覆盖,以及分析程序性能。3、cachegrind:分析CPU的cache命中率、丢失率,用于进行代码优化。4、helgrind:用于检查多线程程序的竞态条件。5、massif:堆栈分析器,指示程序中使用了多少堆内存等...
2018-08-22 13:57:08
554
原创 C#调用C++dll方法和注意事项
在实际C#开发项目中,存在如下两种情况C#调用第三方库,而第三方库是使用C++编写的; 牵涉到项目源代码保密,C#代码容易被反编译,因此抽取核心算法部分使用C++编写这时候就涉及C#托管代码与C++非托管代码互相调用。本文介绍C#调用C++的方法以及在C#调用C++产生问题的排查过程和经验总结。下面介绍C#如何静态和动态调用C++库;一、C#中静态调用C++动态链接1. 建...
2018-08-21 19:13:03
1979
原创 C++ MATLAB 混合编程
Matlab是当前应用最为广泛的数学软件,可快速实现十分复杂的功能,减少开发时间,极大地提高工程分析计算的效率,但与其他高级程序(C、C++)相比,Matlab程序是一种解释执行程序,某些情况程序执行速性能不如C、C++。C/C++语言是目前最为流行的高级程序设计语言之一。它可对操作系统和应用程序以及硬件进行直接操作,用C/C++语言明显优于其它解释型高级语言,但是相对于MATLAB编程难度较高...
2018-08-21 18:58:34
1126
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人