分类 后端技术 下的文章

Python的import详解与模块自动加载

import与sys.path 模块import导入顺序 在 sys.modules 中查找,它缓存了所有已导入的模块, 这里默认在运行前会自动加载内置库. 此变量中包括了解释器的内置库,即在sys.builtin_module_names中搜索,返回第一个找到的结果 在 sys.meta_path 中查找,它支持自定义的加载器 按顺序在sys.path中搜索,排在前面的优先被找...

继续阅读 »

python的魔术方法大全与属性

魔术方法和内建属性 Python中有大量类似__dict__这种以双下划线开头和结尾的特殊成员及“魔法方法”,它们有着非常重要的地位和作用,也是Python语言独具特色的语法之一!重写魔术方法可以实现特殊功能~!当然重写前需明确其使用规则,不然很容易挖坑~ 那么什么是魔术方法(魔法方法) 魔术方法都不需要调用,需要触发!每个魔术方法触发条件都不同 魔术方法都是在python事先定义好的,在...

继续阅读 »

Github进行fork后如何与原仓库同步

如果你提交的 pull request 未被接受且得到回复说:“重新fork”。说明在你fork之后,源仓库又更新了。 通常的做法是,删掉自己fork的库,然后再修改。但是如果fork中有大量已修改的内容时这个方法就不行了。 操作步骤 1、执行命令 git remote -v 查看你的远程仓库的路径。 $ git remote -v origin https://github.com/e2...

继续阅读 »

编程语言中IO流的使用

什么是IO流 java的io是实现输入和输出的基础,都在java.io.*包下。 流(stream)是一种有顺序的,有起点和终点的字节集合 IO流的分类: 按照流的方向区分: 节点流,输入流(往内存中去)、输出流(内存中出来) java.io.InputStream 字节输入流 java.io.OutputStream 字节输出流 按照读取数据方式区分: 处理流,字节流、字符流 java.i...

继续阅读 »

编程语言中高级特性:集合

注意:同样以java为例说明 为什么说集合非常重要 集合可以说是学习 Java 中最重要的一块知识点了,无论做任何业务系统,集合总是最为基础的那块API。 在实际项目中,我们可以发现集合无处不在,因为凡是涉及到数据存储相关的问题都离不开集合,合理的使用集合可以极大的提高存储和检索的效率。集合也是很多数据结构的基础。 集合与集合框架 集合 集合是 Java 提供的一种存储对象的容器,同数组一样...

继续阅读 »

编程语言中高级特性:注解

注意:本文以java为例说明。 什么是注解 Java注解是JDK1.5的新特性,与注释比较类似,不同的是注释是给我们开发人员看的,注解是给代码看的,它是代码层面的解释说明,注解也被称为元数据。注解的使用也很简单,语法规则:@注解名称,比如我们常见的“@Override”。 注解本身没有任何意义,单独的注解就是一种注释,他需要结合其他如反射等技术才有意义。 Java注解它提供了一种安全的类似注...

继续阅读 »

编程语言中高级特性:反射

反射机制 这里以java反射机制加以说明,其他编程语言基本类似。 JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。 反射机制应用场景 通过配置信息调用类的方法 结合注解实现特殊功能 按需加载jar包或class 逆向代码 ,例如反编...

继续阅读 »

编程语言中高级特性:泛型

什么是泛型,为什么使用泛型 泛型:允许程序员在强类型程序设计语言中在类定义时不会设置类中的属性或方法参数的具体类型,而是在类实例化时(创建对象)再进行类型的定义,会在编译期检查类型是否错误。 使用泛型的目的 可重用,不使用泛型通常相同功能的代码,根据不同传入的参数类型的多少,就的重复写多次。 可扩展,可扩展不同的数据类型 类型安全,实例化时需指定类型,如果使用object代替类型,那么类型...

继续阅读 »

APP端扫一扫技术文档

CPSAPP端扫码相关知识 CPSAPP二维码内容专属字符串 二维码内容字符串由两部分组成路由|随机token 例如:login|ET822N04S41EFWRH。当然这里如果结构很复杂,推荐使用json 路由 路由是一个字符串,二维码字符串|前部分的字符串login,路由字符串决定了处理类。例如login指定了扫码登录相关的处理类。 随机token 16位随机字符串,大写。例如:ET822...

