- 博客(40)
- 收藏
- 关注
原创 java基础-原码反码补码
本文帮助理解,Java中原码反码补码的原理1:原码反码补码,基础概念和计算方法对于一个数,计算机需要使用一定的编码方式进行存储。原码反码补码是计算机存储一个具体数字的编码方式。原码:第一位表示符号位,其余位表示真值[+1]原= 0000 0001[-1]原 =1000 0001反码:正数的反码跟原码相等反码计算:在符号位不变的基础上,其余各位取反...
2020-02-01 11:02:10
1280
原创 HashMap小结
踏踏实实积累,不要浮躁!!!1:为什么用HashMapHashMap 是一个散列桶(数组和链表),它存储的内容是键值对(key - value) HashMap采用了数组和链表的数据结构,能在查询和修改方面继承了数组的线性查找和链表的寻址修改 HashMap是线程不安全的 HashMap可以接受null键和值,而HashTable不能解释为什么 HashMap可以接受 null 键...
2019-03-07 23:10:24
230
原创 String详解
踏踏实实积累,不要浮躁!!!1:关于 String 类的 equals() 方法 public static void main(String[] args) { String s1 = "aa"; String s2 = "aa"; System.out.println(s1.equals(s2)); St...
2019-03-06 23:44:20
257
原创 Object类详解
踏踏实实积累,不要浮躁!!!Object 类包涵以下常用方法,需要你有印象1: clone() 返回对象的副本,只是浅拷贝 如果要深拷贝得将对象中的引用类型也进行clone()2:equals() 方法 比较两个对象值是否相等 == 比较的是对象地址3:hashcode() 跟上面的 equals()方法是对应的 在 HashMap这种数据结构因为用到了 HashCo...
2019-03-06 22:59:20
268
原创 merge-k-sorted-lists(合并K个有序链表)
踏踏实实积累,不要浮躁!!! LeetCode https://leetcode-cn.com/problems/merge-k-sorted-lists/说明:题目没有技巧性,考察的是操作链表的代码功底。 待续。。。 ...
2019-02-11 21:45:13
224
原创 linked-list-cycle/submissions(环形链表)
踏踏实实积累,不要浮躁!!!LeetCode https://leetcode-cn.com/problems/linked-list-cycle/submissions/ 思路:判断链表是否有环,比较简单 直接利用快慢指针就能解决。慢指针,一次走一步 快指针一次走两步 如果存在环则一定会相遇/** * Definition for singly-linked list....
2019-02-11 20:08:46
185
原创 first-missing-positive(求缺失的第一个正数)
踏踏实实积累,不要浮躁!!!LeetCode https://leetcode-cn.com/problems/first-missing-positive/题目描述:题目分析: 要求时间复杂度为 O(n) 空间复杂度为常数级别思路: 没想到很标准的解法 下面的解法用到了Map 能通过 class Solution { public int firstMi...
2019-02-11 19:39:42
247
原创 Majority Element(求zhong众数)
踏踏实实积累,不要浮躁!!!LeetCode https://leetcode-cn.com/problems/majority-element/ 思路:1:利用Map 来计数每个元素出现的次数 因为题目明确表示测试用例中肯定有 众数,class Solution { public int majorityElement(int[] nums) { ...
2019-02-11 19:12:53
205
原创 3sum
踏踏实实积累,不要浮躁!!!LeetCode https://leetcode-cn.com/problems/3sum/ 求三数之和 先上代码: 下面代码中去重的逻辑得优化 时间复杂度比较高思路:先将数组进行升序排序,固定 i 的值从0 到 length - 1 然后利用二分的思想结合双指正来减小时间复杂度package LeetCodePractice...
2019-02-11 18:38:02
150
原创 理解Linux内存的工作原理
踏踏实实积累,不要浮躁内存是操作系统最核心的功能之一,内存主要用来存储系统和应用程序的指令,数据,缓存等1:内存映射物理内存:我们通常所说的8G内存指的是物理内存,也被称为主存大多数计算机的主存都是动态随机访问内存(DRAM)内核才能直接访问物理内存,进程访问内存是通过虚拟内存空间访问的。虚拟内存:Linux内核为每个进程都提供了一个独立的虚拟地址空间,这个空间是连续的,为了方便进...
2019-02-05 20:46:20
652
原创 理解Linux软中断
踏踏实实积累,不要浮躁1:理解中断Linux中断是操作系统的自我保护机制,可以保证硬件的交互过程不被意外打断,所以短时间内的中断是正常的。 2:为什么要有中断中断其实是一种异步的事件处理机制,可以提高系统的并发能力。比如你订了一份外卖,不确定外卖啥时候能送到,为了确保外卖不丢你必须得一直处于等待状态。但是如果你跟外卖员约定好外卖送到后给你打电话,你接到电话之后停止手中的事情...
2019-02-05 14:37:54
3494
原创 Sql中的offset 用法
踏踏实实积累,不要浮躁 今天刷LeetCode上的数据库题目 176 https://leetcode-cn.com/problems/second-highest-salary/题目要求是 : 找出表中 第二高的薪水select IFNULL(( select distinict salary desc limit 1 offset 1 ) ,NULL) as Secon...
2019-01-30 22:51:00
23197
1
原创 二次排序,Spark,Hadoop实现
踏踏实实积累,不能浮躁!!! 3 52 82 41 71 5需求:先根据上述数据中的第一列进行排序,第一列相等的根据第二列进行排序最后效果如下3 52 82 41 71 5原理:根据自定义的key来实现二次排序 其实不难 下面是Spark代码的实现逻辑供大家参考1:自定义keypackage cn.spark.java.sparkcore;im...
2019-01-27 22:03:21
144
原创 BST二叉查找树
踏踏实实积累,不要浮躁!!!思想:利用二叉树来存储散列表中的值,提供高效的put get 操作说明:下面的代码只是帮助理解散列表的工作原理,工程上一般都是用红黑树来实现平衡的二叉排序树put 操作内部利用的是get 操作,如果能查找到则更新该节点的value值,如果没有找到根据大小关系在下面插入该节点package search;import edu.princeton.cs...
2019-01-27 19:29:34
196
原创 堆排序heapSort
踏踏实实积累,不要浮躁,在学习上是糊弄不过去的!!大根堆定义:父节点都大于等于它的子节点(递归定义下去)堆排序思想: 本质上还是在数组上的比较和交换操作流程如下:1:构造大根堆从下往上构造只需要扫描一半的元素因为n/2 -> n这段区间内的元素是叶子节点不会参与2:排序,将堆顶元素跟数组中最后一个元素交换然后再进行sink()操作调整堆package sort;im...
2019-01-27 17:42:36
138
原创 优先队列
踏踏实实积累,不要浮躁(1):适用场景许多应用程序都需要处理有序的元素,但不一定要求他们全部有序,或者是不一定要一次将他们排序。很多情况下我们会收集一些元素,处理当前键值的最大值,然后再收集更多的元素再处理当前键值的最大元素在任务调度中很适用,还有在图的搜索算法和一些数据压缩算法都能用到优先队列(2):思想利用数组来存放元素(下标0位置不存放元素),k,2k,2k+1分别是完全二叉树中...
2019-01-27 11:36:34
164
原创 快速排序
踏踏实实积累,不要浮躁 (1):快排应该是工程上使用最多的一种算法了,时间复杂度O(nlogn) 不稳定,原地的排序算法思想:利用递归依次找到数组最后一个元素在排序后的位置,package sort;import edu.princeton.cs.algs4.StdRandom;import tools.Util;public class quickSort { ...
2019-01-26 21:03:15
283
2
原创 mergeSort
踏踏实实积累,不要浮躁 今天介绍归并排序,时间复杂度为O(nlogn) 稳定的 算法思想:利用递的思想,分别sort左边和右边然后进行merge来合并有序数据,思想很简单代码实现还是有很多需要注意的点public static void sort(int[] arr,int low,int high){ if(high <= low){ // 注意 ...
2019-01-26 19:45:14
225
原创 插入排序和希尔排序小结
记录自己学习插入排序和希尔排序的过程督促自己养成输出内容的习惯!!!下面是两种基础的排序算法,本质上都是比较和交换 关键在于思想 (1):插入排序 public static void sort2(int[] arr){ // i 定位要插入的元素 int tmp; for(int i=1;i<arr.length;...
2019-01-26 18:08:44
153
原创 BinartSearch
算法的第一篇,记录自己学习算法过程中遇到的坑!!! public class BinarySearch { public static int rank(int key,int[] arr){ int low = 0; int high = arr.length - 1; int mid = (high - low)/2 + lo...
2019-01-23 21:45:00
293
原创 深入理解CPU上下文切换
一:为什么会出现CPU上下文切换首先LInux 是个多用户系统,支持大于cpu核数的任务在系统上运行所以不可避免的出现cpu资源竞争,竞争CPU会导致 上下文切换 二:什么是CPU上下文切换 CPU在不同的任务之前切换需要保存任务的运行资源记录:CPU得知道从哪里去加载任务,又从哪里开始运行所以需要用到CPU寄存器和程序计数器。在理解上面的基础上CPU上下文切换就是...
2018-11-28 22:45:12
4511
原创 Linux性能优化_理解平均负载
一: 理解 uptime [root@server01 ~]# uptime 21:29:15 up 5 min, 1 user, load average: 0.01, 0.11, 0.07输出结果从左往右分别代表: 系统当前时间,开机持续时间,当前登录用户数量,15分钟,5分钟以及1分钟的平均负载 二:理解 平均负载平均负载:平均活跃进程数,通俗的理解就是:系统处...
2018-11-28 22:07:13
281
原创 Tez0.9.1安装
背景: 线上Hql性能不能满足客户需求,所以调研hive on Tez的效果 如下 是安装教程1: 从官网下载 apache-tez-0.9.1-bin.tar.gz 免得自己重新编译2: 在HDFS上新建文件夹将解压之后的tez/share/tez.tar.gz 上传到新建的文件夹中(1)hadoop fs -mkdir /usr/tez (2) hadoop fs...
2018-11-25 13:09:43
726
原创 Oozie4.3.1编译教程
Oozie4.2.0 解压之后的源码只有十几兆,但是依赖很多Jar, 1:将pom.xml中的 镜像注释掉 2:编译生成Java doc报错[INFO] The goal 'org.apache.maven.plugins:maven-javadoc-plugin:2.7:javadoc' has not be previously called for the pr...
2018-10-14 15:55:40
1568
转载 Hue编译安装教程
参考大神的操作,自己搞到两点多都没解决依赖。膜拜大神 https://blog.youkuaiyun.com/lsshlsw/article/details/47865601 出现 IOError: [Errno 13] Permission denied: '/home/apps/hue-3.9.0/logs/supervisor.log'是因为没有写日志的权限https...
2018-10-14 00:51:05
522
原创 String和StringBuffer StringBuilder源码分析
字符串是由若干字符线性排列组成的,在java中是用字符数组实现的。java中定义了String StringBufer StringBuilder三个类来封装字符,下来我通过源码来分析他们的特点, 1:String源码分析以上是String主要源码,有几个点 1:final关键字,表明String不可继承2:private final char value[...
2018-10-10 21:14:42
127
转载 修改 Anaconda 下 Jupyter默认路径
参考下面大佬的解决办法https://blog.youkuaiyun.com/weixin_36292173/article/details/76209839
2018-10-10 20:01:35
157
原创 Java静态绑定&动态绑定
1:理解Java中方法调用的过程1)编译器查看对象的生命类型和方法名,假设调用 x.f(param),且隐式参数 x 生命为 C类的对象,因为可能存在多个方法名为 f 的方法 eg:f(int) , f(double) 编译器会列举出 C 类中名为 f 的方法和其父类中访问属性为 public 且名为 f 的方法(因为父类的私有方法不可访问) 2)重载解析:编译器根据 方法的参数类型 ...
2018-09-27 22:25:48
175
原创 从数组中随机取若干个不重复的数
要求:从 0 ~ 100 中随机取出十个不重复的 数思路:1: 利用数组,通过Math.random()*(arr.length -1) 然后将取到的数跟数组最后一个元素交换,将数组长度减一下面代码中设计到 判断数组中是不是有重复元素 我的想法如下,如有错误还望大佬指正1:如果数据量不大利用 HashSet的去重效果,将数组中的元素循环放入 Set之后判断set.size 和 ...
2018-09-24 18:09:36
5218
原创 Arrays 工具类中 源码解析
1:Arrays.sort() 数组排序 sort() 分为两种 对于对象的排序,稳定性很重要。比如成绩单,一开始可能是按人员的学号顺序排好了的,现在让我们用成绩排,那么你应该保证,本来张三在李四前面,即使他们成绩相同,张三不能跑到李四的后面去。 而快速排序是不稳定的,而且最坏情况下的时间复杂度是O(n^2)。 另外,对象数组中保存的只是对象的引用,这样多次移位并不...
2018-09-24 15:36:40
156
原创 shell小结
1:shell中for循环形式一:for varible1 in {1..5} do echo "Hello, Welcome $varible1 times " done eg:任务是通过创建Hive外部表来处理hdfs上的数据,我的思路是先遍历Hdfs上指定文件夹下的文件,然后add parition到指定hive表中。/cluster/hadoop/bin/hadoop f...
2018-07-07 22:00:45
929
1
原创 Hive函数总结
写在前面: 自己用hive已经两个多月了,写hql来完成需求。下面是我的一些心得Hive类型 hive基本类型这里不介绍,很基本。除了基本类型还有array,map,struct类型其中在工作中array和map使用的还是比较多的。下面举例介绍和说明.。Hive函数: 在hive命令行中输入 show functions可以看到hive内置的所有函数,当然你也可以自定义函数这个在...
2018-07-03 23:37:55
263
原创 Linux运维命令之 jstack,jmap,jstat
工作中遇到jar包跑起来一直卡着不动的情况就用得上。1:jstack1.1 :能得到运行java程序的java stack和native stack的信息,可以看到线程的运行情况。比如线程为什么一直卡在某个地方不动,能帮助排除问题1.2:用法 jstack 加上进程号jstack pid 查看进程号可以用top命令或者 ps -aux 2:jstat1.1:可以观察到classloader,co...
2018-06-26 22:28:20
1024
原创 Hadoop2.x版本构造FileSystem实例报错 no filesystem for schem:hdfs
在Hadoop1.x版本中core-site.xml配置文件中,有如下配置<property> <name>fs.hdfs.impl</name> <value>org.apache.hadoop.hdfs.DistributedFileSystem</value> <description>The F...
2018-06-26 22:00:06
559
原创 String源码分析--Java中的String为什么不能改变
什么是不可变对象:大家都知道java中String对象是不可变的,现在明确一个概念什么叫不可变对象。一个对象在创建成功之后,对象中的成员变量不可被改变,基本类型的成员值不可改变,引用类型的成员变量不能指向不可改变区分Java中对象和对象引用下面用String来举例说明String a = "abc"System.out.println(a)a = "abcABC"因为a 只是指向Strin...
2018-05-21 17:59:28
310
原创 工作总结+闲谈
解决问题总结:1:Linux常见 的环境变量配置在/root/.bash_profile文件中 echo $HBASE_HOME 如果这个路径配置的不对,在启动Hbase的时候会出现异常,其实就是没有加载到classpath2:对你工作的环境要很熟悉,数据经过rcp接到hbase之后用Mr处理通过FtpManager来发给平台库 自己平台的工具使用,得很熟悉3:工作态度要端...
2018-05-17 19:33:17
162
原创 HDFS报错--org.apache.hdfs.BlockMissingException
#问题:访问HDFS文件的时候报错org.apache.hdfs.BlockMissingException#问题分析:目前博主遇到的问题有两种一:问题分析A:存放指定块的DateNode进程都死了,客户端的请求没有响应肯定获取不到HDFS块#解决办法:首先可以在yarn的管理界面上查看集群的状况,那些Datenode节点死了。然后去对应的主机把进程起起来下面是博主自己的本机的环境,供参考B:遇到...
2018-05-04 21:39:56
8844
原创 Shell脚本中的坑---dos2unix命令
今天工作中遇到坑:读取文件中的一行内容,截取成字符串,出现字符串乱码#脚本#文件格式#脚本运行结果如下所示#问题:每一行最后一个字母个数都比实际多一个#原因:其实是因为table.txt的格式是dos的,将文件下载到windos平台用notepad打开可以看到,每一行后面都跟了换行符#解决办法 dos2unix table.txt可以解决问题...
2018-05-04 19:42:54
8206
原创 String和StringBuffer StringBuilder源码分析
字符串是由若干字符线性排列组成的,在java中是用字符数组实现的。java中定义了String StringBufer StringBuilder三个类来封装字符,下来我通过源码来分析他们的特点,1:String源码分析以上是String主要源码,有几个点1:final关键字,表明String不可继承2:private final char value[]
2017-08-03 08:59:43
401
原创 单例模式分析
饿汉式:原理:1:私有化构造方法 2:创建静态的实例化对象 3:创建静态的public 方法,其他类可以来调用public class student{ private student(){}; //私有化构造方法private static student stu=new student();public static student getInstan
2017-08-01 09:03:09
235
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人