暂无个人介绍
可以看下Mysql的json类型,很像Mongodb
netty,最好的了
使用Spring-boot,选择自己需要的模块,Idea里创建spring-boot项目就有引导
大型企业级互联网应用最佳语言,开发底层的,比如存储、系统软件不行
无脑MyBatis,学习成本低,稳定,后期好扩展好维护,文档多,国内大公司都用它
话题太大,不过主要步骤你要了解
1.根据你的应用类型和服务器配置设置正确的JVM参数配置
2.根据你遇到的瓶颈寻找你需要调优的点,比如接口的RT高,监控一下gc情况、线程耗时、gc策略;比如有full-gc,要关注内存使用情况,对象是否存在泄漏、jvm参数是否可以优化等
理解了引用和值的区别你就明白了
良好的学历、履历会给你加分,更重要的是你个人的能力,包含技术能力、沟通能力、思维逻辑。
要综合考虑,主要看你更新的字段是否是大字段、数据量、一次更新的量、索引的设计,不过一般来讲不会太好,网络上耗时都会比较长
一般来约通用的,变化越小的越底层,越接近业务的越高层。传统分层common---dao---service---web
ThreadLocalMap维护了线程和值的对应关系,ThreadLocalMap的key是ThreadLocal类的实例对象,value为用户的值,并不是网上大多数的例子key是线程的名字或者标识。
Thread类中有一个成员变量属于ThreadLocalMap类(一个定义在ThreadLocal类中的内部类),它是一个Map,他的key是ThreadLocal实例对象。
当为ThreadLocal类的对象set值时,首先获得当前线程的ThreadLocalMap类属性,然后以ThreadLocal类的对象为key,设定value。get值时则类似。
ThreadLocal变量的活动范围为某线程,是该线程“专有的,独自霸占”的,对该变量的所有操作均由该线程完成!也就是说,ThreadLocal 不是用来解决共享对象的多线程访问的竞争问题的,因为ThreadLocal.set() 到线程中的对象是该线程自己使用的对象,其他线程是不需要访问的,也访问不到的。当线程终止后,这些值会作为垃圾回收。
由ThreadLocal的工作原理决定了:每个线程独自拥有一个变量,并非是共享的,
redis的性能、持久化方案、单线程模式、大规模集群都是数据库较难实现的。但redis的存储结构较为简单,更适合缓存结构,数据库一般是稀缺资源,实际生产环节redis一般是担任保护数据库、加速请求角色。
无锁编程按字面最直观的理解是不使用锁的情况下实现多线程之间对变量同步和访问的一种程序设计实现方案。一个锁无关的程序能够确保它所有线程中至少有一个能够继续往下执行,而有些线程可能会被的延迟。然而在整体上,在某个时刻至少有一个线程能够执行下去。作为整体进程总是在前进的,尽管有些线程的进度可能没有其它线程进行的快。
一般来说源码都是三方提供的某种封装好的包,如jar,对应的源代码。代码比较广泛,一般会用xxx的代码
explain可以检查你的sql索引命中情况,实际上线后,最好配合监控来看下接口的RT
分布式框架命题太大,你可以先了解一下阿里云中间件,基本都是为了应用分布式服务的
用iftop之类的命令工具,查看连接到数据库服务器的来源IP,根据IP找到对应的程序。
建议你用mysql,免费且可以轻松存储这个级别的数据,目前大公司都在用
多实现一些复杂的功能,多从github之类的开源库看下别人怎么写的
随便搜一下都会有多种处理方式,但是实际业务中一般是使用redis、memcache之类的进行集中式存储,稳定性较好,代码实现的开源方案如Spring Session,也可以自己实现。