1.CentOS 7 下Tomcat启动超慢的原因及解决方案

2.php随机生成数据库中不存在的且不重复数字,在线等!!!!!

3.thankphp怎么生成基础控制器

4.phpcms v9 密码忘记了怎么办

5.微信小程序支付 (一、生成prepay_id) 2018-08-06

昵称随机生成系统_随机昵称生成器php

SQL Server本身就是一个完善的数据库,提供可视化编程,后台完成所有拖放处理操作,不管有没有数据都可以使用,不需要编译。

一个比较合理的数据库设计应该考虑数据的交互性和挖掘能力、处理效率以及日志记录。

建立数据表,注意以下几点:

表建立的时候要有主键和索引,表与表之间要能使用主键相联系,举例说在A表里我做完一次记录要生成一个单号,B表里面是依据单号来做下一个流程,而不是依据记录的每一条数据

取名尽量使用英文+下划线,SQL Server里对汉字需要转码,影响工作效率,按照他的默认编码方式操作有助于提高数据处理速度

建立数据表的列数不要太多,用编码规则来建立逻辑

注意字段存储空间,限制字段长度,少用注释和image

存储过程尽量简洁实用

建立视图,为了别的客户端使用,尽量建立视图,做好完整的数据分析,别的接口程序或者客户端直接就可以拿去使用。做视图注意几点:

多个表操作写在一个视图里,不要嵌套太多视图

连接查询要适当的筛选

跨服务器操作视图,要建立服务器链接表,尽量使用内网链接,把服务器链接表做成查询视图,放在本地服务器数据库里,这样就等同本地操作

视图之间保留连接字段作为主要索引

建立作业,有地进行数据同步更新和备份标识工作,注意事项:

备份数据尽量放数据库里同步复制

任务避开工作高峰期

建立存储过程,记录操作日志,把日志以数据表的形式存储,注意事项:

存储过程对本表操作,不要交互太多表

精简参数数量,注意参数存储空间

对记录修改删除、更新标记的时候尽量使用时间来索引

建立关系图,给表与表之间建立直接关系,整理整体挖掘数据性能。

建立更新任务,优化数据库整体性能。

CentOS 7 下Tomcat启动超慢的原因及解决方案

HTML表单生成器的优点

现在网页表单生成器可以用在线工具自动生成,以便让大家对创建在线表单。当用户启动建筑形式,它会自动形成数据库,脚本和后端所需要的快速集数据。一切先进的服务器上托管,所有你需要做的是开始构建表单登录一个网站,您的帐户。在线表单生成器是那么容易的过程,它可以在几分钟内完成。现在的形式是非常重要的收集和收集有用的信息,任何人,数据或信息使您的企业在竞争激烈的全球业务环境中的积极和强大的。

现在,在线表单生成器使网站制作变得非常容易。到目前为止,我们已经看到的HTML如何管理和显示的信息,主要是通过文字,图像和链接。它仍然是看我们如何与我们的游客可以交换信息。从那时起,这个新的外观是中央可以通过web进行的许多行动。我们前面看到的,我们可以通过电子邮件地址的链接,直接联系的电子邮件。但是,此选项可能会导致在某些情况下,小灵活,如果我们要的是导航器发送我们非常精确的信息,并要求游客在您的电脑上已安装的任何电子邮件程序,如OutlookExpress中。这就是为什么在HTML形式提出另一种解决方案更广泛的形式。是那些著名的文本框和按钮,可以发现很多网站上。他们都很习惯搜索或输入个人资料,如电子商务网站。这些字段中输入的数据被发送到管理员的电子邮件的形式或程序,可自动处理。

