自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(23)
  • 资源 (1)
  • 收藏
  • 关注

原创 计算机网络基础及 TCP、HTTP 协议详解

“如果给我一个小时来解决一个问题,我会用五十五分钟来定义问题,剩下的五分钟用来解决问题”------爱因斯坦。为什么要学习计算机网络?从大背景来说,现在是数字化,网络化,信息化,是以网络为核心的时代。三网中,即电信网络、有线电视网和计算机网络,发展最快并起核心作用的是计算机网络。除此之外,对于计算机网络的研究,对于其他从开发者的角度而言,计算机网络和数据结构与算法、操作系统、计算机组成原理等...

2020-02-15 23:31:25 578

原创 Java 多线程编程思维导图

参照 《Java 多线程编程实战指南》(黄文海 / 著)画的,以便随时复习相关内容。

2020-01-30 14:08:23 338

原创 Vim 的前世今生

每个开发者都有着自己情有独钟的文本编辑器,我 Windows 系统用的是 Notepad++,在 Linux 系统下搭建、部署服务器的时候习惯使用 Vi 或 Vim 编辑器。最近在浏览耗子哥的博客的时候,发现他对 Vim 的喜爱远超其他文本编辑器,并且包括 Facebook 在内的一些大型网站,当按下 j 键时,会向下滚动,而当按下 k 键时,会向上滚动-----这意味着 Vim 通过数字文化传播...

2020-01-21 19:44:57 1787

原创 从 LeetCode_41 缺失的第一个正数到八种排序算法

