编程
文章平均质量分 68
若即若离ing
希望可以一起交流IT心得与体会。共同进步哈!!!
展开
-
2017去哪网春招编程题详解
1: 题目描述 给定一棵二叉树的前序(根、左、右)和中序(左、根、右)的打印结果,输出此二叉树按层(从左往右)打印结果。例如一棵二叉树前序:1 2 4 5 3;中序:4 2 5 1 3。可以构建出下图所示二叉树:按层打印的结果则为:1 2 3 4 5。输入第一行只有一个数字,表示二叉树的节点数n(1第二行由a1,a2,...,an(1第三行由b1,b2,...,bn(1样原创 2017-04-03 10:24:13 · 22388 阅读 · 2 评论 -
Linux脚本攻略学习笔记14
使用awk进行高级文本处理awk 是一款设计用于数据流的工具。它颇为流行的原因在于可以对列和行进行操作。awk有很多内建的功能,比如数组,函数等,这是它和C语言的相同之处。(1)预备知识awk的脚本的结构基本如下所示:$ awk 'BEGIN{print "start"} pattern {comands} END {print "end"}' fileawk命令也可以从std原创 2017-05-29 10:24:17 · 328 阅读 · 0 评论 -
spring中bean的生命周期
1 生命周期 1.1 初始化和销毁 目标方法执行前后执行后,将进行初始化或销毁。1.1.1 目标类public class UserServiceImpl implements UserService {@Overridepublic void addUser() {System.out.println("e_lifecycle add use原创 2017-05-29 16:50:06 · 257 阅读 · 0 评论 -
2017蘑菇街编程题详解
一:现在有一张半径为r的圆桌,其中心位于(x,y),现在他想把圆桌的中心移到(x1,y1)。每次移动一步,都必须在圆桌边缘固定一个点然后将圆桌绕这个点旋转。问最少需要移动几步。输入描述:一行五个整数r,x,y,x1,y1(1≤r≤100000,-100000≤x,y,x1,y1≤100000)输出描述:输出一个整数,表示答案输入例子:2 0 0 0 4输出例子:原创 2017-05-18 20:52:15 · 647 阅读 · 0 评论 -
深入分析ConcurrentHashMap
深入分析ConcurrentHashMap转载自:http://www.infoq.com/cn/articles/ConcurrentHashMap术语定义术语英文解释哈希算法hash algorithm是一种将任意内容的输入转换成相同长度输出的加密方式,其输出被称为哈希值。 哈希表has转载 2017-05-10 16:31:53 · 191 阅读 · 0 评论 -
Leetcode 3sumcloset, 3sum, 4sum问题详解
本文转载自:http://www.cnblogs.com/TenosDoIt/p/3649607.html3Sum ClosestGiven an array S of n integers, find three integers in S such that the sum is closest to a given number, target. Return the s转载 2017-05-31 10:58:11 · 311 阅读 · 0 评论 -
编程题赏析4之微信红包
春节期间小明使用微信收到很多个红包,非常开心。在查看领取红包记录时发现,某个红包金额出现的次数超过了红包总数的一半。请帮小明找到该红包金额。写出具体算法思路和代码实现,要求算法尽可能高效。给定一个红包的金额数组gifts及它的大小n,请返回所求红包的金额。若没有金额超过总数的一半,返回0。测试样例:[1,2,3,2,2],5返回:2此题是剑指offer上的题目,其实原创 2017-05-31 11:11:28 · 464 阅读 · 0 评论 -
Linux脚本功略学习笔记15
众多处理文本命令的综合应用(1):统计特定文件中的词频统计文件中使用单词的频率是一个经常用到的任务,在这里能够应用我们业已习得的文本处理技巧。词频统计的方法有很多种。先来看一个脚本:运行结果如下:工作原理:egrep -o "\b[[:alpha:]]+\b" $filename 只用于输出单词。用-o 选项打印出由换行符分割的匹配字符序列。这样我们就可以在每行原创 2017-05-31 11:24:53 · 279 阅读 · 0 评论 -
java原子类和CAS
本文转载自:http://blog.csdn.net/jijianshuai/article/details/70853776什么是CAS CAS的全称为Compare-And-Swap,直译就是对比交换。是一条CPU的原子指令,其作用是让CPU先进行比较两个值是否相等,然后原子地更新某个位置的值,经过调查发现,其实现方式是基于硬件平台的汇编指令,就是说CAS是靠硬件实现的,转载 2017-05-31 12:49:20 · 394 阅读 · 0 评论 -
Linux中的5种I/O模型详解
转载自:http://blog.csdn.net/sinat_34990639/article/details/527785621 概念说明在进行解释之前,首先要说明几个概念:用户空间和内核空间进程切换进程的阻塞文件描述符缓存 IO1234567891234567891.1 用户空间与内核空间现在操作系统都是采用虚拟存储器,那么对32位操作系统而转载 2017-05-21 18:49:44 · 2602 阅读 · 0 评论 -
spring的事务
2 事务管理2.1 回顾事务 事务:一组业务操作ABCD,要么全部成功,要么全部不成功。 特性:ACID原子性:整体一致性:完成隔离性:并发持久性:结果 隔离问题:脏读:一个事务读到另一个事务没有提交的数据不可重复读:一个事务读到另一个事务已提交的数据(update)虚读(幻读):一个事务读到另一个事务已提交的数据(insert) 隔离级别:原创 2017-06-10 13:14:51 · 174 阅读 · 0 评论 -
判断一个32非负整数是否是4的次幂,如果是,是4的多少次幂
转载自:http://blog.csdn.net/hackbuteer1/article/details/6681216将4的幂次方写成二进制形式后,很容易就会发现有一个特点:二进制中只有一个1(1在奇数位置),并且1后面跟了偶数个0; 因此问题可以转化为判断1后面是否跟了偶数个0就可以了。 4的整数次幂的二进制数都为 (4)100、(16)10000、(64)1000转载 2017-07-23 11:09:05 · 660 阅读 · 0 评论 -
读入一个数,计算其各位数字之和,用汉语拼音写出和的每一位数字
题目是“读入一个数n,计算其各位数字之和,用汉语拼音写出和的每一位数字”,是用c语言实现的。由于我目前正在学习java,所以想用java来实现下。输入格式:每个测试输入包含1个测试用例,即给出自然数n的值。这里保证n小于10100。输出格式:在一行内输出n的各位数字之和的每一位,拼音数字间有1 空格,但一行中最后一个拼音数字后没有空格。package com.nuaa.sg原创 2017-08-01 10:22:44 · 2020 阅读 · 0 评论 -
redis实现分布式锁
转载自:https://www.cnblogs.com/linjiqin/p/8003838.html前言分布式锁一般有三种实现方式:1. 数据库乐观锁;2. 基于Redis的分布式锁;3. 基于ZooKeeper的分布式锁。本篇博客将介绍第二种方式,基于Redis实现分布式锁。虽然网上已经有各种介绍Redis分布式锁实现的博客,然而他们的实现却有着各种各样的问题,为了避免误人子弟,本篇博客将详细...转载 2018-03-17 13:28:24 · 296 阅读 · 0 评论 -
Java中Optional类的使用
从 Java 8 引入的一个很有趣的特性是 Optional 类。Optional 类主要解决的问题是臭名昭著的空指针异常(NullPointerException) —— 每个 Java 程序员都非常了解的异常。本质上,这是一个包含有可选值的包装类,这意味着 Optional 类既可以含有对象也可以为空。Optional 是 Java 实现函数式编程的强劲一步,并且帮助在范式中实现。但是 Op...转载 2018-06-21 14:50:20 · 33510 阅读 · 4 评论 -
2017阿里巴巴实习生招聘编程题
解答: 此题是动态规划类问题,假设dp[i][j]表示为为 s[0..i]与p[0...j]是否匹配,则代码如下: import java.util.Scanner;/** * 字符串匹配 * @author Dell * */public class Test4 { public static boolean isMatch(String s, St原创 2017-04-27 11:11:25 · 1340 阅读 · 0 评论 -
spring中beanfactory和applicationcontext创建bean的区别
l BeanFactory :这是一个工厂,用于生成任意bean。 采取延迟加载,第一次getBean时才会初始化Beanl ApplicationContext:是BeanFactory的子接口,功能更强大。(国际化处理、事件传递、Bean自动装配、各种不同应用层的Context实现)。当配置文件被加载,就进行对象实例化。 Clas原创 2017-05-28 14:53:34 · 1216 阅读 · 0 评论 -
编程题赏析3
小牛牛是牛牛王国的将军,为了训练出精锐的部队,他会对新兵进行训练。部队进入了n个新兵,每个新兵有一个战斗力值和潜力值,当两个新兵进行决斗时,总是战斗力值高的获胜。获胜的新兵的战斗力值就会变成对手的潜力值 + 自己的战斗力值 - 对手的战斗力值。败者将会被淘汰。若两者战斗力值一样,则会同归于尽,双双被淘汰(除了考察的那个新兵之外,其他新兵之间不会发生战斗) 。小牛牛想知道通过互相决斗之后新兵中战原创 2017-05-28 00:15:34 · 632 阅读 · 0 评论 -
Java8新特性浅析
欢迎阅读我编写的Java 8介绍。本教程将带领你一步一步地认识这门语言的新特性。通过简单明了的代码示例,你将会学习到如何使用默认接口方法,Lambda表达式,方法引用和重复注解。看完这篇教程后,你还将对最新推出的API有一定的了解,例如:流控制,函数式接口,map扩展和新的时间日期API等等。转载自:http://blog.csdn.net/chenleixing/article/detail转载 2017-04-28 18:13:52 · 587 阅读 · 0 评论 -
2017百度实习生招聘编程题
一:度度熊想去商场买一顶帽子,商场里有N顶帽子,有些帽子的价格可能相同。度度熊想买一顶价格第三便宜的帽子,问第三便宜的帽子价格是多少? 输入描述:首先输入一个正整数N(N 输出描述:如果存在第三便宜的帽子,请输出这个价格是多少,否则输出-1输入例子:1010 10 10 10 20 20 30 30 40 40输出例子:30解答:pu原创 2017-05-02 12:12:28 · 928 阅读 · 0 评论 -
select, poll,epoll详解
epoll 在Linux的网络编程中,很长的时间都在使用select来做事件触发。在linux新的内核中,有了一种替换它的机制,就是epoll。 相比于select,epoll最大的好处在于它不会随着监听fd数目的增长而降低效率。因为在内核中的select实现中,它是采用轮询来处理的,轮询的fd数目越多,自然耗时越多。 相对于select和poll来说,epoll更加灵转载 2017-05-23 21:58:37 · 287 阅读 · 0 评论 -
java:volatile关键字解析
Java并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 volatile关键字虽然从字面上理解起来比较简单,但是要用好不是一件容易的事情。由于volatile关键字是与Java转载 2017-05-12 19:57:21 · 301 阅读 · 0 评论 -
java线程池的使用
Java并发编程:线程池的使用 在前面的文章中,我们使用线程的时候就去创建一个线程,这样实现起来非常简便,但是就会有一个问题: 如果并发的线程数量很多,并且每个线程都是执行一个时间很短的任务就结束了,这样频繁创建线程就会大大降低系统的效率,因为频繁创建线程和销毁线程需要时间。 那么有没有一种办法使得线程可以复用,就是执行完一个任务,并不被销毁,而是可以继续执行其他的任务? 在Java转载 2017-04-22 20:19:31 · 509 阅读 · 0 评论 -
编程题赏析
1:牛牛想对一个数做若干次变换,直到这个数只剩下一位数字。变换的规则是:将这个数变成 所有位数上的数字的乘积。比如285经过一次变换后转化成2*8*5=80.问题是,要做多少次变换,使得这个数变成个位数。 输入描述:输入一个整数。小于等于2,000,000,000。输出描述:输出一个整数,表示变换次数。输入例子:285输出例子:原创 2017-05-24 22:23:05 · 671 阅读 · 0 评论 -
Linux shell 脚本攻略学习笔记4
xargs: 该xargs出场了,它擅长将标准输入数据转换成命令行参数。 xargs能够处理stdin并将其转换为特定命令的命令行参数。xargs也可以将单行或者多行文本输入转换为其他格式,例如单行变多行,多行变单行。 例1:将多行输入转换成单行输出。 将单行输入转换成多行输出。 指定每行最大的参数数量n,我们可以将任何来自stdin的文本划分成多行原创 2017-05-06 13:27:08 · 238 阅读 · 0 评论 -
给定数组,将所有的数按照出现的次序由大到小输出,次数相同的,按照原数组的顺序输出
import java.util.ArrayList;import java.util.Collections;import java.util.Comparator;import java.util.HashMap;import java.util.List;import java.util.Map;import java.util.Map.Entry;import java.ut原创 2017-05-15 16:29:14 · 3339 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法。 以下是本文目录大纲: 一.CountDownLatch用法 二.Cy转载 2017-05-15 17:13:13 · 305 阅读 · 0 评论 -
Linux shell 脚本学习攻略9
1:创建不可修改的文件chattr 能够将文件设置为不可修改。不过chattr能做的可不止这些。(a) 使用下列命令将一个文件设置为不可修改:# chattr +i file(b)这样文件file就变成为了不可修改状态。来试试下面的命令:# rm filerm: can not remove file:operation not permitted(c) 如果原创 2017-05-15 21:55:23 · 284 阅读 · 0 评论 -
java并发编程之阻塞队列
Java并发编程:阻塞队列 本文转载自:http://www.cnblogs.com/dolphin0520/p/3932906.html 在前面我们接触的队列都是非阻塞队列,比如PriorityQueue、LinkedList(LinkedList是双向链表,它实现了Dequeue接口)。 使用非阻塞队列的时候有一个很大问题就是:它不会对当前线程产生阻塞,那么在面对类转载 2017-05-26 10:15:11 · 240 阅读 · 0 评论 -
编程题赏析2
1:牛牛有一个数组,里面的数可能不相等,现在他想把数组变为:所有的数都相等。问是否可行。牛牛可以进行的操作是:将数组中的任意一个数改为这个数的两倍。这个操作的使用次数不限,也可以不使用,并且可以对同一个位置使用多次。输入描述:输入一个正整数N (N <= 50)接下来一行输入N个正整数,每个数均小于等于1e9.输出描述:假如经过若干次操作可以使得N原创 2017-05-26 15:19:43 · 1113 阅读 · 1 评论 -
Linux脚本攻略学习笔记12
cut命令详解原创 2017-05-26 20:09:11 · 234 阅读 · 0 评论 -
最大映射
有 n 个字符串,每个字符串都是由 A-J 的大写字符构成。现在你将每个字符映射为一个 0-9 的数字,不同字符映射为不同的数字。这样每个字符串就可以看做一个整数,唯一的要求是这些整数必须是正整数且它们的字符串不能有前导零。现在问你怎样映射字符才能使得这些字符串表示的整数之和最大?输入描述:每组测试用例仅包含一组数据,每组数据第一行为一个正整数 n , 接下来有 n 行,每行一原创 2017-05-08 22:08:22 · 325 阅读 · 0 评论 -
Spring循环依赖的解决
转载自:https://blog.csdn.net/chejinqiang/article/details/800038681. 什么是循环依赖?循环依赖其实就是循环引用,也就是两个或者两个以上的bean互相持有对方,最终形成闭环。比如A依赖于B,B依赖于C,C又依赖于A。如下图:注意,这里不是函数的循环调用,是对象的相互依赖关系。循环调用其实就是一个死循环,除非有终结条件。S...转载 2019-03-20 10:56:10 · 322 阅读 · 0 评论