简
4年前
数组越界导致系统重启的案例
一.问题描述引言一般数组越界问题,往往是涉及多线程并发的情况下,某个或多个临界资源(比如类或对象的成员变量)多线程并发读写而导致的异常。出现这样情况,一般是该保护的地方没有用同步锁保护,或者是用错了同步锁,这类问题比较常规。但本文要分享的案例却是一个方法内的临界资源已被加锁保护的情况下仍然出现的数组越界问题,导致system\server挂掉,手
Stella981 Stella981
3年前
JSP+Servlet+JavaBean实现数据库的增删改查
基本思想:JSP文件显示页面,使用form或href超链接传值到Servlet中方法,在Servlet方法中调用Dao层的类对象,实现对数据库里的数据的增删改查,之后重新返回到JSP输出操作完的结果。共分为四个包和对应的JSP文件:1.DB包:建立连接数据库的方法,以及关闭操作数据库的方法。2.Servlet包:①接受来自JSP页面的参数,将这些
Stella981 Stella981
3年前
Gson通过借助TypeToken获取泛型参数的类型的方法
最近在使用Google的Gson包进行Json和Java对象之间的转化,对于包含泛型的类的序列化和反序列化Gson也提供了很好的支持,感觉有点意思,就花时间研究了一下。由于Java泛型的实现机制,使用了泛型的代码在运行期间相关的泛型参数的类型会被擦除,我们无法在运行期间获知泛型参数的具体类型(所有的泛型类型在运行时都是Object类型)。但是有的时候
Wesley13 Wesley13
3年前
Java spi机制浅谈
最近看到公司的一些框架和之前看到的开源的一些框架的一些服务发现和接入都采用了java的spi机制。所以简单的总结下javaspi机制的思想。我们系统里抽象的各个模块,往往有很多不同的实现方案,比如日志模块的方案,xml解析模块、jdbc模块的方案等。面向的对象的设计里,我们一般推荐模块之间基于接口编程,模块之间不对实现类进行硬编码。一旦代码里涉及具
Stella981 Stella981
3年前
Play之Scala
现在几乎每个web语言都会有这样那样的模板供你选择,如果你曾经使用过任何一种模板,我想模板这个概念你能很清晰的阐明,我借用类与对象的关系进行阐述:模板的功能就是将(含有模板元素的)页面实例化输出。每个人对模板的概念都不一而同,但模板干的事情几乎都是一致的渲染页面!Play的模板在HTML基础上直接基于Scala语言,模板文件通常存放在/app
Wesley13 Wesley13
3年前
Unity C# 设计模式(二)简单工厂模式
定义:简单工厂模式是属于创建型模式,又叫做静态工厂方法(StaticFactoryMethod)模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。简单工厂模式是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该
Wesley13 Wesley13
3年前
Java编程思想 学习笔记6
六、访问权限控制访问控制(或隐藏具体实现)与“最初的实现并不恰当”有关。如何把变动的事物与保持不变的事物区分开来,这是面向对象设计中的一个基本问题。为了解决这一问题,Java提供了访问权限修饰词,以供类库开发人员向客户端程序员指明哪些是可用的,哪些是不可用的。访问权限的等级,从最大权限到最小权限依次为:public、prote
Wesley13 Wesley13
3年前
JAVA中,序列化接口的作用
Java规定的内部机制,实现Serializable接口就行了,这个接口只是个标记性的接口,表示类的设计者已经允许这个类型的对象被序列化写入磁盘或通过网络发送,对于有保密要求的东西一般不实现这个接口防止无意间复制到jvm内存之外。如果一个类型的多数字段可以复制但个别字段不用复制(比如,它实际上是通过其它字段计算出来的),我们可以把它标记为
Easter79 Easter79
3年前
SpringBoot2(十一)集成RedisCache
应用层的东西,找到接口实现它即可。如果想要自己选择序列化工具,难点还是在自动转型上,在序列化字符串转成对象的过程中,Spring并未提供有效的、带Class参数的接口,类型自动转换问题,需要第三方框架自行处理。最好选用带自动转型的序列化框架,错误的写法,很容易导致类型强转失败,本文采用的是FastJSON。简单的工具类,按自己需求封装,可以指定
Stella981 Stella981
3年前
SpringBoot2(十一)集成RedisCache
应用层的东西,找到接口实现它即可。如果想要自己选择序列化工具,难点还是在自动转型上,在序列化字符串转成对象的过程中,Spring并未提供有效的、带Class参数的接口,类型自动转换问题,需要第三方框架自行处理。最好选用带自动转型的序列化框架,错误的写法,很容易导致类型强转失败,本文采用的是FastJSON。简单的工具类,按自己需求封装,可以指定