LSM树

LSM树 - Log Structured Merge Tree,LSM树并不是一个严格意义上的树状数据结构。目前HBase、LevelDB、RocksDB等 NoSql存储都基于LSM树做的。

Read More

redis集群方案

单机版redis容量有限,且能支持的qps也有限。为了应对大量数据,需要提供集群版的redis方案

Read More

B站面经

一面: 自我介绍,自我介绍后简单问了下项目。 a. 用过哪些组件,我回答mysql redis kafka这些。然后问了一下redis的使用场景。

Read More

Kafka学习-producer

  1. client会把消息封装成ProducerRecord 成员变量是 private final String topic; private final Integer partition; private final Headers headers; private final K key; private final V value; private final Long timestamp;
Read More

mysql的意向锁

innodb支持多粒度锁,允许行级锁和表级锁共存,意向锁是一种表锁,并且不与行级锁冲突。

Read More

rpc泛化调用

泛化调用指调用方在没有服务方提供的api(sdk)的情况下,对服务方进行调用。

Read More

graphQL

GraphQL是一种描述请求数据方法的语法,通常用于客户端从服务端加载数据,graphQL有三个主要特征

Read More

select poll epoll

select poll epoll都属于IO多路复用,其优势就是单个process可以同时处理多个网络连接的IO,其基本原理原理是process会不断地轮询其负责的所有socket,当某个socket有数据到达时,就通知用户进程。select/epoll/poll的优势是能处理更多的连接。

Read More

RocketMq

RocketMq分为四个组件: NameServer \ Broker \ Producer \ Consumer

Read More

guava了解

guava是Google退出的一个工具类依赖,提供了很多增强的功能

Read More

图数据库

很多数据都是图状的数据,比如用户信息、用户关系,内容(视频、文章等),用户和内容之间的联系等等,这些数据以及之间的关系关联在一起,就是图状数据。

Read More

ZGC垃圾回收

ZGC是JDK 11引入的新的垃圾回收机制,宣称能hold住TB级别的heap,暂停时间在10ms下,并且吞吐量最多下降15%。

Read More

Netty小记

Netty是由JBOSS提供的一个java网络框架,是对jdk nio的封装。有时候需要自定义协议,netty就必不可少了,可以用netty对协议进行高度的定制化.

Read More

Service Mesh

现有的微服务架构存在着很多不足 Service Mesh可以被称为微服务领域的TCP协议, 使用代理模式,将分布式服务的通信抽象成单独一层, 在这层中实现了负载均衡、服务发现、流量控制、trace等功能,作为一个和服务对等的agnet服务,和服务部署在一起,通过agent之间的通信 完成服务之间的通信需求。

Read More

Service Mesh

现有的微服务架构存在着很多不足 Service Mesh可以被称为微服务领域的TCP协议, 使用代理模式,将分布式服务的通信抽象成单独一层, 在这层中实现了负载均衡、服务发现、流量控制、trace等功能,作为一个和服务对等的agnet服务,和服务部署在一起,通过agent之间的通信 完成服务之间的通信需求。

Read More

jvm堆外内存

堆外内存又被称为直接内存,不归属于jvm管理,操作系统直接管理。堆外内存相对于堆内内存来说,优点是 减少了垃圾回收的工作,加快了复制的速度。 但是堆外内存难以控制,可能发生内存泄露。堆外内存只有等full gc才能回收

Read More

sed 使用

sed 是一种在线编辑器 主要用来编辑一个或者多个文件,简化对文件的反复操作

Read More

Git Flow

Git-Flow是 git的扩展,有效地把标准的git命令组合在一起,规范化git的使用

Read More

ElasticSearch 小记

目前线上和测试环境使用的是 6.3.1 版本, 最新版是7+, 明显的改动应该是版本7去掉了type的概念, 版本6里一个index只能有一个type。

Read More

HBase 入门

HBase是 高可靠、高性能、面向列、可伸缩的分布式数据库,属于BigTable的开源实现,主要用来存储非结果化和半结构化的松散数据。 HBase是Key-Value型

