04 2020 档案
摘要:题目如上。 我们假定,求从 nums 数组第 flag 位置开始目标和为 S 的组合数的函数为:G(nums, S, flag) 。 那么状态转移方程的表示为:G(nums, S, flag) = G(nums,S-nums[flag],flag+1) + G(nums,S+nums[flag],f
阅读全文
摘要:首先,我们假定求长度为 n 的数列可组成的二叉搜索树的数量为 G(n)。 想办法将 G(n) 用其子问题表示,如果我们以第 i 个元素为根,则其左子树的数量为 G(i-1),右子树的数量为 G(n-i) 。那么以第 i 个元素为根的二叉搜索树的数量为 G(i-1) 与 G(n-i) 两个集合的笛卡尔
阅读全文
摘要:内存管理需要完成两个任务:地址保护,一个程序不能访问另一个程序的地址空间;地址独立:程序发出的地址应该与物理地址无关。段式管理/页式管理/段页式管理都是为了实现这两个目标而产生的内存管理方式。 内存管理的演变过程 静态地址翻译 将用户程序固定放在同一个物理地址。这种方式只支持单道编程环境,整个内存只
阅读全文
摘要:首先了解一下系统 I/O 与标准 I/O 的区别: 系统I/O,又称文件I/O,或是内核态I/O,引用文件的方式是通过文件描述符,一个文件对应一个文件描述符。一个文件描述符用一个非负整数表示,0、1、2系统默认表示标准输入、标准输出、标准错误,某些UNIX系统规定了描述符的上限值OPEN_MAX,这
阅读全文
摘要:又是一道简单题(最近项目事情多有点偷懒),不需要贪心、不需要分治、更不需要 DP,只要最简单的递推就可以解出的题目。但第一次提交没有通过,原因在于边界条件的考虑不到位,所以想要借机总结一下如何确定边界条件。 边界条件就想数学表达式中变量的取值范围,一个数学表达式的成立一定是有限制条件的,程序也是如此
阅读全文
摘要:如果我们要将一个文件通过 socket 发送出去,我们一般会这样写: Socket socket = new Socket(); socket.connect(new InetSocketAddress("127.0.0.1", 33456),10 * 1000); DataOutputStream
阅读全文
摘要:一道简单题,重点在于进位的处理。 有意思的地方是,进位的动作非常适合使用递归描述,一位一位的处理,并由上一位的计算结果决定该位的处理方式。 定义递归的坐标:flag:当前处理的位数;isCarry:上一位计算是否进位 public final int[] plusOne(int[] digits)
阅读全文
摘要:使用 JAVA 进行多道编程时,除了通过 wait/notify 对线程进行阻塞/唤醒外,我们还可以使用 LockSupport 工具类来阻塞和唤醒线程。 比如: Thread threadTest = new Thread( () -> { System.out.println("thread s
阅读全文
摘要:想要理解多路复用技术,首先要了解这个技术出现之前,我们面临的痛点是什么。 以 JAVA 为例,我们想要写一个 TCP 服务端,接收客户端发来的数据,那么我们会这样写: while (true) { Socket socket = serverSocket.accept(); //读取输入缓冲区数据
阅读全文
摘要:上题目: 解空间明确,一个从 nums[0] 开始辐射出去的树状解空间。首先暴力搜索一下,暴力搜索解法: public final boolean canJump(int[] nums) { if(nums==null){return false;} int length=nums.length;
阅读全文
摘要:事务的 ACID 特性是保证事务正确执行的必要因素,这四个特性不仅是数据库对事务安全的保障机制,拓展开来,也为我们在多线程编程环境下,提供了保证任务正确执行的参考。数据库事务是一类特殊的多道编程任务,之所以特殊是因为这些任务对周遭环境是存在函数副作用的,因为它们改变了任务外定义的共享资源的状态(数据
阅读全文
摘要:form 表单的 submit 是不能进行异步提交以及执行回调函数的,我们可以通过 jquery 的 form 组件实现这一点。 引入依赖:jquery.js,jquery.form.js 拿到我们表单的 jquery 对象 $(?) 构造 option: var options = { type:
阅读全文