首页 文章 精选 留言 我的

精选列表

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

HMS Core图片分类服务教你快速筛选、分类、整合相册

如今手机摄影越来越方便,随手一拍就能记录美好生活。但照片越多,整理越麻烦,有的时候我们想对照片进行二次加工、分享,需要不停翻找相册。HMS Core机器学习服务(ML Kit)提供了图片分类服务,方便用户在多个场景下快速筛选图片集、定义图片题材并标注分类信息。比如,期末老师时常会要求家长和孩子一起制作亲子成长手册,教育服务类App集成图片分类服务后可以把一个学期以来的所有照片分类汇总成相册;出去玩了多个景点或途径不同城市,旅游分享类App可以帮助用户整理基于某个位置或某个实物进行图片分类;在全场景下手机相册需要把照片同步到大屏上轮播,文件分享类App可以设置分享规则,分类上传。 接下来,请开发者们通过以下开发实战进行体验,同时期待大家将便捷的图片分类服务进一步带给用户~ 开发实战 1 开发准备 在进行开发前需要配置HMS Core SDK的Maven仓地址: repositories { maven { url'https://cmc.centralrepo.rnd.huawei.com/artifactory/product_maven/' } } 并集成本SDK: dependencies { // 引入基础SDK implementation 'com.huawei.hms:ml-computer-vision-classification:3.3.0.300' // 引入图片分类模型包 implementation 'com.huawei.hms:ml-computer-vision-image-classification-model:3.3.0.300' } 然后请参见云端鉴权信息使用须知,设置您应用的鉴权信息 2 编辑工程集成 2.1 设置应用的鉴权信息 可以通过api_key或者Access Token来设置应用鉴权信息。 通过setAccessToken方法设置Access Token,在应用启动时初始化设置一次即可,无需多次设置。 MLApplication.getInstance().setAccessToken("your access token"); 通过setApiKey方法设置api_key,在应用启动时初始化设置一次即可,无需多次设置。 MLApplication.getInstance().setApiKey("your ApiKey"); 2.2 创建静态图片检测器 // 方式一:端侧识别使用自定义参数配置。 MLLocalClassificationAnalyzerSetting setting = new MLLocalClassificationAnalyzerSetting.Factory() .setMinAcceptablePossibility(0.8f) .create(); MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer(setting); // 方式二:端侧识别使用默认参数配置。 MLImageClassificationAnalyzer analyzer = MLAnalyzerFactory.getInstance().getLocalImageClassificationAnalyzer(); 2.3 创建MLFrame // 通过bitmap创建MLFrame,bitmap为输入的Bitmap格式图片数据。支持的图片格式包括:jpg/jpeg/png/bmp,建议图片尺寸不小于112*112像素。 MLFrame frame = MLFrame.fromBitmap(bitmap); 2.4 调用asyncAnalyseFrame方法进行图像分类 Task<List<MLImageClassification>> task = analyzer.asyncAnalyseFrame(frame); task.addOnSuccessListener(new OnSuccessListener<List<MLImageClassification>>() { @Override public void onSuccess(List<MLImageClassification> classifications) { // 识别成功。 // 遍历返回的列表MLImageClassification,获取分类名称等信息。 } }).addOnFailureListener(new OnFailureListener() { @Override public void onFailure(Exception e) { // 识别失败。 // Recognition failure. try { MLException mlException = (MLException)e; // 获取错误码,开发者可以对错误码进行处理,根据错误码进行差异化的页面提示。 int errorCode = mlException.getErrCode(); // 获取报错信息,开发者可以结合错误码,快速定位问题。 String errorMessage = mlException.getMessage(); } catch (Exception error) { // 转换错误处理。 } } }); 2.5 识别完成后停止分析器 try { if (analyzer != null) { analyzer.stop(); } } catch (IOException e) { // 异常处理。 } 3 演示及说明 3.1说明 图片分类功能包含静态端侧、静态云侧、动态检测,以上示例仅为静态端侧功能。 3.2 演示 了解更多详情>> 访问华为开发者联盟官网 获取开发指导文档 华为移动服务开源仓库地址:GitHub、Gitee 关注我们,第一时间了解 HMS Core 最新技术资讯~

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

SpringBoot2.0高级案例(04): 整合sharding-jdbc中间件,实现数据分库分表

一、水平分割 1、水平分库 1)、概念: 以字段为依据,按照一定策略,将一个库中的数据拆分到多个库中。 2)、结果 每个库的结构都一样;数据都不一样; 所有库的并集是全量数据; 2、水平分表 1)、概念 以字段为依据,按照一定策略,将一个表中的数据拆分到多个表中。 2)、结果 每个表的结构都一样;数据都不一样; 所有表的并集是全量数据; 二、Shard-jdbc 中间件 1、架构图 2、特点 1)、Sharding-JDBC直接封装JDBC API,旧代码迁移成本几乎为零。 2)、适用于任何基于Java的ORM框架,如Hibernate、Mybatis等 。 3)、可基于任何第三方的数据库连接池,如DBCP、C3P0、 BoneCP、Druid等。 4)、以jar包形式提供服务,无proxy代理层,无需额外部署,无其他依赖。 5)、分片策略灵活,可支持等号、between、in等多维度分片,也可支持多分片键。 6)、SQL解析功能完善,支持聚合、分组、排序、limit、or等查询。 三、项目演示 1、项目结构 springboot 2.0 版本 druid 1.1.13 版本 sharding-jdbc 3.1 版本 2、数据库配置 一台基础库映射(shard_one) 两台库做分库分表(shard_two,shard_three)。 表使用:table_one,table_two 3、核心代码块 数据源配置文件 spring: datasource: # 数据源:shard_one dataOne: type: com.alibaba.druid.pool.DruidDataSource druid: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/shard_one?useUnicode=true&amp;characterEncoding=UTF8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false username: root password: 123 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 max-evictable-idle-time-millis: 60000 validation-query: SELECT 1 FROM DUAL # validation-query-timeout: 5000 test-on-borrow: false test-on-return: false test-while-idle: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 数据源:shard_two dataTwo: type: com.alibaba.druid.pool.DruidDataSource druid: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/shard_two?useUnicode=true&amp;characterEncoding=UTF8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false username: root password: 123 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 max-evictable-idle-time-millis: 60000 validation-query: SELECT 1 FROM DUAL # validation-query-timeout: 5000 test-on-borrow: false test-on-return: false test-while-idle: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 # 数据源:shard_three dataThree: type: com.alibaba.druid.pool.DruidDataSource druid: driverClassName: com.mysql.jdbc.Driver url: jdbc:mysql://localhost:3306/shard_three?useUnicode=true&amp;characterEncoding=UTF8&amp;zeroDateTimeBehavior=convertToNull&amp;useSSL=false username: root password: 123 initial-size: 10 max-active: 100 min-idle: 10 max-wait: 60000 pool-prepared-statements: true max-pool-prepared-statement-per-connection-size: 20 time-between-eviction-runs-millis: 60000 min-evictable-idle-time-millis: 300000 max-evictable-idle-time-millis: 60000 validation-query: SELECT 1 FROM DUAL # validation-query-timeout: 5000 test-on-borrow: false test-on-return: false test-while-idle: true connectionProperties: druid.stat.mergeSql=true;druid.stat.slowSqlMillis=5000 数据库分库策略 /** * 数据库映射计算 */ public class DataSourceAlg implements PreciseShardingAlgorithm<string> { private static Logger LOG = LoggerFactory.getLogger(DataSourceAlg.class); @Override public String doSharding(Collection<string> names, PreciseShardingValue<string> value) { LOG.debug("分库算法参数 {},{}",names,value); int hash = HashUtil.rsHash(String.valueOf(value.getValue())); return "ds_" + ((hash % 2) + 2) ; } } 数据表1分表策略 /** * 分表算法 */ public class TableOneAlg implements PreciseShardingAlgorithm<string> { private static Logger LOG = LoggerFactory.getLogger(TableOneAlg.class); /** * 该表每个库分5张表 */ @Override public String doSharding(Collection<string> names, PreciseShardingValue<string> value) { LOG.debug("分表算法参数 {},{}",names,value); int hash = HashUtil.rsHash(String.valueOf(value.getValue())); return "table_one_" + (hash % 5+1); } } 数据表2分表策略 /** * 分表算法 */ public class TableTwoAlg implements PreciseShardingAlgorithm<string> { private static Logger LOG = LoggerFactory.getLogger(TableTwoAlg.class); /** * 该表每个库分5张表 */ @Override public String doSharding(Collection<string> names, PreciseShardingValue<string> value) { LOG.debug("分表算法参数 {},{}",names,value); int hash = HashUtil.rsHash(String.valueOf(value.getValue())); return "table_two_" + (hash % 5+1); } } 数据源集成配置 /** * 数据库分库分表配置 */ @Configuration public class ShardJdbcConfig { // 省略了 druid 配置,源码中有 /** * Shard-JDBC 分库配置 */ @Bean public DataSource dataSource (@Autowired DruidDataSource dataOneSource, @Autowired DruidDataSource dataTwoSource, @Autowired DruidDataSource dataThreeSource) throws Exception { ShardingRuleConfiguration shardJdbcConfig = new ShardingRuleConfiguration(); shardJdbcConfig.getTableRuleConfigs().add(getTableRule01()); shardJdbcConfig.getTableRuleConfigs().add(getTableRule02()); shardJdbcConfig.setDefaultDataSourceName("ds_0"); Map<string,datasource> dataMap = new LinkedHashMap&lt;&gt;() ; dataMap.put("ds_0",dataOneSource) ; dataMap.put("ds_2",dataTwoSource) ; dataMap.put("ds_3",dataThreeSource) ; Properties prop = new Properties(); return ShardingDataSourceFactory.createDataSource(dataMap, shardJdbcConfig, new HashMap&lt;&gt;(), prop); } /** * Shard-JDBC 分表配置 */ private static TableRuleConfiguration getTableRule01() { TableRuleConfiguration result = new TableRuleConfiguration(); result.setLogicTable("table_one"); result.setActualDataNodes("ds_${2..3}.table_one_${1..5}"); result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("phone", new DataSourceAlg())); result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("phone", new TableOneAlg())); return result; } private static TableRuleConfiguration getTableRule02() { TableRuleConfiguration result = new TableRuleConfiguration(); result.setLogicTable("table_two"); result.setActualDataNodes("ds_${2..3}.table_two_${1..5}"); result.setDatabaseShardingStrategyConfig(new StandardShardingStrategyConfiguration("phone", new DataSourceAlg())); result.setTableShardingStrategyConfig(new StandardShardingStrategyConfiguration("phone", new TableTwoAlg())); return result; } } 测试代码执行流程 @RestController public class ShardController { @Resource private ShardService shardService ; /** * 1、建表流程 */ @RequestMapping("/createTable") public String createTable (){ shardService.createTable(); return "success" ; } /** * 2、生成表 table_one 数据 */ @RequestMapping("/insertOne") public String insertOne (){ shardService.insertOne(); return "SUCCESS" ; } /** * 3、生成表 table_two 数据 */ @RequestMapping("/insertTwo") public String insertTwo (){ shardService.insertTwo(); return "SUCCESS" ; } /** * 4、查询表 table_one 数据 */ @RequestMapping("/selectOneByPhone/{phone}") public TableOne selectOneByPhone (@PathVariable("phone") String phone){ return shardService.selectOneByPhone(phone); } /** * 5、查询表 table_one 数据 */ @RequestMapping("/selectTwoByPhone/{phone}") public TableTwo selectTwoByPhone (@PathVariable("phone") String phone){ return shardService.selectTwoByPhone(phone); } } 四、项目源码 GitHub地址:知了一笑 https://github.com/cicadasmile/middle-ware-parent 码云地址:知了一笑 https://gitee.com/cicadasmile/middle-ware-parent

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

