2019最新某宝淘买来的Python3.5版本零基础项目实战(完整)

/* Create the trx sys file block in a new allocated file segment */
    block = fseg_create(TRX_SYS_SPACE, 0, TRX_SYS + TRX_SYS_FSEG_HEADER,
                mtr); //建立segment
    buf_block_dbg_add_level(block, SYNC_TRX_SYS_HEADER);
 
    ut_a(block->page.id.page_no() == TRX_SYS_PAGE_NO);
 
    page = buf_block_get_frame(block); //获取内存位置
 
    mlog_write_ulint(page + FIL_PAGE_TYPE, FIL_PAGE_TYPE_TRX_SYS, //写入block 的类型
             MLOG_2BYTES, mtr);
 
    ...
    /* Start counting transaction ids from number 1 up */
    mach_write_to_8(sys_header + TRX_SYS_TRX_ID_STORE, 1); // 初始化TRX_SYS_TRX_ID_STORE
 
    /* Reset the rollback segment slots.  Old versions of InnoDB
    define TRX_SYS_N_RSEGS as 256 (TRX_SYS_OLD_N_RSEGS) and expect
    that the whole array is initialized. */
    ptr = TRX_SYS_RSEGS + sys_header;
    len = ut_max(TRX_SYS_OLD_N_RSEGS, TRX_SYS_N_RSEGS)
        * TRX_SYS_RSEG_SLOT_SIZE;//TRX_SYS_OLD_N_RSEGS 为256个
    memset(ptr, 0xff, len); //将slot的信息的全部初始化为ff
    ptr += len;
    ut_a(ptr <= page + (UNIV_PAGE_SIZE - FIL_PAGE_DATA_END));
 
    /* Initialize all of the page.  This part used to be uninitialized. */
    memset(ptr, 0, UNIV_PAGE_SIZE - FIL_PAGE_DATA_END + page - ptr); //将剩下的空间设置为0x00
 
    mlog_log_string(sys_header, UNIV_PAGE_SIZE - FIL_PAGE_DATA_END
            + page - sys_header, mtr);
 
    /* Create the first rollback segment in the SYSTEM tablespace */
    slot_no = trx_sysf_rseg_find_free(mtr, false, 0);
    page_no = trx_rseg_header_create(TRX_SYS_SPACE, univ_page_size,
                     ULINT_MAX, slot_no, mtr); //将第一个slot固定在ibdata中
/** Transaction system header */
/*------------------------------------------------------------- @{ */
#define TRX_SYS_TRX_ID_STORE    0   /*!< the maximum trx id or trx
                    number modulo
                    TRX_SYS_TRX_ID_UPDATE_MARGIN
                    written to a file page by any
                    transaction; the assignment of
                    transaction ids continues from
                    this number rounded up by
                    TRX_SYS_TRX_ID_UPDATE_MARGIN
                    plus
                    TRX_SYS_TRX_ID_UPDATE_MARGIN
                    when the database is
                    started */  //最大的事物ID,下次实例启动会加上TRX_SYS_TRX_ID_UPDATE_MARGIN启动
#define TRX_SYS_FSEG_HEADER 8   /*!< segment header for the
                    tablespace segment the trx
                    system is created into */
#define TRX_SYS_RSEGS       (8 + FSEG_HEADER_SIZE)
                    /*!< the start of the array of
                    rollback segment specification
                    slots *///指向rollback segment header的槽
/*------------------------------------------------------------- @} */
./myblock undo001 -d|more
 
