这就是HashMap中的键往往都使用字符串。 1.3引入不可变对象的疑虑: 在并发编程中,不可变对象特别有用。由于创建后不能被修改,所以不会出现由于线程干扰产生的错误或是内存一致性错误。...但是程序员们通常并不热衷于使用不可变对象,因为他们担心每次创建新对象的开销。实际上这种开销常常被过分高估,而且使用不可变对象所带来的一些效率提升也抵消了这种开销。...2.3 不可变对象的局限 2.3.1 编程思维的转变 如果所有对象都被设计为不可变的,等价于使用函数式编程思维,编程思维上的变化并非所有程序员都能很好的适应,如果适应不了,强行推广只会适得其反。...不可变对象对并发编程友好、易于在进程内缓存、且拥有更好的可维护性,建议在自己能力范围内,尽量优先考虑使用不可变对象的设计。...比如颜色数值和颜色名可以因为多线程的调动而对应不上。 3.2定义不可变对象的策略 以下的一些规则是创建不可变对象的简单策略。
对于eBPF可以简单的理解成kernel实现了一个虚拟机机制,将类C代码编译成字节码(后文有详细解释),挂在到内核的钩子上,当钩子被触发时,kernel在虚拟机的"沙盒"中运行字节码,这样既能方便的实现很多功能...BCC在android系统上也可以运行,但是要对系统进行一定程度的修改,后续可能会写单独的文章进行讲解。对于内核开发者我还比较关注怎么自己来实现监控的功能,下文也将做简单的讲解。 ?...8)中断性能 三、eBPF框架 在开始说明之前先解释下eBPF上的名词,来帮忙更好的理解。...可以使用下面的命令调试动态加载 ? 4. 用户空间程序实现 下面我们需要编写用户空间的显示程序,本质上就是在用户态通过系统调用把BPF map给读出来。 ? ?...至此,如何在android平台使用eBPF实现统计系统中每个pid在一段时间内系统调用的次数的功能就介绍完了。
参考链接: Python函数中的默认参数 在 python 中定义函数,其参数可以使用多种不同的方式,其中包括 “默认值参数”类型,那么当作默认值的对象有什么限制和要求么?这里搞不好还真有坑!...参数的默认值: 使用可变对象使用不可变对象 默认参数使用可变对象会怎样? 先复原需求 定义一个函数,为传入的列表(list)尾部添加一个“end”元素。 ...该检查检测何时在参数的默认值中检测到列表或字典等可变值。默认参数值只在函数定义时计算一次,这意味着修改参数的默认值将影响函数的所有后续调用。 如果函数默认参数使用不可变对象又会怎样呢? ...: 由于没有传入实参,lt指向的存储空间一直没有发生变化但是这个空间是受控的,相当于只读的,不允许向里面添加任何内容此时执行添加 'end'操作,当然不允许了 综上,在定义函数默认值参数的时候,其默认值尽量不要使用可变对象...,为了防止产生类似问题,做的更彻底些,默认参数值可以直接使用单例的空对象 None 来代替,然后在函数体中判断调用时是否传入了空的参数。
【前言】一般来讲,Android使用的数据库都是自带的SQLite数据库。Web重量级的MySQL、Orcacle、NOSQL等都不适用于Android项目的开发。...但是我发现了一个Web上最近几年比较火的一个数据库 ---- MongoDB。查看它的官网发现,它还可以用于Android开发,而且官方文档也给出了一些API说明。...于是我决定写下这篇博客分享一下MongoDB在Android上怎么使用。...【说明】:MongoDB也可以在iOS上面使用,我是做安卓开发的,本文只讲解MongoDB在Android上面的使用,iOS的使用情况请上MongoDB官网自行查阅。...---- 三、MongoDB SDK在本地的路径 (一)、MongoDB SDK会有很多附带的依赖包 如下图所示: ?
减少包体积的好处有很多,比如增加用户黏性和满意度,提升下载速度,减少安装时间,以便在终端设备上连接用户,尤其是在新兴市场。...如果以上还不足以说服您使用 ProGuard,其实移除无用代码和混淆所有名称还有其他更多的优化效果: 在一些版本的 Android 设备上,DEX 代码会在安装或者运行时被编译成机器码。...这些警告的一个原因就是,您的构建路径中没有加入需要依赖的 JARs,如使用了 provided (仅编译时)依赖。而有时候,在 Android 上这些代码的依赖在运行时并不会被真正的调用。...在某些情况下,ProGuard 的警告确实有助于您发现闪退的罪魁祸首和关于您配置上的其他问题。...tools 目录下(SDK/tools/proguard/proguard-android.txt),但在新版的 SDK Tools 和 Android Gradle 插件版本2.2.0+上,可以在构建时从
) 继承 (Inheritance) 虽然,通过一系列的范例(对于好奇的读者,这些范例片断代码是很生动的),我将会阐述对象在Javascript中,对象是如何被使用,并且如何实现面向对象的。...简单对象(Simple Objects) 在Javascript中,最简单的可构建的对象,就是机制内建的Object对象。在Javascript中,对象是指定名称的属性(property)的集合。...(Using Prototypes to Implement Methods) 试想一下,这使很笨的办法,每次我们都要创建名称没有使用意义的方法函数,然后在构造函数里,把它们分配给每个方法属性。...当代码,引用一个属性的时候,它并不存在于对象本身里,那么Javascript将会自动的在原型的定义中查找这个属性。...而且,事实上,一个对象的原型对象又可以参照另外一个原型对象,就这样以链式最终关联到基类对象的构造函数。
虽然通常使用简单,但是 multitail 提供了一些命令行和交互式选项,在开始使用它之前,你应该了解它们。...基本 multitail 使用 multitail 的最简单用法是在命令行中列出你要查看的文件名称。此命令水平分割屏幕(即顶部和底部),并显示每个文件的底部以及更新。...然后,你可以再次使用向上和向下箭头在放大的区域中滚动浏览各行。完成后按下 q 返回正常视图。...默认情况下,你的系统上不会安装 multitail,但是使用 apt-get 或 yum 可以使你轻松安装。该工具提供了许多功能,不过它是基于字符显示的,窗口边框只是 q 和 x 的字符串组成的。...总结 以上所述是小编给大家介绍的在 Linux 上使用 Multitail命令的教程,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。
一,在linux机上安装xorg-x11-xauth 如果没装,启动GUI程序会提示Canno open display。...yes 三、在Windows客户端上安装X11 Server程序 Xming是运行于Windows下的X 服务器,下载Xming:http://sourceforge.net/projects/xming...安装完成后,点击启动即可 四、在Windows上的ssh客户端设置 客户端需要设置x11转发,常用secureCRT和putty,根据自己所用的客户端设置即可。...五、安装字体文件 如果发现无法显示文字,有可能是服务器上没安装字体文件,解决方法是到yum上装几个 yum search fonts yum install wqy-zenhei-fonts.noarch...yum install xorg-x11-fonts-100dpi.noarch 最后,登录devnet tlinux服务器,运行一个GUI程序,就可以在windows上看到!
Bloch的“失败原子性”意味着,如果方法抛出异常,则该对象之后仍应可用。通常,对象应与调用该方法之前处于相同状态。 对于不可变对象,可以简单地从它是不可变的事实中获得收益。...没有可以更改对象状态的操作。对象的所有方法都可以创建从原始对象派生的新对象。 例如,String具有substring(int)方法。...它不会更改原始字符串中的任何内容-它会创建一个新对象,其内容是所需原始字符串部分的副本。如果抛出异常,那么您将不会获得新对象-但原始String从未更改。...substring()中没有修改原始String的代码,因此它是故障原子的。 可变对象也可以获取失败原子性,但是必须特别注意它,而在不可变对象中,它仅源于您将其设计为不可变的注意。
[题图] 本指南将向你演示如何启用 SSL 来保护由 CentOS 或者 Fedora 上的 Apache 提供服务的网站。...前期准备 本文假定你在 CentOS 或 Fedora 上运行 Apache2。...在使用本指南之前, 确保你在 Linode 上执行了以下步骤: 了解我们的入门指引并完成设置 Linode 主机名和时区的步骤。...完成 CenOS 上的 LAMP指南,并创建一个你希望使用 SSL 保护的站点。 按照我们的指引获取一个自签名的或商业的 SSL证书。...你可以通过运行以下命令来执行此操作: yum install mod_ssl 配置 Apache 以使用 SSL 证书 1.编辑 /etc/httpd/conf.d/ssl.conf 文件中的虚拟主机条目来将认证文件和需要用在每个域名上的虚拟主机信息包含在内
第一类是 Medium 上热门文章的翻译,其实我也翻译过: 在 Android 上使用协程(一):Getting The Background 在 Android 上使用协程(二):Getting started...在 Android 上使用协程(三) :Real Work 说实话,这三篇文章的确加深了我对协程的理解。...在 Android 中,一般是不建议直接使用 GlobalScope 的。那么,在 Android 中应该如何正确使用协程呢?再细分一点,如何直接在 Activity 中使用呢?...如何配合 ViewModel 、LiveData 、LifeCycle 等使用呢?我会通过简单的示例代码来阐述 Android 上的协程使用,你也可以跟着动手敲一敲。...协程在 Android 上的使用 GlobalScope 在一般的应用场景下,我们都希望可以异步进行耗时任务,比如网络请求,数据处理等等。当我们离开当前页面的时候,也希望可以取消正在进行的异步任务。
每个容器都部署于它自己的 CPU、内存、块 I/O,以及网络资源上,所有这些都不依赖于某个内核和操作系统。...这也是容器与虚拟机之间最大的不同;相比之下,虚拟机是一个运行于宿主机操作系统上的完整的操作系统平台,而容器不是。 容器允许你以一种前所未有的方式扩展交付能力(不管内部还是外部的)。...更好的是,安装和使用 Docker 在 Linux 平台上特别的方便。 我将会向你演示在 Linux 上安装 Docker 是多么方便,同时带你入门 Docker。...例如,在 Fedora 上安装应该用命令: sudo dnf install docker 若你使用的是 CentOS 7,那么最好使用安装脚本来安装 docker。...SSL 项目),Bitnami,在树莓派上使用的 Nginx 和 Drupal,等等很多很多)。
以前的博客是使用Jekyll托管在github上,后来用着越来越不方便,比如没有自动生成post,不能一键部署,文件结构和配置也是比较繁琐,更重要的是有时候用markdown写一篇文章,生成的静态文件很乱...现在下决心换成了hexo Nodejs安装 因为hexo是基于nodejs的应用,所以要先安装nodejs才可以。我这里以ubuntu为例,因为我自己一直在使用ubuntu。...这里有一些Front-matter需要介绍,可以配置文章使用的模板、所属的分类和tag等。...Front-matter 是文件最上方以 — 分隔的区域,用于指定个别文件的变量,举例来说: title: "使用Hexo在Github上搭建自己的博客" date: 2015-03-10 22:30:...hexo clean hexo generate 然后把生成的public目录下的文件放到你的master分支下即可。git commit后把这两个分支推送到你的github上。
如何保持正确的时间,如何使用 NTP 和 systemd 让你的计算机在不滥用时间服务器的前提下保持同步。 它的时间是多少? 让 Linux 来告诉你时间的时候,它是很奇怪的。...1.fedora.pool.ntp.org 你可以输入你希望使用的其它时间服务器,比如你自己的本地 NTP 服务器,在 NTP= 行上输入一个以空格分隔的服务器列表。...(别忘了取消这一行的注释)NTP= 行上的任何内容都将覆盖掉 FallbackNTP 行上的配置项。 如果你不想使用 systemd 呢?那么,你将需要 NTP 就行。...在大多数 Linux 上的 NTP 都来自 ntp 包,它们大多都提供 /etc/ntp.conf 文件去配置时间服务器。查阅 NTP 时间服务器池 去找到你所在的区域的合适的 NTP 服务器池。...现在,你可以在你的局域网中的其它计算机上设置 systemd-timesyncd,这样它们就可以使用你的本地 NTP 服务器了,或者,在它们上面安装 NTP,然后在它们的 /etc/ntp.conf 上输入你的本地
今天我们要讨论的是 Lutris ,一个 Linux 上的开源游戏平台。你可以使用 Lutries 安装、移除、配置、启动和管理你的游戏。...从网站你可以浏览可用的游戏,添加最喜欢的游戏到个人库,以及使用安装链接安装他们。 首先,我们还是来安装客户端。...使用 Pacaur: pacaur -S lutris 使用 Packer: packer -S lutris 使用 Yaourt: yaourt...-S lutris 使用 Yay: yay -S lutris Debian: 在 Debian 9.0...使用 Lutris 管理你的游戏 安装完成后,从菜单或者应用启动器里打开 Lutries。
Node.js 是用于开发服务器端应用程序的开源的运行时环境。Node.js 应用使用 JavaScript 编写,能在任何有 Node.js 运行时的服务器上运行。...Node.js 是 Ryan Dahl 以及在 Joyent 工作的其他开发者于 2009 年创建的。它的设计目标就是构建可扩展的网络应用程序。 Ghost 是使用 Node.js 编写的博客平台。...它不仅开源,而且有很漂亮的界面设计、对用户友好并且免费。它允许你快速地在网络上发布内容,或者创建你的混合网站。...在这篇指南中我们会在 FreeBSD 上安装使用 Nginx 作为 web 服务器的 Ghost。我们会在 FreeBSD 10.2 上安装 Node.js、Npm、nginx 和 sqlite3。...第一步 - 安装 Node.js npm 和 Sqlite3 如果你想在你的服务器上运行 ghost,你必须安装 node.js。
你的系统上(至少)有两个时钟:系统时间 —— 它由 Linux 内核管理,第二个是你的主板上的硬件时钟,它也称为实时时钟(RTC)。...1.fedora.pool.ntp.org 你可以输入你希望使用的其它时间服务器,比如你自己的本地 NTP 服务器,在 NTP= 行上输入一个以空格分隔的服务器列表。...(别忘了取消这一行的注释)NTP= 行上的任何内容都将覆盖掉 FallbackNTP 行上的配置项。 如果你不想使用 systemd 呢?那么,你将需要 NTP 就行。...在大多数 Linux 上的 NTP 都来自 ntp 包,它们大多都提供 /etc/ntp.conf 文件去配置时间服务器。查阅 NTP 时间服务器池 去找到你所在的区域的合适的 NTP 服务器池。...现在,你可以在你的局域网中的其它计算机上设置 systemd-timesyncd,这样它们就可以使用你的本地 NTP 服务器了,或者,在它们上面安装 NTP,然后在它们的 /etc/ntp.conf 上输入你的本地
已经有了的东西都有: 一个ListView listView 一个List dataList Context context 需要实现的东西是: 一个DataListViewAdapter...,当进行如下调用时,就能在列表上显示出数据: listView.setAdapter(new DataListViewAdapter(context, dataList)); 我们需要实现一个扩展了BaseAdapter的类...Context context, List listDatas) { _context = context; _dataList = listDatas; } /* * 获取数据集的总数
查询游戏对象位置是否在NavMeshAhent烘焙上的网格上 问题:在使用Navigation导航系统的时候,有时候需要判断某个点是否在我们的导航网格中,以免在进行某些敌人或者游戏对象实例化生成的时候将对象的位置放在了导航网格之外...描述: 根据指定范围内的 NavMesh 查找最近的点。 通过将输入点沿垂直轴投影到附近的 NavMesh 实例上,可以找到最近的点。在创建时已为每个实例选择了此垂直轴。...例如,在两层结构中,如果 sourcePosition 设置为一楼天花板上的一个点,则可能会在二楼而不是一楼找到最近的点。天花板不被视为障碍物。 如果指定了较大的搜索半径,此功能可能会降低帧速率。...为避免帧速率问题,建议您将 maxDistance 指定为代理高度的两倍。 如果您尝试在 NavMesh 上查找随机点,则应使用推荐的半径并多次执行查找,而不是使用非常大的半径。...具体实例: 当鼠标点击场景中的游戏对象时,查询该物体的坐标是否在导航网格中,在的话返回true,不在则返回fasle; 简单搭建一个场景测试,然后渲染一下导航网格,忘记NavMeshAhent导航怎么用了可以查看该文章回顾一下
文章模型使用的是字和字bigram作为输入,所以使用wang2vec(https://github.com/wlin12/wang2vec),在word2vec中加入了顺序信息。...2.在LSTM中加入了dropout。3.使用momentum-based averaged SGD(Weiss et al.2015)方法训练模型。主要就是优化算法的小改进加上超参数的网格搜索。...在大部分的数据集上加入预训练的字向量都能有一个点左右的提升,除了MSR和PKU两个数据集,这两个数据集上本文算法表现并不好。...在我的认知和平时的实验中,一般使用预训练字向量时会选择fine-tuning,因为考虑到任务的特殊性,比较通用的词向量很难学到某些特定领域词在任务中的表示。...结论: 作者没有对本文做过多的总结,给出了中文分词两个挑战,也可以说是展望吧:1.模型结构上的调优,2.外部知识库的使用。
领取专属 10元无门槛券
手把手带您无忧上云