面试
郝你个建强
小厂程序员,关注不迷路
展开
-
将数组中各个元素组合成一个数,输出组合结果最大的那个数
思路将int型数组转成String类型,然后进行拼接后排序如果直接字符串排序的话,会变成3,30,32这个顺序排序,逆向输出后为32303,但是这并不是最大的数,而最大的数为33230,所以需要进行拼接后在进行排序下面重写的compare方法返回负数是代表o1大于o2,比如 3拼接30是330 30拼接3后是303 , 比较后330大,所以需要返回负数,330-303为正数,所以需要取反。import java.util.Arrays;import java.util.Comp..原创 2021-04-08 23:35:24 · 4797 阅读 · 3 评论 -
java使用LinkedHashMap实现LUR算法
概述LRU是Least Recently Used的缩写,即最近最少使用算法。通俗来讲就是没被调用的往后靠,被调用的往前靠,位置不够的时候就淘汰最后一个。LinkedHashMap实现java实现可以通过重写LinkedHashMap的removeEldestEntry方法来实现淘汰机制。import java.util.LinkedHashMap;import java.util.Map;/** * @Author JQiang * @create 2021/4/6 17:原创 2021-04-06 20:16:35 · 5867 阅读 · 0 评论 -
Java并发中的锁
公平锁/非公平锁这个是在ReentrankLock中实现的,synchronized没有,是用一个队列实现的,在公平锁好理解,就是先进这个队列的,也先出队列获得资源,而非公平锁的话,则是还没有进队列之前可以与队列中的线程竞争尝试获得锁,如果获取失败,则进队列,此时也是要乖乖等前面出队才行可重入锁如果一个线程获得过该锁,可以再次获得,主要是用途就是在递归方面,还有就是防止死锁,比如在一个同步...转载 2020-03-20 14:57:29 · 192 阅读 · 0 评论 -
操作系统——分页和分段
连续分配方式会产生很多“碎片”,而紧凑方式会将碎片合成可以使用的较大空间,但是代价比较大,所以产生了散列式存储,主要有一下三种方式目录分页分段段页式分页和分段的区别分页分页式存储管理,将用户程序的地址空间分成若干个固定大小的区域,称为页或者页面,这样可以将用户程序的页放入任一物理块中,而不用担心碎片的产生。分段分段式存储是为了满足用户要求而形成的一种存储管理...原创 2019-12-08 16:42:14 · 4397 阅读 · 0 评论 -
最大公约数公式不用加号实现加法
最大公约数int gcd(int a,int b){ return a%b == 0?b:gcd(b,a%b);}最小公倍数int lcm(int a,int b){ return a*b / gcd(a,b);}不用 + 号 实现加法减法int add(int a , int b){ return b == 0 ? a:add( a^b , ...原创 2019-12-04 19:18:39 · 232 阅读 · 0 评论 -
Java并发——Synchronized和Volatile
Java并发同步机制一、Synchronized1》实现方式及原理它的使用方法有以下三种同步普通方法,锁当前实例对象(对这个类的对象操作需要获取锁) 同步静态方法,锁当前Class对象(这个类new的对象不会加锁,而调用类的静态方法需要获取锁) 同步代码块,锁代码块范围内的对象一个线程访问一个类的static synchronized方法时,其他线程可以访问该类的非stati...原创 2019-11-19 21:51:11 · 13732 阅读 · 0 评论 -
synchronized与Lock的区别联系
联系:synchronized和重入锁 ReentrantLock都有重入性:同一个线程进入一次则锁的计数器加一,当锁的计数器为0时才能释放锁区别:synchronized 是关键字,ReentrantLock是类 机制:synchronized操作mark word ,lock操作Unsafe类的park()方法。 synchronized 由编译器自动加锁释放锁,而重入锁需要用户...原创 2019-11-04 15:37:58 · 97742 阅读 · 0 评论 -
GeoHash 地图算法
之前接手了学长的一个地图项目,学长说可以把地图的经纬度用Geohash算法换成字符串,下来了解了一下Geohash算法是将二维的经纬度转换为了一维的字符串,这样相近的点字符串相似的前缀就越多,这样充分利用了数据库的B树索引,速度大大提高GeoHash的算法字符串位数越长代表精度越高,8位误差约为19M字符串的由来:1、根据经纬度计算出GeoHash的二进制编码将...原创 2019-10-28 21:23:49 · 1524 阅读 · 0 评论 -
面试必问——线程与进程的区别
总结了其他文章,给自己提供一个方便的复习途径进程:进程是程序的一次执行过程,是程序在执行过程中的分配和管理资源的基本单位,每个进程都有自己的地址空间,线程至少有 5 种状态:初始态、执行态、等待态、就绪态、终止态。线程:线程是CPU调度和分派的基本单位,它可以和同一进程下的其他线程共享全部资源联系:线程是进程中的一部分,一个进程可以有多个线程,但线程只能存在于一个进程中。...原创 2019-10-24 21:34:34 · 402 阅读 · 0 评论