java
科氏加速度
岁寒,然后知松柏之后凋也。
展开
-
java CopyOnWrite原理
CopyOnWrite容器通俗地讲,当我们往容器中添加一个元素的时候,不是直接添加,而是对当前容器copy,复制一个容器,在这个复制的容器中添加元素,添加完之后,再将引用指向这个新容器。优点:CopyOnWrite容器可以并发的进行读操作,而不需要加锁,因为 当前容器不会添加任何元素,所以这也是一种读写分离的思想,读和写的操作分开了。缺点:1.内存占用问题,产生了两个容器2.只能保持数据的最终一致性,无法保持 实时性,所以如果希望读到新数据,不要用copyOnWrite。原创 2024-07-21 10:41:37 · 109 阅读 · 0 评论 -
java函数式编程
lamda、双冒号、stream原创 2021-12-28 19:12:23 · 448 阅读 · 0 评论 -
处理office、word、pdf等常用工具
jacob性能好,功能丰富,但只能在windows使用,需要系统安装 微软officeFree-Spire-PDF-JAVAhttps://www.e-iceblue.cn/Introduce/Free-Spire-PDF-JAVA.html免费版能操作文档,但其他格式导出pdf只有三页如果只是操作word、pdf、xlsx文档,导出文档还是很好的,api简直太简单了,功能也很丰富cloudmersive远程调用接口转pdf,免费版有调用次数限制,一月800,并发限制h...原创 2021-06-01 13:09:22 · 170 阅读 · 0 评论 -
java 输入流输出流干净使用
输入流和输出流都有个数据介质,输入流从数据介质中读取数据,输出流往数据介质中写如数据。谈谈在读取数据时将数据读完全,写也一样。1.输入流InputStream 主要有三个读方法:public abstract int read() throws IOException;public int read(byte b[]) throws IOException { ...原创 2020-03-19 14:42:52 · 203 阅读 · 0 评论 -
java使用poi导出excel太慢
场景是查询数据然后导出excel,接口响应太慢。打日志看各环节花费时间,10W条数据 关联查询出来 3s,导出excel花费5S。网上导出框架在网上查了一些资料,发现EasyPoi框架中所谓的导出大文件,其实是为了防止内存溢出,因为数据文件都被加载...原创 2020-03-16 10:28:46 · 9435 阅读 · 0 评论 -
开发中遇到的中文乱码问题
中文乱码就是编码解码的问题,编码简介-编码方式先说关键点:字节和字符间的编码解码,一定要表明编码方式。举例开发中遇到的问题:1.利用officeonline实现在线播放ppt, ppt文件名是中文, 将文件名用DEC加密后传入接口,接口对其解密。在ide中,解密后是正确的中文名称,但打包运行或上环境,文件名称就乱码了。在网上搜,有种在DES加密解密中 加入base64加密解密的...原创 2020-03-13 10:48:11 · 551 阅读 · 0 评论 -
springboot读取resources下文件方式
https://www.cnblogs.com/whalesea/p/11677657.html以上方式中,想获取文件绝对路径,通过Resource.getFille先得到File 类实例,再得到文件path的方式,在本地启动都可以,但打包运行或linux上全部失败。但是不去得到文件路径,而是得到输入流是可以成功的。得到文件路径也是为了读写,不如直接通过Resource类得到流 ...原创 2020-03-06 18:51:25 · 4707 阅读 · 0 评论 -
app使用微信登录java
微信登录是个oauth2协议,app点击微信授权,弹出页面,用户点击授权后,app获得code,携带code访问服务端,服务端用code、appid(申请)、秘钥 获取用户openid和accesstoken,如果需要更多用户信息,用accesstoken调用微信服务端接口。直接上代码:登录接口: /** * @Description: 微信登录,后端通过code 进...原创 2020-03-04 14:51:56 · 2877 阅读 · 4 评论 -
java长轮询
在服务端向页面主动推送消息的业务场景下,有长轮训和websocket两种思路。springboot 和websocket使用:https://blog.csdn.net/u014203449/article/details/102902078现在看看长轮询:设想一个业务场景:A用户打开页面,要求实时刷新数据,B用户操作新增数据,A页面刷新。1.页面长轮询的做法是,A用户打...原创 2019-11-21 11:06:12 · 3137 阅读 · 0 评论 -
java精确计算使用BigDecimal
加减乘除:转载:https://blog.csdn.net/haiyinshushe/article/details/82721234比较大小,转载https://blog.csdn.net/qq_27988539/article/details/84795260:BigDecimal比较大小使用compareTo(BigDecimal)方法。int flag= bigdemic...转载 2019-10-24 16:32:12 · 202 阅读 · 0 评论 -
hibernate validator校验
转载:https://blog.csdn.net/waynelee0809/article/details/90711049前言公司项目是前后端分离的,为了保证前端传输数据的合法性,对参数进行校验就很有必要。hibernate-validator就是一个不错的参数校验的解决方法。spring-boot-starter-web包里面有hibernate-validator的包,所以不需要引用h...转载 2019-10-15 16:14:08 · 482 阅读 · 0 评论 -
常见的几种编码方式
一、ASCII 码我们知道,计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,...转载 2019-10-09 17:34:03 · 17004 阅读 · 0 评论 -
@Pattern@Validated校验
转载https://blog.csdn.net/qq_36927265/article/details/87864026https://blog.csdn.net/qq_39822451/article/details/83989415@Pattern(regexp = "\\w+$")把这个注解加在entity的参数上,可以选择分类也可以默认;关于注解中需要传的参数:一般默认就填入...转载 2019-06-16 12:24:10 · 14339 阅读 · 0 评论 -
记一个实际运用反射的例子
JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和属性;这种动态获取的信息以及动态调用对象的方法的功能称为java语言的反射机制。这段反射的概念,说的很像那么回事,但又不知道具体该怎么用,百度都是关于Class的api获得属性获得方法等等。到底什么是动态获得类信息?想要对象直接new不行吗?用反射做什么?最...原创 2019-06-02 12:07:55 · 1461 阅读 · 0 评论 -
ArrayList的迭代器和 超强for循环
超强for循环 也是用迭代器实现的。有个面试官,问去除ArrayList的一些元素,当时写的是for循环,判断去除,然后左边退一位。他说不安全。用迭代器遍历安全,迭代器包含一个remove方法,去除元素后自带游标退一位。主要三个方法,hasnext,next,和remove private class Itr implements Iterator<E> { int...原创 2018-05-18 18:17:18 · 1975 阅读 · 0 评论 -
get和post请求区别
OPTIONS 返回服务器针对特定资源所支持的HTTP请求方法。也可以利用向Web服务器发送'*'的请求来测试服务器的功能性。 HEAD 向服务器索要与GET请求相一致的响应,只不过响应体将不会被返回。这一方法可以在不必传输整个响应内容的情况下,就可以获取包含在响应消息头中的元信息。 GET 向特定的资源发出请求。注意:GET方法不应当被用于产生“副作用”的操作中。 POST 向指...转载 2018-05-20 17:37:05 · 497 阅读 · 0 评论 -
阿里云发送短信验证码
阿里云的短信服务平台照着文档,开通秘钥,设置短信签名、模板等之前照着其他博客添加了两个maven依赖,但运行时都会报错。有说是把jar包下载后自己导入项目。最后下面三个依赖成功了 <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk...原创 2018-06-13 17:58:29 · 1130 阅读 · 0 评论 -
java微信小程序登录、解密
一。流程说明https://developers.weixin.qq.com/miniprogram/dev/api/api-login.html 官方有个文档简单来说,就是小程序端执行wx.login()方法获取临时登录凭证code,带着code访问我们的接口,接口用code访问微信的一个接口得到openid和秘钥session_key;小程序端可以调用wx.getUserInf...原创 2018-07-28 15:43:57 · 3953 阅读 · 4 评论 -
commons io
<dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.5</version></dependency><depen转载 2018-08-18 15:52:56 · 133 阅读 · 0 评论 -
java线程池主线程等待子线程执行完成
转载:https://blog.csdn.net/yaowj2/article/details/7431440Java如何等待子线程执行结束今天讨论一个入门级的话题, 不然没东西更新对不起空间和域名~~工作总往往会遇到异步去执行某段逻辑, 然后先处理其他事情, 处理完后再把那段逻辑的处理结果进行汇总的产景, 这时候就需要使用线程了.一个线程启动之后, 是异步的去执行需要执行的内容的...转载 2018-08-19 11:46:58 · 6646 阅读 · 0 评论 -
ThreadLocal
先看个例子主线程和子线程都对 类成员变量u进行修改,两者的修改都会影响主线程的输出u,最后结果可能是2也可能是3public class Test { private static Integer u = 1; public static void main(String[] args) { Thread t = new Thread(new Runnable() ...原创 2018-10-21 13:54:45 · 537 阅读 · 1 评论 -
关于csrf
csrf有一种防范方法是设置token.,客户端请求加一个变量,危险网站虽然伪装请求有cookie,但请求参数中的token他不知道。涉及到一个问题,获取session中的数据,必须发起请求!js无法直接获取(js只能获取cookie),jsp是后端渲染其实是服务端语言,thymleaf.也得通过请求才能获得session数据,如果没请求的情况下第一次进入thynleaf页面,是无法获取ses...原创 2018-10-21 14:21:48 · 181 阅读 · 0 评论 -
Lambda表达式和Stream
1.Lambdahttps://www.cnblogs.com/franson-2016/p/5593080.htmlhttps://www.cnblogs.com/snowInPluto/p/5981400.html使用时发现lambda 中引用的变量必须用final 或类似final修饰,否则报Variable used in lambda expression should be...转载 2019-03-25 21:43:07 · 721 阅读 · 0 评论 -
代码重构
方法:1重复的代码 封装和内联2过长的方法3过长的参数列4相同的参数列,总是在一起的参数5封装和过度封装:一个方法一个功能,一个方法里全是调用别的封装方法 不干实事类:1过大的类2发散式变化:一个类会因为各种新需求而变化太大3散弹式修改:一个变化导致多个类都会变化4依恋情节:一个方法引用了很多个类,那这个方法到底该放在哪个类5删除冗余类6用多态代...原创 2018-05-03 15:24:46 · 109 阅读 · 0 评论