AVL Tree Insertion Explained (Part 2)
12:49
AVL Tree Insertion Explained (Part 1)
5:52
AVL Tree Explained
7:41
21 күн бұрын
Binary Search Tree Deletion Explained
4:58
Form2Video | Revideo Tutorial
6:05
Пікірлер
@bhonepyaekyaw396
@bhonepyaekyaw396 3 күн бұрын
This needs more recognition. It explains so well.
@Jesper12342
@Jesper12342 12 күн бұрын
very well made and informative videos, really suprised you don't have any viewers
@bytevigor
@bytevigor 12 күн бұрын
Thank you so much for your kind words and support! I’m glad you found the videos informative. Building an audience takes time, but comments like yours mean a lot and keep me motivated to keep improving and sharing valuable content. 😊
@ghanembenazzouz3245
@ghanembenazzouz3245 12 күн бұрын
Simple and effective tutorial. It's clear in your mind so you expressed it clearly.
@kungao3623
@kungao3623 18 күн бұрын
Really good series, please keep making more videos like this!
@akshisharma-r3m
@akshisharma-r3m 22 күн бұрын
Thank you so much 😊😊
@naveensundar0
@naveensundar0 25 күн бұрын
perfect!
@lpacha33193
@lpacha33193 Ай бұрын
Doesn't ChatMediatorImpl violate single responsibility rule of SOLID principles?? by having 2 behaviors addUser and sendMessage?
@bytevigor
@bytevigor Ай бұрын
Thank you for the question! Actually, ChatMediatorImpl does not violate the Single Responsibility Principle because its core responsibility is to act as a mediator between users. Both addUser and sendMessage are essential functions within the scope of a mediator’s duties. If these functionalities were split into separate classes, it could lead to scattered responsibilities and increased complexity. However, as the system grows more complex, we could further optimize the design-for instance, by extracting user management or message processing logic into dedicated classes.
@MrJloa
@MrJloa Ай бұрын
Read only -- use SSE. Need duplex -- use sockets. Why would u need polling? Cant find a single reason to use polling
@bytevigor
@bytevigor Ай бұрын
Great question! While SSE, WebSockets are more efficient for many use cases, there are still scenarios where polling can be a valid or even necessary choice: 1. Simplicity: Polling is easier to implement and debug, especially for small-scale applications or quick prototypes where advanced bidirectional communication isn’t required. 2. Limited Server Capabilities: Not all servers support persistent connections like WebSockets or SSE. Polling works on virtually any HTTP infrastructure. 3. Firewall/Proxy Restrictions: In environments with restrictive firewalls or proxies that block WebSockets or SSE, polling can still be a reliable fallback. 4. Low-Frequency Updates: If the frequency of updates is low (e.g., every 30 minutes or more), polling is often sufficient and avoids the overhead of maintaining persistent connections. 5. Legacy Systems: Polling can be the only option when working with legacy systems that don’t support more modern protocols. While polling isn’t as efficient as the other methods, it’s not obsolete-it’s just another tool in the toolbox for specific use cases. 😊
@johnrony7962
@johnrony7962 Ай бұрын
Very underrated channel. Short, succinct and to the point. Absolutely shocking that it doesn't have many more views.
@maheshdhavalshankh5974
@maheshdhavalshankh5974 Ай бұрын
A very good explanation in short time. ❤
@yadav-r
@yadav-r Ай бұрын
Wow. thank you so much.
@prashlovessamosa
@prashlovessamosa Ай бұрын
thanks
@nfasts
@nfasts Ай бұрын
The complex topic explained very well with visuals
@hanik4700
@hanik4700 2 ай бұрын
Great example! Thanks!
@mgk210
@mgk210 2 ай бұрын
Why we are not initialising dvd, projector, sound system objects inside HomeTheaterFacade class directly instead of passing as parameter ??
@cameronmalcolm4218
@cameronmalcolm4218 2 ай бұрын
Thank you so much. This video made it make so much sense
@timur2887
@timur2887 2 ай бұрын
Why there is always AWS... It's not the only option
@timur2887
@timur2887 2 ай бұрын
Wouldn't it be more effective making CoffeeMachineState class static instead passing CoffeeMachine instance each state method invocation?
@helloworld4788
@helloworld4788 2 ай бұрын
I'm a big fan of your videos. The examples are so easy to understand. I can't wait for more videos about system design.
@bytevigor
@bytevigor 2 ай бұрын
Thanks so much! More system design videos are coming-stay tuned!
@ilyess5131
@ilyess5131 2 ай бұрын
Thank you William.
@bytevigor
@bytevigor 2 ай бұрын
Welcome!
@amitabhsarkar9571
@amitabhsarkar9571 2 ай бұрын
You tutorials are great. Can you create a workflow where you show how you have created the a tutorial video, how much work you put behind the sean and how we can make automate it.
@bytevigor
@bytevigor 2 ай бұрын
Thank you! I’m glad you enjoy the tutorials. Right now, each video is manually created, so there’s a lot of work involved. Automation isn’t possible with the current process, but here’s a quick look at my workflow: I start by writing the script, then use ChatGPT to refine it, generate the voiceover with Fliki, create animations in MotionCanvas (or Revideo) through programming and sync with the audio, add subtitles in CapCut, and finally upload to KZbin. I’m working on getting faster as I get more familiar with the tools!
@helloworld4788
@helloworld4788 2 ай бұрын
Loved all the videos about system design, are there any other videos coming on system design
@bytevigor
@bytevigor 2 ай бұрын
Yes, I’m currently working on some system design case study content. Stay tuned!
@helloworld4788
@helloworld4788 2 ай бұрын
@@bytevigor thank you so so much, :)
@fullmentaljacket2151
@fullmentaljacket2151 2 ай бұрын
great tutorial series, thank you for creating it!
@senthilvel4879
@senthilvel4879 3 ай бұрын
Keep going on doing videos like this. I searched on these topics. But i never seen a video with these much of good quality. Looking forward more videos. And i am new subscriber !!!
@bytevigor
@bytevigor 2 ай бұрын
Thanks, will do! I’m currently working on some system design case study content. Stay tuned!
@senthilvel4879
@senthilvel4879 3 ай бұрын
Nice video
@JaisinghaniSagar
@JaisinghaniSagar 3 ай бұрын
Is this not violating single responsibility principle?
@bytevigor
@bytevigor 3 ай бұрын
The Facade Design Pattern doesn’t violate the Single Responsibility Principle (SRP); instead, it aims to simplify a complex system by providing a streamlined interface, which aligns with SRP. Here’s how it maintains SRP: 1. Facade Role: The facade itself has a single responsibility-to offer a simplified interface. It doesn’t take on the complex internal logic of the subsystems it encapsulates. 2. Subsystems: Each subsystem class still retains its individual responsibility and handles its own complexity. The facade simply coordinates interactions between these subsystems without modifying or taking over their responsibilities. 3. Benefits to Clients: By encapsulating complex subsystems behind a single interface, the facade allows client code to avoid directly interacting with multiple classes, reducing coupling and making the client’s responsibility more focused. This design allows SRP adherence by keeping the facade focused on managing communication between client and subsystems without overloading it with tasks beyond that interface role.
@helloworld4788
@helloworld4788 3 ай бұрын
OMG, your videos are top-notch! I learned design patterns and system design from your videos. Now I'm working on a Revideo clone. Thank you so, so much! Could you please upload more backend-related projects?
@bytevigor
@bytevigor 3 ай бұрын
Noted, thank you for the feedback.
@packagemain
@packagemain 3 ай бұрын
Great video! Just published one as well which dives into the main building blocks of Server-Sent Events in Go. kzbin.info/www/bejne/pKfMm5Zrf5J9d7M
@anthonya880
@anthonya880 3 ай бұрын
Please consider making System Design Primer playlist. Something similar to 'Jordan Has No Life' Channel. We would love to see your explanations. Great work so far.
@bytevigor
@bytevigor 3 ай бұрын
Noted, thank you for the feedback🙏
@centerfield6339
@centerfield6339 3 ай бұрын
Sse and wss also need to maintain a list of stuff to send that hasn't already been sent to a client. Short polling doesn't need that.
@indarkerimota66
@indarkerimota66 3 ай бұрын
What happened to your "Create Videos with Code" videos?
@bytevigor
@bytevigor 3 ай бұрын
I’m considering focusing this English channel on system design-related content. As for ‘Create Videos with Code,’ I’m thinking of not making English content and instead focusing only on Chinese, posting it on a video platform in China. The main reason is that my spoken English isn’t very good, and creating videos entirely with Revideo and TTS is quite slow. Sorry!
@bytevigor
@bytevigor 3 ай бұрын
For MotionCanvas related tutorial, I recommend this channel: www.youtube.com/@tomkotech
@indarkerimota66
@indarkerimota66 3 ай бұрын
@@bytevigor I discovered your channel recently and you really explain things very well. I hope you come back in the future! To motivate you, there are Indians who surely speak worse English than you. :D.
@9849458300
@9849458300 3 ай бұрын
Great content... Please post more videos with all concepts. Thank you again :)
@ChandanNayak-lq1pd
@ChandanNayak-lq1pd 4 ай бұрын
Great one Subscribed , could you provide the GitHub code link please?
@renanvaz615
@renanvaz615 4 ай бұрын
Great content. Continue with this good work.
@timur2887
@timur2887 4 ай бұрын
thank you
@tienlucto616
@tienlucto616 4 ай бұрын
Could you make a tutorial video like this with BASE properties
@bytevigor
@bytevigor 4 ай бұрын
I’ll add it to my list and hope I'll get to it soon.
@bhanukumarkotha4270
@bhanukumarkotha4270 3 ай бұрын
Threads in java in your way
@uszebr
@uszebr 4 ай бұрын
Very helpful. Missing grpc
@bytevigor
@bytevigor 4 ай бұрын
I plan to make a dedicated video on gRPC in the future.
@srishtianand8519
@srishtianand8519 4 ай бұрын
thank u it was insightful
@b_anil
@b_anil 4 ай бұрын
Thanks, very crisp and clear
@Gr8Viddz
@Gr8Viddz 4 ай бұрын
Nice video, please provide Github link
@jazzochannel
@jazzochannel 4 ай бұрын
1:19 either i'm very hung over or that was a word salad instead of an intro with more dressing than veggies. let me hear that again... ok up to 0:14, falling off by 0:38, and pointless after 0:51. wow. makes you think... a good intro or first impression really does matter. This content seems to be written by someone from eastern europe and read by someone from the us who's not really all that tech-savvy, but good at reading. While the graphics are done by someone in asia. Welcome to youtube and best of luck to you!
@bytevigor
@bytevigor 4 ай бұрын
I am a Chinese software architect, and I created the original content in Chinese. I translated it into English with the help of ChatGPT for the script and ElevenLabs for the voiceover. I’m trying this approach on KZbin to see if it works. Thank you for your feedback!
@renanvaz615
@renanvaz615 4 ай бұрын
Your content is very good!
@bytevigor
@bytevigor 4 ай бұрын
Thank you for the feedback!
@r16.official
@r16.official 4 ай бұрын
thanks, explained it in simple and clear
@bytevigor
@bytevigor 4 ай бұрын
Thank you for the feedback!
@timur2887
@timur2887 4 ай бұрын
thanks! very valuable
@bytevigor
@bytevigor 4 ай бұрын
Thank you for the feedback!
@anu349
@anu349 4 ай бұрын
Great video
@bytevigor
@bytevigor 4 ай бұрын
Thanks!
@ClifCollins-k8d
@ClifCollins-k8d 4 ай бұрын
<html><head> <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"> <title>Coffee Machine</title> <script> //********************************************************************************************** // Coffee Machine (Table Drive Logic, see: at bottom) // // Not exactly what I had in mind, but it does localize logic. There is // no change to the source code no matter how many states are defined. // I added a state "coffee ready". The logic table (at the bottom) is what I am after // if I have multiple machines, then it is simple to make multiple logic tables // Oh, one more thing, Do not use "Please", Just more professional (I was told) // Clif Collins, 49 years programming (just an example) (I hate coding) // // 1/2 of this example is just to load the control table. I left it in because // what I want is a logic definition table that is editable, readable, and easy to enhance //********************************************************************************************** //====================================================================================== // stateTransition$ //====================================================================================== function stateTransition$(sourceCode) { this.parse = stateTransition$parse; this.changeState = stateTransition$changeState; this.parse(sourceCode); this.changeState(0); //====================================================================================== // stateTransition$changeState //====================================================================================== function stateTransition$changeState(index) { var stateName; stateName = this.machine.stateNames[index]; if (! this.currentState || index == this.currentState.nextState) { this.currentState = this.states[index]; myCurrentState.innerText = stateName; myOutput.value += ' set state ' + stateName; return; } message = this.currentState.messages[index]; myOutput.value += ' ' + message; return; } //====================================================================================== // stateTransition$parse //====================================================================================== function stateTransition$parse(sourceCode) { var i,a,record,list,name,state; this.sourceCode = sourceCode; this.states = []; list = sourceCode.split(' '); for (i=0; i < list.length; ++i) { record = list[i].trim(); if (record == '') continue; a = record.split(','); name = a[0].trim().toLowerCase(); switch (name) { case 'machine': this.machine = parse_machine.call(this,a); break; case 'state': state = parse_state.call(this,a); this.states.push(state); break; } } //-------------------------- parse_machine ------------------------- function parse_machine(a) { var machine; machine = {stateNames:[], name: a[1].trim()}; return machine; } //-------------------------- parse_state ------------------------- function parse_state(a) { var i, state, name; name = a[1].trim(); this.machine.stateNames.push(name); state = {name: name, nextState:parseInt(a[2]), messages:[] }; for (i=3; i < a.length; ++i) state.messages.push(a[i].trim()); return state; } } } //=========================================================================== // build_state_buttons //=========================================================================== function build_state_buttons() { var i,name,names,buttons; buttons = ''; names = window.myApplication.stateTransition.machine.stateNames; for (i=0; i < names.length; ++i) { buttons += ' <button onClick="window.myApplication.stateTransition.changeState(' + i + ')" style="margin-left:20px;">' + names[i] + '</button>'; } myButtons.innerHTML = buttons; } //=========================================================================== // test //=========================================================================== function test() { window.myApplication = {}; window.myApplication.stateTransition = new stateTransition$(myData.value); build_state_buttons(); } </script> </head> <body> <button onclick="test()">Test</button><div id="myCurrentState" style="font-size:18pt; width:500px;text-align:right"></div> <br><br><span id="myButtons"></span><br> <textarea id="myOutput" style="width:100%; height:900px"></textarea> <! ---------------------------- External Logic Declaration (could just be JSON, in a file, ...) ----------------------------------------------------------> <textarea id="myData" style="display:none"> machine, Coffee Machine state, Idle, 1, Idealing, Coin Inserted, ** Insert Coin, ** Insert coin, ** Insert coin state, Coin Inserted, 2, ** Ignored, ** Do not insert coin again , Coffee Selected, ** Select Coffee, ** select coffee state, Coffee Selected, 3, ** Ignored, ** Do not insert coin again , ** Coffee is begin made, Start dispensing, Coffee is ready state, Dispensing Coffee, 4, ** Ignored, ** Coffee is begin made, ** Coffee is begin made, ** still dispensing, Coffee is ready state, Coffee Ready, 0, ** Ignored, ** Coffee is begin made, ** Coffee is begin made, ** Coffee is begin made, Coffee is ready </textarea> </body></html>
@von-fur-wegen-gegenolli9196
@von-fur-wegen-gegenolli9196 4 ай бұрын
If you use long polling on a server like Apache Web Server with PHP support, you may run out of threads as the number of users increase!
@bytevigor
@bytevigor 4 ай бұрын
Agree.
@timur2887
@timur2887 4 ай бұрын
Looks like Facade)
@RavindraKumar-ys4xj
@RavindraKumar-ys4xj 4 ай бұрын
Great Tutorial!!