Read More

QUIC 协议

QUIC协议基于UDP实现,可以视作基于UDP实现的TCP。全称是 Quick UDP Internet Connections

Read More

CDN

用户访问未使用CDN缓存网站的过程是

Read More

TiDB初学

TiDB是PingCAP公司设计的开源的分布式数据库,兼容MySQL协议,支持水平扩展、具备强一致性和高可用性。

Read More

Docker 网络模式

  1. bridge模式 docker默认的模式,这种模式下,docker容器默认使用安装docker时创建的网卡docker0,和宿主机不在同一网段,不能和宿主机的网段通信。每一个容器都有 Network Namespace,都有自己的IP。 一个宿主机上所有的容器都通过docker0这个网卡连在一个二层网络里。
Read More

BM算法

BM算法和KMP算法同样都是一种字符串匹配算法,全称是 Boyer-Moore算法, 由Robert S.Boyer和 J Strother Moore提出, 比KMP算法效率高因此更常用,貌似很多文本编辑器的查找功能都是基于BM算法做的。其时间复杂度最坏是O(m*n) 最好是O(n/m)

Read More

KMP 算法

KMP算法 经常忘记它的内涵,在这里记录一下 希望能记住

Read More

git的cherry-pick

git的cherry-pick命令,可以理解为挑选提交的意思, 可以获取一个分支的单此提交,作为一个新的提交合并到当前分支上。

Read More

Jaeger

Jaeger是Uber推出的一款链路追踪系统,基于Opentracing,类似于Zipkin。

Read More

Redis Cluster 小记

Redis Cluster 中,每个节点都是有若干slave的,每个节点之间都是两两通信的,所以每个节点需要两个TCP端口,一个用于相应client端的交互, 另一个用户节点之间通信,两个端口的差值默认为10000。节点之间的连接用于宕机检测等。

Read More

arthas入门

Arthas是阿里的一款开源的JVM的监控分析工具。可以通过jar包或者直接脚本运行。读音类似阿尔萨斯?

Read More

BTrace

BTrace可以通过编写脚本的方式,在不用重启JVM的情况下,获取程序执行中的信息。可以有效帮助线上排查问题。

Read More

HTTP2 协议

目前HTTP协议大部分是1.1版本,2版本在逐渐推广。HTTP2 引入了一个二进制分帧层,所以无法与http 1.1的server/client兼容,所以升到了版本2.

Read More

一次服务假死

服务假死 通过ip+port无法访问。通过 jmap -heap pid 和 jstat -gcutil pid 发现内存占用率并不高 gc次数也比较正常。 通过在网上搜索, 用 lsof命令发现该端口有大量CLOSE_WAIT状态的连接。用 jstack -l pid 打印出线程的堆栈信息。直接打印出的 信息比较难以分析。暂时找到 https://gceasy.io/same-state-threads.jsp 这个网站,分析发现线程数很多达到了800+,大部分的 线程都在 WAITING,很多都是卡在 HealthIndicatorBeansComposite$ReactiveHealthIndicators 这里。reactive模式的代码真是 太难看懂了,只能先猜测是 RedisHealthIndicator卡住了,访问 /actuator/health确实卡死。猜测是 Actuator的健康检查出错。 然后屏蔽调 RedisHealthIndicator的逻辑,/actuator/health正常返回。 总结一下就是 服务卡死先看 内存和GC的情况,jmap -heap 查看是否属于内存泄露的问题。还需要检查服务端口的连接是否正常,会不会有大量的 CLOSE_WAIT和TIME_WAIT状态的连接,CLOSE_WAIT是被动关闭方的状态,TIME_WAIT是主动关闭方的状态。这种状态比较多一般是 大部分线程卡死了, jstack -l 看一下,很有可能是线程都 wait了。

Read More

Spring 事务

在一个类或者方法上使用@Transactional注解,开启@EnableTransactionManagement注解即可启动事务。 默认情况下如果发生了unchecked异常,将会触发rollback;如果发生的是checked异常,被try catch包住将不会触发rollback。 @Transaction只能配置到 public级别的方法上 如果配置到其他可见度上将不会生效。

