Welcome to the Software Technology Blog, the knowledge articles page for React, JavaScript, and technical skills. Whether you're looking for technical information about monorepo, state management tips for zustand, or want to improve your understanding of front-end development, there's a wealth of resources here. Each article is carefully crafted to provide clear, easy-to-understand content to help you find the information you need quickly. From basic concepts to advanced tips, there's something for everyone, whether you're a beginner or an advanced developer.If you are interested in graphic content, you can also refer to our Instagram.
AI 2027: How far are we from achieving general intelligence (AGI)? A comprehensive analysis of the arguments of supporters and skeptics in one article
Preface: Why will "2027" become an amplified AI node?
Since 2023, the pace of progress in generative AI tools has shocked the world. From the popularity of ChatGPT to the functional superposition of GPTs, Claude, and Gemini, AI has evolved from "writing copy" to "helping you make decisions." Many people have begun to put forward more radical assumptions: Will we be able to see true AGI by 2027?
AGI, Artificial General Intelligence, means that AI will no longer just answer questions, but will be able to learn, reason, understand and plan like humans. The founders of companies such as Anthropic and OpenAI have recently stated publicly that such a goal could be achieved around 2027. This kind of talk is both exciting and scary...
As a heavy user of AI, I work with these tools and observe industry trends every day. At the same time, I deeply feel the need to use more comprehensive research to balance different viewpoints. Otherwise, I will be really anxious about the new AI research every day!
Therefore, today’s article does not attempt to predict the future, but returns to a more rational and objective perspective: starting from the arguments for/against AI 2027, understand why "AI 2027" has become the focus of the spotlight, and what mentality we should use to look at it! Let’s watch it together!
Unlocking the secret garden of the AI brain: analyzing Claude 3.5 through Anthropic, and seeing how AI thinks
Preface: When AI becomes too smart, black boxes are no longer reassuring 2
Is “AI Agent” the next ChatGPT? This article will help you understand AI Agent!
When you use ChatGPT for the first time, you may be surprised by its response speed, language capabilities, and amount of information. It is like an all-knowing and all-powerful online encyclopedia assistant that can write articles, modify resumes, generate marketing copy, and even write a piece of code. For many people, such tools are enough to change their work habits and lifestyle.
But if you are an entrepreneur, PM or freelancer, you will soon find that although ChatGPT can help you "make things", it cannot "complete the task". You have to direct every step yourself, as if you were working with a very smart but passive assistant. At this time, the concept of AI Agent emerged.
AI Agent is not a simple chatbot, but an intelligent system that can actively understand goals, plan task processes, and perform multi-step actions. You just need to tell it "I want to increase the conversion rate of the website", and it will automatically help you analyze website problems, make copywriting suggestions, perform A/B testing, and finally report the results. Such capabilities not only subvert our expectations of AI, but also mark the starting point for the next wave of AI revolution.
Today’s article will take you from the most basic definition to an in-depth understanding of what AI Agent is, what it can do, what are the representative tools and frameworks, and why it is the new trend that deserves your attention after ChatGPT. Let’s read on!
🤖 Do you dare to use AI employees? An internship experience starring Google Gemini
When a small or medium-sized enterprise begins to expand, the first problem it faces is usually not the market or product, but a lack of staff. Imagine that you are the person in charge of this company today. You may need to perform three duties: replying to customers, writing copy, and handling customer reviews at the same time.
And in the midst of these tedious but important tasks, you start hearing about a new helper that could change the way you do your job: Artificial Intelligence, or more specifically: Large Language Models (LLMs).
[Leetcode] 1804. Implement Trie II
A trie (pronounced as "try") or prefix tree is a tree data structure used to efficiently store and retrieve keys in a dataset of strings. There are various applications of this data structure, such as autocomplete and spellchecker.
Implement the Trie class:
Trie() Initializes the trie object.
void insert(String word) Inserts the string word into the trie.
int countWordsEqualTo(String word) Returns the number of instances of the string word in the trie.
int countWordsStartingWith(String prefix) Returns the number of strings in the trie that have the string prefix as a prefix.
void erase(String word) Erases the string word from the trie.
[LeetCode] 0020. Valid Parentheses
Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid.
An input string is valid if:
Open brackets must be closed by the same type of brackets.
Open brackets must be closed in the correct order.
Every close bracket has a corresponding open bracket of the same type.
When AI can write programs faster than you, how can engineers find their new position?
Imagine this scenario: you sit in front of your computer and describe the function you have in mind. A few seconds later, artificial intelligence will generate a piece of executable code for you, or even the entire application will be born. Does it sound a bit magical?
This scenario is no longer a fantasy, but a reality that is happening now. In recent years, AI coding technology has risen rapidly, gradually transforming from a novel topic in technology news to an important tool for daily development work. From GitHub Copilot to DeepSeek R1, artificial intelligence has not only changed the way programming is done, but may also subvert the development direction of the entire software industry.
So to what extent has AI coding technology developed? Will it replace engineers' jobs? As people working in the technology industry, how should we face this wave of technological advancement? This article will gradually analyze in depth the origin, current status, practical applications, impact on the industry, future development, and how technology industry professionals should respond to AI coding.
[Leetcode] 0212. Word Search II
Given an mxn board of characters and a list of strings of words, return all words on the board.
Each word must be constructed from letters of sequentially adjacent cells, where adjacent cells are horizontally or vertically neighboring. The same letter cell may not be used more than once in a word.
[Leetcode] 0211. Design Add and Search Words Data Structure
Design a data structure that supports adding new words and finding if a string matches any previously added string.
Implement the WordDictionary class:
WordDictionary() Initializes the object.
void addWord(word) Adds word to the data structure, it can be matched later.
bool search(word) Returns true if there is any string in the data structure that matches word or false otherwise. word may contain dots '.' where dots can be matched with any letter.
[Leetcode] 0208. Implement Trie
A trie (pronounced as "try") or prefix tree is a tree data structure used to efficiently store and retrieve keys in a dataset of strings. There are various applications of this data structure, such as autocomplete and spellchecker.
Implement the Trie class:
Trie() Initializes the trie object.
void insert(String word) Inserts the string word into the trie.
boolean search(String word) Returns true if the string word is in the trie (ie, was inserted before), and false otherwise.
boolean startsWith(String prefix) Returns true if there is a previously inserted string word that has the prefix prefix, and false otherwise.
[Leetcode] 0235. Lowest Common Ancestor of a Binary Search Tree
Given a binary search tree (BST), find the lowest common ancestor (LCA) node of two given nodes in the BST.
According to the definition of LCA on Wikipedia: “The lowest common ancestor is defined between two nodes p and q as the lowest node in T that has both p and q as descendants (where we allow a node to be a descendant of itself).”
[Leetcode] 0230. Kth Smallest Element in a BST
Given the root of a binary search tree, and an integer k, return the kth smallest value (1-indexed) of all the values of the nodes in the tree.
[Leetcode] 0098. Validate Binary Search Tree
Given the root of a binary tree, determine if it is a valid binary search tree (BST).
A valid BST is defined as follows:
The left subtree of a node contains only nodes with keys less than the node's key.
The right subtree of a node contains only nodes with keys greater than the node's key.
Both the left and right subtrees must also be binary search trees.
[Leetcode] 0105. Construct Binary Tree from Preorder and Inorder Traversal
Given two integer arrays preorder and inorder where preorder is the preorder traversal of a binary tree and inorder is the inorder traversal of the same tree, construct and return the binary tree.
[Leetcode] 0572. Subtree of Another Tree
Given the roots of two binary trees root and subRoot, return true if there is a subtree of root with the same structure and node values of subRoot and false otherwise.
A subtree of a binary tree tree is a tree that consists of a node in tree and all of this node's descendants. The tree tree could also be considered as a subtree of itself.
[Leetcode] 0297. Serialize and Deserialize Binary Tree
Serialization is the process of converting a data structure or object into a sequence of bits so that it can be stored in a file or memory buffer, or transmitted across a network connection link to be reconstructed later in the same or another computer environment.
Design an algorithm to serialize and deserialize a binary tree. There is no restriction on how your serialization/deserialization algorithm should work. You just need to ensure that a binary tree can be serialized to a string and this string can be deserialized to the original tree structure.
Clarification: The input/output format is the same as how LeetCode serializes a binary tree. You do not necessarily need to follow this format, so please be creative and come up with different approaches yourself.
Major shift in US semiconductor strategy! How will TSMC's $165 billion investment rewrite the chip market?
Taiwan Semiconductor Manufacturing Company (TSMC) recently announced that it will set up its third wafer fab in the United States and plans to invest US$165 billion to build an advanced packaging factory and R&D center in Arizona. This major investment is not only part of TSMC's business expansion strategy, but is also closely related to international policies and economic development.
What impact will this investment have on the global chip market? What are the pros and cons of TSMC increasing its investment in the United States? What impact will it have on Taiwan’s economy and regional security? Today we will analyze this major decision in depth and talk about what changes this strategy will bring to the technology industry!
[Leetcode] 0102. Binary Tree Level Order Traversal
Given the root of a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, level by level).
[Leetcode] 0124. Binary Tree Maximum Path Sum
A path in a binary tree is a sequence of nodes where each pair of adjacent nodes in the sequence has an edge connecting them. A node can only appear in the sequence at most once. Note that the path does not need to pass through the root.
The path sum of a path is the sum of the node's values in the path.
Given the root of a binary tree, return the maximum path sum of any non-empty path.
[Leetcode] 0951. Flip Equivalent Binary Trees
For a binary tree T, we can define a flip operation as follows: choose any node, and swap the left and right child subtrees.
A binary tree X is flip equivalent to a binary tree Y if and only if we can make X equal to Y after some number of flip operations.
Given the roots of two binary trees root1 and root2, return true if the two trees are flip equivalent or false otherwise.