Memory River

记忆河,记今日之事忆往昔之流

华为发可持续发展报告 梁华:压力下华为会发展的更好

7月12日,华为在深圳总部发布了《2018年可持续发展报告》,这是华为连续第十一年发布该报告。 华为公司董事长梁华表示,绿色环保已成为可持续发展的重中之重。未来通信网络的重点关注之一就是能量效率,核心是用更少的能量传递更多信息,以及在能量系统中通过信息技术来降低能耗。 华为GIV预计到2025年,ICT产业平均每联接的碳排放量将降低80%,ICT产业带来的全球节能和减排量,将远超其自身的运行能耗和碳排放量,ICT将成为全球绿化的重要使能技术,大力促进全球的节能减排。 在绿色万物互联时代,华为已经服务于全球170多个国家和地区的30多亿人口,1500多张网络的稳定运行。2018年年底,华为还宣布了一项变革计划,华为将在5年时间里投资20亿美元来提升软件工程能力。梁华表示,该计划不仅将使华为能够更好地应对行业共同面临的挑战,也将确保华为在网络安全领域的领先创新。 在5G时代,梁华提到华为在5G产品研发与工程化过程中做了大量创新,通过芯片工艺设计、系统软件、专业服务以及先进的硬件材料和散热技术,整体上实现5G单站能耗比业界平均水平低20%。 报告显示截止2018年12月31日,在全球累计获得授权专利87805件,其中中国授权专利累计43371件,中国以外国家授权专利累计44434件,90%以上专利为发明专利。 在商业道德方面,华为恪守商业道德、遵守国际公约和各国相关法律法规。华为推进了海外各子公司的合规体系建设,已经在100多个业务相关国家完成对标当地与ICT产业相关的法律要求。在145家子公司全面落实了反腐败、反商业贿赂实践,并在此基础上结合自身业务特点,持续强化了反腐败和反商业贿赂管理体系建设。比如诚信与合规文化,合规管理以及对外交流方面的建设。 在网络安全方面,2018年华为基于“网络环境是不安全的,网络攻击是常态化的”假设,华为以动态响应的思维构建了产品规划与开发的全视图,发布了新的网络安全框架,以应对更为复杂的网络安全环境。 报告显示,华为在过去30年与运营商一起建设了1500多张网络,在170多个国家和地区,为30多亿人提供了网络服务。“我们的客户可以证明华为产品从未引发重大安全问题,我们将努力与客户一起继续保持这一良好记录。” 华为声明,迄今为止,华为没有任何法定义务在华为设备中或者允许他人在华为设备中安装“后门”,也没有任何法定义务为任何人收集情报信息。未来华为也会严格按照法律赋予的权利和程序来处理这样的诉求, 以客户为中心,并致力于保护客户或者用户的合法权益不会受到侵害。 截止2018年12月31日,华为全球员工总数18.8万人,来自全球近160个国家和地区。华为在海外聘用的员工总数超过2.8万人,海外员工本地化率约70%,女性管理者的比例达到7.05%。在员工保障方面,华为全球员工保障投入超过了135亿元人民币。 “有人问,现在华为面临着困难,还能不能可持续发展,活下来?”梁华提到,“华为的发展可以持续,我们一定能够活下来,而且会活得越来越好。” 梁华表示,未来华为将持续构建更多的覆盖、更便利的联接,以最终消除全球数字鸿沟,让数字技术惠及每个人、每个家庭和每个组织。
    2019-07-13 08:40:56    ·    26       0

thymeleaf模板引擎字符串Strings常见的使用方法

