边框四周有切角

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Document</title> <style> div{ float: left; margin: 20px; text-align: center; line-height: 500px; font-size: 30px; color: palegreen; } .div { width: 500px; height: 500px; background: linear-gradient(-45deg, transparent 15px, #0063f0 0) bottom right, linear-gradient(-135deg, transparent 15px, #0063f0 0) top right, linear-gradient(135deg, transparent 15px, #0063f0 0) top left, linear-gradient(45deg, transparent 15px, #0063f0 0) bottom left; background-repeat: repeat, repeat, repeat, repeat; background-size: auto, auto, auto, auto; background-size: 50% 51%; background-repeat: no-repeat; opacity: 0.

mysql、clickhouse查询数据库所有的表以及字段信息

mysql查询数据库所有的表以及字段信息 SELECT table_schema 数据库名, table_name 表名, COLUMN_NAME 列名, COLUMN_TYPE 数据类型, DATA_TYPE 字段类型, CHARACTER_MAXIMUM_LENGTH 长度, IS_NULLABLE 是否为空, COLUMN_DEFAULT 默认值, COLUMN_COMMENT 备注 FROM INFORMATION_SCHEMA.COLUMNS where -- table_schema 为库名 table_schema ='XXX' AND -- table_name为表名 table_name in (SELECT table_name FROM (SELECT table_name, table_comment, create_time, update_time FROM information_schema.tables WHERE table_schema = (SELECT DATABASE()) ORDER BY create_time DESC) as t ) clickhouse导出表信息 SELECT database AS `数据库名`, table AS `表名`, name AS `列名`, type AS `类型`,

贪吃蛇Python实现

import random import turtle import time def setbackground(): global page page = turtle.Screen() page.title('Snake Game') page.setup(width = 660, height = 740) page.tracer(0) def setframe(): frame = turtle.Turtle() frame.speed(0) frame.hideturtle() frame.penup() frame.goto(-250,210) frame.pendown() frame.goto(-250,-290) frame.goto(250,-290) frame.goto(250,290) frame.goto(-250,290) frame.goto(-250,210) frame.goto(250,210) def setsnakehead(): global head global headdir head = turtle.Turtle() head.speed(0) head.shape('square') head.color('red') head.penup() head.goto(0,-40) headdir = 'stop' def setfoodlist(xpositiondomainli,ypositiondomainli): for i in range(9): foodlist[i].speed(0) foodlist[i].hideturtle() foodlist[i].shape('square') foodlist[i].color('black') foodlist[i].up() foodlist[i].goto(xpositiondomainli[i],ypositiondomainli[i]-15) foodlist[i].write(i+1,align='center',font=('arial',15,'normal')) foodlist[i].goto(xpositiondomainli[i],ypositiondomainli[i]) def judgeeatfood(head,segments): for i in range(9): if foodlist[i]: if abs(xpositiondomainli[i] - head.

Echarts 图表自适应屏幕

echarts 图表自适应屏幕 使用 setTimeout 进行屏幕自适应使用 window.onresize 进行屏幕自适应(建议使用)使用resize()方法 使用 setTimeout 进行屏幕自适应 <template> <div ref="charts" style="width:100%;height:440px"></div> </template> import {ref,onMounted} from 'vue' import * as echarts from 'echarts' const charts = ref() let echartInstance ; onMounted(()=>{ echartInstance = echarts.init(charts.value,'macarons'); setTimeout(()=>{ echartInstance.resize(); },100); }) 使用 window.onresize 进行屏幕自适应(建议使用) <template> <div ref="charts" style="width:100%;height:440px"></div> </template> import {ref,onMounted} from 'vue' import * as echarts from 'echarts' const charts = ref() let echartInstance ; onMounted(()=>{ echartInstance = echarts.init(charts.value,'macarons'); window.

elementUI table点击单元格选中

默认选中第一行第三列(序号和辖区不可点击选中),单选功能,点击其他单元格,当前选中的单元格取消选中,目前没有找到更好的方法来实现该功能,先保留现有的方法后面有了优化会更新! <template> <el-table :data="baseDataList" style="width: 100%" height="98%" class="pageTablePart" highlight-current-row @cell-click="cellClick" ref="myTable" > <el-table-column width="50" align="center" type="index" label="序号" ></el-table-column> <el-table-column prop="areaId" label="辖区" align="center" :show-overflow-tooltip="true" ></el-table-column> <el-table-column v-for="(item, index) in tableHeader" :key="index" :prop="item.prop" align="center" :show-overflow-tooltip="true" > <template slot="header"> <p>{{ item.date }}</p> <p>({{ item.holiday }})</p> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableHeader: [ { date: "09-30", holiday: "周五-国庆-班", prop: "one", }, { date: "10-01", holiday: "周六-国庆-休", prop: "

javascript 零基础小白入门(一)

(一)前端开发三剑客:html css javascript html:结构层 从语义角度来描述页面结构。 css:表现层 从审美角度美化页面。 JavaScript:从交互角度度来提升用户体验。 今天开始学习JavaScript ,首先了解javascript有三部分组成,分别是ECMAScript、DOM、BOM三部分组成。 ECMAScript :为核心 包括 语法 规则 api 等 DOM:文档对象模型 BOM:浏览器对象模型。 说到浏览器 就不得不说一下我们现在的五大浏览器 Firefox(火狐)、Google Allo(谷歌)、IE、opera(欧朋)、Safari(苹果)。像什么360浏览器,qq浏览器,uc浏览器等这些都是基于这五大浏览器之下的 采用的都是这五大浏览器中的内核,就好比360浏览器 打开有个很大的e 那就是基于IE浏览器下的 采用的是ie的内核。 javascript是一门弱类型语言,在声明变量前,是没有数据类型的,一旦赋值后,变量就有了数据类型。 在html中插入 javascript 代码需要使用 script 标签。 在学习一门语言前,先学习它的语法规则和开发环境, javascript的开发环境: 1.编辑器:Editplus、Notepaad++、sublime、notepad 2.IDE:Dreamweaver、Hbuilder、webstrom、indelij JavaScript语法规则; 1.语句+;要以英文;来结尾),每一条js语句都是“一条”发送给浏览器的指令。 2.js代码 一定要区分大小写。 3.切记,所有的特殊符号均为英文半角。 4.在js环境中 代码对 换行、空格、缩进 不敏感。 5.注释:// 行注释 ;/* */ 文档注释。 6.js可以出现在html 页面的任何位置。 (二)直接量和变量 1. 直接量:又称为字面量,能直接使用的内容,常见的有两种:数值,字符串。 (1)数值:1、2、3、4、5、1.1、1.3、-1、-3等 (2)字符串:在程序中被单双引号 包起来的都是字符串 "hello" 'hello' (3) 其它字面量:true、false、null、正则表达式。 基本语句: alert('hello world'); alert('hi'); 在网页中弹出一个警告框,内容为hi 2.

DevOps平台之GitLab项目管理与项目开发【三】

简介 本文从三个大点进行讲解:项目管理、权限管理、项目开发 主要是GitLab服务的管理与使用, 项目管理、权限管理站在管理者的角度,GitLab的配置与使用,使得GitLab服务对使用的用户进行约束,对存储在GitLab服务端的项目进行管理 项目开发主要是站在开发者的角度,就是当远端的GitLab服务搭建完成后,如何借助其进行代码提交与拉取 要点 1、项目管理包括:群组管理,项目管理,项目分支管理。 这三者的关系是群组>项目>分支,并且是多对一的关系 2、权限管理包括:成员(用户)管理、群组授权成员、项目授权成员、授权成员角色 授权的核心就一句话,就是群组或者项目授权成员(在授权成员的时候给成员分配角色) 3、项目开发包括:代码拉取,创建分支,请求合并,执行合并 普通成员拉取,创建分支,申请合并分支 管理员审核分支合并请求,执行合并操作 总之 本文目的就是提供一份操作指南,让项目管理者和开发者能够使用GitLab快速进行项目开发 下边,图文并茂详细每个步骤 1、项目管理 1.1、创建群组 项目需要用群组作为项目的根路径,一个群组里面可以有多个项目 1.2、创建项目 1.3、新建项目分支 1.4、修改默认分支 默认分支是每次进入项目默认看到的分支 1.5、删除项目与分支 1.5.1、删除项目 项目–>设置–>通用–>高级 1.5.2、删除分支 项目–>仓库–>分支 一般项目新建的时候会默认生成分支main,而通常我们都是命名成master,所以需要删除重建 2、权限管理 2.1、账户管理 2.1.1、修改当前登录账户密码 2.1.2、管理员登录修改 2.1.3、成员管理 进入管理中心,创建新用户 新成员需要首次登录修改密码才能正常使用 2.2、群组与项目 群主用来对项目进行分组,比如 项目路径 http://192.168.1.3:8800/tools/fx-sql-format.git 那么这个项目所处的群组是tools,项目名是fx-sql-format 群组可以有子群组 2.3、角色权限 Gitlab用户在组中有五种角色权限:Guest、Reporter、Developer、Master、Owner Guest(游客):可以创建issue、发表评论,不能读写版本库 Reporter(通讯员):可以克隆代码,不能提交,QA、PM可以赋予这个权限 Developer(开发者):可以克隆代码、开发、提交、push,RD可以赋予这个权限 Maintainer(维护者):可以创建项目、添加tag、保护分支、添加项目成员、编辑项目,核心RD负责人可以赋予这个权限 Owner:(所有者)可以设置项目访问权限 - Visibility Level、删除项目、迁移项目、管理组成员,开发组leader可以赋予这个权限 *Gitlab中的组和项目有三种访问权限:Private、Internal、Public Private:只有组成员才能看到 Internal:只要登录的用户就能看到 Public:所有人都能看到 2.4、授权 2.4.1、群组权限 2.4.2、群组授权成员 即邀请成员进群组,这样对应的用户就能获取群组下的项目 2.4.3、项目授权 即邀请成员项目,这样对应的用户就能对项目进行管理,如果已经授权了群组,组下面的项目会继承相关的权限,不用再次设置,除非项目需要特殊授权 3、项目开发 3.1、Checkout分支 注意:这里需要先安装GIT客户端 安装教程:Windows系统Git客户端安装教程2022版 3.1.1、使用IDEA 首先登录到GitLab复制项目地址 然后 Idea获取远程项目,验证账户之后就可以Checkout了

ubuntu安装nvidia显卡驱动、cuda-toolkit、cudnn

ubuntu安装nvidia显卡驱动、cuda-toolkit、cudnn 使用显卡进行深度学习需要分别安装3个驱动包:nvidia显卡驱动、cuda-toolkit工具包、cudnn工具包,需要根据显卡型号和各版本差异选择对应版本安装。 具体显卡驱动版本和cuda-toolkit版本对照查看官方文档,外网访问可能会比较慢。 # 命令行安装显卡驱动和cuda都会有问题,已踩坑,以下命令仅作参考: # sudo apt-cache search package nvidia-driver # sudo apt install nvidia-driver-515-server # 显卡驱动 # sudo apt-cache search package nvidia-cuda # sudo apt install nvidia-cuda-toolkit # cuda 官网提供的cuda-toolkit安装包内置了对应版本的显卡驱动,只需要下载cuda包默认安装即可同时安装显卡驱动,即只需查看下载安装与你的显卡型号匹配cuda安装包 即可。 如果想下载安装包再安装可查看驱动下载链接、cuda-toolkit下载链接、cudnn下载链接。 安驱动需要用到gcc和make,可以用 sudo apt install gcc make 下载安装。 安装显卡驱动时若遇到报错“The Nouveau kernel driver is currently in use by your system. This driver is…”则需要禁用Nouveau驱动。禁用Nouveau驱动后进不了系统 可以查看解决方案。 我的系统是Ubuntu20.04 server,显卡版本Rtx2060,于是选用: # 下载cuda安装包 wget https://developer.download.nvidia.com/compute/cuda/11.8.0/local_installers/cuda_11.8.0_520.61.05_linux.run sudo sh cuda_11.8.0_520.61.05_linux.run # or wget https://developer.download.nvidia.com/compute/cuda/11.7.1/local_installers/cuda_11.7.1_515.65.01_linux.run sudo sh cuda_11.

【每日一练】147—实现一个滑动按钮动画组件效果

作者 | 杨小爱 写在前面 今天这个练习,是一个动画按钮小组件的实现,最终效果如下: 当然,代码也很简单,具体实现过程如下: HTML代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>dongh</title> <link rel="stylesheet" href="style.css"> </head> <body> <a href="http://www.webqdkf.com" class="btn">鼠标来点一下<span><ion-icon name="arrow-forward-outline"></ion-icon></span></a> <script type="module" src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.esm.js"></script> <script nomodule src="https://unpkg.com/ionicons@5.5.2/dist/ionicons/ionicons.js"></script> </body> </html> CSS代码: * { margin: 0; padding: 0; box-sizing: border-box; font-family: 'Poppins', sans-serif; } body { display: flex; justify-content: center; align-items: center; min-height: 100vh; background: #28272a; } .btn { position: relative; width: 200px; height: 60px; background: rgba(255,255,255,0.1); border-radius: 60px; display: flex; justify-content: center; align-items: center; color: rgba(255,255,255,0.

7 个非常实用的 Vue.js 库

编辑整理 | 杨小爱 我们在开发项目的时候,为了提升开发效率,会经常使用一些实用的开发库,而Vue.js 又是前端领域中很受欢迎的框架之一,因此,就有很多开发者开发了各种实用的库,在这里,我整理了 7 个觉得好用的 Vue.js 库,希望这些库能够帮助到你,现在,我们开始吧。 1. Echarts 如果您正在创建一个数据驱动的应用程序,那么,它很可能有一个图形。在这种情况下,这个库对您来说是一个很好的资源。这个库提供了许多漂亮的和可定制的图表,如条形图、饼图、极坐标图、散点图等等,这个库在 Github 上有超过 8k 星。 2. Calendar 处理日期是每个开发人员都会遇到的常见功能之一。在这种情况下,这个库会让你的生活更轻松。Calendar是一个优雅的日历和日期选择器, 它提供了许多功能,例如,高亮显示、点、条、自定义弹出窗口、日期范围等等。这个库在 GitHub 上有超过 3500 颗星。 3. MavonEditor 如果您想添加降价编辑器的功能,那么,这对您来说是一个很好的资源。这个库提供了一个支持各种个性化功能的 markdown 编辑器。它支持表情符号、下标、上标、容器、定义列表等,这个库在 GitHub 上有超过 5500 颗星。 4. Composable 这个库的目标是成为现实世界可组合函数的一站式商店,通过积极的 tree-shaking 来保持它对你的最终代码的轻量级。它由 50 多个不同的可组合项组成,例如 i18n、验证、分页、获取等。该库在 GitHub 上拥有超过 1k 颗星。 5. Infinite grid 如果您必须使用网格布局,那么这对您来说是一个很好的资源。该库用于根据网格类型无限排列包括内容的元素。它将帮助您实现由大小不同的不同卡片元素组成的各种网格。它通过维持模块在任何情况下处理的 DOM 数量来保证性能。它在 GitHub 上拥有超过 1500 颗星。 6. Social-sharing 如果您的应用程序具有在社交网络上共享链接的功能,那么,这对您来说是一个很好的资源。当您在社交网络上共享链接时,社交网络将抓取该链接以检测 Open Graph 元标记。 如果您共享不包含 Open Graph 元标记的链接,社交网络将无法显示您链接的丰富内容。这是一个无渲染的 Vue.js 组件,用于共享社交网络链接,与 SSRR 兼容。它在 GitHub 上有超过 1300 颗星。

单片机设计_单路测温系统(AT89C51、DS18B20温度传感器、LCD1602)

单片机测温系统 想要更多项目私wo!!! 一、简介 此系统主要由AT89C51、DS18B20温度模块和LCD1602组成。 大致的原理是DS18B20温度采集到的数据传送给AT89C51的P3.3/INT1(外部中断1),最后通过LCD1602显示当前的实时温度。 二、效果图 模拟仿真图 三、源代码 /*想要更多项目私wo!!!*/ /*************** writer:shopping.w ******************/ #include <reg52.h> #include <intrins.h> #define uint unsigned int #define uchar unsigned char #define delayNOP() {_nop_();_nop_();_nop_();_nop_();} sbit DQ = P3^3; sbit LCD_RS = P2^0; sbit LCD_RW = P2^1; sbit LCD_EN = P2^2; uchar code Temp_Disp_Title[]={"Current Temp : "}; uchar Current_Temp_Display_Buffer[]={" TEMP: "}; uchar code Temperature_Char[8] = { 0x0c,0x12,0x12,0x0c,0x00,0x00,0x00,0x00 }; uchar code df_Table[]= { 0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9 }; uchar CurrentT = 0; uchar Temp_Value[]={0x00,0x00}; uchar Display_Digit[]={0,0,0,0}; bit DS18B20_IS_OK = 1; void DelayXus(uint x) { uchar i; while(x--) { for(i=0;i<200;i++); } } bit LCD_Busy_Check() { bit result; LCD_RS = 0; LCD_RW = 1; LCD_EN = 1; delayNOP(); result = (bit)(P0&0x80); LCD_EN=0; return result; } void Write_LCD_Command(uchar cmd) { while(LCD_Busy_Check()); LCD_RS = 0; LCD_RW = 0; LCD_EN = 0; _nop_(); _nop_(); P0 = cmd; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void Write_LCD_Data(uchar dat) { while(LCD_Busy_Check()); LCD_RS = 1; LCD_RW = 0; LCD_EN = 0; P0 = dat; delayNOP(); LCD_EN = 1; delayNOP(); LCD_EN = 0; } void LCD_Initialise() { Write_LCD_Command(0x01); DelayXus(5); Write_LCD_Command(0x38); DelayXus(5); Write_LCD_Command(0x0c); DelayXus(5); Write_LCD_Command(0x06); DelayXus(5); } void Set_LCD_POS(uchar pos) { Write_LCD_Command(pos|0x80); } void Delay(uint x) { while(--x); } uchar Init_DS18B20() { uchar status; DQ = 1; Delay(8); DQ = 0; Delay(90); DQ = 1; Delay(8); DQ = 1; return status; } uchar ReadOneByte() { uchar i,dat=0; DQ = 1; _nop_(); for(i=0;i<8;i++) { DQ = 0; dat >>= 1; DQ = 1; _nop_(); _nop_(); if(DQ) dat |= 0X80; Delay(30); DQ = 1; } return dat; } void WriteOneByte(uchar dat) { uchar i; for(i=0;i<8;i++) { DQ = 0; DQ = dat& 0x01; Delay(5); DQ = 1; dat >>= 1; } } void Read_Temperature() { if(Init_DS18B20()==1) DS18B20_IS_OK=0; else { WriteOneByte(0xcc); WriteOneByte(0x44); Init_DS18B20(); WriteOneByte(0xcc); WriteOneByte(0xbe); Temp_Value[0] = ReadOneByte(); Temp_Value[1] = ReadOneByte(); DS18B20_IS_OK=1; } } void Display_Temperature() { uchar i; uchar t = 150, ng = 0; if((Temp_Value[1]&0xf8)==0xf8) { Temp_Value[1] = ~Temp_Value[1]; Temp_Value[0] = ~Temp_Value[0]+1; if(Temp_Value[0]==0x00) Temp_Value[1]++; ng = 1; } Display_Digit[0] = df_Table[Temp_Value[0]&0x0f]; CurrentT = ((Temp_Value[0]&0xf0)>>4) | ((Temp_Value[1]&0x07)<<4); Display_Digit[3] = CurrentT/100; Display_Digit[2] = CurrentT%100/10; Display_Digit[1] = CurrentT%10; Current_Temp_Display_Buffer[11] = Display_Digit[0] + '0'; Current_Temp_Display_Buffer[10] = '.

Anaconda安装和换源

文章目录 1. Python的安装1.1 安装Anaconda 2. 换源 1. Python的安装 工欲善其事必先利其器,那么我们首先第一步就应该安装python这个语言。 安装python我首推Anaconda这个软件,它不仅集成了相应的第三方库,而且还能方便我们创建虚拟环境,将不同的环境隔离开来,当然,这是后话。 1.1 安装Anaconda Anaconda的下载地址为:www.anaconda.com 当然了。这个网址保不齐什么时候抽风,我也为大家提供了相应的安装包。 Linux版本:Linux版本Anaconda Windows版本:Windows版本Anaconda 下载好了之后,点击安装,如下图所示: 然后点击Next,进行下一步。 随后就是选择路径,这里我推荐的是安装在其他的盘,不然C盘清理还挺麻烦的! 之后就等它安装完成即可了。 这个时候打开那个传说中的黑色框框,打开方式如下。 点击Windows的搜索,输入cmd,如下: 然后输入python,就可以看到界面了~ 2. 换源 Anaconda默认使用的是外国的源,而因为某些不知名的因素,比如(墙)的存在,使得我们不能够访问到外网。好在我们有强大的国内镜像站,为我们提供了相应的解决方案。 所以,要想实现下载第三方包自由,就需要换源 这里我们只需要换pip源就行了。 tips:pip是一个python强大的安装包的管理器,你可以理解成,这是一个安装软件的安装器 这里提供两种方法,第一种是临时换源,第二种是永久换源。 临时换源的话,Linux和Windows做法一致。 在Windows系统中,在cmd中输入如下命令 pip install xxx(包名) -i https://pypi.doubanio.com/simple eg: pip install opencv-python -i https://pypi.doubanio.com/simple Windows: 而要想实现永久的换源,在Windows中需要在下面这个目录下修改:C:\\Users\\{用户名}\\pip\\pip.conf,填写如下内容,如果没有这个文件或者路径,直接创建即可。 [global] timeout = 600 index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn Linux系统下,直接在路径~/.pip/pip.conf文件中填入如下内容: 如果没有这个文件,则直接创建 [global] timeout = 600 index-url = https://pypi.tuna.tsinghua.edu.cn/simple trusted-host = pypi.tuna.tsinghua.edu.cn 填写成功之后,就可以愉快的装包了。

STM32实战总结:HAL之RTC

RTC基础知识参考: 51单片机内部外设:实时时钟(SPI)_路溪非溪的博客-CSDN博客 STM32中的RTC 51单片机通常是外置的RTC芯片如DS1302,那么STM32的RTC是什么情况呢? STM32芯片自带RTC,因此不须像其他MCU需外接RTC模块。 先读一读单片机的数据手册。 实时时钟是一个独立的定时器。RTC模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。修改计数器的值可以重新设置系统当前的时间和日期。 RTC模块和时钟配置系统(RCC_BDCR寄存器)处于后备区域,即在系统复位或从待机模式唤醒后,RTC的设置和时间维持不变。 系统复位后,对后备寄存器和RTC的访问被禁止,这是为了防止对后备区域(BKP)的意外写操 作。执行以下操作将使能对后备寄存器和RTC的访问: ● 设置寄存器RCC_APB1ENR的PWREN和BKPEN位,使能电源和后备接口时钟 ● 设置寄存器PWR_CR的DBP位,使能对后备寄存器和RTC的访问。 主要特性: ● 可编程的预分频系数:分频系数高为220。 ● 32位的可编程计数器,可用于较长时间段的测量。 ● 2个分离的时钟:用于APB1接口的PCLK1和RTC时钟(RTC时钟的频率必须小于PCLK1时钟 频率的四分之一以上)。 ● 可以选择以下三种RTC的时钟源: ● HSE时钟除以128; ● LSE振荡器时钟; ● LSI振荡器时钟 ● 2个独立的复位类型: ● APB1接口由系统复位; ● RTC核心(预分频器、闹钟、计数器和分频器)只能由后备域复位 ● 3个专门的可屏蔽中断: ● 1.闹钟中断,用来产生一个软件可编程的闹钟中断。 ● 2.秒中断,用来产生一个可编程的周期性中断信号(长可达1秒)。 ● 3.溢出中断,指示内部可编程计数器溢出并回转为0的状态。 RTC时钟源: 三种不同的时钟源可被用来驱动系统时钟(SYSCLK): ● HSI振荡器时钟 ● HSE振荡器时钟 ● PLL时钟 这些设备有以下2种二级时钟源: ● 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。 RTC用于从停机/待机模式下自动唤醒系统。 ● 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。 RTC原理框图 灰色区域为待机时维持供电区域。 APB1 接口:用来和 APB1 总线相连。 此单元还包含一组 16 位寄存器,可通过 APB1 总线对其进行读写操作。APB1 接口由 APB1 总线时钟驱动,用来与 APB1 总线连接。通过APB1接口可以访问RTC的相关寄存器(预分频值,计数器值,闹钟值)。

Python爬虫基础—安装第三方模块及使用

Python安装三方模块 一、Python修改镜像源 相当于是从网上下载插件,python的三方模块全部储存在模块仓库 python默认的官方仓库服务器在国外。那么,如何快速的从国外服务器安装模块? 修改镜像源,国内有很多像豆瓣、阿里云、清华云等与国外服务器实时同步的服务器。因此,我们可以将镜像源修改为国内服务器镜像源 windows: pip config set global.index-url https://pypi.douban.com/simple 二、Python安装三方模块 方法一:使用命令安装 windows系统:pip install 模块名 mac、linux系统:pip3 install 模块名 方法二:使用pycharm自带的可视化界面安装 setting --> project:项目名 --> python interpreter --> + --> 搜索模块名 --> install package Python三方模块的使用 一、requests模块 作用:requests从本机(本地网络IP地址)向网站服务器发送请求。目标网站服务器给本机返回响应结果。 # 模块(包、库)的使用都需要导包 import requests # 目标网站网址 URL = 'https://www.baidu.com' # Headers:标头,将Headers赋给爬虫,是为了将爬虫伪装成浏览器 # User-Agent:对应的值包含了浏览器、操作系统的各项信息 Headers = { 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/109.0.0.0 Safari/537.36' } # 发送请求,得到响应结果 response = requests.

Processing rect() 函数应用——范斯沃斯住宅几何风 绘制

请用Processing进行运行 void setup(){ size(704,945);//画框设置 } void draw(){ background(255,255,255);//白底图 fill(232,183,124); noStroke(); rect(21,17,661,859);//浅棕背景色 strokeWeight(3); stroke(199,162,79); line(22,458+6+64+16+20,680,458+6+64+16+20); noStroke(); fill(247,234,199); rect(178,457,466,7);//上1矩形 stroke(141,124,95); strokeWeight(1); line(178,459.5,178+466,459.5);//上1矩形中线 stroke(141,124,95); strokeWeight(2); line(157+21,458+4,157+21+466-0.5,458+4); //上1矩形下线 noStroke(); fill(247,234,203); rect(178,458+6,466,9); //上2矩形 noStroke(); rect(178,458+6+64,466,9);//下1矩形 rect(178-133,458+6+64+16,332,9);//下2矩形 rect(178-133+31,458+6+64+16,5,19); stroke(141+20+20,124+20+20,95+20,80); strokeWeight(1); line(178-133+31+1.5+1,458+6+64+16,178-133+31+1+1.5,458+6+64+16+19);//左1矩形 noStroke(); rect(178+132,458+6+64-57,334,57);//中间大矩形 fill(232,183,124); rect(178+132+2,458+6+64-57+25,330,57-25);//背景色长矩形 fill(232,143,65); rect(178+140,458+6+64-9,12,9);//左1格小黄色方块 rect(178+140+98,458+6+64-9-40,148,48);//中间格大黄色方块下 fill(198,59,42); rect(178+140+98,458+6+64-9-40,148,19);//中间格大黄色方框上 fill(75,95,67); rect(178+140+98+2,458+6+64-9-40+25+2+2,144,19);//中间格下部绿色 noStroke(); fill(92-20,124-20,100-20,230); rect(178+132+2,458+6+64-55,330,50/2);//绿色长矩形 fill(225,215,178,230); rect(178+30+133+5,457+9+7,47,55);//左帘 rect(178+30+133+133+133+5,457+9+7,30,55);//右帘 fill(247,234,203); stroke(141,124,95); strokeWeight(2.5); line(157+21+164,458+6+9,157+21+161+301,458+6+9); //上2矩形下线 noStroke(); rect(178+30,457,5,98+8.5); stroke(166,154,114); strokeWeight(1.5); line(178+30+4,458+3.6,178+30+4,458+6+9); line(178+30+4,458+6+64,178+30+4,458+6+64+9); line(178+30+4,458+6+64+16,178+30+4,458+6+64+16+9);//左2矩形 noStroke(); rect(178+30+133,457,5,98+8.5); stroke(166,154,114); strokeWeight(2); line(178+30+133+4,457+2,178+30+4+133,458+6+64+9); stroke(166+20,154+20,114+20); line(178+30+4+133,458+6+64+16,178+30+4+133,458+6+64+16+9);//左3矩形 noStroke(); rect(178+30+133+133,457,5,98+8.

java swing(GUI图形化界面)基础教程4-游戏开发

1.开始前 在开始本篇内容前,先回顾一下之前的代码,以及其中存在的问题.(需要用到面向对象知识)如下: 链接:(28条消息) java swing(GUI图形化界面)基础教程3-添加事件监听1_java图形界面监听类_尽辰的博客-CSDN博客 public static void main(String[] args) { JFrame frame=new JFrame();//这是一个窗口类 frame.setBounds(100,100,500,500);//设置窗口位置与大小 frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);//用户关闭时会关闭所有窗口 JPanel panel=new JPanel();//创建一个面板,并且将这个面板添加到窗口里面去 frame.add(panel); panel.setLayout(null);//取消默认的布局管理 JButton button=new JButton();//创建一个按钮,并且将这个按钮添加到面板上面 button.setText("按钮");//设置按钮的文字内容 button.setBounds(100,100,100,100);//设置按钮的位置大小 panel.add(button);//添加按钮到面板 frame.setVisible(true);//设置这窗口可见,记得尽量要把这一句放在最后面 } 即,全部东西都挤在一起,这对于我们后面游戏开发是不利的,因此我把它分为3个类: 代码分别为: public class MyFrame extends JFrame { public MyFrame(){ setBounds(100,100,500,500); setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); add(new MyPanel()); setVisible(true); } } public class MyPanel extends JPanel { public MyPanel(){ init(); addObj(); } private void init(){ setLayout(null);//取消默认的布局管理 } private void addObj(){ JButton button=new JButton(); button.setText("按钮"); button.

平台跳跃游戏《梦之奇旅》代码回顾

目录 1.说明 1.1项目说明 2.主要控制 2.1主人公PlayerController 2.1.1基本行动 2.1.2生命 2.1.3分身记录 2.2虚影分身SubstitudeVController 2.3实体分身SubstitudeEController 3.相机 3.1主相机控制MainCameraController 4.场景道具 4.1一开关对多个门多次触发器SwitchTrigger 4.2一开关对多个门多次平台SwitchPlatform 4.3一开关对多个门持续触发器LastingTrigger 4.4多开关对单一门多次触发器MultiTrigger 4.5多开关对单一门多次平台MultiPlatform 4.5伤害区域(刺)Sting 5.UI 5.1冲刺时间显示UIdashTime 5.2虚影分身持续时间UIVTime 5.3实体分身持续时间UITTime 5.4虚影分身黑幕UIUpBlack, UIDownBlack 6.场景切换 6.1主菜单MainMenu 6.2传送门Door 7.动画 7.1主角动画PlayerAnimationController 7.2分身动画SubstitudeController 8.声音 8.1SoundManager 9.总结 1.说明 1.1项目说明 作为一个平台跳跃类游戏,游戏特色为主角拥有控制两个角色行动并解谜的特性。然而,不同于双人游戏的同时控制不同角色,主角可以将自己未来一段时间内想要分身执行的操作“提前规划”,并在想要的时机使用分身。个人认为是十分具有潜力的玩法,可惜是开发时长过短,无法斟酌关卡设计的引导性与游戏性。 2.主要控制 2.1主人公 using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.VFX; using UnityEngine.SceneManagement; public class PlayerController : MonoBehaviour { //单例化player public static PlayerController instance { get; private set; } //声明速度 public float velocity = 0.

Vue2的生命周期(详解)

Vue的生命周期 一、生命周期的概念二、钩子函数三、Vue2的生命周期3.1 初始化阶段3.2 挂载阶段3.3 更新阶段3.4 销毁阶段 一、生命周期的概念 Vue实例的生命周期: 从创建到销毁的整个过程 二、钩子函数 Vue框架内置函数,随着组件的生命周期阶段,自动执行 作用:特定的时间点,执行特定的操作分类:四大阶段 八大方法 三、Vue2的生命周期 3.1 初始化阶段 new Vue() – Vue实例化(组件也是一个小的Vue实例)Init Events & Lifecycle – 初始化事件和生命周期函数beforeCreate – 生命周期钩子函数被执行(data和methods初始化之前)Init injections&reactivity – Vue内部添加data和methods等created – 生命周期钩子函数被执行, 实例创建(不能获取真实的DOM)接下来是编译模板阶段 –开始分析Has el option? – 是否有el选项 – 检查要挂到哪里 没有. 调用$mount()方法 有, 继续检查template选项 <template> <div> <p>学习生命周期 - 看控制台的打印</p> <p id="mp">{{ msg }}</p> </div> </template> <script> export default { //第一阶段 初始化 //new Vue以后,vue内部给实例对象添加了一些属性和方法,data和methods初始化之前 beforeCreate() { console.log('1.beforeCreate--执行') console.log('msg', this.msg); //undefined }, //data和methods初始化以后 不能获取真实的DOM //场景:网络请求,注册全局事件,绑定页面滚动事件 created() { console.

Java枚举以json形式返回给前端

正是江南好风景,赏花时节却无君 ——南方 前言 在日常开发中,我们会经常使用到枚举类,但是我们在将枚举代表的含义返回给前端的时候,常常会导致我们只返回枚举的某一部分给前端(不是key就是value),那么如果我们想要将key和value都返回给前端该怎么处理呢 一个注解 @JsonFormat(shape = JsonFormat.Shape.OBJECT) 这个注解可以将枚举类序列化为对象,接下来就看怎么使用 使用 1.先来一个简单的枚举类 @JsonFormat(shape = JsonFormat.Shape.OBJECT) public enum AuditEnum { PASS(1, "通过"), REJECT(2, "驳回"); private Integer code; private String value; AuditEnum(Integer code, String value) { this.code = code; this.value = value; } public Integer getCode() { return code; } public String getValue() { return value; } } 2.建一个常用的实体类 @Data public class Audit { private String name; private AuditEnum auditEnum; } 3.按照个人习惯再来一个vo对象返回前端

SpringBoot后端项目在服务器上运行

目录 前提:服务器上有jdk 1.设置项目为生产环境(pro) 2.将项目打成jra包 3.将打的jar包放到服务器上 4.运行jar包 java -jar 命令运行jar包 5.一直运行(关闭控制台仍然运行) 前提:服务器上有jdk 如何在linux服务器上安装JDK http://t.csdn.cn/WxhJW 1.设置项目为生产环境(pro) 在application-pro中配置好服务器上的数据库 2.将项目打成jra包 package打包 如果代码有改动,clean一下再package 3.将打的jar包放到服务器上 4.运行jar包 java -jar CommunityApplet.jar java -jar 命令运行jar包 5.一直运行(关闭控制台仍然运行) nohup java -jar + jar包