继续阅读 »

内部MySql使用规范

数据库环境 prod:线上环境,只允许管理员操作且要做操作记录方便回滚。 dev:开发环境,开发可读写,可修改表结构。且使用版本控制系统记录sql操作记录,方便上线时统一修改数据库。 命名规范 基本命名规则 使用有意义的英文词汇,词汇中间以下划线分隔,避免使用保留字 只能使用英文字母,数字,下划线,并以英文字母开头 库、表、字段全部采用小写,不要使用驼峰式命名 数据库、表,一律使用前缀...

继续阅读 »

微服务架构与RPC框架讲解

服务端架构的演变 微服务定义 维基上对其定义为:一种软件开发技术 - 面向服务的体系结构(SOA)架构样式的一种变体,它提倡将单一应用程序划分成一组小的服务,服务之间互相协调、互相配合,为用户提供最终价值。每个服务运行在其独立的进程中,服务与服务间采用轻量级的通信机制互相沟通。每个服务都围绕着具体业务进行构建,并且能够独立地部署到生产环境、类生产环境等。 后端架构演变 单体架构 业务初期用户...

继续阅读 »

Elasticsearch教程 — Document APIs

Elasticsearch文档的操作可以理解成MySQL中的增删改查操作。 单个文档操作 # 索引中添加数据,如果目标索引的文档已存在,则更新文档并增加版本。当不指定id时为创建文档。 PUT /<target>/_doc/<_id> POST /<target>/_doc/ PUT /<target>/_create/<_id>...

继续阅读 »

Elasticsearch教程 — Query DSL

查询语句核心语法部分 查询注意事项 text类型的查询都是基于分词后的词条查询的,例如"abcd"分词后"ab,cd"如果term查询"bc"就查不到。 query(查询)和filter(过滤)的区别 查询语句可同时存在query和filter。 query的查询字段会进行相关性_score的计算,而filter仅仅用来筛选。 Elasticsearch会自动缓存常用的过滤器,以提高性...

继续阅读 »

Elasticsearch教程 — Search APIs

搜索 API 用于搜索和聚合存储在 Elasticsearch 索引和数据流中的数据。时ES的核心语法之一。 核心搜索 # 搜索 # <target>(可选,字符串)要搜索的数据流、索引和别名的逗号分隔列表。支持通配符(*)。要搜索所有数据流和索引,请省略此参数或使用*或_all。 # 查询参数、查询正文参数很多,参考文档 # https://www.elastic.co/gui...

继续阅读 »

分布式ID生成器

需求背景 在复杂分布式系统中,往往需要对大量的数据和消息进行唯一标识。数据日渐增长,对数据分库分表后需要有一个唯一ID来标识一条数据或消息,数据库的自增ID显然不能满足需求。此时一个能够生成全局唯一ID的系统是非常必要的。 特点 全局唯一,不能出现重复。 高性能,分布式系统中通常每秒会有很多数据产生。 单调递增,保证下一个ID一定大于上一个ID,这样可以保证某些索引快速建立。例如B-tre...

继续阅读 »

Elasticsearch教程 — Index APIs

类比MySQL,其主要操作是对表的增删改查,对于ES那么就是对索引的操作(index APIs)以及搜索(Search APIs)。搞清楚这两个知识点基本使用ES就没多大的问题了。当然这两个知识点只是ES的小部分功能,但是最重要。我们就从这两方面开始学起。 索引管理 约定: 指的是:索引名/数据流名/别名。 指的是:索引名 # 创建索引 PUT /<索引名> { # 索...

继续阅读 »

Elasticsearch教程 — 基本概念

Elasticsearch是什么 Elasticsearch是Elastic推出的基于Lucene的分布式、可扩展、高实时的搜索与数据分析引擎。 英文文档,基于7.15版本:https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html Elasticsearch特点 详细特点参考官网:https://w...

继续阅读 »