centos7 开启bbr

  1. 首先是查看当前服务器的内核版本
uname -sr
# BBR内核要求是4.9+,通常来说你通过上面这个命令出来的内核版本是在3.几

2. 启用 ELRepo 仓库

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org
rpm -Uvh https://www.elrepo.org/elrepo-release-7.0-3.el7.elrepo.noarch.rpm
yum install https://www.elrepo.org/elrepo-release-7.el7.elrepo.noarch.rpm

3. 安装新版的稳定版内核

yum --enablerepo=elrepo-kernel install kernel-ml -y

4. 安装完毕后使用下面的命令查看是否安装成功

rpm -qa | grep kernel



kernel-3.10.0-1127.el7.x86_64
kernel-tools-3.10.0-1127.13.1.el7.x86_64
kernel-3.10.0-1127.13.1.el7.x86_64
kernel-headers-3.10.0-1127.18.2.el7.x86_64
kernel-tools-libs-3.10.0-1127.13.1.el7.x86_64
kernel-ml-5.9.12-1.el7.elrepo.x86_64
## 里面kernel-ml-5.9.12-1.el7.elrepo.x86_64就是安装的新版版本内核(可能内核版本有变化)

5. 要设置系统启动顺序

sudo egrep ^menuentry /etc/grub2.cfg | cut -f 2 -d \'

##  排在第一的就是下次要启动的内核,从第一行为0依次数,0、1、2、3这样,看你的新内核是第几。

## 设置启动顺序
sudo grub2-set-default 0

6. 重启

reboot

7. 重启后,查看内核版本

uname -r

5.9.12-1.el7.elrepo.x86_64
## 显示为新版本内核

8. 重建内核配置

grub2-mkconfig -o /boot/grub2/grub.cfg

9. 重启

reboot

10. 在新安装好的CentOS7上面启用新内核,只需要复制下面的代码执行

echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

11. 然后输入下面的命令查看是否开启BBR成功

sudo sysctl net.ipv4.tcp_available_congestion_control

## 成功的话输出以下信息
net.ipv4.tcp_available_congestion_control = bbr cubic reno

## 继续验证 输入一下代码
sudo sysctl -n net.ipv4.tcp_congestion_control
## 正常输出
bbr
### 最后看内核模块是否加载
lsmod | grep bbr

## 正常输出
tcp_bbr  20480  22

angular ui bootstrap 分页控件

<h6><code>boundary-link-numbers</code> set to <code>true</code> and <code>rotate</code> defaulted to <code>true</code>:</h6>
    <ul uib-pagination total-items="bigTotalItems" ng-model="bigCurrentPage" max-size="maxSize" class="pagination-sm" boundary-link-numbers="true"></ul>

c# dapper mysql like

const string sql = "SELECT * from user_profile WHERE FirstName LIKE @name;";
var result = connection.Query<Profile>(sql, new {name = "%"+name+"%"});

c中的char和java中的byte

在C中,char是基础数据类型,8位,1个字节。byte不是基础数据类型,一般是typedef unsigned char byte;这样子的,也就是说,byte其实是unsigned char类型,那么也是8位,1个字节。不同的是,char可以表示的范围是-128-127,而byte可以表示的范围是0-255。

在java中,char和byte都是基础数据类型,其中的byte和C中的char类型是一样的,8位,1个字节,-128-127。但是,char类型,是16位,2个字节

Logback configuration error detected

原因: spring-boot-starter-web包的时候他里面默认使用了logback日志,这样就会产生日志包的冲突,其实不只是starter-web包默认引入的logback还有很多的包默认引入的logback包

解决: 需要把 spring-boot-starter-web 放到pom文件中依赖的第一位,在向下执行的时候也会排除所有的默认logger了 。

A generic error occurred in GDI+

  1. 因为 .net GDI+ 是对底层 的封装。 所以可以尝试用 Marshal.GetLastWin32Error();函数获得底层错误代码
try{
   image.Save(filename, System.Drawing.Imaging.ImageFormat.Png);
} 
catch (Exception exp)
            {
                var code = Marshal.GetLastWin32Error();
                throw new Exception(exp.Message + ":" + code.ToString(), exp);
            }

2. 查看错误代码含义

ERROR_PATH_NOT_FOUND

3 (0x3)

The system cannot find the path specified.

原因:save的目录不存在。解决:手动或通过程序建save的目录。

ERROR_ACCESS_DENIED

5 (0x5)

Access is denied.

原因: save的目录没有权限

解决: 查看目录的权限

ERROR_SHARING_VIOLATION32 (0x20)

The process cannot access the file because it is being used by another process.

原因:

  从一个文件构造的Bitmap 对象或一个 Image 对象, 在该对象的生存期内该文件处于锁定状态。 因此, 在没有释放这个Image或Bitmap对象前,无法更改图像并将其保存回原文件。

  解决方法:

解决:

构造一个新的Image对象,然后把原来的Image对象中的图象通过Graphics的DrawImage()方法,拷贝到新Image对象中,最后通过Dispose()方法释放原来的Image对象:

  Image image = new Bitmap ( openFileDialog1 . FileName );

  //新建第二个Image类型的变量newImage,这里是根据程序需要设置自己设置。

  Image newImage = new Bitmap ( 800 , 600 );

  //将第一个bmp拷贝到bmp2中

  Graphics draw = Graphics . FromImage ( newImage);

  draw . DrawImage ( image , 0 , 0 );

  //释放第一个Image对象

  image.Dispose();

 3.其他问题

a.  Image 对应的Stream被Dispose了。

b.  保存成png时报错。

转载自` https://www.cnblogs.com/guangfengli/p/5920104.html `

maven发布的项目打包jsp

从eslipse迁移的Web项目的jsp、js、css等文件都是放到WebContent里,而Maven中,这些文件是放到webapp下的。所以,如果你直接用Maven进行install也就是打包的时候,你的页面相关的文件不会被打包进去,你会发现打好的war包里只有src下的.class文件和一些配置文件。那么如何将页面等文件也包含进去呢?

<build>
	<finalName>projectName</finalName>
	<plugins>
		<plugin>
			<groupId>org.apache.maven.plugins</groupId>
			<artifactId>maven-war-plugin</artifactId>
			<version>3.2.3</version>					
			<configuration>
				<!--指定web.xml文件的位置-->
				<webXml>WebContent/WEB-INF/web.xml</webXml>				
				<!--指定jsp等文件所在位置-->   
				<warSourceDirectory>WebContent</warSourceDirectory>
			</configuration>
		</plugin>
	</plugins>
</build>

批量 修改 数据库的字符集和排序规则

-- 字符集为utf8mb4,排序规则为utf8mb4_unicode_ci

-- 修改数据库
ALTER DATABASE 数据库名 CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;

-- 设置每张表的字符集和排序规则为为 utf8mb4、utf8mb4_unicode_ci
SELECT CONCAT('ALTER TABLE ', table_name, ' CONVERT TO CHARACTER SET  utf8mb4 COLLATE utf8mb4_unicode_ci;')
FROM information_schema.TABLES
WHERE TABLE_SCHEMA = '数据库名';

-- 批量修改字符编码和排序编码
select concat('ALTER TABLE `', table_name, '` MODIFY `', column_name, '`', DATA_TYPE, '(', CHARACTER_MAXIMUM_LENGTH,
              ') CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci', ';')
FROM information_schema.COLUMNS
WHERE table_schema = '数据库名'
  AND DATA_TYPE IN ('varchar' ,'char');