自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 收藏
  • 关注

原创 构建之法--第三章读书笔记(2)程序员为何不能按时交付工作?

程序员为何不能按时交付工作在第三章读书笔记(1) 中,我们提到了衡量软件开发工作量大小和质量的指标。 在讨论质量指标的过程中,提到了是否能够按时交付。但是实际软件开发过程中,很多工程师不能够做到按时交付,这一节就讨论了不能按时交付的原因,或者说导致不能按时交付的思维误区。了解了这些误区以后,希望在实际工作中能够有意识的避开这些误区。软件的模块中存在着很多复杂的依赖关系,软件的不可见性...

2018-04-30 10:47:04 374

原创 程序员面试金典--题目解析-3.2 设计一个栈,除pop,push方法外,还支持min方法,要求这三个方法的时间复杂度为O(1)

3.2 题目: 设计一个栈,除pop,push方法外,还支持min方法,要求这三个方法的时间复杂度为O(1)解法:1、第一种想法(X):可以在栈类中加入一个minValue的字段,维护最小值。入栈时,更新最小值;出栈时,也需要更新最小值。若最小值被出栈,则需要搜索整个栈,才能找到新的最小值,这不符合O(1)的时间复杂度要求。2、第二种想法(√):按照空间换时间的思路,我们可以考虑每次新的元素入栈时...

2018-04-26 10:59:26 327

原创 Spring Cloud 微服务学习笔记(2)关于SpringCloudStream的一些坑

写作目的最近学习了Spring Cloud Stream,发现坑不少,最后迫不得已看了官方文档,踉踉跄跄的把程序跑起来了。这里把我觉得比较重要的坑简要的说明一下,一边记录下坑,一边给其他小伙伴以提示。坑1、配置文件中要同时引入 stream 和 stream-rabbit的依赖,如图: 我学习的教程只是让引入了rabbit的包,没有引入Stream 2、yml文件中要修...

2018-05-14 17:48:56 5054

原创 Spring Cloud 微服务学习笔记(1)Spring Eureka的理解和配置

Spring Eureka这篇博文主要记录学习SpringCloud的一些基本配置,和通过项目学习到的业务编码技巧等等。Spring Eureka提供服务注册与发现的功能,有点像地产中介,很多人有买房子的需求,也有很多人有卖房子的需求,Eureka把这些人都“注册到”他的名册中,匹配需求。 说得学术点,每个服务都作为一个Client 向 Eureka Server 注册,某个服务要请求其...

2018-05-11 16:57:56 192

原创 IntelliJ IDEA 学习笔记--慕课网视频

无处不在的跳转项目的跳转 ctrl+Alt+[ 或 ] 文件的跳转 ctrl+e 最近的文件 ctrl+shift+e 最近编辑的文件浏览修改位置的跳转 ctrl+shift+backspace最新浏览位置的修改 ctrl+shift+左箭头(win10会改变屏幕方向)使用书签进行跳转 标记书签 ctrl+shift+数字或字母 跳转书签 ctrl+数字或者字母 总览...

2018-05-06 14:43:05 1530

原创 构建之法--第八章读书笔记 需求分析

这一章主要论述了需求分析的相关理论知识。理论知识需要实践去深入理解,所以这一章我会做课后作业,具体分析一个软件(有点像测评)。软件需求什么是软件需求: 简单地说,就是现实社会和生活中各种各样的问题,为了解决这些问题,人们会求助于软件。比如:在打车软件出现之前,打车都需要在街上招手,遇到高峰期打车很不容易;打车软件就是为了解决打车难的问题,整合了资源,为用户提供了方便快捷的打车服务...

2018-05-05 08:44:06 395

原创 Hibernate学习笔记

在框架的学习中,我一直有疑惑,框架到底要学习到什么程度? 在我看来,初级程序员能掌握基本使用,了解基本概念,不要对概念性问题出错,会熟练配置即可。在实际工作对框架频繁的使用过程中,需要有意识的积累关于框架的相关问题到自己的知识库中,同时要深入理解问题出现的本质,这个时候就需要了解框架的源码,会跟踪问题,解决问题。这篇博客是针对初级程序员的,只把重要的概念捋清楚,包括说明Hibernate的使...

2018-05-04 13:24:41 169

原创 构建之法--第六章学习笔记 敏捷流程

这一章主要讲解了敏捷流程的一些理论知识。对于理论知识,要做到理解,那么具体理解到什么程度呢?我认为,对于初级软件工程师来说,做到定义和名词理解准确,流程有一个大致的印象就可以了。流程的具体实现,需要在实际团队工作中加深理解。 所以下面会重点说明定义和名词解释,以及一个流程图说明Scrum开发的流程什么是敏捷流程,什么是Scrum?敏捷流程是一系列价值观和方法论的集合。其中有一种方...

2018-05-02 17:51:37 202

原创 构建之法--第五章读书笔记 团队模式和开发流程

这一章主要叙述了软件开发的团队模式和开发流程。 团队模式(团队结构)主要解决团队间交流效率的问题;开发流程主要关注团队在结构确定的情况下,具体开发软件的流程。请注意:就像其他方法论一样,每个模式和流程都有其优缺点和适用情景,学习的时候可以结合实际工作所在的团队,使用本章的知识观察团队的模式和开发流程,最终目的当然是通过观察和分析得以改进流程,或者在实践中更好的理解模式和流程的知识。这一章...

2018-05-01 10:29:52 228

原创 构建之法--第四章读书笔记 代码复审、影响他人和反馈的技巧

这一章主要讲解了代码规范、代码复审、两人合作中如何影响对方和反馈的技巧。 笔记中会主要关注代码复审、如何影响对方和反馈的技巧。代码复审代码复审会有核查表,我们可以通过核查表来学习代码复审。 一方面是作为复审者,该审查代码的哪些方面;另一方面自己写的程序也需要自我复审,自己写完程序后,对照着核查表进行核查,不断思考总结提高编码水平。一. 概要部分 1. 代码符合需求和规格说明吗...

2018-04-30 19:44:50 219

原创 构建之法--第三章读书笔记(3)软件工程师的职业发展 和 提高技能的学习方式

软件工程师的职业发展首先了解一下人们对待职业的态度有哪些? 1、临时的寄托或工作 2、工作 3、职业 4、投身的事业 5、理想的呼唤这里详细说一下职业。 在工作的基础上,有足够的职业道德和职业规划,那么工作就是一个“职业”。很多人在知乎上问“软件开发做到35岁以后怎么办”这样的问题,说明他对职业的态度还停留在第二种 工作的阶段。 职业人士对30岁以后,35岁以后都有一定的打算。...

2018-04-30 11:38:58 216

原创 构建之法--第三章读书笔记(1)个人能力的衡量与发展

个人能力的衡量和发展这一节主要讲述了初级软件工程师如何成长?衡量个人工作量和质量的指标、以及在团队中如何做一个优秀的队员。初级软件工程师如何成长?1、积累软件开发相关知识,提升技术技能(如对具体技术的掌握,动手能力)。如:Java、C/C++、诊断/提高效能的技术,对某一开发平台的掌握等。 2、积累问题领域的知识和经验(例如:对游戏、医疗或金融行业的了解) 3、对通用的软件...

2018-04-30 10:06:59 228

翻译 技术翻译--Java网络教程-UDP DatagramSocket

原文链接:http://tutorials.jenkov.com/java-networking/udp-datagram-sockets.html目录:UDP 和 TCP的区别使用DatagramSocket发送数据使用DatagramSocket接收数据如果想要使用UDP进行网络通信,可以使用java提供的DatagramSocket类。通过该类可以实现接收或发送UDP...

2018-04-28 11:06:44 138

原创 Git学习笔记--慕课网Git视频(龙猫老师)

使用Git进行多人合作的经验(重点)1、多用客户端,少用命令行,使用工具是为了提高效率,不是为了使用命令行而使用。 2、每次提交前,diff自己的代码,也就是查看都修改了哪里,防止提交一些不必要的东西。 3、下班回家前,整理好自己的工作区 4、并行的项目,多用分支 5、遇到冲突,要搞明白冲突的原因,千万不要随意丢弃别人的代码 6、产品发布后,记得打tag,方便将来拉分支修bug...

2018-04-28 09:32:19 480

原创 JUnit学习笔记--慕课网JUnit教程

1、JUnit的Test类最好存放到test源目录中,不要放到src下,另外,Test类的包名要和被测试类的包名一致。 2、关于JUnit进度条上的Failure和Error Failure 是 判断和预期不一致 比如你使用了assertEquals(expected,input); 当JUnit判断input和expected不一致,就会出Failure错误。 Error 是程序引发的...

2018-04-27 21:37:49 203

原创 构建之法--第二章读书笔记 单元测试、回归测试以及个人软件开发流程

个人技术和流程作为一名合格的软件工程师,需要掌握一些基本的个人技术和开发流程。 这一章介绍了一些基本的概念和技术,即单元测试、回归测试和效能分析工具。关于开发流程,本章介绍了PSP(Personal SoftWare Process,个人软件开发流程)。单元测试1.为什么要做单元测试?(增加对单元测试重要性的感性理解) 单元测试不仅可以让模块负责者明确模块的功能,还可以让其...