LeetCode 41. 缺失的第一个正数,这题在 LeetCode 上虽然属于困难题,但是如果不是因为题目要求算法的时间复杂度应为O(n),那么这题只能算作简单题。我的解法是:首先将给定数组排序,然后从最小的正数 1 开始判断。在提交前我以为算法的时间复杂度会很差,这时候奇怪的事情发生了。具体代码及运行结果如下:public int firstMissingPositive(int[] num...

2020-01-17 21:01:35 323

原创 由算法优化引发的思考---路漫漫而修远

LeetCode 32 最长有效括号,这道题我很早就使用暴力破解的解法做过,但是超出时间限制。由于对动态规划算法有了进一步的认识,所以又重新以动态规划的思路来求解。但当我看到官方题解中其他的解法后,感觉自己的智商受到了碾压,官方题解的解法三和解法四(大家有兴趣可以去看一下)都给了我耳目一新的感觉。一叶而可知秋,对于任何算法或者其他具体问题,都可以通过不断的改进而找到更好的解决方案。这道题让我想到...

2020-01-11 14:33:18 298

原创 MySQL 索引原理及优化

网上对于 MySQL 中的最重要知识点的说法一般有两种:索引、事务索引、事务和查询我认为应该把查询加上,尤其是看到美团技术团队写的一篇关于MySQL 索引原理及慢查询优化后,其中的查询主要是指查询优化以及编写高效率的 SQL 语句。本文主要关注的是有关索引方面的,若未特别说明,以下内容默认是基于 MySQL Innodb存储引擎的 。什么是索引MySQL 官方对于索引的定义是:索...

2020-01-02 16:01:42 531

原创 从 LeetCode_28_strStr() 到 KMP 算法

这些天一直在回顾 LeetCode 上刷过的题,当看到第 28 题实现 strStr() 时,我发现虽然它是简单题,可以使用 Java 的 indesOf() 和暴力遍历轻松的解答,但是更好也更为符合实际的应该是用 KMP 算法。关于什么是 KMP 算法,大家可以自己去 google,或者参考严蔚敏老师的《数据结构》。这里我要分享的只是简单的实现以及其它大佬的解题思路(因为我现在对 KMP 算法...

2020-01-02 12:08:18 260

原创 Stack Overflow Developer Survey 2019

今天是 2020 年的第一天,回顾过去的 2019 年,似乎也并没有发生什么特别的事情。所以只好和大家分享一下 Stack Overflow 的 2019 年度开发人员调查了(看一下别人的年度总结)。Stack Overflow Developer Survey 2019这个调查报告有90000名程序员参与,这份调度报告平均花了20分钟,可见,这份报告问了很多的问题,也是很详细的。报告中的 ...

2020-01-01 20:49:01 658

原创 java主流锁之悲观锁和乐观锁的简单模拟实现

在上一篇文章java主流锁之悲观锁和乐观锁中,我们已经知道了什么是乐观锁和悲观锁以及他们的实现方式和使用场景。现在就来简单模拟实现悲观锁和乐观锁悲观锁首先在数据库中创建一张goods 表向数据库中插入一条记录乐观锁首先在数据库中创建goods 表,但是与悲观锁不同的是在创建表的时候添加一个version 字段向goods 表中插入一条记录此时如果要减少count 的话,则首...

2019-12-29 15:28:28 345

原创 java主流锁之乐观锁和悲观锁

java提供了很多种类的锁,每种锁都有其特性,根据特性在适当的场景下能够展现出非常高的效率。下图来源于https://zhuanlan.zhihu.com/p/50098743在一个高并发秒杀的场景下中,很有可能会出现超卖的情况,要解决超卖的问题,可以对数据库中的表或记录加锁。我刚开始在秒杀项目中是用悲观锁来解决超卖的问题,但是在并发量很高的情况,悲观锁的效率可能不是很好,因此,我改用乐观锁...

2019-12-28 20:18:25 369

原创 PAT 乙级真题题解 java实现

虽然这次PAT考试的成绩并不算理想,但还是有了很多收获,特别是认识了一些很优秀的人以及他们平时怎么学习算法。我参加的2019年冬季PAT乙级考试,这个时间PAT官网上的乙级真题有95道,我是使用java来做的(推荐使用c语言)。大部分题都是通过的,部分题目超出时间限制,还有一部分只通过了部分用例。以下是题目清单及我的通过情况:GitHub仓库完全正确1001 害死人不偿命的(3n...

2019-12-28 17:15:53 1400 1

原创 阿里巴巴Java 约规手册:码出高效,码出质量

最近在和实验室的同学一起给学校教务处做一个教学工作量统计系统,在团队一起合作开发及测试的过程中,我认识到了自己在开发规范方面的不足,虽然以前就看过阿里巴巴Java 约规手册,但是我在平时自己做项目、学习的过程中并没有很注意,只遵守驼峰命名等较为基础的约规。在这次的开发过程中,因为开发当中的不规范而导致了很多问题,例如:POJO 类及方法返回值的类型都定义的是 int 等基本类型,而不是 Int...

2019-11-23 11:32:55 451

原创 图的相关操作及dfs和bfs详解java实现

LeetCode 中有很多关于图的dfs 和 bfs 与回溯等算法结合的算法题,例如最短路径和等。每次当我遇到这些题时,总是无法独立的写出较好的解法,我觉得这是因为我对数据结构图的理解不够,所以就重新看以前的数据结构与算法分析的书籍,以此加深自己对图的理解。关于图的一些基本知识和存储结构等如果有兴趣的话可以去参考相关书籍,我这里主要写的是用邻接矩阵作为存储结构的连通图和非连通图的一些操作以及图的...

2019-11-14 19:23:01 321

原创 源码分析之HashMap的底层实现

HashMap 是java 开发中使用频率最高的用于映射(键值对)处理的数据类型。随着JDK 版本的的更新,JDK1.8 对HashMap 底层的实现进行了优化,例如引入红黑树的数据结构和扩容的优化等。本文结合JDK1.7 和JDK1.8 两个目前主流的JDK版本的区别,深入探讨HashMap 的底层实现和功能原理。在JDK1.8 之前,HashMap 的底层是数组和链表结合使用。HashMap...

2019-11-06 09:13:56 172

原创 位运算之两数相除

leetcode 上第29题两数相除,刚开始的时候我的思路是通过while 循环和加减法来实现,后来在编码实现的时候对于除数和被除数的符号相同时可以得出正确答案,但是符号不同时就会出现错误。在评论区看一些大佬的解题思路让我受益匪浅,其中我认为较好的一种思路是使用位运算,用左移去减,因为整数边界问题比较麻烦,所以改用负数计算。具体代码如下:public int divide(int dividen...

2019-10-26 15:24:08 818

原创 java设计模式之代理模式

代理模式(Proxy Pattern)为其他对象(类)提供一种代理,以控制对这个对象(类)的访问。代理对象在客户端和目标对象之间起到中介的作用。这种类型的设计模式属于结构型模式。在代理模式中,我们创建具有现有对象的对象,以便向外界提供功能接口。当直接访问对象会遇到一些问题时,例如:有些对象由于一些原因(比如对象创建开销很大,或者某些操作需要安全控制,或者需要进程外的访问),这时直接访问就不是一...

2019-10-21 21:49:38 162

原创 java设计模式之单例模式

单例模式(Singleton Pattern)属于创建型模式,它提供了一种创建对象较好的方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时保证只有单个对象被创建。这个类提供了一种访问其唯一对象的方式,可以直接访问,不需要实例化该类的对象。注意:一个类只能有一个实例单例类必须自己创建自己的唯一实例。单例类必须给所有其他对象提供这一实例。单例模式的目的:保证一个类仅有一个实例...

2019-10-17 20:23:15 173

原创 贪心算法

贪心算法(又称贪婪算法)是指,在对问题求解时,总是做出在当前看来是最好的选择。也就是说,不从整体最优上加以考虑,他所做出的是在某种意义上的局部最优解。贪心算法不是对所有问题都能得到整体最优解,关键是贪心策略的选择,选择的贪心策略必须具备无后效性,即某个状态以前的过程不会影响以后的状态,只与当前状态有关。- 分发饼干—leetcode 445public static int findCont...

2019-10-17 18:24:07 225

原创 动态规划算法

动态规划(dynamic programming)是运筹学的一个分支,是求解决策过程(decision process)最优化的数学方法。20世纪50年代初美国数学家R.E.Bellman等人在研究多阶段决策过程(multistep decision process)的优化问题时,提出了著名的最优化原理(principle of optimality),把多阶段过程转化为一系列单阶段问题,利用各阶...

2019-10-10 20:17:30 223

原创 二叉树的定义及遍历

最近在刷算法题的过程中发现以前学过的一些数据结构方面的知识有些遗忘了,就开始复习数据结构。在计算机科学中,二叉树(binaryTree)是每个结点最多有两个子树的树结构。通常子树被称作“左子树”(left subtree)和“右子树”(right subtree)。二叉树常被用于实现二叉查找树和二叉堆。以下是关于二叉树的创建及其递归和非递归的三种遍历方式,在刷算法题的过程中发现二叉树可以运用在...

2019-10-02 15:56:52 275

原创 深入理解Cookie

Session 与 Cookie 的使用是一个既简单又复杂的问题,简单是因为它们本身只是 HTTP 中的一个配置项,在 Servlet 规范中只是对应到一个类而已;复杂则是因为当系统达到需要用到很多的 Cookie 时,我们需要考虑 HTTP 对 Cookie 数量和大小的限制。 Session 也会有同样的问题,当一个应用系统有几百台服务器时,怎样能解决 Session 在多台服务器之间共享的问...

2019-09-10 20:15:07 253

原创 网络协议----一次网购下单的过程

在极客时间刘超先生的趣谈网络协议的专栏上看到了一篇关于通过一次网购下单的过程来看看互联网世界的运行过程中,都使用了哪些网络协议的文章,这让我受益匪浅。因此,我打算写下这篇博客来记录看完以及结合一些其他的资料后的收获。当我们在网上购物时,现在浏览器里输入https://www.taobao.com/,这是一个URL。而浏览器只知道这是一个URL,而无法找到具体服务器所在的位置,因此无法访问到。于是...

2019-09-05 10:52:17 1208

原创 引言

引言明天是学校正式开学的一天,我也要迎来了自己的大三生活。我学的专业是计算机科学与技术,从大一下学期接触到java时,我就对其产生了很大的兴趣,然后一直在学习关于java方面的知识。注册CSDN已经很长时间了,但是这是第一次写博客,以前在学习的时候也想着写博客,但是那时自己的整体学习路线还没有梳理清楚,写的博客也类似于笔记,并没有太大的意义。目前在经过一年半的学习后,我对J2EE开发的大体架构和...

2019-08-31 22:39:26 288

空空如也

空空如也

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

TA关注的人

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