自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

黄复贵的博客

执着、奉献、勤奋、创新

  • 博客(58)
  • 问答 (2)
  • 收藏
  • 关注

原创 黄复贵:从北京理工到今日头条

基本信息年级学院:2014级软件学院,本科生毕业去向:今日头条,后端研发工程师关于我的基本信息,只列出上面这两点,对这片文章来说其实也足够了,所以也没列出其他更多的。我更想表达的,是即将毕业这一年来的心路历程,以及一些微不足道给学弟学妹准备的毕业求职经验分享。心路历程&&经验分享从2017年2月开始准备找实习工作,到2017年12月面完最后一次校园招聘...

2018-04-14 14:17:53 1747

原创 【2021校招 提前批/正式批】字节跳动直播团队招新啦!

【2021校招 提前批/正式批】字节跳动直播团队招新啦!【关于我们】【加入我们能获得什么】【为什么要来我们这里】【我们的要求】【招聘信息】【答疑】字节跳动直播团队招新啦!北京!深圳!杭州!字节跳动直播团队招新啦!北京!深圳!杭州!字节跳动直播团队招新啦!北京!深圳!杭州!【关于我们】字节跳动唯一直播团队,正在开创一种新的研发模式负责旗下抖音、火山、西瓜、头条各APP的直播业务研发,业务快速发展业务功能的用户群体上亿级别,高性能、高可用、稳定性【加入我们能获得什么】自己动手实现中台,完成中台

2020-07-10 10:45:54 1638

原创 源码剖析CommonsMultipartResolver解释parseRequest无法获得FileItem

相信在Javaweb做文件上传的时候大家都用到commons-fileupload这个组件,使用这个组件实现文件上传时都会用到这句代码List<FileItem> list = servletFileUpload.parseRequest(request);,意思是解析从客户端发送到服务器的request请求(Form表单)得到一个FileItem的List集合,这样每个FileItem都可以简单地

2016-12-11 23:28:34 4990 1

原创 通过简单Spring事例理解SpringIOC思想

在阅读本文前,应该对Spring有所了解。Introduction to the Spring Framework,The IoC container。首先,IOC与AOP独立于Spring存在,只是Spring给出了IOC与AOP(AOP面向切面通过业务逻辑的分离,如:事务管理,权限控制,日志等,实现内聚开发)的具体实现,这里重点总结IOC。在总结IOC前,有必要说说第一个IOC的例子spri

2016-11-05 16:12:20 1361

原创 插入排序

