自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(83)
  • 问答 (1)
  • 收藏
  • 关注

原创 计算机的发展史

世界上第一台通用计算机 世界上第一台通用计算机-ENIAC即Electronic Numerical Integrator And Computer即电子数字积分计算机、(另说是ABC计算机),设计的初衷是军事相关, 由美国陆军资助、第一次测试用于计算氢弹项目。研发团队核心成员按是6个人、其中还有一个中国人:朱传榘。世界上第一个程序员(女程序媛) 埃达 洛夫莱斯, 英国数学家兼作家, 于1842年至1843年之间翻译一篇意大利军事工程师费德里克 路易吉阐述分析机的文章,但是...

2020-12-11 16:41:32 4191

原创 Cpu、核、Java Runtime.getRuntime().availableProcessors()

今天偶然写了一个这样的代码它返回结果竟然是4;但是我的机器明明只有一个处理器、2个核、为啥会返回4呢?此时我们发现开启了超线程技术,超线程技术是通过特殊的硬件指令将一个物理处理器核心模拟为2个逻辑处理器核心。我们打开mac的活动监视器、双击CPU负载、就会出现上面的图、可以看出有四个内核、这四个内核是可以并行处理线程的、是并行、同时执行、不是并发。所以很明显java 中getRuntime().availableProcessors返回的就是逻辑处理器数。..

2020-11-09 10:29:51 2732

原创 为什么能用域名访问斗鱼、却不能用ip访问

对于有的网站(比如斗鱼)直接访问ip会收到403错误: 403的意思是:服务器收到请求但是拒绝提供服务。比如我们ping得斗鱼的一个ip是121.194.7.5; 我们在浏览器地址栏直接输入121.194.7.5或者是https://121.194.7.5返回了403、这是因为我们在地址栏输入https://121.194.7.5或者直接输入ip、都表明这是一个http请求、最好写上https:// 以表明所使用的应用层协议、毕竟也可以用ftp协议来访问。在http请求报文(这是一个ht.

2020-10-30 21:37:45 4850

原创 RocketMQ 编译 不再支持源选项6

找到pom.xml、把 <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</sourc

2020-10-30 16:04:30 242 1

原创 三个线程轮流打印0到10

