RuoYi -- Git、注解机制、项目本身、_ruo-yi-git-程序员宅基地

技术标签: git  Java基础  

Git

版本控制( Revision control)是一种在并发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。

  • 实现跨区域多人协同开发
  • 追踪和记载一个或者多个文件的历史记录
  • 组织和保护你的源代码和文档
  • 统计工作量
  • 并行开发、提高开发效率跟踪记录整个软件的开发过程
  • 减轻开发人员的负担,节省时间,同时降低人为错误 

 版本控制的分类

1、本地版本控制 (以RCS为代表)
记录文件每次的更新,可以对每个版本做一个快照,或是记录补丁文件,适合个人用,如RCS。

2、集中版本控制 (以SVN为代表)
所有的版本数据都保存在服务器上,协同开发者从服务器上同步更新或上传自己的修改。(注意上下两图灰色大框不一样)

所有的版本数据都存在服务器上{用户的本地只有自己以前所同步的版本,如果不连网的话,用户就看不到历史版本,也无法切换版本验证问题,或在不同分支工作。而且,所有数据都保存在单一的服务器上,有很大的风险这个服务器会损坏,这样就会丢失所有的数据,当然可以定期备份。代表产品:SVN、CVS、VSS

3、分布式版本控制 (以GIT为代表)
所有版本信息仓库全部同步到本地的每个用户,这样就可以在本地查看所有版本历史,可以离线在本地提交,只需在连网时push到相应的服务器或其他用户那里。由于每个用户那里保存的都是所有的版本数据(但也存在安全隐患),只要有一个用户的设备没有问题就可以恢复所有的数据,但这增加了本地存储空间的占用。

GIT和SVN的区别

SVN是集中式版本控制系统,版本库是集中放在中央服务器的,而工作的时候,用的都是自己的电脑,所以首先要从中央服务器得到最新的版本,然后工作,完成工作后,需要把自己做完的活推送到中央服务器。集中式版本控制系统是必须联网才能工作,对网络带宽要求较高。


Git是分布式版本控制系统,没有中央服务器,每个人的电脑就是一个完整的版本库,工作的时候不需要联网了,因为版本都在自己电脑上。协同的方法是这样的︰比如说自己在电脑上改了文件A,其他人也在电脑上改了文件A,这时,你们两之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。(目前GIT最热门,最先进)

Git环境配置

打开git官网] https://git-scm.com/,下载git对应操作系统的版本。所有东西下载慢的话就可以去找镜像!
官网下载太慢,我们可以使用淘宝镜像下载:http://npm.taobao.org/mirrors/git-for-windows/

卸载GIT,直接反安装即可(uninstall),还要检查环境变量Path里有没有配置,有的话删除。安装直接无脑下一步。

  • Git Bash : Unix与Linux风格的命令行,使用最多,推荐最多
  • Git CMD : Windows风格的命令行
  • Git GUI:图形界面的Git,不建议初学者使用,尽量先熟悉常用命令

在当前目录中打开Git Bash——直接在当前目录中右键选中Git Bash Here 即可

 基本Linux命令

右键打开 Git Bash   (蓝色——目录,绿色——程序,白色 ——文件

  1.  cd  改变目录。
  2.  cd.. 回退到上一个目录,直接cd进入默认目录
  3.  pwd :显示当前所在的目录路径。
  4.   ls(Il):都是列出当前目录中的所有文件,只不过ll(两个ll)列出的内容更为详细。
  5.  touch:新建一个文件,如touch index.js 就会在当前目录下新建一个index.js文件。
  6.   rm:删除一个文件, rm index.js 就会把index.js文件删除。
  7.   mkdir:新建一个目录,就是新建一个文件夹。
  8.  rm -r:删除一个文件夹, rm -r src删除src目录
  9. mv移动文件, mv index.html src    index.html是我们要移动的文件, src是目标文件夹在同一目录下。
  10.  reset重新初始化终端/清屏。
  11. clear清屏。
  12. history查看命令历史。
  13.  help帮助。
  14. exit 退出。
  15. #表示注释
     

Git配置

所有的配置文件,其实都保存在本地!

查看配置 git config -l

#查看系统config
git config --system --list
  
#查看当前用户(global)配置
git config --global  --list

 Git相关的配置文件:

1)Git\etc\gitconfig  :Git 安装目录下的 gitconfig     --system 系统级

