145. linux打印前row行日志
参考:linux日志打印
- 前10行日志
head -n 10 xx.log
- 后10行日志
tail -n 10 xx.log
tail -10f xx.log
- 使用sed命令
sed -n '9,10p' xx.log #打印第9、10行
- 使用awk命令
awk 'NR==10' xx.log #打印第10行
awk 'NR>=7 && NR<=10' xx.log # 打印第7-10行
146. 数据库中文乱码问题
参考:mysql中文乱码
如果遇见插入中文乱码问题,先确定问题的产生肯定与编码方式有关,先检查数据库的编码方法,查看下数据库字符集,再查看下表的编码,最后检查下表中列的编码。检查这三个地方的编码,一般问题即可迎刃而解。
1)查看数据库编码:show variables like ‘character_set%’;
2) 查看表的数据集:show create table 表名;
3)修改字段编码方式:ALTER TABLE 表名 CHANGE 列名 列名 VARCHAR(45) CHARACTER SET UTF8 NOT NULL;
147. Spring的底层原理是什么
参考:Spring相关
148. 抽象类和接口的区别
参考:抽象类和接口区别
1)接口是行为的抽象,是一种行为的规范,接口是like a 的关系;抽象是对类的抽象,是一种模板设计,抽象类是is a 的关系。
2)接口没有构造方法,而抽象类有构造方法,其方法一般给子类使用
3)接口只有定义,不能有方法的实现,java 1.8中可以定义default方法体,而抽象类可以有定义与实现,方法可在抽象类中实现。
4)抽象体现出了继承关系,继承只能单继承。接口提现出来了实现的关系,实现可以多实现。接口强调特定功能的实现,而抽象类强调所属关系。
5)接口成员变量默认为public static final,必须赋初值,不能被修改;其所有的成员方法都是public abstract的。抽象类中成员变量默认default,可在子类中被重新定义,也可被重新赋值;抽象方法被abstract修饰,不能被private、static、synchronized和native等修饰,必须以分号结尾,不带花括号。
149. 最长回文子串
150. 数组中前k大元素
151. 有大量查询如何优化?代码方面如何优化?数据库如何优化?
152. 重载、重写、重构的区别?
153. 一个自然数n分解成若干个数相乘,求这些数的最小和
154. 一个英文句子全部逆序输出?句子中单词不变,句子逆序输出?如果多个空格怎么办
155. 在linux上创建一个文件,创建失败了可能是什么原因?
156. 在linux上运行一个二进制文件,如果结果不符合预期,怎么调试?
157. linux的读文本筛选,如果有4列,需要按照第三列降序排列,怎么实现?
158. 数据结构有哪些?关于数据结构有哪些知识点?
159. 双向链表插入节点
160. 双向链表循环的遍历如何遍历
161. 单链表如果有环,如何进行判断?
162. 青蛙跳台阶问题
163. 页面或网站打开特别慢的原因
164. Linux窗口端口被哪个进程占用
165. linux文本字符串替换
166. 请求https底层流程
167. 一个文件很大有1亿个ip地址,怎么用100M的内存找出出现次数最多的ip地址?
168. nestat各个字段含义
169. 进程状态?
170. 有哪些进程调度算法?具体说明
171. IO缓冲和非缓冲,网络IO是缓冲吗
172. 平衡二叉树的该奶奶,删除、插入、左旋和右旋操作
173. 多态运行时怎么确定虚函数?如果一个类继承了多个包含虚函数的类,如何计算类的大小?
174. 在一个文本文件中,统计“你好”这个词出现的次数
175. TCP和UDP在实际中的应用
176. 单例模式能解决说明问题,什么场景下会使用单例?实际中有哪些应用场景?
177. java有自动回收机制,那是不是不用考虑内存泄漏问题了呢?
178. 五个线程去切蛋糕,五个线程取蛋糕,会出现什么问题,如何进行优化?
179. 主线程怎么知道五个线程已经切完蛋糕了呢?什么时候去取蛋糕?
180. 堆和栈的区别?
181. 项目怎么判断时http请求?
182. 网络收发数据包的过程?
183. linux内核包含哪些模块?
参考:Linux内核
184. 服务器性能瓶颈
参考:服务器性能瓶颈
1)超过了服务器设置的网络请求最大连接数,报错:请求被拒绝403
2)服务的线程池最大线程数未设置适当,报错:连接超时(处理不过来的等待,等待时间太长超时)、请求失败(处理不过来的直接失败)
3)超过了redis最大连接数
4)接口直接访问数据库,超过了数据库最大连接数:暂停服务503
185. 线程池中线程数量怎么确定?
参考:线程池线程数量
- 线程池中线程数量主要与CPU、IO、并发等有关
- CPU密集型任务
① 要进行大量的计算,消耗CPU资源,比如计算圆周率、对视频进行高清解码等等,全靠CPU的运算能力。要最高效地利用CPU,计算密集型任务同时进行的数量应当等于CPU的核心数。
② 一般配置线程数=CPU总核心数+1 (+1是为了利用等待空闲) - IO密集型任务
① 这类任务的CPU消耗很少,任务的大部分时间都在等待IO操作完成(因为IO的速度远远低于CPU和内存的速度)。常见的大部分任务都是IO密集型任务,比如Web应用。对于IO密集型任务,任务越多,CPU效率越高(但也有限度)。
② 一般配置线程数=CPU总核心数 * 2 +1 - 小结
① 最佳线程数目 = (线程等待时间与线程CPU时间之比 + 1) CPU数目*
② 所以线程等待时间所占比例越高,需要越多线程。线程CPU时间所占比例越高,需要越少线程