package ThreadTest;public class ThreeThread { static class Node{ private int flag = 1; private int index = 0; } static class Thread1 extends Thread{ Node node; private final int threadId; private fin.

2020-10-26 18:43:08 113

原创 二叉树两个节点最近公共祖先的解法

假设有一个二叉树、根节点为TreeNode root、p节点和 q节点均在二叉树中、求p和q的最近公共祖先节点。优雅的递归解法:对于这个问题, 我们定义一个函数、但是这个函数扩充这个问题的定义public TreeNode lowestCommonAncestor(TreeNode root, TreeNode p, TreeNode q)这个函数的扩充定义是什么呢?虽然题目是保证p、q均在树中、但是我们为了实现递归解法、必须要考虑p、q有一个不在或者是均不在树中的情况来应对子树的情.

2020-10-25 23:51:03 833

原创 如此调用

起因是看到这样一段代码 queued = UNSAFE.compareAndSwapObject(this, waitersOffset, q.next = waiters, q);这里第三个参数类型也是Object类型但是输入是q.next = waiters;这个怎么解释呢?这个其实分为两步来看、第一步将waiters 赋值给q.next; 第二步是把q.next的值作为参数传递给

2020-09-23 19:15:56 192

原创 继承

类无法多继承、但是接口可以多继承如果一个接口继承多个接口、那么这个接口就会继承这些接口中的所有方法, 那实现该接口的类就要实现这些接口中的所有方法。package InterfaceExtendTest;public interface Work { public void work();}interface Eat { public void eat();}interface Person extends Work, Eat{ public void sp

2020-09-21 15:57:42 84

原创 java让主线程等待所有子线程执行完应该怎么做

深入理解java虚拟机中有这样一段代码package AtomicTest;import java.util.concurrent.atomic.AtomicInteger;public class AtomicTest { public static AtomicInteger race = new AtomicInteger(0); public static void increase() { race.incrementAndGet(); }

2020-09-14 00:05:30 324

原创 自己写的String类能够被加载吗?

自己写的String类能够被加载吗? 答:自己尝试了一下, 不能被加载, 如果你引用了自己写的String类, 则该住房那个执行的绿色三角就会消失, 是不能执行的。在上面引入了interview.String、左边的三角形就消失了; 右边没有引入, 就有可执行三角。为什么呢?这是类加载中的双亲委托机制。就是说java虚拟机在加载一个类的时候, 应用程序类加载器会委托扩展类加载器加载, 扩展类加载器会委托根加载器加载, 这样做的目的是什么呢?当然是为了保证程序的安全,...

2020-09-04 21:53:54 1466 2

原创 java如何在主线程中等待其他线程执行结束

thread1.join()thread2.join()

2020-08-27 10:35:51 554

原创 设计模式之单例模式

单例模式在多线程环境下需要double check。我们来看不double check的情况public class Singleton { private static Singleton singleton = null; private Singleton() { System.out.println("单例生成"); } public static Singleton getInstance() { if (singleton

2020-08-24 19:46:12 76

原创 java 线程池

为什么要用线程池(自己的理解, 如有错误,评论区指导~)  以web服务器为例, 其实在低并发量的时候,我觉的不使用线程池也没有太大关系。但是一旦并发量上来了,或者有人对你的网站发起恶意流量攻击,那么假如我们单纯地对于每个请求都创建一个线程来处理、会怎么样呢?  首先java是如何创建线程的呢?      1、继承Thread类    2、实现Runnable接口,然后再new Thread(Runnable command)  也就是先创建一个线程实例,然后去调用实例的start(

2020-06-30 22:49:46 174

原创 头条搜索部门后台开发实习生面经

一面:1、使用HTTP时,客户端向服务端传输时,出现了丢包,但是服务端的的HTTP响应报文的状态码是200,怎么样解释这个现象。2、64匹马,8个赛道,求出最快的四匹马。3、HTTPS协议和HTTP协议的区别,4、对于一个正整数数组,将该数组调整为下一个刚好比该数组表示的数大的数,比如1234 下一个就是1243,1342,下一个就是1423.二面:1、HTTPS协议的原理...

2019-10-16 15:53:24 208 1

原创 用两个栈实现一个带getMin()方法的新型栈

package QueueAndStack;import java.util.Stack;public class GetMinStack { /** * 设计一个有getMin功能的栈 * 就是一个栈中增加一个方法getMin()方法 */ public static Stack<Integer> stack1 = new S...

2019-09-18 19:46:17 129

原创 两个队列实现一个栈

package Queue;import java.util.LinkedList;public class TwoQueueMakeStack { /** * 两个队列实现一个栈 * 两个队列中至多只有一个队列中有元素 * 添加元素就是:如果两个队列都没有元素,就将元素添加到队列1中,否则如果哪个队列有元素,就将元素添加到该队列中。 * ...

2019-09-18 17:59:59 194

原创 找到一个链表中倒数第k个数

运用双指针法:先让一个指针在前面走k个节点。然后两个指针一起走,等到后面那个指针到达终点,前面这个指针就是第k个节点package List;public class FindKthFromEnd { /** * 问题描述:找到一个链表中的第k个节点 * 解法:双指针法: */ public static Node findKthFr...

2019-09-18 16:20:10 130

原创 找到一个数组后面第一个大的数

问题描述:对于一个数组,找到每个数后面第一个比它大的数。如果不存在就返回-1,通过一个新数组返回1解决方案:使用一个栈,栈中保存数组的下标。遍历原数组,如果原数组的值比栈顶下标元素值小,直接入栈,不然的话就一直出栈,并且填写新数组栈顶下标位置为原数组当前访问值,出栈后再进行比较,如果栈中最后海油其他元素,则全部弹出,然后他们的位置填写-1。package Array;impo...

2019-09-18 15:37:40 636

原创 Java中如何在函数形参中使用int型全局变量

想要在函数形参中使用int型的全局变量,直接使用int是不行的,得使用int数组,因为数组是对象,保存在堆区。而int是基本数据类型。保存在栈中。

2019-09-05 09:58:14 839

原创 计算2的n次方

如果说让计算2的n次方,且数据不会超过int型范围,那么如果说计算2的6次方,就是1<<6。

2019-09-03 19:49:03 242

原创 求最短路径

题目描述:一个二维矩阵由0和1构成,求从左上角跑到右下角的最短路径。解法:广度优先遍历,使用队列,队列中的元素如果不弹出的话,从队头到队尾是步数一次增加,即:走一步可以到达的节点、走两步可以达到的节点、......要设置已访问数组:目的是防止某个节点重复入队,因为如果某个元素被第二次访问,那此次走到它的步数一定大于第一次走到它的步数,所以这个节点不符合最短路径,所以没必要入队,而且这个...

2019-08-23 19:45:42 296

原创 把一个搜索二叉树展开为一个双向链表

package Tree;import java.util.LinkedList;import java.util.Stack;public class TreeToDoubleList{ /** * 把一棵搜索二叉树展开为一棵有序双向链表 * 因为二叉树节点和双向链表的节点是一样的,都是一个值+两个指针,在展开的过程时把树的左孩子节点作为last节点...

2019-08-21 21:02:11 146

原创 找出一个分割点,尽可能小,使得分割点左边的数(包括分割点)全部小于右边的数

package Array;public class MinPart { /** * 对于一个数组,找出一个最小的分割点,使得左边的数全部小于右边的数 */ public static int minPart(int[] arr){ if(arr == null || arr.length == 0){ ret...

2019-08-20 21:18:05 396

原创 求出一个矩阵中最长递增路径

递归(深度优先遍历)package Search;import java.util.LinkedList;import java.util.Stack;public class LongestIncreasingPathInMatrix { /** * 寻找一个矩阵中最长增长路径 * 深度搜索 */ public static int ...

2019-08-20 20:02:33 354

原创 二叉树的节点包含指向父节点的指针,给出树中一个元素,求出中序遍历的下一个元素

package Tree;public class SearchForNext { /** * 树的节点有指向父节点,寻找下一个中序遍历的节点 */ public static NodeWithParent searchForNext(NodeWithParent now){ if(now.rchild != null) { ...

2019-08-20 15:46:25 1110

原创 TopN问题

题目通常描述为:如何在很多数中(10亿)中寻找前1000个最大的数。答:构造一个1000个数的小顶堆,然后再遍历剩下的元素,假如说比堆顶还小,那么这个堆中的1000个数都比这个数大,那么直接就淘汰这个数,如果比堆顶大,那么就把这个数替换掉堆顶元素(也就是堆顶元素肯定不是前1000个最大的数)。然后重新进行堆排序。假设问题规模不定,我们把题目序数为如何在n(n>>1000)个数中...

2019-08-20 14:23:45 238

原创 找出一个数组中第K大元素以及找出重复率最高的100个元素

找出一个数组中第K大元素1、如果允许移动元素,那么可以采用排序的方法,时间负载度是O(nlogn);还有一种算法是select(arr,k)(这个算法实现起来还是比较麻烦的)时间复杂度是O(n),也可以使用堆排序:如果使用堆排序的话,选择第K大元素,时间复杂度也是O(k+(n -k)logk)这个时间复杂度还是不错的。另外堆排序还可以解决topk的问题。2、如果不能移动元素...

2019-08-20 12:50:40 512

原创 头条面试题-将一亿以内的文字转换为对应的阿拉伯数字

package Other;import java.util.HashMap;import java.util.Stack;public class WordToNum { /** * 问题描述:五千三百四十三万九千一百二十一转换为53439121 */ public static int transfer(String target){ ...

2019-08-19 14:52:44 319

原创 有序数组平方后有多少个不同的数

package Array;public class SquareNotEqual{ /** * 一个有序数组,平方之后,有多少个不一样的数 * 思路:先把他们全部转换为非负数,然后两个指针从两端开始向中间扫描,从大到小开始计数,此时头尾两指针的元素得比较大小,并且记录 * 上次的数据,防止重复计数。 */ public static...

2019-08-18 17:23:54 982

原创 字节跳动编程算法题及解答

第二题:我觉得应该先反转单链表package List;public class ListAdd { /** * 两个链表相加 */ public static Node listAdd(Node num1, Node num2){ if(num1 == null || num2 == null){ retu...

2019-08-17 22:01:59 979

原创 A与B地相距n米,一个人第一步只能前进1米或者后退1米,第二步只能前进2米或者后退2米,A走到B最少需要几步

有两种解法:1、递归,实质是深度优先遍历,但是报栈溢出错误2、利用队列实现广度优先遍历,可解package Recursive;import java.util.LinkedList;import java.util.Queue;public class OneStepTwoStep { /** * 问题描述:一个人第一步只能前进一米或者是后退一米11,...

2019-08-17 21:03:05 949

原创 一个队列存放几千万上亿的数据,应该如何设计这个队列?只需要在头尾进行添加、删除

class Node<V>{ V value; Node<V> next; Node<V> last; public Node(V value){ this.value = value; }}public class DoubleLinkedList<V>{ Node...

2019-08-16 09:49:55 1557

原创 链表每K个节点进行反转

package List;public class Node<V> { V value; Node<V> next; public Node(V value){ this.value = value; } public static void printList(Node head){ Node ...

2019-08-15 22:40:54 3415

原创 把一个数组中的数分为n段,使得每段和的最大值最小

思路:递归k :要分的段数1、当k = 1,则输出该数组的和2、当k= 数组元素个数,输出数组的最大值即可3、其他情况的话,考虑第一段的所有情况,要保证第一段后面的元素大于等于k-1,不然不能分成k-1段。对后面的k-1段使用递归函数package Array;public class KPart { /** * 把一个数组分为k段,使所有段的和的最大...

2019-08-09 12:28:10 3072 1

原创 N个人都不坐自己位置的情况有几种

* 问题描述:n个人每个人都有自己的位置,问每个人都不坐自己的位置有几种情况* 思路很简单:递归* 第一个人可以做其他n-1个位置,当第一个人做每一个位置,比如说第一个人坐2号位置和3号位置的情况是一样多的。* 然后当第一个人坐2号位置,剩下的情况和原问题并不等价* 因为原问题每个人都有自己的位置,但是现在子问题2号没有自己的位置,只有多了一个1号位置* 我们暂时把1号位置认为就是2号...

2019-08-03 22:38:58 3464

原创 二分法、牛顿法开根号

package Array;public class SqrtN { /** * 用二分法开根号必定涉及精度问题,而且精度肯定比较小,比如0.00000001 * 那总不至于我用一次二分法,也叫开根号了吧,比如说根号3,二分法用一次等于2,那么能说根号3等于2吗 * @param value * @return */ pu...

2019-08-03 22:11:52 423

原创 全排列、按字典序全排序

单纯全排列public class FullSort { public static void fullSort(char[] arr, int start, int end){ if(arr == null || arr.length == 0){ return; } int len = arr.length;...

2019-08-03 13:12:00 540

原创 如何使网站记住用户即保持登录Session Cookie

使用session和cookie,每个用户对应一个session_id,还要有一个失效日期。session_id存在cookie中。session存在一致性问题,就是在负载均衡情况下,如果把session存在某一个应用服务器下,如果下次请求的是集群中的另一个服务器,那么就需要重新登录。所以比较好的解决方案就是单独设置一个session服务器可以是mysql服务器,更好的是redis服务器。...

2019-08-01 18:40:39 770

原创 负载均衡

一开始搭建网站,只用一台服务器对外提供服务。访问量上来了,一台服务器扛不住了。就用多个服务器搭建一个集群对外提供服务。但是对外提供的访问入口只有一个比如www.baidu.com.但是实际上请求这个网址,会被发到不同的机器上进行处理。所有说有了负载均衡以后,我们的请求实际上是先发给负载均衡服务器。就是地址是负载均衡服务器的地址。负载均衡分类:最常用的是四层负载均衡好七层负载均衡。...

2019-08-01 14:36:09 84

原创 HTTP2.0

HTTP2.0只用于HTTPSHTTP继续使用HTTP1.1HTTP1.0是一个TCP连接只能进行一次HTTP请求。但是可以多开几个TCP连接(Chrome是6个)默认是非持久连接。HTTP1.1默认开启持久连接。但是HTTP请求只能串行进行,就是等到一个HTTP请求被响应之后,才能进行下一个HTTP请求。HTTP1.1有一个流水线技术、可以实现连续发HTTP请求,而不用等待响应...

2019-07-31 21:49:13 193

空空如也

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

TA关注的人

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