每月IT摘录201901
技术
1.Jsessionid只是tomcat的对sessionid的叫法,其实就是sessionid;在其它的容器也许就不叫jsessionid了。
2.在 InnoDB 中,索引使用的数据结构是 B+ Tree,这里的 B 是 Balance 的意思。B 类树的一个很鲜明的特点就是树的层数比较少,而每层的节点都非常多,树的每个叶子节点到根节点的距离都是相同的(这也是为什么叫 Balance Tree 的原因),另外,树的每一个节点都是一个数据页,这样每个节点只需要一次 IO 就可以全部读取。这样的结构保证了查询数据时能尽量少地进行磁盘 IO,同时保证 IO 的稳定性。
B+ Tree 和 B Tree 不同,B+ Tree 中,只能将数据存储在叶子结点中,内部节点将只包含指针,而 B Tree 可以将数据存储在内部的叶节点中。因此 B+ Tree 的关键优势是中间节点不包含数据,因此 B+ Tree 的大小远小于 B Tree,并且可以将更多数据存储到存储器中。另外,B+ Tree 的每一个叶子节点包含了到相邻的节点的链接,这样可以快速地进行范围遍历。
3.mysql最左前缀:
如果不是按照索引的最左列开始查找,则无法使用索引;
不能跳过联合索引中的某些列;
如果查询中有某个列的范围查询,则其右边所有列都无法使用索引优化查找;
以上几点也基本上代表常听到的“最左前缀”
4.你要尽量避免多个线程共享一个对象。
如果一定要共享这个对象,就不要定义成员变量。
如果一定要定义成员变量,就要对它的读写操作加锁。这里细说一下。
如果一个对象的成员变量有一个线程对它进行写操作,既set赋值。多个线程对它进行读操作,既get取值。就用volatile轻量级锁关键字修饰。
如果是多写多读,就请在get set方法加synchronize关键字加锁,或者用并发包下的Lock包下的显示锁加锁。
加锁有个缺点,每次getset都让你的线程多一步获取锁的操作。如果你不想对这个成员变量的读写方法加锁又要保证线程安全就请用Atomic包下的原子变量定义这个成员变量,它是用CAS无锁算法实现的。ConcurruntHashMap就用了它。
*如果你既想定义成员变量又不希望它共享给多个线程从而带来并发问题,你就用ThreadLocal定义这个成员变量,它是每个线程独立使用,各自不可见的。这种方法不是锁,本质还是要尽量避免多个线程共享一个对象。。
学习
0.成功无捷径,作为一个优秀的技术工程师,最重要的事情是一年365天,每天都不停的学习积累,坚持很多年。
吃得苦中苦,方为人上人,笔者早年进行技术积累的时候,也是这样过来的。每天晚上学习到凌晨一两点,周六周日全天学习,坚持了很多年。
只有通过几年的积累,你才能够厚积薄发,量变产生质变,菜鸟变成大牛。(作者:石杉的架构笔记)
1.☞利用SMART原则去审视你的计划
A.目标必须是具体的(Specific)
B. 目标必须是可以衡量的(Measurable)
C. 目标必须是可以达到的(Attainable)
D. 目标必须和其他目标具有相关性(Relevant)
E. 目标必须有时间节点(Time-based)
☞用PDCA去跟进它.
PDCA管理循环:将质量管理分为四个阶段,即计划(plan)、执行(do)、检查(check)、处理(Act)
2.开发者定位自己更有帮助,所以,就总结了出了下面的14个阶段:
看书,看视频,看博客,听课等等
对着书敲代码
脱离书自己敲代码
自己实现一些小DEMO
进项目看代码
在别人指点下写代码
独立在别人搭建好的框架内填写代码
独立负责别人设计好的模块的实现
独立负责一个软件模块的设计和实现
负责较大的软件模块,拆分模块,分子任务给他人
从程序设计、单一模块设计,进入软件系统架构设计的学习(书、课、人、搜)
负责一个项目的子系统或一个小项目的架构设计,拆分,分派任务
负责一个涵盖前后端、业务较复杂的项目的架构设计,拆分架构,分配角色,分派任务
做中大型软件系统的架构设计(架构师),或专注特定领域,解决疑难杂症
工作
1.去面试java,面试官不一定是搞java的,可能是c++,也可能不是做技术的。
2.在招聘高级及以上工程师的时候,一定会严格考察一项能力,系统设计能力。
因为如果你仅仅是对各种各样的技术都熟悉,有技术广度,也有一定的技术深度,实际上是不够的。如果你的系统设计能力不到位,可能导致你在开发系统的时候会乱用技术。
最常见的,比如你自己会怎样实现一个线程池?设计一个消息队列?设计一个Rpc?
你的XX技术应该用在YY场景下,结果你用到ZZ场景下,肯定是不行的。
这就是系统设计能力的重要性。
3.一个非常典型的项目经验的面试考察情景如下:面试官反复的追问项目的各个地方的技术实现细节,就想看看有没有哪个地方是有一定的技术难度的,可以体现出这个候选人的一些项目上的亮点。
但是呢,候选人说来说去,总是从业务的角度去说,就说有哪些子系统组成,分别是干什么的,如何交互的,看来看去都是系统业务的东西,就是没看到什么有技术含量的东西在项目里体现出来了。
如果出现上述的情况,那么这个候选人要拿大厂offer的概率就很低了。
因为你的项目里没看出来什么东西,没什么亮眼的地方。你看起来就跟千千万万个普通的工程师没任何区别。
4.面试谈到项目,都是选个项目,谈谈具体架构,然后,询问用到的技术栈,最后谈谈整个项目架构现在瓶颈在哪,未来可能的瓶颈在哪,怎么优化。
每月IT摘录201901的更多相关文章
- 每月IT摘录201805
摘录自互联网的前辈心得: 一.技术:0.精通一个淘汰的技术对你没有任何价值.学习的精力有限,更应该花在值得学的技术上.比如网络.操作系统.数据结构.算法1.工作要有定力,更多的应该是关心问题如何更有效 ...
- 每月IT摘录201904
技术 1.项目,相比数量,规模更重要. 毫无疑问,在实际工作中,积极参与实际工程项目是快速积累经验最好的办法. 相对于项目的数量,项目的规模更加重要.项目的规模是可以比较容易判断的.实际服务用户的数量 ...
- 每月IT摘录201903
技术 1.在开发高并发系统时,有很多手段来保护系统,如缓存.降级.限流等.缓存可以提升系统的访问速度,降级可以暂时屏蔽掉非核心业务,使得核心业务不受影响.限流的目的是通过对并发访问进行限速,一旦达到一 ...
- 每月IT摘录201812
技术 1.JVM.Java并发.NIO.网络通信,这些都是一个java工程师必须具备底层技术素养. 2.关于技术广度.消息中间件.分布式缓存.海量数据.分布式搜索.NoSQL.分布式架构.高并发.高可 ...
- 每月IT摘录201811
技术 1.打牢基础,从会使用-了解原理-了解思想一步一步来,最怕基础很弱但却以什么都用过为荣的人,这样的人我招进来也只是初级而已,工作年限再多也没有用.少林里面,有功和拳之分,如蛇拳猴拳是拳,马步功石 ...
- 每月IT摘录201810
技术 1.Redis.对于单机实例,我们采用原生主从(Master-Slave)模式实现高可用,常规模式下对外仅暴露 Master 节点.由于使用原生 Redis,所以单机实例支持所有 Redis 指 ...
- 每月IT摘录201808--201809
一.技术 海量数据的解决方案: 使用缓存: 页面静态化技术: 数据库优化: 分离数据库中活跃的数据: 批量读取和延迟修改: 读写分离: 使用NoSQL和Hadoop等技术: 分布式部署数据库: 应用服 ...
- 每月IT摘录201807
一.技术 1.专注于一个领域,横向扩展其他领域的技术.2.想得太多,做得太少. 3.想要成为一名web开发高手.必须熟悉以下内容: a.每次请求和响应的背后究竟发生了哪些步骤?客户端和服务器是如何通过 ...
- 每月IT摘录201806
一.技术 1.架构师的技术升级要点:用两个字来描述:集群,用三个字:分布式,再用多点的文字:把海量的流量和数据合理分摊到数量合适的机器上. 想明白这点,后面就能知道该学哪些了,比如流量分摊时得负载均衡 ...
随机推荐
- 《算法》第六章部分程序 part 1
▶ 书中第六章部分程序,包括在加上自己补充的代码,粒子碰撞系统及用到的粒子类 ● 粒子系统 package package01; import java.awt.Color; import edu.p ...
- 《算法》第四章部分程序 part 18
▶ 书中第四章部分程序,包括在加上自己补充的代码,在有权有向图中寻找环,Bellman - Ford 算法求最短路径,套汇算法 ● 在有权有向图中寻找环 package package01; impo ...
- <转载> maven 详解 http://www.cnblogs.com/binyue/p/4729134.html
--声明规范 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3 ...
- C#USB设备枚举Kernel32的PInvoke
using System; using System.Runtime.InteropServices; using System.Security; namespace Splash { #regio ...
- asp.net(C#)文件操作
//创建文件夹路径 string path = "\\Files\\"; //判断文件夹是否存在 if (!Directory.Exists(path)) { Direct ...
- javascript自定义简单map对象功能
这里介绍一种js创建简单map对象的方法: function Map() { //创建object对象, 并给object对象添加key和value属性 var obj1=new Object(); ...
- delphi 控制音量 静音的类
delphi 控制音量 静音的类 unit ttSound; interface uses winapi.windows, winapi.Messages; type SimpleSoundContr ...
- Django - session 会话跟踪技术
1.session简介 |session 英 /'seʃ(ə)n/ 美 /'sɛʃən/ 基于cookies开发,将值存到服务端 写session 读session Session是服务器端技术,利用 ...
- Others-大数据平台Lambda架构浅析(全量计算+增量计算)
大数据平台Lambda架构浅析(全量计算+增量计算) 2016年12月23日 22:50:53 scuter_victor 阅读数:1642 标签: spark大数据lambda 更多 个人分类: 造 ...
- docker之docker-machine用法
转自:https://www.cnblogs.com/jsonhc/p/7784466.html docker-machine 是docker官方提供的docker管理工具.通过docker-mach ...