0%

涉及题目包括

  • 「力扣」第 207 题:课程表(中等);
  • 「力扣」第 210 题:课程表 II(中等);
  • 「力扣」第 301 题:最小高度树(中等);
  • 「力扣」第 802 题:找到最终的安全状态(中等);
  • 「力扣」第 630 题:课程表 III(困难);
  • 「力扣」第 329 题:矩阵中的最长递增路径(困难);
  • 「力扣」第 1245 题:树的直径(中等);
  • 「力扣」第 444 题:序列重建(中等);
  • 「力扣」第 1136 题:平行课程(困难);
  • 「力扣」第 269 题:火星词典(困难)。
Read more »

其中 1673 和 402、 1081 和 316 题只是换了说法而已,所以这里只有三道题。

  • 316 去除重复字母(困难)
  • 321 拼接最大数(困难)
  • 402 移掉 K 位数字(中等)
  • 1081 不同字符的最小子序列(中等)
  • 1673 找出最具竞争力的子序列(中等)
Read more »

线程的安全问题

原因:操作共享数据

临界区

  • 一个程序运行多个线程本省市没有问题的
  • 问题出在多个线程访问共享资源
    • 多个线程读共享单元也没有问题
    • 在多个线程对共享资源读写操作是发生指令交错,就会出现问题
  • 一段代码块内如果存在对共享资源的多线程读写操作,

解决方法()

  • 阻塞式的解决方案:synchronized,Lock
  • 非阻塞式的解决方案原子变量

阻塞式的解决方法

synchronized实际上是使用对象锁保证了临界区内代码的原子性,代码区内的代码是不可分割的,不会被线程切换打断

1
2
3
synchronized(Object){

}
Read more »

定义

即Guarded Suspension,用在一个线程等待另一个线程的执行结果

要点:

  • 有一个结果需要从一个线程传递到另一个线程,让他们关联同一个GuradedObject
  • 如果有结果不断从一个线程到另一个线程那么可以使用消息队列(见生产者、消费者模式)
  • JDK中,join的实现,future的实现,采用的就是此模式
  • 因为要等待另一方的结果,因此归类到同步模式
Read more »

Linux的学习步骤

第 1 阶段:linux 环境下的基本操作命令,包括 文件操作命令(rm mkdir chmod, chown) 编辑工具使用(vi vim)linux 用户管理(useradd userdel usermod)等

第 2 阶段:linux 的各种配置(环境变量配置,网络配置,服务配置)

第 3 阶段:linux 下如何搭建对应语言的开发环境(大数据,JavaEE, Python 等) 第 4 阶段:能编写 shell 脚本,对 Linux 服务器进行维护。

第 5 阶段:能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优。

第 6 阶段:深入理解 Linux 系统(对内核有研究),熟练掌握大型网站应用架构组成、并熟悉各个环节的部署和维护方法。

Read more »

MySQL中文字符乱码的问题

  1. 修改配置文件
1
vim /etc/myconf
  1. 修改已创建库和表的字符集
1
alter database mydb character set 'utf-8';
  1. Update

MySQL存储引擎

MyISAM和InnoDB

MyISAM InnoDB
事务 不支持 支持
外键 不支持 支持
缓存 只缓存索引 都缓存
行表锁 表锁 行锁,粒度小
Read more »

数据库的表名一般建议使用t_开头

创建表的语法格式

1
2
3
4
5
create table tableName(
columnName dataType(length),
………………..
columnName dataType(length)
);

MySql常用数据类型

Read more »

软件安装

安装docker

CentOS 7 使用yum作为安装程序。安装之前需要检查内核版本

1
2
3
4
5
6
7
8
9
10
11
1.检查内核版本
uname -r

2.更新内核
yum update

3.安装Docker
yum install docker

4.启动Docker
systemctl start docker
Read more »

SQL概述

SQL,一般发音为sequel,SQL的全称Structured Query Language),SQL用来和数据库打交道,完成和数据库的通信,SQL是一套标准。但是每一个数据库都有自己的特性别的数据库没有,当使用这个数据库特性相关的功能,这时SQL语句可能就不是标准了.(90%以上的SQL都是通用的)

什么是数据库

数据库,通常是一个或一组文件,保存了一些符合特定规格的数据,数据库对应的英语单词是DataBase,简称:DB,数据库软件称为数据库管理系统(DBMS),全称为DataBase Management System,如:Oracle、SQL Server、MySql、Sybase、informix、DB2、interbase、PostgreSql 。

Read more »

Git 属于分布式版本控制系统,而 SVN 属于集中式。

集中式版本控制只有中心服务器拥有一份代码,而分布式版本控制每个人的电脑上就有一份完整的代码。

集中式版本控制有安全性问题,当中心服务器挂了所有人都没办法工作了。

集中式版本控制需要连网才能工作,如果网速过慢,那么提交一个文件会慢的无法让人忍受。而分布式版本控制不需要连网就能工作。

分布式版本控制新建分支、合并分支操作速度非常快,而集中式版本控制新建一个分支相当于复制一份完整代码。

Read more »