摘要: 将博客搬至CSDN 阅读全文
posted @ 2020-04-03 23:04 尘世中一个迷途小书童 阅读(113) 评论(0) 推荐(0) 编辑
摘要: 运行数据区分为本地方法区,堆,栈,寄存器,本地方法栈。 1、方法区:被称为静态区,和堆一样,会被所有线程共享。方法区会包含静态的class和static变量。在java虚拟机启动的时候会被装载。 2、堆 储存对象,即new出的实例,会在堆中储存。会被所有线程共享,不存放基本类型和对象引用。 对象中会 阅读全文
posted @ 2020-04-03 15:08 尘世中一个迷途小书童 阅读(181) 评论(0) 推荐(0) 编辑
摘要: matric = [[1,0,0,1,0,1], [0,1,0,1,0,0], [0,0,0,0,0,1], [0,0,1,0,0,0], [0,0,0,0,1,0]] b1,b2 = 1,0 e1,e2 = 4,5 rows,cols = len(matric),len(matric[0]) vi 阅读全文
posted @ 2019-12-20 21:28 尘世中一个迷途小书童 阅读(236) 评论(0) 推荐(0) 编辑
摘要: 1、多线程的作用:发挥多核CPU的优势 2、创建线程的方式:继承Thread类、实现Runable接口(方式更灵活,也可以减少程序间的耦合度)。 3、start()方法和run()方法的区别:只有调用了start()方法才会表现出多线程的特性;不同线程的run()方法里面的代码时交替执行。 4、Ru 阅读全文
posted @ 2019-12-17 15:59 尘世中一个迷途小书童 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 一、中序遍历 二、前序遍历 三、后序遍历 阅读全文
posted @ 2019-10-10 10:49 尘世中一个迷途小书童 阅读(99) 评论(0) 推荐(0) 编辑
摘要: 一、Hbase概念及特点 Hbase以表的方式组织数据,表由行(Row)以及列(Column)组成,行由row key和一个或多个列及其值组成,列必须属于某一列族(Column family),一个列族可以有一个或多个列(一列由列簇和列修饰符组成,他们通常由冒号(:) 分隔),其在存储架构中就是一个 阅读全文
posted @ 2019-10-07 10:32 尘世中一个迷途小书童 阅读(245) 评论(0) 推荐(0) 编辑
摘要: 一、继承 1、子类拥有父类非 private 的属性、方法。 2、子类可以拥有自己的属性和方法,即子类可以对父类进行扩展。 3、子类可以用自己的方式实现父类的方法。 4、Java 的继承是单继承,但是可以多重继承,单继承就是一个子类只能继承一个父类,多重继承就是,例如 A 类继承 B 类,B 类继承 阅读全文
posted @ 2019-09-25 23:34 尘世中一个迷途小书童 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 一、进程、线程和协程 进程:一个运行的程序就是一个进程。是系统资源分配的最小单位,拥有自己独立的内存空间。既不共享堆也不共享栈;由操作系统调度 线程:调度执行的最小单位,不能独立存在,共享内存。共享堆不共享栈;由操作系统调度 协程:是一种用户态的轻量级线程,调度完全由用户控制。和线程一样,共享堆不共 阅读全文
posted @ 2019-09-25 18:48 尘世中一个迷途小书童 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 一、HTTP请求报文与响应报文格式 请求报文包含三部分: 1、请求行:包含请求方法、URI、HTTP版本信息2、请求首部字段3、请求内容实体 响应报文包含三部分: 1、状态行:包含HTTP版本、状态码、状态码的原因短语2、响应首部字段3、响应内容实体 二、HTTP1.1新特性 1、默认持久连接节省通 阅读全文
posted @ 2019-09-25 16:17 尘世中一个迷途小书童 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 题目:假设把某股票的价格按照时间先后顺序存储在数组中,请问买卖该股票一次可能获得的最大利润是多少 注:存储当前数字之前的最小值,然后遍历的时候,依次计算当前值与最小值的差,最后差值数组中的最大值即为最大利润。 阅读全文
posted @ 2019-09-24 15:41 尘世中一个迷途小书童 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 题目:0,1,...,n-1这n个数字排成一个圆圈,从数字0开始,每次从这个圆圈里删除第m个数字。求这个圆圈里剩下的最后一个数字。 注:约瑟夫环问题,使用环形链表模拟求出最后剩下的一个节点,即p==p.next时的节点。 阅读全文
posted @ 2019-09-24 15:33 尘世中一个迷途小书童 阅读(169) 评论(0) 推荐(0) 编辑
摘要: 题目:从扑克牌中随机抽5张牌,判断是不是一个顺子,即这5张牌是不是连续的。 注:1、统计数组中0的个数,即大小王的个数 2、对数组进行排序 3、遍历数组,统计数组非0部分的间隔和。如果遇到有相邻相同的即表示不能组成连续的数组,返回False 4、最后与0 的个数进行比较,如果小于等于0的个数即连续, 阅读全文
posted @ 2019-09-24 15:26 尘世中一个迷途小书童 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 一、搭建开发环境 1、安装库:异步框架aiohttp、异步驱动程序aiomysql、前端模板引擎jinjia2 2、构建项目目录 二、编写ORM 1、创建连接池 创建一个全局的连接池,每个HTTP请求都可以从连接池中直接获取数据库连接。使用连接池的好处是不必频繁地打开和关闭数据库连接,而是能复用就尽 阅读全文
posted @ 2019-09-22 21:29 尘世中一个迷途小书童 阅读(313) 评论(0) 推荐(0) 编辑
摘要: 一、协程的优势 1、极高的执行效率。没有线程切换的开销,和多线程比,线程数量越多,协程的性能优势就越明显。 2、不需要多线程的锁机制。因为只有一个线程,也不存在同时写变量冲突,在协程中控制共享资源不加锁,只需要判断状态就好了,所以执行效率比多线程高很多。 因为协程是一个线程执行,利用多核CPU最简单 阅读全文
posted @ 2019-09-22 20:29 尘世中一个迷途小书童 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 一、list实现方式 list就是一种采用分离式技术实现的动态顺序表。在建立空表时,系统分配一块能容纳8个元素的存储区;在执行插入操作(insert或append)时,如果元素存储区满就换一块4倍大的存储区。但如果此时的表已经很大(目前的阀值为50000),则改变策略,采用加一倍的方法。 二、imp 阅读全文
posted @ 2019-09-21 22:08 尘世中一个迷途小书童 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 升级过程为:最初系统——添加负载均衡——数据库分库分表+读写分离——缓存集群+消息中间件集群 1、最初系统 假设系统机器是4核8G,数据库服务器是16核32G。日活用户1W,系统层面每秒10次请求,数据库层每秒30次请求。 2、添加负载均衡 用户量增长了50倍,日活用户50万,高峰期对系统每秒请求5 阅读全文
posted @ 2019-09-20 22:13 尘世中一个迷途小书童 阅读(272) 评论(0) 推荐(0) 编辑
摘要: 题目:字符串左旋转操作是把字符串前面的若干个字符转移到字符串的尾部。请实现左旋转操作。 注:主要思路是采用3次旋转,第一次字符串全部旋转;第二次前半部分旋转,以指定的n为分界点,此时旋转一次后的分界点变为len(s)-n;第三次后面部分旋转。 阅读全文
posted @ 2019-09-18 10:21 尘世中一个迷途小书童 阅读(105) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变。标点符号和普通字母一样处理。 注:采用的思想为两次翻转。先全部翻转,然后根据空格分隔的每个单词进行第二次翻转。由于Python里string不可变,所以要通过列表来进行操作。 阅读全文
posted @ 2019-09-18 10:10 尘世中一个迷途小书童 阅读(155) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个正数s,打印出所有和为s的连续正数序列(至少含有两个数)。 注:也是使用两个指针,只是这次在同一侧,向后侧移动,如果当前两个指针之内的数的和小于目标值,则后面指针右移;如果和大于目标值,则前面指针右移;如果和与目标值相等则加入保存的列表。优化提前终止为,前面指针大于目标值的一半时即可终 阅读全文
posted @ 2019-09-17 22:24 尘世中一个迷途小书童 阅读(154) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一个递增排序的数组和一个数字s,在数组中找查找两个数,使他们的和正好为s。如果有多对,输出任意一对即可。 注:由于是有序数组,采用前后两个指针往中间走的方式,如果两个数的和小于目标,前指针后移,反之,后指针前移。代码中增加了优化,如果目标值大于两倍的后指针或小于两倍的前指针则数组中不会存在 阅读全文
posted @ 2019-09-17 22:03 尘世中一个迷途小书童 阅读(210) 评论(0) 推荐(0) 编辑
摘要: 题目:一个整型数组里除两个数字之外,其他数字都出现了两次。请找出这两个只出现一次的数字。时间复杂度O(n),空间复杂度O(1)。本题代码部分是简化版,只有一个数字出现了一次,其他都是两次。 注:使用异或运算。运用异或的特点:一个数和0异或还是它本身;一个数和自己异或为0。有两个出现一次的问题,需要先 阅读全文
posted @ 2019-09-17 21:53 尘世中一个迷途小书童 阅读(131) 评论(0) 推荐(0) 编辑
摘要: 题目:输入一棵二叉树的根节点,判断该树是不是平衡二叉树。如果某二叉树中任意节点的左、右子树的深度相差不超过1,那么它就是一棵平衡二叉树。 注:求出左右子树的深度,然后求差,判断差是否否和平衡条件。一直遍历到叶子结点,如果其中任何一个节点不平衡即返回False。 阅读全文
posted @ 2019-09-17 15:57 尘世中一个迷途小书童 阅读(152) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一棵二叉搜索树,请找出其中第K大的节点。 注:采用中序遍历,遍历完成后取出第K个。官方给出的方案是直接取到第K个节点就停止,目前没看明白,后期会优化。 阅读全文
posted @ 2019-09-17 15:16 尘世中一个迷途小书童 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个数组,每个数表示宽度为 1 的柱子的高度,计算按此排列的柱子,下雨之后能接多少雨水。 注:采用双指针从前后开始遍历,并且需要分别存储左右最大值。依次计算每列所能存储的雨水的量,然后累加即可。 阅读全文
posted @ 2019-09-14 14:28 尘世中一个迷途小书童 阅读(164) 评论(0) 推荐(0) 编辑
摘要: 题目:给定一个数组,代表木板的高度。选两个木板,求两个木板的最大盛水量。 注:使用前后两个指针向中间移动的策略,获取最大的蓄水量。指针移动策略为短的一侧木板移动。 阅读全文
posted @ 2019-09-14 13:12 尘世中一个迷途小书童 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 题目:1-1-2-3-3-3-4-5-6-6-7,删除重复节点后返回2-4-5-7 注:不重复节点判断标准为,和前、后节点都不相同,注意头节点和尾结点要单独判断。 阅读全文
posted @ 2019-09-14 12:48 尘世中一个迷途小书童 阅读(144) 评论(0) 推荐(0) 编辑
摘要: 给定两个单词 word1 和 word2,计算出将 word1 转换成 word2 所使用的最少操作数 。 你可以对一个单词进行如下三种操作:1、插入一个字符2、删除一个字符3、替换一个字符 注:使用动态规划的思想。状态方程为: f(i,j)表示word1[:i]转换为word2[:j]需要的最少步 阅读全文
posted @ 2019-09-11 22:35 尘世中一个迷途小书童 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 题目:假设一个单调递增的数组里的每个元素都是整数并且是唯一的。请找出数组中任意一个数值等于其下标的元素。 注:使用二分查找,当中间的数和索引相同时,返回值,结束;当中间值小于索引时,begin指向中间值+1;当中间值大于索引时,end指向中间值-1。 阅读全文
posted @ 2019-09-10 21:09 尘世中一个迷途小书童 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 题目:一个长度为n-1的递增排序数组中的所有数字都是唯一的,并且每个数字都在范围0~n-1之内。在范围0~n-1内的n个数字中有且只有一个数字不在该数组中,请找出这个数字。 注:使用二分查找的方式,如果中间的数与索引相同,说明缺失的数字在右边,让begin指向这个位置;如果中间的数与索引不相同,说明 阅读全文
posted @ 2019-09-10 21:02 尘世中一个迷途小书童 阅读(145) 评论(0) 推荐(0) 编辑
摘要: 题目:数字在排序数组中出现的次数。输入为一个排序数组和一个数字。 注:一般解决方式为利用字典统计各个数字出现的次数或者用二分法查找到其中一个目标数字,然后前后再前后查找。这两种方式的时间复杂度都为O(n)。 O(lgn)的方法为使用两次二分查找,第一次查找目标数字第一次出现的位置,第二次查找其最后一 阅读全文
posted @ 2019-09-10 20:36 尘世中一个迷途小书童 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 题目:输入两个链表,找出它们的第一个公共节点。 注:要找出两个链表第一个公共节点,只要让两个链表在各自某个节点之后长度一致,然后一起往后遍历,当遇到两个节点相同时,即为第一个公共节点。所以首先算出两个链表的长度,然后让长的链表先走,使其剩余长度等于另一个链表,然后一起遍历即可。 第二种方法为用两个栈 阅读全文
posted @ 2019-09-10 20:24 尘世中一个迷途小书童 阅读(133) 评论(0) 推荐(0) 编辑
摘要: 题目:在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对。 注:官方给的方法是利用归并排序,时间复杂度为O(nlgn)。本文给出自己的方法,时间复杂度为O(n2),有待改进,但是实现很简洁。先对数组排序,利用内置的排序函数。然后依次遍 阅读全文
posted @ 2019-09-10 20:05 尘世中一个迷途小书童 阅读(102) 评论(0) 推荐(0) 编辑
摘要: 一、并发、并行、同步、异步、阻塞、非阻塞 并发:指一个时间段内,有几个程序在同一个CPU上运行,但是任意时刻只有一个程序在CPU上运行 并行:指任意时刻点上,有多个程序同时运行在多个CPU上 同步:指代码调用IO操作时,必须等待IO操作完成才能返回的调用方式。 异步:指代码调用IO操作时,不必等IO 阅读全文
posted @ 2019-09-10 10:47 尘世中一个迷途小书童 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 题目:字符串中第一个只出现一次的字符。 注:遍历两次字符串。第一次用字典统计各个字符出现的次数,第二次遍历输出value值为1的key。 阅读全文
posted @ 2019-09-09 22:54 尘世中一个迷途小书童 阅读(98) 评论(0) 推荐(0) 编辑
摘要: 题目:我们把只包含因子2、3和5的数称作为丑数。求按从小到大的顺序的第1500个丑数,习惯上我们把1作为第一个丑数。 注:为了利用之前计算的丑数,使用一个列表存储要计算的丑数。使用3个指针分别代表之前的丑数乘以2,3,5刚好大于当前列表最后一个丑数的位置。要添加的新的丑数即为3个指针所指的丑数分别乘 阅读全文
posted @ 2019-09-09 22:51 尘世中一个迷途小书童 阅读(150) 评论(0) 推荐(0) 编辑
摘要: 一、反爬机制和应对措施 1、通过Headers 措施:添加User-Agent和Referer 2、基于用户行为 措施:代理IP、延迟爬取 3、动态页面 措施:requests模拟ajax请求,如果请求加密了使用selenium+phantomJS 验证码解决:Tesseract 二、Scrapy运 阅读全文
posted @ 2019-09-07 22:09 尘世中一个迷途小书童 阅读(156) 评论(0) 推荐(0) 编辑
摘要: 一、cookie和session的区别 1、cookie存放在客户浏览器,session存放在服务器 2、cookie不安全,其他人可以分析本地的cookie进行cookie欺骗 3、session会在一定时间内保存在服务器上,访问增多会占用服务器性能 4、单个cookie保存的数据不能超过4K,很 阅读全文
posted @ 2019-09-07 19:34 尘世中一个迷途小书童 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 一、__new__和__init__的区别 1、new是一个静态方法,init是一个实例方法2、new方法会返回一个创建的实例,而init什么都不返回3、只有在new返回一个cls的实例时后面的init才能被调用4、当创建一个新实例时调用new,初始化一个实例时用init 1、new是一个静态方法, 阅读全文
posted @ 2019-09-07 17:32 尘世中一个迷途小书童 阅读(161) 评论(0) 推荐(0) 编辑
摘要: 一、Python内存管理机制 1、引用计数 当一个Python对象被引用时其引用计数增加1,当其不再被一个变量引用时则计数减1.当引用计数等于0时对象被删除。 2、垃圾回收 引用计数 标记清除 主要解决引用计数循环引用的问题。通过根节点对象(不会被删除的对象)对有向图把所有活动对象打上标记,然后回收 阅读全文
posted @ 2019-09-07 16:17 尘世中一个迷途小书童 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 题目:请从字符串中找出一个最长的不包含重复字符的子字符串,计算该最长子字符串的长度。假设字符串中只包含‘a’~'z'的字符。 注:使用动态规划的思想。存储到当前字符最长的不重复字符串。当判断下一个字符时,分两种情况: 1、如果下个字符在前一个最长不重复字符串没出现过,直接加入最长字符串 2、如果下个 阅读全文
posted @ 2019-09-06 10:41 尘世中一个迷途小书童 阅读(148) 评论(0) 推荐(0) 编辑