LeetCode 6. Z字形变换
1. 题目描述
将一个给定字符串s根据给定的行数numRows,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为"PAYPALISHIRING"行数为3时,排列如下:
P A H NA P L S I I GY I R
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"PAHNAPLSIIGYIR"。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入:s = "PAYPALISHIRING", numRows = 3输出:"PAHNAPLSIIGYIR"
示例 2:
输入:s = "PAYPALISHIRING", numRows = 4输出:"PINALSIGYAHRPI"
解释:
P I NA L S I GY A H RP I
示例 3:
输入:s = "A", numRows = 1输出:"A"
2. 解题思路
我们将Z形字符串沿垂直方向按照V形划分。
|P |A | H | N|A P |L S| ...
深入浅出OS中的并发与同步
0. 并发,是机遇也是挑战
0.1 并发与并行
自从多道程序设计技术诞生以来,资源的利用率和系统的吞吐量就得到了极大的提高,也由此出现了多道批处理系统。
多道程序设计具有以下三个特点:
多道:同一时间段内有多道程序在内存中执行。
宏观上并行:系统内的多个程序都处于运行过程中的状态。
微观上串行:这些程序轮流占有CPU,交替执行。
当多道程序运行在可抢占式的操作系统上时,就产生了并发(Concurrent)问题:CPU在一个进程的指令流上的任何一点都可能产生中断,转而去执行其他进程。当系统有一个以上CPU时,那么进程(线程)的执行效率还可以得到进一步的提升,一个CPU执行一个进程(线程)时,另一个CPU可以执行另一个进程,且它们之间互不抢占CPU资源,可以同时执行,此时的这种方式我们称之为并行(Parallel)。
gantt
title 三个进程并发执行
dateFormat m
axisFormat %M
section 进程A
占用CPU : crit, active, p1,0, 5
section 进程B
...
雅可比行列式,多元函数微积分的计算神器!
雅可比行列式在多元函数微积分中的应用非常广泛,我们在很多地方都能见到它的身影。合理运用雅可比行列式,可以简化我们的计算。
本文主要总结了一些雅可比行列式在多元函数微积分的计算方面的应用。
0. 什么是雅可比行列式
雅可比行列式通常称为雅可比式(Jacobian),它是以n个n元函数的偏导数为元素的行列式 。事实上,在函数都连续可微(即偏导数都连续)的前提之下,它就是函数组的微分形式下的系数矩阵(即雅可比矩阵)的行列式。
雅可比行列式来源于多元函数微分的方程组,所以自然离不开函数的微分。所谓行列式,不过是一个多元函数微分方程组的系数罢了。
1. 求隐函数方程组的导数
所以在引出雅可比行列式之前,我们有必要先探究一下多元函数方程组和它的偏导数的性质。
隐函数存在定理
根据隐函数存在定理,我们知道一个二元方程能够唯一确定一个一元函数。
一元隐函数存在定理 设二元函数满足,且在点的某邻域内有连续偏导数。则方程在点的某一邻域中唯一确定了一个具有连续导数的函数。满足且。其偏导数为:
二元隐函数存在定理 设三元函数满足,在点的某邻域内有连续偏导数,方程在点的某一邻域中唯一确定了一个具有连续 ...
二阶线性非齐次微分方程特解的五大求解方法
求解非齐次线性微分方程可以说是考研数学中的一大重点和难点。
本文是作者在复习考研数学的过程中,总结的一些常用的可以用于求解二阶线性非齐次微分方程的特解的方法。
我们知道,对于一个二阶线性非齐次微分方程,它的通解是它对应的二阶线性齐次微分方程的通解加上它自己的一个特解。而它所对应的二阶线性齐次微分方程的通解通常有两种情况:若该方程为常系数,我们根据特征方程容易求得通解。但若该方程为变系数,情况就稍麻烦些。大多数的变系数线性高阶微分方程不能利用初等函数求解(如,它的解是无穷级数形式的),只有对于一些特殊形式的二阶变系数线性齐次微分方程,我们才可以利用降阶法等方法求得初等函数解。
求得对应齐次方程的通解后,另一个难点在于求它的一个特解,这也正是考研数学可以说必考的知识点。考虑到变系数方程求解的难度,一般考研题如果考察求解二阶线性非齐次微分方程,则通常是常系数的(不排除变系数的情况)。
下面我们以一个二阶常系数线性非齐次微分方程为例,分别讲解五种方法如何用于求此二阶微分方程的特解。
1. 待定系数法
待定系数法是最常用也是最基本的一种方法。
该微分方程的特征方程为,得特征根,从而通解为。
现 ...
快速认识SSH认证原理
一、什么是SSH?
SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。
SSH 主要由三部分组成:
传输层协议 [SSH-TRANS]
提供了服务器认证,保密性及完整性。此外它有时还提供压缩功能。 SSH-TRANS 通常运行在TCP/IP连接上,也可能用于其它可靠数据流上。 SSH-TRANS 提供了强力的加密技术、密码主机认证及完整性保护。该协议中的认证基于主机,并且该协议不执行用户认证。更高层的用户认证协议可以设计为在此协议之上。
用户认证协议 [SSH-USERAUTH]
用于向服务器提供客户端用户鉴别功能。它运行在传输层协议 SSH-TRANS 上面。当SSH-USERAUTH 开始后,它从低层协议那里接收会话标识符(从第一次密钥交换中的交换哈希H )。会话标识符唯一标识此会话并且适用于标记以证明私钥的所有权。 SSH-USERAUTH 也需要知道低层协议是否提供保密性保护。
连接协议 [SSH-CONNECT]
将多个加密隧道分成逻辑通道。它运行在用户认证协议上 ...
Xmind破解教程
XMind是一个全功能的思维导图和头脑风暴软件,为激发灵感和创意而生。作为一款有效提升工作和生活效率的生产力工具,受到全球百千万用户的青睐。受到全球百千万用户的青睐。本文尝试利用逆向工程破解Xmind的授权,仅供参考。
1. 破解思路
XMind基于Electron开发,在XMind安装目录下的Resource文件夹中包含了一个文件app.asar,这个文件是XMind源代码文件的一个压缩包。我们只需要将其解压,修改其中的源码再重新打包即可破解XMind。
2. 破解流程
首先需要安装nodejs,网上可以找到安装教程,这里跳过。
然后使用npm安装asar。
npm install asar -g
然后在XMind的安装目录下找到Resources文件夹,文件夹下有一个app.asar文件和一个app.asar.unpacked文件夹,将它们拷贝出来。
app.asar文件就是源码包,可以使用asar工具将源码解包出来。
asar extract app.asar directory/
在解压出的源码文件中,打开common.js文件
$ find ./ -name common. ...
JavaEE「九」Spring MVC
9.1 什么是Spring MVC?
SpringMVC是Spring家族的一员,Spring是将现在开发中流行的组件进行组合而成的一个框架!它用在基于MVC的表现层开发,类似于struts2框架
9.2 SpringMVC快速入门
9.2.1导入开发包
如果用Maven的,那导入Maven依赖即可
前6个是Spring的核心功能包【IOC】,第7个是关于web的包,第8个是SpringMVC包
org.springframework.context-3.0.5.RELEASE.jar
org.springframework.expression-3.0.5.RELEASE.jar
org.springframework.core-3.0.5.RELEASE.jar
org.springframework.beans-3.0.5.RELEASE.jar
org.springframework.asm-3.0.5.RELEASE.jar
commons-logging.jar
org.springframework.web-3.0.5.RELEASE.jar
org.spring ...
JavaEE「八」Mybatis动态sql
我们当时刚开始做的时候,是需要在Controller中判断SQL是否已经有条件了,因为SQL语句需要拼接起来....这样干的话,就非常容易出错的。
如下的代码,如果有多个条件的话,那么拼接起来很容易出错!
public String listUI() { //查询语句 String hql = "FROM Info i "; List<Object> objectList = new ArrayList<>(); //根据info是否为null来判断是否是条件查询。如果info为空,那么是查询所有。 if (info != null) { if (StringUtils.isNotBlank(info.getTitle())) { hql += "where i.title like ?"; objectList.add("%" + info.getTi ...
JavaEE「七」Mybatis映射器
我们在上面中已经简单知道了Mybatis是怎么使用的以及工作流程了,这次我们使用Mybatis来完成CRUD的操作,再次巩固Mybatis的开发步骤以及一些细节
7.1 增加学生
配置文件
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"><configuration> <!-- 加载类路径下的属性文件 --> <properties resource="db.properties"/> <!-- 设置一个默认的连接环境信息 --> <environments default="mysql_developer"> < ...
JavaEE「六」Mybatis快速入门
6.1 Mybatis简介
My Batis 的官方定义为: MyBatis 是支持定制化SQL、存储过程以及高级映射的优秀的持久层框架。MyB atis 避免了几乎所有的JDBC 代码和于动设置参数以及获取结果集。MyBatis 可以对配置和原生Map 使用简单的XML 或注解, 将接口和Java 的POJO ( Plain Old Java O均ect,普通的Java对象)映射成数据库中的记录。从这个官方定义可以看出,MyBatis 是基于一种SQL 到POJO 的模型,它需要我们提供SQL 、映射关系( XML 或者注解, 目前以XML 为主)和POJO 。但是对于SQL 和POJO 的映射关系, 它提供了自动映射和驼峰映射等, 使开发者的开发工作大大减少:由于没有屏蔽SQL ,这对于追求高响应和性能的互联网系统是十分重要的, 因此我们可以尽可能地通过SQL 去优化性能,也可以做少量的改变以适应灵活多变的互联网应用。与此同时, 它还能支持动态SQL ,以适应需求的变化。这样一个灵动的、高性能的持久层框架就呈现在我们面前,这些很符合当前互联网的需要。
My Batis 的配置文件包 ...