# Today I Learned

* 미루지 말기 내일의 나를 믿지 말기
* 중요한 내용은 한 번 더 다듬어서 [블로그](https://devpanpan.tistory.com)에 업로드하기
* Issue, Project 기능 적극 활용하기

***

## algorithm

* [Binary Search](/today-i-learned/algorithm/binary_search.md)
* [Brute Force Search](/today-i-learned/algorithm/brute_force_search.md)
* [DFS BFS](/today-i-learned/algorithm/dfs_bfs.md)
* [Dijkstra](/today-i-learned/algorithm/dijkstra.md)
* [Dynamic Programming](/today-i-learned/algorithm/dynamic_programming.md)
* [Floyd-Warshall](/today-i-learned/algorithm/floyd-warshall.md)
* [Greedy](/today-i-learned/algorithm/greedy.md)
* [Sort](/today-i-learned/algorithm/sort.md)

## data-structure

* [Array, List, LinkedList](/today-i-learned/data-structure/array-_list-_linkedlist.md)
* [Graph vs Tree](/today-i-learned/data-structure/graph_vs_tree.md)
* [Hash, Map, HashMap](/today-i-learned/data-structure/hash-_map-_hashmap.md)
* [Heap](/today-i-learned/data-structure/heap.md)
* [Stack Queue](/today-i-learned/data-structure/stack_queue.md)

## database

* [Database Lock](/today-i-learned/database/database_lock.md)
* [Execution Plan](/today-i-learned/database/execution_plan.md)
* [Index](/today-i-learned/database/index.md)
* [Join Algorithm](/today-i-learned/database/join_algorithm.md)
* [MySQL vs MongoDB Connection 관리 전략 비교](https://github.com/hyh1016/TIL/blob/main/database/MySQL_vs_MongoDB_Connection_관리_전략_비교.md)
* [MySQL 사용자 권한부여](/today-i-learned/database/mysql_-_.md)
* [Normalization](/today-i-learned/database/normalization.md)
* [Row Oriented vs Column Oriented](/today-i-learned/database/row_oriented_vs_column_oriented.md)
* [Transaction](/today-i-learned/database/transaction.md)
* [Transaction Isolation Level](/today-i-learned/database/transaction_isolation_level.md)
* [VARCHAR의 길이제한](/today-i-learned/database/varchar-_.md)

## design-pattern

* [Abstract Factory Pattern](/today-i-learned/design-pattern/abstract_factory_pattern.md)
* [Adapter Pattern](/today-i-learned/design-pattern/adapter_pattern.md)
* [Bridge Pattern](/today-i-learned/design-pattern/bridge_pattern.md)
* [Builder Pattern](/today-i-learned/design-pattern/builder_pattern.md)
* [Chain of Responsibility Pattern](/today-i-learned/design-pattern/chain_of_responsibility_pattern.md)
* [Class Diagram](/today-i-learned/design-pattern/class_diagram.md)
* [Command Pattern](/today-i-learned/design-pattern/command_pattern.md)
* [Composite Pattern](/today-i-learned/design-pattern/composite_pattern.md)
* [Decorator Pattern](/today-i-learned/design-pattern/decorator_pattern.md)
* [Facade Pattern](/today-i-learned/design-pattern/facade_pattern.md)
* [Factory Method Pattern](/today-i-learned/design-pattern/factory_method_pattern.md)
* [Flyweight Pattern](/today-i-learned/design-pattern/flyweight_pattern.md)
* [Iterator Pattern](/today-i-learned/design-pattern/iterator_pattern.md)
* [Mediator Pattern](/today-i-learned/design-pattern/mediator_pattern.md)
* [Memento Pattern](/today-i-learned/design-pattern/memento_pattern.md)
* [Observer Pattern](/today-i-learned/design-pattern/observer_pattern.md)
* [Prototype Pattern](/today-i-learned/design-pattern/prototype_pattern.md)
* [Proxy Pattern](/today-i-learned/design-pattern/proxy_pattern.md)
* [SOLID](/today-i-learned/design-pattern/solid.md)
* [Singleton Pattern](/today-i-learned/design-pattern/singleton_pattern.md)
* [State Pattern](/today-i-learned/design-pattern/state_pattern.md)
* [Strategy Pattern](/today-i-learned/design-pattern/strategy_pattern.md)
* [Template Method Pattern](/today-i-learned/design-pattern/template_method_pattern.md)
* [UML](/today-i-learned/design-pattern/uml.md)
* [객체지향 패러다임](/today-i-learned/design-pattern/_.md)
* [결합도와 응집도](https://github.com/hyh1016/TIL/blob/main/design-pattern/결합도와_응집도.md)

## docker

* [Docker](/today-i-learned/docker/docker.md)
* [Docker Network](/today-i-learned/docker/docker_network.md)
* [Volume vs Bind Mount](https://github.com/hyh1016/TIL/blob/main/docker/Volume_vs_Bind_Mount.md)

## etc

* [Gradle](https://github.com/hyh1016/TIL/blob/main/etc/Gradle.md)
* [Gradle daemon](https://github.com/hyh1016/TIL/blob/main/etc/Gradle_daemon.md)
* [block-vs-non-block-sync-vs-async](/today-i-learned/etc/block-vs-non-block-sync-vs-async.md)

## git

* [Git Merge vs Git Rebase](/today-i-learned/git/git_merge_vs_git_rebase.md)
* [Interactive Rebase](https://github.com/hyh1016/TIL/blob/main/git/Interactive_Rebase.md)
* [자주 사용하는 Git 명령어 모음](/today-i-learned/git/_-_git_-_.md)

## java

* [Annotation](/today-i-learned/java/annotation.md)
* [Call method by reflection](https://github.com/hyh1016/TIL/blob/main/java/Call_method_by_reflection.md)
* [Exception Handling](/today-i-learned/java/exception_handling.md)
* [Generic](/today-i-learned/java/generic.md)
* [Generic wildcard를 이용한 extends super 사용 시 주의할 점](https://github.com/hyh1016/TIL/blob/main/java/Generic_wildcard를_이용한_extends_super_사용_시_주의할_점.md)
* [Graceful shutdown](https://github.com/hyh1016/TIL/blob/main/java/Graceful_shutdown.md)
* [JVM](/today-i-learned/java/jvm.md)
* [Java21 Improvement Record, Switch](https://github.com/hyh1016/TIL/blob/main/java/Java21_Improvement_Record,_Switch.md)
* [Java21 Sequenced Collections](https://github.com/hyh1016/TIL/blob/main/java/Java21_Sequenced_Collections.md)
* [Java21 Virtual Thread](https://github.com/hyh1016/TIL/blob/main/java/Java21_Virtual_Thread.md)
* [Java 코드의 실행 과정](/today-i-learned/java/java_-_-_.md)
* [Lambda Expression](/today-i-learned/java/lambda_expression.md)
* [Object Class](/today-i-learned/java/object_class.md)
* [Optional](/today-i-learned/java/optional.md)
* [Primitive Type & Reference Type](/today-i-learned/java/primitive_type_and_reference_type.md)
* [ReentrantLock](https://github.com/hyh1016/TIL/blob/main/java/ReentrantLock.md)
* [Reflection](/today-i-learned/java/reflection.md)
* [Serialize And Deserialize](/today-i-learned/java/serialize_and_deserialize.md)
* [Statement vs Prepared Statement](https://github.com/hyh1016/TIL/blob/main/java/Statement_vs_Prepared_Statement.md)
* [Stream](/today-i-learned/java/stream.md)
* [String, StringBuilder, StringBuffer](/today-i-learned/java/string-_stringbuilder-_stringbuffer.md)
* [Thread-safe Collection](https://github.com/hyh1016/TIL/blob/main/java/Thread-safe_Collection.md)
* [Tiles](/today-i-learned/java/tiles.md)
* [Type Casting](/today-i-learned/java/type_casting.md)
* [Why is sort() a static method](/today-i-learned/java/why_is_sort-_a_static_method.md)
* [map vs flatMap](https://github.com/hyh1016/TIL/blob/main/java/map_vs_flatMap.md)
* [tomcat architecture](https://github.com/hyh1016/TIL/blob/main/java/tomcat_architecture.md)
* [추상클래스와 인터페이스의 차이](/today-i-learned/java/_-_.md)

### effective-java

* [Item 1. static factory method](/today-i-learned/java/effective-java/item_1._static_factory_method.md)
* [Item 10. override equals](/today-i-learned/java/effective-java/item_10._override_equals.md)
* [Item 11. override hashCode](/today-i-learned/java/effective-java/item_11._override_hashcode.md)
* [Item 12. override toString](/today-i-learned/java/effective-java/item_12._override_tostring.md)
* [Item 13. override clone](/today-i-learned/java/effective-java/item_13._override_clone.md)
* [Item 14. implement comparable](/today-i-learned/java/effective-java/item_14._implement_comparable.md)
* [Item 15. field access modifier](/today-i-learned/java/effective-java/item_15._field_access_modifier.md)
* [Item 16. get method](/today-i-learned/java/effective-java/item_16._get_method.md)
* [Item 17. minimize mutability](/today-i-learned/java/effective-java/item_17._minimize_mutability.md)
* [Item 18. use composition instead extend](/today-i-learned/java/effective-java/item_18._use_composition_instead_extend.md)
* [Item 19. prepare docs if extend](/today-i-learned/java/effective-java/item_19._prepare_docs_if_extend.md)
* [Item 2. builder pattern](/today-i-learned/java/effective-java/item_2._builder_pattern.md)
* [Item 20. abstract class vs interface](/today-i-learned/java/effective-java/item_20._abstract_class_vs_interface.md)
* [Item 21. interface default method](/today-i-learned/java/effective-java/item_21._interface_default_method.md)
* [Item 22. use interface only type](/today-i-learned/java/effective-java/item_22._use_interface_only_type.md)
* [Item 23. use class hierarchy](/today-i-learned/java/effective-java/item_23._use_class_hierarchy.md)
* [Item 24. member class](/today-i-learned/java/effective-java/item_24._member_class.md)
* [Item 25. only one top level class](/today-i-learned/java/effective-java/item_25._only_one_top_level_class.md)
* [Item 26. don't use raw type](/today-i-learned/java/effective-java/item_26._dont_use_raw_type.md)
* [Item 27. remove unchecked warning](/today-i-learned/java/effective-java/item_27._remove_unchecked_warning.md)
* [Item 28. replace array with list](/today-i-learned/java/effective-java/item_28._replace_array_with_list.md)
* [Item 29. use generic type](/today-i-learned/java/effective-java/item_29._use_generic_type.md)
* [Item 3. singleton](/today-i-learned/java/effective-java/item_3._singleton.md)
* [Item 30. use generic method](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_30._use_generic_method.md)
* [Item 31. use wildcard type](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_31._use_wildcard_type.md)
* [Item 32. varargs with generic](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_32._varargs_with_generic.md)
* [Item 33. type safe heterogeneous container](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_33._type_safe_heterogeneous_container.md)
* [Item 34. enum type](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_34._enum_type.md)
* [Item 35. don't use enum ordinal](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_35._don%27t_use_enum_ordinal.md)
* [Item 36. EnumSet](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_36._EnumSet.md)
* [Item 37. EnumMap](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_37._EnumMap.md)
* [Item 38. use interface for extend enum](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_38._use_interface_for_extend_enum.md)
* [Item 39. annotation](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_39._annotation.md)
* [Item 4. private constructor](/today-i-learned/java/effective-java/item_4._private_constructor.md)
* [Item 40. @Override](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_40._@Override.md)
* [Item 41. marker interface](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_41._marker_interface.md)
* [Item 42. replace anonymous class with lambda](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_42._replace_anonymous_class_with_lambda.md)
* [Item 43. method reference](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_43._method_reference.md)
* [Item 44. default functional interface](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_44._default_functional_interface.md)
* [Item 45. stream](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_45._stream.md)
* [Item 46. collector](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_46._collector.md)
* [Item 47. return collection](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_47._return_collection.md)
* [Item 48. stream parallel](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_48._stream_parallel.md)
* [Item 49. validate parameter](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_49._validate_parameter.md)
* [Item 5. dependency injection](/today-i-learned/java/effective-java/item_5._dependency_injection.md)
* [Item 50. make defensive copies](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_50._make_defensive_copies.md)
* [Item 51. design method signatures carefully](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_51._design_method_signatures_carefully.md)
* [Item 52. use overloading judiciously](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_52._use_overloading_judiciously.md)
* [Item 53. varargs](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_53._varargs.md)
* [Item 54. return array or collections instead of null](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_54._return_array_or_collections_instead_of_null.md)
* [Item 54. use optional judiciously](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_54._use_optional_judiciously.md)
* [Item 55. return optional judiciously](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_55._return_optional_judiciously.md)
* [Item 56. write javadoc](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_56._write_javadoc.md)
* [Item 57. minimize scope of local variable](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_57._minimize_scope_of_local_variable.md)
* [Item 58. for-each](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_58._for-each.md)
* [Item 59. use library](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_59._use_library.md)
* [Item 6. reuse instance](/today-i-learned/java/effective-java/item_6._reuse_instance.md)
* [Item 60. if you need accurate answer, avoid float and double](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_60._if_you_need_accurate_answer,_avoid_float_and_double.md)
* [Item 61. use primitive type instead of wrapper](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_61._use_primitive_type_instead_of_wrapper.md)
* [Item 62. avoid string](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_62._avoid_string.md)
* [Item 63. avoid concat string](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_63._avoid_concat_string.md)
* [Item 64. refer interface](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_64._refer_interface.md)
* [Item 65. reflection](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_65._reflection.md)
* [Item 66. avoid using native method](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_66._avoid_using_native_method.md)
* [Item 67. optimize judiciously](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_67._optimize_judiciously.md)
* [Item 68. naming convention](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_68._naming_convention.md)
* [Item 69. use exceptions only for exceptional conditions](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_69._use_exceptions_only_for_exceptional_conditions.md)
* [Item 7. eliminate unused reference](/today-i-learned/java/effective-java/item_7._eliminate_unused_reference.md)
* [Item 70. checked, unchecked exception](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_70._checked,_unchecked_exception.md)
* [Item 71. avoid using unnecessary checked exceptions](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_71._avoid_using_unnecessary_checked_exceptions.md)
* [Item 72. use default exception](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_72._use_default_exception.md)
* [Item 73. translate low level exception](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_73._translate_low_level_exception.md)
* [Item 74. documentation exceptions thrown by method](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_74._documentation_exceptions_thrown_by_method.md)
* [Item 75. include failure capture information in detail messages](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_75._include_failure_capture_information_in_detail_messages.md)
* [Item 76. strive for failure atomicity](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_76._strive_for_failure_atomicity.md)
* [Item 77. don't ignore exceptions](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_77._don%27t_ignore_exceptions.md)
* [Item 78. synchronize access to shared mutable data](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_78._synchronize_access_to_shared_mutable_data.md)
* [Item 79. avoid excessive synchronization](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_79._avoid_excessive_synchronization.md)
* [Item 8. avoid using finalizer, cleaner](/today-i-learned/java/effective-java/item_8._avoid_using_finalizer-_cleaner.md)
* [Item 80. prefer executors, tasks, and stream to threads](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_80._prefer_executors,_tasks,_and_stream_to_threads.md)
* [Item 81. prefer concurrency utilities to wait and notify](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_81._prefer_concurrency_utilities_to_wait_and_notify.md)
* [Item 82. document thread safety](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_82._document_thread_safety.md)
* [Item 83. use lazy initialization judiciously](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_83._use_lazy_initialization_judiciously.md)
* [Item 84. don't depend on the thread scheduler](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_84._don%27t_depend_on_the_thread_scheduler.md)
* [Item 85. prefer alternatives to java serialization](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_85._prefer_alternatives_to_java_serialization.md)
* [Item 86. implement serializable with great caution](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_86._implement_serializable_with_great_caution.md)
* [Item 87. consider using a custom serialized form](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_87._consider_using_a_custom_serialized_form.md)
* [Item 88. write readObject methods defensively](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_88._write_readObject_methods_defensively.md)
* [Item 89. for instance control, prefer enum types to readResolve](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_89._for_instance_control,_prefer_enum_types_to_readResolve.md)
* [Item 9. try-with-resources](/today-i-learned/java/effective-java/item_9._try-with-resources.md)
* [Item 90. consider serialization proxies instead of serialized instances](https://github.com/hyh1016/TIL/blob/main/java/effective-java/Item_90._consider_serialization_proxies_instead_of_serialized_instances.md)

### jpa

* [@DynamicInsert, @DynamicUpdate](https://github.com/hyh1016/TIL/blob/main/java/jpa/@DynamicInsert,_@DynamicUpdate.md)
* [Entity Manager](https://github.com/hyh1016/TIL/blob/main/java/jpa/Entity_Manager.md)
* [Find by EntityManager vs JPQL select query](https://github.com/hyh1016/TIL/blob/main/java/jpa/Find_by_EntityManager_vs_JPQL_select_query.md)
* [JPA](https://github.com/hyh1016/TIL/blob/main/java/jpa/JPA.md)
* [JPA Cascade](https://github.com/hyh1016/TIL/blob/main/java/jpa/JPA_Cascade.md)
* [JPA Entity Equality](https://github.com/hyh1016/TIL/blob/main/java/jpa/JPA_Entity_Equality.md)
* [JPA Entity LifeCycle](https://github.com/hyh1016/TIL/blob/main/java/jpa/JPA_Entity_LifeCycle.md)
* [JPA Entity Lifecycle Event](https://github.com/hyh1016/TIL/blob/main/java/jpa/JPA_Entity_Lifecycle_Event.md)
* [JPA bulk update](https://github.com/hyh1016/TIL/blob/main/java/jpa/JPA_bulk_update.md)
* [Lock](https://github.com/hyh1016/TIL/blob/main/java/jpa/Lock.md)
* [Open Session In View](https://github.com/hyh1016/TIL/blob/main/java/jpa/Open_Session_In_View.md)
* [save() vs saveAndFlush()](https://github.com/hyh1016/TIL/blob/main/java/jpa/save\(\)_vs_saveAndFlush\(\).md)

### junit

* [Argument Matcher, Argument Captor](https://github.com/hyh1016/TIL/blob/main/java/junit/Argument_Matcher,_Argument_Captor.md)
* [JUnit 4의 @Test 메서드는 public 이어야 했는데, JUnit 5 부터는 public이 아니어도 되는 이유](https://github.com/hyh1016/TIL/blob/main/java/junit/JUnit_4의_@Test_메서드는_public_이어야_했는데,_JUnit_5_부터는_public이_아니어도_되는_이유.md)

### querydsl

* [Projection](https://github.com/hyh1016/TIL/blob/main/java/querydsl/Projection.md)
* [QueryDSL Setup](https://github.com/hyh1016/TIL/blob/main/java/querydsl/QueryDSL_Setup.md)
* [\[우이콘2020\] 수십억건에서 Querydsl 사용하기](https://github.com/hyh1016/TIL/blob/main/java/querydsl/\[우이콘2020]_수십억건에서_Querydsl_사용하기.md)

## kubernetes

* [쿠버네티스를 왜 쓰는가](https://github.com/hyh1016/TIL/blob/main/kubernetes/쿠버네티스를_왜_쓰는가.md)

## linux

* [Linux의 Permission](/today-i-learned/linux/linux-_permission.md)
* [kill](https://github.com/hyh1016/TIL/blob/main/linux/kill.md)

## mongodb

* [MongoDB CSFLE](https://github.com/hyh1016/TIL/blob/main/mongodb/MongoDB_CSFLE.md)
* [MongoDB ObjectId](https://github.com/hyh1016/TIL/blob/main/mongodb/MongoDB_ObjectId.md)
* [MongoDB Read Write Concern](https://github.com/hyh1016/TIL/blob/main/mongodb/MongoDB_Read_Write_Concern.md)
* [MongoDB Transaction](https://github.com/hyh1016/TIL/blob/main/mongodb/MongoDB_Transaction.md)
* [MongoDB WiredTiger](https://github.com/hyh1016/TIL/blob/main/mongodb/MongoDB_WiredTiger.md)
* [MongoDB 복제, 합의, 샤딩](https://github.com/hyh1016/TIL/blob/main/mongodb/MongoDB_복제,_합의,_샤딩.md)
* [MongoDB 운영 지표](https://github.com/hyh1016/TIL/blob/main/mongodb/MongoDB_운영_지표.md)

## network

* [CIDR](https://github.com/hyh1016/TIL/blob/main/network/CIDR.md)
* [Forward Proxy vs Reverse Proxy](https://github.com/hyh1016/TIL/blob/main/network/Forward_Proxy_vs_Reverse_Proxy.md)
* [Forward vs Redirect](https://github.com/hyh1016/TIL/blob/main/network/Forward_vs_Redirect.md)
* [HTTP의 진화와 버전별 특징](https://github.com/hyh1016/TIL/blob/main/network/HTTP의_진화와_버전별_특징.md)
* [L4 vs L7 Load balancer](https://github.com/hyh1016/TIL/blob/main/network/L4_vs_L7_Load_balancer.md)
* [OSI 7 Layer](/today-i-learned/network/osi_7_layer.md)
* [SSL, TLS](https://github.com/hyh1016/TIL/blob/main/network/SSL,_TLS.md)
* [Subnet](/today-i-learned/network/subnet.md)
* [그림으로 배우는 http & network basic](/today-i-learned/network/_-_http_and_network_basic.md)

## operating-system

* [Block vs Non-block, Sync vs Async](https://github.com/hyh1016/TIL/blob/main/operating-system/Block_vs_Non-block,_Sync_vs_Async.md)

## python

* [Python의 재귀제한](/today-i-learned/python/python-_.md)

## redis

* [Redis Cluster](https://github.com/hyh1016/TIL/blob/main/redis/Redis_Cluster.md)
* [Redis Sentinel](https://github.com/hyh1016/TIL/blob/main/redis/Redis_Sentinel.md)
* [Redis 자료구조 종류와 시간 복잡도](https://github.com/hyh1016/TIL/blob/main/redis/Redis_자료구조_종류와_시간_복잡도.md)
* [Redis를 활용한 읽기 쓰기 성능 최적화](https://github.com/hyh1016/TIL/blob/main/redis/Redis를_활용한_읽기_쓰기_성능_최적화.md)
* [Redis의 Atomicity - Transaction, Lua Script, Lock](https://github.com/hyh1016/TIL/blob/main/redis/Redis의_Atomicity_-_Transaction,_Lua_Script,_Lock.md)
* [Redis의 기본 구조와 동작 방식](https://github.com/hyh1016/TIL/blob/main/redis/Redis의_기본_구조와_동작_방식.md)
* [Redis의 영속화, AOF와 RDB](https://github.com/hyh1016/TIL/blob/main/redis/Redis의_영속화,_AOF와_RDB.md)

## server

* [CI\&CD](/today-i-learned/server/ci-and-cd.md)
* [Cache](/today-i-learned/server/cache.md)
* [Cloud Service](/today-i-learned/server/cloud_service.md)
* [Rate Limiter](https://github.com/hyh1016/TIL/blob/main/server/Rate_Limiter.md)
* [정적 서버와 동적 서버](/today-i-learned/server/_-_-_.md)
* [트래픽 증가에 따른 점진적 설계 확장](https://github.com/hyh1016/TIL/blob/main/server/트래픽_증가에_따른_점진적_설계_확장.md)

## spring

* [@Async](https://github.com/hyh1016/TIL/blob/main/spring/@Async.md)
* [@Configuration](/today-i-learned/spring/configuration.md)
* [@RequestParam @RequestBody @ModelAttribute](/today-i-learned/spring/requestparam_-requestbody_-modelattribute.md)
* [AOP](/today-i-learned/spring/aop.md)
* [Autowired](/today-i-learned/spring/autowired.md)
* [Bean Scope](/today-i-learned/spring/bean_scope.md)
* [Bean could not be injected because it is a JDK dynamic proxy](/today-i-learned/spring/bean_could_not_be_injected_because_it_is_a_jdk_dynamic_proxy.md)
* [Component Scan](/today-i-learned/spring/component_scan.md)
* [Component vs Bean](/today-i-learned/spring/component_vs_bean.md)
* [Configuration 분리](/today-i-learned/spring/configuration_.md)
* [DI](/today-i-learned/spring/di.md)
* [Embedded tomcat](https://github.com/hyh1016/TIL/blob/main/spring/Embedded_tomcat.md)
* [Filter, Interceptor, Spring AOP](/today-i-learned/spring/filter-_interceptor-_spring_aop.md)
* [IoC Container](/today-i-learned/spring/ioc_container.md)
* [Nested Class의 Bean 등록](/today-i-learned/spring/nested_class-_bean_.md)
* [Profile](/today-i-learned/spring/profile.md)
* [Properties](/today-i-learned/spring/properties.md)
* [Servlet container vs Spring container](https://github.com/hyh1016/TIL/blob/main/spring/Servlet_container_vs_Spring_container.md)
* [Spring Bean Life Cycle](/today-i-learned/spring/spring_bean_life_cycle.md)
* [Spring Event](https://github.com/hyh1016/TIL/blob/main/spring/Spring_Event.md)
* [Spring vs SpringBoot](/today-i-learned/spring/spring_vs_springboot.md)
* [Thymeleaf](/today-i-learned/spring/thymeleaf.md)

### jpa

* [Dirty Checking](/today-i-learned/spring/jpa/dirty_checking.md)
* [JPA Fetch 전략](/today-i-learned/spring/jpa/jpa_fetch_.md)
* [JPA N+1 Problem](/today-i-learned/spring/jpa/jpa_n+1_problem.md)

### spring-boot

* [Spring Web Layer](/today-i-learned/spring/spring-boot/spring_web_layer.md)
* [spring-boot](/today-i-learned/spring/spring-boot/spring-boot.md)

### spring-mvc

* [Argument Resolver](/today-i-learned/spring/spring-mvc/argument_resolver.md)
* [Filter](/today-i-learned/spring/spring-mvc/filter.md)
* [Filter vs OncePerRequestFilter](https://github.com/hyh1016/TIL/blob/main/spring/spring-mvc/Filter_vs_OncePerRequestFilter.md)
* [Interceptor](/today-i-learned/spring/spring-mvc/interceptor.md)
* [RestController](/today-i-learned/spring/spring-mvc/restcontroller.md)
* [Validator](/today-i-learned/spring/spring-mvc/validator.md)
* [exception-handling](/today-i-learned/spring/spring-mvc/exception-handling.md)
* [spring-mvc](/today-i-learned/spring/spring-mvc/spring-mvc.md)

### spring-security

* [Spring Security](/today-i-learned/spring/spring-security/spring_security.md)

## testing

* [Test Double](/today-i-learned/testing/test_double.md)
* [White Box, Black Box](/today-i-learned/testing/white_box-_black_box.md)

## web

* [API](https://github.com/hyh1016/TIL/blob/main/web/API.md)
* [Browser Caching](/today-i-learned/web/browser_caching.md)
* [CORS](/today-i-learned/web/cors.md)
* [HTTP Header](/today-i-learned/web/http_header.md)
* [HTTP와 HTTPS](/today-i-learned/web/http-_https.md)
* [OAuth](/today-i-learned/web/oauth.md)
* [PRG Pattern](/today-i-learned/web/prg_pattern.md)
* [Query Parameter & Path Variable](/today-i-learned/web/query_parameter_and_path_variable.md)
* [REST](https://github.com/hyh1016/TIL/blob/main/web/REST.md)
* [Status Code](/today-i-learned/web/status_code.md)
* [WebSocket](/today-i-learned/web/websocket.md)
* [application octet stream](/today-i-learned/web/application_octet_stream.md)
* [cookie-session](/today-i-learned/web/cookie-session.md)
* [jwt](/today-i-learned/web/jwt.md)
* [multipart form data](/today-i-learned/web/multipart_form_data.md)

### images

* [jwt-flow](https://github.com/hyh1016/TIL/blob/main/web/images/jwt-flow.png)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://yihyuns-gitbook.gitbook.io/today-i-learned/readme.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
