前言这是一个重要的知识点,需要掌握。仔细体会代码。#include#include#includeusingnamespacestd;/*测试16进制表示*/intmain(){inta1=0xc0;coutbBin(b);coutCbin(c);intcnum=Cbin.to_ulong();cout<
centos7安装jumpserver堡垒机
落花_忆流年
运维项目linux
堡垒机简介跳板机属于内控堡垒机范畴,是一种用于单点登陆的主机应用系统。跳板机就是一台服务器,维护人员在维护过程中,首先要统一登录到这台服务器上,然后从这台服务器再登录到目标设备进行维护。但跳板机的缺点是没有实现对运维人员操作行为的控制和审计,出现误操作或违规操作难以定位到原因和责任人;并且跳板机存在严重的安全风险,如果跳板机系统被攻入,则后端资源完全暴露无遗。对于个别资源(如telnet)可以通过
ROS2 细节知识学习
儒雅芝士
ROS2系列机器人c++linux
1.rosidl_generate_interfaces()在ROS2中,rosidl_generate_interfaces是一个关键的构建工具功能。它主要用于从接口定义文件(如.msg消息文件、.srv服务文件和.action动作文件)生成不同编程语言(如C++、Python等)可以使用的接口代码。这些接口是ROS2中节点间通信的基础,确保了数据在不同组件之间能够准确、高效地传递。在构建系统中
linux如何修改密码,要在CentOS 7系统中修改密码
远方 hi
linux运维服务器
要在CentOS7系统中修改密码,你可以按照以下步骤操作:步骤1:登录到系统在登录提示符localhostlogin:后输入你的用户名。输入密码并按回车键。步骤2:修改密码登录后,使用passwd命令来修改密码:passwd系统会提示你输入新密码。输入新密码并确认:输入新密码并按回车键。再次输入新密码以确认。示例假设你想将密码从旧密码改为新密码,可以这样做:$passwdChangingpassw
代码随想录 Day 11 | 【第五章 栈与队列】150.逆波兰表达式求值、239.滑动窗口最大值、347.前 K 个高频元素、总结
Accept17
java开发语言
一、150.逆波兰表达式求值本题不难,但第一次做的话,会很难想到,所以先看视频,了解思路再去做题题目链接/文章讲解/视频讲解:代码随想录1.看完代码随想录的想法(1)首先需要充分理解什么是逆波兰表达式,相当于树中的后缀表达式,与平时使用的中序表达式并不相同。定义一个初始化的空栈,然后去遍历输入的逆波兰表达式,遇到数字就向栈中添加数字元素,遇到运算符就取出栈顶的两个数字进行运算,再存放进栈中。直到最
RoHS 简介
Channing Lewis
社会其他rohs
RoHS(RestrictionofHazardousSubstancesDirective,限制有害物质指令)是欧盟制定的一项环保法规,旨在限制电气和电子设备中某些有害物质的使用,以减少这些产品对环境和人体健康的危害。RoHS限制的有害物质及其限量铅(Pb):0.1%汞(Hg):0.1%镉(Cd):0.01%六价铬(Cr6+):0.1%多溴联苯(PBB):0.1%多溴二苯醚(PBDE):0.1%
C#设置winform窗体自动适应不同分辨率的电脑
南华
c#电脑开发语言
C#设置winform窗体自动适应不同分辨率的电脑文章已被社区收录加入社区问题背景:用winform开发了一个上位机软件,本机的台式开发电脑是宽屏的,上位机软件的显示效果良好,而在笔记本电脑上使用上位机软件时,出现了界面超出屏幕,部分功能或内容无法显示完整的现象。探索之后,发现了一个规律:笔记本电脑的屏幕分辨率最大为1366×768,此时用vs2015中C#设计的winform窗体的size属性最
使用 Python 和 Tesseract 实现验证码识别
一休哥助手
mfcc++
验证码识别是一个常见且实用的技术需求,尤其是在自动化测试和数据采集场景中。通过开源OCR(OpticalCharacterRecognition,光学字符识别)工具Tesseract,结合Python的强大生态,我们可以高效实现验证码识别任务。本篇博客将以详细步骤和代码示例,介绍如何使用Python和Tesseract实现验证码识别,包括原理解析、图像预处理、代码实现以及优化策略。一、验证码识别的
Axios 教程:Promise 基础的 HTTP 客户端
吉皎妃Frasier
Axios教程:Promise基础的HTTP客户端axiosaxios/axios:Axios是一个基于Promise的HTTP客户端库,适用于浏览器和Node.js环境,用于在JavaScript应用中执行异步HTTP请求。相较于原生的XMLHttpRequest或FetchAPI,Axios提供了更简洁的API和更强大的功能。项目地址:https://gitcode.com/gh_mirror
2.5英寸笔记本电脑机械硬盘拆解方法
ZhillerDev
#硬件拆解电脑
拆卸步骤先来到有电路板的一面,下图红色框内需要拆卸掉7个螺丝,而蓝色框则是单独用作固定的螺丝,也要卸下来;卸下来的螺丝务必做好分类;来到金属壳一面,这里我们需要卸下六个固定螺丝,分别位于金属壳的边角(下图红色框);与此同时你可以先尝试卸下金属壳,如果发现无法卸下,那么很可能是硬盘信息的白色卡片遮住了,你需要想我这样撕下来,找到对应的螺丝卸下来(下图蓝色框)然后你可以先把电路板卸下来,你会看到此处还
软件工程之信息系统集成
我叫吴桂鑫
计算机基础知识软件工程信息系统集成
现在的软件开发工作大多数是集成,所有部分都从头开发效率会很低,问题也会更多,成本也会更高。系统集成就是将各类资源有机、高效地整合到一起,形成一个完整的系统。信息系统集成包括网络集成、数据集成和应用集成等。网络集成、数据集成和应用集成分别用于解决系统的互连性、互通性和互操作性。(1)网络集成(企业局域网)重点是系统中异构网络的互连。(2)数据集成(大数据)重点是系统中异构数据集的互通使用和统一管理。
golang网络编程之UDP可靠传输协议QUIC
SMILY12138
网络golang
Golang是一种高效、简洁的编程语言,在网络编程中,Golang通过其强大的标准库支持QUIC协议的UDP可靠传输。QUIC(QuickUDPInternetConnections)是一个基于UDP协议的可靠传输协议,它通过使用TLS1.3实现了端到端加密。在Golang中,我们可以使用quic-go包来实现QUIC协议的UDP可靠传输。下面是一个简单的例子:packagemainimport(
二分查找算法
mcharleylei
算法python
目录1、概述2、代码实现(1)递归实现(2)非递归实现1、概述二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查
Windows电脑安装USB Redirector并实现内外网跨网USB共享通信访问
春人.
春人闲谈windows电脑
文章目录前言1.安装下载软件1.1内网安装使用USBRedirector1.2下载安装cpolar内网穿透2.完成USBRedirector服务端和客户端映射连接3.设置固定的公网地址前言我们每天都在与各种智能设备打交道,从手机到电脑,再到各种外设,它们已经成为了生活中不可或缺的一部分。但你有没有遇到过这样的烦恼:明明有一个重要的文件存储在U盘里,却因为不在身边而无法访问?或者你的打印机只能连接一
dockerfile中from命令无法拉取镜像而docker的pull命令能拉取镜像
容器云服务
docker容器运维
问题现象:dockerpullimages拉取镜像正常dockerfile中的from命令拉取镜像就会报出证书错误。报错信息如下:[bjxtb@wj-kvm-test-jenkins-6-243ceshi_dockerfile]$dockerbuild.[+]Building0.4s(3/3)FINISHEDdocker:default=>[internal]loadbuilddefinition
【软考架构】信息系统开发与软件工程、软件架构的关系
warmbook
架构架构
前言我曾在网上看到过这样一种观点:国内编著的专业教程普遍对新人不友好,能看得懂的不需要看,需要看的看不懂。我没有做过这方面的调查,所以并不清楚其真实性如何。但是在软考备考过程中确实遇到了相似的困惑:有些知识点一旦理解了其实很简单,但是在理解之前,反反复复看了多遍还是学了前面忘了后面,本文要探讨的关于信息系统开发与软件工程、软件架构的关系就是其中一个困扰了我许久的例子。信息系统与软件在参考书3.1.
深入理解Python的@staticmethod和@classmethod装饰器
清水白石008
Python题库python开发语言python开发语言
深入理解Python的@staticmethod和@classmethod装饰器引言在Python的面向对象编程中,类方法和静态方法是除了实例方法之外的两种重要方法类型。它们允许我们在不创建类实例的情况下调用类的方法,或者在调用时直接引用类本身。Python提供了@staticmethod和@classmethod这两个装饰器,用于定义类方法和静态方法。然而,许多初学者可能会对这两种方法感到困惑,
10-2.Android BuildConfig 之获取版本号与版本名(通过 BuildConfig 类方式获取、通过 PackageInfo 方式获取)
我命由我12345
Android-简化编程开发语言java-eejavaandroidandroid-studioandroidstudioandroidruntime
一、版本号与版本名版本号(versionCode)是一个整数,用于内部版本控制,每次发布新版本时,版本号必须递增,Android系统使用版本号来判断应用的更新版本名(versionName)是一个字符串,通常用于向用户展示应用的版本信息,它可以是任意格式,常见的格式是主版本号.次版本号.修订号(例如,1.0.0)二、定义版本号与版本名在模块级build.gradle文件中,定义版本号与版本名and
Red Hat 8.1 部署MySQL 5.7
云计算老王
mysqladbandroid
RedHat8.1部署MySQL5.7文章目录RedHat8.1部署MySQL5.7一、关闭防火墙和Selinux二、配置YUM源三、安装依赖包四、安装MySQL4.1创建安装目录并解压文件到目录中4.2创建快捷方式4.3创建用户组4.4初始化4.5配置环境变量五、启动数据库5.1后台启动,并登陆数据库5.2新增远程用户5.3修改本地用户密码5.4关闭数据库一、关闭防火墙和Selinuxsyste
数据库基础知识:理论、E-R图、事务、原则
地信小学生
数据库数据库ubuntupostgresql
(5)数据库理论与E-R图数据库理论(DatabaseTheory)是在创建数据库的过程涉及创建现实世界的抽象模型;将现实世界的概念作为实体表示在数据库中。E-R图(EntityRelationshipDiagramming)用于表示数据模型的图形工具/关系的抽象,主要用于数据库设计阶段,通过实体(Entity)、属性(Attribute)和关系(Relationship)来描述数据之间的结构和联
android11中删除一些不需要的应用
路奇的电脑
java
我们在定制android11的需求的时候,有时候客户不想要一些应用,需要我们移除掉这些应用,为了节省大家的时间,我这边举例了几个删除的例子具体的路径是在build/make下diff--gita/target/product/handheld_product.mkb/target/product/handheld_product.mk---a/target/product/handheld_pro
Kmeans与KMedoids聚类对比以及python实现
呵呵爱吃菜
kmeans聚类python
在机器学习领域,聚类算法是一种常用的无监督学习方法,用于将数据集中的样本划分为若干个簇,使得同一簇内的样本尽可能相似,而不同簇之间的样本尽可能不同。K-Means和K-Medoids是两种经典的聚类算法,它们都基于划分的思想,但在具体实现和应用场景上存在一些差异。一、算法原理1.K-Means:中心点选择:K-Means算法通过计算簇内所有样本的均值来确定中心点(centroid)。距离度量:通常
图像分类与识别的自组织特征映射网络实践
无声远望
本文还有配套的精品资源,点击获取简介:自组织特征映射网络(SOFM)是一种无监督学习模型,适用于图像处理中的预处理、特征提取和分类识别。通过在MATLAB中实现SOFM,可以进行数据预处理、特征提取、网络训练、分类与识别以及优化评估。本内容涵盖了SOFM网络的应用步骤、训练过程、参数调整和性能评估,旨在提供图像处理问题的解决方案。1.自组织特征映射网络简介1.1自组织特征映射网络概述自组织特征映射
网络安全态势感知:企业数字化转型的 “安全密钥”
知白守黑V
安全运营网络安全态势感知网络
在数字经济飞速发展的当下,网络安全已经成为企业平稳运营的关键所在。从大型企业的数据泄露事故,到中小企业遭遇的各类网络攻击,网络安全威胁无处不在。而网络安全态势感知产品,作为应对复杂网络威胁的关键技术,正逐渐成为企业守护数字资产的“智慧大脑”。一、态势感知:全景掌控,精准防御你可以把网络安全态势感知想象成企业网络的“超级侦察兵”。它借助大数据分析、机器学习这些先进技术,就像是拥有了超级强大的“洞察力
局域网用MAC通讯为什么还要IP?
sun shang chao
计算机网络
虽然这个问题很傻,但是我还是喜欢你这样的问题。网络是分层的,从应用层到物理层各层有各层的功能,如果一个层次没有配置就没法调用下一层的功能。因此,如果你没有配置网络层的IP地址,就没法调用数据链路层的MAC地址进行通信。追问那这样局域网就不是通过MAC通讯的了吗?要IP才能调用MAC,那就是通过IP通讯了啊回答LAN中是采用MAC通信,但是上层协议没法直接调用MAC协议,必须使用ARP协议将IP地址
分享100个最新免费的高匿HTTP代理IP
mcj8089
代理IP代理服务器匿名代理免费代理IP最新代理IP
推荐两个代理IP网站:
1. 全网代理IP:http://proxy.goubanjia.com/
2. 敲代码免费IP:http://ip.qiaodm.com/
120.198.243.130:80,中国/广东省
58.251.78.71:8088,中国/广东省
183.207.228.22:83,中国/
mysql高级特性之数据分区
annan211
java数据结构mongodb分区mysql
mysql高级特性
1 以存储引擎的角度分析,分区表和物理表没有区别。是按照一定的规则将数据分别存储的逻辑设计。器底层是由多个物理字表组成。
2 分区的原理
分区表由多个相关的底层表实现,这些底层表也是由句柄对象表示,所以我们可以直接访问各个分区。存储引擎管理分区的各个底层
表和管理普通表一样(所有底层表都必须使用相同的存储引擎),分区表的索引只是
JS采用正则表达式简单获取URL地址栏参数
chiangfai
js地址栏参数获取
GetUrlParam:function GetUrlParam(param){
var reg = new RegExp("(^|&)"+ param +"=([^&]*)(&|$)");
var r = window.location.search.substr(1).match(reg);
if(r!=null
怎样将数据表拷贝到powerdesigner (本地数据库表)
Array_06
powerDesigner
==================================================
1、打开PowerDesigner12,在菜单中按照如下方式进行操作
file->Reverse Engineer->DataBase
点击后,弹出 New Physical Data Model 的对话框
2、在General选项卡中
Model name:模板名字,自
logbackのhelloworld
飞翔的马甲
日志logback
一、概述
1.日志是啥?
当我是个逗比的时候我是这么理解的:log.debug()代替了system.out.print();
当我项目工作时,以为是一堆得.log文件。
这两天项目发布新版本,比较轻松,决定好好地研究下日志以及logback。
传送门1:日志的作用与方法:
http://www.infoq.com/cn/articles/why-and-how-log
上面的作
新浪微博爬虫模拟登陆
随意而生
新浪微博
转载自:http://hi.baidu.com/erliang20088/item/251db4b040b8ce58ba0e1235
近来由于毕设需要,重新修改了新浪微博爬虫废了不少劲,希望下边的总结能够帮助后来的同学们。
现行版的模拟登陆与以前相比,最大的改动在于cookie获取时候的模拟url的请求
synchronized
香水浓
javathread
Java语言的关键字,可用来给对象和方法或者代码块加锁,当它锁定一个方法或者一个代码块的时候,同一时刻最多只有一个线程执行这段代码。当两个并发线程访问同一个对象object中的这个加锁同步代码块时,一个时间内只能有一个线程得到执行。另一个线程必须等待当前线程执行完这个代码块以后才能执行该代码块。然而,当一个线程访问object的一个加锁代码块时,另一个线程仍然
maven 简单实用教程
AdyZhang
maven
1. Maven介绍 1.1. 简介 java编写的用于构建系统的自动化工具。目前版本是2.0.9,注意maven2和maven1有很大区别,阅读第三方文档时需要区分版本。 1.2. Maven资源 见官方网站;The 5 minute test,官方简易入门文档;Getting Started Tutorial,官方入门文档;Build Coo
Android 通过 intent传值获得null
aijuans
android
我在通过intent 获得传递兑现过的时候报错,空指针,我是getMap方法进行传值,代码如下 1 2 3 4 5 6 7 8 9
public
void
getMap(View view){
Intent i =
apache 做代理 报如下错误:The proxy server received an invalid response from an upstream
baalwolf
response
网站配置是apache+tomcat,tomcat没有报错,apache报错是:
The proxy server received an invalid response from an upstream server. The proxy server could not handle the request GET /. Reason: Error reading fr
Tomcat6 内存和线程配置
BigBird2012
tomcat6
1、修改启动时内存参数、并指定JVM时区 (在windows server 2008 下时间少了8个小时)
在Tomcat上运行j2ee项目代码时,经常会出现内存溢出的情况,解决办法是在系统参数中增加系统参数:
window下, 在catalina.bat最前面
set JAVA_OPTS=-XX:PermSize=64M -XX:MaxPermSize=128m -Xms5
Karam与TDD
bijian1013
KaramTDD
一.TDD
测试驱动开发(Test-Driven Development,TDD)是一种敏捷(AGILE)开发方法论,它把开发流程倒转了过来,在进行代码实现之前,首先保证编写测试用例,从而用测试来驱动开发(而不是把测试作为一项验证工具来使用)。
TDD的原则很简单:
a.只有当某个
[Zookeeper学习笔记之七]Zookeeper源代码分析之Zookeeper.States
bit1129
zookeeper
public enum States {
CONNECTING, //Zookeeper服务器不可用,客户端处于尝试链接状态
ASSOCIATING, //???
CONNECTED, //链接建立,可以与Zookeeper服务器正常通信
CONNECTEDREADONLY, //处于只读状态的链接状态,只读模式可以在
【Scala十四】Scala核心八:闭包
bit1129
scala
Free variable A free variable of an expression is a variable that’s used inside the expression but not defined inside the expression. For instance, in the function literal expression (x: Int) => (x
android发送json并解析返回json
ronin47
android
package com.http.test;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import
一份IT实习生的总结
brotherlamp
PHPphp资料php教程php培训php视频
今天突然发现在不知不觉中自己已经实习了 3 个月了,现在可能不算是真正意义上的实习吧,因为现在自己才大三,在这边撸代码的同时还要考虑到学校的功课跟期末考试。让我震惊的是,我完全想不到在这 3 个月里我到底学到了什么,这是一件多么悲催的事情啊。同时我对我应该 get 到什么新技能也很迷茫。所以今晚还是总结下把,让自己在接下来的实习生活有更加明确的方向。最后感谢工作室给我们几个人这个机会让我们提前出来
据说是2012年10月人人网校招的一道笔试题-给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 将重物放到天平左侧,问在两边如何添加砝码
bylijinnan
java
public class ScalesBalance {
/**
* 题目:
* 给出一个重物重量为X,另外提供的小砝码重量分别为1,3,9。。。3^N。 (假设N无限大,但一种重量的砝码只有一个)
* 将重物放到天平左侧,问在两边如何添加砝码使两边平衡
*
* 分析:
* 三进制
* 我们约定括号表示里面的数是三进制,例如 47=(1202
dom4j最常用最简单的方法
chiangfai
dom4j
要使用dom4j读写XML文档,需要先下载dom4j包,dom4j官方网站在 http://www.dom4j.org/目前最新dom4j包下载地址:http://nchc.dl.sourceforge.net/sourceforge/dom4j/dom4j-1.6.1.zip
解开后有两个包,仅操作XML文档的话把dom4j-1.6.1.jar加入工程就可以了,如果需要使用XPath的话还需要
简单HBase笔记
chenchao051
hbase
一、Client-side write buffer 客户端缓存请求 描述:可以缓存客户端的请求,以此来减少RPC的次数,但是缓存只是被存在一个ArrayList中,所以多线程访问时不安全的。 可以使用getWriteBuffer()方法来取得客户端缓存中的数据。 默认关闭。 二、Scan的Caching 描述: next( )方法请求一行就要使用一次RPC,即使
mysqldump导出时出现when doing LOCK TABLES
daizj
mysqlmysqdump导数据
执行 mysqldump -uxxx -pxxx -hxxx -Pxxxx database tablename > tablename.sql
导出表时,会报
mysqldump: Got error: 1044: Access denied for user 'xxx'@'xxx' to database 'xxx' when doing LOCK TABLES
解决
CSS渲染原理
dcj3sjt126com
Web
从事Web前端开发的人都与CSS打交道很多,有的人也许不知道css是怎么去工作的,写出来的css浏览器是怎么样去解析的呢?当这个成为我们提高css水平的一个瓶颈时,是否应该多了解一下呢?
一、浏览器的发展与CSS
《阿甘正传》台词
dcj3sjt126com
Part Ⅰ:
《阿甘正传》Forrest Gump经典中英文对白
Forrest: Hello! My names Forrest. Forrest Gump. You wanna Chocolate? I could eat about a million and a half othese. My momma always said life was like a box ochocol
Java处理JSON
dyy_gusi
json
Json在数据传输中很好用,原因是JSON 比 XML 更小、更快,更易解析。
在Java程序中,如何使用处理JSON,现在有很多工具可以处理,比较流行常用的是google的gson和alibaba的fastjson,具体使用如下:
1、读取json然后处理
class ReadJSON
{
public static void main(String[] args)
win7下nginx和php的配置
geeksun
nginx
1. 安装包准备
nginx : 从nginx.org下载nginx-1.8.0.zip
php: 从php.net下载php-5.6.10-Win32-VC11-x64.zip, php是免安装文件。
RunHiddenConsole: 用于隐藏命令行窗口
2. 配置
# java用8080端口做应用服务器,nginx反向代理到这个端口即可
p
基于2.8版本redis配置文件中文解释
hongtoushizi
redis
转载自: http://wangwei007.blog.51cto.com/68019/1548167
在Redis中直接启动redis-server服务时, 采用的是默认的配置文件。采用redis-server xxx.conf 这样的方式可以按照指定的配置文件来运行Redis服务。下面是Redis2.8.9的配置文
第五章 常用Lua开发库3-模板渲染
jinnianshilongnian
nginxlua
动态web网页开发是Web开发中一个常见的场景,比如像京东商品详情页,其页面逻辑是非常复杂的,需要使用模板技术来实现。而Lua中也有许多模板引擎,如目前我在使用的lua-resty-template,可以渲染很复杂的页面,借助LuaJIT其性能也是可以接受的。
如果学习过JavaEE中的servlet和JSP的话,应该知道JSP模板最终会被翻译成Servlet来执行;而lua-r
JZSearch大数据搜索引擎
颠覆者
JavaScript
系统简介:
大数据的特点有四个层面:第一,数据体量巨大。从TB级别,跃升到PB级别;第二,数据类型繁多。网络日志、视频、图片、地理位置信息等等。第三,价值密度低。以视频为例,连续不间断监控过程中,可能有用的数据仅仅有一两秒。第四,处理速度快。最后这一点也是和传统的数据挖掘技术有着本质的不同。业界将其归纳为4个“V”——Volume,Variety,Value,Velocity。大数据搜索引
10招让你成为杰出的Java程序员
pda158
java编程框架
如果你是一个热衷于技术的
Java 程序员, 那么下面的 10 个要点可以让你在众多 Java 开发人员中脱颖而出。
1. 拥有扎实的基础和深刻理解 OO 原则 对于 Java 程序员,深刻理解 Object Oriented Programming(面向对象编程)这一概念是必须的。没有 OOPS 的坚实基础,就领会不了像 Java 这些面向对象编程语言
tomcat之oracle连接池配置
小网客
oracle
tomcat版本7.0
配置oracle连接池方式:
修改tomcat的server.xml配置文件:
<GlobalNamingResources>
<Resource name="utermdatasource" auth="Container"
type="javax.sql.DataSou
Oracle 分页算法汇总
vipbooks
oraclesql算法.net
这是我找到的一些关于Oracle分页的算法,大家那里还有没有其他好的算法没?我们大家一起分享一下!
-- Oracle 分页算法一
select * from (
select page.*,rownum rn from (select * from help) page
-- 20 = (currentPag