Read More

mysql并行复制

mysql的主从同步是 从库一个IO线程一个sql线程,IO线程从主库的binlog读信息,sql线程执行。 主和从之间是可能存在着复制延迟的,这样主和从的数据就是不一致的。

Read More

elk小记

ELK是 Elasticsearch Logstash Kibana的简称 ELK可以结合成大规模的分布式日志系统。 Elasticsearch是搜索引擎,Logstash是日志的收集过滤转发中间件,Kibana是可视化工具。 ELK查日志比直接查日志有一定的优势, 一个是多实例的日志查起来很不方便,一个是ES有搜索的优势。

Read More

vim小记

vim是一个很强大的工具, 不过我对它的了解还是太少了….

Read More

awk小记

awk是Linux下的一个比较有用的工具,但是也比较难学。对于处理日志等每行格式相同的文本文件,非常方便和强大。

Read More

zipkin

zipkin是Twitter推出的一种分布式链路追踪工具,是对Dapper的一种实现,单个请求被称为span,整个链路被称为trace。

Read More

TOS简单研究

OSS (Object Storage Service) 对象存储,可以提供图片、文档、音视频等二进制的海量存储功能。TOS就是一个例子。

Read More

Service Mesh

中文名是服务网格,作用于TCP/IP层之上,微服务之下,在微服务之间,负责服务之间的网络调用、限流、熔断和监控的基础设施层。 Service Mesh通常是一系列轻量的proxy组成,对业务透明。

Read More

lsof命令

在Linux系统中,任何事物都是文件,网络连接和硬件也被当做硬件。lsof命令是一个系统级的监控、诊断工具。 lsof文件可以查看

Read More

ETCD

ETCD是一个分布式的Key-Value存储,用来可靠而快速保存关键数据并提供访问。ETCD集群是为了高可用、持久化数据存储和检索,ETCD常用来做 分布式的配置中心。

Read More

Redis Cluster

Redis-Cluster架构中,总共有16384个slot,每个master都分得一部分slot,算法为 clot = crc16(key) % 16384,这样找到对应的slot。 cluster至少要3主3从。正常情况下每个哈希槽只由一个主节点处理,每个主节点都有1-n个slave,当主节点down调,slave可以选举成新的主节点

Read More

Mysql分页查询优化

其实就是Mysql中常见的 select … from … where … order by … limit ..,.. InnoDb中的原理是先查出 offset + limit条数据,再抛弃offset条数据,如果offset过大,sql的效率会很低。

Read More

thrift笔记

thrfit是Fackbook于2007年提出的一种RPC框架,可以跨语言,提供了多语言的编译功能和多服务器工作模式, 通过IDL(接口定义语言)来描述接口函数和数据类型,然后通过Thrift的编译环境生成各语言的接口文件。

Read More

Dapper笔记

Dapper是Google提出的生产环境下的分布式链路追踪系统,对一个分布式链路追踪系统有以下的需求:

Read More

唯一ID

很多情况下需要生成UUID,通常情况下一个UUID是128位, Java就有官方的util UUID。通过UUID.randomUUID()可以获得一个随机的UUID。

Read More

Raft协议学习

上周分享Eureka的时候,对集群的理解很少,集群之间如何保持一致性等等其实都不怎么理解,肖大佬给了一个网站 http://thesecretlivesofdata.com/raft/ 让我 看一下Raft协议,对分布式协调的协议有一定了解吧,,,

Read More

TimSort算法

TimSort使用了”run“的概念,一个run是数组中单调上升或者严格单调下降的连续子数组。

Read More

SimpleDateFormat线程不安全问题

Date转String时经常使用SimpleDateFormat这个类,但是这个类并不是线程安全的,在该类的format方法中, 会对一个calendar成员变量setTime,然后再根据这个calendar拼字符串,这一过程不是线程安全的,多线程环境下 可能造成错误的输出。