2)C:\Users\Administrator\ .gitconfig    只适用于当前登录用户的配置  --global 全局  。这里可以直接编辑配置文件,通过命令设置后会响应到这里。

设置用户名与邮箱(用户标识,必要)

当你安装Git后首先要做的事情是设置你的用户名称和e-mail地址。这是非常重要的,因为每次Git提交都会使用该信息。它被永远的嵌入到了你的提交中:

git config --global user.name "kuangshen"  #名称
git config --global user.email [email protected]   #邮箱

Git基本理论(重要)

Git本地有三个工作区域:工作目录(Working Directory)、暂存区(Stage/Index)、资源库(Repository或Git Directory)。如果在加上远程的git仓库(Remote Directory)就可以分为四个工作区域。文件在这四个区域之间的转换关系如下:

  • Workspace:工作区,就是你平时存放项目代码的地方

  • Index / Stage:暂存区,用于临时存放你的改动,事实上它只是一个文件,保存即将提交到文件列表信息

  • Repository:仓库区(或本地仓库),就是安全存放数据的位置,这里面有你提交到所有版本的数据。其中HEAD指向最新放入仓库的版本

  • Remote:远程仓库,托管代码的服务器,可以简单的认为是你项目组中的一台电脑用于远程数据交换。(Gitee GitHub

本地的三个区域确切的说应该是git仓库中HEAD指向的版本:

  • Directory:使用Git管理的一个目录,也就是一个仓库,包含我们的工作空间和Git的管理空间。

  • WorkSpace:需要通过Git进行版本控制的目录和文件,这些目录和文件组成了工作空间。

  • .git:存放Git管理信息的目录,初始化仓库的时候自动创建。

  • Index/Stage:暂存区,或者叫待提交更新区,在提交进入repo之前,我们可以把所有的更新放在暂存区。

  • Local Repo:本地仓库,一个存放在本地的版本库;HEAD会只是当前的开发分支(branch)。

  • Stash:隐藏,是一个工作状态保存栈,用于保存/恢复WorkSpace中的临时状态。

工作流程

git的工作流程一般是这样的:

1、在工作目录中添加、修改文件;

2、将需要进行版本管理的文件放入暂存区域;

3、将暂存区域的文件提交到git仓库;

因此,git管理的文件有三种状态:已修改(modified),已暂存(staged),已提交(committed)

Git项目搭建

创建工作目录与常用指令

工作目录(WorkSpace)一般就是你希望Git帮助你管理的文件夹,可以是你项目的目录,也可以是一个空目录,建议不要有中文。

日常使用只要记住下图6个命令:

本地仓库搭建

创建本地仓库的方法有两种:一种是创建全新的仓库,另一种是克隆远程仓库。

1、创建全新的仓库,需要用GIT管理的项目的根目录执行:

# 在当前目录新建一个Git代码库
$ git init

2、执行后可以看到,仅仅在项目目录多出了一个.git目录,关于版本等的所有信息都在这个目录里面。

克隆远程仓库

1、另一种方式是克隆远程目录,由于是将远程服务器上的仓库完全镜像一份至本地!

# 克隆一个项目和它的整个代码历史(版本信息)
$ git clone [url]  # https://gitee.com/kuangstudy/openclass.git

2、去 gitee 或者 github 上克隆一个测试!

文件的四种状态

版本控制就是对文件的版本控制,要对文件进行修改、提交等操作,首先要知道文件当前在什么状态,不然可能会提交了现在还不想提交的文件,或者要提交的文件没提交上。

  • Untracked: 未跟踪, 此文件在文件夹中, 但并没有加入到git库, 不参与版本控制. 通过git add 状态变为Staged.

  • Unmodify: 文件已经入库, 未修改, 即版本库中的文件快照内容与文件夹中完全一致. 这种类型的文件有两种去处, 如果它被修改, 而变为Modified. 如果使用git rm移出版本库, 则成为Untracked文件

  • Modified: 文件已修改, 仅仅是修改, 并没有进行其他的操作. 这个文件也有两个去处, 通过git add可进入暂存staged状态, 使用git checkout 则丢弃修改过, 返回到unmodify状态, 这个git checkout即从库中取出文件, 覆盖当前修改 !

  • Staged: 暂存状态. 执行git commit则将修改同步到库中, 这时库中的文件和本地文件又变为一致, 文件为Unmodify状态. 执行git reset HEAD filename取消暂存, 文件状态为Modified

查看文件状态

上面说文件有4种状态,通过如下命令可以查看到文件的状态:

#查看指定文件状态
git status [filename]

#查看所有文件状态
git status

# git add .                  添加所有文件到暂存区(有个点)
# git commit -m "消息内容"    提交暂存区中的内容到本地仓库 -m 提交信息

忽略文件

有些时候我们不想把某些文件纳入版本控制中,比如数据库文件,临时文件,设计文件等

在主目录下建立".gitignore"文件,此文件有如下规则:

  1. 忽略文件中的空行或以井号(#)开始的行将会被忽略。

  2. 可以使用Linux通配符。例如:星号(*)代表任意多个字符,问号(?)代表一个字符,方括号([abc])代表可选字符范围,大括号({string1,string2,...})代表可选的字符串等。

  3. 如果名称的最前面有一个感叹号(!),表示例外规则,将不被忽略。

  4. 如果名称的最前面是一个路径分隔符(/),表示要忽略的文件在此目录下,而子目录中的文件不忽略。

  5. 如果名称的最后面是一个路径分隔符(/),表示要忽略的是此目录下该名称的子目录,而非文件(默认文件或目录都忽略)。

#为注释
*.txt        #忽略所有 .txt结尾的文件,这样的话上传就不会被选中!
!lib.txt     #但lib.txt除外
/temp        #仅忽略项目根目录下的TODO文件,不包括其它目录temp
build/       #忽略build/目录下的所有文件
doc/*.txt    #会忽略 doc/notes.txt 但不包括 doc/server/arch.txt

设置公钥

2、设置本机绑定SSH公钥,实现免密码登录!(免密码登录,这一步挺重要的,码云是远程仓库,我们是平时工作在本地仓库!)

# 进入 C:\Users\Administrator\.ssh 目录  只要安装了Git都有
# 生成公钥 (在当前目录打开Git Bash)
ssh-keygen -t rsa   # 加密算法

如此就生成了公钥

3、将公钥信息public key 添加到码云账户中即可!(设置中)

4、使用码云创建一个自己的仓库!

许可证:开源是否可以随意转载,开源但是不能商业使用,不能转载,...  限制!

新建仓库后,复制仓库URL,然后新建本地仓库,执行clone命令即可将本地仓库与远程仓库连接。我是将RuoYi项目源码复制到本地仓库中put到远程仓库中。

报错


可能是之前码云有个景德镇的异常登录,我修改了码云密码,然后忘记本地Git同步密码。

使用如下指令重置用户名密码:

git config --system --unset credential.helper

然后再次提交,重新输入用户名密码即可。

IDEA中集成Git

当前远程Git仓库还是空的,如何让这个远程仓库来管理本地工程呢?在idea新创建一个SpringBoot项目,项目目录就是本地的git目录,也就是和远程仓库对应到本地的目录同一目录。

但我这边实践的时候新建工程目录和远程仓库目录不一致,依然可以。

1、新建项目,绑定git。

如图,idea界面左下角的git按钮点开可以看到git的相关控制信息

在Idea中使用Git后,类名各种颜色代表的含义  https://blog.csdn.net/yf_mood/article/details/88191818

它们分别表示的含义:

绿色,已经加入控制暂未提交
红色,未加入版本控制
蓝色,加入,已提交,有改动
白色,加入,已提交,无改动
灰色:版本控制已忽略文件

GIT分支

分支在GIT中相对较难,分支就是科幻电影里面的平行宇宙,如果两个平行宇宙互不干扰,那对现在的你也没啥影响。不过,在某个时间点,两个平行宇宙合并了,我们就需要处理一些问题了!

git分支中常用指令:

# 列出所有本地分支
git branch

# 列出所有远程分支
git branch -r

# 新建一个分支,但依然停留在当前分支
git branch [branch-name]

# 新建一个分支,并切换到该分支
git checkout -b [branch]

# 合并指定分支到当前分支
$ git merge [branch]

# 删除分支
$ git branch -d [branch-name]

# 删除远程分支
$ git push origin --delete [branch-name]
$ git branch -dr [remote/branch]

IDEA中操作

如果同一个文件在合并分支时都被修改了则会引起冲突:解决的办法是我们可以修改冲突文件后重新提交!选择要保留他的代码还是你的代码!

master主分支应该非常稳定,用来发布新版本,一般情况下不允许在上面工作,工作一般情况下在新建的dev分支上工作,工作完后,比如上要发布,或者说dev分支代码稳定后可以合并到主分支master上来。

java注解机制

定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是 JDK1.5 及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。
作用分类:

  • 编写文档:通过代码里标识的注解生成文档【生成文档doc文档】
  • 代码分析:通过代码里标识的注解对代码进行分析【使用反射】
  • 编译检查:通过代码里标识的注解让编译器能够实现基本的编译检查【overide】

编写文档演示

package RuoYiTest;
public class AnnoDemo1 {
    /**
     * 计算两数之和
     * @param a 整数
     * @param b 整数
     * @return
     */
    public int add(int a,int b){
        return a + b;
    }
}

将这个类复制一份 —— 粘贴到选定文件夹中 —— 为方便抽取删除包申明语句 —— 当前文件夹目录下打开命令行端口 —— 输入javadoc 【AnnoDemo1.java】

打开index.html 弹出入java文档一般的页面

出现乱码问题
文本打开AnnoDemo1,剪切内容,将文档编码格式置换为“以ANSI格式编码” 粘贴回去,在打开端口重新生成一次Doc即可

自定义注解

格式︰

元注解
public @interface注解名称{}

本质∶
注解本质上就是一个接口,该接口默认继承Annotation接口

public interface MyAnno extends java.lang.annotation.Annotation {}

属性:接口中的抽象方法(注意这里把抽象方法视作属性)
要求∶
     1.属性的返回值类型可以如下 (基本数据类型  string  枚举注解  以上类型的数组)
     2.   在使用的是时候,需要给属性赋值  (如果只有一个属性需要赋值,并且属性的名称是value,则value可以省略,直接定义值即可)

元注解

元注解:用于描述注解的注解
    @Target :描述注解能够作用的位置 (TYPE:可以作用于类上,METHOD :可以作用于方法上,FIELD:可以作用于成员变量上)
    @Retention :描述注解被保留的阶段    (@Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到)自定义的一般是用这个
    @Documented :描述注解是否被抽取到api文档中  (表明该注解会体现在API文档中)
    @Inherited :描述注解是否被子类继承

解析注解

定义如下注解

@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
public @interface Pro {
    String className();
    String methodName();
}
@Pro(className = "RuoYiTest.Demo2",methodName = "show2")
public class ReflectTest {
    public static void main(String[] args) throws Exception {
        // 获取该类的字节码文件对象
        Class<ReflectTest> aClass = ReflectTest.class;
        // 获取上边的注释对象 (其实就是在内存中生成了一个该注解接口的子类对象,重写方法的返回值依据注解中填入的参数决定)
        Pro anno = aClass.getAnnotation(Pro.class);
        // 调取注解对象中定义的抽象方法,获取返回值
        String className = anno.className();
        String methodName = anno.methodName();
        // 加载该类进内存
        Class<?> clas = Class.forName(className);
        // 创建对象
        Object o = clas.newInstance();
        // 获取对象方法
        Method method = clas.getMethod(methodName);
        // 执行方法
        method.invoke(o);
    }
}

   注意注解本身里面可能没有什么,因为注解有时候就是一个语义标签,重要的是对这个注解的解析代码写了什么。例如解析代码可以通过反射获取注解标注的类,方法,属性等等,然后对这些注解标注的东西进行业务逻辑判断。

MyBatis

MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis可以使用简单的XML或注解来配置和映射原生类型、接口和Java的POJO (Plain Old JavaObjects,普通老式Java 对象)为数据库中的记录。

数据持久化

  • 持久化就是将程序的数据在持久状态和瞬时状态转化的过程·
  • 内存:断电即失
  • 数据库(Jdbc),io文件持久化(早起数据就是放在文件中靠IO读写,但是IO太慢,于是慢慢演变出数据库)。

如何创建一个maven父工程 —创建一个普通的maven项目(注意看看setting里面的maven是不是idea绑定的,是的话就换成自己的更好)—删除src目录 —new moduel即可—完成

RuoYi项目中mybatis的全局配置文件位置如下

mubatis的第一个程序

1、导入MyBatis相关 jar 包

<dependency>
   <groupId>org.mybatis</groupId>
   <artifactId>mybatis</artifactId>
   <version>3.5.2</version>
</dependency>
<dependency>
   <groupId>mysql</groupId>
   <artifactId>mysql-connector-java</artifactId>
   <version>5.1.47</version>
</dependency>

2、编写MyBatis核心配置文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration
       PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
       "http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
   <environments default="development">
       <environment id="development">
           <transactionManager type="JDBC"/>
           <dataSource type="POOLED">
               <property name="driver" value="com.mysql.jdbc.Driver"/>
               <property name="url" value="jdbc:mysql://localhost:3306/mybatis?useSSL=true&amp;useUnicode=true&amp;characterEncoding=utf8"/>
               <property name="username" value="root"/>
               <property name="password" value="123456"/>
           </dataSource>
       </environment>
   </environments>
   <mappers>
       <mapper resource="com/kuang/dao/userMapper.xml"/>
   </mappers>
</configuration>

3、编写MyBatis工具类
每个基于MyBatis 的应用都是以一个SqlSessionFactory 的实例为核心的。SqlSessionFactory 的实例可以通过SqlSessionFactoryBuilder获得。而SqlSessionFactoryBuilder则可以从XML配置文件或一个预先定制的Configuration的实例构建出SqlSessionFactory 的实例。

public class MybatisUtils {

   private static SqlSessionFactory sqlSessionFactory;

   static {
       try {
           String resource = "mybatis-config.xml";
           InputStream inputStream = Resources.getResourceAsStream(resource);
           sqlSessionFactory = new SqlSessionFactoryBuilder().build(inputStream);
      } catch (IOException e) {
           e.printStackTrace();
      }
  }

   //获取SqlSession连接
   public static SqlSession getSession(){
       return sqlSessionFactory.openSession();
  }
}

4、创建实体类
5、编写Mapper接口类
6、编写Mapper.xml配置文件 (namespace 十分重要,不能写错!)

<?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.kuang.dao.UserMapper">
   <select id="selectUser" resultType="com.kuang.pojo.User">
     select * from user
   </select>
</mapper>

namespace 对应接口类名,id对应方法名字,

 

项目本身

设置端口和虚拟路径的位置

com.ruoyi     
├── common            // 工具类
│       └── annotation                    // 自定义注解
│       └── config                        // 全局配置
│       └── constant                      // 通用常量
│       └── core                          // 核心控制
│       └── enums                         // 通用枚举
│       └── exception                     // 通用异常
│       └── json                          // JSON数据处理
│       └── utils                         // 通用类处理
│       └── xss                           // XSS过滤处理
├── framework         // 框架核心
│       └── aspectj                       // 注解实现
│       └── config                        // 系统配置
│       └── datasource                    // 数据权限
│       └── interceptor                   // 拦截器
│       └── manager                       // 异步处理
│       └── shiro                         // 权限控制
│       └── web                           // 前端控制
├── ruoyi-generator   // 代码生成(不用可移除)
├── ruoyi-quartz      // 定时任务(不用可移除)
├── ruoyi-system      // 系统代码
├── ruoyi-admin       // 后台服务
├── ruoyi-xxxxxx      // 其他模块

第七集:tomcat访问日志有什么用—暂时不需要。

第九集:配置文件获取
例如 Application.yml 中给很多属性赋值了,

shiro:
  user:
    # 登录地址
    loginUrl: /login
    # 权限认证失败地址
    unauthorizedUrl: /unauth
    # 首页地址
    indexUrl: /index
    # 验证码开关
    captchaEnabled: true
    # 验证码类型 math 数组计算 char 字符

在framework模块中 ShiroConfig 文件中使用这些配置

@Configuration
public class ShiroConfig {
    /**
     * Session超时时间,单位为毫秒(默认30分钟)
     */
    @Value("${shiro.session.expireTime}")
    private int expireTime;

第十集:自定义资源映射
转发重定向?视图,静态资源映射。swagger 自动生成接口文档的

转发是服务器行为,重定向是客户端行为。转发耗时比重定向少。

webjars:WebJars是将客户端(浏览器)资源(JavaScript,Css等)打成jar包文件,以对资源进行统一依赖管理。WebJars的jar包部署在Maven中央仓库上。

第十一集:缓存使用

使用的是Spring自带的注解:@EnableCaching  (但是我手上的版本没有这个注解)。
参数配置 ruoyi-system 中service中  SysConfigServiceImpl

第十二集:异步调用

异步调用:一个可以无需等待被调用函数的返回值就让操作继续进行的方法
PS:双击shift全局查找类,输入类名即可,查找到了之后点击即可打开该类。ctrl+h也能找到类,但是无法打开找到的类。
类:RyTask 在 ruoyi--quartz 中 Com.ruoyi.quartz.task  。
quartz教程:https://www.bilibili.com/video/BV19t41127de?from=search&seid=4186589579912667119
cron表达式语法: 

第十四集:热部署

项目默认打开了热部署

ruoyi-admin 中 resource 下有大量的前端资源
ruoyi-framework 中 com.ruoyi.framework.shiro 包中有大量的Shiro类与配置

shift + 滚轮  左右翻动幕布

以目的为导向自顶向下学习

置换样式、图标、风格

 

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42141116/article/details/113727279

智能推荐

Stable Diffusion WebUI 使用 VAE 增加滤镜效果

VAE(variational autoencoder)表示变分自动编码器,它是神经网络模型的一部分,可在较小的潜在空间之间对图像进行编码和解码,从而使计算速度更快。通俗点说,可以把 VAE 理解为一种滤镜,它能让图片的色彩更加饱满,告别灰蒙蒙的感觉;同时,它还能对图片的细节进行微调,改善面部和眼部,让整体效果更加出色。在 Stable Diffusion 中,绝大部分大模型已经内置了默认的 VAE,无需再外挂 VAE 了。

IOS面试题object-c 81-90-程序员宅基地

文章浏览阅读361次。包括:NSURLRequest、NSURLCache、NSURLSession、NSURLSessionConfiguration、NSURLSessionDataTask、NSURLSessionUploadTask、NSURLSessionDownloadTask。,您可以使用 iPhone OS 上的独特的图形接口控件,按钮,以及全屏视图的功能,您还可以使用加速仪和多点触摸手势来控制您的应用。都是等效的setObject:forKey:.在其他类中,setValue:forKey:更改成员变量.

公司综合管理系统详细设计与具体代码实现-程序员宅基地

文章浏览阅读310次,点赞3次,收藏6次。1. 背景介绍1.1 公司管理系统的重要性在当今快节奏的商业环境中,高效的公司管理系统对于确保企业的顺利运营至关重要。随着公司规模的不断扩大和业务复杂度的增加,传统的手工管理方式已经无法满足现代企业的需求。因此,开发一个综合的公司管理系统来集中管理公司的各个方面,如人力资源、财务、项目、客户

基于Hog+SVM实现小狮子的识别_hog+svm小狮子-程序员宅基地

文章浏览阅读275次。1从视频中获取图片安装opencvpip3 install opencv-python# 视频分解成图片# 1 load加载视频 2 读取info 3 解码 单帧视频parse 4 展示 imshowimport cv2# 获取一个视频打开capcap = cv2.VideoCapture('1.mp4')# 判断是否打开isOpened = cap.isOpenedprint(isOpened)#帧率fps = cap.get(cv2.CAP_PROP_FPS)#宽度wid_hog+svm小狮子

android的/system/lib/libhwui.so崩溃分析和解决办法-程序员宅基地

文章浏览阅读1.2w次,点赞2次,收藏2次。直接上崩溃日志了:#00 pc 00039518 (null)#01 pc 00022ef9 /system/lib/libhwui.so [armeabi-v7a]#02 pc 00015d7d /system/lib/libhwui.so [armeabi-v7a]#03 pc 0..._libhwui.so

spring ioc原理,IoC与DI-网摘-程序员宅基地

文章浏览阅读42次。首先想说说IoC(Inversion of Control,控制倒转)。这是spring的核心,贯穿始终。所谓IoC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系。这是什么意思呢,举个简单的例子,我们是如何找女朋友的?常见的情况是,我们到处去看哪里有长得漂亮身材又好的mm,然后打听她们的兴趣爱好、qq号、电话号、ip号、iq号……...

随便推点

ams1117 lm317 对比_浅谈LM1117输入电流和输出电流的差异-程序员宅基地

文章浏览阅读1.2k次。本文主要是关于LM1117的相关介绍,并着重对LM1117输入电流和输出电流的差异进行了详尽的阐述。LM1117LM1117是一个低压差电压调节器系列。其压差在1.2V输出,负载电流为800mA时为1.2V。它与国家半导体的工业标准器件LM317有相同的管脚排列。LM1117有可调电压的版本,通过2个外部电阻可实现1.25~13.8V输出电压范围。另外还有5个固定电压输出(1.8V、2.5V、2...._1117电流加大输出会变小

Spark-core面试知识点

针对列表当中的每一个元素进行操作,操作完成后返回一个新的列表,操作之前是多少个元素,操作之后还是多少个元素,不会增加,不会减少。根据RDD的执行流程构建DAG有向无环图,构建好后,采用回溯方法,从后往前推,遇到窄依赖包含到当前stage中,遇到宽依赖断开形成stage。窄依赖:父RDD当中的一个分区只能被子RDD当中的一个分区所依赖。宽依赖:父RDD当中的一个分区会被子RDD当中的多个分区所依赖。执行算子:带动转换算子运算,并将结果输出或保存到指定地点。特点:不可变,可分区,里面的元素可以并行计算的集合。

UE5 GAS开发P41-43 永久效果,去除永久效果,伤害区域,EnumClass,开始重叠与结束重叠事件

这一部分学习了怎么创建一个伤害性的地形(火焰地形,毒沼泽等都可以用这个方式创建)AuraEffectActor.h// Fill out your copyright notice in the Description page of Project Settings. #pragma once #include "CoreMinimal.h" #include "GameplayEffect.h" #include "AbilitySystem/AuraAbilitySystemComponentBase

Anaconda安装(过程详细)_anaconda安装教程-程序员宅基地

文章浏览阅读10w+次,点赞392次,收藏1.4k次。本文将详细介绍Anaconda的安装过程。_anaconda安装教程

运用Aop思想存储日志_aop操作日志思想-程序员宅基地

文章浏览阅读226次。一、Aop思想:在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。二、AOP中的相关概念Aspect(切面): Aspect 声明类似于 Java 中的_aop操作日志思想

linux编译mysql 库_【LINUX】Linux mysql数据库搭建(编译安装)-程序员宅基地

文章浏览阅读84次。版本为linux6.4,首先下载编译安装包至本地。设共享软件包地址192.168.80.10setenforce 0service iptables stop1.共享软件包mount.cifs //192.168.80.10/r /media/ 匿名访问共享文件夹cd /media/ls 查看是否挂载成功了tar xzvf mysq..._linux qt 6.4 编译mysql