判断是不是为空:null:<span th:if="${name} != null">不为空</span> <span th:if="${name1} == null">为空</span> 判断是不是为空字符串: “”<span th:if="${#strings.isEmpty(name1)}">空的</span> 判断是否相同:<span th:if="${name} eq 'jack'">相同于jack,</span> <span th:if="${name} eq 'ywj'">相同于ywj,</span> <span th:if="${name} ne 'jack'">不相同于jack,</span> 不存在设置默认值:<span th:text="${name2} ?: '默认值'"></span> 是否包含(分大小写):<span th:if="${#strings.contains(name,'ez')}">包ez</span> <span th:if="${#strings.contains(name,'y')}">包j</span> 是否包含(不分大小写)<span th:if="${#strings.containsIgnoreCase(name,'y')}">包j</span> 同理。。。下面的和JAVA的String基本一样。。。。${#strings.startsWith(name,'o')} ${#strings.endsWith(name, 'o')} ${#strings.indexOf(name,frag)}// 下标 ${#strings.substring(name,3,5)}// 截取 ${#strings.substringAfter(name,prefix)}// 从 prefix之后的一位开始截取到最后,比如 (ywj,y) = wj, 如果是(abccdefg,c) = cdefg//里面有2个c,取的是第一个c ${#strings.substringBefore(name,suffix)}// 同上,不过是往前截取 ${#strings.replace(name,'las','ler')}// 替换 ${#strings.prepend(str,prefix)}// 拼字字符串在str前面 ${#strings.append(str,suffix)}// 和上面相反,接在后面 ${#strings.toUpperCase(name)} ${#strings.toLowerCase(name)} ${#strings.trim(str)} ${#strings.length(str)} ${#strings.abbreviate(str,10)}// 我的理解是 str截取0-10位,后面的全部用…这个点代替,注意,最小是3位
    2019-07-11 09:15:14    ·    90       0

“蓝色巨人”IBM宣布340亿美元正式收购红帽,成IBM史上最大并购

7月10日消息,据新浪科技报道,IBM周二宣布以340亿美元正式收购红帽。IBM曾表示希望此次收购交易能帮助公司在云业务方面获得更大发展。2018年10月28日,IBM宣布以340亿美元收购开源软件公司红帽(红帽),寻求硬件及咨询业务的多元化,增加高利润产品和服务。此次交易不仅是IBM有史以来最大的一次并购,也是美国科技史上第三大交易。美国科技史最大交易为2016年戴尔以670亿美元价格并购数据存储公司EMC。公开信息显示,红帽是一家创立于1993年的Linux软件制造商,公司主要出售基于开放源代码Linux操作系统的软件和服务。2013年,红帽正式进军云计算。公开资料显示,IBM1911年由托马斯·沃森创立于美国,是全球最大的信息技术和业务解决方案公司。2004年,IBM将个人电脑业务出售给中国联想集团,开始从“海量”产品业务向“高价值”业务转型。
    2019-07-10 09:17:35    ·    36       0

阿里云CentOS挂载新数据盘

文记录下在阿里云 CentOS 服务器下安装和挂载新的数据盘的详细命令和步骤:1、查看磁盘列表fdisk -l 2、分区数据盘fdisk /dev/vdb 创建一个单分区数据盘,依次执行以下命令: 输入 n 并按回车键:创建一个新分区。 输入 p 并按回车键:选择主分区。因为创建的是一个单分区数据盘,所以只需要创建主分区。 说明:如果要创建 4 个以上分区,您应该创建至少一个扩展分区,即选择 e(extended)。 输入分区编号并按回车键。因为这里仅创建一个分区,可以输入 1。 输入第一个可用的扇区编号:按回车键采用默认值 1。 输入最后一个扇区编号:因为这里仅创建一个分区,所以按回车键采用默认值。 输入 wq 并按回车键,开始分区。3、重新查看磁盘列表fdisk -l 4、格式化分区此数据盘被格式化成 ext4 文件格式。mkfs.ext4 /dev/vdb1 5、将设备挂载到指定的目录下mount /dev/vdb1 /data 6、保存到文件系统表 /etc/fstab 当系统重新启动的时候,系统会自动地从这个文件读取信息,并且会自动将此文件中指定的文件系统挂载到指定的目录。echo /dev/vdb1 /data ext4 defaults 0 0 >> /etc/fstabji 就这样就完成了数据盘的挂载了。使用命令 df -h 查看磁盘情况。
    2019-07-10 09:04:14    ·    128       0

Linux vim编辑器命令

保存命令按ESC键 跳到命令模式,然后::w 保存文件但不退出vi:w file 将修改另外保存到file中,不退出vi:w! 强制保存,不推出vi:wq 保存文件并退出vi:wq! 强制保存文件,并退出viq: 不保存文件,退出vi:q! 不保存文件,强制退出vi:e! 放弃所有修改,从上次保存文件开始再编辑
    2019-07-06 11:59:19    ·    65       0

李彦宏被泼水,但是百度AI不会凉

李彦宏在百度AI大会上意外被泼水事件已经尽人皆知,李彦宏和百度也很快表态回应,在AI前进的道路上会有各种各样的事情发生,但是前进的决心不会改变,AI会改变每一个人的生活。 7 月 3 日晚间,百度官方就泼水事件做出了详细的官方声明,称对此感到愤怒,并强烈谴责肇事者的行为! 百度表示:“肇事者微博直播等高调的形式安排了一个恶劣的现场袭击,这样的行为让人觉得不耻,更让人感到不安。如果今天我们的社会容忍了这样的极端行为,那么将来每一场会议和活动,都可能被肇事者如法炮制;每一个暴露在公众场合的人,都可能成为被袭击者!这是大家绝对不愿意看到的。” 百度还透露,肇事者已经被公安机关依法带走并调查。 有律师指出,肇事男子的行为涉嫌扰乱公共秩序,有关部门可按照有关规定对其处以治安行政处罚,同时该行为涉嫌侵犯李彦宏人格权、名誉权等,如李彦宏追究,行为人还需承担相应民事责任。以下为百度声明全文:各位关心百度的朋友们,大家好! 大家都知道,今天是百度一年一度的AI开发者大会。为了与到场的 7000 多名开发者和合作伙伴,以及场外关心此次大会的朋友们充分交流和分享最新的AI进展,我们无暇顾及其他。但是这并不意味着,我们对今天在现场发生的事件没有态度。 针对今天发生在AI开发者大会现场的事件,我们感到愤怒,并强烈谴责肇事者的行为! 肇事者微博直播等高调的形式安排了一个恶劣的现场袭击,这样的行为让人觉得不耻,更让人感到不安。如果今天我们的社会容忍了这样的极端行为,那么将来每一场会议和活动,都可能被肇事者如法炮制;每一个暴露在公众场合的人,都可能成为被袭击者!这是大家绝对不愿意看到的。 再次感谢所有给予百度关心和支持的开发者和合作伙伴!肇事者已经被公安机关依法带走并调查。“AI前进的道路上有各种各样意想不到的事情发生,但我们前行的决心不会改变。”百度公司2019 年 7 月 3 日
    2019-07-05 08:37:54    ·    150       0

SpringBoot项目Json中的空值处理

博客前端使用的是thymeleaf模板引擎,这个模板引擎有时候很操蛋,比如下面代码:<input type="hidden" id="mainImagePath" name="mainImagePath" th:value="${article?.imgsrcPath}">如果article对象中,不存在imgsrcPath节点的时候,就会给我报错,抛异常。我下面模拟一下异常,随便写一个节点叫caodan,百度无解。只能走歪道,因为是由于字段的值为null,在返回的时候自动给去掉了null值的返回值了,导致前端获取不到。方法:将null值的字符串的值改为"",即空串。使用的java类如下:springboot前提下。package com.wchuf.basics.config; import java.util.List; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter; import com.alibaba.fastjson.serializer.SerializerFeature; import com.alibaba.fastjson.support.config.FastJsonConfig; import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter; /** * 返回结果,null按类型转换为对应的默认值 */ @Configuration public class JacksonConfig extends WebMvcConfigurerAdapter{ @Override public void configureMessageConverters(List<HttpMessageConverter<?>> converters) { FastJsonHttpMessageConverter converter = new FastJsonHttpMessageConverter(); FastJsonConfig fastJsonConfig = new FastJsonConfig(); fastJsonConfig.setSerializerFeatures( //List字段如果为null,输出为[],而非null SerializerFeature.WriteNullListAsEmpty, //是否输出值为null的字段,默认为false SerializerFeature.WriteMapNullValue, //字符串null返回空字符串 SerializerFeature.WriteNullStringAsEmpty, //空布尔值返回false SerializerFeature.WriteNullBooleanAsFalse, //结果是否格式化,默认为false SerializerFeature.PrettyFormat); //格式化日期 fastJsonConfig.setDateFormat("YYYY-MM-dd HH:mm:ss"); converter.setFastJsonConfig(fastJsonConfig); converters.add(converter); } }
    2019-07-04 09:23:10    ·    151       0

博主太懒

都说时光荏苒,光阴难买,朕也懂,可是朕就是懒,懒得和你说! 好久没有更新博客了,在忙于奔命,忙于生活,忙于各种累。 今年的愚人节,我换新工作了,到了新的公司上班,好多事情需要去熟悉去适应,公司给我的感觉很好,同事之间氛围也是蛮不错的,我的技术经理和我说过一句话:这里人都挺好的,如果不好的话都是领导不好。嗯,是的。领导肯给员工讨论他的不好这是不是也算是一个好领导了?哈哈~ 公司是家2000+人规模大企业,至少我没在这么大的企业工作过,也是一个很不错的平台吧。公司环境也很好,至少我喜欢,工作间有绿色、茶水间有茶水、休息间有沙发、厕所很卫生、电梯有位置等等,可以很舒适的工作了吧。 最后来一波预告:博客3.0版本不期将会上线。 v3.0在功能上没有太多的惊艳,3.0的版本主要是为了解决之前版本的SEO问题的,因为之前的版本使用的是VUE技术进行前端的开发,也是我思虑不周吧,一开始并没有打算做SEO的,只是想着自娱自乐一下,后来想想,到我这个年纪了又不是在校or刚毕业,得要为人民币服务了,投入了资本没有收益不可以!然后就开始捯饬vue的服务端渲染,发现臣妾做不到啊。然后咬咬牙就重构了。。。使用了全新的技术重构了前端。同时也增加了一些小功能模块吧。 本来我打算在3月份中旬上线的,可惜呀,博主太懒了,整天晒网不打渔,v3.0就有一次没意外的延期了,延期到什么时候?反正现在是预告,期待吧~~ 总之,还是期待v3.0的到来吧。
    2019-04-04 15:40:58    ·    127       0

pl/sql developer + instant-client 连接远程Oracle数据库

简述 由于Oracle体积太大,但是它的客户端安装包中有instant client 这一项,可以安装instantclient +plsql取代安装庞大的客户端。 instantclient不仅体积小,还无需安装,解压就可以使用。下载instant-client下载地址:https://www.oracle.com/technetwork/database/database-technologies/instant-client/overview/index.htmlPL/SQL Developer下载地址https://www.allroundautomations.com/bodyplsqldevreg.html安装安装plsqldev1301x64.msi;解压instantclient-basic-windows.x64-12.2.0.1.0.zip 到 D:\Program Files\instantclient_12_2;配置1、配置instantclient环境变量 变量名:NLS_LANG 值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK2、配置pl/sql developer 启动PL/SQL Developer,在登录窗口界面,点击取消按钮进入主界面,点击Configure->Preferences,在Connection中需要配置如下两个参数:Oracle Home:D:\Program Files\instantclient_12_2OCI Library:D:\Program Files\instantclient_12_2\oci.dll3、连接数据库 上面的配置完成之后,重启PL/SQL Developer。Database格式:IP:端口/实例名。如:192.168.1.120:1521/orcl
    2019-03-05 12:53:00    ·    122       0

springboot项目中 使用thymeleaf引用公共HTML头部静态资源

问题 现在我的博客网站是spa架构的,一开始没有规划好导致现在做SEO头疼得很,咬咬牙决定再一次改版博客网站,抛弃现有的spa架构,改为传统的服务器渲染模式,内容发布网站为了SEO总是必要的。经过对架构和框架细细思量,决定使用springboot+thymeleaf的方式构建前端,在java代码里请求原有的微服务进行数据的获取,返回页面显示。 说干就干,马上开始研究thymeleaf模板引擎,在html代码中,需要将一些公共的静态资源文件统一引用,类似jsp的include一样。原始页面文件:这一堆静态资源都是公共的,需要单独处理引用,这样就不用每个页面都写一遍。特别是title、mate这些信息,自然是每篇文章都会不一样的。我的项目结构如下:解决方法1、资源定位 thymeleaf提供了一个很好的资源定位的方法,比如我的静态资源都是放在static下面的,那我引用的方式就直接:th:href="@{/assets/vendor/fonts/fontawesome.css}"<!-- Icon fonts --> <link rel="stylesheet" type="text/css" th:href="@{/assets/vendor/fonts/fontawesome.css}"> <link rel="stylesheet" type="text/css" th:href="@{/assets/vendor/fonts/ionicons.css}"> <link rel="stylesheet" type="text/css" th:href="@{/assets/vendor/fonts/linearicons.css}"> <link rel="stylesheet" type="text/css" th:href="@{/assets/vendor/fonts/open-iconic.css}"> <link rel="stylesheet" type="text/css" th:href="@{/assets/vendor/fonts/pe-icon-7-stroke.css}"> 2、创建公共的html 创建公共的HTML,由公共HTML文件统一管理公共静态资源的引入。我项目创建了一个公共的HTML: 然后把所有需要全局引入的静态资源文件放到这个HTML里引入:上面代码中的重点:<th:block th:fragment="common_resource">。th:fragment标签的值相当与将此段代码给命名,所以要注意同一个路径同一个文件内,不要出现一样命名的代码片段。另外:这里必须要用 th:block,至于为什么,文章末尾再解释。3、引用公共HTML 引用的方法很简单,一行代码就可以了。<head> <div th:replace="common/resource/common_resource :: common_resource"></div> </head> common/resource/common_resource :表示common/resource路径下的common_resource.html文件冒号右边的common_resource:表示common_resource.html文件内的使用th:fragment标签定义的对应名称的代码片段至此,使用thymeleaf引用公共HTML头部静态资源就配置完成了。访问刷新页面就可以看到效果了。尾注: 由于<head></head>标签中不能存放<div></div>之类的标签,而不同页面的title基本上都不同,再加上网站后期的SEO优化需要的<meta/>标签,这些都要单独出来。 如果使用<head th:replace="路径 :: 模块名"></head>或者<div th:include="路径 :: 模块名"></div>,都会使引入或者模块中的主标签保留下来,在此处都是不适用的,解决方法如下: 引入:<div th:replace="路径 :: 模块名"></div> 模块:<th:block th:fragment="模块名"></th:block> <th:block></th:block>是Thymeleaf提供的唯一的一个Thymeleaf块级元素,其特殊性在于Thymeleaf模板引擎在处理<th:block>的时候会删掉它本身,而保留其内容(多用于渲染平级标签)。th:replace 和<th:block>的结合,完美舍弃引入和模块处的主标签。
    2019-03-05 09:12:18    ·    217       0