本人在设计数据库缓存层的时候,需要对数据进行深拷贝,这样用户操作的数据对象就是不共享的. 这个思路实际上和Erlang类似,就是用数据不共享解决并发问题. 1. 序列化? 原来的做法,是用序列化,我用了Json的序列化,lib-json.一个再传统不过的方法.把数据字段序列化成json保存.取出来的时候进行反序列化. 测试100条数据,100次循环,竟然TM的用了15秒. 这个是个啥概念?简直惨不忍睹. 于是网上搜,找到个Jackson,号称性能XXX的,比Google的gson高XXX. 替换…
缓存是在web开发中经常用到的,将程序经常使用到或调用到的对象存在内存中,或者是耗时较长但又不具有实时性的查询数据放入内存中,在一定程度上可以提高性能和效率.下面我实现了一个简单的缓存,步骤如下. 创建缓存对象EntityCache.java public class EntityCache {   /**    * 保存的数据    */   private Object datas;     /**    * 设置数据失效时间,为0表示永不失效    */   private long ti…
/** * Take a String which is a delimited list and convert it to a String array. * <p>A single delimiter can consists of more than one character: It will still * be considered as single delimiter string, rather than as bunch of potential * delimiter…
原文: https://jingyan.baidu.com/article/948f5924156866d80ff5f921.html Eclipse快速生成一个JavaBean类的方法 听语音 | 浏览:4321 | 更新:2015-11-11 01:24 1 2 3 4 5 6 分步阅读 javabean指的是具有无参构造器,全参构造器,GetXxx和SetXxx以及toString方法 我们在编写java程序的时候,是经常需要写javabean的. 所以就无法省略以上这个步骤. 在属性比较…
actor  Jetlang 提供了一个高性能的Java线程库,该库是 JDK 1.5 中的 java.util.concurrent 包的补充,可用于基于并发消息机制的应用. .net的MS CCR和Retlang:…
今天在看到<Java疯狂讲义>中一个章节习题: 开发一个工具类,该工具类提供一个eval()方法,实现JavaScript中eval()函数的功能--可以动态运行一行或多行程序代码.例如:eval("System.out.println("hello world")"),将输出hello world. ___ code: import java.io.*; /** * Java创建一个类似于js中eval()的方法 */ public class Eva…
在工作期间,将写内容过程经常用到的一些内容段做个记录,下面内容是关于Java判断一个字符是否是数字的几种方法的内容,希望能对码农们有好处. public class Test{ public static void main(String[] args) { char[] ch = { 'a', '1', 'b', '2', 'c', '3', 'd', '4', }; System.out.println(ch[0] + ": " + isDigitA(ch[0])); System…
Java反射机制demo(五)—获得并调用一个类中的方法 这个demo在使用反射机制操作属性之前,主要原因是因为在.class文件字节码中,方法排在属性的前面. 1,获得一个类中的方法 先看一下方法和运行结果.获取所有的方法使用Class类中getMethos()方法. 待获取的类: package com.aaron.reflect; public class Heros { private String name;//名字 private String type;//类型 private i…
Voovan 是一个高性能异步网络框架和 HTTP 服务器框架,同时支持 HTTP 客户端抓取.动态编译支持.数据库访问封装以及 DateTime.String.Log.反射.对象工具.流操作.文件操作.异步双向通道等功能.旨在提供可靠.方便.可单元测试的代码.它是一个无任何依赖的独立工具包,希望能够方便广大开发者快速的实现应用. 作者:@愚民日记 地址:http://git.oschina.net/helyho/Voovan http://www.oschina.net/news/80909/…
首先看下Java语言规范对equals方法的要求: 1,自反性,对于任何非控引用x,x.equals(x)都应该返回true. 2,对称性,对于任何引用x和y,如果x.equals(y)返回true,那么y.equals(x)也应该返回true. 3,传递性,如果x.equals(y),y.equals(z)都返回true,那么,x.equals(z)返回true. 4,一致性,如果x和y引用的对象没有发生变化,那么无论调用多少次x.equals(y)都返回相同的结果. 5,对于任意非空引用x,…
一.上文回顾 上回我们主要从图片的合并.压缩等方面介绍前端性能优化问题(详见Java Web 前端高性能优化(一)) 本次我们主要从图像BASE64 编码.GZIP压缩.懒加载与预加载以及 OneAPM Browser Insight 的定位分析功能四个方面介绍前端优化方法 二.图像的 BASE64 编码 不管如何,图片的下载始终都要向服务器发出请求,要是图片的下载不用向服务器发出请求,而可以随着 HTML 的下载同时下载到本地那就太好了.而目前,浏览器已经支持了该特性,我们可以将图片数据编码成…
常见的json解析有原生的JSONObject和JSONArray方法,谷歌的GSON库,阿里的fastjson,还有jackson,json-lib. Gson(项目地址:https://github.com/google/gson).Gson是目前功能最全的Json解析神器,Gson当初是为因应Google公司内部需求而由Google自行研发而来,但自从在2008年五月公开发布第一版后已被许多公司或用户应用.Gson的应用主要为toJson与fromJson两个转换函数,无依赖,不需要例外额…
Java如何对一个对象进行深拷贝? Posted by Wudashan on October 14, 2018 深拷贝实现代码:https://github.com/wudashan/java-deep-copy 介绍 在Java语言里,当我们需要拷贝一个对象时,有两种类型的拷贝:浅拷贝与深拷贝.浅拷贝只是拷贝了源对象的地址,所以源对象的值发生变化时,拷贝对象的值也会发生变化.而深拷贝则是拷贝了源对象的所有值,所以即使源对象的值发生变化时,拷贝对象的值也不会改变.如下图描述: 了解了浅拷贝和深…
一.为什么要使用克隆 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能 会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的.在 Java语言中,用简单的赋值语句是不能满足这种需求的.要满足这种需求虽然有很多途径,但实现clone()方法是其中最简单,也是最高效的手段. 使用new和赋值语句或者set注入都是可以的,但是,这会花费大量开销去做,效率低,并且还会产…
Java对象克隆(Clone)及Cloneable接口.Serializable接口的深入探讨 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么要对对象进行克隆.Java中所有的对象都是保存在堆中,而堆是供全局共享的.也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象的内部数据通过get/set方法曝露出来).有的时候,我们编写的代码想让调用者只获得该对象的一个拷贝(也…
这篇文章专门给程序员写的,普通读者慎入.原作者:Kevin Sookocheff 译者:Celia Zhen,原文点击文末链接. 每当我告诉别人我一直在用Java工作时,大家的反应都是: “纳尼!Java?为啥是Java?” 说实话,本人刚开始的时候也是同样的反应.但是由于Java的类型安全,执行性能和坚如磐石的工具,我渐渐地开始欣赏Java.同时我注意到,现在的Java已今非昔比——它在过去的10年间稳健地改善着. 缘何是Java? 假 设每天都用Java的想法还没有让君恶心到食不下咽,我在此…
方法(一)编了这么久的程序,一直想找机会总结下其中的心得和方法,但回想我这段编程道路,又很难说清楚,如果按照我走过的所有路来说,显然是不可能的!当我看完了云风的<游戏之旅--编程感悟>和梁肇新的<编程高手箴言>我突然知道我要从何说起,我要怎么说了!从接触编程到现在已经至少要6年,虽然时间短,但我几乎每天都在编,而编程上突飞猛进的还是最近一两年,单纯编程上的进步,很简单就是经验,但你要理解才可以进步的快!这就是说,你的理论课要学好,才能学好编程,操作系统,网络原理,计算机体系结构,数…
原文网址:http://blog.bd17kaka.net/blog/2013/06/25/java-deep-copy/ JAVA中的浅拷贝和深拷贝(shallow copy and deep copy) 一个示例 首先要区分”copy a value”和”copy an object”之间的区别: // copy a value int val = 1; int cpVal = val; // copy a value(the object reference for the array a…
Java Web 开发环境快速搭建 在因某种原因更换开发设备后,可依据此文快速搭建开发环境,恢复工作环境. Java开发环境: Windows 10 (64-bit) Oralce JDK Eclipse IDE for Java EE Developers Apache Tomcat Apache Maven Nexus Repository Manager(Nexus OSS) 以上工具仅JDK需要安装,Maven ,Tomcat , Eclipse 都是解压即用. JDK 配置环境变量 %…
原文地址:http://blog.csdn.net/kenthong/article/details/5758884 Part I 没啥好说的,直接开始Part II吧. Part II 谈到了对象的克隆,就不得不说为什么要对对象进行克隆.Java中所有的对象都是保存在堆中,而堆是供全局共享的.也就是说,如果同一个Java程序的不同方法,只要能拿到某个对象的引用,引用者就可以随意的修改对象的内部数据(前提是这个对象的内部数据通过get/set方法曝露出来).有的时候,我们编写的代码想让调用者只获…
详见:http://blog.yemou.net/article/query/info/tytfjhfascvhzxcyt128 为什么需要克隆: 在实际编程过程中,我们常常要遇到这种情况:有一个对象A,在某一时刻A中已经包含了一些有效值,此时可能会需要一个和A完全相同新对象B,并且此后对B任何改动都不会影响到A中的值,也就是说,A与B是两个独立的对象,但B的初始值是由A对象确定的.在Java语言中,用简单的赋值语句是不能满足这种需求的,要满足这种需求有很多途径. 克隆的实现方式 一.浅度克隆…
1.new something obj=new something();   2.clone 根据现有的对象实例来建立里一个新对象实例. 只限于实现了java.lang.Cloneable接口的类.否则会抛出CloneNotSupportedException异常. 如下,则可根据当前对象本身建立另一个对象实例(但并未利用构造方法). class Something {     //codes     public Something createClone()     {         So…
最近参加实习了,公司的技术栈中需要用到 Ruby 以及 Rails 框架,所以算是开始了踩坑之旅吧.. Ruby 简介 网上的简介要搜都能搜到,具体涉及的包括历史啦之类这里不再赘述,提几个关键词吧: 1993 年由日本的松本行弘创建 纯粹面相对象编程/ 脚本语言/ 解释型/ 动态类型 对于准备迈入 Ruby 的 Java 程序员来说,有几个地方需要特别的去了解一下. 纯粹面相对象 其实经过论证,Java 同 Ruby 一样都是纯粹的面相对象的语言,这也就意味着包含所有的数字等在内都是对象,注意所…
  java 复制Map对象(深拷贝与浅拷贝) CreationTime--2018年6月4日10点00分 Author:Marydon 1.深拷贝与浅拷贝 浅拷贝:只复制对象的引用,两个引用仍然指向同一个对象,在内存中占用同一块内存: 被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的引用仍然指向原来的对象: 换言之,浅复制仅仅复制所考虑的对象,而不复制它所引用的对象. 深拷贝:被复制对象的所有变量都含有与原来的对象相同的值,除去那些引用其他对象的变量: 那些引用其他对象的变…
一.问题描述 话不多说,先上代码: public static void main(String[] args) throws InterruptedException { List<String> list = new ArrayList<String>(); list.add("第零个"); list.add("第一个"); list.add("第二个"); list.add("第三个"); lis…
java实现定时任务的三种方法 /** * 普通thread * 这是最常见的,创建一个thread,然后让它在while循环里一直运行着, * 通过sleep方法来达到定时任务的效果.这样可以快速简单的实现,代码如下: * @author GT * */ public class Task1 { public static void main(String[] args) { // run in a second final long timeInterval = 1000; Runnable…
摘要:JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.它基于ECMAScript的一个子集. JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C.C++.C#.Java.JavaScript.Perl.Python等).这些特性使JSON成为理想的数据交换语言. 易于人阅读和编写,同时也易于机器解析和生成(网络传输速率). 一.准备工作 json是个非常重要的数据结构,在web开发中应用十分广泛.我觉得每个人都应该好好的…
java中的fail-fast(快速失败)机制 简介 fail-fast机制,即快速失败机制,是java集合中的一种错误检测机制.当在迭代集合的过程中对该集合的结构改变是,就有可能会发生fail-fast,即跑出ConcurrentModificationException异常.fail-fast机制并不保证在不同步的修改下一定抛出异常,它只是近最大努力去抛出,所以这种机制一般仅用于检测bug fail-fast的出现场景 在我们常见的java集合中就可能出现fail-fast机制,比如常见的A…
为啥子要混淆 简单来说,Android 进行ProGuard,可以起到压缩,混淆,预检,优化的功能,虽然不能说更安全但还是一个不容忽视的环节. 开始混淆第一步 首先在build.gradle 中将混淆的开关打开,即 minifyEnabled 置为 true 然后就要去proguard-rules.pro写入我们的混淆的规则(如文件其名),防止重要的类被混淆移除了. 先特别介绍的是与保持相关元素不参与混淆的规则相关的几种命令: 命令 作用 -keep 防止类和成员被移除或者被重命名 -keepn…
目录 预备知识 概览 线程同步 wait()方法 wait() wait(long timeout) wait(long timeout, int nanos) notify() & notifyAll() notify() notifyAll() 生产者-消费者同步问题 为什么要把wait()方法放入while语句中? 为什么要同步put()和take()方法? 总结 参考 预备知识 Java线程的生命周期 概览 本文探究一下Java最基础的机制之一:线程同步 我们先讨论一些并发相关的术语和方…