Shilei Tian

Waiting Persistent Accumulation Surpass

[C++] new 和 malloc 的区别

改编自《细说new与malloc的10点区别》。 我们从以下 10 个方面来讲述 new 和 malloc 的区别。 1. 申请的内存所在位置new 操作符从自由存储区(free store)上为对象动态分配内存空间,而 malloc 函数从堆上动态分配内存。自由存储区是 C++ 基于 new ..


[操作系统] 三种实现线程的方式

提起线程模型,大家可能会立马想起来操作系统课程里面的三种经典线程模型:一对一模型、多对一模型和多对多模型。这个对应关系主要体现在内核线程和用户线程数量上的关系。在《Modern Operating Systems》里面讲到了线程实现的三种方法::用户线程、内核线程和混合模式,看了这个以后感觉还是..


[操作系统] 防止两个进程同时进入临界区的几种方法(尝试)

本文来探讨进程间通信(Inter Process Communication, IPC)中防止两个进程同时进入临界区的几种方法。首先我们先讲一下一个好的方法应该具备的四个基本条件: 不会有两个进程同时进入临界区。 该方法不会对 CPU 的运行速度和数量做任何假设。 在临界区外运行的进程不会阻塞..


10 个自增典型例题解析

第 1 题源码123int x = 5;x++;printf("%d", x); 解析这道题目没有什么好解释的,在第二行处进行后置自增后,x 变成 6。 第 2 题源码123int x = 5;++x;printf("%d", x); 解析这道题目同样没有什么好解释的,在第二行处进行后置前置后,..


[LeetCode 145] Binary Tree Postorder Traversal

题目要求Given a binary tree, return the postorder traversal of its nodes’ values. For example:Given binary tree {1,#,2,3}, 123451 \ 2 /3 return [3,2,1]..


[LeetCode 222] Count Complete Tree Nodes

题目要求Given a complete binary tree, count the number of nodes. Definition of a complete binary tree from Wikipedia: In a complete binary tree every l..


[Leetcode 450] Delete Node in a BST

题目要求Given a root node reference of a BST and a key, delete the node with the given key in the BST. Return the root node reference (possibly updated)..


[Leetcode 331] Verify Preorder Serialization of a Binary Tree

题目要求One way to serialize a binary tree is to use pre-order traversal. When we encounter a non-null node, we record the node’s value. If it is a null..


[Leetcode 96] Unique Binary Search Trees

题目要求Given n, how many structurally unique BST’s (binary search trees) that store values 1…n? For example,Given n = 3, there are a total of 5 unique ..


[Leetcode 516] Longest Palindromic Subsequence

题目要求Given a string s, find the longest palindromic subsequence’s length in s. You may assume that the maximum length of s is 1000. Example 1:Input: ..