有什么可以做的一种形式吗?只能使用HTML的电子邮件的形式发送的内容,那就是,建立与各个领域的一种形式,当你按下“发送”按钮,生成一个组成窗口电子邮件与数据用户进入这些领域,我们经常会想要做的东西更复杂的形式,自动发送邮件到电子邮件,而无需通过任何电子邮件程序的内容由。这种形式将处理程序。东西可以更复杂一点,因为我们必须使用其他更复杂的HTML语言本身。在这种情况下,最简单的解决方案是使用预先设计的方案,我们提供了大量的托管服务器,并允许我们存储和处理数据文件或其它格式的形式。如果您的网页托管的服务器上,为您提供这种好处,你总是可以求助于第三方服务器提供的网站或其他免费服务。当然,另一种选择是学习语言如ASP或PHP,除其他外,将允许处理形式。因此,在总结,你可以使用HTML表单生成器,轻松地与不同类型的字段建立HTML表单,如文本框,单选按钮,复选框,下拉菜单等。但是,应该明确的是,因为你不能直接发送HTML邮件,它会生成一个电子邮件到访问者的计算机,它将不得不把“手动”,使用您的电子邮件程序。如果你想要的形式自动发送,或者在服务器上处理生成另一个响应,我们需要的编程语言。

php随机生成数据库中不存在的且不重复数字,在线等!!!!!

CentOS 7系统中安装好openjdk和Tomcat后,启动过程很慢,长达数分钟,日志如下:

tomcat启动耗时278084ms折合278秒,对于刚刚安装的干净tomcat,这肯定是不对劲的。

其中有一条日志引起了笔者的注意:

显然tomcat执行到这里时出问题了,google了一下,经过一番搜索明白了其中的缘由。

在tomcat官方wiki文档的 HowToFasterStartUp 章节中,Entropy Source部分有一段这样的说明:

从这里我们得知Tocmat的Session ID是通过SHA1PRNG算法计算得到的,计算Session ID的时候必须有一个密钥,为了提高安全性Tomcat在启动的时候会通过随机生成一个密钥,它强依赖于获取熵池中的随机数来进行创建。

那么什么是 /dev/random ?什么是 熵池

/dev/random

从得知,在UNIX操作系统(包括类UNIX系统)中, /dev/random 是一个特殊的设备文件,可以用作随机数生成器或伪随机数生成器。

Linux内核中的是第一个以 背景噪声 产生真正的随机数产生的实现,它允许程序访问来自设备驱动程序或其它来源的背景噪声。

Linux上有两个通用的随机设备: /dev/random 和 /dev/urandom 。其中 /dev/random 的随机性最好,因为它是一个阻塞的设备。而 /dev/random 的一个副本是 /dev/urandom (“unblocked”,非阻塞的随机数生成器),它会重复使用熵池中的数据以产生伪随机数据。这表示对 /dev/urandom 的读取操作不会产生阻塞,但其输出的熵可能小于 /dev/random 的。所以它可以作为生成较低强度密码的伪随机数生成器,不建议用于生成高强度长期密码。

熵池

熵池本质上是若干字节, /proc/sys/kernel/random/entropy_ail 中存储了熵池现在的大小, /proc/sys/kernel/random/poolsize 是熵池的最大容量,单位都是bit。如果 entropy_ail 的值小于要产生的随机数bit数,那么 /dev/random 就会堵塞。

为什么熵池不够用?

熵池实际上是从各种noice source中获取数据,noice source可能是键盘、鼠标、设备时钟中等。linux内核从2.4升级到2.6时,处于安全性的考虑,废弃了一些source。source减少了,熵池补给的速度当然也变慢,进而不够用。

其实,通过消耗熵池,可以构造DDOS攻击。原理很简单,熵池空了,依赖随机数的业务(SSL,加密等)就不能正常进行。

通过以上信息,笔者得知该问题是由于熵池不足导致的。 怎么解决?

使用非阻塞性的生成器 /dev/urandom 代替 /dev/random 。

1、可在JVM环境中配置

通过配置发生器指定熵收集守护进程

修改 $JAVA_PATH/jre/lib/security/ja.security 中参数 securerandom.source 为:

2、也可在Tomcat环境中配置

通过配置JRE使用非阻塞的Entropy Source获取熵

在 $TOMCAT_HOME/bin/catalina.sh 中加入:

这个系统属性egd表示熵收集守护进程(entropy gathering daemon)。

