首页 文章 精选 留言 我的

精选列表

搜索[垂直分库],共5948篇文章
优秀的个人博客,低调大师

5G技术可提升众多垂直行业的能源效率

ICT行业对温室气体排放的贡献不到全球总量的2%,而在OECD(经合组织)国家中,约占总增加值的6%,在中国GDP中所占的比重超过7%。这一相对比率意味着仅让电信网络提高能源效率只会对气候变化产生较小的影响。 5G只有对其他行业的能源效率产生重大影响时,才会对全球能源使用产生有意义的影响。 在本文中,我们将探讨能源、医疗保健和制造业等排放量较高的行业,以证明可量化5G所带来的收益。这三个部门约占全球温室气体排放量的61%,但占全球GDP的38%,如图1所示。同时,还将探讨智慧城市和交通用例的定性案例研究。 图1:2017年全球GDP和温室气体排放量的行业 如以下小节所述,我们的建模和分析表明,5G可能对这些行业产生重大的环境影响(以减少温室气体的方式衡量),从而实现了没有5G不可能或无法承受的新运营方式。 我们还发现,在最迫切需要能源效率转型的这些领域中,如果将5G与云,人工智能和物联网等其他技术以及其他变化(例如采用可再生能源)相结合,则可以发挥显著作用。 5G与人工智能、物联网和云等ICT技术的结合可以提高其他行业的能效 如今,为减少5G能耗,人们正在做出巨大努力。尽管5G网络本身必须具有能源效率,但真正意义上的变革性影响将出现在5G可以使许多其他行业(包括能耗水平远高于电信行业的其他行业)以更节能的方式运行时。根据ITU的SMART 2020报告发现,到2020年,所有行业的ICT能源效率规模相当于全球所有排放量的15%。 欧盟的数据表明(见图5.2),能源的最大消费领域是交通、工业和家庭,因此,如果技术能够提高这些生活领域的效率并减少排放,那么对气候变化的影响将大于部署5G网络本身对气候变化的影响。 图2:欧盟各行业的能源消耗 这种效果取决于对流程和行为的改变,这些改变由高容量、无处不在和低延迟的移动网络支持。5G网络如何减少行业能耗的一些示例包括: 支持所有部门的智能能源管理,包括通过5G连接增强智能电网和智能电表系统,基于IoT的监控以及支持AI的分析,以支持诸如机器、城市基础设施或家用设备。 由于改善了会议模式(包括虚拟现实)而减少了办公空间或差旅需求,这意味着员工可以在任何地方工作。 通过持续监控整个供应链中的货物、车辆和设施,减少浪费和主动计划,实现了高效的“及时”供应链。 智能管理智慧城市中载有人员和货物的车辆的行驶,以减少不必要的行程。 支持建筑物和基础设施中的智能电源管理。 这些因素是通过结合高速、低延迟5G和其他技术(例如AI / ML和边缘云)而实现的。它们与数十亿个已连接的IoT设备一起,支持超连接性,从而使用户能够以较低的能源开销以新方式进行交互。例如,无需出差。这种技术组合也为网络切片提供了基础,网络切片可精确分配特定行业和特定任务所需的网络和计算资源,只要它们是必需的:一旦任务结束,虚拟切片资源便可以关闭并在其他地方重复使用。切片将使行业拥有适合其要求的专用虚拟网络,而无需过度配置它们,从而浪费资源。 与其他技术结合使用时,以下是5G支持效果的一些示例。 英国政府已承诺长期减少能源消耗和碳排放。运输部已将车辆监控和能源效率确定为车队管理部门的关键问题。为了解决这些问题并优化能耗,政府启动了多项远程信息处理计划。例如,远程信息处理系统已部署在600辆警用车辆中,以测量燃料消耗和温室气体排放。通过使用这些系统产生的好处包括:1)在确定车辆利用率之后减少120辆车辆; 2)减少温室气体排放,节省燃料成本超过382000英镑。 根据政府的倡议和企业环境的可持续发展目标,台湾一家大型金融机构制定了一个目标,即在2016年至2050年之间将其温室气体排放量减少30%。为提高能源效率和提高运营的可持续性,公司已实施遍布其189个分支机构的支持AI的建筑能源优化解决方案。该解决方案成功地将每个分支的平均用电量减少了5%至15%。 2018年,每名员工的能源消耗也下降了9.1%。 斯洛文尼亚的一家水泥生产厂面临着对其设施和基础设施进行调整以符合欧洲能源相关法规要求的挑战。该工厂每年消耗超过90GWh的电力和8GWh的天然气。 2017年,它启动了一项能源管理项目,其中涉及基于无线LoRaWAN技术的智能能源解决方案。该解决方案提高了每个生产过程中工厂能耗的可见性,并实现了更精确的实时监控。部署解决方案后,工厂成功减少了温室气体排放和能源消耗。 香港的一家房地产开发商制定了十年计划,以促进可持续发展,目标是到2025年将温室气体排放量减少35%。它与AI系统和平台提供商合作,建造了具有AI功能的“绿色建筑”在城市。基于AI的数据平台可通过对公用事业系统的预测使用和自动化操作以及预测维护来实现节能。该建筑已成功减少了与其日常运营相关的能耗。

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