Read More

Redis分布式锁

redis是一种常用的实现分布式锁的方式,最简单的方式是setnx的方式,成功就加锁。 但是这种方式也有不少问题,比如没有不是可重入的,或者解锁的时候解错锁等等问题,或者redis一主一从, 主从同步时主挂掉,但是lock的key还没有迁移,这时锁就丢了。因此对于锁要求程度比较高的时候不能简单用这种方式

Read More

并查集

并查集就是有“合并集合”与“查找集合”两种操作的一种数据结构。比如求解“朋友圈”问题:两个人如果是朋友或者间接朋友, 则认为这两个人属于一个朋友圈,现在求有多少朋友圈。

Read More

Logback小bug解决

发现logback的配置文件失效了,生成不了日志文件。google一番发现是因为项目引入的jar包里有logback.xml,其优先级高于 logback-spring.xml,导致项目的logback配置失效。然后在pom.xml里exclude即可。 先是把logback-spring.xml改名成logback.xml,发现配置重新生效,但是好像logback-spring.xml是鼓励的命名,于是还是继续确定问题, 用maven的命令:mvn dependency:tree 查项目的依赖,再搜logback,发现一个依赖引入了com.bytedance.logback…的jar包。 在idea的extrenal libraries里找到了这个依赖,发现里面确实存在logback.xml。于是在pom里excluede,发现配置重新生效,问题解决。

Read More

CountDownLatch使用

CountDownLatch是一种常用的同步工具类,属于java.util.concurrent包下,作用是使一个线程等待其他线程完成工作后再往下执行, 例如主线程使用了线程池处理N个任务,等待这N个任务执行完再往下执行就可以用CountDownLatch。

Read More

Java的variable hiding

Java的多态在变量上是不体现的,引用变量时,只根据声明的类型绑定变量而不是根据实例。 当子类和父类有同名变量时,子类的变量将会 hide 父类的变量。

Read More

aqs小记

AbstractQueuedSynchronizer是Java中许多同步类的底层实现原理。ReentranLocl、CyclicBarrier、Semaphore、CountdownLatch等都是基于aqs实现的。 这个是一种模板模式的实现。使用的时候一般是先声明一个内部类继承aqs,然后实现tryRelease()和tryRequire()方法(独占锁方式), 或者tryReleaShared()和tryAcquireShared()(共享方式)内部通过getState和setState对aqs的state进行操作,实现同步控制。

Read More

Kafka启动命令

首先要启动zookeeper,然后启动kafka: cd到bin文件夹下,./kafka-server-start.sh ../config/server.properties

Read More

Redis踩坑记

今天突然发现Redis外网连不上了,整了好久才弄好,原因是6379端口没有被iptables开放,,有点坑。 用iptables命令开放6379端口即可。

Read More

Subset

给定一个集合,求出这个集合的所有子集,该子集不包含重复元素

Read More

拼多多面经

面拼多多的时候是2轮技术+1轮hr,我第一面居然是先面hr了,而且这一面的时间最长,,,感觉可能说的不是很好。。 二面是时候比较尴尬,面试官手上有当时在线笔试的资料,我有一道题是显示3分钟就做出来了,他估计知道不可能,就一直问我细节,我很仓促地应对,最后他说, 你不可能3分钟就做出来啊,我只能说互相帮助了。然后估计当时就应该凉了。 问了我Java里泛型的原理,没研究过。。。然后wait和notify的用法,这个回答了,说必须用synchronized(obj)。又问synchronized的原理,简单说了说。 然后是一道简单的算法,层次遍历二叉树。然后是B+树什么的。

Read More

搜狐面经

这次总算没有一面就挂了。。 一面的面试官感觉比我要小,然后问的也都比较基础,问了一些计网的东西,比如NAT、ARP,TCP和UDP区别。然后解释Restful,写线程安全的单例模式,等等。

Read More

JVM监控命令

  1. jstat 命令 – jstat [options] VMID [interval] [count] options有class、gc、gcutil gc可以看到young区和old区的内存占用情况,以及gc次数。
