Hiii, my name is
Mingyong Ma.
young man with love and passion
I am currently a software developer at Adobe.
1.
Where I've Worked
2.
Some Things I've Built
Distributed Cloud File Management System
click to unlock
- Implementing the http protocol (simple version):
- Clients send request messages to the server, and servers reply with response messages layered on top of the TCP protocol.
- Implemented HTTP persistent connection: a client can reuse a TCP connection to a given server
- Provide safe control not allowing clients to access memory other than document root.
- creating a fault tolerant cloud-based file storage service called SurfStore (client and server communicating using gRPC):
- The SurfStore service is composed of the following two services:
- BlockStore: Stores these blocks, and when given an identifier, retrieves and returns the appropriate block.
- MetaStore: Manages the metadata of files and mapping of filenames to blocks (hash marshalled by SHA-256).
- The clients' file data is stored in local database with version. When invoking into client, the sync operation will occur, and new files added to base directory will be uploaded to the cloud, files that were sync'd to the cloud from other clients will be downloaded to base directory, and any files which have ''edit conflicts'' will be resolved.
- Store and manage the block in different BlockStore using Consistent Hashing Ring.
- Ensure that the MetaStore is fault tolerant and stays consistent regardless of minority of server failures by RAFT protocol. (Raft Simulator)
B+ Tree with Buffer Management
click to unlock
- Build a Buffer Pool on top of I/O layer with page frames and a hashtable which maps frame number to page number.
- A page frame has PinCnt(whether the page is being used), dirty bit(whether the page is modified), reference bit(used for LRU clock alogorithm).
- Implement buffer replacement policy and LRU clock algorithm.
- Build a B+ Tree on top of Buffer Pool layer, supporting INSERT/DELETE operation.
- Initialize B+ Tree with bulk loading and split a page when number exceed "fanout".
- B+ Tree support inserting int, double and char* variable.
Operating System Implementation
click to unlock
- Implementing internal structures of the operating system: Alarm() function to call timer interrupt; Join() function to sleep the parent while waiting for the child thread to finish; Implement semaphores to provide atomicity;
- create the pageTable data structure for each user process, which maps the process's virtual addresses to physical addresses.
- Implementing the file system calls create, open, read, write, close, unlink, join, exit and exec.
- Implement demand paging, page replacement to free up a physical page frame to handle page faults
Active Learning for data limited classification task
click to unlock
- Applied active learning to the classification task of malaria cells
- Used only 26% of the data to achieve comparable accuracy close to the 100% of data usage in other literature by applying uncertainty sampling.
- Explored who has a higher improvement effect on model generalization by comparing random sampling with uncertainty sampling and Logistic Regression with SVM.
- Paper accepted by the 2021 IEEE 3rd International Conference on Frontiers Technology of Information and Computer.