IT技术博客大学习 共学习 共进步

技术文章精选

低噪声、高可扫读;标题、摘要、来源、标签一目了然。

最新文章

采集自各技术站点的近期文章。

IT 编程语言/ 2019-08-10 22:15:47 / 浏览 13,660

Go Reflect 性能

Go reflect包提供了运行时获取对象的类型和值的能力,它可以帮助我们实现代码的抽象和简化,实现动态的数据获取和方法调用, 提高开发效率和可读性, 也弥补Go在缺乏泛型的情况下对数据的统一处理能力。 通过reflect,我们可以实现获取对象类型、对象字段、对象方法的能力,获取struct的tag信息,动态创建对象,对象是否实现特定的接口,对象的转换、对象值的获取和设置、Select分支动态调用等功能, 看起来功能不错,但是大家也都知道一点: 使用reflect是有性能代价的!

IT Linux/ 2019-08-06 22:27:34 / 浏览 2,620

如何在终端显示图像缩略图

不久前,我们讨论了 Fim,这是一个轻量级的命令行图像查看器应用程序,用于从命令行显示各种类型的图像,如 bmp、gif、jpeg 和 png 等。今天,我偶然发现了一个名为 lsix 的类似工具。它类似于类 Unix 系统中的 ls 命令,但仅适用于图像。lsix 是一个简单的命令行实用程序,旨在使用 Sixel 图形格式在终端中显示缩略图。对于那些想知道的人来说,Sixel 是六像素six pixels的缩写,是一种位图图形格式。它使用 ImageMagick,因此几乎所有 imagemagick 支持的文件格式都可以正常工作。

IT 其他/ 2019-07-26 14:09:47 / 浏览 1,580

使用 defer 还是不使用 defer?

对于Go语言的defer语句,或许你回经历一个 赞赏 --> 怀疑 --> 肯定 --> 再怀疑的一个过程,本文带你回顾一下defer的故事,以及如何在代码中使用defer语句。

IT 其他/ 2019-06-28 13:45:05 / 浏览 2,200

图解python中赋值、浅拷贝、深拷贝的区别

本文介绍了对象的赋值和拷贝,以及它们之间的差异: 1、Python中对象的赋值都是进行对象引用(内存地址)传递; 2、使用copy.copy(),可以进行对象的浅拷贝,它复制了对象,但对于对象中的元素,依然使用原始的引用.; 3、如果需要复制一个容器对象,以及它里面的所有元素(包含元素的子元素),可以使用copy.deepcopy()进行深拷贝; 4、对于非容器类型(如数字、字符串、和其他’原子’类型的对象)没有被拷贝一说; 5、如果元祖变量只包含原子类型对象,则不能深拷贝;

IT 系统架构/ 2019-06-28 13:38:28 / 浏览 2,480

10分钟看懂!基于Zookeeper的分布式锁

实现分布式锁目前有三种流行方案,分别为基于数据库、Redis、Zookeeper的方案,其中前两种方案网络上有很多资料可以参考,本文不做展开。我们来看下使用Zookeeper如何实现分布式锁。

IT 系统运维/ 2019-06-28 13:25:29 / 浏览 1,760

Linux 运维:系统服务管理

我发现,每隔一段时间,运维 Linux 服务器的方法,就会变迁一次,害得我总是要重复学习这件事情,真是太不友好了。Linux 服务器运维的方法不是一种半衰期很长的技巧么?世道都变了啊……

IT Java/ 2019-06-28 13:23:18 / 浏览 2,080

终端反编译字节码利器 CFR

最近在研究一下class字节码的东西,尝试将class文件反编译成java文件。尝试了很多的工具,比如JD-GUI及其插件以及各种在线反编译,始终感觉不够酷,毕竟我是一个比较依赖终端的人,所以尝试找一些能否在终端可以实现反编译的工具。

IT 系统运维/ 2019-06-27 13:56:47 / 浏览 2,420

如何在 Linux 上复制文件/文件夹到远程系统?

从一个服务器复制文件到另一个服务器,或者从本地到远程复制是 Linux 管理员的日常任务之一。 我觉得不会有人不同意,因为无论在哪里这都是你的日常操作之一。有很多办法都能处理这个任务,我们试着加以概括。你可以挑一个喜欢的方法。当然,看看其他命令也能在别的地方帮到你。 我已经在自己的环境下测试过所有的命令和脚本了,因此你可以直接用到日常工作当中。 通常大家都倾向 scp,因为它是文件复制的原生命令native command之一。但本文所列出的其它命令也很好用,建议你尝试一下。

IT 算法/ 2019-04-09 00:38:55 / 浏览 2,120

活动 Web 页面人机识别验证的探索与实践

