A股月份效应的研究 前言 《易经》早就揭示出:物极必反,盛极必衰!
阴阳总是不断交替的。股票市场也一样,涨跌互现,涨多了会出现调整,跌多了会出现反弹,因此我们看到K线组合总是红(阳)绿(阴)相间的。
正是由于市场行情总是阴阳交替出现,交易者们才孜孜不倦地想通过择时(选股)来获取超额收益。指数的走势是各方资金博弈的结果,而博弈的过程存在一个时间的延续性,也就是说过去的走势对未来走向有一定的参考价值。
尽管过去不能代表未来,但统计发现历史总是“惊人的相似”,比如“月份效应”。实际上,不少实证研究发现大多数市场存在“月份效应”,即存在某个或某些特定月份的平均收益率年复一年显著地异于其他各月平均收益率的现象。
一、月度收益率分析 # 月份效应 # 获取数据 import numpy as np import pandas as pd import matplotlib.pyplot as plt import matplotlib.patches as mpatches #正常显示画图时出现的中文和负号 from pylab import mpl mpl.rcParams['font.sans-serif']=['SimHei'] mpl.rcParams['axes.unicode_minus']=False def get_daily_ret(security,start_date,end_date): df=get_price(security, start_date,end_date, frequency='daily', fields=['open','close','high','low','volume','money']) df.index=pd.to_datetime(df.index) # 计算收益率 daily_ret=df['close'].pct_change() # 删除缺失值 daily_ret=daily_ret.dropna() return daily_ret # 月度收益情况 def plot_monthly_ret(security,title): daily_ret=get_daily_ret(security,start_date,end_date) monthly_ret=daily_ret.resample('M').apply(lambda x:((1+x).prod()-1)) plt.rcParams['figure.figsize']=[20,5] monthly_ret.plot() start=monthly_ret.index[0] end=monthly_ret.index[-1] #显示月收益率大于3/4分位数的点 dates=monthly_ret[monthly_ret>monthly_ret.quantile(0.75)].index for i in range(0,len(dates)): plt.scatter(dates[i], monthly_ret[dates[i]],color='r') labs = mpatches.
1. 使用gcc来编译c++程序,如下两个命令完成了创建c++程序及打开文本编辑程序
2.拿牛客网上第HJ6求质数因子题(华为机试题库_在线编程+题解_牛客题霸_牛客网)代码进行测试,代码编辑如下:
#include <iostream> using namespace std; int main() { long n; cin>>n; for(int i=2;i*i<=n;i++) { while(n % i ==0) { n = n/i; cout << i << " "; if(n == 1) { break; } } } if(n>=2) { cout << n; } } 3.使用接下来的命令进行程序的编译及程序的运行
4.可以看到输入整数20个,获得了正确的质数解,分别为2,2,5
5.若通过构造CMakeList.txt来执行编译,则除了上面的test.cpp外,还需要构造一个CMakeLists.txt文件及build空文件夹。
test.cpp中的代码同上,CMakeLists.txt中的文本如下:
cmake_minimum_required(VERSION 2.8) #工程名 project(Test) #包含原程序,即把给定目录下的源程序复制给变量DIR_SRC #将指定路径下的源文件储存在指定的变量中 #下面这句话,有些博客中写错了,需要注意 aux_source_directory(./ DIR_SRC ) #生成程序 add_executable(Test ${DIR_SRC}) 此处需要用到cmake命令,若cmake包未装,可以使用如下命令,安装过程中选择Y
sudo apt install cmake 6.使用如下命令来完成cmake编译
题目来源:蓝桥杯算法训练 知识点:动态规划,等和子集 问题描述
逗志芃在干了很多事情后终于闲下来了,然后就陷入了深深的无聊中。不过他想到了一个游戏来使他更无聊。他拿出n个木棍,然后选出其中一些粘成一根长的,然后再选一些粘成另一个长的,他想知道在两根一样长的情况下长度最长是多少。
输入格式
第一行一个数n,表示n个棍子。第二行n个数,每个数表示一根棍子的长度。
输出格式
一个数,最大的长度。
样例输入
4
1 2 3 1
样例输出
3
数据规模和约定
n<=15
问题分析 本题参考了这位博主的解法,讲得很好,点这里看。
这里使用了“0-1背包”的解法,关于“0-1背包”的内容可以看这里。
另外,关于代码中使用到的accumulate求和可以看这里,max_element最大值可以看这里,vector的用法看这里。
代码 #include <bits/stdc++.h> using namespace std; int getMaxLength(vector<int> lens) { int n = lens.size(); if(n < 2) return 0; int sum = accumulate(lens.begin(), lens.end(), 0); int maxLen = *max_element(lens.begin(), lens.end()); int target = sum / 2; if(maxLen > target) return 0; vector<vector<int> > dp(n, vector<int>(target+1, 0)); for(int i=0; i<n; i++) dp[i][0] = 0; for(int j=lens[0]; j<=target; j++) dp[0][j] = lens[0]; for(int i=1; i<n; i++) { for(int j=1; j<=target; j++) { if(j < lens[i]) dp[i][j] = dp[i-1][j]; else dp[i][j] = max(dp[i-1][j], dp[i-1][j-lens[i]] + lens[i]); } } return dp[n-1][target] == sum/2 ?
操作系统实验3—实现请求页式存储管理模拟程序 文章目录 操作系统实验3—实现请求页式存储管理模拟程序实验描述设计思路上机代码测试结果心得体会 实验描述 实验内容:
编写一个请求页式存储管理程序,模拟请求页式存储管理方式下的内存分配和页面置换。
实验目的:
内存管理是操作系统中的核心模块,能够合理利用内存,在很大程度上将影响到整个计算机系统的性能。内存的分配和回收与内存管理方式有关。本实验要求学生独立设计并实现请求页式存储管理方式下的内存分配与页面置换模拟程序,以加深对页面置换算法和请求页式存储管理方式的理解。
实验要求:
可以随机输入分配给一个进程的内存块数,以及该进程的页面访问序列,具体信息见测试用例格式输入部分说明。分别采用最佳算法OPT(当有多个页面可置换时,按照先进先出原则进行置换)、先进先出算法FIFO和最近最少使用算法LRU进行页面置换,其中LRU算法采用栈式方法实现。显示页面变化时内存块装入页面列表的详细情况,并显示是否产生页面置换,并计算缺页次数及缺页率。具体信息见测试用例格式输出部分说明。 测试用例格式如下:
输入:
算法(1--OPT,2--FIFO,3--LRU) 内存块数 页面序列(页面1,页面2,页面3,...) 输出:
页面变化时内存块装入页面列表1-是否命中/页面变化时内存块装入页面列表2-是否命中/... 缺页次数 其中: 页面变化时内存块装入页面列表: (1) 内存块1装入页面,内存块2装入页面,内存块3装入页面...,未装入任何页面时由"-”表示 (2) 是否命中:1-命中,0-缺页 测试输入期待的输出时间限制内存限制额外进程测试用例 11
3
1,2,3,4,1,2,5,1,2,3,4,51,-,-,0/1,2,-,0/1,2,3,0/1,2,4,0/1,2,4,1/1,2,4,1/1,2,5,0/1,2,5,1/1,2,5,1/3,2,5,0/3,4,5,0/3,4,5,1
71秒64M0测试用例 22
4
1,2,3,4,1,2,5,1,2,3,4,51,-,-,-,0/1,2,-,-,0/1,2,3,-,0/1,2,3,4,0/1,2,3,4,1/1,2,3,4,1/5,2,3,4,0/5,1,3,4,0/5,1,2,4,0/5,1,2,3,0/4,1,2,3,0/4,5,2,3,0
101秒64M0测试用例 33
3
1,2,3,4,1,2,5,1,2,3,4,51,-,-,0/1,2,-,0/1,2,3,0/2,3,4,0/3,4,1,0/4,1,2,0/1,2,5,0/2,5,1,1/5,1,2,1/1,2,3,0/2,3,4,0/3,4,5,0
101秒64M0 设计思路 虽然每次输入的页面数据只有页面序号,但是在算法中需要计算每个页面访问过之后的优先级变化,以及当前页面下一次访问所需要的距离信息,所以采用结构体数组的形式将需要用到的信息全部存储起来。
临时数组在 LRU 算法中起辅助输出的作用。
struct Memory { int id; //序号 int priority; //最前面的内存优先级为0,往后依次加1 int distance; //下次访问与当前距离 }memory[1010], memory2[1010];//内存序列,临时数组 程序概要设计如下图所示:
main()函数是主程序的入口,控制程序流程,并按照输入的调度信号选择相应的算法模块进行运行input()函数是输入函数,接受程序输入output()函数是输出函数,将页面命中与缺页置换的信息进行输出OPT()函数是最佳置换算法,根据已知的页面序列和优先级顺序算出最佳的页面调度方案FIFO()函数是先进先出算法,根据页面的到来顺序进行页面置换LRU()函数是最近最久未使用算法,根据页面的使用情况进行页面调度,这里使用了临时数组来辅助信息输出 int main(); //主程序入口 void input(); //输入函数 void output(int k);//输出函数 void OPT(); //最佳置换算法 void FIFO(); //先进先出算法 void LRU(); //最近最久未使用算法 上机代码 代码使用 C++ 语言进行编写
1. 问题描述:
当使用uocs printf(),sprintf()打印浮点数问题会出问题,但是裸机不会出问题
我现在使用LPC1758跑UCOS,在使用sprintf打印float类型时候,不管是何值最后都是0.0,但是类型是int,short类型时没有问题。网上查到是任务堆栈8字节对齐就可以了。
当没有操作系统时,系统堆栈是8字节对齐的,但是当使用ucos时,用户任务不一定是8字节对齐.
Task 3 中的堆栈起始指针0x1000000F4,不是8字节对齐,所以但在Task 3 任务中调用printf等系列函数就会出现问题.
2. 解决方法
我用的是IAR,通过#pragma data_alignment指定对齐字节数
#pragma data_alignment=8 //如果不是8字节对齐,sprintf的浮点数将输出0.0
static OS_STK App_TaskWorkModeCntStk[APP_CFG_TASK_WORKMODE_CNT_STK_SIZE];
OS_STK T_Stk[Task1_LED1_Stk_Size];
可知给任务分配栈时需要保证栈是8字节对齐的,不然在该任务中凡是调用sprintf的函数
均会出错,因为栈一开始就是不对齐的。
3. 八字节对齐原因
这事儿的历史在于ARM本身不支持非对齐数据存取;因此在有了64Bit的数据操作指令后,指令要求8字节对齐。进而,在编译器的某个版本之后(RVCT3?),AAPCS就要求堆栈8字节对齐。
是先有8字节对齐的AAPCS,然后才有的CM3。先后顺序要注意。CM3 r2p0之前,自动压栈也不要求8对齐,r2p0好像才是强制对齐的。
printf的8对齐是C运行库要求的,和硬件无关,C RTL手册有写,可以去阅读。其根源在于AAPCS要求;而AAPCS根源在于LDRD这类指令。
换句话,未来如果128Bit数据操作有了,ARM还不支持非对其,那AAPCS可能升级为16字节对齐。
供参考,CM3和C-RTL对齐的问题。
感谢博主 enzo26的ChinaUnix博客
查看注册表PWD win + r,输入regedit,打开注册表,
计算机\HKEY_CURRENT_USER\Software\PremiumSoft\Navicat\Servers\127.0.0.1
127.0.0.1为 navicat 的连接名,点开找到Pwd
右键编辑,然后查看加密后的密码。
使用在线工具解密 网址 https://tool.lu/coderunner/
选择PHP环境;
代码 将下文代码全量粘贴进代码运行区并将上文Pwd中的加密密码复制进代码倒数第二行decrypt里面,然后点击页面上的 执行(Run)
<?php namespace FatSmallTools; class NavicatPassword { protected $version = 0; protected $aesKey = 'libcckeylibcckey'; protected $aesIv = 'libcciv libcciv '; protected $blowString = '3DC5CA39'; protected $blowKey = null; protected $blowIv = null; public function __construct($version = 12) { $this->version = $version; $this->blowKey = sha1('3DC5CA39', true); $this->blowIv = hex2bin('d9c7c3c8870d64bd'); } public function encrypt($string) { $result = FALSE; switch ($this->version) { case 11: $result = $this->encryptEleven($string); break; case 12: $result = $this->encryptTwelve($string); break; default: break; } return $result; } protected function encryptEleven($string) { $round = intval(floor(strlen($string) / 8)); $leftLength = strlen($string) % 8; $result = ''; $currentVector = $this->blowIv; for ($i = 0; $i < $round; $i++) { $temp = $this->encryptBlock($this->xorBytes(substr($string, 8 * $i, 8), $currentVector)); $currentVector = $this->xorBytes($currentVector, $temp); $result .
原文链接
用python爬取微博评论数据,爬虫之路,永无止境。。(附源码)_主打Python的博客-CSDN博客_爬虫微博评论
# !/usr/bin/nev python # -*-coding:utf8-*- from datetime import datetime from requests_html import HTMLSession import re, time import csv # import tkinter as tk import urllib3 # 解除警告 urllib3.disable_warnings() session = HTMLSession() user_url = 'https://weibo.com/2318265821/KrBA7lvW4#comment' pass_wd = 'WEIBOCN_FROM=1110005030; SUB=_2A25Mx3mlDeRhGeNM41sV8i7KyzWIHXVsSAftrDV6PUJbkdANLUfEkW1NSeR9M3dIjq3lBi61DJC0D26LvrU8YMVV; MLOGIN=1; _T_WM=14744352522; XSRF-TOKEN=781dcc' f = open(r'评论.csv','a+',newline='') fileheader = ['a','screen_names', 'genders', 'std_create_times', 'texts', 'like_counts'] fp = csv.DictWriter(f, fileheader) # 定义表头 fp.writeheader() # 写入表头 fp = csv.writer(f) class WBSpider(object): def main(self, user_url, pass_wd): i = 1 a = 1 headers_1 = { 'cookie': pass_wd, 'user-agent': 'Mozilla/5.