我喜欢在文章里写一些没有太大用处的比喻,并喜欢在最后做一些总结,跟人聊天的时候,我喜欢用「可以的」来敷衍,同时用卧槽来表示惊讶,我某些时候少言寡语,另一些时候则滔滔不绝,这是我自己能够感知的一些特点,此外还有更多我自己都无法察觉的固定习惯...此时我也让同事用爬虫爬取了我自己的所有博客文章,他爬完发给我之后我才想起来,我其实可以用博客后台内置的导出功能直接导出。...请不笑话我,我用自己的 10 万条微信聊天记录,训练出的模型,以下是我和他(或者它?)...很明显,他和 chatgpt 差的极远,没办法帮我写代码,或者写文案,也不够聪明,因为训练用的数据不包含多轮对话,所以多轮对话的理解力更差,与此同时,他对我也不算特别了解,除了知道自己的名字(也就是我的名字...这些模型变得越来越聪明,但它们更像是人类的,而非个体的,当我用我自己的这些数据去重新训练模型时,我能得到完全不一样的东西,一个更靠近个体的模型,虽然无论是我产生的数据量,还是我采用的预训练模型的参数量和结构
1、引言 这段时间自己在看一些Java中BIO和NIO之类的东西,也看了很多博客,发现各种关于NIO的理论概念说的天花乱坠头头是道,可以说是非常的完整,但是整个看下来之后,发现自己对NIO还是一知半解、...本文不会提到很多Java NIO和Java BIO的理论概念(需要的话请参见本文的“相关文章”一节),而是站在编码实践的角度,通过代码实例,总结了我自己对于Java NIO的见解。...6、BIO 6.1 在单线程条件下BIO的弱点 在上两节中,我们用经典的Java BIO实现了一个简易的网络通信程序,这个简易的程序是以单线程运行的。...9、Java中BIO和NIO的概念总结 通常一些文章都是在开头放上概念,但是我这次选择将概念放在结尾,因为通过上面的实操,相信大家对Java中BIO和NIO都有了自己的一些理解,这时候再来看概念应该会更好理解一些了...10、本文小结 本文介绍了一些关于JavaBIO和NIO从自己实操的角度上的一些理解,我个人认为这样去理解BIO和NIO会比光看概念会有更深的理解,也希望各位同学可以自己去敲一遍,通过程序的运行结果得出自己对
经过思考,我觉得可能会是下面这种情形: 要删除的节点 X 是根节点,且左右孩子节点均为空节点,此时将节点 X 用空节点替换完成删除操作。 可能还有其他情形,大家如果知道,烦请告知。...尤其是在我学习删除操作的时候,很多资料是实在人看不下去,看的我很痛苦。直到我看到维基百科上关于红黑树的分析时,很是欣喜。这篇文章分析的很有条理,言简意赅,比很多资料好了太多。...本文对红黑树的分析也主要参考了维基百科中的红黑树分析,并对维基百科中容易让人产生疑问和误解的地方进行了说明。同时维基百科中文版红黑树文中的图片较为模糊,这里我重新进行了绘制。...在写这篇文章之前,我曾尝试过用 Java 语言实现红黑树的增删操作,最终只写出了新增节点操作,删除没做出来。而且自己写的新增逻辑实在太繁琐,写的不好看,没法拿出来 show。...所以最后把 Java 中的 TreeMap 增删相关源码拷出来,按照自己的需求把源码修改了一下,也勉强算是实现了红黑树吧。代码放到了 github 上,传送门 -> RBTree.java。
经过思考,我觉得可能会是下面这种情形: 要删除的节点 X 是根节点,且左右孩子节点均为空节点,此时将节点 X 用空节点替换完成删除操作。 可能还有其他情形,大家如果知道,烦请告知。...我在学习红黑树的时候也找了很多资料,但总体感觉讲的都不太好。尤其是在我学习删除操作的时候,很多资料实在让人看不下去,看的我很痛苦。直到我看到维基百科上关于红黑树的分析时,很是欣喜。...同时维基百科中文版红黑树文中的图片较为模糊,这里我重新进行了绘制。需要说明的是,维基百科中文版无法打开了,文中关于维基百科的链接都是英文版的。...在写这篇文章之前,我曾尝试过用 Java 语言实现红黑树的增删操作,最终只写出了新增节点操作,删除没做出来。而且自己写的新增逻辑实在在太繁琐,写的不好看,没法拿出来 show。...所以最后把 Java 中的 TreeMap 增删相关源码拷出来,按照自己的需求把源码修改了一下,也勉强算是实现了红黑树吧。代码放到了 github 上,传送门 -> RBTree.java。
我们唯一需要编写的SAX的部分是Content Handler。全文如下: 在这段代码中,我们寻找标签为title和text的标签。...此时,我们已经编写的代码可以成功地识别XML中的文章。现在我们完成了解析文件一半的任务,下一步是处理文章以查找特定页面和信息。再次,我们使用专为这项工作而创建的一个工具。...例如,战争与和平的信息框是: 维基百科上的每一类文章,如电影、书籍或广播电台,都有自己的信息框。在书籍的例子中,信息框模板被命名为Infobox book。...要查找你感兴趣的文章类别的信息框模板,请参阅信息框列表。 如何将用于解析文章的mwparserfromhell 与我们编写的SAX解析器结合起来?...(我把精力集中在这些信息上,为我的下一个项目建立一个图书推荐系统)。你可以修改process_article 函数和WikiXmlHandler类,以查找任何你需要的信息和文章!
我们可以用\d替换[0-9],结果相同(匹配所有数字)。 这个表达式(和一般的正则表达式)的伟大之处在于它无需太多修改,就可以用到任何编程语言中。...1.0 – 真实示例 – 计数年份 我们可以在Python脚本中使用此表达式来查找维基百科历史部分的文章中提及20或21世纪内年份的次数。 ? 上述脚本将按照提及的次数依次打印年份。 ?...几乎每个文本编辑器都支持基于Regex的查找和替换。 以下是一些受欢迎的编辑器指南。...当数据源中的边缘情况或次要语法错误导致表达式失败时,将导致最终(或即时)的灾难,出于此目的去编写你自己的正则表达式可能会让你心情沮丧。...强化的解析器几乎可用于所有机器可读的语言,而NLP工具可用于人类语言——我强烈建议你使用其中一种,而不是尝试编写自己的语言。
以下是话题顺序的大纲: 我们将从List接口开始,你将编写实现这个接口的两种不同的方式。然后我们将你的实现与 Java ArrayList和LinkedList类进行比较。...接下来,我将介绍树形数据结构,你将处理第一个应用程序:一个程序,从维基百科页面读取页面,解析内容,并遍历生成的树来查找链接和其他特性。...然后,你将使用哈希表和二叉搜索树来编写实现此接口的类。...最后,你将使用这些(以及其他一些我之前介绍的)类来实现一个 Web 搜索引擎,其中包括:一个查找和读取页面的爬虫程序,一个存储网页内容的索引器,以便有效地搜索,以及一个从用户那里接受查询并返回相关结果的检索器...以建立你的开发环境来开始。对于所有的练习,你需要能够编译和运行 Java 代码。我使用 JDK7 来开发示例。如果你使用的是更新的版本,则所有内容都应该仍然可以正常工作。
简介来自维基百科,传送门:维基百科Fuchsia 现在说说关于Fuchsia的几点拙见,如有纰漏,还请不吝斧正。 首先我们来看看这个系统的”技术参数”,内核是由Magenta微内核构建的。...从支持的语言中可以看出,谷歌想抛弃Java,毕竟最近一些年一直在和Oracle因为Java侵权打官司,所以谷歌可能觉得烦躁了,新的操作系统完全放弃了对Java的支持,当然不排除后期Oracle 自己给Fuchsia...翻看了Fuchsia的github之后,Go,Python,Swift是作为第三方出现的,因此,主要的应用应该还是C/C++ 和Dart作为主要的应用编写。...索性,UI和交互有Dart,这门语言比C/C++轻松,语法类JS,所以有前端基础的应该很轻松的就能玩。 所以从应用开发来说,应该会比Java来的轻松(个人感官,Java真的是又臭又长。...不过按照现在的更新频率来看,预计是折戟沉沙的可能性比较小。 但是国外媒体(部分国内媒体)鼓吹的取代安卓,可能性不会太大,毕竟生态链已经形成了,要替换,需要一段非常长的时间。
谈谈我对 IoC 和 AOP 的理解 一文由 JFinal 作者波总对 IoC 与 AOP 的一句表述引起: IOC 本质是为了实现 AOP 在文中我考察了 IoC, DI 和 AOP 三个概念及其关系...我在 谈谈 一文中已经清楚地给出了维基百科中对 IoC 和 AOP 这两个概念的描述, 并由此得到结论: "IoC 不是为了 AOP"....逻辑上讲有两个可能: 维基百科对 IoC 和 AOP 的概念描述有错误 我在文中依据概念得出结论的过程不正确, 依据维基百科的概念描述应该得到 "IoC 的本质是为了实现 AOP" 这个表述 请 @yong9981...我相信 yong9981 用 奇葩 来修饰 Act, 不会是引用其原意, 而是指 Act 仅支持 DI 不支持 AOP 的设计不正常....) 等等 框架拥有选择自己生态结构的权利.
我之前有学习过好几门语言,其中熟悉的包括Java、Python,半吊子的有Go、C等。这家公司用的是.NET,其中主要的编程语言是C#。....NET其实我在高中就稍微有过接触,但是接触的不是代码,而是用.NET开发的网站。虽然接触过,但是我还是不知道.NET到底是什么,它是一门编程语言?还是一个平台?...C#,一个以C++和Java语法为基础开发的一个全新的面向对象语言,是.NET开发的首选语言。 这样我才弄清楚了,.NET和C# 的区别和关系。 那如何去学习C#呢?...其实上面也说到C#是以C++和Java语法为基础的语言,这两门语言我都有学习过,所以C#的语法,我应该大部分还是知道的。...这是一种非常直接且高效的方法,既节省了你对于公司项目的了解,又节省了你转语言的时间。 边看公司源代码边学习代码规范,一步一步来,在学习中不断结合自己之前学习过得框架和基础,这样就会变得非常高效。
# 个人背景(Personal Background) 我是一名非常典型的程序员:平时工作主要在 Linux 环境下使用 Java 和 Python,偶尔会用 HTML+CSS+JavaScript 编写网页...2.IDE 面向有语义的代码,会涉及到大量领域逻辑,因此速度偏慢体积庞大,适合编写静态语言项目(Java、C++ 和 C# 等)。...我认为应当使用正确的工具去做有价值的事情,并把效率最大化,所以我会用 Eclipse 编写 Java 项目,用 Vim 编写Shell,用 Sublime Text 编写 JavaScript/HTML...Sublime Text 提供了强大的查找(和替换)功能,为了提供一个清晰的介绍,我将 Sublime Text 的查找功能分为 快速查找、标准查找 和 多文件查找 三种类型。...我自己通过下面的设置使以规范化自己的代码。
我描述了搜索引擎的元素,并介绍了第一个应用程序,一个从维基百科下载和解析页面的 Web 爬行器。本章还介绍了深度优先搜索的递归实现,以及迭代实现,它使用 JavaDeque实现“后入先出”的栈。...检索:我们需要一种方法,从索引中收集结果,并识别与检索项最相关的页面。 我们以爬虫开始。爬虫的目标是查找和下载一组网页。...对于像 Google 和 Bing 这样的搜索引擎,目标是查找所有网页,但爬虫通常仅限于较小的域。在我们的例子中,我们只会读取维基百科的页面。...图 6.2:Chrome DOM 查看器的截图 图 6.2 展示了维基百科 Java 页面(http://thinkdast.com/java)的 DOM 截图。...作为替代,我们可以使用栈数据结构自己跟踪节点;如果我们这样做,我们可以避免递归并迭代遍历树。 6.6 Java 中的栈 在我解释 DFS 的迭代版本之前,我将解释栈数据结构。
通常,它可以将自动生成的指令序列替换为原始方法调用,类似于内联方法。与内联方法不同,编译器对内置方法有深入的了解,因此可以针对给定情况更好地集成和优化它。...他们的区别在于JVM的实现。 03 java语义的扩展 有些方法用普通的java代码是无法实现的。...上图我只截取了部分标记为intrinsic方法的类的说明。 可以看到java.lang.Math中大部分的方法都是intrinsic的方法。...Patch against HS20-b12): https://gist.github.com/rednaxelafx/1986224 Graal 因为Hotspot VM是用C++编写的,如果要添加...Graal是一个用java编写的新款JIT编译器。 Graal是基于Java的JIT编译器,是JDK 9中引入的实验性Ahead-of-Time(AOT)编译器的基础。
# 个人背景(Personal Background) 我是一名非常典型的程序员:平时工作主要在 Linux 环境下使用 Java 和 Python,偶尔会用 HTML+CSS+JavaScript 编写网页...2.IDE 面向有语义的代码,会涉及到大量领域逻辑,因此速度偏慢体积庞大,适合编写静态语言项目(Java、C++ 和 C# 等)。...我认为应当使用正确的工具去做有价值的事情,并把效率最大化,所以我会用 Eclipse 编写 Java 项目,用 Vim 编写Shell,用 Sublime Text 编写 JavaScript/HTML...# 查找&替换(Finding&Replacing) Sublime Text 提供了强大的查找(和替换)功能,为了提供一个清晰的介绍,我将 Sublime Text 的查找功能分为 快速查找、标准查找...我自己通过下面的设置使以规范化自己的代码。
▍个人背景(Personal Background) 我是一名非常典型的程序员:平时工作主要在 Linux 环境下使用 Java 和 Python,偶尔会用 HTML+CSS+JavaScript 编写网页...IDE 面向有语义的代码,会涉及到大量领域逻辑,因此速度偏慢体积庞大,适合编写静态语言项目(Java、C++ 和 C# 等)。...我认为应当使用正确的工具去做有价值的事情,并把效率最大化,所以我会用 Eclipse 编写 Java 项目,用 Vim 编写Shell,用 Sublime Text 编写 JavaScript/HTML...▍查找&替换(Finding&Replacing) Sublime Text 提供了强大的查找(和替换)功能,为了提供一个清晰的介绍,我将 Sublime Text 的查找功能分为 快速查找、标准查找...我自己通过下面的设置使以规范化自己的代码。
在我真正走进她的内心世界,多次昼夜相伴之后。我最终也被她的清新脱俗所拜倒。 接下来就让我们一起来了解这名神秘的“女子”。 1. vim 历史 以下是网上找到一张图。...按照维基百科的介绍,vim 一共有 12 种不同模式,但只有 6 种基本模式,剩下 6 种都是基本模式的变种。但实际我们最常接触的只有两类模式:命令模式和编辑模式。...如果要简单概括这三种模式的使用场景,那就是:在命令模式中执行光标导航,复制粘贴删除,撤销重做,以及查找替换等操作;在编辑模式下,编写代码或进行创作;在命令行模式模式下,输入 q 退出,输入w保存,输入wq...(向上查找),光标定位到终端底部一行,输入要查找的字符串,再按回车(RETURN),首先定位到一个找到的字符串,接着按小写的n查找下一个,按大写的N查找前一个。 5....总结 本文从 vim 的发展历史开始,以具备能够熟练驾驭 vim 编辑器来满足日常代码编写的基本操作为主线,讲解了在 vim 中进行模式切换,光标导航,删除,撤销,替换,复制,粘贴,插入文本,以及配置编辑器外观设置等必要技能
此时,你应该熟悉 Java 提供的Map接口和HashMap实现。通过使用哈希表来制作你自己的Map,你应该了解HashMap的工作原理,以及为什么我们预计其核心方法是常数时间的。...对于某些应用程序,必须或至少保持键的顺序,这很有用。 很难同时解决所有这些问题,但是 Java 提供了一个称为TreeMap的实现: 它不使用哈希函数,所以它避免了哈希的开销和选择哈希函数的困难。...我已经提供了get和containsKey的大纲。他们都使用findNode,这是我定义的私有方法;它不是Map接口的一部分。...你的下一个任务是填充containsValue。为了让你起步,我提供了一个辅助方法equals,比较target和给定的键。...否则,它调用putHelper,这是我定义的私有方法;它不是Map接口的一部分。 填写putHelper,让它搜索树,以及: 如果key已经在树中,它将使用新值替换旧值,并返回旧值。
维基百科有多种语言版本,对应同一主题的文章不一定是精确的翻译,而是由使用特定语言的用户社区从头开始编写的。...根据维基百科,拥有最大用户社区的前8个版本都是用以下语言编写的(我还添加了韩语,我稍后会解释): 排在第 20 位的韩语被添加为第九语言,因此所有节目的所有原始语言(英语、西班牙语、韩语)都得到了代表...利用我所有 CPU 内核上的并行处理,我获得了所有选定节目和语言的时间序列: 人们需要非常小心来自众包项目(如维基百科)的数据。在检查《鱿鱼游戏》时间序列时,我注意到缺乏中文的数据。...以下函数查找时间序列中的最高峰值及其发生日期: 这可用于创建要在主图中使用的峰值点标记图: 最后,我创建了本文开头的数据可视化: 真正的大片 《鱿鱼游戏》确实像 Netflix 和媒体宣称的那样在全球范围内大受欢迎...我还可以得出结论,维基百科页面浏览数据是一个很好的信息来源。人们可以考虑不同的指标甚至不同的数据,但这里看到的维基百科总体趋势与其他报告的排名和公众对抽样节目的接受程度非常吻合。
在学习 rust 的时候也可以照着这些语言特性去对比自己是否掌握了。 那么 rust 到底强大在哪里?在 Kotlin 刚出的时候宣传的点就是空安全 ,弥补 Java 在这方面的不足。...而 rust 可以说对比的是 C++,弥补 C++ 在空指针和野指针(悬垂指针)方面的不足,当然 rust 的优势还不足如此。...以下是来自维基百科的介绍,有些特性我暂时还没体验过,先摘录一波: Rust 是由 Mozilla 主导开发的通用、编译型编程语言。。...这样就完成了用 rust 编译 Android 平台的 so 动态库,并且每次编译后的时候就要进行 so 的替换,当然也可以想办法把 rust so 的编译放在 Android gradle 的编译过程中...,就和用 CMake 编译一样。
领取专属 10元无门槛券
手把手带您无忧上云