Read More

360一面挂经

8月23号面的360,通知是一天走完所有面试流程,结果一面就挂。。。 第一批面试的,面试官只问项目,先问实验室的,又问实习的项目。

  1. Spring中AOP和IOC解释,以及涉及哪些设计模式。
  2. MyBatis有什么优点,就是为什么用MyBatis,以及系统中MyBatis一般会有哪些参数设置(IP,端口这些),感觉这块答得不好,好久没有用过MyBatis了。后来我的理解是MyBatis把数据库交互和 业务代码分开了,降低了耦合。并且有动态sql。
  3. MySql有什么优点,项目里为什么用MySql而不用其他数据库,我说MySql适合项目的场景啊,他说我不这么认为,es和mongo更适合。现在想当时应该说项目已有的框架就是MySql,就直接复用了。
  4. JVM解释,面试官的意思是必须实际项目里调过优,用过jstat和jmap这些命令。还有如果发现一个java进程的CPU占用和内存占用很高,怎么排查问题。
  5. 因为我说过有道的爬虫解析用了MapReduce,面试官就问我Hadoop了解哪些,只能说不了解。。。
Read More

腾讯一面挂经

校招还没有投腾讯呢,但是因为之前实习的时候投过腾讯,不知道怎么搞的把我捞起来了。 一面是视频面,面试官先让写了一个算法题,求二叉树中两个节点的最近祖先节点。这个是比较经典的题目, 当时想了一会没想出来,还是偷偷用手机查的。。。写出来之后面试官让解释思路,我就磕磕巴巴地说了一通。 然后让我解释TCP三次握手和四次挥手,以及TIME_WAIT的状态出现在什么阶段,TIME_WAIT这个状态有什么作用,答错了,我说成是服务器等到最后一个ack时的状态, 其实应该是客户端发送完最后一个ack后进入的状态。就是是主动断开连接的一方进入TIME_WAIT状态,等待两个MSL时间,进入CLOSED状态。 TIME_WAIT状态存在的意义有两点:

  1. 如果直接进入CLOSED状态,那么如果server没有收到ACK,就无法重传了,协议就不可靠了。
  2. 如果直接CLOSED,然后client又向server发起一个新连接,可靠老数据会和新数据混淆。
Read More

HTTPS学习

面试的时候经常会被问到HTTPS,然后我只能答出https是加密的,就是在http和tcp之间加了层SSL/TSL。 但是面试官一般会再问原理,还有了解哪些加密的算法,只能说不会了。现在只好赶紧临时抱佛脚了。

Read More

Java 动态代理

Spring中的AOP的基础就是动态代理,动态代理也是代理模式的一种实现。 Java中动态代理的实现分为两种:JDK的动态代理和cglib的动态代理。

Read More

2018-08-02 B树 B+树

B树是一种多路平衡查找树,一个m阶的B树的性质如下:

  1. 每一个节点至多有m个孩子
  2. 根节点的孩子数量最小为2,其余节点的孩子数量最小为 m/2 (向上取整)
  3. 节点中关键字的数量为 m/2 - 1 至 m - 1
  4. 所有叶子节点都在同一层
Read More

2018-07-27 MySql锁

从锁的粒度MySql分为行锁、表锁和页锁。 表锁的开销小,但是粒度大,并发冲突的概率大。行锁则相反 MyISAM引擎只支持表锁,InnoDB则可以支持行锁和页锁。 MyISAM引擎是表级锁,在执行select语句时,会自动给涉及的表加上读锁;在执行update/delete/insert语句时,会自>动给涉及的表加上写锁。 而InnoDB在做行锁的时候,锁住的是索引中的索引项,因此不走索引的话InnoDB执行的是表锁,这一点很重要。 并且如果两条记录对应同一个索引项,是会冲突的。

Read More

2018-05-19 面试完美世界

一面问的比较多,先让讲了讲SpringMVC和Spring的上下文的关系。然后问线程池,让写Worker类的大致逻辑。 还有InnoDB和MyISAM的区别

