V1 corresponds to V1 in the thesis; V2 is the fixed-schedule, which is not shown in the thesis; V3 corresponds to V2 in the thesis main.go in text is the program at client; agent is the program at ACS; receiver is the program at recipient; final is the clustering's program All the files in middle_data are used when doing clustering. The data from redis is exported, filtered and finally used as input data for final.py. The grouping results from final.py are then returned to ACS V1: client: First use the test2 function to take out all the data to be sent in db0 in redis for this round, then cache the message and timestamp into db2, and the user id and corresponding ip into db1 The finalsend() function takes the data from db2 and consolidates it into a merged message that is sent to the ACS. Depending on the status of the user (arrival, learning and online), different actions are performed StatusChangeOrNot_arrival_to_learning(), StatusChangeOrNot_learning_to_online() and StatusChangeOrNot_eliminated() functions, which handle the status change in each round respectively ACS: peocessConn() function, responsible for receiving messages from the client, and depending on the status of the users, they are processed differently and cached in different databases arrivalToLearn1(), learning_To_online_batchList(h24), learning_function(h24), online_cache_process() for handling transitions between different states V2: before_finalsend(), before() function, responsible for communication between client and ACS, determining schedule