1、[硬件随机数生成器]安装并使用rng-tools作为额外的熵随机数生成器(推荐)

cat /dev/random 命令会消耗熵池, rngd 守护进程会补充熵池,可使用如下命令来测试随机数生成的情况:

2、[软件随机数生成器]在rng-tools仍不满足的情况下,可使用heged作为额外的熵随机数生成器

要检查是否需要 Heged,可使用下面命令查看当前收集到的熵:

如果结果比较低 (<1000),建议安装 heged,否则加密程序会处于等待状态,直到系统有足够的熵。

安装 heged 之后,可以再次查看系统熵看下有无提升。

因为方法一存在一定的不安全性,且需要对环境进行配置,为了满足熵的需要,这里笔者选择了第二种方法,使用rng-tools作为额外的熵随机数生成器,同以上操作后顺利解决了问题。

操作后重启tomcat日志如下,启动速度快了两个数量级:

参考文档:

s://stackoverflow/questions/40383430/tomcat-takes-too-much-time-to-start-ja-securerandom

s://bugs.ja/bugdatabase/view_bug.do?bug_id=6202721

://openjdk.ja.net/jeps/123

s://zh.wikipedia.org/zh-hans//dev/random

s://wiki.apache.org/tomcat/HowTo/FasterStartUp

s://access.redhat/documentation/en-us/red_hat_enterprise_linux/6/html/security_guide/sect-security_guide-encryption-using_the_random_number_generator

s://wiki.archlinux.org/index.php/Rng-tools

s://wiki.archlinux.org/index.php/Heged

s://.digitalocean/community/tutorials/how-to-setup-additional-entropy-for-cloud-servers-using-heged

thankphp怎么生成基础控制器

说下思路:

1. 将生成的数字保存到mysql数据库,然后每次生成的号码不能与数据库的数字重复,请问怎么弄?

先读取数据库已存在的数字,将结果以数组格式,与rand(1,1000)的数组相比较计算差集,去除这部分数字(array_diff),再shuffle,得到新的随机数。

我觉得,你完全可以建立一个序号表,比如,1-1000,每次用时先用随机函数取(1-数据记录数)个数值,再用这个数值取得相应的记录,当取出之后,删除这个记录,这样保证记录总数一直会减少且数字也不会重复。

2. 有没有什么办法生成的时候先生成一位数的,一位数生成满了以后再生出两位数的,两位数满了然后再三位数的,以此类推?

先获取一位数的记录,再从中随机抽取一个,如果数据库中没有找到一位数的,就递增一位数,直到找到为止。

3. 代码的执行效率希望能越高越好!

如果想要代码执行效率,最好尽量减少与数据库的交互。

phpcms v9 密码忘记了怎么办

工具原料:电脑+thinkphp

thinkphp生成基础控制器方法如下:

一、目录对应关系

F:\\PHP├─index.php ? 入口文件├─README.md ? README文件├─Application 应用目录├─Public ?文件目录└─ThinkPHP 框架目录

二、thinkphp 的目录结构

ThinkPHP 的目录结构非常清晰和容易部署。大致的目录结构如下,以项目为基础进行部署。

┎━ThinkPHP 框架系统目录┃ ┝ ThinkPHP.php 系统公共文件┃ ┝ Common 公共文件目录┃ ┝ Tpl 框架系统模版目录┃ ┝ Lang 系统语言包目录┃ ┝ PlugIns 公共插件目录┃ ┗ Lib 系统基类库目录┃ ┝ Think 系统运行库(必须)┃ ┝ Com 扩展类库包(非必须)┃ ┗ ORG 扩展类库包(非必须) ┃┝━Application 应用目录、项目目录┃ ┝ index.php 项目入口文件(可任意放置)┃ ┝ Cache 模版缓存目录┃ ┝ Common 公共文件目录(非必须)┃ ┝ Conf 项目配置目录┃ ┝ Data 项目数据目录┃ ┝ Html 静态文件目录(非必须)┃ ┝ PlugIns 插件目录(非必须)┃ ┝ Tpl 模版文件目录┃ ┝ Lang 语言包目录(非必须)┃ ┝ Logs 日志文件目录┃ ┝ Temp 数据缓存目录┃ ┗ Lib 应用类库目录┃ ┝ Action 控制器(模块)类目录┃ ┝ Model Model 类文件目录┃ … 下面的应用目录可根据需要选择和定义┃ ┝ Exception 异常类库目录┃ ┝ Common 公共应用类目录┃ ┗ Help 助手类目录┃┃…更多项目目录(和App 目录类似,每个项目用独立目录,便于部署)┃┝━Public 网站公共目录(多项目公用)┃ ┝ Js JS 类库目录(建议)┃ ┝ Images 公共图像目录(建议)┃ ┗ Uploads 公共上传目录(建议)

