git clone拉取项目报错Filename too long warning:Clone succeeded,but checkout failed git clone拉取项目中有文件名过大,导致拉取项目中断,文件拉取不完全的情况。
Java-nio clear只是对position、limit、mark进行重置,而compact在对position进行设置,以及limit、mark进行重置的同时,还涉及到数据在内存中拷贝(会调用arraycopy)。若事件未就绪,调用 selector 的 select() 方法会阻塞线程,直到 channel 发生了就绪事件。使用的是直接内存, 读写效率高(少一次拷贝),不会受GC影响,但是分配的效率低(因为需要调用系统的分配内存相关接口),而且使用不当会造成内存泄漏。使用线程池,让线程池中的线程去处理连接。
spring boot零配置 在ServletWebServerFactoryConfiguration这个配置类中,已经将tomcat,jetty和undertow三个服务器对应的配置都写入了进去,具体是否要解析这个Bean是通过项目中是否能正常加载@ConditionalOnClass这个注解里的类来决定的。
SpringMvc请求原理流程 springmvc为了解决这个问题就创造了一个父容器的概念,在springmvc官方提供的配置文件中就有一个属性 该属性就是定义的父容器,tomcat在读取web.xml文件时,首先读取的就是和来创建父容器。现在如果在配置文件中声明了两个servlet,并且对应的spring配置文件配置了不同的bean,但是扫描的bean路径都相同的话,就会出现两个DispatcherServlet容器里会有一部分重复的bean。
spring为什么要使用三级缓存来解决循环依赖 如果三级缓存不是使用lambda的形式,没有存入普通对象和BeanDefinition,只存了普通实例对象的话,如果该普通对象初始化后需要进行aop(需要aop就需要代理操作,进行代理操作就会产生代理对象,那么就会发生不是同一个对象的情况)操作的话又会出现问题,相似的如果存入的都是代理的对象不仅浪费极大的性能,而且bean对象也不都是需要进行aop操作的,又会出现不是同一个对象的情况。2.填充bService属性--->去单例池中找BService对象--->创建BService的Bean对象。
SpringBean生命周期 SpringBean的创建过程的生命周期可以分为通过构造方法创建普通对象对普通对象属性进行依赖注入(被@Autowired注解修饰的变量)执行初始化前的操作(被@PostConstruct注解修饰的方法)执行初始化操作(需要实现InitializingBean接口,重写afterPropertiesSet()方法)初始化后操作(AOP切面生成代理对象)将代理对象或者普通对象(有aop操作则放入代理对象,否则放入普通对象)放入单例池中(Map)
Linux设置ssh免密登录 密钥目录位置, 默认为当前用户home路径下的.ssh隐藏目录, 也就是~/.ssh/, 同时默认密钥文件名以id_rsa开头. 如果是root用户, 则在/root/.ssh/id_rsa, 若为其他用户, 则在/home/username/.ssh/id_rsa;注意: 密钥的文件名称必须是id_xxx, 这里的xxx就是-t参数指定的密钥类型. 比如密钥类型是rsa, 那么密钥文件名就必须是id_rsa.(不指定的话 直接回车,系统创建文件默认就是按照这个规则创建)(本例就是使用rsa加密类型)
zookeeper本地部署和集群搭建 zookeeper(动物园管理员)是一个广泛应用于分布式服务提供协调服务Apache的开源框架Zookeeper从设计模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然 后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。
windows 修改hosts映射,可以ping通,但是无法通过http url 路径访问,出现 500 Internal Privoxy Error 修改hosts映射,可以ping通,但是无法通过http url 路径访问,出现 500 Internal Privoxy Error
MySQL-优化LIMIT和OFFSET子句 优化此类分页查询的一个最简单的办法就是尽可能地使用索引覆盖扫描,而不是查询所有的行。在偏移量很大的时候,这样做的效率会有非常大的提升。如果所有的页面被访问的频率都相同,那么这样的查询平均需要访问半个表的数据。要优化这种查询,要么是在页面中限制分页的数量,要么是优化大偏移量的性能。之所以有效,是因为它允许服务器在不访问行的情况下 检查索引中尽可能少的数据,然后,一旦找到所需的行,就将它们与整 个表联接,以从该行中检索其他列。如果有对应的索引,通常效率会不错,否则,MySQL。需要做大量的文件排序操作。
MySQL 索引下推 为该表定义联合索引zip_last_first (zipcode,lastname,firstname)。另外,Usingwhere表示条件中包含需要过滤的非索引列的数据,即address LIKE %北京市%'这个条件并不是索引列,需要在服务端过滤掉。Index Condition Pushdown(ICP)是MySQL 5.6中新特性,是一种在存储引擎层使用索引过滤数据的优化方式。当使用索引条件下推时,EXPLAIN语句输出结果中Extra列内容显示为Using index condition。
RabbitMQ的四种交换机模式 将一个交换机声明成首部交换机,绑定一个队列的时候,定义一个Hash的数据结构,消息发送的时候,会携带一组hash数据结构的信息,当Hash内容匹配上的时候,消息就会被写入队列。直连交换机是一种带路由功能的交换机,一个队列会和一个交换机绑定,除此之外再绑定一个routing_key,当消息被发送的时候,需要指定一个binding_key,这个消息被送达交换机的时候,就会被这个交换机送到指定的队列里面去。当一个队列的绑定键为#的时候,这个队列将会无视消息的路由键,接收所有的消息。下面用伪代码演示一下。
RabbitMQ六种工作模式 RabbitMq的工作模式其实大致都是基于四种类型的交换机来划分的,simple简单模式、work模式、Routing路由模式是基于Direct类型的交换机来实现(simple简单模式、work模式是基于default AMQP默认交换机也就是Direct类型的);publish/Subscribe发布订阅模式是基于fanout类型的交换机来实现的。Routing路由模式是基于;Topic主题模式是基于Topic类型的交换机来实现的。