- 博客(335)
- 资源 (27)
- 收藏
- 关注

原创 Linux操作系统基础知识和常用指令学习笔记
本文是Linux操作系统相关的知识,参考的资料主要有《鸟哥的Linux私房菜-基础版(第四版)》的第四到第十二章,以及尚硅谷的Linux教程。笔记不可能面面俱到,但是常用的命令和知识应该都包括了,此外指令的选项有很多,笔记中也是只列出了常用的几个,较完整的介绍还请大家自行搜索。如果有什么错误还请大家指出。一、Linux基础知识1. Linux文件目录(1) 文件目录 /bin:binary的缩写,存储可执行文件/boot:存储开机会用到的文件/dev:存储装置和接口设备/ect:存储配置
2021-05-12 10:51:08
1186
1

原创 基于深度学习的单模医学图像配准综述(附VoxelMorph配准实例)
本文是基于深度学习的单模态医学图像配准的综述,除了介绍配准任务、配准过程之外,还会从实际操作出发,以经典的VoxelMorph为例做详细介绍。如果有什么讲的不清楚的地方欢迎大家留言讨论,如果有什么错误的地方,也恳请大家不吝赐教。一、配准简介配准问题简单来说就是让一张图像对齐到另一张图像,使得对齐后的图像尽可能相似。即,给定一个浮动图像(moving image)IMI_MIM和一张固定图像(fixed image)IFI_FIF。预测一个位移场uuu,进而得到形变场(deformation fie
2020-09-15 16:02:58
15773
144

原创 2019华东师范大学计算机系学硕考研经验贴(数一,英一,计算机基础825A)
熟悉我的朋友都知道了,我这个比较好为人师(贬义词吧)的嘛,所以这次想跟大家分享一下考研的一点点小心得,希望后来者不要再踩我们踩过的坑了。由于大家应该都是刚开始接触考研,不甚了解,所以我尽量不讲太具体的内容,只讲大家能真正理解的东西。当然了,我的经验之谈肯定是比较主观的,所以下面说的方法不一定对所有人都适用。另外,还请多多补充和指正,多谢~先说下我的情况,我是2019年考上的华东师范大学计算机系的...
2020-05-07 16:14:46
15647
32

原创 随笔-随时更新
本文是自己的一些随笔,记录一些比较关键的,以后可以用到的知识点。python中使用参数from argparse import ArgumentParserparser = ArgumentParser() # 创建一个解析对象# 参数一般包括:短参数、长参数、数据类型(type)、默认值(default)、帮助信息(help)、参数值范围(choices)、是否必须(require)...
2020-03-17 20:23:15
214

原创 十万行代码——记我的ACM之路
欢迎关注我的个人博客:www.zuzhiang.cn记得有人说过,要想成为某个领域的精英就得花费一万个小时;好像也有人说过,要想熟练的掌握某门编程语言就得写十万以上的代码。我算了一下,大学以来差不多总共写过1500多个 .c/.cpp 文件了吧,如果每个文件的有66行代码的话,也差不多十万行了吧,然鹅,我离大佬的差距好像还是很远……写这篇文章呢,主要是要从实验室滚蛋了,纪念一下...
2018-05-09 08:31:29
2564
5
原创 状态机的Go语言实现版本
为什么要使用状态机,我想主要是它可以对一个复杂的业务流程进行模块化拆分,使得代码更为易读。并且扩展性更好,如果后续有新状态加入,只需要在原来的基础上进行扩展即可,甚至不需要了解整个业务流程。其次,它将数据库实体的状态流转进行了模范化,避免了不同的开发人员在写更新数据库实体状态代码时可能导致的问题。
2023-03-08 22:39:20
505
原创 【golang/go语言】Go语言代码实践——高复用、易扩展性代码训练
我们需要实现的是对字段的赋值方法,由于同一字段的赋值,分为了正常的任务处理和补偿的任务处理两个,所以我们可以定义两个接口方法Common和Fix。// ProcessJob 处理任务接口,定义了两个方法 type ProcessJob interface {Common(name string) func() // 正常的任务处理 Fix(name string) func() // 补偿的任务处理 }
2023-03-05 20:59:45
353
原创 【golang/go语言】Go语言之反射
在计算机科学中,反射是指计算机程序在运行时(run time)可以访问、检测和修改它本身状态和行为的一种能力。用比喻来说,反射就是程序在运行的时候能够观察并修改自己的行为。
2023-02-27 10:02:45
261
原创 【golang/go语言】go语言中包的使用、Init()函数、协程和接口
srC目录是以代码包的形式组织并保存Go源码文件的。包可以嵌套,比如utils目录下有名为utils的包,并嵌套一个timeUtils目录,该目录下有个timeUtils包。在同一个包下面的文件package名都建议设为是该目录名,但也可以不是。也就是说,在同一个包下面的所有文件的package名, 都是一样的。这个点操作的含义就是这个包导入之后在你调用这个包的函数时,你可以省略前缀的包名,也就是前面你调用的。包名为main的包为应用程序的入口包,其他包不能使用。同包下的函数不需要导入包,可以直接使用。
2023-02-05 20:44:09
250
原创 【OLAP】Doris学习笔记
Apache Doris是由百度贡献的开源MPP分析型数据库产品,亚秒级查询响应时间,支持实时数据分析;分布式架构简洁,易于运维,可以支持10PB以上的超大数据集;可以满足多种数据分析需求,例如固定历史报表,实时数据分析,交互式数据分析和探索式数据分析等。Doris是一个现代化的MPP(Massively Parallel Processing,即大规模并行处理)分析型数据库产品。仅需亚秒级响应时间即可获取查询结果,可以支持10PB以上的超大数据集。
2023-02-05 20:32:07
515
原创 【OLAP】ClickHouse学习笔记
ClickHouse是俄罗斯开源的列式存储数据库(DBMS),使用C++编写,主要用于在线分析处理查询(OLAP)能够使用 SQL 查询实时生成分析数据报告。ClickHouse适合处理已经处理过的宽表。
2023-02-05 20:27:53
242
原创 分布式ID的生成方案
优点是空间占用小,主键自动增长,IO连续性好,数字类型查询速度明显优于字符串类型。雪花算法ID组成:1位符号位,41位时间戳(可以支持61年的时间跨度),10位机器ID,12位序列号(1ms可以生成4095个ID)UUID:UUID是通用唯一标识的缩写,其优点是生成速度块,ID全局唯一。缺点是空间占用多(16字符),且不是递增有序的。redis自增:redis计数器,原子性自增。优点是使用内存,并发性能好。缺点是数据已丢失,且容易暴露数据总量。雪花算法:优点是不依赖于外部组件,性能好。
2023-02-05 20:25:32
51
原创 【MySQL】分库分表相关思考
根据业务场景,灵活定制分片策略分片策略的选取需要考虑如何不迁移数据,实现集群动态扩缩容,同时又能保证数据分布相对均匀。可以采用整体按范围分片,不同范围包含的分片数可以不同,保证扩容时老数据不需要迁移。范围内,按照取模分片,让每个范围内的数据分布大致均匀。
2023-02-05 20:20:51
2533
1
原创 【学习笔记】HBase概念、原理、适用场景学习笔记
HBase是 Google BigTable 的开源实现。它是一种分布式、可扩展、稀疏数据、准实时查询、支持海量数据存储的NoSQL数据库。逻辑上,HBase的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列。RowKey:行键,RowKey 是用来检索记录的主键。行键是有序存储的,因此为了提升查询效率可以把要同时读取的数据的行键设置的比较接近。访问 HBase Table 中的行,只有三种方式:通过单个 RowKey 访问通过 RowKey 的 Range(正则)全表扫描ColumnFamily
2022-07-13 15:46:36
403
原创 http状态码
HTTP 状态码分为五类:信息响应(100–199),成功响应(200–299),重定向(300–399),客户端错误(400–499)和服务器错误 (500–599):分类分类描述1**信息,服务器收到请求,需要请求者继续执行操作2**成功,操作被成功接收并处理3**重定向,需要进一步的操作以完成请求4**客户端错误,请求包含语法错误或无法完成请求5**服务器错误,服务器在处理请求的过程中发生了错误常见的http状态码有:状态码状态
2022-05-15 13:52:17
125
1
转载 MySQL数据库的主从备份和读写分离
主数据库服务器故障后,可切换到从数据库继续工作,避免数据丢失主从备份原理数据库有一个bin-log二进制文件,纪录了所有执行的sql语句,尤其是一些DML语句。目标就是把主数据库(Master)的bin-log文件sql语句复制到从数据库(Slave)上把bin-log中的数据读取到reply-log文件中,在从数据库(Slave)的reply-log重做日志文件中,重新执行一次这些sql语句。主从备份过程:共涉及到了三个线程 1. master的binlog输出线程将执行的sql写入binlo
2022-05-14 13:27:50
293
原创 【golang/go语言】闭包(closure)
闭包(closure)一个外层函数中有内层函数,该内层函数中操作了外层函数的局部变量(外层函数的参数或直接定义的变量),并且该外层函数的返回值就是这个内层函数,则内层函数和外层函数的局部变量统称为闭包结构。该局部变量的生命周期会发生改变,正常局部变量的生命周期随着函数的调用而创建,随着调用的结束和销毁。但闭包中外层函数的局部变量并不会随着外层函数的调用结束而销毁,因为内层函数有可能会继续使用该局部变量。package mainimport ( "fmt")func main() {
2022-05-03 20:05:14
301
1
原创 【golang/go语言】time.NewTimer()和time.After()两个计时器
1. time.NewTimer()time.NewTimer()对象包含一个时间类型通道的对象C,当获取通道内的时间值时正好过去了所设定的时间,于是起到了计时器的作用。也可以在获取通道值之前用timer.Stop()命令主动将其终止,此时返回的值为true,终止失败为false。package mainimport ( "fmt" "time")func main() { timer := time.NewTimer(3 * time.Second) fmt.Prin
2022-05-02 08:11:28
1492
原创 【golang/go语言】sync同步包中Mutex、RWMutex、WaitGroup、Once、Cond、Pool和Map
1. WaitGroup等待组WaitGroup通过一个计数器counter来让主协程在还有子协程运行的时候进行等待wg.Add(num)函数可以让counter的值加上具体数值wg.Wait()函数可以让主协程进入阻塞状态wg. Done()函数可以让counter的值减一,相当于Add(-1)package mainimport ( "fmt" "sync")var wg sync.WaitGroupfunc main() { wg.Add(2) go func1()
2022-05-02 08:08:58
457
原创 【学习笔记】尚硅谷Hadoop大数据教程笔记
本文是尚硅谷Hadoop教程的学习笔记,由于个人的需要,只致力于搞清楚Hadoop是什么,它可以解决什么问题,以及它的原理是什么。至于具体怎么安装、使用和编写代码不在我考虑的范围内。一、Hadoop入门大数据的特点:Volume(大量)Velocity(高速)Variety(多样)Value(低价值密度)1. Hadoop概念是一个分布式系统基础架构2. Hadoop优势高可靠高扩展性高效性高容错性3. Hadoop组成(1) HDFS架构概述HDFS(Hadoop
2022-04-28 10:24:24
2502
原创 【学习笔记】事务与分布式事务
一、事务本地事务是在单个数据源上进行数据的访问和更新,分布式系统下由不同服务之间通过网络远程协作完成的事务被称为分布式事务。分布式事务的应用场景:微服务架构之间,即多服务器访问多数据库实例单体系统访问多数据库实例多服务访问同一数据库实例二、 事务的ACID特性该部分参考了文章事务的实现原理和MySQL事务的实现原理两篇文章。ACID即原子性(Atomicity),一致性(Consistency),隔离型(Isolation)和持久性(Durability)1. 原子性原子性通过und
2022-04-23 23:09:14
171
原创 【学习笔记】redis分布式缓存
在高并发情况下,服务器的访问压力主要有两部分,一是服务器的处理压力,二是数据库的读写压力。数据库的读写压力可以使用redis来缓解,对于热点数据可以拷贝一份到redis中,当查询数据库时,先去redis中读取,如果没有再去数据库中查询。1. redis集群的两种模式主从备份模式:当写入数据时,只往主redis中写,然后再从主redis同步到从属redis,而在读取时从从属redis中读取。但由于该模式只有一个主redis,应对不了海量数据的存储和读写。切片模式:将数据存储到不同切片的redis中,可
2022-04-23 21:19:39
566
原创 【学习笔记】Golang语法学习笔记
一、入门go是编译型的语言,代码风格类似于C语言,其最大特点是支持并发编程,go文件后缀名为.go在命令行通过go run helloworld.go来运行,或先通过go build helloworld.go编译,然后./helloworld执行,在windows下编译生成的是.exe文件。go语言代码的第一行使用package声明包,名为main的包比较特殊,它定义的是一个独立的可执行程序,而不是库。在 main 里的 main 函数也很特殊,它是整个程序执行时的入口。使用import导入使用的包
2022-01-25 16:31:25
535
原创 【学习笔记】SQL语句练习
1. 知识点ORDER BY的位置应该放在WHERE和GROUP BY之后,否则会报错。%通配符匹配0或多个字符,而_通配符匹配一个字符。GROUP BY子句中列出的每一列都必须是检索列或有效的表达式(但不能是聚集函数)。如果在SELECT中使用表达式,则必须在GROUP BY子句中指定相同的表达式。不能使用别名。GROUP BY子句中出现的字段必须在SELECT语句中出现,反之则非必然。GROUP BY子句必须出现在WHERE子句之后,ORDER BY子句之前。HAVI
2022-01-25 16:20:29
1008
原创 【学习笔记】ElasticSearch(ES)基本概念和语句学习笔记
一、ES名词ES:ElasticSearch又称ES,是一个可伸缩的、分布式的、近实时搜索的开源全文搜索与分析引擎。index(索引):一个索引就是一个拥有几分相似特征的文档的集合。相当于MySQL中的数据库。type(类型):一个索引中可以定义一种或多种类型。一个类型是索引的一个逻辑上的分类/分区,其语义完全由你来定。相当于MySQL中的表。field(字段):相当于MySQL中表的字段。mapping(映射):mapping是处理数据的方式和规则方面做一些限制,如某个字段的数据类型、默认值、分
2022-01-22 18:09:17
1750
原创 【学习笔记】Golang之Gorm学习笔记
一、模型定义1. 模型定义模型是标准的 struct,由 Go 的基本数据类型、实现了 Scanner 和 Valuer 接口的自定义类型及其指针或别名组成,如:type User struct { ID uint Name string Email *string Age uint8 Birthday *time.Time MemberNumber sql.NullString ActivedAt
2022-01-17 14:21:12
3881
原创 【学习笔记】单元测试之mockito学习笔记
Mockito库能够Mock对象、验证结果以及打桩(stubbing)。比如在测试时,可以用mockito模拟查询数据库的操作,即将查询数据库的方法拦截,并人工设置其返回值,这样就不用真正去数据库中拿取数据了。此外还可以对某个方法的运行结果进行验证等。1. 相关包和依赖的导入在使用mockito之前首先要导入包,建议采用静态导入:import static org.mockito.Mockito.*;,此外,还要在pom.xml文件中导入Junit相关依赖。<dependency>
2021-10-12 15:37:46
860
2
原创 【学习笔记】MyBatis学习笔记
本文是动力节点MyBatis教程的学习笔记。第一章1. 三层架构(1) 三层的功能表示层(User Interface Layer):接受用户数据,显示请求的处理结果,包括jsp、html、servlet等。对应controller包;业务逻辑层(Business Logic Layer):接受表示层传递过来的数据,检查数据,计算业务逻辑,调用数据访问层获取数据。对应service包;数据访问层(Data Access Layer,DAL):也称持久层,与数据库打交道。对应DAO包。
2021-10-11 15:51:24
189
原创 【学习笔记】《RabbitMQ实战指南》笔记
本文摘录总结自《RabbitMQ实战指南》。一、消息中间件消息队列中间件(MessageQueueMiddleware,简称为MQ)是指利用高效可靠的消息传递机制进行与平台无关的数据交流,并基于数据通信来进行分布式系统的集成。它一般有两种传递模式:点对点(P2P,Point-to-Point)模式和发布/订阅(Pub/Sub)模式。消息中间件的作用如下:解耦:消息中间件在处理过程中间插入了一个隐含的、基于数据的接口层,两边的处理过程都要实现这一接口,这允许你独立地扩展或修改两边的处理过程,只要
2021-10-02 10:15:30
468
原创 【学习笔记】《Redis设计与实现》笔记
本文摘录总结自《Redis设计与实现》一书。Redis 是一个键值对数据库(key-value DB),数据库的值可以是字符串、集合、列表等多种类型的对象,而数据库的键则总是字符串对象。一、内部数据结构1. 简单动态字符串(1) SDS的定义SDS (Simple Dynamic String,简单动态字符串)是 Redis 底层所使用的字符串表示,几乎所有的 Redis 模块中都用了 SDS。SDS的定义如下:typedef char *sds;struct sdshdr{ //
2021-10-02 10:05:53
233
原创 【学习笔记】Spring中的动态代理
本文参考了文章Spring AOP动态代理的实现方式和文章Spring中的动态代理。1. 动态代理的两种实现方式(1) 两种动态代理Spring中的AOP(面向切面编程)是基于动态代理技术实现的,而动态代理是基于反射设计的。动态代理的实现方式有2种:JDK动态代理和CGLIB动态代理。JDK动态代理:通过反射来接收被代理的类,并且要求被代理的类必须实现一个接口,核心是InvocationHandler接口和Proxy类CGLIB(Code Generation Library)动态代理:CGLI
2021-09-13 09:11:01
514
原创 【学习笔记】Spring中的AopContext.currentProxy()
本文参考了文章AopContext.currentProxy()和AopContext.currentProxy()解决同类中调用嵌套方法AOP失效。在使用@Transactional注解声明事务时,会有以下四种情况:在不同类中,事务方法A调用非事务方法B,事务具有传播性,事务生效;在不同类中,非事务方法A调用事务方法B,事务生效;在同一个类中,事务方法A调用非事务方法B,事务生效;在同一个类中,非事务方法A调用事务方法B,事务失效,这是由于使用Spring AOP代理造成的,只有
2021-09-13 09:10:22
1274
转载 【学习笔记】热点账户问题的解决方案
本文总结自知乎文章:浅谈热点账户技术解决方案。1. 热点账户问题简单来说,热点账户问题指的是短时间内有对同一个账户有大量写请求,从而导致高并发情况下冲突严重,产生性能瓶颈的问题。2. 解决方案(1) 汇总明细入账将多个请求合并为一个请求一次入账账户的写入操作不立即入账,而是由一个定时任务,每隔一段时间将所有未入账的操作记录计算一个金额之和,然后写入到账户中,这样就减少了对账户的写操作,避免了冲突。缺点:账户余额的更新有延迟,当入款操作没有入账,当前来了一笔出款时可能会因为余额不足而失败。()
2021-09-13 09:09:31
761
原创 【学习笔记】Redis中有序集合zset的实现原理——跳表
面试的时候被问到了有序集合zset的实现原理,本以为是基于红黑树实现的,其实是基于跳表(skipList)实现的。本文主要讲解什么是跳表,它是怎么查找、插入和删除元素的,相比于红黑树它有哪些优劣。本文参考了文章redis中的Zset原理。1. 跳表(1) 跳表是什么跳表是一种多层的有序链表。先考虑一种特殊情况下的跳表,如下图所示。从底往上分别是第1~4层,第1层用链表有序地存放所有元素,然后从第 iii 层每隔1个元素取一个元素形成第 i+1i+1i+1 层的有序链表,并增加第 i+1i+1i+1
2021-09-13 09:08:27
813
原创 【学习笔记】Spring中自定义注解
本文参考了文章@data注解_基础篇:深入解析JAVA注解机制和Spring项目中自定义注解的使用。简单来说Spring中的自定义注解是基于AOP(面向切面编程)来实现的,即在一个方法的执行前后对其做修改,以新增一些功能。所以在看本文之前需要先了解AOP的相关知识。1. 自定义注解类新建Maven工程,创建注解类MyAnnopackage ele.me;import java.lang.annotation.Documented;import java.lang.annotation.Elem
2021-09-13 09:07:13
127
原创 【学习笔记】Spring中的面向切面编程
首先要在pom.xml文件中引入aop的依赖:<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-aop</artifactId></dependency>编写切面类,作用在带有@GetMapping注解的方法上import org.aspectj.lang.annotation.Aft
2021-08-28 21:28:19
96
原创 【学习笔记】MacOS快捷键
简写:cmd:commond键opt:option键ctrl:control键tab:table键back:退格键cmd + M:最小化窗口cmd + ctrl + F:窗口全屏cmd + W:关闭窗口,此时在后台运行cmd + Q:退出程序cmd + opt + Esc:强制退出应用程序,类似于windows中的任务管理器ctrl + cmd + space:输入emoji表情cmd + space:调出spot light,类似于搜索功能在spot light中搜索ac
2021-08-28 21:26:32
214
原创 【学习笔记】Java中的锁Lock
本文参考自:Java并发编程:Lock。Lock锁并不是java内置的功能,其应用场景是在多线程并发访问时,为了避免冲突,需要每个线程先获取锁,避免其他线程的进入,等线程执行完后释放锁,允许其他线程进入。1. Lock锁与synchronized同步的区别Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现;synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLo
2021-08-28 21:25:36
1222
19年王道408+天勤数据结构讲解视频,王道+天勤书籍PDF版,王道15、16年8套模拟卷,王道09~18十年真题(计算机基础专业综合考试)
2019-03-28
2018年第九届蓝桥杯省赛C++B组和javaB组题目
2018-04-05
基于winpcap的网络嗅探器C语言源代码
2017-12-29
1KB快捷方式(暴风一号)病毒源代码及解决办法
2017-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人