首页 文章 精选 留言 我的

精选列表

搜索[SpringBoot4],共10000篇文章
优秀的个人博客,低调大师

Kotlin 2018 调查:1/4 的 Java 开发者在迁移后表示后悔

来自伦敦的 Pusher 公司昨天发布了“The State of Kotlin 2018”调查报告,该公司在2018年1月至3月期间对 2744 名开发者进行了调查,以了解 Kotlin 语言,及其生态系统的发展趋势。 Kotlin 自发布后,使用率每年都有在增长。2015年,其使用率首次出现大幅上升,从上一年的 1.4% 增至 7.7% 。之后,Kotlin 迎来快速增长期,尤其是在2017年 Google 宣布 Kotlin 正式支持 Android 后,大量的 Android 开发者开始使用 Kotlin ,使用率再次翻倍。 不过,调查显示,多数开发者依然没有将 Kotlin 作为其工作中的主要开发语言。受访开发者中,大多为 Java 开发,其次是 JavaScript 和 Python 。Kotlin 目前的主要使用者是学生和年轻开发者,并且更多的是被用于私人项目,而非工作项目中。 当谈到最喜欢的功能特性时,大多数受访者表示喜欢的是 Kotlin 的安全性,其次是扩展函数,和与 Java 的互操作性。 除了使用 Kotlin 扩展 Java 类之外,有超过87%的受访者表示曾将现有的 Java 代码迁移到 Kotlin 。不过也有超过四分之一的开发者在将 Java 迁移到 Kotlin 后因种种原因表示后悔,再次返回Java 。

优秀的个人博客,低调大师

ICASSP Oral 论文:阿里提出低计算量语音合成系统,速度提升4

研究背景 语音合成系统主要分为两类,拼接合成系统和参数合成系统。其中参数合成系统在引入了神经网络作为模型之后,合成质量和自然度都获得了长足的进步。另一方面,物联网设备(例如智能音箱和智能电视)的大量普及也对在设备上部署的参数合成系统提出了计算资源的限制和实时率的要求。本工作引入的深度前馈序列记忆网络可以在保持合成质量的同时,有效降低计算量,提高合成速度。 我们使用基于双向长短时记忆单元(BLSTM)的统计参数语音合成系统作为基线系统。与其他现代统计参数语音合成系统相似,我们提出的基于深度前馈序列记忆网络(DFSMN)的统计参数语音合成系统也是由3个主要部分组成,声音合成器(vocoder),前端模块和后端模块,如上图所示。我们使用开源工具WORLD作为我们的声音合成器,用来在模型训练时从原始语音波形中提取频谱信息、基频的对数、频带周期

优秀的个人博客,低调大师

《从零开始学Swift》学习笔记(Day4)——用Playground工具编写Swift

用Playground编写Swift代码目的是为了学习、测试算法、验证想法和可视化看到运行结果,不是为了使最终的程序编译和发布。 Playground程序运行①区域是代码编写视图;②区域是运行结果视图;③区域是时间轴视图;④区域是控制台视图,使用print等日志函数将结果输出到控制台,可以通过左下角的按钮隐藏和显示控制台。 默认情况下时间轴视图是不显示的,可以通过助手编辑器打开Playground时间轴视图。在出现的工具栏中,单击打开助手编辑器,在助手编辑器中有时间轴视图。 本文转自 tony关东升 51CTO博客,原文链接:http://blog.51cto.com/tonyguan/1744588,如需转载请自行联系原作者

优秀的个人博客,低调大师

