HBase结构
1、使用maven创建spring项目,schedule在spring-context.jar的包下边,因此需要导入与之相关的包,如下:
<dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>4.1.7.RELEASE</version> </dependency>
2、配置Spring.xml,选择http://www.springframework.org/schema/task
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns:task="http://www.springframework.org/schema/task" xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsd"> <!-- 开启定时任务 --> <task:annotation-driven /> </beans>
3、编写定时器类,需要在类上加入@Component注解加入Spring容器,在方法上加入Cron表达式
package scheduleTest; import java.text.SimpleDateFormat; import java.util.Date; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component; /** * spring schedule * * @author Su * */ @Component public class ScheduleTest { @Scheduled(cron = "0/30 * * * * ?") public void scheduleTest() { //每30秒执行一次 //相关逻辑操作,如关闭订单,设置定时关单的时间(建议设置在配置文件中) //查询订单表的创建时间进行相关处理 } }
4、在web.xml中配置Spring上下文监听器
<listener> <listener-class>org.springframework.web.context. ContextLoaderListener</listener-class> </listener>
二、对Spring Schedule Cron表达式的理解
Cron表达式使用格式
Seconds | Minutes | Hours | Day | Month | Week | [Year] |
秒 | 分 | 时 | 天 | 月 | 周 | [年 可选] |
字段名 | 允许的值 | 允许的特殊字符 |
---|---|---|
秒 | 0-59 | , - * / |
分 | 0-59 | , - * / |
小时 | 0-23 | , - * / |
月内日期 | 1-32 | , - * ? / L W C |
月 | 1-12 或 JAN-DEC | , - * / |
周内日期 | 1-7 或 SUN-SAT | , - * ? / L C # |
年 | 留空,1980-2099 | , - * / |
每个符号代表的含义:
*:匹配该域的任意值;如*用在分所在的域,表示每分钟都会触发事件。
?:匹配该域的任意值。月份的天河周的天互相冲突,必须将其中一个设置为?
-:匹配一个特定的范围值;如时所在的域的值是10-12,表示10、11、12点的时候会触发事件。
,:匹配多个指定的值;如周所在的域的值是2,4,6,表示在周一、周三、周五就会触发事件(1表示周日,2表示周一,3表示周二,以此类推,7表示周六)。
/:左边是开始触发时间,右边是每隔固定时间触发一次事件,如秒所在的域的值是5/15,表示5秒、20秒、35秒、50秒的时候都触发一次事件。
L:last,最后的意思,如果是用在天这个域,表示月的最后一天,如果是用在周所在的域,如6L,表示某个月最后一个周五。(外国周日是星耀日,周一是月耀日,一周的开始是周日,所以1L=周日,6L=周五。)
W:weekday,工作日的意思。如天所在的域的值是15W,表示本月15日最近的工作日,如果15日是周六,触发器将触发上14日周五。如果15日是周日,触发器将触发16日周一。如果15日不是周六或周日,而是周一至周五的某一个,那么它就在15日当天触发事件。
#:用来指定每个月的第几个星期几,如6#3表示某个月的第三个星期五
举些例子:
表达式 含义
“0 0 12 * * ?” | 每天12:00触发事件 |
“0 15 10 ? * *” | 每天10:15触发事件 |
“0 15 10 * * ?” | 每天10:15触发事件 |
“0 15 10 * * ? *” | 每天10:15触发事件 |
“0 15 10 * * ? 2005″ | 2005年的每天10:15触发事件 |
“0 * 14 * * ?” | 每天14点开始触发,每分钟触发一次,14:59分结束 |
“0 0/5 14 * * ?” | 每天14点开始触发到14:59分结束的每5分钟触发一次事件 |
“0 0/5 14,18 * * ?” | 每天14点开始到14:59期间和18点到18:59期间的每5分钟触发一次事件 |
“0 0-5 14 * * ?” | 每天14点到14:05期间的每1分钟触发一次事件 |
“0 10,44 14 ? 3 WED” | 每年3月的星期三的14:10和14:44触发一次事件 |
“0 15 10 ? * MON-FRI” | 周一至周五的10:15触发一次事件 |
“0 15 10 15 * ?” | 每月15日10:15触发一次事件 |
“0 15 10 L * ?” | 每月最后一日的10:15触发一次事件 |
“0 15 10 ? * 6L” | 每月的最后一个星期五10:15触发一次事件 |
“0 15 10 ? * 6L 2002-2005″ | 2002年至2005年的每月的最后一个星期五10:15触发一次事件 |
“0 15 10 ? * 6#3″ | 每月的第三个星期五10:15触发一次事件 |
————————————————
本文为网摘文章,原文为以下:
版权声明:本文为CSDN博主「苏启豪」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/a2267378/article/details/82019901
.
注: 对应虚拟机的分区为vda,虚拟机系统为centos7
[root@vp-01 export]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 20G (21474836480 bytes)
disk size: 2.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
新增磁盘容量大小20G
[root@vp-01 export]# qemu-img resize test.qcow2 +20G
Image resized.
[root@vp-01 export]# qemu-img info test.qcow2
image: test.qcow2
file format: qcow2
virtual size: 40G (42949672960 bytes)
disk size: 2.1G
cluster_size: 65536
Format specific information:
compat: 1.1
lazy refcounts: false
refcount bits: 16
corrupt: false
对比后发现磁盘已经由原来的20G变为40G了
[root@172-16-20-171 ~]#
[root@172-16-20-171 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 18G 1.9G 16G 11% /
devtmpfs devtmpfs 487M 0 487M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 6.6M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vda1 xfs 497M 130M 368M 27% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
[root@172-16-20-171 ~]#
[root@172-16-20-171 ~]#
[root@172-16-20-171 ~]# fdisk /dev/vda
欢迎使用 fdisk (util-linux 2.23.2)。
更改将停留在内存中,直到您决定将更改写入磁盘。
使用写入命令前请三思。
命令(输入 m 获取帮助):p
磁盘 /dev/vda:42.9 GB, 42949672960 字节,83886080 个扇区
Units = 扇区 of 1 * 512 = 512 bytes
扇区大小(逻辑/物理):512 字节 / 512 字节
I/O 大小(最小/最佳):512 字节 / 512 字节
磁盘标签类型:dos
磁盘标识符:0x0003f814
设备 Boot Start End Blocks Id System
/dev/vda1 * 2048 1026047 512000 83 Linux
/dev/vda2 1026048 41943039 20458496 8e Linux LVM
命令(输入 m 获取帮助):n
Partition type:
p primary (2 primary, 0 extended, 2 free)
e extended
Select (default p): p
分区号 (3,4,默认 3):3
起始 扇区 (41943040-83886079,默认为 41943040):
将使用默认值 41943040
Last 扇区, +扇区 or +size{K,M,G} (41943040-83886079,默认为 83886079):
将使用默认值 83886079
分区 3 已设置为 Linux 类型,大小设为 20 GiB
命令(输入 m 获取帮助):t
分区号 (1-3,默认 3):3
Hex 代码(输入 L 列出所有代码):8e
已将分区“Linux”的类型更改为“Linux LVM”
命令(输入 m 获取帮助):w
The partition table has been altered!
Calling ioctl() to re-read partition table.
WARNING: Re-reading the partition table failed with error 16: 设备或资源忙.
The kernel still uses the old table. The new table will be used at
the next reboot or after you run partprobe(8) or kpartx(8)
正在同步磁盘。
[root@172-16-20-171 ~]#
此步骤当中,最终要的地方就是 分配新的区需要修改分区的system id,将分区类型改为LVM(Hex代码为8e)。
创建物理卷
[root@172-16-20-171 ~]# pvcreate /dev/vda3 (分区以后要重启或者执行partprobe,就不会出现Device /dev/sda3 not found (or ignored by filtering)提示)
Physical volume “/dev/vda3” successfully created
[root@172-16-20-171 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/vda2 centos lvm2 a-- 19.51g 40.00m
/dev/vda3 lvm2 — 20.00g 20.00g
加入卷组
[root@172-16-20-171 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 1 2 0 wz–n- 19.51g 40.00m
[root@172-16-20-171 ~]# vgextend centos /dev/vda3
Volume group “centos” successfully extended
[root@172-16-20-171 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
centos 2 2 0 wz–n- 39.50g 20.04g
扩展逻辑卷
[root@172-16-20-171 ~]# lvextend -l +100%FREE /dev/centos/root
Size of logical volume centos/root changed from 17.47 GiB (4472 extents) to 37.50 GiB (9601 extents).
Logical volume root successfully resized.
[root@172-16-20-171 ~]# resize2fs /dev/centos/root
resize2fs 1.42.9 (28-Dec-2013)
resize2fs: Bad magic number in super-block 当尝试打开 /dev/centos/root 时
找不到有效的文件系统超级块.
发现报错,分析原因是因为使用dh -T查看系统分区类型为xfs
因此直接使用xfs_growfs扩展即可
[root@172-16-20-171 ~]# xfs_growfs /dev/centos/root
meta-data=/dev/mapper/centos-root isize=256 agcount=4, agsize=1144832 blks
= sectsz=512 attr=2, projid32bit=1
= crc=0 finobt=0
data = bsize=4096 blocks=4579328, imaxpct=25
= sunit=0 swidth=0 blks
naming =version 2 bsize=4096 ascii-ci=0 ftype=0
log =internal bsize=4096 blocks=2560, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=4096 blocks=0, rtextents=0
data blocks changed from 4579328 to 9831424
[root@172-16-20-171 ~]# df -Th
文件系统 类型 容量 已用 可用 已用% 挂载点
/dev/mapper/centos-root xfs 38G 1.9G 36G 6% /
devtmpfs devtmpfs 487M 0 487M 0% /dev
tmpfs tmpfs 497M 0 497M 0% /dev/shm
tmpfs tmpfs 497M 6.6M 490M 2% /run
tmpfs tmpfs 497M 0 497M 0% /sys/fs/cgroup
/dev/vda1 xfs 497M 130M 368M 27% /boot
tmpfs tmpfs 100M 0 100M 0% /run/user/0
发现系统容量已经由20G扩展为40G
References:
https://www.cnblogs.com/zzc-blog/p/14121695.html
import logging LOG_FORMAT = '%(asctime)s - %(name)s - %(levelname)s - %(message)s' logging.basicConfig(format=LOG_FORMAT) logger.info('info log') logger.error('error log') logger.warn('warn log') logger.debug('debug log')
import logging LOG_FORMAT = '%(asctime)s %(clientip)-15s %(user)-8s %(message)s' logging.basicConfig(format=LOG_FORMAT) logger = logging.getLogger('tcpserver') logger.warning('Protocol problem: %s', 'connection reset', extra=d)
import logging # create logger logger = logging.getLogger('simple_example') logger.setLevel(logging.DEBUG) # create console handler and set level to debug ch = logging.StreamHandler() ch.setLevel(logging.DEBUG) # create formatter formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # add formatter to ch ch.setFormatter(formatter) # add ch to logger logger.addHandler(ch) # 'application' code logger.debug('debug message') logger.info('info message') logger.warning('warn message') logger.error('error message') logger.critical('critical message')
References:
https://baijiahao.baidu.com/s?id=1663188765325528537&wfr=spider&for=pc
.
Log4j 2.x版本不再支持像1.x中的.properties后缀的文件配置方式,2.x版本配置文件后缀名只能为".xml",".json"或者".jsn"。
系统选择配置文件的优先级(从先到后)如下:
一般默认使用log4j2.xml.
常见的有三种子节点:Console、RollingFile、File.
常见的有两种:Root和Logger.
%-5level 输出日志级别,-5表示左对齐并且固定输出5个字符,如果不足在右边补0
<dependencies> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-core</artifactId> <version>2.5</version> </dependency> </dependencies>
使用SLF4J + LOG4J配置时,可以简化到仅一个依赖:
<dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-slf4j-impl</artifactId> <version>2.20.0</version> </dependency>
使用SLF4J + LOGBACK配置时,可以简化到仅一个依赖:
<dependency> <groupId>ch.qos.logback</groupId> <artifactId>logback-classic</artifactId> <!-- <version>1.3.6</version> --> <version>1.2.11</version> </dependency>
注意选用1.3.x/1.2.x版本,不要使用1.4.0, 1.4.x 版本出现UnsupportedClassVersionError异常。
目前 Logback 发布了 1.3 & 1.4 两个版本,logback 1.3.x 支持 Java EE 版本,而 logback 1.4.x 支持 Jakarta EE,两个版本的功能相同。
在springboot中使用log4j2时,需要排除springboot默认的logback
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> <exclusions> <exclusion> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-logging</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-log4j2</artifactId> </dependency>
<?xml version="1.0" encoding="UTF-8"?> <Configuration> <Appenders> <Console name="Console" target="SYSTEM_OUT"> <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %level %logger{1.} - %msg%n"/> </Console> </Appenders> <Loggers> <Root level="error"> <AppenderRef ref="Console"/> </Root> </Loggers> </Configuration>
<?xml version="1.0" encoding="UTF-8"?> <!-- 日志级别以及优先级排序: OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <configuration status="WARN" monitorInterval="30"> <Properties> <!-- <Property name="LOG_ROOT">${sys:user.home}/logs</Property>--> <Property name="LOG_ROOT">./logs</Property> <Property name="LOG_PATTERN">%d{yyyy-MM-dd HH:mm:ss,SSS} %level [%thread] %logger{1.} - %msg%n</Property> </Properties> <!--定义appender--> <appenders> <console name="Console" target="SYSTEM_OUT"> <!--输出日志的格式--> <PatternLayout pattern="${LOG_PATTERN}"/> </console> <RollingFile name="info" fileName="${LOG_ROOT}/info.log" filePattern="${LOG_ROOT}/$${date:yyyyMM}/info-%d{yyyyMMdd}-%i.log"> <!--控制台只输出level及以上级别的信息(onMatch),其他的直接拒绝(onMismatch)--> <ThresholdFilter level="info" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <SizeBasedTriggeringPolicy size="1024 MB"/> </Policies> </RollingFile> <RollingFile name="warn" fileName="${LOG_ROOT}/warn.log" filePattern="${LOG_ROOT}/$${date:yyyyMM}/warn-%d{yyyyMMdd}-%i.log"> <ThresholdFilter level="warn" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <SizeBasedTriggeringPolicy size="1024 MB"/> </Policies> <DefaultRolloverStrategy max="20"/> </RollingFile> <RollingFile name="error" fileName="${LOG_ROOT}/error.log" filePattern="${LOG_ROOT}/$${date:yyyyMM}/error-%d{yyyyMMdd}-%i.log"> <ThresholdFilter level="error" onMatch="ACCEPT" onMismatch="DENY"/> <PatternLayout pattern="${LOG_PATTERN}"/> <Policies> <SizeBasedTriggeringPolicy size="1024 MB"/> </Policies> </RollingFile> </appenders> <loggers> <!-- OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <!--过滤 spring mybatis 的 DEBUG 信息--> <logger name="org.springframework" level="INFO"></logger> <logger name="org.mybatis" level="INFO"></logger> <root level="INFO"> <appender-ref ref="Console"/> <appender-ref ref="info"/> <appender-ref ref="warn"/> <appender-ref ref="error"/> </root> </loggers> </configuration>
logback.xml or logback-spring.xml
<?xml version="1.0" encoding="UTF-8"?> <configuration> <!-- 日志存放路径 --> <property name="log.path" value="./logs"/> <!-- 日志天数 --> <property name="log.history" value="60"/> <!-- 日志轮转大小 --> <property name="log.size" value="1024MB"/> <!-- 日志输出格式 --> <!-- <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p ${PID:-} [%15.15t] %-40.40logger{39} : %m%n" />--> <property name="log.pattern" value="%d{yyyy-MM-dd HH:mm:ss.SSS} -%5p [%15.15t] %-40.40logger{30} : %m%n"/> <!-- 控制台输出 --> <appender name="console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <pattern>${log.pattern}</pattern> </encoder> </appender> <!-- 系统日志输出 --> <!-- ch.qos.logback.classic.AsyncAppender --> <appender name="info" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/info.log</file> <encoder> <pattern>${log.pattern}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}/info-%d{yyyyMMdd}.%i.log</fileNamePattern> <maxHistory>${log.history}</maxHistory> <maxFileSize>${log.size}</maxFileSize> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>INFO</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 用户访问日志输出 --> <appender name="warn" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/warn.log</file> <encoder> <pattern>${log.pattern}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}/warn-%d{yyyyMMdd}.%i.log</fileNamePattern> <maxHistory>${log.history}</maxHistory> <maxFileSize>${log.size}</maxFileSize> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>WARN</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender"> <file>${log.path}/error.log</file> <encoder> <pattern>${log.pattern}</pattern> </encoder> <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy"> <fileNamePattern>${log.path}/error-%d{yyyyMMdd}.%i.log</fileNamePattern> <maxHistory>${log.history}</maxHistory> <maxFileSize>${log.size}</maxFileSize> </rollingPolicy> <filter class="ch.qos.logback.classic.filter.LevelFilter"> <level>ERROR</level> <onMatch>ACCEPT</onMatch> <onMismatch>DENY</onMismatch> </filter> </appender> <!-- 日志级别 --> <logger name="org.springframework" level="warn"/> <logger name="org.mybatis" level="INFO"/> <!-- OFF > FATAL > ERROR > WARN > INFO > DEBUG > TRACE > ALL --> <springProfile name="default"> <root level="INFO"> <appender-ref ref="console"/> <appender-ref ref="info"/> <appender-ref ref="warn"/> <appender-ref ref="error"/> </root> </springProfile> <springProfile name="beta,test"> <root level="INFO"> <appender-ref ref="console"/> <appender-ref ref="info"/> <appender-ref ref="warn"/> <appender-ref ref="error"/> </root> </springProfile> <springProfile name="prod"> <root level="WARN"> <appender-ref ref="console"/> <appender-ref ref="info"/> <appender-ref ref="warn"/> <appender-ref ref="error"/> </root> </springProfile> </configuration>
备注:内容摘自网络,有问题联系我们删除或修改。
.
pip3 install 库名 -i 镜像地址
例:从清华这边的镜像去安装pyspider库。
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pyspider
touch ~/.pip/pip.conf vi ~/.pip/pip.conf [global] index-url=https://pypi.tuna.tsinghua.edu.cn/simple [install] trusted-host=pypi.tuna.tsinghua.edu.cn
或
mkdir ~/.pip/ echo '' > ~/.pip/pip.conf echo '[global]' >> ~/.pip/pip.conf echo 'index-url = https://pypi.tuna.tsinghua.edu.cn/simple' >> ~/.pip/pip.conf echo '[install]' >> ~/.pip/pip.conf echo 'trusted-host=pypi.tuna.tsinghua.edu.cn' >> ~/.pip/pip.conf echo '' >> ~/.pip/pip.conf
清华参考:https://mirror.tuna.tsinghua.edu.cn/help/pypi/
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple some-package
注意,simple
不能少, 是 https
而不是 http
升级 pip 到最新的版本 (>=10.0.0) 后进行配置:
pip install pip -U pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
如果您到 pip 默认源的网络连接较差,临时使用本镜像站来升级 pip:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pip -U
。。。
查看是否已安装python版本:
python -V
一般系统会自带安装python2的,yum等其他软件会用到
查看系统自带安装的python2的位置
whereis python
找到python2的可执行脚本位置,安装好python3,需要创建软连接到对应位置
查看并安装python3依赖,如果已经安装的话就不用再安装了
rpm -qa zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gcc make
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel
下载python3安装包
wget -P /usr/local https://www.python.org/ftp/python/3.6.5/Python-3.6.5.tar.xz
安装配置python3
切换到安装包目录:cd /usr/local/
解压:tar -xJvf Python-3.6.5.tar.xz 或者 xz Python-3.6.5.tar.xz tar -xvf Python-3.6.5.tar
切换到解压目录:cd Python-3.6.5
编译安装python:
./configure prefix=/usr/local/python3
make && make install
创建软连接:
ln ./python3/bin/python3 /usr/bin/python3
ln -s /usr/local/python3/bin/pip3 /usr/bin/pip3
测试:python3 -V 显示Python 3.6.5 安装完成
————————————————
下载get-pip.py
https://bootstrap.pypa.io/get-pip.py
在cmd下运行python get-pip.py
运行 pip 出现以下错误,则是因没有执行 B 编辑 python37._pth添加 Lib\site-packages 操作导致:
Traceback (most recent call last):
File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py", line 193, in _run_module_as_main
File "D:\obj\windows-release\37amd64_Release\msi_python\zip_amd64\runpy.py", line 85, in run_code
File "C:\python37\Scripts\pip.exe_main.py", line 5, in <module>
ModuleNotFoundError: No module named 'pip'
==============================================
本文将python版本升级到python3.9.0版本
第一步:安装相关依赖包和编译环境
yum -y install zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel gcc
(注意:这一步很重要,如果不安装相关依赖包,在使用pip安装python包时会报找不到SSL错误!)
第二步:下载python3.9.0安装包
wget https://www.python.org/ftp/python/3.9.0/Python-3.9.0.tar.xz
第三步:解压安装包并创建安装目录
xz -d Python-3.9.0.tar.xz
tar -xvf Python-3.9.0.tar
mkdir /usr/local/python3.9.0
第四步:编译安装
cd Python-3.9.0
./configure --with-ssl --prefix=/usr/local/python3.9.0
(注意:prefix后面配置第三步中创建的路径,且等号两边不能有空格,不然会报错)
make && make install
第五步:创建python3.6.5软链接
ln -s /usr/local/python3.9.0/bin/python3.9 /usr/bin/python3
ln -s /usr/local/python3.9.0/bin/pip3.9 /usr/bin/pip3
升级pip3
python3 -m pip install --upgrade pip
...
开普勒元素通常以两行元素的格式发布。
它们有时被称为" TLEs " " Keps "
解释1:
解释2:
序号 | 栏 | 含义 | 说明和备注 |
0.1 | 01 | 目标名称 | 包含最多24个字符的字符串 |
1.1 | 01 | 行号 | 取值1 |
1.2 | 03-07 | 卫星编目号 | 5位十进制数表示,最多可编目99999个目标 |
1.3 | 08 | 卫星密级分类标识 | U表示非秘,S表示秘密(秘密目标根数不公开 |
1.4 | 10-11 |
卫星国际编号 |
发射年份,2位十进制数表示,如03代表2003年 |
1.5 | 12-14 | 年中序号,3位十进制数表示,如111表示当年的第111次发射 | |
1.6 | 15-17 | 本次发射中产生的目标序列,字符表示,如C表示本次发射中形成的第三个目标 | |
1.7 | 19-20 |
根数历元时刻 |
年份,2位十进制数表示,如03代表2003年 |
1.8 | 21-32 | 天数,年中的天数(年积日),小数点后保留8位有效数字(精确到1ms) | |
1.9 | 34-43 | 平运动一阶变率(1/2) | 单位为圈数/天 |
1.10 | 45-52 | 平运动二阶变率(1/6) | 单位为圈数/天,前6位为小数部分,后2位为指数部分,如-12345-6表示-0.12345×10 |
1.11 | 54-61 | 表示大气阻力的弹道系数:B*(=0.5CdS/M) | 单位为地球赤道半径的倒数,表示方法同1.10 |
1.12 | 63 | 定轨模型类型 | 内部使用,现在设为0,用SGP4和SDP4 |
1.13 | 65-68 | 根数组数 | |
1.14 | 69 | 检验位 | |
2.1 | 01 | 行号 | 取值2 |
2.2 | 03-07 | 卫星编目号 | 同1.2 |
2.3 | 09-16 | 轨道倾角 | 单位:度,小数点后4位 |
2.4 | 18-25 | 轨道升交点赤经 | 单位:度,小数点后4位 |
2.5 | 27-33 | 轨道偏心率 | 小数表示(1234567表示0.1234567),7位有效数字 |
2.6 | 35-42 | 近地点辐角 | 单位:度,小数点后4位 |
2.7 | 44-51 | 平近点角 | 单位:度,小数点后4位 |
2.8 | 53-63 | 平运动速度 | 单位:圈/天 |
2.9 | 64-68 | 相对于历元的圈数 | 单位:圈,发射后首次过升交点为第一圈, |
2.10 | 69 | 校验位 |
一组两行根数的例子:
DIAPASON (D1-A) 1 2016U 66013A 22040.47656371 .00000563 00000-0 15717-3 0 9990 2 2016 34.0968 195.3317 1186353 282.6277 64.4483 12.60172085539087
STARLINK-2452 1 48115U 21027Z 22040.12425648 .00004640 00000-0 33007-3 0 9991 2 48115 53.0563 8.5382 0001476 82.0419 278.0737 15.06410135 47642
....
参考:
Data for each satellite consists of three lines in the following format:
AAAAAAAAAAA 1 NNNNNU NNNNNAAA NNNNN.NNNNNNNN +.NNNNNNNN +NNNNN-N +NNNNN-N N NNNNN 2 NNNNN NNN.NNNN NNN.NNNN NNNNNNN NNN.NNNN NNN.NNNN NN.NNNNNNNNNNNNNN
Line1:
Column Description 01-01 Line Number of Element Data 03-07 Satellite Number 10-11 International Designator (Last two digits of launch year) 12-14 International Designator (Launch number of the year) 15-17 International Designator (Piece of launch) 19-20 Epoch Year (Last two digits of year) 21-32 Epoch (Day number and fractional portion of the day) 34-43 First Time Derivative of the Mean Motion divided by 2. or Ballistic Coefficient (Depending of ephemeris type) 45-52 Second Time Derivative of Mean Motion divided by 6. (Blank if N/A) 54-61 BSTAR drag term if GP4 general perturbation theory was used. Otherwise, radiation pressure coefficient. 63-63 Ephemeris type 65-68 Element number 69-69 Check Sum (Modulo 10)
Line2:
Column Description 01-01 Line Number of Element Data 03-07 Satellite Number 09-16 Inclination [Degrees] 18-25 Right Ascension of the Ascending Node [Degrees] 27-33 Eccentricity (decimal point assumed) 35-42 Argument of Perigee [Degrees] 44-51 Mean Anomaly [Degrees] 53-63 Mean Motion [Revs per day] 64-68 Revolution number at epoch [Revs] 69-69 Check Sum (Modulo 10)
.
由于网络原因,我们在pull Image 时,从Docker Hub下载会很慢。
可使用一些国内的镜像(docker hub mirror)增加速度。
http://hub-mirror.c.163.com
https://docker.mirrors.ustc.edu.cn
/etc/docker/daemon.json
{ "registry-mirrors": [ "https://hub-mirror.c.163.com", "https://ustc-edu-cn.mirror.aliyuncs.com"] }
#修改 /usr/lib/systemd/system/docker.service 启动脚本 vim /usr/lib/systemd/system/docker.service # 在dockerd后面加参数 ExecStart=/usr/bin/dockerd --registry-mirror=<your accelerate address>
sudo systemctl daemon-reload sudo systemctl restart docker
参考:
RAID软件磁盘阵列
https://www.cnblogs.com/weq0805/p/14915557.html
RAID软件磁盘阵列
https://blog.csdn.net/AhhSong/article/details/77898687
RAID软件磁盘阵列技术
http://www.voycn.com/article/dachangxiaochangdouzaiyongderaidruanjiancipanzhenliejishubixuxueqilai
.
提示1:
# example1/cli
cli\main.go:20:10: cannot refer to unexported name c2.w
提示2:
PS E:\go\go-example1> go run ./cli
cli\main.go:6:5: local import "./../c2" in non-local package
提示3:
main.go:5:2: cannot find package "hello/mylib" in any of:
C:\Program Files\Go\src\hello\mylib (from $GOROOT)
C:\Users\Administrator\go\src\hello\mylib (from $GOPATH)
---------------------------
查询:
go env
C:\Users\administratorsXu>go env
set GO111MODULE=on
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\administratorsXu\AppData\Local\go-build
set GOENV=C:\Users\administratorsXu\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=E:\studyCode\code\GO\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=E:\studyCode\code\GO
set GOPRIVATE=
set GOPROXY=https://goproxy.cn,direct
set GOROOT=E:\progranfiles\go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=E:\progranfiles\go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.17.3
set GCCGO=gccgo
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=NUL
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments ...
GO111MODULE
用环境变量 GO111MODULE 开启或关闭模块支持,它有三个可选值:off、on、auto,默认值是 auto。
GO111MODULE=off 无模块支持,go 会从 GOPATH 和 vendor 文件夹寻找包。
GO111MODULE=on 模块支持,go 会忽略 GOPATH 和 vendor 文件夹,只根据 go.mod 下载依赖。
GO111MODULE=auto 在 $GOPATH/src 外面且根目录有 go.mod 文件时,开启模块支持。
解决方案
go env -w GO111MODULE=off
或
go env -w GO111MODULE=auto