本文将介绍Linux上使用二进制的详细情况,特别是关于预编译文件安装MySQL的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于.NetCoreRaz
本文将介绍Linux 上使用二进制的详细情况,特别是关于预编译文件安装 MySQL的相关信息。我们将通过案例分析、数据研究等多种方式,帮助您更全面地了解这个主题,同时也将涉及一些关于.Net Core Razor 预编译,动态编译,混合编译、2014.12.26 注释,预编译,命名空间,变量规范、Angular 中的 Bootstrap 4,使用 npm 添加 custom.css 文件安装、Can''t create more than max_prepared_stmt_count statements (current value: 16382) MYSQL 预编译 SQL 数量超过限制问题的知识。
本文目录一览:- Linux 上使用二进制(预编译)文件安装 MySQL(linux二进制包安装)
- .Net Core Razor 预编译,动态编译,混合编译
- 2014.12.26 注释,预编译,命名空间,变量规范
- Angular 中的 Bootstrap 4,使用 npm 添加 custom.css 文件安装
- Can''t create more than max_prepared_stmt_count statements (current value: 16382) MYSQL 预编译 SQL 数量超过限制问题
Linux 上使用二进制(预编译)文件安装 MySQL(linux二进制包安装)
安装配置
# 安装MySQL依赖的libaio库
shell> yum search libaio # search for info
shell> yum install libaio # install library
# 安装MySQL依赖的libaio库
shell> yum search libnuma # search for info
shell> yum install libnuma # install library
编写安装脚本
vim mysql.sh
#!/bin/bash
# 创建用户组
groupadd mysql
# 创建用户,禁止登陆
useradd -r -g mysql -s /bin/false mysql
cd /usr/local
# 解压缩
tar -zxvf mysql-VERSION-OS.tar.gz
# 重命名
mv mysql-VERSION-OS mysql
cd mysql
# 创建数据目录
mkdir mysql-files
# 设置用户和组
chown mysql:mysql mysql-files
# 设置权限
chmod 750 mysql-files
yum remove mariadb-libs -y
# 使用服务器初始化数据目录,生成随机初始的`root`密码,并标记为已过期,初始密码写入标准错误输出
bin/mysqld --initialize --user=mysql
# 服务器支持安全连接
bin/mysql_ssl_rsa_setup
# 启动MySQL
bin/mysqld_safe --user=mysql &
cp support-files/mysql.server /etc/init.d/mysql.server
# 将mysql/bin加入环境变量
echo ''export PATH=$PATH:/usr/local/mysql/bin'' >> /etc/profile
source /etc/profile
运行安装脚本
source mysql.sh
......
[Warning] A temporary password is generated for root@localhost:
iTag*AfrH5ej
配置及测试
shell> mysql_secure_installation
shell> mysql -u root -p
shell> mysql -h 127.0.0.1 -P 3306 -u root -p
参考:https://dev.mysql.com/doc/ref...
MySQL 目录结构
/usr/local/mysql
目录 | 内容 |
---|---|
bin | mysqld 服务端、客户端和二进制文件 |
docs | MySQL 手册 |
man | Unix 手册 |
include | 头文件 |
lib | 类库 |
share | 错误消息,字典和用于数据库安装的SQL |
support-files | 杂项支持文件 |
/etc/my.cnf | 配置文件 |
/etc/mysql/my.cnf | 配置文件 |
其他安装方式
在Microsoft Windows上安装MySQL
使用MySQL Yum存储库在Linux上安装MySQL
使用Oracle的RPM软件包在Linux上安装MySQL
使用Docker在Linux上部署MySQL
从本地软件存储库在Linux上安装MySQL
从源代码安装MySQL
.Net Core Razor 预编译,动态编译,混合编译
预编译
预编译是ASP .Net Core的默认方式。在发布时,默认会将系统中的所有Razor视图进行预编译。编译好的视图DLL统一命名为 xxx.PrecompiledViews.dll
或者 xxx.Views.dll
动态编译
将项目整个配置成动态编译很简单,添加一个配置项目MvcRazorCompileOnPublish
,值为false
即可
<PropertyGroup>
<MvcRazorCompileOnPublish>false</MvcRazorCompileOnPublish>
</PropertyGroup>
这样在发布的时候,所有的Razor视图都不会被预编译了,并且所有的视图都会一同被发布。
注意:在ASP .Net 2.2以后,仅在开发环境下,修改视图可时时生效。发布以后产线环境修改视图是不会立即生效的,要重启程序才会生效。详细可参阅:https://docs.microsoft.com/en-us/aspnet/core/mvc/views/view-compilation?view=aspnetcore-2.2
如果希望在产线环境也可以修改视图时时生效,需要主动设置RazorViewEngineOptions.AllowRecompilingViewsOnFileChange
的值为true
public class RazorViewEngineOptionsSetup : ConfigureOptions<RazorViewEngineOptions>
{
public RazorViewEngineOptionsSetup(IHostingEnvironment hostingEnvironment, IPluginLoader loader) :
base(options =>
{
options.AllowRecompilingViewsOnFileChange = true;
})
{
}
}
然后添加到容器中:
services.TryAddEnumerable(ServiceDescriptor.Singleton<IConfigureOptions<RazorViewEngineOptions>, RazorViewEngineOptionsSetup>());
混合编译
预编译和动态编译都有各自的优点,你可以选择将它们混合起来使用。例如如果你希望在发布时只预编译部分视图,而部分视图要采用动态编译的模式,可以在项目文件上配置排除不需要预编译的视图。例如将Views目录下的全部进行预编译,而主题目录和邮件模板目录下的视图不需要预编译:
<ItemGroup>
<MvcRazorFilesToCompile Include="Views\**\*.cshtml" Exclude="wwwroot\themes\**\*.cshtml;EmailTemplates\**\*.cshtml" />
</ItemGroup>
进阶
关于更多Razor的配置,可以参阅微软的官方说明文档:https://docs.microsoft.com/en-us/aspnet/core/razor-pages/sdk?view=aspnetcore-2.2
原文地址:http://www.zkea.net/codesnippet/detail/razor-compilation.html
2014.12.26 注释,预编译,命名空间,变量规范
<h4>注释:</h4> <blockquote> <p>传统C语言都是多行 C++和有些C语言编译器已经支持单行 </p> <pre><pre><span>//这是一个单行注释</span> </pre></pre>
<pre><pre><span>/* </pre></pre>
<pre><pre> 这是一个多行注释 多行注释是不可以嵌套多行注释 </pre></pre>
<pre><pre>*/</span></pre></pre>
</blockquote>
<h4>预编译:</h4>
<blockquote> <p>      预编译指令 #include<iostream> </p>
<p>使用visual C++时,总是包含了头文件stdafx.h  把通用的预编译指令放在stdafx.h里 那每次只要 #include "stdafx.h"就可以了</p>
<p> </p>
<h4></h4> </blockquote>
<h4>命名空间</h4>
<blockquote> <p>命名空间是为了避免重名把不同的成员放在不同的namespace下</p>
<pre><pre><span>using</span> <span>namespace</span> std; </pre><pre></pre><pre>cout<<"<span>hello world \n</span>"; <span>//使用命名空间后直接使用cout</span>
</pre><pre></pre><pre><span>//如果不引入命名空间就必须</span> </pre><pre></pre><pre>std::cout<<"<span>hello world \n</span>"; </pre><pre></pre><pre><span>// \n是传统C语言的换行 也可以如下使用</span> </pre><pre></pre><pre>cout<<"<span>hello world</span>"<<endl; </pre><pre></pre><pre><span>//cout是一个输出流 把文字放在里面变可以输出 <<这个符号表示把文字放进去</span></pre></pre>
</blockquote>
<h4>变量定义</h4>
<pre><pre><blockquote><p><span>int</span> num = 5;<span>//定义一个整型变量</span></p></blockquote> </pre><pre></pre></pre>
<blockquote> <p>变量的存储分别存在堆或栈里,为函数或者方法分配的一个内存空间这个是栈,堆是在函数方法外的任意一个地方分配的一个指针类型空间。</p> </blockquote>
<blockquote> <p>在函数或方法结束之后栈里面的所有数据都会清空,如果是堆的话,函数结束如果不手动释放是一直存在的.</p> </blockquote>
<h5>变量命名规则</h5>
<blockquote> <p>可以使用26个大写字母,26个小写字母,10个数字,下划线。数字不能作为变量的开头,运算符和关键字也不能作为变量名,但可以包含关键字。</p>
<p>现在C++很多编译器已经支持Unicode做变量名,可以直接使用中文和其它语言的文字作为变量名.</p> </blockquote>
<h5>题外话</h5>
<blockquote> <p><font>Visual studio为什么生成的main函数是带下划线的_tmain?</font></p>
<p><font><font>_tmain是一个宏不是一个函数。 <br />main是C++标准。函数签名为
<br />int main(int argc, char* argv[]); (这两个参数省略的话也没什么问题)
<br />为了支持Unicode,微软定义了一个扩展
<br />int wmain(int argc, wchar_t* argv[]);
<br />和一个宏_tmain,这个根据项目的Unicode设置被定义成main或者wmain。
<br />一般说来没有必要不必在代码中写死Unicode或者ANSI,而是用_tmain、_T、TCHAR这样的宏使得代码兼容Unicode和ANSI</font>。</font></p>
</blockquote>
<h4></h4>
<h4>命名规范</h4>
<ol> <ol> <li>大驼峰(pascal)</li>
<ul>
<li>每个单词首字符都大写 比如EatApple 一般用来取复合型类型的 类名</li>
</ul>
<li>小驼峰</li>
<ul>
<li>开头单词小写,后面大写。 比如 eatApple 在C语言中一般用来取变量名和函数名</li>
</ul>
<li>匈牙利命名法</li>
<ul>
<li>变量名=属性 + 类型 + 描述 </li>
<li>如果变量定义在函数中就不需要属性了 </li>
<li>比如 hwnd h:句柄 wnd:描述了windows   或 pfnBuyApple 里面出现两个类型 表示这是一个 函数指针变量 </li>
<ol>
<li>属性 : </li>
<ul>
<li>全局变量:g_</li>
<li>常量:c_</li>
<li>类的成员变量:m_</li>
<li>静态变量:s_</li>
</ul>
<li>类型:</li>
<ul>
<li>指针:p</li>
<li>函数:fn</li>
<li>句柄:h</li>
<li>整型:i</li>
<li>长整型:l</li>
<li>布尔:b</li>
<li>浮点(文件):f</li>
</ul>
<li>描述</li>
<ul>
<li>取有实际意义的单词 </li>
</ul>
</ol>
</ul>
<li>下划线命名法(动态语言中用的多)</li>
<ul>
<li>比如eat_apple</li>
</ul>
</ol> </ol>
Angular 中的 Bootstrap 4,使用 npm 添加 custom.css 文件安装
如何解决Angular 中的 Bootstrap 4,使用 npm 添加 custom.css 文件安装
我已经使用 npm 在 Angular 应用程序中安装了 bootstrap 4。
我需要添加一个 custom.css 文件,以便我可以自定义引导变量值等。
我该怎么做?
我是否创建一个 custom.css 文件并将其放在应用程序资产文件夹中,或者这是如何工作的?
Can''t create more than max_prepared_stmt_count statements (current value: 16382) MYSQL 预编译 SQL 数量超过限制问题
最近产品一直在这个错
当缓存的预编译 SQL 数量超过默认最大值时 就会产生如上错误 导致数据库直接无法使用 线上出现这个问题真是愁死人
话不多说 直接上解决思路:
当时发现这个问题的时候 查了下数据库预编译 SQL 创建次数
show global status like ''com_stmt%'';
发现 close 永远是 0 这个问题源于 vertx 以下是我在 vertx 官方提交的 issue 在下个版本会做修复
https://github.com/vert-x3/issues/issues/444
但这仍然不是导致该问题最主要的原因 主要问题是为什么会创建了将近 5 万次的预编译 SQL
在同一连接下 相同结构的预编译 SQL 是不会再被创建的 那么正常情况是不可能创建出 5w 个预编译 SQL
所以目前可以猜测 肯定是在某个地方出现了动态的预编译 SQL
SELECT * FROM PERFORMANCE_SCHEMA .prepared_statements_instances;
执行以上 SQL 查询出已经缓存的预编译 SQL
如果查出来数据为空 说明 performance_schema 参数值为 OFF 未开启 将其开启 并重启数据库即可
为了方便查看
SELECT
count() AS 重复数,
GROUP_CONCAT(STATEMENT_ID SEPARATOR '','') as STATEMENT_IDS,
t.
FROM
PERFORMANCE_SCHEMA .prepared_statements_instances t
GROUP BY
SQL_TEXT;
使用去重查询
终于找到了 “真凶”
这条预编译 SQL 居然有个值是动态的 而不是使用?占位 这就导致了每一次 insert 都会缓存一个不同结构的预编译 SQL 这才致使预编译 SQL 创建数量超过 MAX 值。。。
写这条 SQL 的小朋友我真的要抓起来吊打一顿!
最后总算是完美解决这个问题
关于Linux 上使用二进制和预编译文件安装 MySQL的介绍已经告一段落,感谢您的耐心阅读,如果想了解更多关于.Net Core Razor 预编译,动态编译,混合编译、2014.12.26 注释,预编译,命名空间,变量规范、Angular 中的 Bootstrap 4,使用 npm 添加 custom.css 文件安装、Can''t create more than max_prepared_stmt_count statements (current value: 16382) MYSQL 预编译 SQL 数量超过限制问题的相关信息,请在本站寻找。
本文标签: