Summary
Overview
Work History
Education
Skills
Languages
Timeline
Generic

Luo Carolina

Shanghai,Shanghai

Summary

  • Hardworking and passionate job seeker with strong organizational skills eager to secure full stack engineer position. Ready to help team achieve company goals.
  • Experienced in cloud server management, and project operations, and proficient in Linux environment.

Overview

4
4
years of professional experience

Work History

Full Stack Engineer

Shanghai Dedian Commercial Management Co., LTD
03.2023 - Current
  • Collaborated with cross-functional teams to design and develop high-quality software products on time and within budget.
  • Streamlined development processes by integrating continuous integration and deployment tools, improving overall efficiency.
  • Optimized database queries to improve data retrieval speeds, enhancing overall application performance significantly.
  • Stayed current on emerging trends in full stack development to incorporate the latest tools and techniques into software projects.
  • Understood full technology stack and underlying applications, services, and databases, resulting in optimal program performance.
  • Built databases and table structures for web applications.
  • Designed and developed analytical data structures.


Project 1 WeChat mini-program


Responsibilities Description: Responsible for the overall system architecture design, environment deployment, and management of Aliyun servers for the WeChat Mini Program. This includes designing the database structure, developing business logic code, organizing testing plans, and ensuring timely and successful project deployment. Also responsible for the development of the back-end management platform for the Mini Program, using scaffolding to quickly build the project and leveraging a component library for efficient development. The back-end management system includes detailed route-based access control and implements WeChat payment and refund functionality. Experienced in managing Aliyun ECS servers and proficient in deploying projects on Linux systems. Familiar with cloud server security, backup, performance monitoring, and management actions such as creating security groups, defining firewall rules, and enabling firewall rules and instance security groups

Challenges:

1. Https Access Issue: When deploying the project, encountered an issue where the frontend was able to access the APIs in the testing environment but not in the production environment.

Solution: The mini-program requires the API requests to be made over HTTPS.Configured SSL termination for the project. Applied the free SSL certificate provided by Alibaba Cloud and used Nginx reverse proxy to implement SSL/TLS decryption. Nginx acts as an SSL termination, receives HTTPS requests, decrypts them, and forwards the decrypted requests to the backend server. This alleviates the burden on the backend server and improves security and performance. The specific solution was to configure a server block in the nginx.conf file, where each server block represents a virtual service with specified ports, service names, and routing rules. After restarting Nginx, the issue was resolved.


2. Instant Messaging: Implementation of real-time chat functionality was challenging due to the need to ensure message timeliness, system load concerns, and the high cost of using third-party instant messaging technologies that may not fully meet the business requirements.

Solution: Using Spring Boot to integrate WebSocket is mainly based on the bidirectional communication mechanism of the WebSocket protocol. By establishing a TCP connection, both the WebSocket server and the client can actively send or receive data to each other after the connection is established. It is similar to a traditional socket, but WebSocket is a protocol that is built on top of the web, simulating the functionality of a socket. WebSocket requires a handshake connection similar to TCP, where the client and server need to establish a handshake connection before they can communicate with each other. The steps to achieve this are as follows:

  • Add support for WebSocket by injecting ServerEndpointExporter for automatic registration of WebSocket endpoints declared with the @ServerEndpoint annotation.
  • Create the implementation class for WebSocket, where the value in @ServerEndpoint("/webSocket/{page}") is the address that needs to be accessed, similar to the @RequestMapping in a controller.
  • Implement the following methods in the WebSocket class: @OnOpen (called when the connection is opened), @OnClose (called when the connection is closed), @OnMessage (called when a message is received), @OnError (called when an error occurs).

Intermediate Software Development Engineer

Shanghai Xinyuan Computer Technology Co.LTD,
11.2020 - 03.2023
  • Integrated third-party APIs to expand application capabilities and improve overall performance.
  • Conducted thorough code reviews to identify errors, maintain consistency, and uphold coding standards across the team.
  • Streamlined development processes through the implementation of agile methodologies, increasing efficiency and productivity within the team.
  • Designed and developed analytical data structures.
  • Analyzed work to generate logic for new systems, procedures and tests.


Project1.Technology Financial System


Challenges: There are many slow queries in the system, and it is necessary to troubleshoot and optimize them. For example:

  • Use INNER JOIN instead of subqueries because MySQL has weak handling capability for subqueries, and using INNER JOIN avoids creating temporary tables in memory.
  • Replace OR with IN. For example, replace "SELECT * FROM t WHERE id = 10 OR id = 20 OR id = 30;" with "SELECT * FROM t WHERE id IN (10,20,30);". When the values in the condition are consecutive, BETWEEN can be used. This is because using BETWEEN only needs to match the upper and lower bounds, resulting in constant time complexity of O(2). On the other hand, OR and IN statements require checking each condition until a match is found, resulting in the time complexity of O(n). However, MySQL has optimized the IN statement by storing all constant values in a sorted array and using binary search, resulting in the time complexity of O(log n).
  • Replace multiple INSERT statements with batch INSERT. For example, replace "INSERT INTO t(id, name) VALUES(1, 'aaa'); INSERT INTO t(id, name) VALUES(2, 'bbb');" with "INSERT INTO t(id, name) VALUES(1, 'aaa'),(2, 'bbb');"
  • Only return necessary columns and replace the select * statement with specific field names. SELECT * increases unnecessary consumption (CPU, IO, memory, network bandwidth) and needs frequent updates when the table structure changes. Therefore, it is recommended to specify the field names directly after the SELECT keyword.and so on.


