Keep It Simple , Stupid. 独立博客:白水东城(www.baishuidongcheng.com)
能力说明:
精通JVM运行机制,包括类生命、内存模型、垃圾回收及JVM常见参数;能够熟练使用Runnable接口创建线程和使用ExecutorService并发执行任务、识别潜在的死锁线程问题;能够使用Synchronized关键字和atomic包控制线程的执行顺序,使用并行Fork/Join框架;能过开发使用原始版本函数式接口的代码。
阿里云技能认证
详细说明
什么样的代码才算好呢? 有一个判断的标准:缩短别人能看明白你代码的时间。这时候估计又有同学会问了,我写的就是给自己看的,或者团队里就我一个人,设计到实现到测试全是我一个人,要写给别人明白干什么?好吧,老实说,我之前也是这样想的。“别人”不一定是其他人,也可能是三个月后的你自己。
Linux进程通信,软中断+消息队列,实现了简单的聊天功能。
B+树的优势 1.单一节点存储更多元素。B+树中间节点没有卫星数据(也就是说只包含索引信息),所以每个非叶子节点可以包含更多的内容,同样大小的磁盘页可以容纳更多的节点元素。也就是说B+树会在相同数据量的情况下比B树更加“矮胖”,查询的IO次数更少。
B树是用于在外存工作的平衡搜索树,MySQL中的索引主要是基于hash表或者B+树。 B树采取的方法就是,就充分的利用盘块的空间,在一个盘块中尽可能多的存储信息,或者在连续的盘块地址上存储尽可能多的信息
顺序查找对序列本身没有要求(比如不需要是已经排序好的),也不仅限于数字、字符,也可以用于前缀,对象信息的关键信息的匹配(比如查找指定id的相应信息)。
开始复习排序,主要是按照《轻松学算法》这本书的目录来学习,同时搜索网上的博客文章来辅助,参考的来源均在文章底部标明。同样,本文持续更新,代码书上只给了基础排序代码(我称之为原始排序代码),扩展的都是我自己写的,均通过测试,如果你觉得有写得不好或者能够优化的地方,非常欢迎留言评论或者私聊QQ我,大家交...
复习一下数据结构,巩固一下基础。 之后打算再学一下算法,之前刷题总感觉摸不清门道,应该是概念没彻底搞明白。
为什么要针对接口编程?继承不好用吗?难道就因为java是单继承,所以才搞出接口来实现所谓的多继承? 首先,继承是把双刃剑。
线程与进程是包含关系。一个进程至少包含一个线程,至多可以包含n个线程,一个线程必须从属于一个进程。
看到一个非常有意思的思路,是用图来解释的。值得借鉴。
碰到二叉树的问题,差不多就是深搜、广搜,递归那方面想想了,当然如果要考虑一下空间、时间,还需要进行剪枝和压缩处理。这题比较简单:判断两个树是否相等,可以递归的判断子树是否相等,最后找到边界条件就是是否都为空,都不为空时节点里面的值是否相等。
两种思路,都是递归。第一种是递归的判断每个节点的左右子树的深度是否只相差一以内。第二种做了剪枝处理,当判断到一个子树已经不满足时就返回结果。
题目要求在O(log(m+n))时间内完成,可以转换为找到假设两个数组合并后的第(m+n)/2小的数。
题目很简单,二分就能通过
继续学习偏头痛杨的博客----偏头痛杨的Java入门教学系列之异常篇 详细内容见链接中的博客,下面是简单的学习笔记和偏头痛杨留下的作业解答。
题目看上去像是二叉搜索树的题,实际上是动态规划。给到1~n的数,要找出多少种二叉查找树,对于取值为k的数来说,在它左边的又1~k-1,右边的有k+1~n.所以可以把左子树排列的种数乘右子树的种数得到以这个为根的二叉查找树的个数。
生活中不光只有电脑和代码,还有激情燃烧的那段日子!
多了一个条件,就是有重复数字出现。那可以考虑先排序,然后递归选择在相应位置放置数字的时候,可以添加判断是否被用过,也就是和前面那个比较一下:如果前面那个数和它一样值,而且目前的used 显示false那说明这个数已经在这个位置被用过了,而且已经计入了结果res中。
贪心的基本思想就是局部找最优解,然后通过局部的最优解得出来的结果,就是全局的最优解,往往很难证明,但不妨先试一试。 就像这道题,因为要求的是最大的子串和,那显然负数是起到反作用的,所以如果当前和是负的,那就果断舍去,这也是贪心的思路。
这道题有点像链表,二叉树中多了个链表,其实解法也应该往链表上去想,一般考虑用两个指针一个当前的,控制外部循环,一个是移动的,控制内部小循环。二叉树不断往下走,一边走一边从左向右实现同一层节点之间链表的链接
不能用多余空间,刚开始没有考虑多个指针什么,一下子想到个歪点子:循环就是重复走,那我可以标记一下每次走过的路,如果遇到标记过的路,那说明就是有回路了。
把数字转化为罗马符号,根据罗马符号的规律,可以先用map来存储一下。之后把每一位添加到所求中去。 语法点:StringBuffer是字符缓冲区,是可以修改字符长度的,最后要用sb.toString()去返回缓冲区的字符串
因为题目还是很简单,不考虑将装水的容器倾斜,所以只要考虑梯形中最短的边和底边的乘积就行了:正反两遍循环数组,第一遍从0~len,先固定最左边的边,从右往左遍历数组,如果碰到大于等于最左边边长的边,那就判断是否大于当前的最大盛水体积并跟新,然后就停止这次循环,将最左边的边向右移动一格,重复操作;第二遍从len~0,和第一遍一样。
肯定是低价买,高价卖出。但是有个限制就是在买进的时候,必须卖出手上的股票。 最低价买,最高价的时候卖。在递增数列中,末项减首项=每项与后一项之差的和。这里不需要考虑交易次数最小,所以可以这么写
题目很简单,考到了一个知识点——异或:比较两个操作数的二进制的各个位置,相同则为0不同则为1。所以,1.与0异或是本身2.与和自己一样的异或是0.
题目很简单,需要注意的是:int型是32位的。1000000003 反转后就超了!所以需要包装类Integer中的最大值和最小值
又开始刷算法题了,正好在学Java,顺便也练练Java。
上Java课的时候没弄明白接口,今天终于明白了(但没使用过,还停在理论的程度,可能理解也不准确,以后学通了会回来补充:)如果你刚学Java,对Java的三要素不能理解,强烈推荐看一下这篇文章。
继续学习:5.偏头痛杨的Java入门教学系列之流程控制语句篇
复习Java知识,主要是一边看**偏头痛杨**的博客,一边完成博主布置的任务。这是看[2.偏头痛杨的Java入门教学系列之变量&数据类型篇][1] 的作业
这是偏头痛杨的第一篇原文链接,其中,在系列的第二篇开头作者布置了十道题,下面是我的回答(大多是作者的文章摘录)
SVM是解决线性可分问题的,如果线性不可分,那就引入核函数,使其在更高的维度上可分,虽说一定存在一个超平面使其可分(不出任何差错,这即是之前所说的“硬间隔”),但容易发生过拟合的风险,训练效果反而不好。所以,缓解的办法就是允许支持向量在一些样本上出错,这便引入了“软间隔”。
HDFS分布式文件系统架构原理详解
Hadoop2.x概述
N皇后问题,在棋盘上放n个皇后,要求互相之间不能攻击,求问有多少种情况
A 点有一个过河卒,需要走到目标 B 点。卒行走规则:可以向下、或者向右。同时在棋盘上的任一点有一个对方的马(如上图的 C 点),该马所在的点和所有跳跃一步可达的点称为对方马的控制点。例如上图 CC 点上的马可以控制 9 个点(图中的 P1,P2⋯P8和 C)。卒不能通过对方马的控制点。
一个简单的多行万年历
小明正在整理一批历史文献。这些历史文献中出现了很多日期。小明知道这些日期都在1960年1月1日至2059年12月31日。令小明头疼的是,这些日期采用的格式非常不统一,有采用年/月/日的,有采用月/日/年的,还有采用日/月/年的。
对于在中国大学MOOC.学习“数据结构”课程的学生,想要获得一张合格证书,必须首先获得不少于200分的在线编程作业分,然后总评获得不少于60分(满分100)。总评成绩的计算公式为 G = (G期中x 40% + G期末x 60%),如果 G期中 > G期末;否则总评 G 就是 G期末。
文本压缩有很多种方法,这里我们只考虑最简单的一种:把由相同字符组成的一个连续的片段用这个字符和片段中含有这个字符的个数来表示。例如 ccccc 就用 5c 来表示。如果字符没有重复,就原样输出。例如 aba 压缩后仍然是 aba。
给定一个单链表,请编写程序将链表元素进行分类排列,使得所有负值元素都排在非负值元素的前面,而[0, K]区间内的元素都排在大于K的元素前面。但每一类内部元素的顺序是不能改变的。例如:给定链表为 18→7→-4→0→5→-6→10→11→-2,K为10,则输出应该为 -4→-6→-2→7→0→5→10→18→11。
给定一段一段的绳子,你需要把它们串成一条绳。每次串连的时候,是把两段绳子对折,再如下图所示套接在一起。这样得到的绳子又被当成是另一段绳子,可以再次对折去跟另一段绳子串连。每次串连后,原来两段绳子的长度就会减半。
Excel can sort records according to any column. Now you are supposed to imitate this function.
Programming Ability Test (PAT) is organized by the College of Computer Science and Technology of Zhejiang University.
Given a non-negative integer N, your task is to compute the sum of all the digits of N, and output every digit of the sum in English.
Calculate a + b and output the sum in standard format -- that is, the digits must be separated into groups of three by commas (unless there are less than four digits).
Shuffling is a procedure used to randomize a deck of playing cards. Because standard shuffling techniques are seen as weak, and in order to avoid "ins...
Forbes magazine publishes every year its list of billionaires based on the annual ranking of the world's wealthiest people.
对于计算机而言,颜色不过是像素点对应的一个24位的数值。现给定一幅分辨率为MxN的画,要求你找出万绿丛中的一点红,即有独一无二颜色的那个像素点,并且该点的颜色与其周围8个相邻像素的颜色差充分大。