三、“F:\PHP\Application”目录下有个“home”目录,这是ThinkPHP自动生成的一个控制器,

主要文件是“F:\PHP\Application\Home\Controller\IndexController.class.php”,文件内容如下图:

在地址栏输入“://localhost/index.php”,回车,看到的内容,就是这个文件中“Index”函数中的内容。

三、访问规则

就“home”目录下的控制器举例,您可以通过以下URL地址访问:

://localhost/index.php

://localhost/index.php/Home

://localhost/index.php/Home/Index

://localhost/index.php/Home/Index/Index

四、创建第一个控制器?

在“F:\PHP\Application”目录下新建一个目录“Index”,偷个赖,把“F:\PHP\Application\Home”目录下的内容都复制

到“F:\PHP\Application\Index”目录下,打开“F:\PHP\Application\Index\Controller\IndexController.class.php”文件,

为了确定访问的确实是新加的内容,在“Index”函数中添加点东西,代码如下:

五、通过以下URL地址访问:

://localhost/index.php/Index

://localhost/index.php/Index/Index

://localhost/index.php/Index/Index/Index

六、修改惯例配置

ThinkPHP的默认模块名称是“Home”,也就是说如果在浏览器地址栏中输入“://localhost/index.php”的话,默认访问的是“://localhost/index.php/Home”。

修改方法:用文本编辑工具打开“F:\PHP\ThinkPHP\Conf\convention.php”文件,

修改第44行为:'DEFAULT_MODULE' => ?'Index', ?// 默认模块

微信小程序支付 (一、生成prepay_id) 2018-08-06

那就重置新密码。你问题里描述的很模糊,所以我们来分两种情况,但都基于你是管理人员或开发人员,也就是你有后台或服务器数据库的链接权限,如不是那你改不了:

你忘记的是前台会员密码。修改办法:登录后台-会员-会员管理-会员列表找到对应账号-修改-密码和确认密码中填入新密码-确定,修改成功。

你忘记的是后台管理员密码。

如不是超级管理员,找(登录)超级管理员给你重置,后台-设置-管理员管理-修改;

如果是超级管理员,这里就需要直接修改数据库数据了,操作方法如下:

① 在php运行环境下创建一个php文件,例如index.php。然后自己设置一个6位随机字符串,例如"abc123",加入你要充值的新密码是‘111111’,那么在php中运行一下程序:

echo?md5(md5('111111').'abc123');

② 运行后会获得一个加密串,以上便是phpcms的密码加密方式获得的加密串,把它复制到数据库v9_admin数据表中的password字段,然后把6位随机串(abc123)填入encrypt字段。保存,用新密码登录即可。

以上就是phpcms中前后台密码修改办法,那么如果后台操作不熟悉可以看下官方的操作手册,如果对php不熟悉,操作起来你可能比较吃力,这里给你推荐一个傻瓜式可视化的修改操作办法,在iphpcms里面提供了管理员密码生成器,如下图,你可以使用它轻松的生成上面提到的加密传复制到数据库就可以,不用自己写php程序生成了,而且在站长杂谈栏目中有的教程。

输入要设置的新密码:

点击生成:

微信公众平台: 微信公众平台

s://mp.weixin.qq/

商户平台: 商户平台