Elasticsearch大咖说 | Elasticsearch 在手机垂直搜索业务的应用创新

Elasticsearch 作为一个分布式、高扩展、实时的搜索与数据分析引擎,因其轻量级、稳定、可靠、快速等特性受到越来越多开发者的青睐,在搜索、日志分析、运维监控和安全分析等领域得到广泛应用。阿里云 Elasticsearch 技术团队,深度采访了来自阿里巴巴、vivo、携程、eBay 等知名公司的技术专家,推出了 Elasticsearch 大咖说系列专题,为广大开发者提供技术入门与进阶的经验分享,以及最佳应用实践参考。 分享嘉宾 杨振涛 vivo 互联网搜索引擎架构师 vivo 是一个专注于智能手机领域的知名品牌,而 vivo 互联网为 vivo 智能手机用户提供极致的互联网产品和服务。从 Elasticsearch 2.1.1版本开始,到目前,vivo 互联网已经使用了 200 多个 Elasticsearch 集群来支撑全球 2

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

Android 自定义垂直,旋转,圆形进度提示 自定义Seekbar

SeekBar是用来调节参数值的,系统默认的一般都不太适合我们,需要我们自定义, 里面也有一个RxJava背压的具体应用 废话不多说,看图 package com.example.helang.seekbar; import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Matrix; import android.graphics.Paint; import android.graphics.RectF; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.support.annotation.Nullable; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import java.util.concurrent.TimeUnit; import io.reactivex.Observable; import io.reactivex.ObservableEmitter; import io.reactivex.ObservableOnSubscribe; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.functions.Consumer; /** * 自定义拖动seekBar */ public class CustomSeekBar extends View { private static final String TAG = "CustomSeekBar"; private static final int radius = 65;//中间圆形进度条的半径 private static final int thumbSize = 200; private int backgroundLineSize = 10;//背景线的宽度 private int foregroundLineSize = 18;//进度的宽度 private int lineSize;//整条背景线的长度 private float touchY; private Bitmap thumbBitmap; private Paint paint; private Paint circlePaint;//绘制进度条的paint private RectF backgroundLineRect = new RectF();//背景矩形 private RectF foregroundLineRect = new RectF();//进度矩形 private float currentDegrees = 0;//当前的进度,百分比例,不带百分号 private OnProgressListener onProgressListener; public void setOnProgressListener(OnProgressListener onProgressListener) { this.onProgressListener = onProgressListener; } public CustomSeekBar(Context context) { this(context,null); } public CustomSeekBar(Context context, @Nullable AttributeSet attrs) { this(context, attrs,0); } public CustomSeekBar(Context context, @Nullable AttributeSet attrs, int defStyleAttr) { super(context, attrs, defStyleAttr); initBitmap(); initPaint(); } /** * init bitmap */ private void initBitmap(){ thumbBitmap = drawableToBitmap(thumbSize,getResources().getDrawable(R.drawable.circle)); } /** * init paint */ private void initPaint() { paint = new Paint(); paint.setStyle(Paint.Style.FILL); paint.setTextSize(10); //初始化圆形进度条的Paint circlePaint = new Paint(); circlePaint.setAntiAlias(true); // 抗锯齿 circlePaint.setDither(true); // 防抖动 circlePaint.setStrokeWidth(10); circlePaint.setShader(null); // 清除上一次的shader circlePaint.setStyle(Paint.Style.STROKE); // 设置绘制的圆为空心 circlePaint.setShadowLayer(10, 10, 10, Color.RED); circlePaint.setColor(Color.BLUE); // 设置圆弧的颜色 circlePaint.setStrokeCap(Paint.Cap.ROUND); // 把每段圆弧改成圆角的 } @Override protected void onLayout(boolean changed, int left, int top, int right, int bottom) { super.onLayout(changed, left, top, right, bottom); } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { super.onMeasure(widthMeasureSpec, heightMeasureSpec); } @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); drawLine(canvas); drawThumb(canvas); drawCircleProgress(canvas); } /** * draw circle * @param canvas */ private void drawCircleProgress(Canvas canvas){ RectF oval = new RectF(thumbSize/2-radius, thumbSize/2-radius, thumbSize/2+radius, thumbSize/2+radius); // 圆的外接正方形 float alphaAngle = currentDegrees * 360.0f / 100 * 1.0f; // 计算每次画圆弧时扫过的角度,这里计算要注意分母要转为float类型,否则alphaAngle永远为0 canvas.drawArc(oval, -90, alphaAngle, false, circlePaint); } /** * draw thumb * @param canvas */ private void drawThumb(Canvas canvas){ //添加旋转,Matrix是Bitmap旋转的关键,用于bitmap一些补间动画的操作 canvas.translate((getWidth()-thumbSize)/2,(100-currentDegrees)/100*lineSize); Matrix matrix = new Matrix(); matrix.setRotate(currentDegrees*10,thumbSize/2,thumbSize/2); canvas.drawBitmap(thumbBitmap,matrix,null);//旋转背景 } /** * draw lines * @param canvas */ private void drawLine(Canvas canvas){ //绘制背景线 backgroundLineRect.set((getWidth()-backgroundLineSize)/2,thumbSize/2, (getWidth()+backgroundLineSize)/2, getParentHeight()-thumbSize/2); lineSize = getParentHeight() - thumbSize;//去掉被thumb挡住的一部分长度 paint.setColor(Color.rgb(61,82,89)); canvas.drawRoundRect(backgroundLineRect, backgroundLineSize/2, backgroundLineSize/2, paint); //绘制进度线 paint.setColor(Color.rgb(90,189,220));//进度线的颜色 foregroundLineRect.set((getWidth()-foregroundLineSize)/2, (getParentHeight()-thumbSize)*(100-currentDegrees)/100+thumbSize/2, (getWidth()+foregroundLineSize)/2,getParentHeight()-thumbSize/2); canvas.drawRoundRect(foregroundLineRect,foregroundLineSize/2,foregroundLineSize/2,paint); } /** * get ParentHeight * @return */ private int getParentHeight(){ return getHeight(); } @Override public boolean dispatchTouchEvent(MotionEvent event) { return super.dispatchTouchEvent(event); } @Override public boolean onTouchEvent(MotionEvent event) { if (!isEnabled()) return true; switch (event.getAction()) { case MotionEvent.ACTION_DOWN: touchY = event.getRawY();//记录开始的Y值 break; case MotionEvent.ACTION_MOVE: currentDegrees += (touchY-event.getRawY())*1f/(getParentHeight())*100.0f;//当前进度值(100为满) if (currentDegrees > 100){//超出去的不计算,默认为100 currentDegrees = 100; } if (currentDegrees<0){//超出去的不计算,默认为0 currentDegrees = 0; } if (observableEmitter != null){//使用背压发送 observableEmitter.onNext(1); }else {//直接发送 sendProgress(); } touchY = event.getRawY(); invalidate(); break; case MotionEvent.ACTION_CANCEL: break; case MotionEvent.ACTION_UP: break; } return true; } private ObservableEmitter<Integer> observableEmitter; /** *增加背压,防止发射拖动的事件过快,导致内存溢出 */ public void addBackPressure(){ Observable.create(new ObservableOnSubscribe<Integer>() { @Override public void subscribe(ObservableEmitter<Integer> emitter) throws Exception { observableEmitter = emitter; } }).sample(500, TimeUnit.MILLISECONDS) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Integer>() { @Override public void accept(Integer integer) throws Exception { sendProgress(); } }); } /** * 发送进度 */ private void sendProgress(){ if (onProgressListener != null){ onProgressListener.onProgress(currentDegrees); } } /** * 设置当前进度 * @param currentDegrees */ public void setCurrentDegrees(float currentDegrees){ this.currentDegrees = currentDegrees; invalidate(); } public interface OnProgressListener{ void onProgress(float progress); } /** * make a drawable to a bitmap * @param drawable drawable you want convert * @return converted bitmap */ private Bitmap drawableToBitmap(int size, Drawable drawable) { Bitmap bitmap = null; if (drawable instanceof BitmapDrawable) { BitmapDrawable bitmapDrawable = (BitmapDrawable) drawable; bitmap = bitmapDrawable.getBitmap(); if (bitmap != null && bitmap.getHeight() > 0) { Matrix matrix = new Matrix(); float scaleHeight = size * 1.0f / bitmapDrawable.getIntrinsicHeight(); matrix.postScale(scaleHeight, scaleHeight); bitmap = Bitmap.createBitmap(bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), matrix, true); return bitmap; } } bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888); Canvas canvas = new Canvas(bitmap); drawable.setBounds(0, 0, canvas.getWidth(), canvas.getHeight()); drawable.draw(canvas); return bitmap; } } Demo地址:https://github.com/helang1991/SeekBar 喜欢的就加个Star,谢谢

资源下载

更多资源
Mario

Mario

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

腾讯云软件源

腾讯云软件源

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

Nacos

Nacos

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

Sublime Text

Sublime Text

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

用户登录
用户注册