- 博客(20)
- 资源 (9)
- 收藏
- 关注
原创 zlib源码分析—DEFLATE算法原理及实现
从上一篇博客zlib源码分析—compress函数学习了compress函数的代码,这一篇我们来详细分析一下deflate算法的流程。先从compress代码中所体现出来的deflate函数的返回值和输入参数看起。通过源数据长度来判别第二个参数是Z_NO_FLUSH还是Z_FINISH(这里我们知道deflate第二个参数可以输入两个中参数Z_NO_FLUSH或Z_FINISH),即如果源数据长度为0,第二个参数为Z_FINISH,否则为Z_NO_FLUSH。deflate返回值为Z_OK为正常状态,返回Z
2020-10-28 23:29:14
2181
原创 zlib源码分析—输出Buffer机制
双缓冲概述向pending_buf输入数据向pending_buf中输出单字节数据,pending用于指示pending_buf中数据的数量(以字节为单位)。/* Output a byte on the stream. * IN assertion: there is enough room in pending_buf. */#define put_byte(s, c) {s->pending_buf[s->pending++] = (Bytef)(c);}put_short
2020-10-28 21:08:30
2067
原创 CUDA C++ Programming Guide——编程接口 CUDA Runtime Multi-Device System
Multi-Device SystemDevice Enumeration一个主机系统可以有多个设备。 下面的代码示例演示如何枚举这些设备,查询它们的属性以及确定启用CUDA的设备的数量。int deviceCount;cudaGetDeviceCount(&deviceCount);int device;for (device = 0; device < deviceCount; ++device) { cudaDeviceProp deviceProp; cud
2020-10-25 23:25:33
2090
原创 Linux中LANG,LC_ALL,local详解
locale 是国际化与本土化过程中的一个非常重要的概念,个人认为,对于中文用户来说,通常会涉及到的国际化或者本土化,大致包含三个方面:看中文,写中文,与 window中文系统的兼容和通信。从实际经验上看来,locale的设定与看中文关系不大,但是与写中文,及window分区的挂载方式有很密切的关系。本人认为就像一个纯英文的Windows能够浏览中文,日文或者意大利文网页一样,你不需要设定loca...
2020-10-25 22:18:20
2161
原创 Mybatis学习笔记-配置Log4j以便查看MyBatis操作数据库的过程
配置Log4j在src/main/resources中添加log4j.properties配置文件编写测试代码在配置中加入该SQL语句返回的结果集的封装类型自行测试java.sql.SQLNonTransientConnectionException: Public Key Retrieval is not allowed在连接数据库的url中,加上allowPublicKeyRetrieval=true <!-- 配置连接池 -->
2020-10-25 18:54:50
2124
原创 Java 解决:SAXParseException,对实体 “serverTimezone“ 的引用必须以 ‘;‘ 分隔符结尾
我的xml配置如下:报错信息:Caused by: org.xml.sax.SAXParseException; lineNumber: 14; columnNumber: 77; 对实体 "serverTimezone" 的引用必须以 ';' 分隔符结尾。 at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) .
2020-10-25 18:53:02
2147
原创 Docker上搭建Visual Studio Code Server
安装Docker容器环境安装Docker和Docker Compose作为应用程序运行的基础环境,使用Ubuntu 18.04 LTS作为运行Docker的底层系统。安装Docker环境安装Docker环境安装Docker-Compose环境,其中1.25.3可以根据最新版本修改部署WebIDE使用code-serrver解决方案将Visual Studio Code在服务器中运行,可以在浏览器中使用Visual Studio Code。创建项目文件夹在Docker中运行Code-
2020-10-24 08:43:32
2608
4
原创 大型网站技术架构:核心原理与案例分析——扩展性
扩展性指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。表现在系统基础设施稳定不需要经常变更,应用之间较少依赖和耦合,对需求变更可以敏捷响应。它是系统架构设计层面的开闭原则(对扩展开放,对修改关闭),架构设计考虑未来功能扩展,当系统增加新功能时,不需要对现有系统的结构和代码进行修改。利用分布式消息队列降低系统耦合性如果模块之间不存在直接调用,那么新增模块或者修改模块就对其他模块影响最小,这样系统的可扩展性无疑更好一些。事件驱动架构 Event Driven Architecture事件驱
2020-10-24 08:42:59
2165
原创 Cobar分布式关系数据库访问代理
Cobar是阿里巴巴开源的一个分布式关系数据库访问代理,介于应用服务器和数据库服务器之间(Cobar也支持非独立部署,以lib的方式和应用程序部署在一起)。应用程序通过JDBC驱动访问Cobar集群,Cobar服务器根据SQL和分库规则分解SQL,分发到MySQL集群不同的数据库实例上执行(每个MySQL实例都部署为主/从结构,保证数据高可用)。前端通信模块负责和应用程序通信,接收到SQL请求(select * from users where userid in (12,22,23))后转交给SQL解
2020-10-24 08:41:58
2167
原创 Makefile 变量MAKEFILE_LIST
make程序在读取多个makefile文件时,包括由环境变量“MAKEFILES”指定、命令行指定、当前工作下的默认的以及使用指示符“include”指定包含的,在这些文件进行解析执行之前make读取的文件名将会被自动依次追加到变量“MAKEFILE_LIST”的定义域中。这样我们就可以通过测试此变量的最后一个字来获取当前make程序正在处理的makefile文件名。具体的说就是在一个makefile文件中如果使用指示符“include”包含另一个文件之后,变量“MAKEFILE_LIST”的最后一个字只
2020-10-24 08:40:46
2377
2
原创 CUDA C++ Programming Guide——编程接口 CUDA Runtime Asynchronous Concurrent Execution
Asynchronous Concurrent ExecutionCUDA将以下操作公开为可以彼此并发运行的独立任务:主机上的计算;设备上的计算;内存从主机传输到设备;内存从设备传输到主机;内存在给定设备的内存中传输;设备之间的内存传输。这些操作之间实现的并发级别将取决于设备的功能集和计算能力,如下所述。Concurrent Execution between Host and Device异步库函数可促进并发主机执行(Concurrent host execution is fac
2020-10-24 08:38:22
2173
原创 zlib源码分析—compress函数
本篇博客的目的是分析compress.c中的函数,主要目的是学习deflate函数的使用。先从compress函数说起,compress函数其实就是以压缩级别Z_DEFAULT_COMPRESSION调用函数compress2。从zlib.h中第190行的宏定义可以看出zlib支持的压缩级别分为Z_NO_COMPRESSION(不压缩模式)、Z_BEST_SPEED(最快速度压缩模式)、Z_BEST_COMPRESSION(最高压缩率压缩模式)、Z_DEFAULT_COMPRESSION(默认压缩模式)。
2020-10-24 08:33:18
2320
原创 Kubernets v1.3.0二进制安装
关闭防火墙systemctl disable firewalldsystemctl stop firewalldMaster上的etcd、kube-apiserver、kube-controller-manager、kube-scheduler服务etcd服务etcd服务作为kubernets集群的主数据库,在安装Kubernets各服务之前需要首先安装和启动。从Github官网下载etcd发布的二进制文件etcd-v3.4.9-linux-amd64,将etcd和etcdctl文件复制到/us
2020-10-17 18:53:11
2292
原创 大型网站技术架构:核心原理与案例分析——伸缩性
网站架构的伸缩性设计网站的伸缩性设计可分为两类,一类是根据功能进行物理分离实现伸缩,一类是单一功能通过集群实现伸缩。前者是不同的服务器部署不同的服务,提供不同的功能;后者是集群内的多台服务器部署相同的服务,提供相同的功能。不同功能进行物理分离实现伸缩纵向分离:将业务处理流程上的不同部分分离部署,实现系统伸缩性。横向分离:将不同的业务模块分离部署,实现系统伸缩性。单一功能通过集群规模实现伸缩应用服务器集群的伸缩性设计HTTP重定向负载均衡HTTP重定向服务器是一台普通的应用服务器,其唯一的功能
2020-10-12 23:17:09
2436
1
原创 海量分布式存储系统Doris
Doris是一个海量分布式KV存储系统,其设计目标是支持中等规模高可用、可伸缩的KV存储集群。跟主流的NoSQL系统HBase相比,其具有相似的性能和线性伸缩能力,并具有更好的可用性及更友好的图形用户管理界面。对于一个数据存储系统而言,高可用意味着两个意思:高可用的服务:任何时候,包括宕机、硬盘损坏、系统升级、停机维护、集群扩容等各种情况,都可以对系统进行读写访问操作。高可靠的数据:任何情况下,数据可靠存储,不丢失。分布式存储系统的高可用架构在系统架构层面,保证高可用的主要手段是冗余:服务器热备
2020-10-11 22:09:26
2484
原创 大型网站技术架构:核心原理与案例分析——高可用
高可用的应用应用层的显著特点是无状态性,所谓无状态的应用是指应用服务器不保存业务的上下文信息,而仅根据每次请求提交的数据进行相应的业务逻辑处理,多个服务实例之间完全对等,请求提交到任意服务器,处理结果都是完全一样的。通过负载均衡进行无状态服务的失效转移应用服务器集群的Session管理业务总是有状态的,在交易类的电子商务网站,需要有购物车记录用户的购买信息,用户买次购买请求都是向购物车中添加商品等。Web应用中将这些多次请求修改使用的上下文对象称为会话Session,单机情况下,Session可..
2020-10-11 16:11:04
2485
原创 大型网站技术架构:核心原理与案例分析——性能
Web前端性能优化浏览器访问优化减少http请求HTTP协议是无状态的应用层协议,意味着每次HTTP请求都需要建立通信链路、进行数据传输,而在服务端,每个HTTP都需要启动独立的线程去处理。这些通信和服务的开销都很昂贵,减少HTTP请求的数目可有效提高访问性能。减少HTTP的主要手段是合并CSS、合并JavaScript、合并图片。将浏览器一次访问需要的JavaScript、CSS合并成一个文件,这样浏览器就只需要一次请求。图片也可以合并,多张图片合并成一张,如果每张图片都有不同的超链接,可通过CSS
2020-10-11 10:36:17
2465
原创 大型网站技术架构:核心原理与案例分析——大型网站架构演化
大型网站软件系统的特点:高并发,大流量、高可用、海量数据、用户分布广泛,网络情况复杂、安全环境恶劣、需求快速变更,发布频繁、渐进式发展。大型网站架构演化初始阶段的网站架构大型网站都是从小型网站发展而来,网站架构也是一样,是从小型网站结构逐步演化而来。小型网站最开始时没有太多人访问,只需要一台服务器就能够应付。应用程序、数据库、文件等所有的资源都在一台服务器上。通常服务器操作系统使用Linu...
2020-10-09 23:25:29
2507
1
原创 CUDA C++ Programming Guide——编程接口 Compilation with NVCC
Programming InterfaceCUDA C ++为熟悉C ++编程语言的用户提供了一条简单的路径,可以轻松编写程序以供设备执行。它由对C ++语言的最小扩展集和运行时库组成。核心语言扩展已在“编程模型”中引入。它们允许程序员将内核定义为C ++函数,并在每次调用该函数时使用一些新语法指定网格和块尺寸。有关所有扩展的完整说明,请参见C ++语言扩展。包含其中一些扩展名的任何源文件都必须使用nvcc进行编译,如使用NVCC进行编译中所述。运行时在CUDA运行时中引入。它提供了C和C ++函数,这
2020-10-08 13:08:42
2568
1
qttest.rar
2020-02-21
信息可视化 交互设计
2019-01-21
实时碰撞检测算法技术
2019-01-21
GPU Pro 7 - Advanced Rendering Techniques
2019-01-18
嵌入式系统 硬件与软件架构
2019-01-18
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人 TA的粉丝