Read More

2018-04-08 面试搜狐汽车部门的经历

一面比较简单。 二面的时候面试官问了我一个HashMap的问题,问我HashMap扩容有没有上限,我说有,他又问到上限了会怎么样。我说会抛异常吧。。。 说完他好像都想笑了,当时确实懵了。还问了HashMap扩容的同时如果put东西会怎么样,答得也不好。感觉源码还是读的不够。 然后他问了几个网络的问题,答得都不是很好。让我解释TCP拥塞控制的过程,答得磕磕绊绊,他说你是不是记不清了,我说是。 印象比较深的大概就这些吧,其他的都很普通的问题,多线程什么的也没有问。感觉那个HashMap的问题确实很不应该答错。可能又凉了一个,捉急。

Read More

2018-03-30 面试粉笔网的经历

一面的时候先让写了堆排序,然后让简单地解释了一下。然后问一些大众的问题,三次握手、JVM数据库索引之类的、浏览器上输入url经历的过程等等。 最后让我写一个线程安全的生产者消费者的模式。写的不好,感觉多线程这块理解得还是很不好。 简历上写了Redis,结果被问了好多Redis的问题。 Redis的持久化,比如Redis的持久化方式,没有答上来。回来之后才查出来是AOF和RDB。RDB是快照式的持久化。 AOF是记录操作,恢复数据的时候把指令再执行一遍即可。 还有Redis的跳表怎么用,回答不知道。还有一个题是生产者消费者模式,保证线程安全的情况。我答得也不好。 三面的时候让我说synchronized的底层实现,没有说上来,又问了几个简单的问题,让我写了一个不太难的算法,但是写的也不太好。 还有一个问题是wait和notify的写法,我写的是 if (…),但是好像应该是while (…)。最后是凉了。

Read More

2018-03-27 LCA问题

二叉树最近公共祖先问题:一棵树根节点root,两个节点u和v,求最近公共祖先问题 如果是二叉搜索树:则如果root在u和v之间,则返回root;如果root比u和v都大,则取root的左子树找 样例代码如下

Read More

2018-03-11- TCP三次握手 四次挥手

三次握手: 一些标识位: 1.SYN:建立连接。如果SYN=1而ACK=0则表示这是一个连接请求。如果SYN=1而ACK=1则表示同意连接 2.ACK:响应 3.FIN:关闭连接。

Read More

2018-03-11- MySql 锁

MySql大致分为一下三种锁: 1.表级锁:开销小,并发度低 2.行级锁:开销大,并发度高 3.页级锁:介于表级和行级之间

Read More

2017-11-02-Java..

  1. Java里子类override父类的方法时不能缩小父类方法的可见性
  2. interface的可见性是public和default。
Read More

2017-09-04-线程池

  1. Executor是接口,有execute方法,参数是Runnable。
  2. ExecutorService也是接口,继承了Executor接口,一个Executor有三种生命周期:运行、关闭和终止 Executor的shutdown方法不会阻塞,线程池会继续运行直到所有任务执行完
  3. Executors类:提供一系列工厂方法用于创建线程池:如newFixedThreadPool(int threads), newCachedThreadPool(), newSingleThreadExecutor(), newScheduledThreadPool(int corePoolSize).
  4. ThreadPoolExecutor是类,有很多参数,构建定制的线程池。
Read More

摩尔投票法

一个题:给定N个数,求出现次数大于N/2的数字,要求时间复杂度为O(N),空间复杂度为O(1)。

Read More

MySql 执行计划

在sql语句前加上 explain。得到的信息有10行:id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra。

Read More

Lambda表达式

Lambda表达式是Java 8中引入的,为Java添加了缺失的函数式编程特点。 Lambda表达式是一种匿名函数,通常用 >(argument) -> (body)语法书写。

Read More

Trie树

Trie树,即字典树,又称单词查找树或键树,是一种树形结构。典型应用是用于统计和排序大量的字符串(但不仅限于字符串),所以经常被搜索引擎系统用于文本词频统计。它的优点是最大限度地减少无谓的字符串比较,查询效率比较高。

