socket编程 网络编程三要素:IP、端口号、协议 每个程序在设备上的唯一标识 每个网络程序都需要绑定一个端口号,传输数据的时候除了确定发到哪台机器上,还要明确发到哪个程序。 端口号范围从0-65535 编写网络应用就需要绑定一个端口号,尽量使用1024以上的,1024以下的基本上都被系统程序占用了。 常用端口 mysql: 3306、oracle: 1521、web: 80、tomcat: 8080、QQ: 4000、feiQ: 2425...
nginx配置文件结构 核心配置文件的结构##代码块中的events、http、server、location、upstream等都是块配置项###规定哪些用户使用,nobody的话就是所有人#user nobody; ##Nginx worker进程个数:其数量直接影响性能。#每个worker进程都是单线程的进程,他们会调用各个模块以实现多种多样的功能。如果这些模块不会出现阻塞式的调用,那么,有多少CPU内核就应该配置多少个进程,反之,有可能出现阻塞式调用,那么,需要配置稍多一些的worker进程。.
一口气说出 6种,@Transactional注解的失效场景 引言@Transactional 注解相信大家并不陌生,平时开发中很常用的一个注解,它能保证方法内多个数据库操作要么同时成功、要么同时失败。使用@Transactional注解时需要注意许多的细节,不然你会发现@Transactional总是莫名其妙的就失效了。一、事务事务管理在系统开发中是不可缺少的一部分,Spring提供了很好事务管理机制,主要分为编程式事务和声明式事务两种。1. 编程式事务:是指在代码中手动的管理事务的提交、回滚等操作,代码侵入性比较强,如下示例:try {
ssm框架整合、spring配置文件结构 一直记不清ssm框架整合具体配置文件的结构和层次关系,这不利于实际开发中排查问题,特此复习记录一下。ssm框架实际上是由Spring MVC(servlet)处理这个web工程的请求响应,负责实现 MVC 设计模式;MyBatis 负责数据持久层,处理web工程于数据库之间的连接;Spring 负责管理 Spring MVC 和MyBatis 相关对象的创建和依赖注入。1、创建maven工程,由maven来管理我们工程需要的各种jar包,可以选择webapp的模板...
HTTP、TCP、Socket、Servlet OSI七层模型 7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP 6 表示层 例如XDR、ASN.1、SMB、AFP、NCP 5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets 4 传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL 3
git常用命令: 四个区域:工作区-->暂存区-->本地仓库-->远程仓库git init; 安装完git以后初始化一下,创建仓库;初始化在另一篇里面有git status; 查看当前仓库信息,被修改的文件显示红色;git add; 把文件加入暂存区;如果想把当前目录中所有文件都加入暂存区,使用"git add.",会把文件从红色变成绿色;git commmit -m <message>;提交暂存区的文件,-m是指加上后面的描述<messa...
MySQL索引下推(ICP)的简单理解与示例 前言索引下推(Index Condition Pushdown, 简称ICP)是MySQL 5.6 版本的新特性,它能减少回表查询次数,提升检索效率。MySQL体系结构要明白索引下推,首先要了解MySQL的体系结构:上图来自MySQL官方文档。通常把MySQL从上至下分为以下几层:MySQL服务层:包括NoSQL和SQL接口、查询解析器、优化器、缓存和Buffer等组件。 存储引擎层:各种插件式的表格存储引擎,实现事务、索引等各种存储引擎相关的特...
spring循环依赖及如何解决的 什么是循环依赖?假设现在有一个对象A里面有一个属性Class B,同样的Class B对象中有一个Class A 的对象属性,那么这两个对象能相互创建成功吗?可能一般的普通代码来说肯定是可以实现Aa=newA()Bb=newB()a.setB(b)b.setA(a)看过之前讲的IOC的同学应该知道Spring官方是推荐使用构造器注入的,所以如果是通过构造器注入那就会产生一个无限循环注入的问题了,如下图所示,永远出来不?Aa=newA(new...
线程的生命周期及一个易出错的问题 首先来看一个demo,看似很普通但运行却报错,自己看可以发现他在开启一个线程以后又在run()中启动了start(),错误原因就在此。 处于running状态的线程是无法再次进入running的。查看start()源码也不难看出,当status不等于0时,就会抛出异常,也就是说只有处于新建状态才可以调用start(),然后进入runnable。线程的生命周期分为五个:新建、就绪、运行、阻塞、销毁。新建:就是刚使用new方法,new出来的线程; ...
多级缓存架构体系介绍 整理自b站:【IT老齐004】为什么架构师对多级缓存架构情有独钟?1、web应用的客户端缓存主要是对html中图片、css、js、字体等静态资源进行缓存。具体:通过在浏览器设置Expires响应头,在设置的时间段内把静态资源以文件形式把图片保存在本地,减少多次请求静态资源带来的带宽损耗。这在高并发的应用中是基础而重要的设置。2、应用层的静态资源缓存上面提到的客户端缓存部分,浏览器只负责读取Expires。Expires需要在CD...
mybatis知识点总结 参考JavaGuide面试突击里面的mybatis部分目录1、mybatis原理 / 核心流程2、Dao接口的工作原理是什么?Dao 接口里的方法,参数不同时能重载吗?3、Mybatis是如何将 sql 执行结果封装为目标对象并返回的?都有哪些映射形式?4、Mybatis 能执行⼀对⼀、⼀对多的关联查询吗?都有哪些实现方式,以及它们之间的区别。5、mybatis延迟加载怎么做的?原理是什么?6、Mybatis 都有哪些 Executor 执行器?它们之间的区别是什么?7、My
Spring知识点整理 1、IOC定义:IOC控制反转就是把原本在程序中手动创建对象的控制权交给spring,由spring容器来实现这些相互依赖的对象的创建、协调工作。IoC 容器是Spring ⽤来实现 IoC 的载体, IoC 容器实际上就是个Map(key,value),Map 中存放的是各种对象。IOC初始化过程:Resource从xml配置文件中读取配置; BeanDefinition解析配置; IOC容器注册这些BeanDefin...
多线程知识整理 参考资料:【纯干货】Java 并发进阶常见面试题总结volatilesychronizedsychronized主要是通过获取对象锁的方式解决多个线程之间访问资源的同步性。1、synchronized关键字最主要的三种使用方式: 给代码块或者实例方法加锁: 比如 Synchronized(变量名)、Synchronized(this) 、实例方法等,说明加解锁对象为该对象。 //修饰代码块public class SynchronizedDemo { public
图解Java中那18 把锁 乐观锁和悲观锁 独占锁和共享锁 互斥锁和读写锁 公平锁和非公平锁 可重入锁 自旋锁 分段锁 锁升级(无锁|偏向锁|轻量级锁|重量级锁) 锁优化技术(锁粗化、锁消除) 乐观锁和悲观锁悲观锁悲观锁对应于生活中悲观的人,悲观的人总是想着事情往坏的方向发展。举个生活中的例子,假设厕所只有一个坑位了,悲观锁上厕所会第一时间把门反锁上,这样其他人上厕所只能在门外等候,这种状态就是「阻塞」了。回到代码世界中,一个共..
zookeeper、zk分布式锁、redis分布式锁 面试官跟你聊完了 dubbo 相关的一些问题之后,已经确认你对分布式服务框架/RPC框架基本都有一些认知。那么他可能开始要跟你聊分布式相关的其它问题了。分布式锁这个东西,做 Java 系统开发,分布式系统,可能会有一些场景会用到。最常用的分布式锁就是基于 zookeeper 来实现的。1、zookeeper 常用的使用场景:分布式协调分布式锁元数据/配置信息管理HA高可用性①分布式协调这个其实是 zookeeper 很经典的一个用法,简单来说,就好比,你...
事务相关知识、分布式事务及常见解决方案 事务的四大特性、隔离级别、并发带来的几个问题看这里1、分布式事务只要聊到你做了分布式系统,必问分布式事务,你对分布式事务一无所知的话,确实会很坑,你起码得知道有哪些方案,一般怎么来做,每个方案的优缺点是什么。分布式事务的实现主要有以下 6 种方案:XA 方案TCC 方案SAGA 方案本地消息表可靠消息最终一致性方案最大努力通知方案①两阶段提交方案/XA 方案...
dubbo服务暴露、引入、调用过程 dubbo基础看这里,本文参考敖丙的dubbo-扬帆起航.pdfservice:业务层,主要是我们开发的业务逻辑;config:配置信息;proxy:服务提供者/消费者都会生成一个代理类,由代理进行远程调用和返回结果;register:注册层,封装了服务注册与发现;cluster:路由层,负责具体调用的节点以及调用失败的容错;monitor:监控层,监控调用次数;protocol:远程调用层,封装rpc调用;exchange:封装响应模型;transport:网络传输
Redis进阶:单线程模型、过期策略、高可用、哨兵、cluster、双写一致性、并发竞争、分布式锁 1、首先redis是单线程的,为什么redis会是单线程的呢?从redis的性能上进行考虑,单线程避免了上下文频繁切换问题,效率高; 从redis的内部结构设计原理进行考虑,redis是基于Reactor模式开发了自己的网络事件处理器: 这个处理器被称为文件事件处理器(file event handler)。而这个文件事件处理器是单线程的,所以才叫redis的单线程模型,这也决定了redis是单线程的。2、聊一聊redis的单线程模型构造部分?redis单线程模型中最为核心的就是文件事件处理器
linux常用命令 ps -ef |grep java 查找java进程 kill -9 进程pid 杀死进程tail -f xx日志.log 实时查看日志 tail -100 a.txt #读取尾部100行 tail -100 a.txt | grep abc #读取尾部100行中带abc关键字的行view a.txt 查看a.txt文件 cat a.txt 短文本查看grep -C 10 “关键词” xx日志.log 查看关键词前后1......