current read blocks is : 0 --This Block is file space header blocks!
current read blocks is : 1 --This Block is insert buffer bitmap  blocks!
current read blocks is : 2 --This Block is inode blocks!
current read blocks is : 3 --This Block is system   blocks!
current read blocks is : 4 --This Block is system   blocks!
current read blocks is : 5 --This Block is system   blocks!
current read blocks is : 6 --This Block is system   blocks!
current read blocks is : 7 --This Block is system   blocks!
current read blocks is : 8 --This Block is system   blocks!
current read blocks is : 9 --This Block is system   blocks!
current read blocks is : 10 --This Block is system   blocks!
current read blocks is : 11 --This Block is system   blocks!
current read blocks is : 12 --This Block is system   blocks!
current read blocks is : 13 --This Block is system   blocks!
current read blocks is : 14 --This Block is system   blocks!
current read blocks is : 15 --This Block is system   blocks!
current read blocks is : 16 --This Block is system   blocks!
current read blocks is : 17 --This Block is system   blocks!
current read blocks is : 18 --This Block is system   blocks!
current read blocks is : 19 --This Block is system   blocks!
current read blocks is : 20 --This Block is system   blocks!
current read blocks is : 21 --This Block is system   blocks!
current read blocks is : 22 --This Block is system   blocks!
current read blocks is : 23 --This Block is system   blocks!
current read blocks is : 24 --This Block is system   blocks!
current read blocks is : 25 --This Block is system   blocks!
current read blocks is : 26 --This Block is system   blocks!
current read blocks is : 27 --This Block is undo blocks!
current read blocks is : 28 --This Block is undo blocks!
current read blocks is : 29 --This Block is undo blocks!
current read blocks is : 30 --This Block is undo blocks!
current read blocks is : 31 --This Block is undo blocks!
current read blocks is : 32 --This Block is undo blocks!
current read blocks is : 33 --This Block is undo blocks!
current read blocks is : 34 --This Block is undo blocks!
current read blocks is : 35 --This Block is undo blocks!
current read blocks is : 36 --This Block is undo blocks!
current read blocks is : 37 --This Block is undo blocks!
current read blocks is : 38 --This Block is new allocate blocks!
current read blocks is : 39 --This Block is new allocate blocks!
current read blocks is : 40 --This Block is new allocate blocks!
current read blocks is : 41 --This Block is new allocate blocks!
current read blocks is : 42 --This Block is new allocate blocks!

package com.lipengge.mybatis.dao;

import java.util.List;

import org.apache.ibatis.session.SqlSession;
import org.apache.ibatis.session.SqlSessionFactory;

import com.lipengge.mybatis.bean.User;

public class UserDaoImpl implements UserDao{
    private SqlSessionFactory sfb;
    
    public UserDaoImpl(SqlSessionFactory sfb) {
        this.sfb=sfb;
    }
   //根据id查找用户
    @Override
    public User findUserById(int id) throws Exception {
        SqlSession sqlSession = sfb.openSession();
        User selectOne = sqlSession.selectOne("test.findUserById",id);
        sqlSession.close();
        return selectOne;
    }

    @Override
    //根据姓名模糊查询用户
    public List<User> findUserByName(String name) throws Exception {
        SqlSession sqlSession = sfb.openSession();
         List<User> selectList = sqlSession.selectList("test.findUserByName",name);
         sqlSession.close();
         return selectList;
    }

    @Override
    ////插入用户
    public void insertUserById(User user) throws Exception {
        SqlSession sqlSession = sfb.openSession();
        sqlSession.insert("test.insertUserById", user);
        sqlSession.commit();//提交
        sqlSession.close();
        
    }

    @Override
    ///根据id删除用户
    public void deleteUserById(int id) throws Exception {
         SqlSession sqlSession = sfb.openSession();
         sqlSession.delete("test.deleteUserById",id);
         sqlSession.commit();
         sqlSession.close();
        
    }

}

package com.lipengge.mybatis.first;

import static org.junit.Assert.*;

import java.io.InputStream;

import org.apache.ibatis.io.Resources;
import org.apache.ibatis.session.SqlSessionFactory;
import org.apache.ibatis.session.SqlSessionFactoryBuilder;
import org.junit.Before;
import org.junit.Test;

import com.lipengge.mybatis.bean.User;
import com.lipengge.mybatis.dao.UserDaoImpl;

