自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

DorMOUSENone的博客

最新博客请前往:https://www.ffutop.com

  • 博客(209)
  • 收藏
  • 关注

原创 CURL 与证书链问题

[ffutop@desktop ~] $ curl https://saas.ffutop.comcurl: (60) SSL certificate problem: unable to get local issuer certificateMore details here: https://curl.haxx.se/docs/sslcerts.htmlcurl failed to verify the legitimacy of the server and therefore could

2021-05-19 18:46:58 5383

原创 NGINX 的域名解析缓存

NGINX 作为常用的反向代理软件,普遍适用于对外统一暴露各种内部服务等常见。在使用过程中,常使用内网 IP 直接声明需要反向代理的服务。恰恰因为常规的使用方式都是配置上游(Upstream)服务的 IP,偶然间遇到使用域名配置上游服务,竟然陷入了知识盲区。异常为了对 HTTP 响应头做一些额外的处理,我们用 NGINX 代理了自建的图片 CDN 服务。精简后的配置如下server { listen 443 ssl; server_name proxy.ffutop.com;

2021-04-03 17:40:21 2995

原创 pipe 导致的 CLOSE_WAIT

历时一周总算把导致服务大量 CLOSE_WAIT 的原因给找到了。打印任务调用栈果然的必备手段啊!问题描述Python 服务 A,用于接收心跳包确认其他服务是否存活。其他服务每 5 分钟向 A 发送一次心跳包;总计 < 100 个其他服务。05-11 19:30 ,首次出现 Python 服务大量 CLOSE_WAIT,至 13 日发现,总计 10k 左右 CLOSE_WAIT 的 ...

2019-05-22 09:05:26 1181

原创 理解 Linux Kernel (8) - 网络

2019-04-21 21:28:21 334

原创 理解 Linux Kernel(10) - 执行的上下文

在进行第四篇(任务调度)行文描述时,就一直闹不清内核所谓的task的概念。之前一直将其与进程(process)的概念等同视之。但这又导致了线程的概念无处安置(毕竟在计算机科学的概念中,线程作为进程的子集存在,负责程序执行)。不过,现在这个疑惑总算得到了合理的解释:我们错误地将理论和实践不加区分地混淆了。内核开发社区与学术界的合作在整个内核开发历史上并没有想象中的频繁,正相反,学术界对内核代码的贡献...

2019-04-21 13:49:20 524

原创 理解 Linux Kernel (7) - 字符设备

相比较于块设备,字符设备无论从物理认知上,抑或是理论理解上,都存在着相当大的入门门槛。特别是在将字符设备与控制台、命令行终端混淆的时候,就更加难以进行分辨了。回到字符设备本身,字符设备与块设备最主要的区别就在于块设备可以随机读写,而字符设备只能够顺序读,顺序写。那么,常见的字符设备有什么?显示器、键盘、鼠标。宏观概览通常在我们的认识中,命令行终端就被认为是与一套字符设备相配合来使用的。很...

2019-04-21 13:47:07 348

原创 理解 Linux Kernel (6) -文件操作

前一篇已经描述对文件系统进行了宏观性的描述,这一篇,将以特定的文件读写操作为示例,串联对整个文件系统的基本操作。首先先来看看平台相关的文件读写操作的 C 代码是怎样一个调用方式#include <stdio.h>#include <stdlib.h>#include <string.h>#include <unistd.h>#includ...

2019-04-21 13:46:07 490

原创 理解 Linux Kernel (5) - 文件系统

用惯了类 Unix 系统,应该说文件系统是日常最常接触的一个操作系统模块之一了。$ lsApplications Network Users bin data etc net sbin usrLibrary System Volumes cores ...

2019-04-21 13:44:58 485

原创 理解 Linux Kernel (4) - 任务调度

前面几节已经描述过,对于单核 CPU 来说。CPU 就处于不断地执行指令的过程(或者通过 hlt 指令直接停止工作)。针对于每一个程序来说,这个程序执行流程是通过 CPU 中几组寄存器(通用寄存器、段寄存器、控制寄存器等) 和存储在内存中的代码和数据协作完成的。如果要达到单核多任务的目的,首先要做的就是完成对几组寄存器中当前值的保存(我称之为保存现场)。而对于内存来说,多个任务的代码、数据同时...

2019-04-21 13:43:54 500

原创 理解 Linux Kernel (3) - 操作系统启动

这次拖得有够久的,毕竟需要将知识串联起来并不是一件容易的事情。更何况很多内容可以说和常理(个人理解的常理)有了比较大的偏差。不过确实比较有意思。从引导程序到操作系统启动,这中间究竟经历了多少流程呢?由于前几篇已经有过介绍,这里不会再对引导程序及汇编语法做过多的介绍。而着重描述整个操作系统的启动流程。引导程序从 BIOS 将512字节长的引导程序加载到物理内存0x7c00开始的连续递增空间...

2019-04-21 13:40:41 406

原创 理解 Linux Kernel (2) - 多任务切换

概述《只是为了好玩》书中,林纳斯描述过他最早的试验性程序就是执行两个不同的任务(一个不断输出A,另一个输出B),同时不断地让 CPU 在两个任务间做切换。结合《Linux 内核完全注释》提供的一个多任务切换示例程序,本篇将就多任务切换程序的执行流程进行详述,并提供当下汇编工具下的适配。关于运行环境的说明,欢迎参考 Bochs 仿真器使用简介引导程序理解 Linux Kernel (1) ...

2019-04-21 13:22:39 631

原创 理解 Linux Kernel (1) - BIOS

前言在概述,我已经介绍过《理解 Linux Kernel》系列文章的写作原因。我不能担保我所进行的所有试验性操作都是对的,但至少操作我的环境下成功地运行了,并帮助我触及我始终敬畏的硬件&OS《Linux 内核完全注释》第三章——内核编程语言和环境,描述了用 as86 汇编语言构建 boot 引导程序,在 Bochs 仿真器成功模拟开机运行,最终输出 Loading System…。这就...

2019-04-21 12:33:27 445

原创 理解 Linux Kernel (0) - 概述

概述《理解Linux Kernel》系列最早开始于 2018 年中,当时我刚刚结束对 JVM (Java Virtual Machine, Java 虚拟机) ClassFile 文件格式的学习。彼时,在实现新编程语言、学习 Linux 内核实现、继续深入 JVM 源码三个下一阶段的命题中,我选择了拥抱 Linux 源码。时间过去了大半年,我已经简单地建立了对 Linux Kernel 的结构...

2019-04-21 12:31:46 500

原创 Java Instrumentation

Start从现有的前置知识来说,我们能够认识到两个事实:Java Class 通过 ClassLoader 进行加载。 通过全限定名进行区分。当需要加载新的类时,ClassLoader 通过双亲委派机制判断是否已经加载过这个类。 换句话说: Class 一经加载,就不会尝试重复加载 (至少按绝大多数人的认知来说,确实是的)有没有可能让被加载的 Class 与物理存储上的 .clas...

2018-08-17 17:36:16 6260

原创 JVM 指令简析

在之前描述过包括 ASM, CGlib, Java Proxy 的基本内容之后,本文将就更为基础的 JVM 指令集进行简单而有效的介绍。当然,在开始正文前,读者需要了解到,JVM 指令集这种类似于汇编的规范性内容,包含一百多个指令,若要求一一介绍。 那么,直接阅读 官方文档 绝对是比本文的内容更为详实且准确。这篇文档的目的,只是为了使读者建立起关于 JVM 指令集基本的常识性观念。...

2018-07-24 09:24:54 366

原创 Java Proxy 源码解析

在 Java 整个生态里面, 通用的有两类动态代理的应用: Java Proxy 与 CGlib 代理。从宽泛的区别来说,Java Proxy 只能对接口进行增强,而 CGlib 同时适用于类和接口的增强。 而且,业内普遍的认知是,CGlib 动态代理较之于 Java Proxy 在生成字节码的速度上也更为高效。从实例开始…下面,首先来了解一下 Java Proxy 的使用编...

2018-07-22 05:48:37 1583

原创 区块链技术概述

## 基本工作流程### 新交易发起流程1. 用户通过公/私钥与区块链网络进行交互2. 处理用户交易的节点向网络邻节点广播用户交易3. 邻节点验证交易的有效性;可信,继续向其它邻节点广播;不可信,丢弃。### 新区块产生流程1. 矿工尝试将一个时间区间内的交易进行打包形成新区块(怎么打包,看下文)2. 生产出新区块的矿工节点向网络广播新区块3. 收到新区块的网络节点验证该区块的有效性

2018-03-01 18:16:32 1410

原创 Spring-JDBC 源码学习(0) —— 概览

概览在学习 Spring-JDBC 之前,我们有必要从 Java 原生提供的 JDBC 开始,对 JDBC 操作的一整套完整的流程有一个清晰的概念。/** * copied from https://www.tutorialspoint.com/jdbc/jdbc-sample-code.htm * updated by DorMOUSENone *///STEP 1. 引入

2018-01-15 11:46:10 629

原创 Spring-JDBC 源码学习(5) —— ResultSet

ResultSet在前几节已经提到讲了数据源、驱动管理器以及 Statement 之后,利用 JDBC 的最重要的目的就是对 DB 进行操作,并获得预期结果。对于查询语句而言,结果应该是若干记录行;就更新语句而言,结果可能是影响的行数。而 Spring-jdbc 对 ResultSet 额外进行的封装,即是将原本散乱的结果进行一个整合,例如整合成一个(一组)完整的 Bean 来进行展示。在

2018-01-15 11:07:08 1037

原创 Spring-JDBC 源码学习(4) —— PreparedStatement & CallableStatement

PreparedStatement & CallableStatement在了解了 DataSource 获取连接(Connection) 的实质以及 JdbcTemplate 的通用接口之后,使用 Spring-jdbc 进行数据库相关的操作可以直截了当的利用如下代码进行实现(此处仅展示通过 Java 硬编码的形式进行实现,XML 配置方法类似)。public static void

2018-01-12 17:59:54 3049

原创 Spring-JDBC 源码学习(3) —— DriverManager

DriverManager上面提到 DataSource 获取连接(Connection) 的操作实质上将委托具体的 Driver 来提供 Connection 。有两种不同的方式,包括经由 DriverManager 遍历所有处于管理下的 Driver 尝试获取连接,或者在 DataSource 实例中直接声明一个特定的 Driver 来获取连接。对于获取连接的具体操作,挖坑-待填。只描

2018-01-12 11:33:12 624

原创 Spring-JDBC 源码学习(2) —— DataSource

Spring JDBC 源码学习DataSource上一节在粗略地了解了 JdbcTemplate 提供的方法之后,下面先来对 DataSource 做一点了解。Java 提供的 DataSource 定义DataSource 是 Java 核心库提供的接口。位于 javax.sql package 下。DataSource 接口可以被视作是一个提供物理 DB 实例连接

2018-01-11 17:58:57 1005

原创 Spring-JDBC 源码学习(1) —— JdbcTemplate

Spring-JDBC 源码学习(1)JdbcTemplateJdbcTemplate 类作为 org.springframework.core 包下的核心类,对 Java 实现的 JDBC 进行了一定程度的封装,可以简化 JDBC 的使用,同时避免许多常见的错误。由该类来执行 JDBC 工作流,应用程序只需要提供 SQL 语句就可以获得 DB 执行结果(当然实际操作上没有描述的这

2018-01-11 16:11:36 789

原创 Codeforces Round #439 C. The Intriguing Obsession (组合数)

Problem有三个岛群,分别有 a, b, c 个岛屿。要求在这三个岛群建桥(可以不建),问有多少种不同的建桥方案(有任意一座桥的任意一个端点不同即视为不同方案)。要求:每座桥的长记为 1,属于同一岛群的两个岛间最短距离至少为 3 ,或者两岛不存在路径。Idea由于同岛群的任意两岛最短距离至少为 3 或不能有路径。则可知,非法路径的连接方案为:同岛群两岛直接连接。同岛群两岛均与另一岛群的某岛连

2017-10-07 14:14:53 627

原创 Codeforces Round #439 E. The Untended Antiquity (树状数组+随机化)

ProblemProblem Link在 n×mn\times m 的二维图上,有三种操作:1 r1 c1 r2 c2 表示沿着 (r1, c1, r2, c2) 所表示的矩形的外边框建围墙。(其中 (r1, c1) 为矩形左上角,(r2, c2) 表示矩形右下角)。2 r1 c1 r2 c2 表示取消 (r1, c1, r2, c2) 所示矩形的围墙。(保证最初图不存在围墙,删除的围墙一定是之

2017-10-07 14:13:11 692

原创 HDU 6211 Pythagoras (预处理, 2017 ACM/ICPC Asia Regional Qingdao Online)

ProblemGiven a list of integers a0,a1,a2,⋯,a2k−1a_0,a_1,a_2,⋯,a_{2^k−1}. Pythagoras triples over 10910^9 are all solutions of x2+y2=z2x^2+y^2=z^2 where x,y and z are constrained to be positive integers

2017-09-17 21:31:48 1426 2

原创 HDU 6203 ping ping ping (LCA + 树状数组, 2017 ACM/ICPC Asia Regional Shenyang Online)

Problemn+1 个点 n 条边的树(点标号 0 ~ n),有若干个点无法通行,导致 p 组 U V 无法连通。问无法通行的点最少有多少个。Idea根据所给的树(任意点为根)预处理出每个点的前序 DFS 序和后序 DFS 序(需统一标号),及点的深度。根据 p 组 U V 处理每组两点的 LCA 。压入优先队列(LCA 深度大的点优先出队)。对于出队的 U V 及其对应的 LCA ,判断点 U

2017-09-11 09:19:30 1637

原创 HDU 6199 gems gems gems (DP, 2017 ACM/ICPC Asia Regional Shenyang Online)

ProblemNow there are n gems, each of which has its own value. Alice and Bob play a game with these n gems. They place the gems in a row and decide to take turns to take gems from left to right. Alic

2017-09-11 09:01:14 1907 12

原创 HDU 6201 transaction transaction transaction (Dijstra, 2017 ACM/ICPC Asia Regional Shenyang Online)

Problem给 n 个城市买卖书的价格 priceiprice_i (同城买卖同价)。n-1 条双向路将 n 个城市连通,每条路径给定 x y z ,表示 x 与 y 城市道路的长度为 z 。每前进 1 km 的代价为 1 。求从一个城市买 1 本书再带到另一个城市卖出的最大收益。Idea多源最短路加超级源点 转化为 单源最短路。貌似这种题队友总喜欢拿网络流去套… 233.从超级源点向每个城市 i

2017-09-11 08:45:50 807

原创 HDU 6194 String String String (后缀数组+线段树, 2017 ACM/ICPC Asia Regional Shenyang Online)

Problem求字符串 S 中严格出现 k 次的子串个数k≥1k\ge 1|S|≤105|S|\le 10^5∑|S|≤2×106\sum |S| \le 2\times 10^6Idea貌似很多队都是用后缀树 AC 的。好吧,我不会。后缀数组 + 线段树 解法:利用后缀数组处理出 height[] 数组,显然 height[i] 表示 sa[i] 与 sa[i-1] 的最长公共前缀(LCP) 。利

2017-09-11 08:29:27 1626 3

原创 HDU 6133 Army Formations (树状数组, 2017 Multi-Univ Training Contest 8)

ProblemProblem LinkThough being cruel and merciless in the battlefields, the total obedience to the command hierarchy makes message delivering between Stormtroopers quite inefficient, which finally cau

2017-08-21 10:59:40 452

原创 HDU 6151 Party (二分图)

Problem被含糊的题意坑到了,竟然都没想到是原题(变体? CERC 2016 B) 派对预选受邀人可视作二分图,n 个男孩与 m 个女孩分属两个不相交集合。每人都有一个标记 a1,a2,⋯,ana_1, a_2, \cdots,a_n 和 b1,b2,⋯,bmb_1, b_2, \cdots,b_m 。n×mn\times m 的 01 矩阵,表示二分图的中的边(0 为不存在这条边,1 为存在)

2017-08-21 08:44:03 786

原创 HDU 6136 Death Podracing (2017 Multi-Univ Training Contest 8)

ProblemProblem LinkIdea解题的必要前提:将剩余的所有人按照初始位置从小到大排序,重新依次编号 1 ~ n 。则显然,最早的两人相遇一定发生在某两个编号相邻的人之间(1 与 n 也视作相邻)。故用 set 维护剩余的人的编号,当某个编号为 i 的人被淘汰后,在 set 中删除编号 i ,同时查找与 i 左相邻及右相邻的两个编号,显然此时这两个编号也又可能是在淘汰 i 之后,最快相

2017-08-20 10:11:44 487

原创 HDU 6128 Inverse of sum (数论, 2017 Multi-Univ Training Contest 7)

ProblemThere are n nonnegative integers a1…n which are less than p. HazelFan wants to know how many pairs i,j(1≤iIdea⟺⟺⟺1ai+aj≡1ai+1aj1ai+aj≡ai+ajai⋅ajai⋅aj≡(ai+aj)2a2i+ai⋅aj+a2j≡0modpmodpmodpmodp(1)(2

2017-08-17 20:36:29 729

原创 HDU 6138 Fleet of the Eternal Throne (后缀数组+字典树, 2017 Multi-Univ Training Contest 8)

Problemn 行字符串(只含有小写字母)。m 组询问,每组询问给定 x, y ,求第 x 行与第 y 行字符串的最长公共子序列长度(当然,需要额外满足,取得的字符串必须是某行的前缀)。Idea貌似想复杂了,后缀数组+字典树过的。官方题解表示用 AC 自动机。预处理维护一棵字典树,用于判断获得的公共子序列是否是某串的前缀,或该公共子序列的某个前缀是否是某串的前缀(不过多介绍)。对于每次询问,将第

2017-08-17 19:57:08 906

原创 HDU 6140 Hybrid Crystals (2017 Multi-Univ Training Contest 8)

ProblemProblem Link不想翻译,估计尝试但没过的都只读了最后一段。(友好的) 出题人挖了好大一个坑,重点限制条件不在最后一段。Idea只看最后一段,此题为 NP 问题,但是,之前的额外条件可以将此题视作贪心。由于给出的数是有限制的,故 [1, i] 线性扫描,必然能够取得 [l, r] 区间的所有数(l , r 表示分别表示前 i 个数任取得到的最小数和最大数,不要问为什么,读完全

2017-08-17 19:40:41 395

原创 HDU 6143 Killer Names (容斥, 2017 Multi-Univ Training Contest 8)

Problem要求构造若干名字,名字包括 first name last name 两部分,均需包含 n 个字符,已知有 m 种字符供选择,求最多有多少种不同的构造方法,使得 first name 和 last name 不含相同字符。Idea容斥。枚举 first name 用到的字符为 i 个,则 last name 用到的为 m-i 个 ,此时的方案数为 Cimni×nm−iC

2017-08-17 18:41:28 564 4

原创 HDU 6125 Free from square (状压 dp , 2017 Multi-Univ Training Contest 7)

ProblemProblem Link有 [1,n][1, n] 的所有正整数,求最少取 1 个,最多取 k 个,使得所取数的累积 ∏xi\prod{x_i} 不能被某个数的平方整除。问有多少种取值方案。Idea显然,根据题意得到所得数的累积 ∏xi\prod{x_i} 对于每种素数只能取到 1 次。故如果能够状压下所有的素数状态,就是简单的状压 dp 。当然,事实上根本不可能,素数过多。考虑,对于

2017-08-16 14:45:30 470

原创 HDU 6121 Build a tree (递归+特判, 2017 Multi-Univ Training Contest 7)

ProblemProblem LinkHazelFan wants to build a rooted tree. The tree has n nodes labeled 0 to n−1, and the father of the node labeled i is the node labeled⌊i−1k⌋\lfloor \frac{i-1}{k} \rfloor . HazelFan w

2017-08-16 10:13:07 387

原创 HDU 6124 Euler theorem (2017 Multi-Univ Training Contest 7)

ProblemHazelFan is given two positive integers a,b, and he wants to calculate a mod b. But now he forgets the value of b and only remember the value of a, please tell him the number of different possib

2017-08-15 21:11:59 420

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除