The main technology stack of the project includes Spring Boot, Spring Cloud, Hibernate, Redis, and other technologies. The front end utilizes frameworks such as Vue and Element. The project is deployed using Docker, and the authentication functionality is implemented using JWT. The company where this job opportunity is located is a mature software company. The personal growth in this position mainly focuses on implementing business functionalities and gaining experience in requirement implementation, translating abstract concepts into code, and learning about team collaboration. As a junior developer, the primary responsibility is to develop and maintain the system within the existing frameworks. In terms of technology, there is an opportunity to learn SQL optimization and complex querying techniques.


Project2. E-commerce platform

Challenges:

1. When a user logs in, the request carries a token that passes through a filter. The filter performs operations similar to passwordless login based on the token provided by the user. One of the steps involves querying the database or user login information, which impacts performance due to frequent database queries. To address this, the idea of storing user information and user resource information in Redis was considered to avoid frequent database queries. However, if Redis goes down, users won't be able to log in.

Solution:

Use AOP (Aspect-Oriented Programming) and Spring Cache for easier operations. By using @Cacheable, caching can be implemented. The usage of RedisTemplate allows direct operations on Redis, ensuring that our business logic remains unaffected even if Redis fails. AOP is used to ensure that the execution of methods in the cache business class does not affect normal business logic and guarantees the consistency of Redis data. Since user information and user resource information are both cached in Redis, cache data needs to be deleted when modifying user information or resource information, and the specific timing for deletion can be determined based on when user information is modified. Application: Define an aspect and apply it to relevant cache business classes. In the around advice of the aspect, handle exceptions directly, ensuring that subsequent operations can be executed without issues

2. How to cancel an order that exceeds the time limit after a user places an order.

Solution:

Integrate RabbitMQ to implement delayed messaging and solve the problem of canceling orders when they exceed the time limit. The process involves:

The user places an order, which involves operations such as locking product inventory, using coupons, and managing points.

Order is generated and the order ID is obtained.

The set order timeout time is retrieved (e.g., if the timeout is set to 60 minutes, the order should be canceled if not paid within that time).

A delayed message is sent to RabbitMQ based on the order timeout time, triggering the cancellation of the order after the timeout.

If the user does not make the payment, the order is canceled. This involves releasing the locked product inventory, returning the coupon, and managing points.

The implementation relies on the rabbitmq_delayed_message_exchange plugin. The producer sends a message (msg) and a routing key (route key) to the specified delayed exchange (exchange). The delayed exchange stores the message until it expires and then delivers the message to the queue bound to it based on the routing key (route key). The queue then delivers the message to the consuming party listening to it (the customer)


Project3. Enterprise ERP Management Platform

Main Responsibilities:

Responsible for the backend development of the mini-program. The main responsibility is to write business code and gradually become familiar with the framework and development process used by the company. In this project, the implemented functionality is attendance management integrated with Tencent Map. The requirement is to successfully clock in only when in a specified Wi-Fi environment, primarily by obtaining the MAC address of the Wi-Fi. The main tools used for testing APIs are Postman and Swagger UI. The technology stack includes Spring Boot, Spring Cloud, Hibernate, Redis, etc., and the front-end is developed using uni-app and uView.


Junior Software Development Engineer

Anlong Information Technology (Shanghai) Co., LTD
06.2020 - 11.2020
  • Optimized software performance by implementing efficient algorithms and code optimizations.
  • Enhanced user experience through the development of intuitive UI designs and streamlined navigation features.
  • Collaborated with cross-functional teams to deliver high-quality software solutions on time and within budget.
  • Resolved critical software issues, ensuring smooth functionality and minimizing downtime for users.


Project1

SMS Platform An SMS platform project based on China Mobile's CMPP2.0 protocol specification

Main Technology Stack: SpringCloud, SpringBoot, MyBatis. Personal Responsibilities: User microservices, user login, registration functionality, backend management platform. The project utilizes SpringCloud's Eureka component as a discovery center and communication hub for various microservices in the system. The startup class is annotated with @EnableEurekaServer to set it up as a service registration center, while the service providers need to configure the eureka information in the configuration file and annotate the startup class with @EnableEurekaClient to register as a service client. The frontend and backend of the backend management platform are both built using scaffolding tools. The project is deployed on bare metal servers on Alibaba Cloud.

Education

Bachelor of Science - Computer Science And Technology

Shanghai DianJi University
Shanghai
06.2020

Skills

  • Database Administration
  • Git Version Control
  • SQL Database Management
  • Cloud Computing Platforms
  • Java Development
  • HTML5 Proficiency
  • RESTful API Integration
  • Full Stack Development
  • Source and Version Control: Git, Github
  • Programming Languages: Java, C#
  • Object-Oriented Programming
  • Project Management
  • Linux Environments
  • Cross-Functional Collaboration
  • Software Deployment
  • Requirements Gathering and Analysis
  • Testing and Debugging
  • Progressive Web Apps
  • Docker Containerization
  • NoSQL Databases
  • Software Testing and Validation
  • Data Storage and Retrieval
  • Databases: Oracle, MongoDB
  • JS Frameworks: Vue
  • Software Architecture
  • Javascript
  • Programming

Languages

English
Native or Bilingual

Timeline

Full Stack Engineer

Shanghai Dedian Commercial Management Co., LTD
03.2023 - Current

Intermediate Software Development Engineer

Shanghai Xinyuan Computer Technology Co.LTD,
11.2020 - 03.2023

Junior Software Development Engineer

Anlong Information Technology (Shanghai) Co., LTD
06.2020 - 11.2020

Bachelor of Science - Computer Science And Technology

Shanghai DianJi University
Luo Carolina