在电商行业,线上的营销活动特别多。在移动互联网时代,一般为了活动的快速上线和内容的即时更新,大部分的业务场景仍然通过 Web 页面来承载。但由于 Web 页面天生“环境透明”,相较于移动客户端页面在安全性上存在更大的挑战。本文主要以移动端 Web 页面为基础来讲述如何提升页面安全性。

IT Linux/ 2019-04-09 00:36:55 / 浏览 2,700

一文入门 Makefile

一个企业级项目,通常会有很多源文件,有时也会按功能、类型、模块分门别类的放在不同的目录中,有时候也会在一个目录里存放了多个程序的源代码。 这时,如何对这些代码的编译就成了个问题。Makefile 就是为这个问题而生的,它定义了一套规则,决定了哪些文件要先编译,哪些文件后编译,哪些文件要重新编译。 整个工程通常只要一个 make 命令就可以完成编译、链接,甚至更复杂的功能。可以说,任何一个 Linux 源程序都带有一个Makefile 文件。

IT 发现/ 2019-04-09 00:33:19 / 浏览 2,620

USB 4:目前所知道的一切

请站稳扶好,新一代 USB 即将面世了! USB Promoter 小组近期宣布新标准 “USB4”(官方拼写是木有空格的,本文会根据读者往常习惯增加一个空格,即 USB 4)将于今年年底发布,使用该技术的的产品可能会晚些时候到来。USB 4 带来了许多优势,包括更快的传输速度、更好的视频管理,以及可选的 Thunderbolt 3 接口兼容。 USB 3.2 发布了四种版本,USB 3.1 发布了两种类型,还有一系列不同类型和规格的其他连接器,新标准的出现也有些势不可挡,下面我们一起来看看 USB 4 的一些特性。

IT 安全/ 2019-04-09 00:29:49 / 浏览 3,240

IP团伙行为分析(更新中文版报告)

我们注意到,“惯犯承担了约40%的攻击事件,其中僵尸网络活动和DDoS攻击是惯犯们的主流攻击方式。”由于僵尸网络活动和DDoS攻击通常以协作方式从多个来源发起,因此多个惯犯以群体方式勾结“作案”就毫不奇怪了。我们将这样的群体称为“IP团伙”(IP Chain-Gang)。在本报告中,我们基于绿盟科技自2017年以来所搜集的DDoS攻击数据,识别了多个IP团伙并研究了他们的团伙行为。 采用这种研究方法背后的逻辑是:既然各IP团伙均由某一个或一组攻击控制者控制,那么同一个团伙在不同的攻击中必然会表现出相似的行为。我们希望,通过研究团伙的历史行为给该团伙建立一个“团伙画像”,以便更准确地描述其背后的攻击控制者的行为方式、偏好的攻击方法和特征,以便更有效地防御这些团伙未来可能发起的攻击,防患于未然。

IT 发现/ 2019-04-09 00:25:32 / 浏览 1,920

代码不规范,同事两行泪,撸码七宗罪!

​编程江湖中一直盛传着一个段子,那就是要问程序员最讨厌哪 4 件事?那必须是:写注释、写文档、别人不写注释、别人不写文档。 更甚者,在《流浪地球》形成刷屏之势之后,仿其而出的“代码千万行,注释第一行;编程不规范,同事两行泪”在技术圈中开始盛传,由此可见对于所有的程序员来说这是多么痛苦的事情。 本文作者 —— 全栈开发者 Nitin Sharma 分享了编程的七宗罪,也许对你会有所启发。

IT JavaScript/ 2019-04-09 00:20:48 / 浏览 2,600

Rax 系列教程(native 扫盲)

Rax 天生就是一个跨容器的解决方案,这让我们不必单独了解 iOS 和 安卓背后做了什么,让我们的开发变得很省心。但真实情况是我们的业务往往同时跑在 web 和 native 两端,web 我们轻车熟路是前端天生的优势,native 对很多人来说就会有些陌生,native 上出现的各种问题用 web 的路子去解释往往会解释不通。据 2017 年底粗略统计 Rax 的用户 70% 是前端同学,本文面向前端,简单介绍一下 Rax 背后的 native 端在做的一些事情。本文吸取了大量前人的经验,对于过深的 native 概念进行了剔除,以求前端同学更好理解,如果想更深入了解的同学可以参考下面附件内容。

IT 编程语言/ 2019-04-08 00:59:05 / 浏览 2,120

[译]Go开发中一些有用的模式

从 VB.net、Java、C# 和 Python 开始转到 Go开发的时候,我对Go语言层级的模式的缺乏有点懊恼,这促使我花了一点时间找出容易表达的那些模式。 这里是一些通用的模式的集合,以及我发现的最容易表示它们的方式。​

IT JavaScript/ 2019-04-08 00:55:55 / 浏览 2,000

Javascript创建对象方式总结

在JavaScript中, 对象向我们提供了一种存储,操作,并在网络中传输数据的方式。同时,把对象当成键值对的集合,给我们带来了一种最常用的创建JavaScript对象的方法。