public class TestUserDaoImpl {
    
   private SqlSessionFactory ssf;
    @Before
    //这里使用JUnit测试所以设置单例模式而是在测试之前生成SqlSessionFactory
    public void setUp() throws Exception {
        String resource="SqlMapConfig.xml";//全局配置文件
        InputStream inputStream = Resources.getResourceAsStream(resource);
        ssf=new SqlSessionFactoryBuilder().build(inputStream);
    }

    @Test
    public void test() throws Exception {
        UserDaoImpl udi=new UserDaoImpl(ssf);
        System.out.println(udi.findUserById(6));
        System.out.println(udi.findUserByName("振川"));
         User user=new User();
         user.setUser_name("小刘");
         user.setUser_age(22);
         user.setUser_sex("女");
         udi.insertUserById(user);
         System.out.println(user.getId());
         udi.deleteUserById(20);
         
    }

}create table `test` (
`id` varchar(10) not null,
`name` varchar(10) not null,
`age` tinyint not null,
`staffNo` tinyint not null,
`dept` varchar(5) not null,
`team` varchar(5) default null,
`gender` varchar(5) not null,
`home` varchar(30) default null,
`zipcode` varchar(6) not null,
`company` varchar(10) not null,
key(`company`),
unique key(`zipcode`),
primary key(`name`,`age`, `id`),
unique key(`dept`,`staffNo`,`team`),
key (`gender`,`home`)
);

from bs4 import BeautifulSoup
from selenium import webdriver
import time, csv, lxml


def open_url(url, browser):  #模拟chrome打开网页#
    browser.get(url)
    time.sleep(0.5)  #间隔0.5s,表格中没有数据就设置长一点#
    html = browser.page_source
    soup = BeautifulSoup(html, features='lxml')

    return soup


def get_month():  #爬取月份#
    monthlist = []
    for i in range(1, 10):
        monthlist.append(f'2018-0{i}')
    for i in range(10, 13):
        monthlist.append(f'2018-{i}')

    return monthlist


def get_city():  #爬取城市#
    citylist = []
    city_url = 'https://www.aqistudy.cn/historydata/'
    city_soup = open_url(city_url, chrome)
    cityset = citysoup.findAll('div', {'class': 'all'})[0].findAll('li')
    for city in cityset:
        city = city.text.strip()  #去掉空格
        citylist.append(city)
    
    return citylist

    
def main():
    monthlist = get_month()
    citylist = get_city()

    for city in citylist:
        #表头#
        heads = ['date', 'AQI', '质量等级', 'PM2.5', 'PM10', 'SO2', 'CO', 'NO2', 'O3_8h']
        with open(f'{city}.csv', 'a', newline='') as f:
            f_csv = csv.writer(f)
            f_csv.writerow(heads)
        
        for month in monthlist:
            url = f'https://www.aqistudy.cn/historydata/daydata.php?city={city}&month={month}'
            soup = open_url(url, chrome)
            table = soup.find('table')

            num = str(table).count('<tr')
            for i in range(num):
                if i != 0:
                    tdata = table.find_all('tr')[i].find_all('td')
                    data = []
                    for i in tdata:
                        data.append(i.text)
                    with open(f'{city}.csv', 'a', newline='') as f:
                        f_csv = csv.writer(f)
                        f_csv.writerow(data)
                        
    chrome.quit()


if __name__ == '__main__':
    chrome = webdriver.Chrome()
    main()
