分类 - 编程之路

2020-01-27 18:42:27    33    0    0

一. 类和实例

  • 一个.java文件只能包含一个public类,但可以包含多个非public类。如果有public类,文件名必须和public类的名字相同。
  • 如果不确定是否需要public,就不声明为public,即尽可能少地暴露对外的字段和方法。
  • 创建新对象时,优先选用静态工厂方法而不是new操作符。
  1. class Person {
  2. public String name;
  3. public int age;
  4. }
  5. Person ming = new Person();
  6. ming.name = "Xiao Ming";
  7. ming.age = 12;
  8. System.out.println(ming.name);


  • 定义为publicclassinterface,可以被当前包,其他包的任何类访问。
2019-12-19 21:46:47    27    0    0

在Java中,如果一个Java对象可以在内部持有若干其他Java对象,并对外提供访问接口,我们把这种Java对象称为集合。很显然,Java的数组可以看作是一种集合

一. List

在集合类中,List是最基础的一种集合:它是一种有序链表。List的行为和数组几乎完全相同:List内部按照放入元素的先后顺序存放,每个元素都可以通过索引确定自己的位置,List的索引和数组一样,从0开始。

1.1 创建list

我们来比较一下ArrayList和LinkedList:通常情况下,我们总是优先使用ArrayList。

方法ArrayListLinkedList
获取指定元素速度很快需要从头开始查找元素
添加元素到末尾 速度很快速度很快
在指定位置添加/删除需要移动元素不需要移动元素
内存占用较大
2019-12-18 18:58:27    42    0    0

一、概要说明

Maven是一个Java项目管理和构建工具,它可以定义项目结构、项目依赖,并使用统一的方式进行自动化构建,是Java项目不可缺少的工具。它的主要功能有:

  • 提供了一套标准化的项目结构。
  • 提供了一套标准化的构建流程(编译,测试,打包,发布……)。
  • 提供了一套依赖管理机制。 

二、项目结构

2.1 目录结构

一个使用Maven管理的普通的Java项目,它的目录结构默认如下:

2019-08-24 15:39:05    80    0    0

一个ndarray数组,其中的元素类型必须一致。后面的例子默认已经导入了numpy了import numpy as np。在numpy中多维的体现可以从 [ 的个数体现,一个表示一维数组,两个表示二维数组,三个表示三维数组。

一、创建n维数组

1、Python序列创建

通过Python内置序列(列表、元组、迭代器等)生成。dtype指定元素类型。注意:这里有两种形式的 dtype指定,dtype的类型范围可能会超出最大范围,比如 int8 表示的范围为-128 ~ 127,所以要特别注意,常用dtype类型见后面。

2019-05-20 15:52:51    102    0    0

一、并行并发

  • 并行是指在同一时刻,多个任务(进程、线程等)同时执行,互补干扰,通常会是多核CPU实现。 

  • 并发是指在一个时间段内多个任务都处于运行状态,但同一时刻只有一个任务处于运行状态,在这个时间段内多个任务可能根据实际情况交替执行任务 

  • 总结:体现到具体的实现过程,并发指的是程序的结构,并行指的是程序运行时的状态。 

2019-05-20 14:29:48    104    0    0

迭代器

  可以被next()函数调用并不断返回下一个值的对象称为迭代器:Iterator。 

  • 迭代是Python最强大的功能之一,是访问集合元素的一种方式。
  • 迭代器是一个可以记住遍历的位置的对象。
  • 迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束。迭代器只能往前不会后退。
  • 迭代器可通过next()方法获取下一个值。
  • 字符串,列表或元组对象都可用于创建迭代器。
  • 任何实现了__iter__()__next__()方法的对象都是迭代器。__iter__()返回迭代器自身,__next__()返回容器中的下一个值
2019-05-20 11:18:17    50    0    0

vim 的自动补全插件非常多(YouCompleteMe、jedi-vim等),本文讲的是vim自带的补全功能。vim自带的补全功能是只能在插入模式中使用

自动补全文档

查看自动补全文档

  1. :help ins-completion

  真正好用的补全我觉得只有四个:关键字补全、文件名补全、Vim命令补全、宏补全、包括头文件的补全。其中最后两个是专门为C语言设计的,不过经过配置,也能支持C++。

关键字补全

按 CTRL+N 可以启动。它会检索当前正在编辑的文件中所有的“词”,然后根据你当前在编辑的“词”进行匹配。这里“词”的概念类似英语中的单词,必须前后要有特殊的、不表意的字符隔开。

2019-04-25 17:34:41    50    0    0

Redis是由C语言编写的。Redis支持5种数据类型,以K-V形式进行存储,K是String类型的,V支持5种不同的数据类型,分别是:string,list,hash,set,sorted set,每一种数据结构都有其特定的应用场景。Redis底层数据结构有以下数据类型:简单动态字符串(SDS),链表,字典,跳跃表,整数集合,压缩列表,对象。

一、SDS

  Redis使用了自己定义的一种数据类型:简单动态字符串(simple dynamic string SDS)

  1. redis>SET msg "hello world"

  上边设置key=msg,value=hello world的键值对,它们的底层存储是:键msg是字符串类型,其底层实现是一个保存着“msg”的SDS。值value是字符串类型,其底层实现是一个保存着“hello world”的SDS。
  注意:SDS除了用于实现字符串类型,还被用作AOF持久化时的缓冲区。

2019-04-25 13:36:49    87    0    0

除了我们经常熟知的共享锁和排他锁外,MySQL数据库还有一种锁叫元数据锁,主要为了保证元数据的一致性,用于处理不同线程操作同一数据对象的同步与互斥问题。

一、元数据

  所谓元数据,就是表示数据的数据,这些数据五花八门,总之,只要不是我们存储到数据库里的数据记录,大多都可以理解为元数据。 

  描述数据库的任何数据,作为数据库内容的对立面的都是元数据。因此,列名、数据库名、用户名、版本名以及从SHOW语句得到的结果中的大部分字符串是元数据。还包括INFORMATION_SCHEMA数据库中的表中的内容,因为定义的那些表存储关于数据库对象的信息。

2019-04-24 17:34:13    46    0    0

一、事务的ACID

  • 原子性(Atomicity) 
    是指一组对数据库的改变,要么最终成功执行完成,要么就失败,失败后全部回滚。

  • 一致性(Consistency) 
    指的是在事务完成前后,数据都是要在业务意义上是"正确的"。

  • 隔离性(Isolation) 
    是指一组对数据库的并发修改互相不影响。如果并发是针对同一个数据集,这时保证隔离性的主要问题在于,如果将读取作为对数据修改的前提条件,之后在对数据进行修改的一刹那,读取时的前提条件还是否满足。

  • 持久性(Duration) 
    是指对数据的修改,一旦完成,该结果就应当永远不丢失。 

  实际上事务性数据库实现的是:

  • 支持未完成的数据修改回滚的机制,对应“原子性”
  • 力所能及的数据合法性检查,对应“一致性”
  • 保证数据并发的修改的规则,对应“隔离性”
  • 使用基于持久化存储(磁盘、SSD)的方式对数据进行存储,对应“持久性”