《私有云计算整合、虚拟化和面向服务的基础设施》一1.4云计算分类

1.4云计算分类 云计算不是一个完全崭新的概念,值得一提的是最初的云雏形源自对TCP/IP的抽象,以Internet为标志。随着超文本传送协议(HyperText Transfer Protocol,HTTP)的诞生,万维网(World Wide Web,WWW)数据抽象在第一代云基础上创建了第二代云。新兴的云技术提倡由服务器、应用程序、数据以及异构平台组成一个抽象的基础设施,处于比前二者更底层的位置。根据美国国家技术与标准局(National Institute of Stardard and Technology,NIST)[3]对云计算的定义分类,种类繁多的云均可以被涵盖在四个发布模型和三个服务模型之内。 1.4.1部署模式 按部署模式不同,可以将云系统分成以下四种: 公有云(public cloud):云基础设施属于某些提供云服

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

《私有云计算整合、虚拟化和面向服务的基础设施》一2.4存储虚拟化

2.4存储虚拟化 存储虚拟化是存储模块的主要焦点(参见图2-2),它抽象了服务器应用访问数据时的逻辑表现与数据的物理位置,实现了位置无关性(云计算的基本特征之一)。虚拟系统负责管理卷到实际物理位置的映射过程,使逻辑实体以卷的形式展现给用户。虚拟化软件或虚拟化设备负责维护映射表,它也是元数据的一部分。映射粒度小至物理磁盘的一部分,大至整个物理磁盘,在这样的环境中,单个信息块由其LUN,也即物理磁盘,以及LUN内的偏移地址一起确定,这一偏移地址也称为逻辑块地址(Logical Block Address,LBA)[16]。逻辑实体通常指虚拟磁盘,物理磁盘之间的地址空间映射由它们各自的LUN确定。说明:物理磁盘也可以仅为存储的一部分,例如从底层磁盘子系统中的RAID阵列切出来的一块。从另一个角度来看,传统存储管理通常采用到主机系统的DAS

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

