自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

nwpu_geeker的博客

希望能向大牛学习!

  • 博客(17)
  • 收藏
  • 关注

原创 n&(n-1)位运算的妙用

做oj遇到一道题,求二进制中1的个数。发现有大佬用来(n&n-1)。觉得很神奇。有空下来细想。确实是这么个道理。记录一下自己的分析过程一、n-1发生了什么①、二进制数n,n-1后,如果最后一位是0,将向前一位借2,2-1=1。最后一位为1。如果前一位为0,将继续向前一位借2,加上本身少掉的1.则变为1。一直遇到1。减为0.所以 二进制 xxxx10000-1 = xxxx01...

2018-03-30 21:27:25 22215 1

原创 链家笔试题--java实现两个大整数相乘的算法

两个字符串表示两个非常大的数,请设计算法计算这两个大数的乘积,结果用字符串表示。例如S1=”7832974972840919321747983209327”,S2=”1987432091904327543957”,设计算法计算出S1*S2的结果,结果用String输出,不准用BigInter。思路: 根据手工计算两数相乘的过程,用代码实现这个过程。注意没有考虑负数的情况。代码如下:...

2018-03-29 16:39:09 2191

原创 leetcode+华为笔试题-java实现返回一个整数数组中最大子数组的和

方法一:暴力枚举 定义一个最大值max初始化一个很小的数,定义一个变量sum表示求和值,遍历数组元素,从第一个元素开始,依次相加,如果和sum比最大值max大就将sum赋值给最大值。然后再来一个循环控制从第i个数组元素开始求和,直到n. 时间复杂度:O(n^2)方式二:贪心法 因为每次求和都是将i前面的元素相加,会出现重复的情况,如果出现相加完之后是负数,说明这时我就要继续遍历找到第...

2018-03-29 10:49:45 1528 2

转载 AtomicInteger源码分析——基于CAS的乐观锁实现

1 悲观锁与乐观锁我们都知道,cpu是时分复用的,也就是把cpu的时间片,分配给不同的thread/process轮流执行,时间片与时间片之间,需要进行cpu切换,也就是会发生进程的切换。切换涉及到清空寄存器,缓存数据。然后重新加载新的thread所需数据。当一个线程被挂起时,加入到阻塞队列,在一定的时间或条件下,在通过notify(),notifyAll()唤醒回来。在某个资源不可用的时候,就将c

2018-03-28 17:29:22 780

转载 Java四种引用包括强引用,软引用,弱引用,虚引用

强引用:只要引用存在,垃圾回收器永远不会回收 Object obj = new Object(); //可直接通过obj取得对应的对象 如obj.equels(new Object()); 而这样 obj对象对后面new Object的一个强引用,只有当obj这个引用被释放之后,对象才会被释放掉,这也是我们经常所用到的编码形式。软引用:非必须引用,内存溢出之前进行回收,可以通过以...

2018-03-27 16:06:17 748

转载 数据库三大范式的理解

一: 引言       作为一个数据库的学习者,搞懂关系数据库的三大范式是很有用的。然而教科书上有关数据库范式的介绍都是采用学术性的定义,语法羞涩,让人难懂,故写下自己对数据库范式的理解,给初学者提供帮助,也备日后查看。       本文不介绍规范化程度高于3NF的范式,因为其在实际应用中基本不会用到,原因也是很明...

2018-03-26 23:01:04 3917

转载 用户态切换到内核态的3种方式

a. 系统调用 这是用户态进程主动要求切换到内核态的一种方式,用户态进程通过系统调用申请使用操作系统提供的服务程序完成工作,比如fork()实际上就是执行了一个创建新进程的系统调用。而系统调用的机制其核心还是使用了操作系统为用户特别开放的一个中断来实现,例如Linux的int 80h中断。 b. 异常 当CPU在执行运行在用户态下的程序时,发生了某些事先不可知的异常,这时会触发...

2018-03-26 16:52:51 10926

原创 剑指Offer-29-java实现查找数组中出现次数超过一半的元素

思路: 数组中有一个数字出现的次数超过数组长度的一半,也就是说它出现的次数比其他所有数字出现次数的和还要多。 因此我们可以考虑在遍历数组的时候保存两个值: 一个是数组中的一个数字, 一个是次数。当我们遍历到下一个数字的时候,如果下一个数字和我们之前保存的数字相同,则次数加1:如果下一个数字和我们之前保存的数字,不同,则次数减1 。如果减1之后,此时次数为零,我们需要保存下一个数字,并把次数设为