Android系统匿名共享内存(Anonymous Shared Memory)C++调用接口分析(4

2.MemoryBase 文章开始时说过,MemoryBase接口是建立在MemoryHeapBase接口的基础上的,它们都可以作为一个Binder对象来在进程间进行数据共享,它们的关系如下所示: MemoryBase类包含了一个成员变量mHeap,它的类型的IMemoryHeap,MemoryBase类所代表的匿名共享内存就是通过这个成员变量来实现的。 与MemoryHeapBase的分析过程一样,我们先来看MemoryBase类在Server端的实现,然后再来看它在Client端的实现。 MemoryBase在Server端实现的类图如下所示: MemoryBase类在Server端的实现与MemoryHeapBase类在Server端的实现是类似的,这里只要把IMemory类换成IMemoryHeap类、把BnMemory类换成BnMemoryHeap类以及MemoryBase类换成MemoryHeapBase类就变成是MemoryHeapBase类在Server端的实现了,因此,我们这里只简单分析IMemory类和MemoryBase类的实现。 IMemory类定义了MemoryBase类所需要实现的接口,这个类定义在frameworks/base/include/binder/IMemory.h文件中: classIMemory:publicIInterface { public: ...... virtualsp<IMemoryHeap>getMemory(ssize_t*offset=0,size_t*size=0)const=0; ...... void*pointer()const; size_tsize()const; ssize_toffset()const; }; 成员函数getMemory用来获取内部的MemoryHeapBase对象的IMemoryHeap接口;成员函数pointer()用来获取内部所维护的匿名共享内存的基地址;成员函数size()用来获取内部所维护的匿名共享内存的大小;成员函数offset()用来获取内部所维护的这部分匿名共享内存在整个匿名共享内存中的偏移量。 IMemory类本身实现了pointer、size和offset三个成员函数,因此,它的子类,即MemoryBase类,只需要实现getMemory成员函数就可以了。IMemory类的实现定义在frameworks/base/libs/binder/IMemory.cpp文件中: void*IMemory::pointer()const{ ssize_toffset; sp<IMemoryHeap>heap=getMemory(&offset); void*constbase=heap!=0?heap->base():MAP_FAILED; if(base==MAP_FAILED) return0; returnstatic_cast<char*>(base)+offset; } size_tIMemory::size()const{ size_tsize; getMemory(NULL,&size); returnsize; } ssize_tIMemory::offset()const{ ssize_toffset; getMemory(&offset); returnoffset; } MemoryBase类声明在frameworks/base/include/binder/MemoryBase.h文件中: classMemoryBase:publicBnMemory { public: MemoryBase(constsp<IMemoryHeap>&heap,ssize_toffset,size_tsize); ...... virtualsp<IMemoryHeap>getMemory(ssize_t*offset,size_t*size)const; ...... private: size_tmSize; ssize_tmOffset; sp<IMemoryHeap>mHeap; }; MemoryBase类实现在frameworks/base/libs/binder/MemoryBase.cpp文件中: MemoryBase::MemoryBase(constsp<IMemoryHeap>&heap, ssize_toffset,size_tsize) :mSize(size),mOffset(offset),mHeap(heap) { } sp<IMemoryHeap>MemoryBase::getMemory(ssize_t*offset,size_t*size)const { if(offset)*offset=mOffset; if(size)*size=mSize; returnmHeap; } 在它的构造函数中,接受三个参数,参数heap指向的是一个MemoryHeapBase对象,真正的匿名共享内存就是由它来维护的,参数offset表示这个MemoryBase对象所要维护的这部分匿名共享内存在整个匿名共享内存块中的起始位置,参数size表示这个MemoryBase对象所要维护的这部分匿名共享内存的大小。 成员函数getMemory的实现很简单,只是简单地返回内部的MemoryHeapBase对象的IMemoryHeap接口,如果传进来的参数offset和size不为NULL,还会把其内部维护的这部分匿名共享内存在整个匿名共享内存块中的偏移位置以及这部分匿名共享内存的大小返回给调用者。 这里我们可以看出,MemoryBase在Server端的实现只是简单地封装了MemoryHeapBase的实现。1 本文转自 Luoshengyang 51CTO博客,原文链接:http://blog.51cto.com/shyluo/966918,如需转载请自行联系原作者

优秀的个人博客,低调大师

学习虚幻4需要储备的知识(2D游戏开发者向)

这些都是入门可读的资料,所有英文资料都有中译本。 2D游戏引擎可认为是3D游戏引擎的子集+优化(可选)。简单的2D游戏引擎可以基于Draw(不用节点)和继承树(不用ECS),甚至没多少继承(直接堆Class)……而3D游戏引擎则要复杂一些。 各种效果术语扫盲 如果只是术语扫盲,官方文档好多是机翻,而且写的很详细(复杂)(各种流程,原理,例子,gif,视频混在一起),完全不如那些游戏网站,或者卖硬件的写的简单清楚,简单几句话就写完了(毕竟人家是要卖的),比如这个: 玩得更明白 显卡帝揭秘3D游戏画质特效 组件式引擎、ECS 现代引擎架构基本上都是组件式的,之前的那个似乎可以称作是继承树结构。继承人人都知道,但是继承的弊端并不是一两句话就能说清楚的。组件式扫盲文挺多,但是好多没有UML图和案例,这两个算是写的清楚点的: 一个基于组件的动态对象系统 Refactoring Game Entities with Components 游戏引擎整体概述 《游戏引擎基础知识》系列 本文是游戏记者西川善司在Fami通杂志上连载的系列专栏内容。 游戏引擎基础知识第一讲 游戏引擎怎么来的 游戏引擎基础知识第二讲 著名的游戏引擎 游戏引擎基础知识第三讲 五花八门的中间件 《Game Engine Architecture》 很棒的书,作者译者都是资深人士,看完就知道大概了,先有整体印象非常重要,否则你要在一堆记忆碎片上自己建立,那是很蛋疼的。如果实在没精力读的话,留着当字典查也行。 本文转自 老G 51CTO博客,原文链接:http://blog.51cto.com/goldlion/1765094 ,如需转载请自行联系原作者

资源下载

更多资源
优质分享App

优质分享App

近一个月的开发和优化,本站点的第一个app全新上线。该app采用极致压缩,本体才4.36MB。系统里面做了大量数据访问、缓存优化。方便用户在手机上查看文章。后续会推出HarmonyOS的适配版本。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Spring

Spring

Spring框架(Spring Framework)是由Rod Johnson于2002年提出的开源Java企业级应用框架,旨在通过使用JavaBean替代传统EJB实现方式降低企业级编程开发的复杂性。该框架基于简单性、可测试性和松耦合性设计理念,提供核心容器、应用上下文、数据访问集成等模块,支持整合Hibernate、Struts等第三方框架,其适用范围不仅限于服务器端开发,绝大多数Java应用均可从中受益。

Rocky Linux

Rocky Linux

Rocky Linux(中文名:洛基)是由Gregory Kurtzer于2020年12月发起的企业级Linux发行版,作为CentOS稳定版停止维护后与RHEL(Red Hat Enterprise Linux)完全兼容的开源替代方案,由社区拥有并管理,支持x86_64、aarch64等架构。其通过重新编译RHEL源代码提供长期稳定性,采用模块化包装和SELinux安全架构,默认包含GNOME桌面环境及XFS文件系统,支持十年生命周期更新。

用户登录
用户注册