s://pay.weixin.qq/index.php/core/home/login

开发手册 api 是:?

s://pay.weixin.qq/wiki/doc/api/index.html

s://pay.weixin.qq/wiki/doc/api/wxa/wxa_api.php?chapter=9_1

生成XML的测试接口: 测试接口

s://pay.weixin.qq/wiki/tools/signverify/

32位随机码生成器

1 配置参数, 一个都不能少(这些都是必填的,还有其他选填的参数,也可以随心情填写)

id 此小程序的唯一标识 例如:wxed9dxxx6d6cxxx9e

body 可以写商品描述 例如:我是商品描述,用户买了两个馒头

mch_id 商户id 需在 商户平台 ?查看(申请商户平台成功就会得到) 如: 149411***2

nonce_str 随机字符串(别带小数点(没考证 感觉)) 例如:76521019851170500000

notify_url 成功后的通知地址 例如:s://baidu.top/callbackofpay

openid 用户的唯一标识 在用户使用小程序的时候通过其 code 换取 openid?

例如:?obxgc5CgBbgKDrvcxxxxxJ-xxxxx

out_trade_no商户订单号 例如:20180805740161 需要无重复

spbill_create_ip 终端ip(服务器的ip)貌似 127.0.0.1 就行

total_fee 此单的交易额度(钱 money) 例如:888 单位是 分钱。及8.88元钱 ( 注意是数值型,非字符型,除此之外其他的都是字符型 )

trade_type 小程序用 'JSAPI' 其他看api

2 将以上参数(必要参数一个不能少)按照 key 字典排序,进行拼接。

例如: id=wxedxxx2xxx6c03e9e&body=我是商品描述,用户买了两个馒头.&mch_id=149411***2&nonce_str=76521019851170500000 ......

3 在结尾加上 商户的秘钥?mch_key (需在商户平台配置 在:账户中心-->账户设置-->API安全-->API秘钥 ,可以用 32位随机码生成器 ?生成)

+ "&key=" + mch_key

5 对拼接成的字符串,进行md5加密-->转大写 -->生成 签名 sign

例如:?425F6561A654B366B5519F000CF2AE61

6 将以上参数拼成? xml

let _xmlUnifiedorder = `

${myObj.id}

${myObj.body}

${myObj.mch_id}

${myObj.nonce_str}

${myObj.notify_url}

${myObj.openid}

${myObj.out_trade_no}

${myObj.spbill_create_ip}

${myObj.total_fee}

${myObj.trade_type}

${sign}

`;

7 携带参数 post 访问?s://api.mch.weixin.qq/pay/unifiedorder 接口

如果正确 会成功得到 xml格式的?prepay_id ,如果签名错误进行下面的错误查找。

~~:进行错误查找? 可以拿出参数在? 测试接口 ?进行测试 ,无异常可以正常生成 xml之后,如果还报错。

试着 更改 商户平台的秘钥 (详细请看第 3 步)。貌似很多人都踩这个雷了? ...

<code>

// 字典排序 key1=xxx&key2=zzz 拼接成字符串

function joinToStr(_obj) {

let keyArr = [];

for (let key in _obj) {

keyArr.push(key);

}

keyArr = keyArr.sort();

console.log("keyArrSort--->", keyArr);

// paySign = MD5(Id=wxd678efh567hg6787&nonceStr=5K8264ILTKCH16CQ2502SI8ZNMTM67VS&package=prepay_id=wx201703302291fcfe0db70013231072&signType=MD5&timeStamp=1490840662&key=qazwsxedcrfvtgbyhnujmikolp111111) = 22D9B4E54AB1950F51E0649E8810ACD6

// _str 是 paySign 中MD5 包裹的字符串部分

let _str = "";

let len = keyArr.length;

for (let i = 0; i < len; i++) {

if (i == len - 1) {

_str += (keyArr[i] + "=" + _obj[keyArr[i]]);

} else {

_str += (keyArr[i] + "=" + _obj[keyArr[i]] + "&");

}

}

return _str;

}

</code>