在spring4以后,要使用注解开发,必须要保证aop的包导入了
不要忘记导入注解支持
@Component有几个衍生注解,我们在web开发中,会按照mvc三层架构分层
dao(@Repository)
service(@Service)
controller(@Controller)
这四个注解功能都是一样的,都是代表将某个类注册到Spring的IOC容器
自动装配
@Autowired:自动装配通过类型,名字
@Resource:自动装配通过名字,类型
作用域
@Scope(“prototype”)
@value(“user”):相当于<property name=name value=user/>
xml与注解:
xml更加万能,适用于任何场合,维护简单方便
注解不是自己类使用不了,维护相对复杂
xml与注解最佳实战
xml用来管理bean
注解只负责完成属性的注入
我们在使用的过程中,只需要要注意一个问题,必须让注解生效,就需要开启注解
<context:component-scan base-package=com.zou/>//扫描指定包下的注解
<context:annotation-config/>//注解支持
1.readlines()函数
功能:生成一个列表,将读取的txt文件的每一行为一个字符元素,字符元素后面都会有一个换行转义字符\n
实例:
描述:下面的txt文件有三行,每一行的内容分别是姓名、和三个分数
读取文件代码: 返回结果页面:
说明:返回的结果是一个列表,每一行都是一个字符串元素,每一个元素后面都有换行转义字符\n
TypeScript是什么 TypeScript 是 JavaScript 的一个超集,支持 ECMAScript 6 标准。 由微软开发的自由和开源的编程语言。 设计目标是开发大型应用,它可以编译成纯 JavaScript,编译出来的 JavaScript 可以运行在任何浏览器上。 编译语法:> tsc esaybook.ts
# esaybook.ts const message : string = Hi Esaybook! console.log(message) JavaScript 与 TypeScript 的区别 TypeScript 是 JavaScript 的超集,扩展了 JavaScript 的语法,因此现有的 JavaScript 代码可与 TypeScript 一起工作无需任何修改,TypeScript 通过类型注解提供编译时的静态类型检查。
TypeScript 可处理已有的 JavaScript 代码,并只对其中的 TypeScript 代码进行编译。
(图片来源网络,侵权联系删除)
TypeScript 如何安装 [ 使用npm安装,前提你的本地环境已经安装npm工具 ]
如果使用国内镜像,可通过如下命令:
> npm config set registry https://registry.npmmirror.com 安装typescript:
> npm install -g typescript 通过查看版本号验证是否安装成功:
本文首发于公众号「5分钟学网络 (ID: learnnet5)」,欢迎你的关注。 作者:伍工 原文链接:https://mp.weixin.qq.com/s/EaFoZ1qx7TRvtQLFt0xCRg
本文讲讲 Ubuntu 18 及以上版本配置 IP 的方法,为什么它值得一讲,因为以 Ubuntu 16 为首的版本的配置方法已经不适用了,如果你还不知道,那本文正好 get 一个新技能。
Ubuntu 18 之后版本配置方法 需要使用 netplan 工具。
对应配置文件:
/etc/netplan/50-cloud-init.yaml,有的不一定是 50-cloud-init.yaml这个文件,但都大同小异。修改如下:
# vim /etc/netplan/50-cloud-init.yaml network: version: 2 renderer: networkd ethernets: enp10s0: dhcp4: no addresses: [192.168.1.3/24] gateway4: 192.168.1.1 nameservers: addresses: [114.114.114.114,8.8.8.8] 其中,可以配置 IP 、网关、DNS 等。
配完需要使用 netplan apply 生效,也可以使用 netplan try 检查配置文件是否有误。
但是,以前的方法也不是完全就废弃了,如果你还想使用以前的方法,需要安装 ifupdown 工具。
apt install ifupdown 顺带把 Ubuntu 18 之前版本的配置方法列一下,方便大家阅读。
Ubuntu 18 之前版本配置方法 配置文件:
package com.mrsaber.fsm; import javax.swing.event.ChangeEvent; import javax.swing.event.ChangeListener; import java.util.*; public class FSM { // This class implements a Flying Spaghetti Monster public static void main(String[] args) { FSM fsm = new FSM(状态转换机器); fsm.addState(INIT); fsm.addState(PROCESSING); fsm.addState(FINISH); Transition toProcessing = new Transition(DO_WORK,INIT,PROCESSING){ @Override public void doBeforeTransition() { } @Override public void doAfterTransition() { System.out.println(DoAfter); } }; System.out.println(fsm.currentState); fsm.addTransition(toProcessing); fsm.addEvent(DO_WORK); } protected String name; protected String currentState; protected Map<String, State> states; protected List<ChangeListener> changeListeners; protected boolean debug; /** * Create a blank FSM with the given name (which is arbitrary).
当需要进行 用户权限处理,我们需要先对路由表进行一个划分:
私有路由表 privateRoutes :权限路由,根据meta判断是否有权限进入 公有路由表 publicRoutes:无权限路由 /*eslint-disable*/ import { createRouter, createWebHashHistory } from 'vue-router' import layout from '@/layout' /** * 私有路由表 */ const privateRoutes = [{ path: '/user', component: layout, redirect: '/user/manage', meta: { title: 'user', icon: 'personnel' }, children: [{ path: '/user/manage', component: () => import('@/views/user-manage/index'), meta: { title: 'userManage', icon: 'personnel-manage' } }, { path: '/user/role', component: () => import('@/views/role-list/index'), meta: { title: 'roleList', icon: 'role' } }, { path: '/user/permission', component: () => import('@/views/permission-list/index'), meta: { title: 'permissionList', icon: 'permission' } }, { path: '/user/info/:id', name: 'userInfo', component: () => import('@/views/user-info/index'), meta: { title: 'userInfo' } }, { path: '/user/import', name: 'import', component: () => import('@/views/import/index'), meta: { title: 'excelImport' } } ] }, { path: '/article', component: layout, redirect: '/article/ranking', meta: { title: 'article', icon: 'article' }, children: [{ path: '/article/ranking', component: () => import('@/views/article-ranking/index'), meta: { title: 'articleRanking', icon: 'article-ranking' } }, { path: '/article/:id', component: () => import('@/views/article-detail/index'), meta: { title: 'articleDetail' } }, { path: '/article/create', component: () => import('@/views/article-create/index'), meta: { title: 'articleCreate', icon: 'article-create' } }, { path: '/article/editor/:id', component: () => import('@/views/article-create/index'), meta: { title: 'articleEditor' } } ] } ] /** * 公有路由表 */ const publicRoutes = [{ path: '/login', component: () => import('@/views/login/index.
task1
#include <stdio.h> #include <stdlib.h> #include <time.h> #include <windows.h> #define N 80 void printText(int line, int col, char text[]); // 函数声明 void printSpaces(int n); // 函数声明 void printBlankLines(int n); // 函数声明 int main() { int line, col, i; char text[N] = hi, May~; srand(time(0)); // 以当前系统时间作为随机种子 for (i = 1; i <= 10; ++i) { line = rand() % 25; col = rand() % 80; printText(line, col, text); Sleep(1000); // 暂停1000ms } return 0; } // 打印n个空格 void printSpaces(int n) { int i; for (i = 1; i <= n; ++i) printf( ); } // 打印n行空白行 void printBlankLines(int n) { int i; for (i = 1; i <= n; ++i) printf(\n); } // 在第line行第col列打印一段文本 void printText(int line, int col, char text[]) { printBlankLines(line - 1); // 打印n-1行空行 printSpaces(col - 1); // 打印n-1列空格 printf(%s, text); } 功能:实现在第line行第col列输出hi,May~,一共输出十次。
什么是第一类对象
可作为对象赋值到一个变量 可作为元素添加到集合对象 可作为参数传递给其他函数 可当做函数的返回值 对象通用属性
ID 类型 值 def foo():
return 1
print(id(foo))
print(type(foo))
print(foo)
举例函数赋值到变量
赋值给另一个变量时,函数并不会被调用,只是在函数对象上绑定一个新名字,引用计数加一 bar = foo
b = foo
print(bar is b)
类也可作为函数
自定义类实现了 __call__ 方法,则该类的实例化对象的行为就是函数,是可以被调用 callback 的对象 class Add:
一、框架介绍 基础回测框架 不适用
云端的框架 二、策略创建运行流程 2.1 一个完整的策略,需要做的事情 2.2 策略初始设置介绍 2.3 策略主体运行流程分析 如果 回测频率 选的是每分钟,那么handle_bar就是每分钟判断一次。
三、数据获取接口 3.1 数据接口种类 (from 弹幕:get_fundamentals 目前改用get_factor)
3.2 获取行业、板块以及概念股票列表
1.split()函数
功能:把字符串切割成列表,字符串被细分为一个个列表元素
案例:
分割字符串:
打印结果
使用split处理字符串”罗恩 23 35 44“
打印结果:
说明:字符串变列表,字符被切割成一个个列表元素
2.join()函数
功能:把字符串进行拼接
案例:
结果:
说明:把列表中的每一个字符连接起来,形成一个字符串。可以加每一元素字符的连接符