心得
南陈
这个作者很懒,什么都没留下…
展开
-
记:印象深刻的开发经历
一、有个需求:将PDF文件转图片上传到腾讯云。之前一直没有做过pdf转图片的功能,在网上搜了一下,发现有三种方法:icepdf、pdfbox、jedal。对比一下:1、使用icepdf转换,会带官方水印,还需要专门的方法去水印,技术复杂;2、使用pdfbox转换,能识别大部分内容,部分内容无法识别;3、使用jedal转换,对中文不友好,而且官方很久不维护了。最终选择使用pdfbox。第一步:引入jar包 <dependency>原创 2021-06-29 10:28:42 · 262 阅读 · 0 评论 -
个人对Servlet的理解
它定义了开发java项目的一套规范。这个规范有什么内容:1、首先这个规范有两种实现方式:web.xml和注解;2、定义了servlet容器、定义了servlet对象的创建方式、以及servlet处理具体业务service方式;3、如何创建管理servlet对象,servlet实例的生命周期,如何处理Http协议请求与响应,会话跟踪与web.xml为例,实现servlet规范,步骤如下:1、加载初始化信息:applicationContext.xml;2、servlet规范规.原创 2021-04-20 17:35:17 · 195 阅读 · 0 评论 -
当大量恶意请求攻击某个接口时,会影响正常用户的使用,怎么应对这种情况?
这里要解决两个问题:1、高并发;2、如何识别恶意用户高并发是一个概念,很难讲请求量达到多少就是高并发。理论上每个接口都会出现高并发。实际上,我们只关心一些热点业务的并发数,这个和硬件、业务的复杂程度、容器节点数都有关。处理高并发的常规操作就是扩容和缓存,里面的操作细节就先不讲。如何识别恶意用户?实际中,程序员什么情况下意识到被攻击了?一般都是等用户反馈说应用访问很卡之类的,查看检查日志发现大量报错,因此在这里就突出了日志的重要性。但是有些人喜欢写continue或return..原创 2021-04-16 15:53:28 · 1512 阅读 · 0 评论 -
如何防止会话信息的泄漏
跟踪会话的四种方式:1、URL重写;2、隐藏表单域;3、Cookie;4、Session;5、根据Session原理,自定义。以我的理解:会话ID,就是用来标识用户的唯一标识,姑且先叫做sessionId。这个sessionId如何创建?可以通过Session对象创建,也可以自定义创建。1、URL重写,就是将sessionId拼接在请求url中,服务端解析url时获取会话ID;2、隐藏表单域,则是将sessionId放到form表单中一起提交;3、Cookie,则是通原创 2021-04-16 15:22:40 · 1128 阅读 · 1 评论 -
为什么要禁用Cookie?
思考一:为什么要禁用Cookie?首先,cookie是服务端生成返回给客户端的,客户端会保存cookie到本地,甚至会永久保存。cookie有跨域(协议、域名、端口其中有一个不同就会产生跨域问题)问题。cookie是和http捆绑在一起的,应该是当时科学家在设计http协议时就定义死了一个叫做cookie的字段用来保存会话信息。既然http协议定义了一个cookie字段用来保存会话信息,那么我们就可以将会话信息保存到cookie里面,并返回给客户端。cookie:加密(用户...原创 2021-04-14 17:24:30 · 3532 阅读 · 0 评论 -
对对称加密与非对称加密算法的一点理解
平时在工作中一直有使用到对称加密与非对称加密算法,以前一直是拿来就用,没有仔细想过里面的实现原理。今天突然有兴趣和时间研究下。1、什么是对称加密算法?加密和解密都使用相同密钥的算法。公式:C=E(P,e) , P=D(C,d) ,其中C是密文,P是明文,如果e=d,则函数P与函数D是对称函数,也即是对称算法。2、什么是非对称加密算法?加密和解密使用不同密钥的算法。...原创 2019-10-28 21:59:20 · 528 阅读 · 0 评论 -
Sql预编译
一、什么是sql的编译?当数据库接收到sql时,需要词法和语义的解析,优化sql,制定执行计划。每次编译都比较耗时间。二、如何减少编译?在实际开发中,对数据库的基本操作就是curd,每次执行sql都有经过编译过程,那么就需要消耗大量的时间,因此就有了预编译的过程,预编译可以想象成将sql变成一个函数,在需要的时候传参进行即可使用。这样就能达到一次编译,多次运行的效果。三、预编译的实...原创 2019-07-06 10:47:18 · 2561 阅读 · 0 评论 -
mysql分区
mysql分区方案:Range分区(Columns Range分区)、List分区(Columns List分区)、Hash分区(Linear Hash分区)、Key分区(Linear Key分区)。一、Range分区:1、当表有主键/unique key时,分区字段必须包含在主键/unique key内;2、Range分区,只有一个分区字段,分区范围必须是连续的,而不能是重叠的;...原创 2019-04-16 23:43:37 · 297 阅读 · 0 评论 -
使用fdldler对手机进行抓包
第一步:打开fiddler,点击Tools,选中第一项Fillder Options第二步:如下图,选中对应的选框。第三步:下载证书。点击Actions,选中第一项,下载证书。第四步:如何需要抓取手机端(终端)的包,则需要Fillder监听设置端口,然后在手机的WIFI里面设置代理IP,端口。(注意:电脑和手机要在同一个网段中)。我自己是在笔记本里面开发wifi给...原创 2019-04-14 09:50:48 · 8883 阅读 · 0 评论 -
log4j使用总结
一、配置文件详解 首先讲下日志等级,等级从高到底分别是:OFF、FATAL、ERROR、WARN、INFO、DEBUG、ALL。总共7个等级,其中最常用的是ERROR、WARN、INFO、DEBUG。在配置文件中,我们可以根据需要设置日志等级,当设置为ERROR等级时,可以打印出ERROR以下的日志信息,当设置为DEBUG等级时,会将DEBUG等级以及以下的等级的日志打印出...原创 2019-04-11 23:36:01 · 289 阅读 · 0 评论 -
关于redis使用的一点理解(一)
redis简介: Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。Redis 与其他 key - value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,se...原创 2019-03-19 11:51:23 · 241 阅读 · 0 评论 -
mysql高并发优化
一、Mysql高并发处理例子1:新增手机号码,先判断是否已经存在,如果不存在则插入,在低并发访问情况下不会发生问题,在高并发下则会插入多条数据。解决方案:通过写sql实现,在插入之前先判断是否已经存在数据。 INSERT INTO test SET(id,username,phone) SELECT '1','测试','10086' FROM DUALWHERE NOT EXIS...原创 2019-03-14 14:06:26 · 2708 阅读 · 0 评论 -
从分布式系统到微服务的一点理解
从分布式系统到微服务----------------------------------------------------------------------------------------------------------------演变过程:分布式系统——>SOA系统——>微服务。SOA:面向服务的架构;Paas:平台即服务;SaaS:软件即服务;-...原创 2019-03-07 10:05:29 · 961 阅读 · 0 评论 -
微服务与Spring Cloud
微服务与Spring Cloud要想搭建一套微服务架构需要考虑如下几个问题:1、微服务之间的通信协议,需要使用同一的通信协议;2、网络拥塞与延迟,一个请求跨多个微服务必定会增大响应时间,可以通过分析请求的具体情况通过缓存或者限制请求数量解决(比如MQ);3、数据一致性问题,每个微服务都要自己的数据库,比如订单系统下单后,但库存系统没有商品。这就是数据一致性和完整性带来的影响,...原创 2019-03-09 10:08:42 · 346 阅读 · 0 评论 -
对系统架构的一点理解
架构的演变--------------------------------------------------------------------------------------------------------------一个单机:一开始时单机架构,用户直接访问服务。缺点:1、不安全,当服务器宕机时,整个系统就无法使用;2、高并发,单机架构处理业务的能力有...原创 2019-03-06 16:30:03 · 902 阅读 · 0 评论 -
关于数据库集群的详细理解
在工作中,我接触到了mysql集群,mysql集群的实现方案有很多种,但是我在项目中真正用到的是主从结构,一主一从结构或者一主多从结构。目的是备份数据和实现负载均衡。举个例子:有四个mysql实例:mysql实例A、mysql实例B、mysql实例C、mysql实例D。默认实例A为主库,其他为从库。由于A是主库,所以系统的所有数据库操作请求都要经过A才能达到B、C、D库。当A接收到请求时,...原创 2019-02-12 16:26:05 · 2912 阅读 · 1 评论 -
关于mybatis、Hibernate、Jpa的一些经验之谈
参加工作几年,也有了一点小小心得,闲暇时将自己平时遇到的一些问题思考写下来,希望有志同道合的朋友一起参与讨论,共同进步。网上已经有很多关于mybatis、hibernate、jpa的基本知识介绍了,这些我也不打算全部复制粘贴下来,我主要是想讲一下自己的想法和理解,有什么错误的地方请大家指正,谢谢!首先讲下jpa,在之前的开发工作中用的最多的就是mybatis和hibernate,在最近的一...原创 2018-12-02 11:39:08 · 3519 阅读 · 0 评论