- 博客(86)
- 收藏
- 关注
转载 19条MySQL优化准则
1、EXPLAIN做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据:type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all级别。key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式。key_len列,索引长度。...
2019-03-20 11:24:00
168
转载 设计模式总结
在学习设计模式的过程中,实践需与理论相结合才能更好地举一反三,灵活运用。设计模式到底是什么?它是对整个软件系统的拆分,组装,并决定模块间关系以及如何互动、通信的某种模式。究其本质,设计模式就是以语言特性(面向对象三大特性)为硬件基础,再加持六大设计原则的灵魂组合而总结出的一系列套路,本篇要讲地就是灵魂。单一职责 我们知道功能完备的软件系统是复杂的,系统的拆分与模块化是不可或...
2019-03-19 14:31:00
184
转载 数据结构之链表解析
我们知道,数组作为数据存储结构有一定的缺陷。在无序数组中,搜索时低效的;而在有序数组中,插入效率又很低;不管在哪一种数组中删除效率都很低。况且一个数组创建后,它的大小是无法改变的。而链表可能是继数组之后第二种使用得最广泛的通用数据结构了。这里主要来讨论并写一个单链表和双向链表。 顾名思义,单链表只能从表头到表尾的顺序,每个节点中保存了指向下一个节点的指针;双向链表则可以反向遍历...
2019-02-20 10:42:00
165
转载 Java中堆(heap)和栈(stack)的区别
简单的说: Java把内存划分成两种:一种是栈内存,一种是堆内存。 在函数中定义的一些基本类型的变量和对象的引用变量都在函数的栈内存中分配。 当在一段代码块定义一个变量时,Java就在栈中为这个变量分配内存空间,当超过变量的作用域后,Java会自动释放掉为该变量所分配的内存空间,该内存空间可以立即被另作他用。 堆内存用来存放由new创建的对象和数组。 在...
2019-02-19 09:39:00
211
转载 什么是算法的时间和空间复杂度
算法(Algorithm)是指用来操作数据、解决程序问题的一组方法。对于同一个问题,使用不同的算法,也许最终得到的结果是一样的,但在过程中消耗的资源和时间却会有很大的区别。 那么我们应该如何去衡量不同算法之间的优劣呢? 主要还是从算法所占用的「时间」和「空间」两个维度去考量。时间维度:是指执行当前算法所消耗的时间,我们通常用「时间复杂度」来描述。空...
2019-02-18 09:49:00
151
转载 Java线程状态间的互相转换
ava中线程的状态分为6种。 1. 初始(NEW):新创建了一个线程对象,但还没有调用start()方法。 2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的称为“运行”。线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取CPU的...
2019-01-31 09:33:00
137
转载 数据结构之栈和队列
栈或者队列是经典的数据结构,虽然平时都在用,但是都是别人封装好的集合,我们不用手写了,但是这些内功,作为开发人员来说是必须要掌握的。栈 我们知道,在数组中,若知道数据项的下标,便可立即访问该数据项,或者通过顺序搜索数据项,访问到数组中的各个数据项。但是栈和队列不同,它们的访问是受限制的,即在特定时刻只有一个数据项可以被读取或者被删除。众所周知,栈是先进后出,只能访问栈顶的数...
2019-01-30 09:19:00
85
转载 详解synchronized与Lock的区别与使用
知识点1、线程与进程 在开始之前先把进程与线程进行区分一下,一个程序最少需要一个进程,而一个进程最少需要一个线程。关系是线程–>进程–>程序的大致组成结构。所以线程是程序执行流的最小单位,而进程是系统进行资源分配和调度的一个独立单位。以下我们所有讨论的都是建立在线程基础之上。2、Thread的几个重要方法 我们先了解一下Thread的几个重要方法。 ...
2019-01-28 09:07:00
101
转载 Java多线程与并发面试题
1,什么是线程?线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。程序员可以通过它进行多处理器编程,你可以使用多线程对运算密集型任务提速。比如,如果一个线程完成一个任务要100毫秒,那么用十个线程完成改任务只需10毫秒。2,线程和进程有什么区别?线程是进程的子集,一个进程可以有很多线程,每条线程并行执行不同的任务。不同的进程使用不同的内存空...
2019-01-25 18:01:00
97
转载 TreeSet集合解析
TreeSet是实现Set接口的实现类。所以它存储的值是唯一的,同时也可以对存储的值进行排序,排序用的是二叉树原理。所以要理解这个类,必须先简单理解一下什么是二叉树。二叉树原理简析 假如有这么一个集合TreeSet<Integer>是[5,11,6,5,23,14] 用二叉树是怎么排序的呢? 二叉树遍历方法比较多,有兴趣自己百度看下吧。这里只需要...
2019-01-24 09:36:00
130
转载 常见的软件开发模式
瀑布模型 瀑布模型是由W.W.Royce在1970年最初提出的软件开发模型,瀑布式开发是一种老旧的计算机软件开发方法。瀑布模型式是最典型的预见性的方法,严格遵循预先计划的需求分析、设计、编码、集成、测试、维护的步骤顺序进行。步骤成果作为衡量进度的方法,例如需求规格,设计文档,测试计划和代码审阅等等。 瀑布式的主要的问题是它的严格分级导致的自由度降低,项目早期即作出承诺导致对后期...
2019-01-23 09:18:00
167
转载 数据库优化总结
希望大家阅读之后,感觉好的话可以收藏或者推荐给更多的人,让更多的人看到,如果有什么错误或者有争议的地方,欢迎大家纠正以及补充。1.对查询进行优化,要尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如:select id fr...
2019-01-22 15:14:00
85
转载 编码规范 -- 如何应对需求变更
如何应对需求变更 现在的程序员为什么这么累,其实很大程度上来说是加班原因使编码质量占了大部分因素,但是不少同学都不认为是代码质量导致的加班,都认为是不断的需求改动导致的加班。但是话又说回来,谁的需求不改动啊?不改动的能叫需求吗? 先看个程序员的段子娱乐一下客户被绑,蒙眼,惊问:“想干什么?”对方不语,鞭笞之,客户求饶:“别打,要钱?”又一鞭,“十万够不?”...
2019-01-22 09:21:00
201
转载 数据结构之二叉树解析
曾经有个朋友问我:二叉树可以用来干啥况?我回答他:可以搜索、可以排序呀?可是,排序有快速排序,归并排序,查找有二分法,甚至直接遍历查找,我干啥要使用二叉树呢?…… 这位朋友说的是有道理的,二叉树确实在实际中用的比较少,因为有更高级的树,但是二叉树作为一种最基本最典型的排序树,是研究其他树的基础。除此之外,在面试数据结构的时候,二叉树原理被问到的概率是相当高的。言归正传,...
2019-01-21 09:23:00
134
转载 并发出体验 -- 解决小规模并发下单的问题
场景描述 现在有这么一个业务场景,线上通过手机app下单买祈福灯,支付成功后,线下寺庙点亮。存在多个 用户同时选择同一个灯的情况出现,如下图。此时,正常情况应为一个用户下单成功,其余显示灯已被选。由于,支付和下单是单独分开的,只要focus on下单就ok了。简而言之,就是一个并发现单的问题。分析过程我们可以想到的正常下单的流程,应该是这样的://1. 选择祈福...
2019-01-20 19:20:00
127
转载 JDBC事务控制
概念 事务(Transaction)是访问并可能更新数据库中各种数据项的一个程序执行单元(unit)。事务通常由高级数据库操纵语言或编程语言(如SQL,C++或Java)书写的用户程序的执行所引起,并用形如begin transaction和end transaction语句(或函数调用)来界定。事务由事务开始(begin transaction)和事务结束(end transac...
2019-01-18 09:22:00
75
转载 数据库中悲观锁与乐观锁的总结实践
悲观锁介绍:悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中,将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了加锁机制,也无法保证外部系统不会修改数据)。使用场景举例(以MySQL InnoDB为例...
2019-01-17 09:11:00
64
转载 浅析实际项目中对数据库设计的一些思考
从数据库管理系统的开放层面来讲,数据库设计的key point就是妥协。一个设计的比较好的数据库都是在业务逻辑、设计规约和便于开发这三者之前来回考量,从而获得3-win的结果。下面主要是在思考和总结的点。如何设计出高灵活性的数据库 可以说在项目交付前,需求不断在变,如何在需求改变的同时尽可能减少对表结构的修改是我现在考虑的问题。对于一般情况而言,在设计的时候我们可以适当添加...
2019-01-16 09:15:00
204
转载 Java中实现多线程的四种方式
Java多线程实现方式主要有四种:继承Thread类、实现Runnable接口、实现Callable接口通过FutureTask包装器来创建Thread线程、使用ExecutorService、Callable、Future实现有返回结果的多线程。其中前两种方式线程执行完后都没有返回值,后两种是带返回值的。1、继承Thread类创建线程 Thread类本质上是实现了Ru...
2019-01-15 10:00:00
87
转载 Intellij Idea 2018常用快捷键总结
快捷键列表Alt+回车 导入包,自动修正Ctrl+N 查找类Ctrl+Shift+N 查找文件Ctrl+Alt+L 格式化代码Ctrl+Alt+O 优化导入的类和包Alt+Insert 生成代码(如get,set方法,构造函数等)Ctrl+E或者Alt+Shift+C 最近更改的代码Ctrl+R 替换文本Ctrl+F 查找文本Ctrl+Shift+Space 自动补全代码Ctrl...
2018-11-06 15:50:00
117
转载 Linux常用命令总结
linux命令的分类内部命令:属于Shell解析器的一部分 例如:cd 切换目录(change directory) pwd 显示当前工作目录(print working directory) help 帮助外部命令:独立于Shell解析器之外的文件程序例如:ls 显示文件和目录列表(list) mkdir 创建目录(make directoriy...
2018-09-17 17:51:00
123
转载 MySQL数据库实用技巧
1、如何快速掌握MySQL?培养兴趣 兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率。当然学习MySQL 5.6也不例外。夯实基础 计算机领域的技术非常强调基础,刚开始学习可能还认识不到这一点,随着技术应用的深 入,只有有着扎实的基础功底,才能在技术的道路上走得更快、更远。对于MySQL的学习来说, SQL语句是其中最为基础的部分,很多操作都是通过SQL语句来实...
2018-09-14 17:22:00
163
转载 数据库索引
什么是索引 索引就是加快检索表中数据的方法。数据库的索引类似于书籍的索引。在书籍中,索引允许用户不必翻阅完整个书就能迅速地找到所需要的信息。在数据库中,索引也允许数据库程序迅速地找到表中的数据,而不必扫描整个数据库。 我们通过一个简单的例子来开始教程,解释为什么我们需要数据库索引。假设我们有一个数据库表 Employee, 这个表有三个字段(列)分别是 Employee_Na...
2018-08-23 14:53:00
100
转载 Oracle学习笔记四
一、PL/SQL编程游标(光标Cursor)为什么使用游标在写java程序中有集合的概念,那么在pl/sq中也会用到多条记录,这时候我们就要用到游标,游标可以存储查询返回的多条数据。语法:CURSOR 游标名 [(参数名数据类型,参数名数据类型…,] IS SELECT语句;例如:cursor c1 is select ename from...
2018-08-22 09:47:00
131
转载 前后端分离原理
前言 前后端分离已成为互联网项目开发的业界标准使用方式,通过Nginx+Tomcat的方式(也可以中间加一个Node.js)有效的进行解耦,并且前后端分离会为以后的大型分布式架构、弹性计算架构、微服务架构、多端化服务(多种客户端,例如:浏览器,车载终端,安卓,IOS等等)打下坚实的基础。这个步骤是系统架构从猿进化成人的必经之路。核心思想是前端HTML页面通过Ajax调用后端的res...
2018-08-20 10:50:00
612
转载 Oracle学习笔记三
一、创建表空间 表空间是ORACLE数据库的逻辑单元。数据库--表空间 一个表空间可以与多个数据文件(物理结构)关联一个数据库下可以建立多个表空间,一个表空间可以建立多个用户个用户下可以建立多个表。create tablespace kevindatadatafile 'd:\kevindata.dbf'size 100mautoextend ...
2018-08-19 16:14:00
264
转载 Tapestry3.0开发概论
一、TAPESTRY技术的综述。tapestry是平行于struts/Spring MVC/webwork /jsf等开发工具的语言。tapestry是基于组件的开发工具。它具有组件的可重用性。因为大量重复使用的Tapestry组件,以及高度复用的表现层逻辑,使得工作效率大幅度提升。Tapestry组件是一个“黑盒子”,用于表现HTML响应,以及响应HTTP请求。Tape...
2018-08-10 09:47:00
372
转载 Oracle学习笔记二
多表查询:笛卡尔积: 实际上是两张表的乘积,但是在实际开发中没有太大意义格式: select * from 表1,表2 select * from emp; select * from dept; select * from emp, dept; select * from emp e1, dept d1 where e1.deptno = d1.deptno;...
2018-08-09 09:33:00
166
转载 Oracle学习笔记一
Oracle数据库的体系结构数据库: database Oracle数据库是数据的物理存储。这就包括(数据文件ORA或者DBF、控制文件、联机日志、参数文件)。其实 Oracle数据库的概念和其它数据库不一样,这里的数据库是一个操作系统只有一个库。可以看作是 Oracle就只有一个大数据库。实例: 一个 Oracle实例( Oracle Instance)有一系列的后...
2018-08-08 09:24:00
148
转载 JSP知识点总结
一、jsp静态包含和动态包含的区别 在学习request对象的时候,我们曾经使用过request.getRequestDispatcher(String url).include(request,response)来对页头和页尾面进行包含。inclue指令也是做这样的事情,一起来试验一下吧。这是页头 <%@ page contentType="text/htm...
2018-07-03 11:28:00
135
转载 Servlet+Tomcat总结
Tomcat的缺省端口是多少,怎么修改 1.找到Tomcat目录下的conf文件夹 2.进入conf文件夹里面找到server.xml文件 3.打开server.xml文件 4.在server.xml文件里面找到下列信息 1.把port=”8080″改成port=”8888″,并且保存 2.启动Tomcat,并且在IE浏览器里面的地址栏输入http...
2018-07-01 10:07:00
317
转载 Java集合总结
Java容器可分为两大类:●Collection * List ArrayList LinkedList Vector(了解,已过时) * Set HashSet TreeSet LinkedHashSet●Map * HashMap * TreeMap LinkedHashMa...
2018-06-30 12:22:00
106
转载 解决端口冲突问题(查询端口占用进程并kill)
1. 查看端口占用在windows命令行窗口下执行:netstat -aon|findstr "8080" TCP 127.0.0.1:80 0.0.0.0:0 LISTENING 2448端口“8080”被PID(进程号)为2448的进程占用。查看端口“8080”被哪个应用占用,,继续执行下...
2018-06-17 22:59:00
531
转载 [ Java面试题 ]框架篇二
1.Hibernate工作原理及为什么要使用Hibernate?工作原理:1.读取并解析配置文件2.读取并解析映射信息,创建SessionFactory3.打开Session4.创建事务Transation5.持久化操作6.提交事务7.关闭Session8.关闭SesstionFactor...
2018-06-16 19:39:00
76
转载 J2EE规范总结
概述 J2ee是我们步入java学习的一个開始。它将开启这趟奇幻之旅,Java是一种简单的,跨平台的,面向对象的,分布式的。解释的。健壮的安全的。结构的中立的,可移植的。性能非常优异的多线程的,动态的语言。不不过免费开源,并且兼具了跨平台的长处。什么是J2EE? J2EE(Java 2 Enterprise Edition)是建立在Java 2平台上的企业级应用的解决...
2018-06-15 20:51:00
122
转载 排序算法总结
概述 本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序、插入排序、归并排序、希尔排序、快速排序等。算法性能比较如下图所示:选择排序 种最简单的排序算法是这样的:首先,找到数组中最小的那个元素,其次,将它和数组的第一个元素交换位置(如果第一个元素就是最小元素那么它就和自己交换)。再次,在剩下的元素中找到最小的元素,...
2018-06-14 09:35:00
86
转载 总结五种常见的排序算法
1概述本文对比较常用且比较高效的排序算法进行了总结和解析,并贴出了比较精简的实现代码,包括选择排序、插入排序、归并排序、希尔排序、快速排序等。算法性能比较如下图所示:2选择排序选择排序的第一趟处理是从数据序列所有n个数据中选择一个最小的数据作为有序序列中的第1个元素并将它定位在第一号存储位置,第二趟处理从数据序列的n-1个数据中选择一个第二小的元...
2018-06-13 09:28:00
138
转载 SQL优化总结之二
1.列优先如图有表A和表B,对其查询时,会有如下语句:select a.*,b.* from a,b where a.id = b.a_id;注意from 后边的表名, a.如果多表查询是完全无关系的话,将记录和列名最少的表(from后靠右的位置接列少的表),写在最后,然后依次类推 b.如果多表查询是有关系的话,将引用最多的...
2018-06-12 10:28:00
85
转载 SQL优化总结之一
一、实践中如何优化mysql 1)SQL语句及索引的优化 2)数据库表结构的优化 3)系统配置的优化 4)硬件优化二、索引的底层实现原理和优化2.1 底层实现 在DB2数据库中索引采用的是B+树的结构,索引的叶子节点上包含索引键的值和一个指向数据地址的指针。DB2先查询索引,然后通过索引里记录的指针,直接访问表的数据页。 B+树是...
2018-06-11 09:42:00
85
转载 SpringMVC学习笔记之二(SpringMVC高级参数绑定)
一、高级参数绑定1.1绑定数组需求:在商品列表页面选中多个商品,然后删除。需求分析:功能要求商品列表页面中的每个商品前有一个checkbok,选中多个商品后点击删除按钮把商品id传递给Controller,根据商品id删除商品信息。我们演示可以获取id的数组即可。【Jsp修改】修改itemList.jsp页面,增加多选框,提交url是queryItem.ac...
2018-06-10 15:25:00
138
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人