nginx与apache代理配置 例子:
//nginx代理到8521端口 location /uploads/ { proxy_pass http://127.0.0.1:8521; proxy_connect_timeout 900; proxy_send_timeout 900; proxy_read_timeout 900; send_timeout 900; client_max_body_size 3000m; } //apache再将端口代理到项目目录下 <VirtualHost *:8521> ServerName localhost DocumentRoot /www/wwwroot/ogc/public DirectoryIndex index.html index.php <Directory /www/wwwroot/ogc/public> Options -Indexes +FollowSymlinks AllowOverride All Require all granted LimitRequestBody 2147483648 </Directory> </VirtualHost> 注: /www/wwwroot/ogc/public public末尾不加上/时将不包含local 例如:172.0.0.1/uploads/将代理到 /www/wwwroot/ogc/public/uploads/ 若加上/将包含local 例如:172.0.0.1/uploads/ 将代理到 /www/wwwroot/ogc/public/
declare @OrdNo Nvarchar(100), @Memo Nvarchar(100),@NoList Nvarchar(1000),@sql Nvarchar(4000)set @NoList=' where a.No in (''SO0000002'',''SO0000004'')' set @sql='select @OrdNo =no,@Memo = ''销售订单[''+No+'']导出'' from T_SalesOrder a' +@NoList print @sql execute sp_executesql @sql ,N'@OrdNo nvarchar(100) output,@Memo nvarchar(100) output',@OrdNo output,@Memo outputprint @OrdNoprint @Memo
一、基本配置 文件位置
Redis 的配置文件位于 Redis 安装目录下,文件名为 redis.conf
配置文件的地址:
我们一般情况下,会单独拷贝出来一份进行操作。来保证初始文件的安全。
Units 单位
1、配置大小单位,开头定义了一些基本的度量单位,只支持bytes,不支持bit 2、对 大小写 不敏感
INCLUDES 包含
和Spring配置文件类似,可以通过includes包含,redis.conf 可以作为总文件,可以包含其他文件!
NETWORK 网络配置
bind 127.0.0.1 # 绑定的ip protected-mode yes # 保护模式 port 6379 # 默认端口 GENERAL 通用
daemonize yes # 默认情况下,Redis不作为守护进程运行。需要开启的话,改为 yes supervised no # 可通过upstart和systemd管理Redis守护进程 pidfile /var/run/redis_6379.pid # 以后台进程方式运行redis,则需要指定pid 文件 loglevel notice # 日志级别。可选项有: # debug(记录大量日志信息,适用于开发、测试阶段); # verbose(较多日志信息); # notice(适量日志信息,使用于生产环境); # warning(仅有部分重要、关键信息才会被记录)。 logfile # 日志文件的位置,当指定为空字符串时,为标准输出 databases 16 # 设置数据库的数目。默认的数据库是DB 0 always-show-logo yes # 是否总是显示logo SNAPSHOPTING 快照
一、慢查询日志概念 对于SQL和索引的优化问题,我们会使用explain去分析SQL语句。但是真正的企业级项目有成千上万条SQL,我们不可能从头开始一条一条explain去分析。我们从什么地方可以获取那些运行时间长,耗性能的SQL??
我们可以打开慢查询日志:
根据具体的业务和并发量来预估一个时间上限(20ms、100ms),设置好后开启业务,压测后打开慢查询日志,就会看到超过执行时间的SQL,然后使用explain分析这些耗时的SQL语句
步骤如下:
打开慢查询日志开关slow_query_log
设置合理的、业务可以接受的慢查询时间上限
压测执行各种业务
查看慢查询日志,找出所有执行耗时的SQL语句
用explain分析这些耗时的SQL语句,从而针对性优化
MySQL可以设置慢查询日志,当SQL执行的时间超过我们设定的时间,那么这些SQL就会被记录在慢查询日志当中,然后我们通过查看日志,用explain分析这些SQL的执行计划,来判定为什么效率低下,是没有使用到索引?还是索引本身创建的有问题?或者是索引使用到了,但是由于表的数据量太大,花费的时间就是很长,那么此时我们可以把表分成多个小表等。
慢查询日志相关的参数如下所示:
(MySQL定义的很多的全局的开关,都是在全局变量中存储,可以用show/set variables查看或者设置全局变量的值)
慢查询日志开关默认是关闭的 慢查询日志的路径:默认在/var/lib/mysql/下
慢查询日志记录了包含所有执行时间超过参数 long_query_time(单位:秒)所设置值的 SQL语句的日志,在MySQL上用命令可以查看,如下:
这个值是可以修改的:
二、慢查询日志实践 1. 打开慢查询日志开关slow_query_log 在打开慢查询日志开关的时候,报错表示slow_query_log是一个global的变量(也有只影响当前session的变量,如:long_query_time 、profiling),修改后会影响所有的session,即影响所有正在访问当前MySQL server的客户端。
打开慢查询日志开关成功!
2. 设置合理的、业务可以接受的慢查询时间上限long_query_time 查看另一个session。
发现还是默认的10s,故long_query_time只影响当前session。
3. 压测执行各种业务 4. 查看慢查询日志 5. 用explain分析这些耗时的SQL语句,从而针对性优化 做了整表的搜索,把主键索引树整个扫了一遍。
三、show profiles查看sql具体的运行时间 MySQL一般只显示小数点后两位的时间
打开profiling开关,显示更详细的时间
没有报错,说明profiling变量只影响当前session
浏览器 Waterfox
笔记资源管理 Obsidian TidGi-Desktop
文本编辑器 NotepadNext
电子书阅读器 知之阅读
多功能工具 OpenArk
一、介绍 redis-shake是阿里云Redis&MongoDB团队开源的用于redis数据同步的工具。下载地址: https://github.com/alibaba/RedisShake/releases?spm=a2c6h.12873639.article-detail.4.4b8974957Y7slI
二、配置 第一次使用,如何进行配置: https://github.com/alibaba/RedisShake/wiki/第一次使用,如何进行配置? 官方介绍: https://developer.aliyun.com/article/691794
conf.version = 1 id = redis-shake-calling_scheduling log.file = /root/RedisShake-release-v2.1.2-20220329/logs/redis-shake-calling_scheduling.log log.level = info pid_path = /root/RedisShake-release-v2.1.2-20220329/logs/ system_profile = 9310 http_profile = 9320 parallel = 32 source.type = standalone source.address = user:password source.auth_type = auth source.tls_enable = false source.tls_skip_verify = false source.rdb.input = source.rdb.parallel = 0 source.rdb.special_cloud = target.type = proxy target.address = proxy_addr:6379 target.password_raw = target.auth_type = auth target.db = -1 target.
Linux下区分大小写Linux多用户多线程Linux下每个文件和目录都有访问权限 一:查看磁盘 # df -h#查看磁盘占用情况,同时可以查看已挂载的磁盘及其挂载位置 # fdisk -l#查看所有的磁盘分区 图中/dev/sdb下无分区信息,表示未进行初始化分区。
二:硬盘分区 # fdisk /dev/xvdb根据提示,依次输入“n”,“p”,“1”,“wq”,分区就开始了,很快就会完成m :显示菜单和帮助信息a :活动分区标记/引导分区d :删除分区l :显示分区类型n :新建分区p :显示分区信息q :退出不保存t :设置分区号v :进行分区检查w :保存修改x :扩展应用,高级功能!!!注意:fdisk分区为MBR格式,最大支持2TB,超过2TB需要用GPT格式,GPT格式需要使用parted命令,这里不再赘述。 三:格式化分区 # mkfs.ext4 /dev/sdb 注:ext4为硬盘格式# mkfs -t xfs /dev/xvdc1 根据需要格式化文件系统 格式化完成
四:挂载分区 # mkdir 文件夹名称# mount /dev/sdb1 /opt/data/ #单独挂载到某个目录,用mount挂在后重启系统挂载不再生效,需要添加开启启动。# df -h #查看磁盘使用情况和挂载情况# umount /dev/xvdb1 #卸载某个分区说明 五,添加分区自动挂载 # lsblk -f# 查看需要挂载硬盘的uuid# vim /etc/fstab修改文件添加自动挂载# echo '/dev/sdb1 /opt/data ext4 defaults 0 0' >> /etc/fstab# 也可以直接写入(用/deb/sdb1 或者 UUID 是一样的)最后用mount命令检测挂载是否有问题# mount -a 查看是否有报错 至此分区和自动挂载就完成了,之后重启服务器也不用在从新挂载。
本次学习参考哔哩哔哩视频(https://www.bilibili.com/video/BV1Go4y1U7wu)
重新加载配置文件
source 配置文件 数据库官网下载(https://downloads.mysql.com/archives/community/)不知道下载哪个系统的,RedHat就行和CentOS用的一个内核
jdk官网下载(https://www.oracle.com/java/technologies/downloads/)
tomcat下载(https://archive.apache.org/dist/tomcat/)
Linux下软件的安装部署 一 安装JDK 为什么要安装JDK?tomcat基于java语言开发的,所欲必须得安装java环境;jdk;jre 1 解压缩
Tar -zxvf jdk... -C /usr/local
-C代表解压到指定目录
2 配置环境变量
为什么要配置环境变量,在任何目录下都可以使用java命令
JAVA_HOME PATH
Vim /etc/profile//在最下面添加export JAVA_HOME=/usr/local/jdkexport PATH=$PATH:$JAVA_HOME/binwq保存后java -version //查看jdk版本 如果有结果则代表安装配置成功 3删除自带的OPEN jdk(有可能原来自带需要删除)
rpm -qa | grep jdk #查找rpm -e 软件包的名字 --nodeps //--nodeps的意思是正在运行中别人使用时也会强制删除 二 tomcat一样的操作 装好了配置好了 但是需要启动
进入到bin文件下有statup.sh 运行它[root@VM-20-14-centos bin]# ./startup.sh配置环境变量Vim /etc/profile在最下面添加export PATH=$PATH:/usr/local/tomcat7/bin 检验是否启动
1 查看系统的进程信息:ps -ef | grep tomcat2 输入url:http://ip地址:8080前提配置防火墙打开8080端口firewall-cmd --zone=public --add-port=8080/tcp --permanent或者关闭防火墙systemctl stop|start|restart firewalld 三 MySQL安装 ①解压缩,改名字
②创建用户和用户组,名字都叫mysql
前言 NoSQL数据库在2012年左右成为 流行模式,并引发了一场数据库革命,导致许多企业用基于NoSQL的数据平台取代他们传统的RDBMS技术。
有趣的是,现在这些公司中的许多人要么对他们做的这样决定感到后悔,要么发现,要继续使用他们的NoSQL解决方案,而不花费不合理的金钱或承担不合理的风险,是极其困难的。
很多客户在其他平台上实施了NoSQL,然而最初的解决方案让他们失望,于是来到了Volt Active Data,。在研究了他们的失败原因时,出现了许多共同的因素,最常见的事情之一就是对NoSQL能做什么或不能做什么的某种误解。
让我们回顾一下我们对NoSQL梦想破灭的真实经历。
误解1 我需要NoSQL,是因为SQL很慢 我们已经多次看到这种情况。因为传统的数据库很慢,所以人们倾向于认为是SQL导致了它们的缓慢。
现在我们要清楚:SQL可以很慢。破坏SQL的最简单的方法是在每次向数据库发送SQL语句时都要进行解析,而不是使用 预备语句。你也可以在复杂的查询和可疑的执行计划中获得数小时的乐趣。或者,如果你真的想让你的DBA有一个 充分就业的行为,可以使用基于成本的优化器。
但是,SQL本身并没有什么内在的缓慢。传统的SQL数据库之所以慢,是因为它们的架构可以追溯到1984年左右,那时你只有一个CPU,最小的RAM,以及一个如果你揭开盖子就可以看到旋转的磁盘。
Volt Active Data是为了解决现代硬件背景下的这个问题而建立的,在同样的硬件下,它的吞吐量是传统RDBMS的10倍左右,因为它是为现代多核CPU编写的。SQL本身并不是问题所在。
我们听到的第二个反对SQL的理由是——开发人员不喜欢它。但是正如我们上面指出的,某种形式的模式和结构是需要的,而且随着越来越多的用例得到支持,它将迅速变得更加复杂。这就是人们在NoSQL数据库中加入SQL层的原因。这反过来又让我们回到了如何让SQL快速运行的问题上,这是我们所知道的一两件事情。快速的SQL必须从一开始就被纳入架构。在NoSQL存储中添加一个SQL层,充其量会让你面临你在使用传统RDBMS时想要逃避的那种性能挑战。
围绕着数据库速度,你应该考虑的是:交易的快速运行--即在1到2毫秒内。
误解2 我可以直接使用开放源码,获得两方面的好处 管理层喜欢开源NoSQL技术的概念,不是因为他们想为代码库做贡献,而是因为它是'免费'的。
但是,开源软件是 免费的,就像给动物园提供一只“免费”大熊猫一样。熊猫本身并没有花费动物园的钱,但维护、照顾和用空运的新鲜竹子喂养肯定要花钱,用量也会迅速增加。实际上,在商业背景下,软件许可证是整个系统运行过程中相关费用和成本的一部分。因此,虽然你可能不花任何钱就能获得软件,但你不可能免费使用它。
一旦你获得了一个软件,你就需要支持它。对于开放源码,我们经常听到员工自愿自己做支持的故事。虽然这对相关人员的简历有好处,但这不一定符合公司的最佳利益。通过内部支持,他们有效地创造了一个要求,即新员工必须具有与原来的内部志愿者相同的高度专业化的技能水平。另一个选择是付钱给支持开源产品的公司来提供支持,在这种情况下,整个 开源 的区别就开始变得有点模糊了。
另一个因素是NoSQL数据库的复杂性在增加。随着他们解决更多的功能,他们变得越来越复杂,尤其是当你开始为诸如SQL和ACID事务添加子系统时。
开源的NoSQL数据库还有一个长期的问题。几乎所有成功的数据库现在都已经上市了,经常以令人瞠目结舌的估值上市。这意味着他们未来的开发工作将不可避免地集中在企业功能上,并抓住那些尚未与他们签订协议的企业客户。SSPL的崛起就是这方面的明显证据。
围绕数据库和数据平台的成本,你应该考虑什么。与它所创造的价值相比,技术的长期总成本应该是可预测、可负担的。
误解3 我们希望模式具有灵活性,所以我们需要一个无模式的NoSQL数据库 当涉及到定制和灵活性时,传统的关系型数据库是非常无助的。但多亏了JSON,现在无论你使用什么数据平台,都可以更容易地在记录层面添加额外的、自定义的数据。
也就是说,在追求灵活性的过程中,很多开发人员最终放弃了他们处理数据所需的结构。模式层面的灵活性是一把双刃剑,它将复杂性从单一的数据存储副本推向了多个客户端应用程序,所有这些应用程序都必须就自定义数据的含义达成一致。在你追踪的事物上有可选的属性和拒绝说出不同种类的事物之间也有很大的区别。迟早有一天,需要确定关键的数据结构。
虽然在一些合理的情况下,拥有一个非常灵活的模式是非常有帮助的,比如定制。但实际上并不存在真正的 无模式 数据库,因为所有的数据至少都有一个高级结构。如果数据真的没有固有的结构,那么你只需要一条记录,那就是一个BLOB,包含与业务有关的一切。
但在现实中,你与不同种类的 事物 打交道,这些 事物 具有相同的属性集,而且这些事物与其他事物相关。因此,你的数据总是有一个结构,即使它的各个组成部分有独特的属性。
事实上,任何一种自动化的数据处理都以工作结构为前提。你可以在模式内拥有无模式的区域,但这需要在更广泛的企业模式的背景下进行。
围绕模式的灵活性,应该考虑的是:有能力用任意的额外数据(即JSON)扩展记录,并为这些记录建立索引。
误解4 我需要一个NoSQL键值存储,因为我们不希望我们的服务器做应用逻辑 在我们见过的所有古怪的要求中,这在某种程度上是最奇怪的。它似乎是对使用3GL SQL操作语言(如PL/SQL)所带来的无可争辩的麻烦、苦难和痛苦的一种反应。它通常与上述要求同时出现,即服务器支持完全无模式的存储。
他们的想法是,因为一般的存储过程,特别是PL/SQL,处理起来很痛苦,所以未来与数据库的所有交互都应该限于 获取 和
投放 操作。作为一个曾经的PL/SQL开发者,我可以同情这种做法,但试图避免这种做法会产生其他更糟糕的问题。
如果处理的是一个简单的用例,对一个键/值进行一次读取,然后再进行写入修改,那么虽然可能会遇到争用和乐观锁定的问题,但事情或多或少都会正常。
当你需要读取和改变多个键,例如 A、B 和 C 时,问题就开始了。如果你按顺序读取和改变它们,你会面临两个主要问题:
有人可能在你读完A后,在你读C前改变A,导致错误的结果。 在依次写入'A'、'B'和'C'之前,依次读取它们所花费的时间会影响你的SLA。 简而言之,有一个用例的子集,需要在一个步骤中读取和修改一组相关的值,或者在出错时写很多很多的代码来清理事情。
NoSQL处理这个问题方式比较糟糕,要么是把工作转嫁给开发人员,要么是实现与使用传统RDBMS时让我们发疯的那种笨重的锁定技术。
围绕一致性和逻辑,你应该考虑什么。能够处理涉及多个数据项的复杂事务,而不必担心读取一致性或清理代码。
1.redis3.0-win版本微软已停止更新
链接:https://github.com/microsoftarchive/redis
非官方在持续更新
链接:https://github.com/tporadowski/redis
2.下载安装包msi直接安装;下载压缩包需要将服务安装到电脑,进入安装目录cmd,redis-server.exe --service-install redis.windows.conf --service-name redisserver --loglevel verbose
3.配置redis.windows.conf(requirepass password)
4.登录auth password