- 博客(38)
- 收藏
- 关注
转载 图片文件头
原文链接:https://www.cnblogs.com/Wendy_Yu/archive/2011/12/27/2303118.html 最近在做东西的时候遇到了点问题,在加载图片的时候,加载失败,后缀都是jpg格式,但换个图片就可以了,为此,怀疑图片格式有问题,遂拖到UE里面查看它的16进制,果然,两个图片的文件头根本就不一样,这不是欺负人嘛,害我白白浪费了半天的时间,差点要重...
2019-06-28 19:46:16
1955
原创 JavaSE-新特性(JDK5-JDK12)持续维护
汇总 JDK5新特性 自动装箱与拆箱枚举静态导入可变参数(Varargs)内省(introspector)泛型(Generic) For-Each循环 JDK6新特性 Desktop类和SystemTray类使用JAXB2来实现对象与XML之间的映射理解STAX使用Compiler API轻量级 Http Server API插入式注解处...
2019-02-05 18:52:17
4082
1
原创 深入理解反射机制(Java)
关于反射:动态加载一个指定的类,获取该类中的所有内容。并将字节码文件中的内容都封装成对象,便于操作这些成员。反射机制允许程序在执行期借助于Reflection API取得任何类的内部信息,并能直接操作任意对象的内部属性及方法 反射的好处:大大的增强了程序的扩展性。 Java反射机制提供的功能: 判断任意一个对象所属的类、构造任意一个类的对象、判断任意一个类所具有的成员...
2019-01-11 15:05:45
705
原创 深入理解Java内存模型
Java 内存模型是什么,为什么要有 Java 内存模型,Java 内存模型解决了什么问题 计算机内存模型:现代计算机,CPU在计算时,并不总是从内存读取数据,数据读取顺序优先级是:寄存器一高速缓存(多级缓存)一内存 使用CPU Cache原因:计算机在执行程序时,每条指令都是在CPU中执行的,执行指令过程中,势必涉及到数据的读取和写入。由于程序运行过程中的临时数据...
2019-01-11 15:03:40
803
原创 JavaSE多线程-ThreadLocal原理(源码分析)
关于Thread类:Thread类中维护了ThreadLocal.ThreadLocalMap属性,这就是每个线程的存储空间。相当于Map,key为当前线程,value为entry。Public class Thread implements Runnable {/* ThreadLocal values pertaining to this thread. This map is m...
2018-12-15 20:05:06
240
1
原创 深入学习Java虚拟机:内存区域
在Java中,分配内存和回收内存都由JVM自动完成。 内容:首先从操作系统层面简单介绍物理内存的分配和Java运行的内存分配之间的关系,明白在Java中使用的内存与物理内存区别。Java如何使用从物理内存申请下来的内存,以及如何来划分它们,如何分配和回收内存。最如何解决OutOfMemoryError,并提供一些处理这类问题的常用手段 内存的不同形态-物理内存和虚拟内存:...
2018-12-09 14:48:01
489
原创 深入学习Java虚拟机:类加载机制与类加载器
Java虚拟机-类加载机制与类加载器Java中类加载、连接和初始化的过程都是在程序运行期间完成的,这些策略虽然会令类加载时增加些性能开销,但是会提高java的灵活性。Java动态扩展的特性就是依赖运行期动态加载和动态连接的特点实现的。 JVM类加载机制Java源代码被编译为字节码文件后,需要加载进内存才能在程序中被使用。程序启动时并不会一次性加载程序要用的所有class文件,而是根...
2018-12-09 14:00:02
1723
2
原创 PDF技术(四)-Java实现Html转PDF文件
html转换为pdf的关键技术是如何处理网页中复杂的css样式、以及中文乱码处理。各实现对比表于Windows平台进行测试: 基于IText 基于FlyingSaucer 基于WKHtmlToPdf 基于pd4ml 跨平台性 跨平台 ...
2018-10-10 16:56:12
47293
11
原创 PDF技术(三)-Java实现图片转PDF文件
图片转pdf文件同样采用itext,将图片加入即可1)使用IText转换原理:使用IText创建pdf,添加图片。优点:速度快。具体实现public class Image2PDF { /*** @param picturePath 图片地址*/ private static void createPic(Document document,Strin...
2018-10-10 16:49:21
8617
3
原创 PDF技术(二)-Java实现Txt转PDF文件
TxT转PDF可以直接使用IText就可以了,IText在pdf领域可以说暂时是最好的方案了。通过直接读取txt文件,然后生成pdf,再添加文本就可以了。1)使用IText实现转换原理:使用IText创建pdf,添加文本。优点:速度快。缺点:具体实现:public class Txt2PDF { private static final String FO...
2018-10-10 16:47:23
8342
6
原创 PDF技术(一)-Java实现Office系列文件转PDF文件
最近,公司要求做个文件转pdf的调研报告,于是在网上找了一些实现方法,现在将这些方法做个对比,并记录下来,以后或许有用呢,哈哈。首先说一下需求,产品要求不能使用第三方软件实现,因为这种实现方式效率不高,所以需要使用“纯Java代码”实现。同时也对跨平台有要求,系统需要运行在linux系统上。综合现阶段发现的方案,决定采用基于Aspose的方式进行实现。好了,现在先看一下对比的结果:各实...
2018-10-10 16:36:31
19369
20
原创 Spring持久化支持(一)-Spring事务管理
事务管理的目的是保证数据操作的事务性(原子性、一致性、隔离性、持久性ACID),脱离了事务性,DAO照样可以顺利地进行数据操作。事务是一系列的动作, 它们被当做一个单独的工作单元. 这些动作要么全部完成, 要么全部不起作用 Spring事务管理是Spring AOP技术的应用。 Spring对事务管理的支持Spring为事务管理提供了一致的编程模板,在高层次建立了统一的...
2018-09-25 01:27:36
1225
原创 Redis笔记(二)-主从复制与哨兵机制
单机缺点及解决方案单机问题:机器故障数据丢失、容量瓶颈。QPS瓶颈需要集群的原因:并发量OPS的需求。要超过10w/s。 数据量“大数据”,机器只能存256G,但是需要存500G3.集群可以备份数据 Redis不能支撑高并发的瓶颈--单机单机的redis几乎不太可能说QPS(并发)超过10万+,除非特殊情况,如机器性能特别好,配置特别高,物理机,维护做的特别好,而且整体...
2018-09-17 21:24:06
1276
1
原创 Redis笔记(一)-Redis持久化
Redis持久化1、故障发生的时候会怎么样2、如何应对故障的发生redis的持久化,RDB,AOF,区别、工作机制,各自的特点是什么,适合什么场景。如何抉择redis的企业级的持久化方案是什么,是用来跟哪些企业级的场景结合起来使用的??? 如果想redis仅作为纯内存的缓存来用,可禁止RDB和AOF所有的持久化机制 Redis持久化的作用:Redis所有的数据都...
2018-09-15 17:08:20
8376
4
原创 OAuth2.0协议及五种授权模式
OAuth:一个关于授权(authorization)的开放网络标准,目前版本是2.0版。 为何要使用OAuth协议呢?OAuth协议的应用场景。第三方服务方提供服务,某些服务需要用户的同意才能够做到,好比客厅要装修,需要得到主人的同意,拿到钥匙,才能装修,提供服务。传统做法:把所有钥匙(账号密码)给工人。但这样,工人可能用这个钥匙开卧室的门。甚至打一个新的钥匙。缺点...
2018-09-11 17:16:24
21178
原创 计算机网络(一)-互联网协议
互联网协议 互联网是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,两者实际上根本不知道对方的物理位置,你不觉得这是很神奇的事情吗?互联网的核心是一系列协议,总称为"互联网协议"(Internet Protocol Suite)。对电脑如何连接和组网,做出了详尽的规定。理解了这些协议,就理解了互联网的原理。 ...
2018-09-09 20:16:19
2174
原创 蚂蚁开放平台开发第三方授权登陆(三):Android端
开发前提:拥有支付宝账户登录授权业务入参pid值。拥有APPID、App支付宝登录功能并成功签约一、需求用户在APP点击登录后,选择第三方登录中的“支付宝”,跳转到支付宝客户端进行授权登录(手机安装了支付宝客户端),或网页端扫码登录(手机未安装支付宝客户端)。用户同意登录后获取到用户的基本信息。 二、开发流程APP支付宝授权登录获取用户信息流程图:1. ...
2018-09-03 17:27:19
4818
原创 蚂蚁开放平台开发第三方授权登陆(二):PC端
在《蚂蚁金服开放平台开发前期准备》准备后,已经获取应用AppID以及应用私钥、支付宝公钥、回调地址。可以进行网站应用的开发。一、需求用户点击登录后,选择第三方登录中的“支付宝”,跳转到登录页面使用支付宝扫码进行授权登录。用户同意登录后获取到用户的基本信息。PC端授权获取用户基本信息流程二、开发环境及使用到的技术1.采用IDEA2017 进行开发2.基于JDK1.8,使用...
2018-09-03 17:22:41
4585
1
原创 蚂蚁开放平台开发第三方授权登陆(一):开发前期准备
根据需求,需要使用支付宝进行第三方授权登陆获取用户基本信息。支持PC网页、App应用的授权。其中PC网页只需要添加获取用户信息的功能,成功上线后就可以完成功能。App应用授权登陆则需要有一个生效的支付产品,然后联系人工服务签约“App授权登陆”功能才能进行开发。所以在开发前需要做一些准备,目的是获取AppID以及应用私钥、支付宝公钥、回调地址。同时需要App授权登陆功能的成功签约。...
2018-09-03 17:16:56
10745
原创 微信开放平台开发第三方授权登陆(五):微信小程序
微信开放平台开发系列文章:微信开放平台开发第三方授权登陆(一):开发前期准备微信开放平台开发第三方授权登陆(二):PC网页端微信开放平台开发第三方授权登陆(三):Android客户端微信开放平台开发第三方授权登陆(四):微信公众号微信开放平台开发第三方授权登陆(五):微信小程序目录一、需求二、开发流程三、开发使用的技术及工具1.前端(小程序)1)...
2018-09-03 17:12:38
33608
4
原创 微信开放平台开发第三方授权登陆(四):微信公众号
微信开放平台开发系列文章:微信开放平台开发第三方授权登陆(一):开发前期准备微信开放平台开发第三方授权登陆(二):PC网页端微信开放平台开发第三方授权登陆(三):Android客户端微信开放平台开发第三方授权登陆(四):微信公众号微信开放平台开发第三方授权登陆(五):微信小程序目录一、需求二、开发流程三、具体实现步骤1.引导用户跳转到微信授...
2018-08-24 14:33:38
14583
3
原创 微信开放平台开发第三方授权登陆(三):Android客户端
微信开放平台开发系列文章:微信开放平台开发第三方授权登陆(一):开发前期准备微信开放平台开发第三方授权登陆(二):PC网页端微信开放平台开发第三方授权登陆(三):Android客户端微信开放平台开发第三方授权登陆(四):微信公众号微信开放平台开发第三方授权登陆(五):微信小程序目录一、需求二、开发流程三、开发使用的技术及工具四、具体实现步...
2018-08-24 14:16:39
31285
4
原创 微信开放平台开发第三方授权登陆(二):PC网页端
微信开放平台开发系列文章:微信开放平台开发第三方授权登陆(一):开发前期准备微信开放平台开发第三方授权登陆(二):PC网页端微信开放平台开发第三方授权登陆(三):Android客户端微信开放平台开发第三方授权登陆(四):微信公众号微信开放平台开发第三方授权登陆(五):微信小程序目录一、需求二、开发流程1.网站应用:(微信客户端扫码授权登陆)三、开发使用...
2018-07-24 15:13:32
39628
3
原创 微信开放平台开发第三方授权登陆(一):开发前期准备
据微信开放平台“开发资源”中网站应用微信登陆功能开发指南描述:进行授权登陆接入前,需要先注册一个开发者账号,并拥有一个已经审核通过的网站应用,并获取AppID和APPSecret,然后申请微信登陆并通过审核后,可以接入流程进行开发。据开发者资质认证处介绍:开发者资质认证通过后,微信开放平台帐号下的应用,将获得微信登录、智能接口、第三方平台开发等高级能力。所以在微信第三方授权登陆获取用户信息...
2018-07-20 15:49:11
126715
7
原创 集合源码分析(七)ConcurrentHashMap实现
并发,几乎总是离不开集合这类高级数据结构的支持。如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。 总结:其实可以看出JDK1.8版本的ConcurrentHashMap的数据结构已经接近HashMap,相对而言,ConcurrentHashMap只是增加了同步的操作来控制并发,从JDK1.7版本的ReentrantLock+Segment+H...
2018-07-02 01:49:06
214
1
原创 集合源码分析(六)TreeMap实现
内部最后会存在左旋和右旋的问题public class TreeMap<K,V> extends AbstractMap<K,V> implements NavigableMap<K,V>, Cloneable, java.io.Serializable{private final Comparator<? super K> comparator;...
2018-07-02 01:47:33
156
原创 集合源码分析(五)LinkedHashMap实现
Map接口额的哈希表和链接列表实现,允许null值和null键,不保证映射顺序,但却保证顺序永久不变 简单来说就是LinkedHashMap相比于HashMap来说就是多了这些红色的双向链表而已。 linkedHashMap的核心就是存在存储顺序和可以实现LRU算法 LinkedHashMap 实现与 HashMap 的不同之处在于,后者维...
2018-07-02 01:46:45
178
原创 集合源码分析(四)HashMap实现
HashMap是常用的Java集合之一,是基于哈希表的Map接口的实现。与HashTable主要区别为不支持同步和允许null作为key和value。由于HashMap不是线程安全的,如果想要线程安全,可以使用ConcurrentHashMap代替。 HashMap的底层是哈希数组,数组元素为Entry。HashMap通过key的hashCode来计算hash值,当hashCode相同时,...
2018-07-02 01:45:23
236
原创 集合源码分析(三)HashSet实现(JDK1.8)
HashSet。不保证有序(因为底层是hashmap),允许使用null(因为hashmap允许)public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializableprivate transient HashMap<E,O...
2018-07-02 01:43:20
217
原创 JavaSE集合源码分析(二)--深入理解LinkedHashSet原理(JDK1.8)【修改中】
关于LinkedHashSet类:LinkedHashSet 根据元素的 hashCode 值来决定元素的存储位置,但它同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的。LinkedHashSet插入性能略低于 HashSet,但在迭代访问 Set 里的全部元素时有很好的性能。LinkedHashSet:(链表,有序,不重复) LinkedHashSe...
2018-07-02 01:42:31
197
原创 JavaSE集合源码分析(一)--深入理解ArrayList原理(JDK1.8)
ArrayList :1)ArrayList内部是通过一个Object数组实现的,当数组填满之后会根据需要进行扩容 2)最好预估ArrayList的大小,并设置其初始容量,以避免不必要的扩容所造成的性能问题。 3)ArrayList的初始容量是10,ArrayList每次扩容都将容量变为原来的1.5倍,若还小于所需的最小值,那么直接分配容量为所需值。 4)ArrayList线程不安全,允...
2018-07-02 01:41:08
198
原创 PyQt5 实时获取屏幕界面图像,python3使用matplotlib
PyQt5制作屏幕实时获取界面,采用matplotlib库实现波形图
2017-10-06 01:20:43
10367
4
原创 PE结构
什么是PE文件百度百科1.常见的PE文件:exe、dll、ocx 、sys……2.OS和可执行文件的关系:OS依靠PE结构知道代码和数据是如何分布的。可执行文件的格式是操作系统本身执行机制的反映。3.Exe和Dll都是使用完全相同的PE格式,唯一的区别就是用一个字段标识出这个文件是Exe还是Dll4.32位和64位PE格式不区别:64位Windows只是针对
2017-05-28 12:33:51
528
原创 8086/8088汇编语言基础
关于汇编语言 百度百科-汇编语言汇编语言作为最接近底层的,人类能够读懂的语言,在计算机快速发展的时代里,同样能够发挥许多作用。相比高级语言,拥有着更高的效率,在逆向方面,软件安全防护方面,发挥着重要的作用。汇编基础知识(概念):指令——控制计算机完成指定操作的命令机器指令——指令的二进制代码形式。例如:CD21H汇编指令——助记符形式的指令。例如:INT
2017-05-19 00:57:41
3754
原创 C语言知识总结(三)
一个由c/C++编译的程序占用的内存分为以下几个部分(内存四区)1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量的值等。其操作方式类似于数据结构中的栈。栈stack是一种先进后出的内存结构,所有的自动变量,函数的形参都是由编译器自动放出栈中,当一个自动变量超出其作用域时,自动从栈中弹出。对于自动变量,什么时候入栈,什么时候出栈,是不需要程序控制的,由C语
2017-05-18 19:05:08
267
原创 C语言知识总结(一)
操作系统结构: 用户模式:应用程序都是运行在用户区域内核模式:操作系统的内核,设备驱动程序,这些都是在内核模式下运行的 大小端与进制关系 一个位只能表示0,或者1两种状态,简称bit,一个位是一个bit一个字节为8个二进制,称为8位,简称BYTE,8个比特是一个字节一个字为2个字节,简称WORD。两个字为双字,简称DWORD 进制:C语言...
2017-05-18 11:56:06
391
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人