2018-04-27 16:39:16 245

原创 程序员面试金典--题目解析-3.6 对栈进行排序

3.6 题目:对栈进行排序,要求最大的值存放在栈顶。基础:只能使用一个额外的栈存储临时数据。进阶: 允许使用多个栈或其他数据结构,将时间复杂度优化为O(nlog(n))解法:基础解法,下面画图分步骤说明:初始状态:S1为未排序的栈,S2为空栈 S1 S2 5 null 10 null 7 null弹出栈顶...

2018-04-27 09:55:13 186

原创 程序员面试金典--题目解析-3.5 实现一个MyQueue类,使用两个栈实现一个队列

3.5 题目:实现一个MyQueue类,使用两个栈实现一个队列解法:使用一个new栈push数据,一个old栈pop或peek数据前提是保证把new栈pop出的所有数据,push进old栈,这样old栈的栈顶存放的就是最旧的数据。另外,为了提高效率,等需要peek或remove时,检测old栈是否为空,old栈为空时,把所有new栈中的数据弹出存入old栈。package Queue;    im...

2018-04-27 08:15:54 721

原创 程序员面试金典--题目解析-3.4 使用栈实现汉诺塔

3.4 题目:使用栈实现汉诺塔,并将第一座塔的圆盘移动到第三座塔。解法:每一个圆盘都包含三个基本动作假如有5个圆盘,按大小依次放置在第一座塔上,目标塔是第三座塔。针对最大的圆盘来说,第二座塔是缓冲塔,第三座塔是目标塔1、移动该圆盘(5)上的其他所有圆盘(1-4,看做一个整体) 到缓冲塔上2、把该圆盘(5)移动到目标塔3、把缓冲塔上的圆盘(1-4),借助该圆盘原来所在的塔(第一座塔)作为缓冲塔,移动...

2018-04-26 17:11:11 326

原创 程序员面试金典--题目解析-3.3 实现数据结构SetOfStacks,维护多个栈

3.3 题目:基础:设想有一堆盘子,堆太高可能会倒下来。因此在现实生活中,盘子堆到一定高度后,我们会另外堆一堆盘子。请实现数据结构SetOfStacks,模拟这种行为。SetOfStacks由多个栈组成,并且在前一个栈填满时新建一个栈。此外,SetOfStacks的push和pop方法应和普通栈逻辑相同,即push加入到最新栈,pop从最新的栈弹出。进阶:实现一个popAt(int index) ...

2018-04-26 14:48:48 633

原创 程序员面试金典--题目解析-3.1 使用一个数组实现三个栈

