首页 文章 精选 留言 我的

精选列表

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

Linux Foundation APAC 首批开源布道者官方发布会,诚邀您共同见证!

开源已经被证明是一个高效的创新模式和可行的商业模式,开源运动兴起的10年,正是人类历史上科技创新最蓬勃的10年。开源为社会创造了一个更公平、更多元化、更包容和更开放的创新环境。我们不仅能够在开源社区得到免费开源软件,更可以建立自己的开源社区,学习新的技术和磨练团队的技能。我们可以通过开源与华为、腾讯、阿里、百度、中移动、谷歌、VMWare、英特尔等前沿科技公司的开发者并肩工作,打造你的职场人脉,寻找你下一个创业机会和合作伙伴! 开源已经成为全球绝大部分企业科技创新的主要动力来源,为了能够让更多的中国企业利用好开源资源,Linux 基金会亚太团队与10位开源精英志愿者组成了亚太区第一个开源布道者团队(开源布道者详细介绍请访问:https://training.linuxfoundation.cn/news/161),帮助企业明确开源目标,掌握开源方法,推荐关键开源技术,协助企业构建自己的开源生态。 本次发布会是我们全体布道者团队首次公开亮相,我们期待这次见面能够成为中国开源旅程的新起点! 开源布道者发布会日程如下: 日期:2021年2月3日 时间:晚7:30 – 9:30 地点:线上直播 本次开源布道者与大家分享的主题包括: 19:30-21:00 欢迎演讲 演讲主题:拥抱开源的企业需要什么样的最佳实践?作为Linux 基金会 APAC 开源布道者,能为本土企业做些什么? 演讲嘉宾:LFAPAC 开源布道者 李建盛 演讲主题:Hyperledger 超级账本项目在中国的发展现状, 以及Hyperledger + IoT/边缘计算/AI的应用展望 演讲嘉宾:LFAPAC 开源布道者 Michael Su 演讲主题:开源社区 - 让开源项目、用户企业和开发者距离更近一点 演讲嘉宾:LFAPAC 开源布道者 张岩 演讲主题:工业4.0时代的开源软件 演讲嘉宾:LFAPAC 开源布道者 侯胡的 演讲主题:锁定或中立:与供应商的博弈 演讲嘉宾:LFAPAC 开源布道者 陈兴友 演讲主题:开源:企业创新的助燃剂;个人能力提升的垫脚石 演讲嘉宾:LFAPAC 开源布道者 马景贺(小马哥) 演讲主题:加入开源社区,让开源成为日常习惯 演讲嘉宾:LFAPAC 开源布道者陈一苇 演讲主题:新项目如何加入Linux基金会,要做哪些准备? 演讲嘉宾:LFAPAC 开源布道者 杨爱林 演讲主题:开源需要生态,开源需要贡献,开源需要布道 演讲嘉宾:LFAPAC 开源布道者 Sam Chen 演讲主题:选择参与开源,就是选择了一种投资方式 演讲嘉宾:LFAPAC 开源布道者 Rick 演讲主题:Linux Foundation 开源软件大学 - 加入开源,由学习开始 演讲嘉宾:Linux Foundation 开源软件大学运营总监 Jerry Li 21:00-21:20 炉边夜谈 - 如何培育成功的开源文化 21:20-21:30 开源对话 (Q&A) 扫描以下二维码观看直播: 也可点击【传送门】进入直播页面

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

Node.js官方文档:到底什么是阻塞(Blocking)与非阻塞(Non-Blocking)?

译者按: Node.js文档阅读系列之一。 原文: Overview of Blocking vs Non-Blocking 译者: Fundebug 为了保证可读性,本文采用意译而非直译。 这篇博客将介绍Node.js的阻塞(Blocking)与非阻塞(Non-Blocking)。我会提到Event Loop与libuv,但是不了解它们也不会影响阅读。读者只需要有一定的JavaScript基础,理解Node.js的回调函数(callback pattern)就可以了。 博客中提到了很多次I/O,它主要指的是使用libuv与系统的磁盘与网络进行交互。 阻塞(Blocking) 阻塞指的是一部分Node.js代码需要等到一些非Node.js代码执行完成之后才能继续执行。这是因为当阻塞发生时,Event Loop无法继续执行。 对于Node.js来说,由于CPU密集的操作导致代码性能很差时,不能称为阻塞。当需要等待非Node.js代码执行时,才能称为阻塞。Node.js中依赖于libuv的同步方法(以Sync结尾)导致阻塞,是最常见的情况。当然,一些不依赖于libuv的原生Node.js方法有些也能导致阻塞。 Node.js中所有与I/O相关的方法都提供了异步版本,它们是非阻塞的,可以指定回调函数,例如fs.readFile。其中一些方法也有对应的阻塞版本,它们的函数名以Sync结尾,例如fs.readFileSync。 代码示例 阻塞的方法是同步执行的,而非阻塞的方法是异步执行。 以读文件为例,下面是同步执行的代码: const fs = require('fs'); const data = fs.readFileSync('/file.md'); // 文件读取完成之前,代码会阻塞,不会执行后面的代码 console.log("Hello, Fundebug!"); // 文件读取完成之后才会打印 对应的异步代码如下: const fs = require('fs'); fs.readFile('/file.md', (err, data) => { if (err) throw err; }); // 代码不会因为读文件阻塞,会继续执行后面的代码 console.log("Hello, Fundebug!"); // 文件读完之前就会打印 第一个示例代码看起来要简单很多,但是它的缺点是会阻塞代码执行,后面的代码需要等到整个文件读取完成之后才能继续执行。 在同步代码中,如果读取文件出错了,则错误需要使用try...catch处理,否则进程会崩溃。对于异步代码,是否处理回调函数的错误则取决于开发者。 我们可以将示例代码稍微修改一下,下面是同步代码: const fs = require('fs'); const data = fs.readFileSync('/file.md'); console.log(data); moreWork(); // console.log之后再执行 异步代码如下: const fs = require('fs'); fs.readFile('/file.md', (err, data) => { if (err) throw err; console.log(data); }); moreWork(); // 先于console.log执行 在第一个示例中,console.log将会先于moreWork()执行。在第二个示例中,由于fs.readFile()是非阻塞的,代码可以继续执行,因此moreWork()会先于console.log执行。 moreWork()不用等待读取整个文件,可以继续执行,这是Node.js可以增加吞吐量的关键。 并发与吞吐量 Node.js中JS代码执行是单线程的,因此并发指的是Event Loop可以在执行其他代码之后再去执行回调函数。如果希望代码可以并发执行,则所有非JavaScript代码比如I/O执行时,必须保证Event Loop继续运行。 举个例子,假设Web服务器的每个请求需要50ms完成,其中45ms是数据库的I/O操作。如果使用非阻塞的异步方式执行数据库I/O的话,则可以节省45ms来处理其他请求,这可以极大地提高系统的吞吐量。 Event Loop这种方式与其他许多语言都不一样,通常它们会创建新的线程来处理并发。 混用阻塞与非阻塞代码会出问题 当我们处理I/O时,应该避免以下代码: const fs = require('fs'); fs.readFile('/file.md', (err, data) => { if (err) throw err; console.log(data); }); fs.unlinkSync('/file.md'); 上面的示例中,fs.unlinkSync()很可能在fs.readFile()之前执行,也就是说,我们在读取file.md之前,这个文件就已经被删掉了。 为了避免这种情况,我们应该是要非阻塞方式,来保证它们按照正确的顺序执行。 const fs = require('fs'); fs.readFile('/file.md', (readFileErr, data) => { if (readFileErr) throw readFileErr; console.log(data); fs.unlink('/file.md', (unlinkErr) => { if (unlinkErr) throw unlinkErr; }); }); 上面的示例中,我们把非阻塞的fs.unlink()放在fs.readFile()的回调函数中。 参考 libuv About Node.js 关于Fundebug Fundebug专注于JavaScript、微信小程序、微信小游戏、支付宝小程序、React Native、Node.js和Java线上应用实时BUG监控。 自从2016年双十一正式上线,Fundebug累计处理了10亿+错误事件,付费客户有Google、360、金山软件、百姓网等众多品牌企业。欢迎大家免费试用! 版权声明 转载时请注明作者Fundebug以及本文地址:https://blog.fundebug.com/2019/06/12/overview-of-nodejs-blocking-vs-non-blocking/

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

基于umeng官方php sdk v1.4,支持Laravel5以及Lumen5

安装 composer require zzl/umeng Laravel 5.* 配置 打开config目录下的app.php文件,找到provider,添加如下代码: 'provider' => [ Zzl\Umeng\UmengServiceProvider::class, ], 配置alias: 'aliases' => [ 'Umeng' => Zzl\Umeng\Facades\Umeng::class, ], 生成配置文件: php artisan vendor:publish 在配置文件umeng.php中填入appkey以及master_secret既可完成配置 在Lumen 5.*中配置 打开bootstrap目录下的app.php文件,注册provider: $app->register(Zzl\Umeng\UmengServiceProvider::class); 配置alias: class_alias('Zzl\Umeng\Facades\Umeng','Umeng'); 生成配置文件: php artisan vendor:publish 在配置文件umeng.php中填入appkey以及master_secret既可完成配置 用法 Android用法: use Umeng; $device_token = 'xxxx'; $predefined = array('ticker' => 'android ticker' ,...); $extraField = array(); //other extra filed Umeng::android()->sendUnicast($device_token,$predefined,$extraField); //单播 IOS用法: use Umeng; $device_token = 'xxxx'; $predefined = array('alert' => 'ios alert' ,...); $customField = array(); //other custom filed Umeng::ios()->sendUnicast($device_token,$predefined,$customField); //单播 Api 说明: Android API跟 IOS一样 sendBroadcast($predefined = [], $extraField = []); //广播 sendUnicast($device_tokens = '', $predefined= [], $extraField = []); //单播 sendListcast($device_tokens = '', $predefined= [], $extraField = []); //列播 sendFilecast($fileContents = '', $predefined= [],$extraField = []); //文件播 sendGroupcast($filter = [], $predefined= [], $extraField = []); //组播 sendCustomizedcast($alias = '', $alias_type = '', $predefined= [], $extraField = []); //自定义播,通过alias sendCustomizedcastFileId($file_contents = '', $predefined= [], $extraField = []); //自定义播,通过file_id Exception 程序不处理异常,可根据业务情况自行处理, 若抛出异常,可通过 e->getHttpCode() 获取http状态码, 通过 e->getErrCode()获取umeng返回的错误码. 使用过程中若出错,可自行查看Laravel或Lumen的Log日志

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

每周新品|云市场官方小二推荐值得买清单(有图有真相)

岁末将至,阿里云云市场7大类目、3000余款产品是不是让您挑花了眼。每周新品这个栏目就为各位用户甄选最值得买的产品。本周我们特意邀请阿里云云市场各类目小二精选本类目最值得推荐的新品,汇聚成值得买清单。 点击购买>译云机器翻译-翻译测试接口(公测) 点击购买>京颐云HIS·SaaS版 点击购买>Oracle安装、配置、故障排除、迁移、调优代维服务 点击购买>绿盟网站安全评估服务 点击购买>【微信网站】微网站建设微信公众号定制开发手机微官网制作购物商城设计 Udesk,智能在线客服系统 Udesk全渠道客服系统,将在线客服,呼叫中心,工单,邮件,微信微博信息统一到一个平台进行客服管理,大幅度提升客服效率,用户满意度。 优势特色:1、无需下载与安装;2、快速部署,接入企业系统;3、无需硬件设备。 点击购买>Udes

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

Android官方开发文档Training系列课程中文版:管理设备的睡眠状态

原文地址:http://android.xsoftlab.net/training/scheduling/index.html 引言 当Android设备处于闲置状态时,它的屏幕首先会变暗,接着会关闭屏幕,最后会将CPU关闭。这些举措可以防止设备的电量迅速被耗尽。但是当APP需要的话,还是会有例外情况: 游戏类APP或者视频类APP需要保持屏幕常亮。 有一部分APP或许不需要屏幕保持常亮,但是它们需要CPU继续保持运转,直到它们的任务执行完毕。 这节课主要学习如何在需要的时候保持设备的唤醒状态而又不至于非常耗电。 保持设备的唤醒状态 为了避免迅速将电量耗光,Android设备会在进入闲置状态后紧接着进入睡眠状态。不过,还是有一些例外情况的:它们需要保持屏幕常亮或者是保持CPU持续运转状态以便完成某些任务。 具体采用什么样的方式这取决于APP的需求。不过,有一条规则就是尽量采取最轻量级的方法,尽可能少的消耗系统资源。 保持屏幕常亮 某些APP比如游戏类APP或者视频类APP需要保持屏幕常亮。要做到这一点只需要在Activity中使用FLAG_KEEP_SCREEN_ON就可以,不过千万不要在服务或者其它组件中使用该标志: public class MainActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); } ... } 这种方法的优势在于:它不要指定特殊权限,系统会将APP之间的状态切换处理好,也不需要担心有关释放无用资源的问题。 另一个实现方式就是在布局文件中使用android:keepScreenOn属性: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:keepScreenOn="true"> ... </RelativeLayout> android:keepScreenOn=”true”的作用效果与使用FLAG_KEEP_SCREEN_ON的效果等同。你可以选择最合适的方式。使用标志的优势在于可以动态的清除该标志的状态,以便于屏幕可以转入关闭状态。 Note: 除非可以肯定屏幕不再需要保持常亮,否则不需要我们自己专门去清除该标志。WindowManager会严格把关这些事情:APP转入后台时,APP转入前台时。但是如果你明确要清除该标志以便屏幕可以转入关闭状态,那么可以使用clearFlags():getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON) 保持CPU的运行 如果APP希望在系统转入睡眠状态之前完成一些事情,那么可以使用PowerManager系统服务中的WakeLock特性。WakeLock可以使APP控制设备的电源状态。 因为持有WakeLock对象可以直接与电源交互,所以只能在必要的时候使用WakeLock。绝不要在Activity中使用WakeLock。就像上面说的那样,如果希望保持屏幕常亮,只需要使用FLAG_KEEP_SCREEN_ON就可以。 使用WakeLock的合理场景就是后台服务。再强调一次,使用时应当以最小限度使用该标志,因为它会直接影响到电池的电量。 如果要使用WakeLock,首先需要在清单文件中添加WakeLock的权限: <uses-permission android:name="android.permission.WAKE_LOCK" /> 如果APP还包括了一个与服务做相关工作的广播接收器,那么可以通过WakefulBroadcastReceiver来管理WakeLock。这是一种非常理想的方案。如果APP没有那样的情况,那么也可以使用下面的方法: PowerManager powerManager = (PowerManager) getSystemService(POWER_SERVICE); Wakelock wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakelockTag"); wakeLock.acquire(); 如果要释放WakeLock,调用wakelock.release()就好。它会释放你所持有的CPU资源。在任务完成后做这项工作是很重要的,因为这可以防止电池电量被迅速耗光。 使用WakefulBroadcastReceiver 广播接收器与服务的结合使用非常易于管理后台任务的生命周期。 WakefulBroadcastReceiver是一种特殊的广播接收器:它可以创建并管理APP的PARTIAL_WAKE_LOCK。在设备即将转入睡眠状态时,WakefulBroadcastReceiver会将该信号发给服务(通常是IntentService)。如果在收到广播后没有持有WakeLock,那么可以在工作完成之前设备就会转入睡眠状态。这就会导致任务不能及时完成,这并不是我们想看到的。 WakefulBroadcastReceiver用法的第一步就是将其添加到清单文件中,与其它广播接收器的添加方式一样: <receiver android:name=".MyWakefulReceiver"></receiver> 第二步就是使用startWakefulService()方法来启动MyIntentService。这个方法除了在启动时WakefulBroadcastReceiver持有了一个WakeLock外,其它的都与startService()很相似。在startWakefulService()中所使用的Intent被隐式的携带了一个WakeLock。 public class MyWakefulReceiver extends WakefulBroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Start the service, keeping the device awake while the service is // launching. This is the Intent to deliver to the service. Intent service = new Intent(context, MyIntentService.class); startWakefulService(context, service); } } 在服务结束时,要使用MyWakefulReceiver.completeWakefulIntent()将WakeLock释放。completeWakefulIntent()方法使用了被WakefulBroadcastReceiver传递过来的Intent对象: public class MyIntentService extends IntentService { public static final int NOTIFICATION_ID = 1; private NotificationManager mNotificationManager; NotificationCompat.Builder builder; public MyIntentService() { super("MyIntentService"); } @Override protected void onHandleIntent(Intent intent) { Bundle extras = intent.getExtras(); // Do the work that requires your app to keep the CPU running. // ... // Release the wake lock provided by the WakefulBroadcastReceiver. MyWakefulReceiver.completeWakefulIntent(intent); } }

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

美国人口普查局去年遭受入侵,官方称普查数据未受影响

根据美国监察长办公室 (OIG) 最近披露的一份报告显示,美国人口普查局使用的Citrix设备存在零日漏洞,该漏洞导致服务器在2021年1月11日遭到攻击,黑客利用未修补的 Citrix ADC 零日漏洞入侵服务器。 报告中表明,被攻击的服务器向该局提供远程访问能力,使其工作人员能够访问生产、开发和实验室网络。被攻击后,系统人员表示,这些服务器无法接入2020年十年一次的人口普查网络。 攻击行为未全部成功 虽然攻击者能够破坏该局的服务器,并建立了允许他们远程执行恶意代码的流氓管理员帐户,幸运的是他们无法部署后门来保持对服务器的长期访问。据 OIG 称,此次美国人口普查局未能及时处理关键漏洞,才导致其服务器易受攻击。此外,在服务器被攻陷后,该局也未能及时发现和报告攻击行为,没有维护足够多的系统日志,这些行为都阻碍了事件的调查。 美国监察长办公室 (OIG)称,没有迹象表明2020年十年人口普查系统受到任何损害,也没有任何其他的恶意行为影响 2020 年的十年人口统计数据。此外,美国人口普查局代表公众维护和管理的系统或数据没有受到损害、操纵或丢失。 报告中还表明,在2020年1月13日,黑客对远程访问服务器攻击时,试图与远程服务器进行通信,美国人口普查局的防火墙已经阻止了部分攻击。然而,直到2周多后的1月28日,该局才知道服务器被攻击者入侵。 攻击者利用了一个严重的 Citrix 漏洞 OIG提到该漏洞是在2019年12月17日披露的,因此有可能将其准确定位为CVE-2019-19781,这是一个影响Citrix的应用程序交付控制器(ADC)、网关和SD-WAN WANOP设备的严重漏洞。不幸的是OIG的报告中删除了漏洞和软件供应商的名字,显示被删除的供应商是Citrix,但是人口普查局对攻击的回应没有被修改。 美国人口调查局称,因为 COVID-19和缺少工程师(已经满负荷为联邦政府的客户提供支持),迁移工作未完成。 如果成功利用CVE-2019-19781漏洞,远程攻击者可以在未打补丁的服务器上执行任意代码,无需身份验证即可访问内部网络。 仍在积极利用的 Citrix 漏洞 Citrix于2019年12月17日披露了安全漏洞,并提供了缓解措施,并于2020年1月24 日发布了解决该漏洞的产品更新。 然而,在1月8日检测到Citrix服务器存在漏洞后两天,针对CVE-2019-19781的概念验证漏洞被公开。攻击者趁机开始攻击未打补丁的 Citrix 服务器,安全研究人员观察到攻击者在受感染的服务器上部署恶意软件,包括Sodinokibi和Ragnarok勒索软件负载等。 今年2月,DoppelPaymer勒索软件团伙还利用同样的漏洞,入侵了法国的一家电信公司Bretagne Télécom的网络。自那以后,CVE-2019-19781漏洞被美国联邦调查局(FBI)列入过去两年的头号目标漏洞名单,并被美国国家安全局(NSA)列入黑客滥用的前五名漏洞。

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

中小企业如何建官方网站---推荐阿里云自营建站服务

近期准备使用ThinkCMF管理架构搭建一个新的资讯网站,已经拥有的两个域名全是在阿里购买以及备案的,现在需要选择一个适合的云服务器,所以就逛了逛阿里云,看看对于建站方面有没有什么推荐,然后无意中发现阿里云推出的云建站服务,这对于中小企业来说简直是福利了,基本上是个标准的公司都开始有了自己的官网,笑话,没有官网客户怎么了解你的产品,有可能就是因为你的官网设计的标准,大气,客户就会对你的信任度增加,从而促进一笔不小的订单,这都是有可能的啊。 然鹅,现实的问题是,不是所有的公司都是互联网公司,不是每个公司都有软件开发人员的,所以建站难免成了一个障碍,很多公司可能会选择花钱找私人承包,这样的选择弊端太多了,① 价格不透明 ② 后期维护不方便 ③ 容易被攻击 等等问题你还放心的下吗? 阿里云企业建站服务介绍 云速成美站,标配阿里云空间,PC站+手机站+微信公众号+小程序一应俱全,只要你会打字就可以完成建站操作,难易程度大概和制作一个PPT差不多,根本没有什么门槛。阿里云还提供千套企业模板,风格颜色随心选择,40余种功能控件,按需搭配使用,建站就是这么简单! 云企业官网,阿里云会为客户量身打造,一站式标准化建站服务,满足企业建站所需。从咨询到购买,标准价格,标准功能配置,足不出户,轻松搞定,购买成功后,应用标准化服务流程,客户可享受从网站策划到上线的全程定值服务。更有项目经理为客户整理需求,搭建网站架构,预置网站内容;设计师一对一进行视觉美化,风格由客户选择: 高大上?满足建筑美?满足极简风?满足全部建站过程,无需客户亲自操作,简单高效,品质有保障,毕竟大公司,值得信赖,哈哈哈。 为什么选择阿里云自营建站服务? 选择小公司,后期维护难,安全系数低,轻易被攻击、挂马,而且网站的后续升级改版同样比较麻烦,运营人员需要不断的联系程序人员,费钱还不省心。我们选择阿里云建站服务,安全省心,花钱不再担心打水漂! 阿里云建站全面应用云计算,标配HTTPS,网站安全稳定访问快。网站后台可视化操作,每季度版本更新,免费享用,轻松简单易维护。阿里云的承诺是只有你想不到,没有他们办不到,建站就找阿里云,和传统建站说拜拜。 想要了解更多的可以自己到官网去看看详细内容,选择一个大公司毕竟还是比较靠谱的事情:https://www.aliyun.com

资源下载

更多资源
优质分享App

优质分享App

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

腾讯云软件源

腾讯云软件源

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

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文件系统,支持十年生命周期更新。

用户登录
用户注册