暂时未有相关云产品技术能力~
从金融到科技,这里有女程序员的技术分享; 从纽约到北京,这里有我的程序人生。
动态规划的第二大类问题——石子问题(下)
动态规划的第二大类问题——石子问题(上)
LeetCode 第 53 场双周赛(四)
LeetCode 第 53 场双周赛(三)
LeetCode 第 53 场双周赛(二)
LeetCode 第 53 场双周赛(一)
Leetcode 周赛 243(四)
Leetcode 周赛 243(三)
Leetcode 周赛 243(二)
Leetcode 周赛 243(一)
Leetcode周赛 240(上)
Leetcode周赛 240(下)
LeetCode 第 51 场双周赛
LeetCode 股票系列(四)
LeetCode 股票系列(三)
LeetCode 股票系列(二)
LeetCode 股票系列(一)
动态规划深入
完全背包与多重背包
背包问题系列之 0-1 背包问题
搜索算法系列之 BFS 和 DFS
搜索算法系列之 BFS(二)
搜索算法系列之 BFS
搜索算法系列之 DFS(二)
搜索算法系列之 DFS
排序算法入门之「插入排序」
经过前面三篇动态规划文章的介绍,相信大家对动态规划、分治、贪心有了充分的理解,对动态规划的 3 个核心问题、其本质也有了了解。
今天这篇文章,让我们深入动态规划,一窥动态规划的本质。
一文学懂动态规划
咳咳,今天开始回归算法系列,来聊一聊之前的算法文章中没有讲到的内容。
今天我们来说一下线程的生命周期和常用 APIs:我们需要非常清楚的知道线程的各种状态,比如排查程序运行慢的原因时,就需要看下是不是哪里被阻塞了;另外它也是面试时非常喜欢问的,如果基础内容都答不好,恐怕直接就挂了。 本文分为两大部分, 线程的 6 大状态; 多线程常用的 APIs:
那相信大家也能感受到,其实用多线程是很麻烦的,包括线程的创建、销毁和调度等等,而且我们平时工作时好像也并没有这样来 new 一个线程,其实是因为很多框架的底层都用到了线程池。 线程池是帮助我们管理线程的工具,它维护了多个线程,可以降低资源的消耗,提高系统的性能。 并且通过使用线程池,我们开发人员可以更好的把精力放在任务代码上,而不去管线程是如何执行的,实现任务提交和执行的解藕。 本文将从是何、为何、如何的角度来讲解线程池:
对于已经工作了的小伙伴,你应该是见过"责任链"这种面向对象的设计模式的,还在上学的小伙伴也不用着急,你迟早会接触到的。本文旨在让小白同学和不太熟悉责任链的朋友能够迅速对这一设计模式有一个大致的了解。 在我们的工农业生产中,经常有这样的场景:一个任务、事务、流程等都需要很多不同的步骤,来完成不同的计算或者收集不同的数据。 为了维护一个比较复杂,有时甚至是对顺序敏感的任务流程,我们经常在代码的编写和设计上采用"责任链"设计模式。
接上文
在写完了所有线性数据结构之后,今天开启非线性数据结构系列。 我们今天先来看,什么是“树”
哈希冲突详解
首先我们有一个假设:任何两个 object 的 hashCode 都是不同的。 那么在这个条件下,有两个 object 是相等的,那如果不重写 hashCode(),算出来的哈希值都不一样,就会去到不同的 buckets 了,就迷失在茫茫人海中了,再也无法相认,就和 equals() 条件矛盾了,证毕。
Java 集合框架其实都讲过了,有一篇讲 Collection 的,有一篇讲 HashMap 的,那没有看过的小伙伴快去补下啦,文末也都有链接;看过的小伙伴,那本文就是检测学习成果的时候啦 今天这篇文章是单纯的从面试的角度出发,以回答面试题为线索,再把整个 Java 集合框架复习一遍,希望能帮助大家拿下面试。
大家好,这里是《齐姐聊算法》系列之 Top K 问题。
生产者 - 消费者模型 Producer-consumer problem 是一个非常经典的多线程并发协作的模型,在分布式系统里非常常见。也是面试中无论中美大厂都非常爱考的一个问题,对应届生问的要少一些,但是对于有工作经验的工程师来说,非常爱考。 这个问题有非常多的版本和解决方式,在本文我重点是和大家壹齐理清思路,由浅入深的思考问题,保证大家看完了都能有所收获。
刚开始听到 IoC,会觉得特别高大上,但其实掰开了很简单。 跟着我的脚步,一文带你吃透 IoC 原理。 本文主要讲原理,围绕“是何”、“为何”来谈,下一篇文章会讲实践部分,也就是“如何”。
很多同学面对多线程的问题都很头大,因为自己做项目很难用到,但是但凡高薪的职位面试都会问到。。毕竟现在大厂里用的都是多线程高并发,所以这块内容不吃透肯定是不行的。 今天这篇文章,作为多线程的基础篇,先来谈谈以下问题: 为什么要用多线程? 程序 vs 进程 vs 线程 创建线程的 4 种方式?
本篇终于讲到了齐姐文章里常常出现的分割线! 计算机说到底就是 0 和 1,所有的数在内存中都是以二进制的形式储存的。 而位操作,或者说位运算,就是直接对内存中的二进制位进行操作。 位运算可以说是我们的基本功,今天这篇文章就从以下角度和大家一起玩转位运算。
接上文。
上一篇的 「Java 集合框架」里,还剩下一个大问题没有说的,那就是 PriorityQueue,优先队列,也就是堆,Heap。
Java 集合,也称作容器,主要是由两大接口 (Interface) 派生出来的:
上一篇讲 Git 的文章发出来没想到效果特别好,很多读者都要求继续深入的写。 那今天齐姐简单讲下 Git 的实现原理,知其所以然才能知其然;并且梳理了日常最常用的 12 个命令,分为三大类分享给你。
反转链表这题真的是面试非常喜欢考的了,这题看起来简单,但是能用两种方法一遍 bug free 也是不容易的,面试的时候可以筛下来一大批人,无论是对 junior 还是 senior 面试都很爱考。 今天齐姐就带你梳理清楚思路,思路清楚了才能写码如有神。
今天又有新来的小朋友问我关于 Git 的用法,我发现还是有蛮多新人不会用的,或者用不好的。其实想想自己刚工作时也是倒腾不清楚这些参数和用法,而且总怕出错,慢慢的多看文档、用得多了就熟悉了,今天简单跟大家分享几点。
荷兰旗问题又称三色排序,或者彩虹排序,