Read More

2017-06-13 Java并发学习-ThreadLocal

ThreadLocal提供了线程本地变量,可以保证访问到的变量属于当前线程,每个线程都保存一个变量的副本。当工作于多线程的对象使用ThreadLocal维护变量时,ThreadLocal为每个使用该变量的线程提供一个这个变量的副本。因此每个线程都可以独立使用自己的变量, 而不用管其他线程。 ThreadLocal对外提供了4个方法, 他们的作用如下:

Read More

2017-05-31 Java字符串

Java里字符串存在于两个地方:字符串常量池和堆中。 如果 String str = “Hello” 则str在常量池中。如果 String str = new String(“Hello, world”),那么str在堆中,但是常量池里也会创建”Hello,world”。

Read More

2017-05-17 Java并发编程学习1

synchronized关键字可以修饰变量、方法和代码块块。synchronized是互斥锁,至多有一个线程可以拥有它。 当一个线程访问object的一个synchronized(this)代码块时,另一个线程仍然可以访问该object的其他非synchronized(this)代码块。 而当一个线程访问object的一个synchronized(this)代码块时,其他线程对该object的所有synchronized(this)代码块的访问均将被阻塞。因为这个线程获得了这个object的对象锁。 当synchronized修饰static方法时,第一个访问这个方法的线程获得的是这个类的Class锁

Read More

2017-04-29 编程题-不等式数列

度度熊最近对全排列特别感兴趣,对于1到n的一个排列, 度度熊发现可以在中间根据大小关系插入合适的大于和小于符号(即 ‘>’ 和 ‘<’ )使其成为一个合法的不等式数列。 但是现在度度熊手中只有k个小于符号即(‘<’‘)和n-k-1个大于符号(即’>’), 度度熊想知道对于1至n任意的排列中有多少个排列可以使用这些符号使其为合法的不等式数列。

Read More

2017-04-16 编程题-通过考试

小明同学要参加一场考试,考试一共有n道题目,小明必须做对至少60%的题目才能通过考试。考试结束后,小明估算出每题做对的概率,p1,p2,…,pn。你能帮他算出他通过考试的概率吗?

Read More

RESTful的一些学习

REST - Representational State Transfer 将网络所有信息/服务看成资源。 对资源的操作用HTTP协议提供的GET、POST、PUT、DELTE方法进行。 —- 一些定义:

  1. 直观简短的资源地址:Url
  2. 传输的资源:JSON、xml等
  3. 使用标准方法(GET、POST、PUT、DELTTE等)
Read More

LeetCode-Word ladder 1

Given two words (beginWord and endWord), and a dictionary’s word list, find the length of shortest transformation sequence from beginWord to endWord, such that: Only one letter can be changed at a time Each intermediate word must exist in the word list For example,

Read More

LeetCode 题解2:Add Two Numbers

You are given two linked lists representing two non-negative numbers. The digits are stored in reverse order and each of their nodes contain a single digit. Add the two numbers and return it as a linked list.

Read More

算法题解3_栈的压入弹出序列

输入两个整数数列,第一个序列表示栈的压入顺序,判断第二个序列是否为该栈的弹出序列。假设压入栈的所有元素均不等。 如序列 1,2,3,4,5是压入序列,则4,5,3,2,1可以是弹出序列,但是4,3,5,1,2就不能是弹出序列

Read More

算法题解2_求连续子数组的最大和

把一个数组最开始的若干个元素搬到数组的末尾,我们称之为数组的旋转。输入一个排好序的数组的一个旋转,输出旋转数组的最小元素。例如数组{3, 4, 5, 1, 2}为{1, 2, 3, 4, 5}的一个旋转,该数组的最小值为1

Read More

算法题解1_求连续子数组的最大和

输入一个整形数组,数组里有正数也有负数。 数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。 求所有子数组的和的最大值。要求时间复杂度为O(n)。

Read More