public function doPageOrderarr() { global $_GPC, $_W; $openid = $_GPC[openid]; $appData = pdo_get(fyly_sun_system, array(uniacid => $_W[uniacid])); $appid = $appData[appid]; $mch_id = $appData[mchid]; $keys = $appData[wxkey]; $price = $_GPC[price]; include IA_ROOT . /addons/fyly_sun/wxpay.php; $appid = $appid; $openid = $openid; $mch_id = $mch_id; $key = $keys; $total_fee = $price; $out_trade_no = $mch_id . time() . rand(1000, 9999); if (empty($total_fee)) { $total_fee = floatval(99 * 100); } else { $total_fee = floatval($total_fee * 100); } $body = 1; $weixinpay = new WeixinPay($appid, $openid, $mch_id, $key, $out_trade_no, $body, $total_fee); $return = $weixinpay->pay(); echo json_encode($return); } <?
这学期的信息论与编码的课设需要用编程语言实现霍夫曼、费诺以及香农编码,要具备在windows下的可视化操作界面,因此就选用PyQt作为开发工具,本篇博客记录一下PyQt的基础以及课设的实例 参考: 《PyQt5从入门到实践》 PyQt5官方帮助文档
PyQt基础 PyQt就是Qt的python接口,目前主要有3个版本:PyQt3、PyQt4以及PyQt5,其中PyQt5不向下兼容PyQt4,且官方默认只提供对python3.x的支持 PyQt5的主要的类如下: PyQt5的主要模块如下: 开发环境搭建 实例:信息论与编码课程设计
1.JAVA程序运行机制 Java既是编译型语言,也是解释性语言
java在编程完毕后,需要使用javac命令进行预编译(Java编译器),将.java源文件编译为.class类文件
.class类文件,也叫字节码文件,是介于java源代码和机器码之间的文件
真正被系统执行的实际上是.class这个类文件,到这一步,是编译型语言的特性
.class类文件在执行时,首先被装进JVM虚拟机的类装载器中,叫做加载
然后通过JVM的字节码校验器对代码进行校验,没有问题的话,会由解释器向系统一步一步进行解释
操作系统平台会根据解释器的解释,一步一步运行这个.class类文件,这实际上是解释性语言的特性
2.IDEA安装 IDEA官网:https://www.jetbrains.com/
点击图标即可进入IDEA的单独官网页面
在IDEA的单独官网页面点击Download即可进入下载页面
下载页面可以根据需要选择操作系统,以及旗舰版或社区版(左边旗舰版的功能更多,是收费版)
点击对应的DOWNLOAD即可下载
下载完毕是一个EXE文件,直接点击安装,到这里选择安装位置,然后下一步
这里选择桌面快捷方式的版本为64位,下面创建关联选择java然后即可安装完毕
3.IDEA的使用 启动IDEA后的首个页面如下图所示
这里选择第一个创建一个新的项目
然后会进入如下图所示的设置页面
左边选择第一个Java,右边Project SDK选择咱们之前安装的JDK,如果报红,点击后面的new选项里手动指定JDK的安装路径,如下图所示
然后直接下一步,直到来到如下页面,这里是选择创建项目的名字,以及项目的地址。比如下面就是在桌面上新创建一个名为Hello的JAVA项目
点击finish后,如果在设置的地址处没有和项目同名的文件夹,会自动创建一个(图中的小提示框)
之后会在桌面上创建一个Hello文件夹
打开Hello文件夹后,如下图所示,这里只需要看一下目录的结构就行了
IDEA会在自己的界面加载这个目录
选中蓝色src文件夹,NEW一个java class,即新建一个类
然后需要为这个类命名
这里将类名也命名为Hello,点击OK后到如下界面
这就是JAVA代码新建一个类的初始页面了
4.IDEA的设置 点击左上角File,然后选择Settings,即可进入设置页面
设置页面如下图所示
左上的搜索栏里可以快速搜索想要的设置,比如设置字体样式和大小,可以输入font,如下图所示
一.事务
什么是事务???
事务就相当于一个盛放sql的容器
事务中的sql要么全部执行成功,要么所有已经修改的操作都回滚到原来的状态,即一条sql也别想执行成功
为何要用事务???
为了保证数据的安全,一致性
事务有四大特征:
1.原子性
2.一致性
3.隔离性
4.持久性:commit成功之后,就无法回滚了
start tranction——>开启事务
update employee set age=age+1 where name ='egon'
savepoint one——>设置保存点,少用
commit————>提交之后操作不能回滚,提交之前rollback回滚操作
事务运行的三种模式:
show variables like autocommit:查看事务级别
set autommit = 0:设置事务级别
自动提交事务(隐式开启,隐式提交)
隐式事务(隐式开启,显式提交)
显式事务(显式开启,显式提交)
事务的使用原则: 1.保持事务短小
2.尽量避免事务中rollback
3.尽量避免savepoint
4.显示声明打开事务
5.默认情况下,依赖于悲观锁,为吞吐量要求苛刻的事务考虑乐观锁
6.锁的行越少越好,锁的时间越短越好
二.数据库读现象——>在并发场景下,数据不安全的一种体现
读现象——>在高并发情况下,即多个并发的事务同时操作一份数据,在没有加锁处理的情况下,会引发一些奇怪的读现象
脏读:一个事务读取了其它事务还没有提交的数据,读到的是其它事务更新的数据 不可重复读:一个事务多次读取,结果不一样 幻读:一个事务读取了其它事务还没有提交的事务,只是读取的是其它事务插入的数据
比赛链接 多比特杯武汉工程大学第四届ACM程序设计竞赛同步赛 E.讨厌的字符串 题目描述 现在你的面前有一个字符串长度为 \(n\),你看他很不爽所以你想将它一刀两断,你可以从中间切一刀使字符串变成两半,我们将前一半记作\(s_1\),将剩下一半记作\(s_2\),如果满足\(s_1\),\(s_2\) 中都没有前导0并且存在两个正整数\(c\),\(d\)使得 d%c0(即d是c的倍数) && d/cs1 && c*d==s2 那么我们把这种分发成为一种合法拆分方式,如果一个字符串有2种或者2种以上的合法拆分方式那样我们就把这个字符串成为一个合法字符串。 现在给定一个正整数 \(n (1\leq n \leq 300\))请问是否可以构造出一个合法字符串,如果可以请在第一行输出'YES'否则输出'NO'
输入描述: 输入一个正整数 \(n (1\leq n \leq 300)\)
输出描述: 输出 'YES' 或者 'NO' (不包含引号)
示例1 输入 9 输出 YES 说明 s = 164000000
示例2 输入 10 输出 YES 说明 s = 1144000000
解题思路 构造
0、准备 PC with Linux 需要备份的装有系统的SD卡 等待移植系统的空白SD卡 读卡器 1、系统备份成镜像文件 将待备份SD卡通过读卡器连接至PC,查看挂载的内存空间
sudo fdisk -l 本次插入的SD大小为64GB,对应/dev/sdb
进行备份
sudo dd if=/dev/sdb conv=sync,noerror bs=4M | gzip -c > ~/backup_image.img.gz 查看备份进度
sudo pkill -USR1 -n -x dd 2、备份恢复 插入希望写入系统的空白SD卡,重复上述操作确定SD卡的位置
进行写入
sudo su gunzip -c ~/backup_image.img.gz | dd of=/dev/sda bs=4M ~/backup_image.img.gz为备份文件的位置
/dev/sda为新插入的SD卡的位置
1.前言 1.1. Linux的起源 linux是开源的,任何人都可以去看它的源代码,去了解它的内部实现,而且linux非常自由,没有黑盒子,它允许你干任何事,这对我们深入学习计算机有非常重要的帮助。linux最初是作为支持英特尔x86架构的个人电脑的一个自由操作系统。目前Linux已经被移植到更多的计算机硬件平台,远远超出其他任何操作系统。Linux可以运行在服务器和其他大型平台之上,如大型主机和超级计算机。世界上500个最快的超级计算机90%以上运行Linux发行版或变种,包括最快的前10名超级电脑运行的都 是基于Linux内核的操作系统。
Unix --> Minix (mini-UNIX) -> Linux
1984年,Andrew S.Tanenbaum 开发了用于教学的Unix系统,命名为Minix,但是仅仅用于教学
1989年,Andrew S.Tanenbaum将Minix系统运行于x86的pc平台
1990年,芬兰赫尔辛基大学学生Linus Torvalds首次接触Minix系统
1991 年, 21岁的荷兰在校大学生林纳斯(Linus)发布第一版.
1994 年 3 月,Linux 1.0 发布,代码量 17万行,当时是按照完全自由免费的协议发布, 随后正式采用 GPL(General Public License 的缩写,是一份 GNU 通用公共授 权)协议。
至此,Linux开始盛行开来...
1.1.1.Unix 可能大家首先看到Unix会有点奇怪,我们要讲的不是Linux吗?怎么蹦出个Unix,虽然它和Linux长得有点像。因为它们确实有很深的渊源!
Unix 是在1969年美国贝尔实验室的 肯.汤普森开发出来的一款操作系统,什么是操作系统?大家正在玩的 Windows 和 Max OS就是两个操作系统。操作系统是用户和计算机的接口,同时也是计算机硬件和应用程序的接口,也就是说我们和计算机打交道以及计算机底层硬件和应用程序打交道都是通过操作系统。如下所示:
而我们所说的Unix也是一个操作系统,其源代码大部分都是用C语言写的。它是一个强大的多用户、多任务操作系统,而且支持多种处理器架构。在1984年,Unix用户协会颁发了使用标准。后来IEEE为此制定了POSIX标准(即IEEE1003标准)国际标准名称为ISO/IEC9945,它通过一组最小的功能定义了在UNIX操作系统和应用程序之间兼容的语言接口。这个标准很重要,后面很多系统的开发都是遵循这个标准来的。
虽然Unix系统这么好用,但是很不幸,它是一个对源代码实行知识产权保护的传统商业软件,也就是说Unix系统源代码不开源,而且Unix系统也是一个收费软件。这也直接导致了Linux系统的诞生。
1.1.2.Linux UNIX 最初免费发布,在1990年,UNIX 在服务器市场尤其是大学校园成为主流操作系统,许多校园都有 UNIX 主机,当然还包括一些研究它的计算机系的学生。这些学生都渴望能在自己的电脑上运行 UNIX 。不幸的是,从那时候开始,UNIX 开始变得商业化,它的价格也变得非常昂贵。而唯一低廉的选择就是 MINIX ,这是一个功能有限的类似 UNIX 的操作系统,作者 Andrew Tanebaum 开发它的目的是用于教学。
比较运算符
== 等于(类型不一样 值一样 也会判断为true) === 绝对等于(类型一样 值一样 结果为true) 坚持不要使用== ·nan===nana 这个与所有的数值都不相等 包括自己 ·只能通过isNaN(NaN)来判断这个数是否是NaN
console.log((1/3)===(1-2/3)) 尽量避免使用浮点数进行运算,存在精度问题 null和undefined的区别 ·null 空 ·undefined 未定义
数组 java的数组必须是相同类型的对象 JavaScript不需要这样
<!--JAVAScript严格区分大小写--> <script> //1.定义变量 变量类型 变量名 = 变量值 //2. 条件控制 //变量var //console.log(score) 在浏览器的控制台打印变量! var person = { name: flower, age: 3, tags:['js','java','web','.....'] } </script> 'use strict';//严格检查模式 预防JavaScript的随意性导致产生的一些问题
Nginx 重写(location / rewrite)
目录Nginx 重写(location / rewrite)常见的nginx正则表达式locationlication的分类location 常用的匹配规则location 匹配的优先级location 示例通用匹配正则匹配lcation 匹配实际网站使用中,至少有三个匹配规则定义第一个必选规则第二个必选规则第三个规则rewriterewrite跳转场景Rewrite 跳转实现rewrite 执行顺序语法格式rewrite 示例基于域名的跳转基于客户端 IP 访问跳转基于旧域名跳转到新域名后面加目录基于参数匹配的跳转基于目录下所有 php 结尾的文件跳转基于最普通一条 url 请求的跳转
常见的nginx正则表达式 ^ 匹配输入字符串的起始位置(已什么开头)。 $ 匹配输入字符串的结束位置(已什么结尾)。 * 匹配前面的字符零次或多次。如01*能够匹配到0、01、011、0111.......。 + 匹配前面的字符一次或多次。如01*能够匹配到01、011、0111.......。 ? 匹配前面字符零次或一次。如01?只能能够匹配到0、01。 . 匹配除”\n“之外的任意一个字符,若要匹配包括”\n“在内的任意字符则使用”[.\n]“之类的表达式 \ 转义符 \d 匹配出数字效果于[0-9]一致 \s 空白符 \w 任意单词字符包括下划线 {n} 匹配前面表字符n次 {n,} 匹配前面字符不少于n次 {n,m} 匹配前面字符n到m次 [] 定义匹配的字符范围 [c] 匹配单个字符c [a-z] 匹配a-z小写字母任意一个 [a-zA-Z0-9] 匹配范围大小写字母及数字 () 看成整体匹配 | 或运算符 location lication的分类 精准匹配 location = / {.
Nginx配置文件结构 设置worker进程的用户,指的linux中的用户,会涉及到nginx操作目录或文件的一些权限,默认为 nobodyuser root;
worker进程工作数设置,一般来说CPU有几个,就设置几个,或者设置为N-1也行。worker_processes 1;
nginx日志级别 debug |info |notice |warn | error | crit 丨 alert | emerg,错误级别从左到右越来越大
#error_log logs/error.log; #error_log logs/error.log notice; #error_log logs/error.log info; 设置nginx进程 pid
pid logs/nginx.pid;
设置工作模式
events { # 默认使用epolL use epoll; # 每个worker允许连接的客户端最大连接数 worker_connections 1024; } http 是指令块,针对http网络传输的一些指令配置
http { } include引入外部配置,提高可读性,避免单个配置文件过大
include mime.types;
设定日志格式, main 为定义的格式名称,如此 access_log就可以直接使用这个变量了