2018-03-26 15:58:34 1905

转载 Redis的字典渐进式扩容与ConcurrentHashMap的扩容策略比较

本文介绍Redis的字典(是种Map)与ConcurrentHashMap的扩容策略,并比较它们的优缺点。(不讨论它们的实现细节)首先Redis的字典采用的是一种‘’单线程渐进式rehash‘’,这里的单线程是指只有一个线程在扩容,而在扩容的同时其他的线程可以并发的进行读写。Redis系统后台会定时给予扩容的那个线程足够的运行时间,这样不会导致它饿死。大致过程是这样的:ht...

2018-03-26 11:21:45 2574 1

转载 MD5加密算法全解析

“MD5”加密算法全解析 大家好,我们现在来讲解关于加密方面的知识,说到加密我认为不得不提MD5,因为这是一种特殊的加密方式,它到底特殊在哪,现在我们就开始学习它全称:message-digest algorithm 5 翻译过来就是:信息 摘要 算法 5...

2018-03-26 10:50:26 1156

转载 MySQL数据库之MyISAM与InnoDB的区别

MySQL数据库之MyISAM与InnoDB的区别 从以下几个方面: 1、存储结构 每个MyISAM在磁盘上存储成三个文件。第一个文件的名字以表的名字开始,扩展名指出文件类型。 .frm文件存储表定义。 数据文件的扩展名为.MYD (MYData)。 索引文件的扩展名是.MYI (MYIndex)。2、存储空间 MyISAM:可被压缩,存储空间较小。 InnoDB:...

2018-03-26 10:38:35 797

原创 LeetCode 617. Merge Two Binary Tree (合并两个二叉树)

Given two binary trees and imagine that when you put one of them to cover the other, some nodes of the two trees are overlapped while the others are not.You need to merge them into a new binary tree...

2018-03-20 09:30:44 1018

原创 网易2017春招笔试真题编程题集合——4.消除重复元素

Question小易有一个长度为n序列,小易想移除掉里面的重复元素,但是小易想是对于每种元素保留最后出现的那个。小易遇到了困难,希望你来帮助他。 输入描述: 输入包括两行: 第一行为序列长度n(1 ≤ n ≤ 50) 第二行为n个数sequence[i](1 ≤ sequence[i] ≤ 1000),以空格分隔输出描述: 输出消除重复元素之后的序列,以空格分隔,行末无...

2018-03-18 12:50:59 1032

原创 去除排序好的数组中重复的元素

题目描述: 去除数组中重复的元素 例如 1,2,2,3,3,4,5,6,6->1,4,5实现思想: 简单来说就是。如果当前元素是第一个元素,只要比较它与后一个元素是否相等,如果不相等,直接添加到新的数组中。 如果当前元素不是第一个元素,就比较它相邻的左右两边的元素是否相等,如果不相等就添加。 详细就是: 先找到一个基准,假如是第一个元素,定义一个游标,指向第二个元素,然后遍历数组,让基准与

2018-03-18 11:34:39 1679

原创 去除数组中重复的元素

题目描述: 去除一个排好序的数组中重复出现的元素。 例如:1,2,2,3,3,4,5,6,6->1,2,3,4,5,6实现思想: 首先定义一个基准指针和一个游标指针,基准指针默认为第一个元素,游标指针默认为第二个元素。然后遍历数组,如果基准和游标所对应的数相等,则移动游标,指向下一个元素,如果不相等,则将基准指针对应的下一个元素的值赋值为游标所对应的元素,然后分别将基准指针和游标指针向后移动一

2018-03-18 10:34:16 1938

原创 实现一个int整型数字的反转

题目要求: 实现一个int整型数字的反转 例如:123->321 -123->-321public class GetOffer { public static void main(String[] args) { Scanner sc = new Scanner(System.in); int num = sc.nextInt();

2018-03-18 09:54:39 7032

原创 mysql的常用引擎

在MySQL数据库中,常用的引擎主要就是2个:Innodb和MyISAM。首先:1.简单介绍这两种引擎,以及该如何去选择。 2.这两种引擎所使用的数据结构是什么。1.a.Innodb引擎,Innodb引擎提供了对数据库ACID事务的支持。并且还提供了行级锁和外键的约束。它的设计的目标就是处理大数据容量的数据库系统。它本身实际上是基于Mysql后台的完整的系统。Mysql运行的时候...

2018-03-17 20:50:50 988

空空如也

空空如也

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

TA关注的人

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