谷歌搜索测试「AI Mode」:整合多模态和实时信息、一键解答复杂问题

谷歌公司昨日发布博文,邀请谷歌搜索用户测试全新的“AI 模式”(AI Mode)。用户可以提出更复杂的问题,并基于搜索结果,AI 生成更详细、更直观的答案。 谷歌表示,AI 模式将提供更高级的推理、思考和多模态能力,帮助用户更高效地获取信息。 谷歌表示,以往用户在处理复杂问题时,往往需要多次搜索才能解决,而“AI 模式”能够解决这个痛点。用户只需在桌面或移动设备上输入查询,点击新的“AI 模式”按钮即可体验。 此外,AI 模式页面底部还提供了“深入探索”快捷入口,用户可直接跳过常规搜索结果,专注于 AI 生成的内容。 在移动设备上,用户可以通过上传图片或语音输入查询,但目前仅支持文本输出。AI 模式还支持历史搜索记录,方便用户查看过往查询。 AI 模式由定制版的 Gemini 2.0 驱动,能够访问实时数据源和知识图谱等资源。它通过“查询扩展”技术,从多个子主题和数据源中提取信息,并综合呈现。如果信息不足,用户将被引导至网页搜索结果。 案例 1:鸟类迁徙路径 用户提问:“候鸟如何知道迁徙路线?”AI 模式会进行多步搜索并组织结果,在移动设备上以轮播形式展示来源网站,随后提供简明答案和相关文章。 案例 2:户外拍摄最佳时间 用户询问:“本周在波士顿公共花园拍摄户外订婚照的最佳时间是什么?”AI 模式结合实时天气信息,推荐具体日期和黄金时段,并注明日落时间。 案例 3:睡眠追踪设备对比 用户提问:“智能戒指、智能手表和追踪垫在睡眠追踪功能上有何区别?”AI 模式以对比表格形式呈现答案,并支持后续问题,如“深度睡眠时心率如何变化?” 从早期测试来看,AI 模式的查询长度是传统搜索的两倍,用户有 25% 的时间会进行后续提问。谷歌计划逐步向所有用户开放这一功能,目前测试主要面向高级用户。

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

将阿里云产品整合成为高校课程实训的训练营产品的实践(二)

从第二篇开始针对三个训练营产品逐个分析和介绍,本文首先介绍“数据科学训练营”。“数据科学训练营”是阿里云基于多年大数据商业服务经验和技术积累,结合工程教育理念倾力打造的一款学生能力训练的课程产品。本课程产品是大数据训练营集合产品的第一个包,适用于本科大一年级的学生,课程主要以数据思维和数据科学相关技术为引导,通过学习Python数据分析、开发和2个阿里云Clouder案例,结合项目呈现和沟通表达方面的职业技能,通过自主提交一个商业项目,培养学生设计使用Python解决现实问题能力,并体现创新意识。 “数据科学训练营”的侧重点在于前沿技术应用,通过学习Python语言,进行商业、生活环境等方面的数据统计、分析和应用。重点培养学生技术能力,包括数据科学认知能力,解决问题的求解能力,Python技术应用能力,编码能力及数据分析能力等

资源下载

更多资源
Mario

Mario

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Spring

Spring

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

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

用户登录
用户注册