插入排序(英语:Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。代码实现:#include<stdio.h>void print_sort_process(int src[],int length){ printf("第%d趟排序:",length); int i = 0;

2016-09-19 22:44:22 656

原创 基于mini-db对索引的进一步思考以及分析比较fseek与fgets偏移光标的异同

这篇博客是这个栏目的第一篇文章,因此在此之前有必要介绍一下这个项目的大概情况。要求就是要通过C或C++实现一个简单的数据库,要有最基本的增删改查功能,之后要通过为字段创建索引数据结构提高SELECT查找的效率。项目链接:https://github.com/HuangFuGui/Software-engineering-practice/tree/master/mini-db项目题公布后,很多小组有

2016-09-08 14:57:02 966 1

原创 给即将大三的自己一封信

时间总是过得很快,转眼间你就即将大三了,在这封信的最开始有必要说说大三的重要性,你要明白大三是一个分水岭,它区分人与人之间的差距。首先,大三有很多专业课,计算机网络,操作系统,数据库原理与设计,J2ee架构与开发,软件项目管理等等,这些知识都将会成为你以后工作的资本,没有这些知识你就相当于站在战场上手无寸铁的士兵。其次,你有可能报名参加面试,或是阿里,或是百度,或是腾讯,或是华为,面试你喜欢的后端开

2016-08-27 15:38:40 6690 1

原创 SpringMVC实现文件下载

前段时间做项目用Plupload实现了文件分块上传SSM框架+Plupload实现分块上传(Spring+SpringMVC+MyBatis+Plupload),项目仅有文件上传还不够,还应提供文件下载。接下来就在原来项目基础上(SSM框架,Spring+SpringMVC+MyBatis)实现文件下载。并在最后给出效果图。一:前端请求下载:关于下载这部分的前端效果是用jq append的,没在js

2016-08-27 13:44:36 8127 4

原创 SSM框架+Plupload实现分块上传(Spring+SpringMVC+MyBatis+Plupload)

关于Plupload的介绍,相信它的官网http://www.plupload.com/已经给得很详细了。Plupload的上传原理简单点说,就是将用户选中的文件(可多个)分隔成一个个小块,依次向服务器上传,这是它能驾驭上传大文件的原因之一,而且在这个过程可以暂停上传,暂停后再继续上传(异于断点续传)。最重要的是,从头到尾没有一点点UI阻塞,保证了用户体验。下面会开始讲Plupload的实现流程,分

2016-08-23 00:04:45 7780 28

原创 SSM框架+WebSocket实现网页聊天(Spring+SpringMVC+MyBatis+WebSocket)

建站不止于增删改查,还有很多很有魅力的地方。对于通信聊天这块已经青睐好久了,前段时间在做的j2ee项目运用到Spring+SpringMVC+MyBatis的框架集合,是关于一个社交平台的网站,类似于facebook,twitter,微博等。在做完基本的CURD(例如评论模块)后,开始研究网站通信并应用于项目中。提到通信,大家都知道Socket。确实,运用Socket能在服务器与客户端之间建立一个数

2016-08-18 23:06:12 40792 131

原创 Socket通信 ---模拟用户登录

相信Socket对大家都不陌生了,网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。我们平时接触的QQ,其聊天功能就是通过Socket实现的。简单点说,Socket就是通信的一种媒介。下面是Socket通信的原理图:要建立Socket通信,首先要在服务器端建立一个ServerSocket对象对服务器的某个端口进行请求监听。然后,客户端根据指定的服务器地址与

2016-08-14 21:43:55 6821 2

原创 初识Lucene(下)

本文将给出Lucene 6.1.0的代码实现与讲解。请确保已经阅读:初始Lucene(上)。Lucene从最初的1.9.1更新到现在的6.1.0。在这个过程中一些接口已经被弃用,也有新功能的加入,因此不同版本的Lucene代码实现方式可能是不一样的,具体版本的代码实现可以查看官方文档Lucene 6.1.0 API,这是6.1.0版本的使用文档。项目开始之前,要进行Lucene 6.1.0相关jar

2016-08-12 12:59:50 1795

原创 初识Lucene(上)

Lucene简介:Apache Lucene is a high-performance, full-featured text search engine library written entirely in Java. It is a technology suitable for nearly any application that requires full-text search, e

2016-08-12 11:25:19 741

原创 垂直拆分与水平拆分

垂直拆分:垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表通常我们按以下原则进行垂直拆分:把不常用的字段单独放在一张表。把TEXT,BIGINT等大字段拆分出来放在附表中。经常组合查询的列放在一张表中(联合索引)。垂直拆分的表在查询的时候用JOIN关键字连接起来即可。水平拆分:水平拆分是指数据表行的拆分,当表的行数超过200万行时,查询就会变得更慢,这时可以把一张的表的数据拆成多张

2016-07-19 16:48:35 2142

原创 数据库设计:范式与反范式

我们在设计数据库的过程中,往往要用到范式或反范式的设计模式。熟悉地掌握范式与反范式的要领,学会在实际开发中恰当地混合使用范式与反范式,才能设计出结构合理,执行高效的数据库。下面就以一个经典的例子进行讲述范式与反范式:职工-部门表:部门-部门领导表:结合这两张表,我们知道,职工Tom与Hill都在部门Accounting工作,他们的领导是Alex。这种设计模式,称为范式。范式要求数据表中不存在任何的传

2016-07-19 15:49:37 11527 2

原创 联合索引优化多条件查询

联合索引是由多个字段组成的组合索引。若经常需要使用多个字段的多条件查询(WHERE col1 = … AND col2 = … AND col3 = …),可以考虑使用联合索引。现在数据表myIndex中i_testID是主键列,其他列无任何索引:多条件查找名字为xiaoming,城市为beijing,年龄为21的人:返回了一行数据,从执行计划中看到,查询没有使用任何索引,进行了全表扫描,磁盘IO大

2016-07-19 00:39:31 19063 1

原创 LIMIT优化

当我们想要在数据表中查找特定的几行时,常常使用LIMIT关键字限制返回的结果数。但是LIMIT的性能又如何呢?示例数据表film来自mysql的示例数据库sakila,其中film_id列为主键列(约束)直接使用LIMIT:从结果可以看到,我们返回了film_id从51开始到55结束的5条记录。值得注意的是返回的结果集是从0开始编号的,LIMIT 50,5的意思就是下标为50的记录开始(film_i

2016-07-18 21:18:10 2239 1

原创 查询产生临时表的调优

我们都知道,SQL查询时若产生了临时表,一般要消耗更多的内存,降低查找的效率。因此,当查询时产生了临时表,要进行优化,使引擎在查询时不用创建临时表就能完成查询。示例使用的是MySQL示例数据库sakila。actor表中有一个主键actor_id,演员的first_name与last_name。film_actor表中外键列actor_id,与actor表进行连接,其中actor_id有很多重复的值

2016-07-18 15:58:53 4713

原创 索引

数据库索引的概念:索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速定位数据库表中的特定信息。索引是一种数据结构。DB在执行一条Sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件的就加入搜索结果集合。如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行,大大减少遍历匹配的行数,所以能明显增加查询的速度。来分析这张图片,为Col2列建立了索引,

2016-07-17 22:15:34 795

原创 分析比较多表查询中的IN与JOIN

IN 是子查询的关键字,JOIN 是连接的关键字,项目开发中经常会使用到多表查询,而子查询与连接正是实现多表查询的重要途径。那两者的实质有什么区别?IN与JOIN谁更好?下面就来分析与比较。现在有test1与test2两张表,都没有任何像主键,外键那样的约束,且只有一个字段。两张表是非相关的。现在使用IN关键字实现子查询,test2作为子查询表(外部表):查看执行计划:使用JOIN关键字实现连接,同

2016-07-17 10:56:54 30739 3

原创 理解事务的4种隔离级别

数据库事务的隔离级别有4种,由低到高分别为Read uncommitted 、Read committed 、Repeatable read 、Serializable 。Read uncommitted读未提交,顾名思义,就是一个事务可以读取另一个未提交事务的数据。事例:老板要给程序员发工资,程序员的工资是3.6万/月。但是发工资时老板不小心按错了数字,按成3.9万/月,该钱已经打到程序员的户口,

2016-07-16 16:19:20 195274 87

原创 COUNT()的进一步认识

问题引出:要在一条SQL语句中查询film表中release_year值分别为2006,2007的记录数。返回结果集中结果分别为1000,合起来就是2000,但是数据表中最多就1000条记录,且记录的值全是2006,那2007对应的那1000条记录哪来的?再看看当COUNT()内的参数分别为FALSE与NULL时返回的结果:可以发现,当参数为NULL时,COUNT()不会进行计数,当参数为FALSE

2016-07-15 22:37:45 969

原创 索引优化MAX()

看本文之前,建议先阅读:http://blog.csdn.net/qq_33290787/article/details/51934999普通的 MAX() SQL执行计划:从执行计划中可以看到:本次SQL查询检索了payment表(全表扫描,FTS),一共检索了16086行数据。意味着从磁盘中读取了16086行数据至mysql服务端内存中进行最大值判断(有数据IO)。为payment_date建立

2016-07-15 20:59:06 2211

原创 MySQL慢查询日志与磁盘IO

对于有效率问题的SQL语句,MySQL通过慢查询日志进行监控。SHOW VARIABLES LIKE ‘slow_query_log’;查看慢查询日志是否开启:SHOW VARIABLES LIKE ‘%log%’;查看关于日志的所有属性: SET GLOBAL log_queries_not_using_indexes = ON;设置全局变量,没用到索引的查询也要记录:SHOW VARI

2016-07-15 11:41:31 3449

原创 安装MySQL示例数据库sakila

sakila database 数据库文件Zip下载:http://dev.mysql.com/doc/index-other.html将其解压至桌面,打开查看会有三个文件:sakila-schema.sql 数据库结构文件sakila-data.sql 数据库数据文件sakila.mwb还原数据库结构:mysql> source Desktop/sakila-db/saki

2016-07-15 10:53:47 1407

原创 Seckill系统高并发优化

绝大多数秒杀系统都要需要实现高并发,这样就必须在原来的项目基础上进行优化。简单的优化很有可能就会很大地提高系统的并发性能,但是这些优化往往是系统开发人员很少注意的,或者直接被人们忽略。因此要成为一个出色的开发人员,学会优化技巧与时刻具备系统优化的意识是必须的。项目源码地址:https://github.com/HuangFuGui/Javaweb/tree/master/Maven%2BSpring

2016-07-13 16:13:06 6055 2

原创 MySQL存储过程

普通的SQL执行过程:SQL命令要经过MySQL引擎的语法分析,如果语法正确,就会进行编译,编译成mysql引擎可以识别的命令。可识别命令再执行,将执行的结果返回给客户端。试想如果把语法分析与编译的环节去掉,mysql的执行效率就可以提高,因此要用到存储过程。存储过程:存储过程是SQL语句和控制语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程的效率要比单一的SQL执行效率高。以往我们写两

2016-07-12 20:53:57 1305

原创 聚合函数

AVG()求平均值:COUNT()查看记录有多少条:MAX()求最大值:MIN()求最小值:SUM()求和:

2016-07-12 11:32:55 431

原创 日期时间函数

NOW()取当前具体时间:CURDATE()取当前日期:CURTIME()取当前时间:DATE_ADD()获得指定日期加上(或减去)指定日期后得到的日期:DATEDIFF()获得两个指定日期的差值:DATE_FORMAT()修改日期格式:%m代表月份,%d代表天,%Y代表年(其中月份与天有前导0)

2016-07-12 10:50:43 429

原创 比较运算符

BETWEEN … AND …数值闭区间:IN是否包含:IS NULL判断是否为空,空字符串不为空:

2016-07-12 09:58:27 426

原创 数值运算符

CEIL与FLOOR进一取整与舍一取整:DIV整数除法:MOD取余数(取模):POWER幂运算:ROUND保留小数(自动四舍五入):TRUNCATE数字截取:

2016-07-11 21:53:34 753

原创 MySQL字符函数

CONCAT字符连接: CONCAT_WS使用指定的分隔符进行字符连接:FORMAT数字格式化,返回类型为字符型:LOWER与UPPER大小写转换:LEFT与RIGHT选取左边或右边的指定位数的字符:LENGTH获取字符串长度,空格长度为1:LTRIM与RTRIM删除前导空格与后续空格:TRIM同时删除前导后续空格,中间的空格删除不了: 删除指定字符(BOTH关键字时中间的指定字符删除不了):R

2016-07-11 14:57:33 376

转载 微软公司等数据结构+算法面试100题

微软等公司数据结构+算法面试100题(第1-100题)首次完整亮相 注:本文转自July的博客:http://blog.csdn.net/v_july_v/article/details/6057286,十分感谢!更新:现今,这100题的答案已经全部整理出来了,微软面试100题2010年版全部答案集锦:http://blog.csdn.net/v_july_v/article/details/68

2016-07-11 11:02:22 6343

原创 二维数组中的查找

题目要求:在一个二维数组(是个矩形)中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。解法一:首先最先想到的当然是从左上角开始一个个遍历数组,直到右下角。如果遍历过程没有找到该整数,返回false;如果遍历过程找到该整数,返回truepublic class Solution { publi

2016-07-11 10:01:50 572

原创 多表删除

阅读本博客之前请确保已经阅读并理解:连接实现多表更新与查询1.通过查询可以发现tdb_goods表中有商品名字重复的商品,应该删除通过左外连接删除了goods_id比较大的重复的商品,结果显示有两条记录被删除再以相同的方式查看是否有重复名字的商品时,发现没有重复的商品

2016-07-10 20:58:01 405

原创 连接实现多表更新与查询

子查询(二):分析:简单查看表中的内容,可以看到有很多重复的数据。例如goods_cate字段中光’笔记本配件’就重复了好几次,而一般情况下汉字所占的字节数比数字占的字节数多(GBK 编码中,一个汉字字符存储需要2个字节。UTF-8编码中,一个汉字字符储存需要3到4个字节。而当规定数字类型为TINYINT时,只占用1个字节),当记录数目很庞大的时候重复的数据就会占用很多内存空间。可以新建一张数据

2016-07-10 20:07:43 3998

原创 子查询

子查询(Subquery)是指出现在其他SQL语句内的SELECT子句结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。子查询嵌套在查询内部,且必须始终出现在圆括号内。其外层查询可以是:SELECT,INSERT,UPDATE,S

2016-07-10 20:05:34 764

原创 操作数据表中的记录(增删改查)

插入数据: INTO关键字可以省略,若没有指明字段,VALUES内一定要匹配所有值,哪怕是默认自增的id字段默认的自增id字段可以写为NULL,也可以写成DEFAULT,数字字段可以进行运算插入(例3*7-5)由于新建数据表时age的默认值为20,因此在插入数据时age字段可以使用DEFAULT关键字,插入数据后,值为20新建数据表时,id是默认自增字段,username不能为空,pass

2016-07-09 11:15:20 5481

转载 Java线程面试题 Top 50

转自http://bbs.jointforce.com/topic/17215?f=jf_tg_zsjk不管你是新程序员还是老手,你一定在面试中遇到过有关线程的问题。Java语言一个重要的特点就是内置了对并发的支持,让Java大受企业和程序员的欢迎。大多数待遇丰厚的Java开发职位都要求开发者精通多线程技术并且有丰富的Java程序开发、调试、优化经验,所以线程相关的问题在面试中经常会被提到。在典型的

2016-07-08 23:07:47 492

原创 修改数据表

添加单列: ALTER TABLE 表名 ADD … 位置;若没有位置关键字,则默认添加到最后一列,AFTER username添加到字段username后,FIRST添加到第一列。删除单列:ALTER TABLE users1 DROP 列名ALTER TABLE users1 DROP 列名1,DROP 列名2;添加主键约束:先添加id列,再在该表的基础上ADD PRIMARY KE

2016-07-08 16:14:27 631

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除