-
面试官 线程池多余的线程是怎样回收的?问到我了!
所属栏目:[语言] 日期:2021-12-06 热度:146
JDK线程池ThreadPoolExecutor的源码,对线程池执行任务的流程有了大体了解,实际上这个流程也十分通俗易懂,就不再赘述了,别人写的比我好多了。 不过,我倒是对线程池是如何回收工作线程比较感兴趣,所以简单分析了一下,加深对线程池的理解吧。 下面以JDK1.[详细]
-
C++ 控制台格式化打印技能
所属栏目:[语言] 日期:2021-12-06 热度:98
我写文章主要是为了给自己写文档。我在编程时非常健忘,所以我经常会写下有用的代码片段、特殊的特性,以及我使用的编程语言中的常见错误。这篇文章完全切合我最初的想法,因为它涵盖了从 C++ 控制台格式化打印时的常见用例。 像往常一样,这篇文章带有大量的[详细]
-
在 Go 中运用 Dockertest 进行集成测试
所属栏目:[语言] 日期:2021-12-06 热度:171
进行集成测试(或系统测试)通常意味着让数据库填充数据,像 redis、elasticsearch 等,通常,我们的软件与之交互的任何基础设施都可以工作。 最常见的方法是复制我们的生产基础设施,其实用容器来实现还是比较容易的,比如 docker 容器。 我们可以为需要复制的[详细]
-
C# 多线程使用Parallel.ForEach并行循环,真的能提升效能?
所属栏目:[语言] 日期:2021-12-06 热度:101
Parallel类是.NET 4中新增的抽象线程类。Parallel.For()方法类似于C#的for循环语句,也是多次执行一个任务。但是使用Parallel.For()方法,可以并行运行。微软的并行运算平台(Microsofts Parallel Computing Platform (PCP))提供了这样一个工具,让软件开发人[详细]
-
透过一个编译报错,总结两个Go程序编译的关键知识
所属栏目:[语言] 日期:2021-12-06 热度:122
调研了一下某个做 APM 的厂商的 Go 探针程序,说是引入一个包,全程不用再修改其他代码就能在项目里引入探针。没想到在刚引入包试着构建了一下就翻车了。 main.go:10:2: build constraints exclude all Go files in /xxx/github.com/xxx/agnet/xxxx 编译器编[详细]
-
敏感词过滤算法达成
所属栏目:[语言] 日期:2021-12-06 热度:53
敏感词、文字过滤是一个网站必不可少的功能,如何设计一个好的、高效的过滤算法是非常有必要的。 在实现文字过滤的算法中,DFA是唯一比较好的实现算法。DFA即Deterministic Finite Automaton,也就是确定有穷自动机,它是是通过event和当前的state得到下一个s[详细]
-
Python远程连接服务器用它就可以了
所属栏目:[语言] 日期:2021-12-06 热度:115
使用fabric玩转远程服务器管理 fabric基于强大的paramiko、invoke等库,构建出一整套简单易用的API,使得我们使用简洁的语句就可以应付常见的各种远程服务器操作,使用pip install fabric完成安装,本文演示对应版本为2.6。 1. 连接到远程服务器并执行终端命[详细]
-
Go泛型系列 Maps 包有哪些?
所属栏目:[语言] 日期:2021-12-06 热度:122
真实的场景 不少新手,对 map 的输出是随机的有迷惑,曾经,map 的输出顺序是固定的,但官方怕大家依赖这个顺序,之后故意让输出顺序不固定。 但实际场景中,会有按某种顺序输出 map 的需求,怎么办呢?这需要对 map 的 key 进行排序,伪代码如下: for k := m[详细]
-
Java9异步编程-反应式流运用
所属栏目:[语言] 日期:2021-12-06 热度:164
Reactive API总览 要构建一个流,主要使用三个抽象,并将它们组合成异步处理逻辑。 每个流都需要处理由Publisher实例发布给它的事件;发布者有一个subscribe()的方法。 如果某个订阅者希望接收发布者发布的事件,则需要使用subscribe()订阅发布者。 消息的接收[详细]
-
.NET Core怎样配置TLS Cipher 套件 ?
所属栏目:[语言] 日期:2021-12-06 热度:148
.NET Core Cipher(套件)配置 如果没有项目上的苛刻要求,我断然也就无法在此方面展开研究和实践 本文具以.NET 5为例,只不过针对.NET Core 3或3.1通过工具扫描出的协议套件结果略有所差异,但不影响我们对安全套件的配置,我们使用OpenSSL生成自签名证书,后[详细]
-
EasyC++,名称空间其他特征
所属栏目:[语言] 日期:2021-12-06 热度:156
名称空间其他特性 嵌套 我们可以将名称空间声明进行嵌套: namespace elements { namespace fire { int flame; ... } float water; } 我们观察一下可以发现这里的flame位于elements::fire当中,所以当我们使用解析运算符使用它的时候写成:elements::fire::fl[详细]
-
编写无Bug Java代码的几个优秀实行
所属栏目:[语言] 日期:2021-12-06 热度:172
在编写代码时,开发人员努力以最少的复杂性和最多的功能编写没有bug的代码。无论你是初学者还是专家,都应该遵循一些规则,以便为客户机获得最佳代码。下面是无bug代码编写的规则。 规则 :不需要依赖于初始化 在Java中,开发人员总是依赖构造函数的使用来初[详细]
-
长篇长论Python生成器
所属栏目:[语言] 日期:2021-12-06 热度:103
ython生成器是什么 一句话解释:包含了yield关键字的函数就是生成器,它的返回值是一个生成器对象。我简单画了个示意图: yield相当于return。 函数遇到yield就暂停,保存当前信息,返回yield的值。 在下次执行next()时,从当前位置继续执行。 比较有意思的事[详细]
-
11月份Github上Java开源项目排行名单
所属栏目:[语言] 日期:2021-12-06 热度:180
QuestDB是一个高性能、开源的SQL数据库,适用于金融服务、物联网、机器学习 、DevOps和可观测性应用。它拥有支持PostgreSQL线协议的端点,使用InfluxDB线协议的模式无关的高吞吐数据获取方式,以及用于查询、批量导入和导出的REST API。QuestDB实现了ANSI SQ[详细]
-
Go 1.18 中的 Any 是啥?
所属栏目:[语言] 日期:2021-12-06 热度:133
Go 1.18 因为泛型引入 any,这实际上是 interface{} 的别名: type any = interface{} 以下代码虽然不是泛型,但用 Go 1.18 可以正常运行,证明 any 和 interface{} 是一样的:(这里可以在线运行:https://gotipplay.golang.org/p/dPeNhe-7nkA) package main[详细]
-
为什么C和C++难以被替代
所属栏目:[语言] 日期:2021-12-06 热度:128
这是为什么呢?难道没有其他语言能取代C/C++吗? 我个人认为确实很难有。即使技术上有了(如rust)也很难真的流行起来,在市场使用上打败C/C++。原因有这么几个。 一个重要原因就是前两天提到的技术惯性问题。人们总是倾向于使用自己熟悉的技术,总是在不得不改变[详细]
-
new[]和delete[]必定要配对使用吗?
所属栏目:[语言] 日期:2021-12-06 热度:109
在平时资料中,我们常看到:new和delete,new[]和delete[]一定要配对使用! 也有人说:有时候不配对使用也不会出现问题。也许你也是只知其然,不知其所以然,然而我也有点懵了_(3」)_ 那就研究下这个问题: 首先,看下这段配对使用代码: #include stdlib.h #[详细]
-
一文带你搞明白 Python 的输入输出
所属栏目:[语言] 日期:2021-12-06 热度:74
为什么要输入和输出? 无论是从 一开始的hello world,还是前面的各种例子,基本都是些自说自话,展示类的代码片段。只有能够接收用户输入,根据输入代码生成结果,并输出到屏幕上展示出来,才算一个较为完整,简单的程序。 input输入函数 获取用户输入,保存[详细]
-
你,也许没完全搞懂 Java 泛型
所属栏目:[语言] 日期:2021-12-06 热度:104
今天我们来谈谈泛型。其实在初学的时候,我就对泛型有点蒙,因为看到有人说 Java 的泛型不是真的泛型,我搞不懂。 还有人说 Java 的泛型在实际运行时候会把类型给擦除了,我想着擦除是什么意思?为什么要擦除? 那把类型给擦除了为什么反射的时候还能得到泛型的[详细]
-
值得收藏的 C# 策划模式套路之三
所属栏目:[语言] 日期:2021-12-06 热度:192
行为设计模式跟前两种模式从内容上是有区别的。行为设计模式更关注对象之间的通信,以及职责和任务的交互。 一、责任链 名称起得很明显, 就是一个链式的责任或任务。为什么要链式呢?是因为请求要沿着多个处理程序往后传递。一个任务,可能要分很多步,又不想[详细]
-
Go 企业应用案例共享 Go 用于支付和奖励系统
所属栏目:[语言] 日期:2021-12-06 热度:139
Go 与其他编程语言的不同之处在于认知负载。你可以用更少的代码做更多的事情,这样可以更容易地推理和理解你最终编写的代码。 大多数 Go 代码最终看起来非常相似,因此,即使你使用的是全新的代码库,你也可以非常快速地上手并运行。 总的一句话,他们认为:G[详细]
-
Go 泛型 Maps 包正式释出,当下可用!
所属栏目:[语言] 日期:2021-12-06 热度:99
给大家带来一个关于泛型的新消息,那就是:在几天前,Go 泛型的配套标准库 golang.org/x/exp/maps 包已经正式提交,放出来了,可以使用。 cs.opensource.google 包代码如下: package maps func Keys[M ~map[K]V, K comparable, V any](m M) []K { r := make([详细]
-
Java 如何校验两个文件内容是同样的?
所属栏目:[语言] 日期:2021-12-06 热度:195
如果两个文件的内容相同,那么它们的摘要应该是相同的。这个原理能不能帮助我们鉴定两个文件是否相同呢? Java实现文件摘要 带着这个疑问,我写了一个文件摘要提取工具类: /** * 提取文件 checksum * * @param path 文件全路径 * @param algorithm 算法名 例[详细]
-
C# 使用 Npoi 操作Excel文件,你明白了吗?
所属栏目:[语言] 日期:2021-12-06 热度:125
C#使用NPOI操作excel 将DataTable数据导入到excel中 /// summary /// 将DataTable数据导入到excel中 /// /summary /// param name=data要导入的数据/param /// param name=isColumnWrittenDataTable的列名是否要导入/param /// param name=sheetName要导入的e[详细]
-
用 Python 搞一个按键记录器
所属栏目:[语言] 日期:2021-12-06 热度:97
按键记录器,就你在电脑上的每个按键,都会被记录下来,可以进行操作追踪,当然了,你在网站上输入的用户名密码等敏感信息也会被记录下来。用 Python 实现这个可以说非常简单,不过这玩意请不要用在别人的电脑上,哈哈。 教程 pynput 模块可以帮助我们实现,[详细]