#include<stdio.h>
#include<string.h>
typedef struct tm{
    char id[15];
    int tm_sec_0;
    int tm_min_0;
    int tm_hour_0;
    int tm_sec_1;
    int tm_min_1;
    int tm_hour_1;
    char start[8];
    char end[8];
}tm;
int main()
{
    int m;
    scanf("%d", &m);
    tm record[m];
 
    for (int i = 0; i < m; ++i) {
        scanf("%s %s %s", record[i].id, record[i].start, record[i].end); 
        
        record[i].tm_hour_0 = 10*(record[i].start[0]-'0') + (record[i].start[1] - '0');
        record[i].tm_min_0 = 10*(record[i].start[3]-'0') + (record[i].start[4] - '0');
        record[i].tm_sec_0 = 10*(record[i].start[6]-'0') + (record[i].start[7] - '0');
        record[i].tm_hour_1 = 10*(record[i].end[0]-'0') + (record[i].end[1] - '0');
        record[i].tm_min_1 = 10*(record[i].end[3]-'0') + (record[i].end[4] - '0');
        record[i].tm_sec_1 = 10*(record[i].end[6]-'0') + (record[i].end[7] - '0');
        
    }
    
    int min[3] = {25, 25, 25};
    int max[3] = {-1, -1, -1};
    
    for (int i = 0; i < m; ++i) {
        if (record[i].tm_hour_0 < min[0]) {
            min[0] = record[i].tm_hour_0;
            min[1] = record[i].tm_min_0;
            min[2] = record[i].tm_sec_0;
        }
        else if (record[i].tm_hour_0 == min[0]) {
                    if ( record[i].tm_min_0 < min[1]) {
                            min[1] = record[i].tm_min_0;
                min[2] = record[i].tm_sec_0;
            }
        }
                else if (record[i].tm_hour_0 == min[0] && record[i].tm_min_0 == min[1]) {
                    if ( record[i].tm_sec_0 < min[2]) {
                min[2] = record[i].tm_sec_0;
            }
        }
    }
 
        for (int i = 0; i < m; ++i) {
        if (record[i].tm_hour_1 > max[0]) {
            max[0] = record[i].tm_hour_1;
            max[1] = record[i].tm_min_1;
            max[2] = record[i].tm_sec_1;
        }
        else if (record[i].tm_hour_1 == min[0]) {
                    if ( record[i].tm_min_1 > max[1]) {
                            max[1] = record[i].tm_min_1;
                max[2] = record[i].tm_sec_1;
            }
        }
                else if (record[i].tm_hour_1 == max[0] && record[i].tm_min_1 == max[1]) {
                    if ( record[i].tm_sec_1 > max[2]) {
                max[2] = record[i].tm_sec_1;
            }
        }
    }
    for (int i = 0; i < m; ++i) {
        if (record[i].tm_hour_0 == min[0] && record[i].tm_min_0 == min[1] && record[i].tm_sec_0 == min[2]) {
            printf("%s ", record[i].id);
        }
        if (record[i].tm_hour_1 == max[0] && record[i].tm_min_1 == max[1] && record[i].tm_sec_1 == max[2]) {
            printf("%s", record[i].id);
        }
    }
 
    return 0;    

--创建信息系选修了1号课程的学生视图(包括姓名,学号,成绩),视图名为is_IS
create view is_IS as
select sname,student.sno,grade from student,sc
where sdept = 'IS' and cno = '1' and student.sno = sc.sno;

create view is_IS as 
select sname,is_student2.sno,grade from is_student2,sc
where is_student2.sno = sc.sno;

--创建一个创建信息系选修了1号课程且成绩在90分以上的学生视图,视图名为is_IS2
create view is_IS2 as
select * from is_IS 
where grade >= 90;
select * from is_IS2;

--创建一个反应学生出生年份的的视图BT_S
create view BT_S as
select sno,sname, 2019- sage "出生年份" from student;

--将学生学号及他的平均成绩定义为一个视图S_G
create view s_g(sno,avggrade) as
select sno,avg(grade) from sc group by sno;

create view s_g(sno,avggrade) as
select sno,avg(grade)avggrade from sc group by sno;

--将学生表中所有女生记录定义为一个视图F_student;
create view f_student as
select * from student where ssex = '女';
select * from f_student;
 

猜你喜欢

转载自blog.csdn.net/OK8450/article/details/89949943