xixi2


  • 首页

  • 关于

  • 标签

  • 分类

  • 归档

  • 搜索

300. Longest Increasing Subsequence

发表于 2019-10-31 | 分类于 leetcode

Given an unsorted array of integers, find the length of longest increasing subsequence.

阅读全文 »

排列

发表于 2019-10-31 | 分类于 leetcode

排列系列

阅读全文 »

Mysql中事务的实现

发表于 2019-10-31 | 分类于 数据库

【非原创】
MySQL中的事务

阅读全文 »

理解 MySQL 中的四种隔离级别

发表于 2019-10-31 | 分类于 数据库

数据库事务有不同的隔离级别,不同的隔离级别对锁的使用是不同的,锁的应用最终导致不同事务的隔离级别。(保持怀疑)

阅读全文 »

mysql优化

发表于 2019-10-31 | 分类于 数据库

MySQL优化

SQL语句优化

(1)使用limit对查询结果的记录进行限定
(2)避免select *,将需要查找的字段列出来
(3)使用连接(join)来代替子查询
(4)拆分大的delete或insert语句

选择合适的数据类型

(1)使用可存下数据的最小的数据类型,整型 < date,time < char,varchar < blob
(2)使用简单的数据类型,整型比字符处理开销更小,因为字符串的比较更复杂。如,int类型存储时间类型,bigint类型转ip函数
(3)使用合理的字段属性长度,固定长度的表会更快。使用enum、char而不是varchar
(4)尽可能使用not null定义字段
(5)尽量少用text,非用不可最好分表

选择合适的索引列

(1)查询频繁的列,在where,group by,order by,on从句中出现的列
(2)where条件中<,<=,=,>,>=,between,in,以及like 字符串+通配符(%)出现的列
(3)长度小的列,索引字段越小越好,因为数据库的存储单位是页,一页中能存下的数据越多越好
(4)离散度大(不同的值多)的列,放在联合索引前面。查看离散度,通过统计不同的列值来实现,count越大,离散程度越高:

1
mysql> SELECT COUNT(DISTINCT column_name) FROM table_name;

使用命令分析

参考文献

[1]Mysql优化:https://www.cnblogs.com/luyucheng/p/6323477.html

慢查询测试

发表于 2019-10-31 | 分类于 数据库

首先,创建一张表books

1
create table books (id int not null auto_increment, ISBN bigint not null, book_name varchar(20) not null, author varchar(50), publish_date varchar(20), description varchar(500), publish_organization varchar(30),  total_pages int not null, primary key(id))ENGINE=InnoDB DEFAULT CHARSET=utf8;

显示表结构及内容:
books_column

插入数据:

1
2
insert into books (ISBN, book_name, author, publish_date, description, publish_organization, total_pages) values
(9787111375296, "数据库系统概念", "Abraham Silberschatz,Henry F.Korth,S.Sudarshan", "2012-04-01", "《数据库系统概念(原书第6版)》是经典的数据库系统教科书《Database System Concepts》的新修订版,全面介绍数据库系统的各种知识,透彻阐释数据库管理的基本概念。本书内容丰富,不仅讨论了关系数据模型和关系语言、数据库设计过程、关系数据库理论、数据库应用设计和开发、数据存储结构、数据存取技术、查询优化方法、事务处理系统和并发控制、故障恢复技术、数据仓库和数据挖掘,而且对性能调整、性能评测标准、数据库应用测试和标准化、空间和地理数据、时间数据、多媒体数据、移动和个人数据库管理以及事务处理监控器、事务工作流、电子商务、高性能事务系统、实时事务系统和持续长时间的事务等高级应用主题进行了广泛讨论。《数据库系统概念(原书第6版)》既可作为高年级本科生或低年级研究生的数据库课程教材,也可供数据库领域的技术人员参考。", " 机械工业出版社", 805);

416. Partition Equal Subset Sum

发表于 2019-10-31 | 分类于 leetcode

Given a non-empty array containing only positive integers, find if the array can be partitioned into two subsets such that the sum of elements in both subsets is equal.

阅读全文 »

背包问题

发表于 2019-10-31 | 分类于 数据结构与算法
  1. 01背包问题:每个物品最多选一次
  2. 完全背包问题:每个物品可以选任意多次
  3. 多重背包问题:每个物品可选次数上限不同
  4. 混合背包问题:
  5. 二维费用背包问题:分组背包问题,物品先分组,组内物品之间互斥
  6. 背包问题求方案数
  7. 求背包问题的方案
  8. 有依赖的背包问题

参考文献

[1]视频:https://www.bilibili.com/video/av33930433?from=search&seid=9243114481874096821

synchronized关键字

发表于 2019-10-30 | 分类于 并发编程

synchronized关键字的作用是能够保证在同一时刻最多只有一个线程执行该段代码,以达到保证并发安全的效果。
synchronized是Java的关键字,被Java语言原生支持;synchronized是最基本的互斥同步手段。

阅读全文 »

谈谈线程池:ThreadPoolExecutor

发表于 2019-10-30 | 分类于 并发编程

在web开发中,服务器需要接受并处理请求,所以会为一个请求来分配一个线程来进行处理。如果每次请求都新创建一个线程的话实现起来非常简便,但是存在一个问题:

如果并发的请求数量非常多,但每个线程执行的时间很短,这样就会频繁的创建和销毁线程,如此一来会大大降低系统的效率。可能出现服务器在为每个请求创建新线程和销毁线程上花费的时间和消耗的系统资源要比处理实际的用户请求的时间和资源更多。

所以线程池出现了。线程池为线程声明周期的开销和资源不足问题提供了解决方案。通过对多个任务重用线程,线程创建的开销被分摊到了多个任务上。
使用线程池的好处:

  • 降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。
  • 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。
  • 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,
  • 使用线程池可以进行统一的分配,调优和监控。

Java中的线程池是用ThreadPoolExecutor类来实现的。

线程池由任务队列和工作线程组成,它可以重用线程来避免线程创建的开销,在任务过多时通过排队避免过多线程来减少系统资源消耗和竞争,确保任务有序完成。ThreadPoolExecutor继承自AbstractExecutorService实现了ExecutorService接口,ScheduledThreadPoolExecutor继承自ThreadPoolExecutor实现了ExecutorService和ScheduledExecutorService接口。

参考文献

[1]线程池的使用:https://www.imooc.com/article/51147
[2]简单实现线程池:https://www.cnblogs.com/alimayun/p/9054027.html

1234…18
xixi2

xixi2

一去不复返的远方还有无法抵达的过去

175 日志
21 分类
107 标签
© 2019 xixi2
由 Hexo 强力驱动
|
主题 — NexT.Mist v5.1.4
访问人数 总访问量 次