java基础
tz_gx
这个作者很懒,什么都没留下…
展开
-
httpclient 绕过https证书 doesn‘t match any of the subject alternative names
获取CloseableHttpClient改为以下方法:SSLConnectionSocketFactory scsf = new SSLConnectionSocketFactory(SSLContexts.custom().loadTrustMaterial(null, new TrustSelfSignedStrategy()).build(), NoopHostnameVerifier.INSTANCE);CloseableHttpClient client = HttpClients.cu原创 2020-12-03 14:50:53 · 761 阅读 · 1 评论 -
BloomFilter去重
背景:1000万手机号去重方法:1. 将手机号入数据库表中,设置主键唯一2. 用HashSet将访问过的手机号保存起来。那只需接近O(1)的代价就可以查到一个手机号是否重复3. 手机号经过MD5或SHA-1等单向哈希后再保存到HashSet或数据库。4. Bit-Map方法。建立一个BitSet,将手机号经过一个哈希函数映射到某一位。其中方法1比较耗IO,占用数据库资源原创 2016-12-12 16:43:13 · 543 阅读 · 0 评论 -
MyEclipse项目自动部署
在META-INF文件夹下创建一个名为:context.xml的文件,里面的代码如下: 是不是 so easy!!!赶快去试试吧。项目分布图如下:转载 2015-11-15 11:28:16 · 834 阅读 · 0 评论 -
SVN问题:Server sent unexpected return value (403 Forbidden) in response to OPTIONS
此方法不必删除目录重新下载: 针对于第一次成功checkout,一段时间后,update 报此 403错误,我找到了解决方法:即 使用switch 重新定位svn路径,解决这个问题。(附图) ps:能svn checkout 那么你的路径就是正确的,如果大小写错误,svn是不支持checkout。如果是无意中修改了svn路径,那也可以用switch重新定位一次路径,就可以解决。转载 2015-06-25 16:53:34 · 1083 阅读 · 0 评论 -
JVM 常量池理解
转载声明:http://developer.51cto.com/art/200805/73338.htm 在本文描述它们的区别之前,先来了解一下JVM运行时数据区的内存模型。《深入JAVA虚拟机》书中是这样描述的:JVM运行时数据区的内存模型由五部分组成:【1】方法区【2】堆【3】JAVA栈【4】PC寄存器【5】本地方法栈对于String s =转载 2015-03-10 16:42:30 · 384 阅读 · 0 评论 -
深入理解Java内存模型(五)锁_2
锁内存语义的实现本文将借助ReentrantLock的源代码,来分析锁内存语义的具体实现机制。请看下面的示例代码:class ReentrantLockExample { int a = 0; ReentrantLock lock = new ReentrantLock(); public void writer() {转载 2015-01-05 18:47:55 · 455 阅读 · 0 评论 -
深入理解java内存模型(五)锁_1
锁的释放-获取建立的happens before 关系锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。下面是锁释放-获取的示例代码:class MonitorExample { int a = 0; public synchronized void转载 2015-01-05 18:46:34 · 842 阅读 · 0 评论 -
深入理解Java内存模型(七)总结
处理器内存模型顺序一致性内存模型是一个理论参考模型,JMM和处理器内存模型在设计时通常会把顺序一致性内存模型作为参照。JMM和处理器内存模型在设计时会对顺序一致性模型做一些放松,因为如果完全按照顺序一致性模型来实现处理器和JMM,那么很多的处理器和编译器优化都要被禁止,这对执行性能将会有很大的影响。根据对不同类型读/写操作组合的执行顺序的放松,可以把常见处理器的内存模型划分为下面几转载 2015-01-05 18:49:49 · 382 阅读 · 0 评论 -
深入理解Java内存模型(六)final
与前面介绍的锁和volatile相比较,对final域的读和写更像是普通的变量访问。对于final域,编译器和处理器要遵守两个重排序规则:在构造函数内对一个final域的写入,与随后把这个被构造对象的引用赋值给一个引用变量,这两个操作之间不能重排序。初次读一个包含final域的对象的引用,与随后初次读这个final域,这两个操作之间不能重排序。下面,我们通过一些示例性的转载 2015-01-05 18:48:49 · 422 阅读 · 0 评论 -
深入理解Java内存模型(四)volatile_2
volatile内存语义的实现下面,让我们来看看JMM如何实现volatile写/读的内存语义。前文我们提到过重排序分为编译器重排序和处理器重排序。为了实现volatile内存语义,JMM会分别限制这两种类型的重排序类型。下面是JMM针对编译器制定的volatile重排序规则表:是否能重排序第二个操作第一个操作普通读/转载 2015-01-05 18:46:15 · 435 阅读 · 0 评论 -
mongodb查询部分字段方法
keys:对应需要查询的字段public static void main(String[] args) {BasicDBObject keys = new BasicDBObject();keys.put("phone", 1);keys.put("status", 1);DBCollection collection = com.tbc.util.MongoDBManage原创 2015-12-05 10:41:45 · 2591 阅读 · 0 评论 -
csv身份证号码显示不正确问题
buffer.append(...+ "," + "\t" +身份证号码);这样就完美解决了原创 2016-06-15 09:46:11 · 8272 阅读 · 0 评论 -
信息安全问题汇总
1:svn信息泄露原因:服务器里面有.svn文件。解决办法:删除.svn文件:find . -type d -name ".svn"|xargs rm -rf2:用户名密码等敏感信息明文传输解决办法:改为form提交3:登录任意账号解决办法1:验证码分为图文验证码和短信验证码,每次校验失败刷新图文验证码解决办法2:短信验证码,短信验证码验证三次就失效,需原创 2016-12-01 12:24:53 · 628 阅读 · 0 评论 -
java锁
Java有哪些锁公平锁/非公平锁 可重入锁 独享锁/共享锁 互斥锁/读写锁 乐观锁/悲观锁 分段锁 偏向锁/轻量级锁/重量级锁 自旋锁公平锁/非公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。对于JavaReentrantLock而言,通...原创 2019-04-18 13:52:49 · 191 阅读 · 0 评论 -
java换行符
java中写txt文件,实现换行的几种方法: 1.使用java中的转义符"\r\n": 不区分环境下的System.getProperty("line.separator")windows下的文本文件换行符:\r\n linux/unix下的文本文件换行符:\n Mac下的文本文件换行符:\r2:使用换行符的选择如果希望在linux环境下换行,在window系统中通过记原创 2017-07-25 09:51:50 · 1115 阅读 · 0 评论 -
linux病毒分析
场景:系统每天早上自动执行一个apache的进程,且占用大量CPU资源如下图检查分析进程所在路径:然而tmp目录已经被删除了,kill -9 28271 28251 删除进程了,第二天又会自动启动这个进程,感觉应该是中毒了解决办法:检查服务器自动执行脚本目录:发现cron.daily目录最近被修改过,找到里面新增的文件anacron删除即可部分anacr原创 2017-03-15 11:32:39 · 1147 阅读 · 0 评论 -
web登录数据加密
JS前台加密,java后台解密实现因项目需求,需要对用户信息进行加密(以登录为例),前台js中对用户名密码进行加密传输。然后后台进行解密操作 先看一下效果图未对其加密传输对其加密传输从以上可以看出如果不对其进行加密的话,用户的一些敏感信息将会被捕捉到1.前台JS $(f转载 2017-02-14 16:20:48 · 1447 阅读 · 0 评论 -
Java数据内存去重
一、 Java数据在内存去重一般我们有如下几种处理方法:1. ArrayList去重实现原理:通过equals方法比较tostring的值是否一致,判断是否重复JDK源代码: public boolean contains(Object o) { return indexOf(o) >= 0; }public int indexOf(Object o) {原创 2017-03-02 12:04:40 · 892 阅读 · 0 评论 -
JAD批量反编译
例如:将需要反编译的多个文件放在指定路径下。为了方便操作,我将文件放在C盘根目录下的classes文件夹中。打开运行--->输入cmd--->输入cd c:/,将路径指到C盘根路径下。 再输入编译命令,命令:jad -o -r -s java -d src classes/**/*.class 就能在根目录下发现是src的文件夹,里面都是反编译后的java源文件。转载 2016-07-13 11:40:27 · 2098 阅读 · 1 评论 -
设置cookie,获取cookie丢失
js 获取cookiefunction getCookie(name) { var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)"); if(arr=document.cookie.match(reg)) return unescape(arr[2]); elsereturn null; } 其他路径访问c原创 2017-01-13 10:25:21 · 819 阅读 · 0 评论 -
ActiveMQ入门
下载地址:http://activemq.apache.org/download-archives.htmlwindows版本:apache-activemq-5.14.1-bin.ziplinux版本:apache-activemq-5.14.1-bin.tar.gz启动activemq服务:windows版本64位系统的双击:apache-activemq-5.14.1-bin\b原创 2016-11-24 11:22:49 · 294 阅读 · 0 评论 -
深入理解java内存模型(四)volatile_1
volatile的特性当我们声明共享变量为volatile后,对这个变量的读/写将会很特别。理解volatile特性的一个好方法是:把对volatile变量的单个读/写,看成是使用同一个锁对这些单个读/写操作做了同步。下面我们通过具体的示例来说明,请看下面的示例代码:class VolatileFeaturesExample { //使用volatile声明64位的转载 2015-01-05 18:45:15 · 529 阅读 · 0 评论 -
深入理解java内存模型(三)顺序一致性
数据竞争与顺序一致性保证当程序未正确同步时,就会存在数据竞争。java内存模型规范对数据竞争的定义如下:在一个线程中写一个变量,在另一个线程读同一个变量,而且写和读没有通过同步来排序。当代码中包含数据竞争时,程序的执行往往产生违反直觉的结果(前一章的示例正是如此)。如果一个多线程程序能正确同步,这个程序将是一个没有数据竞争的程序。JMM对正确同步转载 2015-01-05 18:43:22 · 501 阅读 · 0 评论 -
深入理解java内存模型(二)重排序
happens-before从JDK5开始,java使用新的JSR -133内存模型(本文除非特别说明,针对的都是JSR- 133内存模型)。JSR-133使用happens-before的概念来阐述操作之间的内存可见性。在JMM中,如果一个操作执行的结果需要对另一个操作可见,那么这两个操作之间必须要存在happens-before关系。这里提到的两个操作既可以是在一个线程之内,也可以是在转载 2015-01-05 18:42:13 · 500 阅读 · 0 评论 -
泛型和可变长参数
1. 泛型的好处是在编译的时候检查类型安全,并且所有的强制转换都是自动和隐式的,提高代码的重用率。定义泛型成员变量时,则类必须实现泛型。定义泛型方法则无所谓类是否实现泛型。2. J2SE 1.5中提供了Varargs机制,允许直接定义能和多个实参相匹配的形参。从而,可以用一种更简单的方式,来传递个数可变的实参。只要在一个形参的“类型”与“参数名”之间加上三个连续的“.”(即“...原创 2013-09-27 16:16:44 · 1818 阅读 · 1 评论 -
java Clone
一、 浅复制与深复制概念1) 浅复制:原对象和克隆后的对象的属性值是一样的,原对象的属性对象和克隆后的属性对象指向的是同一个引用。2) 深复制:原对象和克隆后的对象的成员属性中属性类型是基本数据类型和String的成员属性值是一样的,原对象的属性对象和克隆后的属性对象指向的是则是不同的引用,即克隆后的属性对象会指向堆中新的对象。二、 总结1)原创 2013-09-26 11:13:46 · 723 阅读 · 0 评论 -
java序列化
一、 何为序列化 序列化就是将一个实例数据对象写入输入流中然后持久化到数据库或者文件系统中,或者转换为字符串。 反序列化则是将经过序列化后持久化的数据或者字符串转换为实例数据对象。二、 为什么要序列化1) 远程消息调用 从一个应用中将一个数据对象传给另一个应用时需要将对象转换为输入流或者字符原创 2013-09-25 11:12:12 · 521 阅读 · 0 评论 -
序列化
Java 串行化技术可以使你将一个对象的状态写入一个Byte流里,并且可以从其它地方把该Byte 流里的数据读出来,重新构造一个相同的对象。这种机制允许你将对象通过网络进行传播,并可以随时把对象持久化到数据库、文件等系统里。Java的串行化机制是RMI、EJB等技术的技术基础。用途:利用对象的串行化实现保存应用程序的当前工作状态,下次再启动的时候将自动地恢复到上次执行的状态。序列化就是一种转载 2013-09-24 15:43:16 · 495 阅读 · 0 评论 -
自定义注解
一、 定义Annotation(注解)是JDK5.0及以后版本引入的。它可以用于创建文档,跟踪代码中的依赖性,甚至执行基本编译时检查。注解是以‘@注解名’在代码中存在的,根据注解参数的个数,我们可以将注解分为:标记注解、单值注解、完整注解三类。它们都不会直接影响到程序的语义,只是作为注解(标识)存在,我们可以通过反射机制编程实现对这些元数据(用来描述数据的数据)的访问。另外,你可以原创 2013-09-23 16:43:12 · 510 阅读 · 0 评论 -
@XStreamAlias使用
@XStreamAlias使用一、 特点:简化的API; 无映射文件; 高性能,低内存占用; 整洁的XML; 不需要修改对象;支持内部私有字段,不需要setter/getter方法 提供序列化接口; 自定义转换类型策略; 二、 使用场景Transport转换 Persistence 持久化对象 Configuration 配置 Unit原创 2013-09-22 23:33:06 · 29224 阅读 · 0 评论 -
去除拷贝的代码中额外的显示行的部分
BufferedReader reader = null; BufferedWriter writer = null; try { // 有08.import java.util.List;的代码txt 该txt最好是UTF-8格式的,否则中文会乱码 reader = new BufferedReader(ne原创 2013-09-04 11:27:13 · 629 阅读 · 0 评论 -
JAVA的异常处理
1. Java 的异常处理异常的处理主要包括捕获异常、程序流程的跳转和异常处理语句块的定义等。当一个异常被抛出时,应该有专门的语句来捕获这个被抛出的异常对象,这个过程被称为捕获异常。当一个异常类的对象被捕获后,用户程序就会发生流程的跳转,系统中止当前的流程而跳转至专门的异常处理语句块,或直接跳出当前程序和 Java 虚拟机,退回到操作系统。 2. 异常类说明Java 中所有转载 2013-09-04 10:38:39 · 866 阅读 · 0 评论 -
输出javabean集合信息
package reflect;import java.lang.reflect.InvocationTargetException;import java.lang.reflect.Method;import java.util.ArrayList;import java.util.List;/** * 输出javabean集合信息 * @author 1306149原创 2013-09-04 10:41:59 · 828 阅读 · 0 评论 -
Eclipse程序员快捷键
1. Rename(Alt+Shift+R)选择要重命名的Java元素,选择右键Refactor菜单下的Rename菜单项,可以对当前选择的元素进行重命名,所有引用该元素的地方都会重命名。2. Extract Method(Alt+Shift+M)选择方法中可以抽取出为新的方法的代码,选择右键Refactor菜单下的Extract Method菜单项,可原创 2013-10-16 19:58:56 · 699 阅读 · 0 评论 -
XLS文件的读写
依赖jar:poi.jar一、 写xls文件package excel; import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.hssf.usermodel.HSSFSheet;import org.apache.poi.hssf.usermodel.HSSFRow;原创 2013-10-28 17:34:33 · 587 阅读 · 0 评论 -
ehcache的入门
获取ehcache需要的jar包:ehcache-core-2.6.2.jar、slf4j-api-1.6.6.jar代码案例:package cache;import net.sf.ehcache.Cache;import net.sf.ehcache.CacheManager;import net.sf.ehcache.Element;public class Cach原创 2013-11-21 20:32:53 · 734 阅读 · 0 评论 -
深入理解java内存模型(一)-基础
并发编程模型的分类在并发编程中,我们需要处理两个关键问题:线程之间如何通信及线程之间如何同步(这里的线程是指并发执行的活动实体)。通信是指线程之间以何种机制来交换信息。在命令式编程中,线程之间的通信机制有两种:共享内存和消息传递。在共享内存的并发模型里,线程之间共享程序的公共状态,线程之间通过写-读内存中的公共状态来隐式进行通信。在消息传递的并发模型里,线程之间没有公共状态,线程之间必转载 2015-01-05 18:40:34 · 406 阅读 · 0 评论 -
同一类的不同对象同样属性值相加
/** * sourceUserInfo中属性值+addUserInfo中对应的属性值 * @paramsourceUserInfo * @paramaddUserInfo */ private void addCityUser(CityUserInfo sourceUserInfo, CityUserInfoaddUser原创 2015-01-20 16:31:57 · 2435 阅读 · 0 评论 -
csv文件导出内容有逗号
只需要将有逗号的内容放在双引号里面即可:...+",\"" + "xxxxx,xxx" + "\","+....乱码的时候加上编码格式即可:PrintWriter printWriter = null;try {printWriter = new PrintWriter(new OutputStreamWriter(outputStream, "GBK"));}原创 2015-02-04 15:09:53 · 1140 阅读 · 0 评论 -
hashcode和equals的使用
hashcode和equals的使用一、 说明 hashcode和equals都是用来判断对象是否相等的。 一般来讲equals是给代码编写者判断对象是否相等的,举个例子有个类只有名字属性,重写equals方法认为名字相等则对象相等,那么只要名字相同,对象便是相等的。 hashcode则一般是JDK来判断对象是否相等的,比如在set集合里面判断对象是否重复,就需要判断原创 2015-02-04 10:12:07 · 610 阅读 · 0 评论