3.1 题目:使用一个数组,实现3个栈,每个栈大小固定解法:package StackAndQueue;    public class StackUsingArr_FixedSize {      private int stackSize;      private int[] buffer ;      private int[] stackPointer;            publi...

2018-04-26 09:27:17 411

原创 构建之法--第一章读书笔记 软件是什么?软件工程是什么?

通过本文可以了解到什么?软件是什么?软件企业是什么?软件开发的不同阶段--类比航空业的发展软件工程是什么?软件工程有哪些具体的知识领域?软件工程的目标正文软件是什么? 软件企业是什么?软件 = 程序 + 软件工程软件企业 = 软件 + 商业模式程序(算法和数据结构)是基本功,但是在算法和数据结构之上,软件工程决定了软件的质量;商业模式影响了一个软件企业的成败。软件从业人员和软件企业的道德操守会极大...

2018-04-25 19:07:23 311

原创 程序员面试金典--题目解析-2.6 给定一个有环链表,实现一个算法返回环路的开头节点

2.6 题目:给定一个有环链表,实现一个算法返回环路的开头节点比如 A--B--C--D--E--C返回C解法:遍历链表,把每个节点的hashcode值(地址值)作为key存入hashMap中,若后续判断存在该key,则证明存在环路,返回该结点public static <E> Node<E> isCircle(Node<E> head){          i...

2018-04-25 15:29:54 463

原创 程序员面试金典--题目解析-2.5 编写函数对两个整数求和,整数存放在链表中

2.5 题目:两个链表表示两个数,每个节点表示一个数位。要求实现每位相加,输出结果比如:(7 -->1 -->6) + (5 --> 9 -->2) 即617+295输出:2 --> 1 --> 9  即9121、反向存放2、正向存放(进阶)解法:Node Class定义:public static class Node<E>{          p...

2018-04-25 12:18:03 404

原创 程序员面试金典--题目解析-2.4 给定一个x,所有小于x的结点排在大于等于x结点之前

2.4 题目:以给定值x为基准,将链表分隔为两部分。所有小于x的结点排在大于或等于x结点之前。解法:创建两个链表,before和after。依次遍历所给链表,小于x的插入到before之前,大于等于x的插入到after之前。然后连接两个链表即可。链表类:public static class Node<E>{          private E item;          priv...

2018-04-25 10:53:00 388

原创 程序员面试金典--题目解析-2.2 找出单向链表中倒数第k个结点

2.2 题目:找出单向链表中倒数第k个结点解法:递归版:构造一个int包装类,实现参数传递,都指向同一个int,而不是值传递时复制一份public static class IntWrapper{          public int value = 0;      }  public static <E> Node<E> nthToLast(Node<E> ...

2018-04-24 20:56:45 407

原创 程序员面试金典--题目解析-2.1 移除未排序链表中的重复结点

2.1 题目:移除未排序链表中的重复结点进阶:不使用额外的数据结构解法:使用额外数据结构的解法:遍历链表,如果不存在该key,使用map存储 key为node.item;value为true的数据,如果存在该key则删除该结点public static <E> void deleteDuplicateNode1(Node<E> head){          HashMap...

2018-04-24 19:35:45 416 1

原创 程序员面试金典--题目解析-1.8 给定两个字符串,s1和s2,确定s2是否是s1旋转得到的。

1.8 题目:给定两个字符串,s1和s2,确定s2是否是s1旋转得到的。比如:s1 = waterbottle;s2 = erbottlewat;另,提供了一个判断是否是子串的方法isSubstring(a,b) 以检验b是否是a的子串解法:1、取s2的第一个字符,在s1中找到第一次出现的位置,然后截断s1 s2 比如:先拿出e 找到在s1中的位置,截断s1 为 erbottle 和  wat;截...

2018-04-23 16:47:36 2146

原创 程序员面试金典--题目解析-1.7 若M*N矩阵中某个元素为0,则将其所在的行和列清零

1.7 题目:编写一个算法,若M*N矩阵中某个元素为0,则将其所在的行和列清零。解法:遍历两次矩阵,使用两个布尔数组记录应该被清零的行和列,第一次遍历,记录下需要被清零的。第二次遍历,清零即可。public static void setZeros(int[][] matrix){          boolean[] rows = new boolean[matrix.length];     ...

2018-04-23 16:11:47 1194

原创 程序员面试金典--题目解析-1.6 左旋右旋N阶矩阵

1.6 题目:给定一个N*N阶的矩阵,左或右旋转90度,不要使用额外的空间。解法:最优的复杂度为O(N^2)左旋代码:public static void rotateRight(int[][] matrix,int n){          for(int layer = 0;layer< n/2;layer++){              int first = layer;     ...

2018-04-23 15:35:38 248

原创 程序员面试金典--题目解析-1.5 字符串压缩功能

1.5 题目:字符串压缩功能。比如:给定字符串“aabbbbccaadd” 输出"a2b4c2a2",若压缩后的字符串没有变短,则输出原来字符串。O(N) 解法:利用StringBuffer构建新的字符串public static String compressDuplicate(String str){          if(str == null || str.length() == 0) ...

2018-04-23 14:08:53 262

原创 程序员面试金典--题目解析-1.3 判断一个字符串是否是其他字符串的变位串

1.3 题目:给定两个字符串,判断其中一个字符串重新排列后,能否变成另外一个字符串。假定:区分大小写,空格也要考虑在内。ASCII字符集解法:1、先排序两个字符串,再比较排序后的字符串public static boolean permutation(String s,String t){          if(s == null || t == null)              retur...

2018-04-23 10:49:09 174

原创 程序员面试金典--题目解析-1.1 确定一个字符串的所有字符是否相同

1.1 题目:确定一个字符串的所有字符是否相同?1)可以使用额外的数据结构2)不使用额外的数据结构解法:1、将字符串中的每一个字符和其余字符进行比较,时间复杂度O(n^2) 空间复杂度O(1)代码如下:public static boolean isUniqueChars(String str){          for(int i=0;i<str.length();i++){      ...

2018-04-23 09:42:32 386

原创 平衡二叉树的删除实现---递归

关于平衡二叉树,我查阅了一下资料,在删除部分的实现,目前还不是很完善。于是我自己动手写了一个递归删除,每一部分都做了注释,可以把代码直接拷贝到环境中进行测试。测试代码:public class TestAVLTree {      public static void main(String[] args) {          AVLTree<Integer> tree = new ...

2018-02-27 15:29:52 359

空空如也

空空如也

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

TA关注的人

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