题目描述
given numRows, generate the first numRows of Pascal’s triangle.
For example, given numRows = 5
Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
酷爱历史文学的程序猿
given numRows, generate the first numRows of Pascal’s triangle.
For example, given numRows = 5
Return
[
[1],
[1,1],
[1,2,1],
[1,3,3,1],
[1,4,6,4,1]
]
找到合适的目录解压
basedir = D:\Study\MySQL\mysql-5.7.14-server-win64
datadir = D:\Study\MySQL\mysql-5.7.14-server-win64\data
port = 3306
#管理员方式打开命令行,进入mysql home 目录下的bin目录
执行如下命令:
- mysqld –initialize(我使用mysqld –initialize -secure生成的data目录下的文件不完整)
在mysql的根目录下自动生成data目录以及其他文件,初始化一个随机密码的root用户- mysqld -install/remove
注册mysql服务- net start/stop mysql
启动服务
windows在data目录下的DESKTOP-M03IEJ5.err文件里面,搜索“2016-09-01T02:15:22.399996Z 1 [Note] A temporary password is generated for root@localhost: -/br>,B;o9gm”这样的一个字符串就能找到了,其他系统也都写在日志里面,找找总会有的
更改mysql密码
alter user ‘root’@’localhost’ identified by ‘your password’;
that’s all
乱世总有英雄,奇人,最早的乱世莫过于春秋战国。
庞涓,孙膑,苏秦,张仪,纵横捭阖。以前对这段历史充满了向往,总是一直没时间看,终于借助这两个月的上下班时间熟悉了一下这段历史,记录一下,留个印象。
还是从周朝说起,西周末年,周氏衰落,天子雄风不在,天下早已礼崩乐坏,各路诸侯明着都尊周天子,实际上都在谋划着如何除掉其他诸侯,如何称王。
首先tair是一个的Key-Value结构分布式存储系统,既可以做高速缓存,也可以做持久化存储。分布式系统一般来说是一个集群,而在Tair的集群中主要存在如下几个模块:
ConfigServer
一个集群中包含2台configserver,两台configserver互为主备。
DataServer
真正存放数据的地方
InvalidServer
InvalidServer是一个可选模块,
Client
Tair提供出来的SDK
在启动时,Client会根据本地的配置文件与ConfigServer通信。Client从Config Servcer处获得可用的DataServer地址,然后Client从这些DataServer获取真正的数据。
消息中间件的核心作用就是三点:解耦,异步和并行,其中解耦是目的,异步和并行是表现形式。生产者和消费者彼此没有直接依赖,同步化解成了异步,大大减少了等待时间。例如:手机验证码的发送,当点击发送验证码的时候,只需要Client发送一条消息:{topic:sendVerifyCode,to:155xxxxxxxx,..}到消息中间件,消息中间件返回Client ok;然后消息中间件会将这条消息转发给订阅了这一个topic的Consumer,由Consumer去执行发送验证码的任务。由此看出消息中间主要做了三件事:接收消息+存储消息+转发消息。
消息传递方式
JMS:1 基于队列的点对点消费模型,2 基于发布/订阅的消费模型
MetaQ: 只有发布/订阅的消费方式
消息类型
JMS:TextMessage、MapMessage、BytesMessage,StreamMessage、ObjectMessage。
MetaQ:Message。
消息持久性
JMS:持久订阅,指示 JMS provider 持久保存消息,以保证消息不会因为 JMS provider 的失败而丢失。非持久订阅, 不要求 JMS provider 持久保存消息。
MetaQ 的消息都是持久性的
API
JMS:定义了消息中间件的生产端 api 和消费端 api,这些 api 都是约定的接口。
MetaQ:没有遵从JMS的定义,自己搞了一套。
HSF(High-Speed Service Framework),是一个高性能的分布式服务框架。一个分布式框架提供的最基本的功能就是远程调用(A机器调用B机器上的一个对象的方法,B机器将方法到返回值发送回A机器)。HSF面向接口编程,以“Service”的形式进行远程调用,简单的说就是接口的具体实现(服务)运行在服务器上,服务器将这些接口暴露出来,客户端拿到这些接口之后通过接口调用具体的服务。在服务发布和调用过程中主要涉及到下面这些知识。
服务注册的基本要素就是
ConfigServer就是存放ServiceID – ip地址映射关系(多对多)的机器,服务的元信息包括在HSFSpringProviderBean中配置的信息和服务所在的ip地址。服务的发布流程非常复杂
首先在beans里面配置一个HSFSpringProviderBean以及一些属性,必要的有serviceInterface和target。在HSFSpringProviderBean里面还包装了一层 HSFApiProviderBean,HSFApiProviderBean里面包装了ServiceMetadata元数据类(关于服务的配置信息基本都在这儿)和MetadataService类,当所有配置的属性初始化完成之后,就开始调用init方法做一些发布之前的配置信息检查,再调用publish方法准备发布服务(这里面涉及到一个HSFServiceContainer单例类),通过HSFServiceContainer得到ProcessComponent的对象,调用ProcessComponent.publish()方法正真的发布服务.实际的发布过程挺复杂。
将某一个接口的具体实现注册到本地的Server容器里面,等待客户端调用
iBatis 是apache 的一个开源项目(2010后改名为Mybatis),一个半自动化的O/R Mapping 解决方案,iBatis 最大的特点就是小巧,上手很快。
适用于以下场景:
ORM框架都是在JDBC层面上的封装,把如下的jdbc代码分解到不同的步骤去执行,以达到流程化,可定制,方便配置管理的目的。
iBatis主要做了两件事:
iBATIS的一个重要组成部分就是其 SqlMap 配置文件,SqlMap 配置文件的核心是 Statement 语句包括CRUD。 iBATIS 通过解析 SqlMap 配置文件得到所有的 sql 执行语句,同时会形成 ParameterMap、ResultMap 两个对象用于处理sql语句中的参数和sql语句执行后的ResultSet–>Object的构造。
堆区(Heap):在JVM所管理的内存中,堆区是最大的一块,堆区也是Java GC机制所管理的主要内存区域,堆区由所有线程共享,在虚拟机启动时创建。堆区的存在是为了存储对象实例,原则上讲,所有的对象都在堆区上分配内存(基于逃逸分析,没有逃逸出方法体的对象,没有必要再堆上分配)。
方法区(Method Area):方法区是各个线程共享的区域,用于存储已经被虚拟机加载的类信息(即加载类时需要加载的信息,包括版本、field、方法、接口等信息)、final常量、静态变量、编译器即时编译的代码等。
Java NIO: Non-blocking IO(非阻塞IO)是jdk 1.4提出的,简单的理解就是使用nio api读写数据的时候不会等待把所有数据读写完再返回(所以读写的时候应该使用while循环不断尝试读写数据)。NIO中关键的三个概念是通道,缓冲区,选择器。
流是一组有顺序的,有起点和终点的字节集合,是对数据传输的总称或抽象。即数据在两设备间的传输称为流,流的本质是数据传输,根据数据传输介质将流抽象为各种类,方便更直观的进行数据操作。说白了这些类就是用来读取和写入数据的,由于可以读取或写入的媒介非常多,针对每一种媒介jdk提供了单独的类来读和写数据。同时根据读写单位又分为读取按字节读写和按字符读取(根据不同的编码方案,一个字符可能按多个字节读取)。大致可以分为如下
从读写介质的角度来看
读写介质 | 字节输入 | 字节输出 | 字符输入 | 字符输出 |
---|---|---|---|---|
Basic | InputStream | OutputStream | Reader, InputStreamReader | Writer, OutputStreamReader |
Arrays | ByteArrayInputStream | ByteArrayOutputStream | CharArrayReader | CharArrayWriter |
File | FileInputStream, RandomAccessFile | FileOutputStream, RandomAccessFile | FileReader | FileWriter |
Pipes | PipedInputStream | PipedOutputStream | PipedReader | PipedWriter |
Buffering | BufferedInputStream | BufferedOutputStream | BufferedReader | BufferedWriter |
Filtering | FilterInputStream | FilterOuptStream | FilterReader | FilterWriter |
Parsing | PushbackInputStream, StreamTokenizer | PushbackReader, LineNumberReader | ||
String | StringReader | StringWriter | ||
Data | DataInputStream | DataOutputStream | ||
Data-Formatterd | PrintStream | PrintWriter | ||
Objects | ObjectInputStream | ObjectOutputStream | ||
Utilities | SequenceInputStream |