tips

tips一些小tip: 向上转型,失去特征 定义相同对象,重写hash和(不是或)equal Vue.nextTick() 回调函数:在Vue(重新)渲染页面之后调用 vue绑定样式,我们会发现background-color 不能直接绑定 需写为backgroundColor 因为js中不允许出现‘-’ 存库之前,mysql会把换行符什么的过滤掉,使得出入不一致(应用场景:textarea存)解决:this.value.replace(/\n|\r\n/g,"
") linux下的mysql的表名是区分大小写的! 实现线程接口 Runnable 注解注入失败 注解注入失败 Linux下缺少部分字体,使用drawString会出问题(二维码模块),解决手段:从windows引入字体,因为不是什么主流问题所以就简单写一下,如果再碰到相关问题在详细的讲述一下
tips2019-05-08鱼鱼

JVM源码解析(2) ContextClassLoader与ClassUtil.forName()方法浅析

JVM源码解析(2) ContextClassLoader与ClassUtil.forName()方法浅析在Spring获取Context的源代码中,我们看到了对ClassUtil的方法调用,通过给定ClassName和ClassLoader进行Class的加载: ClassUtil.forName是仅供于Spring内部使用的获取Class对象的方法,来看一下源码: 首先 对于缓存的Class一块,在类的静态块中就能看出其逻辑: 在上面的resolvePrimitiveClassName方法中,先对长度做了一个判断,因为较长的packagename会影响执行的性能: 最终加载Class依旧是通过ClassLoader的,先来看一下获取ClassLoader的方法实现: 此处优先使用了ContextClassLoader作为 类加载器而非默认的AppClassLoader,在JVM源码解析 从 Launcher类浅谈ClassLoader中,提到了关于 类加载器的相关知识,使用ContextClassLoader是为了弥补双亲委派加载机制的对于自定义 类加载器的缺憾:那些自定义的 类加载器并没有机会上场,在使用了AppClassLoader后我们的自定义ClassLoader所加载的Class是无法被加载进去的,使用ContextClassLoader,我们可以在定义线程时,通过Thread的init方法(子线程调用,私有方法)或是setContextClassLoader直接指定使用自定义的ClassLoader
JVM源码解析(2) ContextClassLoader与ClassUtil.forName()方法浅析2020-08-16鱼鱼

网络时延、异步IO、Pipeline

网络时延、异步IO、Pipeline通过使用多线程是能提高网络延迟带来的负面效应的,也就是在IO密集型的应用中(尤其是网络IO密集应用中),通过异步操作或能显著提高性能,本篇讨论相关问题 并不是异步(多线程)定能提高性能,有这种讨论也是发现经常有人会滥用多线程 通常会有一种说法:如果想要采用多线程的来执行一段任务,为了提高性能,假设服务器中有N个核心,推荐在CPU密集型的应用中启用N个线程,而在IO密集型的任务中启用2*N个线程 本人不是很认同此种说法,他只能代表一个大致的度量,在实际应用中几乎可以说完全不准确,一般来说,权衡系统资源与性能后,前者可能需要更少的线程数,而后者根据实际情况也许适宜分配更多的线程数 这个概念大家一般都不是很陌生,在此再次科普下:所谓IO密集型任务,即是任务的资源消耗多集中在系统IO上,这里的IO本来包括磁盘IO和网络IO等,但是磁盘IO涉及文件句柄操作等系统限制不在本篇讨论,所以此篇文章所提主要指网络IO,高网络IO也是绝大多数web应用的特性
网络时延、异步IO、Pipeline2021-04-21鱼鱼

Mybatis的缓存机制、redis数据库缓存实现和相关问题

Mybatis的缓存机制、redis数据库缓存实现和相关问题高并发环境下,数据库要承受非常大的压力,我们不能奢求每一次都只依赖分布式结构的读写分离数据库来解决问题,所以引入了数据库缓存的概念,这里的缓存不是具体的memcache或是redis,可能只是一块内存区域 此文介绍Mybatis的缓存机制 SqlSession是Mybatis创建数据库链接的会话,当度使用Mybatis需要对SqlSesssion的生命周期有一个把控,但是在Spring的集成中这个会话会被自动创建,周期只是对应一个方法(例如Service层的一个方法),所以每个请求就会对应一个或是多个SqlSession,SQLSession的主要实现是其中的Exector,对应了三种策略:
Mybatis的缓存机制、redis数据库缓存实现和相关问题2020-03-03鱼鱼

项目异常问题解决

项目异常问题解决这天 程序抛出了一个WARN日志: createSecureRandom Creation of SecureRandom instance for session ID generation using [SHA1PRNG] took [43,844] milliseconds. 这意味着SHA1PRNG算法导致项目启动多花费了43秒,这是基于SHA-1算法实现且保密性较强的伪随机数生成器 1.从tomcat层面上解决: 在catalina.sh中加入这么一行:-Djava.security.egd=file:/dev/./urandom 2.从java层面解决 打开$JAVA_PATH/jre/lib/security/java.security这个文件,将下面的内容:
项目异常问题解决2019-02-28鱼鱼

排坑指南-异步操作HttpServletRequest丢失Cookie

排坑指南-异步操作HttpServletRequest丢失Cookie遇到了一个很奇怪的bug:请求鉴权失败,因为通过Request对象获取到的Cookie中没有数据 经过debug调用request.getCookies()方法返回了null值,但是header属性的cookie却能拿到用户的有效cookie(request.getHeader("cookie")),其中缘由,且慢慢道来 我们可以在web项目中通过Request对象很方便的获取Cookie对象: 但其内部实现其实有一层缓存逻辑,从名为"cookie"的请求头中读取并处理数据转为Cookie对象并不是个省时事,在org.apache.catalina.connector.Request类中可以看到如下代码实现:
排坑指南-异步操作HttpServletRequest丢失Cookie2020-11-11鱼鱼

数据库的存储过程、触发器和一些语法

数据库的存储过程、触发器和一些语法本篇文章讲述基于MySQL的存储过程触发器和一些相关的语法 在数据库中,存储过程是指将复用度很高并且不需要通过程序进行预编译的的SQL语句预先写好存放起来(此处所指的为用户定义在数据库中的存储过程),在需要时直接通过call调用 先看一个例子(注意,这不是创建存储过程的语句): 其中使用了日期相关的函数,DATE_SUB(CURDATE(),INTERCAL 10 DAY)代表当前时间前推十天 这个存储过程作用是查出十天前的数据然后将其删除 MySQL默认的分隔符是" ; ",这样一来定义存储过程就会因为 ; 被打断,所以在定义存储过程前后需要修改分隔符,使用DELIMITER关键字跟随分隔符,实际创建存储过程语句为:
数据库的存储过程、触发器和一些语法2019-06-12鱼鱼

待办事宜

待办事宜2018-10-18 解决XSS攻击问题(v-html) 针对缺省有所设置(blog:page等) 添加新增按钮 添加置顶 解决日志编辑首行出现空格 开发射线:一个匿名交流板 留言 联系方式 可回复 筑楼 时限性 超时关闭 匿名 默认匿名 字典: 可标注,添加富文本新组件字典(视情况添加 工作量难以预估 可考量在全网) 字典包括 可见性(待定),条目,解释,相关词条 必须可编辑 添加不同风格 参照http://www.unconstraint.cn/,github两种风格可切换 流动 简约 重金属 使用图床存储较大的图片(RECOMMEND:使用新浪微博)
待办事宜2019-03-24鱼鱼

Netty

NettyNIO相比IO有诸多利处,但平常开发中若是直接使用原生NIO进行业务开发是很不可取的,否则将面临臃肿而晦涩难懂的代码 所以日常开发中我们会时常使用封装了NIO操作代码的Netty来实现NIO操作 Netty是一个异步事件驱动的网络应用框架,用于快速开发可维护的高性能服务器和客户端
Netty2019-05-11鱼鱼

浅析RPC框架Thrift

浅析RPC框架ThriftThrift是由Facebook开发的 RPC远程调用的框架,使用独有的Thrift协议进行可跨语言的远程调用 有点类似protobuf 无论使用何种语言,首先要准备Thrift编译环境,可以去官网下载相应的Thrift执行文件,下文均以Windows为例 下载后可以选择性的配置环境变量,最终在shell中可执行Thrift 在项目中,预先准备好libthrift依赖,maven写法: 例如: 定义一个testService.thrift(idl文件名不重要),一般都会定义在resources的thrift文件夹下: 这里定义了两个方法,分别返回字符串和int类型,在thrift的idl中,对于变量的定义如下:
浅析RPC框架Thrift2022-03-04鱼鱼

Spring的事务

Spring的事务Spring事务将一系列操作绑定为具有原子性的操作,此篇文章讲基于Spring提供的声明式事务 MySQL的事务我们已经明白,Spring的事务是委派了ORM框架来解决相应的问题,在jdbc中,体现的就是在Mybatis框架中,体现的就是SqlSession的建立到提交 声明式事务:在方法或是实现类上加上以下注解: 其中一些常用参数: propagation:配置事务传播行为;(后面详细解读) isolation:事务隔离级别; timeout:超时时间; roolbackFor:导致事务回滚的异常类设置; readOnly:boolean,是否只读 有七种事务传播行为,用来决策当发生事务嵌套时的解决方案
Spring的事务2019-07-18鱼鱼

1
空2025-09-05鱼鱼
网站地图
1
首页 博客 {{screen}} 第 {{page}} 页
博客索引
{{blog.createDate}} ◔ {{blog.timeline}} 小头像 {{blog.author}} {{tag}}
{{blog.likeCount}}{{blog.commentCount}}
分类下暂时没有文章哦!
主题分类
{{taggroup.label}} 

{{tag.value}}