
Java
SioH
Enjoy coding
展开
-
Springboot2 集成 druid 数据库密码加密
一:环境springboot 2.xdruid 1.1.21二:druid加密数据库密码本地下载druid-1.1.21.jar包,运行cmd,输入命令java -cp jar包路径 com.alibaba.druid.filter.config.ConfigTools 数据库密码java -cp druid-1.1.21.jar com.alibaba.druid.filter.config.ConfigTools 数据库密码运行成功输出privateKey:MIIBVAIBAD...原创 2021-07-22 15:37:20 · 1208 阅读 · 2 评论 -
批导功能设计与实现
相关业务批量导出并生成pdf最后压缩成zip包至浏览器下载开发设计后端异步执行,前端直接拿到结果,等待收件箱获取下载链接解析请求,入参判断,权限校验,数据范围校验redis分布式锁,对员工号进行加锁处理,防止业务进行时重复请求使用JAVA8异步线程类CompletableFuture.runAsync异步IO处理设置countDownLatch,开启自定义线程池ThreadPoolExecutor处理业务逻辑countDownLatch.await() 等待执行完毕发送待办提醒,其中包括原创 2021-07-22 15:12:25 · 113 阅读 · 0 评论 -
Java反射(安排的明明白白)
反射是框架设计的灵魂一、什么是反射反射是一种机制/功能,利用该机制/功能可以在程序运行过程中对类进行解剖并操作类中的构造方法,成员方法,成员属性。简而言之:反射就是把Java的各种成分(字段,方法)映射成相应的Java类二、常见应用场景1.最常见的就是编译器给出的提示2.SSM框架的设计大量使用了反射机制三、获取Class的三种方法对象.getClass()使用Clas...原创 2019-05-13 20:35:33 · 190 阅读 · 0 评论 -
response.getWriter().print("中文");前端页面展示乱码
先给contentType设置字符编码即可response.setContentType("text/html;charset=UTF-8");response.getWriter().print("message");原创 2019-05-18 10:56:14 · 2442 阅读 · 0 评论 -
javax.servlet.ServletException: Servlet execution threw an exception
lib文件夹放错位置正确位置应该放在web/WEB-INF/lib原创 2019-05-18 20:23:18 · 22476 阅读 · 16 评论 -
Java实现一个简单的tomcat
今天突发奇想——能不能自己实现一个tomcat?到底能不能呢?分析开始:首先:能想到的技术包括——Java、反射、注解、入口类、Servlet接口、Servlet接口实现类、Http类... 具体思路如下1.定义Tomcat入口类,监听请求2.自定义WebServlet注解,实现urlPattern属性3.定义HttpRequestServlet,请求输入流4.定义HttpR...原创 2019-05-29 20:28:58 · 793 阅读 · 2 评论 -
一张草图
原创 2019-08-05 12:50:24 · 272 阅读 · 0 评论 -
微服务架构基础模型
Github地址微服务架构基础模型包涵:网关注册中心服务提供/消费方注册中心安全验证熔断器URL硬编码解决方案配置中心(基于码云)微型集群策略swagger接口文档消息总线基于rabbitmqGithub地址...原创 2019-06-30 19:17:14 · 758 阅读 · 0 评论 -
MySql优化之索引原理与 SQL 优化
1.Sql性能不高原因查询数据过多(能不能拆,条件过滤尽量少)关联了太多的表,太多join (join 原理。用 A 表的每一条数据 扫描 B表的所有数据。所以尽量先过滤。)没有利用到索引服务器调优及各个参数设置(缓冲、线程数等)2.Sql编写顺序与执行顺序编写顺序select distinct '字段' from '表' join '表' on '条件' ...原创 2019-07-23 20:24:50 · 180 阅读 · 0 评论 -
集合List 、Map、Set总结一下
1 结构特点List 和 Set 是存储单列数据的集合,Map 是存储键和值这样的双列数据的集合;List 中存储的数据是有顺序,并且允许重复;Map 中存储的数据是没有顺序的,其键是不能重复的,它的值是可以有重复的,Set 中存储的数据是无序的,且不允许有重复,但元素在集合中的位置由元素的 hashcode 决定,位置是固定的(Set 集合根据 hashcode 来进行数据的存储,所以...原创 2019-08-05 17:40:54 · 185 阅读 · 0 评论 -
基于C/S架构的模拟图片上传
一个简单的基于C/S架构的模拟图片文件上传DEMO首先要明白上传文件的I/O流的详细过程 如图所示服务端代码public class Server { public static void main(String[] args) throws Exception { //建立ss并指定端口 ServerSocket ss = new Serve...原创 2019-04-25 11:23:07 · 576 阅读 · 0 评论 -
函数式接口、函数式编程及方法引用
一. 函数式接口1. 语法糖(Syntactic sugar)编程中的某一种语法, 让我们使用起来格式简化了.(不能改变底层的逻辑)已经见过的语法糖: 增强for, 泛型, 自动装拆箱.是否有.class字节码文件生成内部类生成的.class文件的名字: 普通内部类: 外部类名$内部类名.class 匿名内部类: 外部类名$1.class , 外部类名$2.class...原创 2019-05-05 16:07:14 · 348 阅读 · 0 评论 -
Stream流
Stream流的概述Stream流是一个集合元素的函数模型,并不是集合,也不是数据结构,其本身并不存储任何元素(或其地址值)。Stream(流)是一个来自数据源的元素队列:元素是特定类型的对象,形成一个队列,Java中的Stream并不会存储元素,而是按需计算。数据源 流的来源。可以是集合,数组等。使用stream流对集合元素或者数组元素操作时,源数据并不改变。流只能遍历一次,用...原创 2019-05-05 16:00:12 · 173 阅读 · 0 评论 -
JAVA技术栈(转)
1 java基础:1.1 算法1.1 排序算法:直接插入排序、希尔排序、冒泡排序、快速排序、直接选择排序、堆排序、归并排序、基数排序 1.2 二叉查找树、红黑树、B树、B+树、LSM树(分别有对应的应用,数据库、HBase) 1.3 BitSet解决数据重复和是否存在等问题1.2 基本2.1 字符串常量池的迁移 2.2 字符串KMP算法 2.3 equals和hashcode...转载 2019-03-25 16:19:23 · 225 阅读 · 0 评论 -
Java中true,false到底是不是关键字 不是!
Oracle java8语言规范:The keywords const and goto are reserved, even though they are not currently used.This may allow a Java compiler to produce better error messages if these C++ keywords incorrectly a...原创 2019-04-06 17:41:47 · 10822 阅读 · 0 评论 -
jar包是什么,做什么用的?
jar包就是别人已经写好的一些类,然后将这些类进行打包,你可以将这些jar包引入你的项目中,然后就可以直接使用这些jar包中的类和属性以及方法。JAR(Java ARchive)是将一系列文件合并到单个压缩文件里,就象Zip那样。然而,同Java中其他任何东西一样,JAR文件是跨平台的,所以不必关心涉及具体平台的问题。涉及因特网应用时,JAR文件显得特别有用。在JAR文件之前,Web浏览器...转载 2017-07-31 14:40:44 · 33896 阅读 · 12 评论 -
JAVA方法SQL语句执行顺序
项目经过首轮测试,提出了N个改进优化方案。加一块大概有150条新的改动,我那块需要改动20来处。于是最近又忙的不亦乐乎,虽然拿着极低的实习工资。但每天还是坚持完成自己的本职工作,很少有懈怠心里。昨天在做查询的时候,碰到个问题。目的就是想在原有的数据请求方法里加条件判断,从前台传入相应的值,调用后台方法获取到需要的数据,然后渲染到页面。看起来确实很简单,事实上也是很简单...原创 2017-06-15 17:23:27 · 1386 阅读 · 0 评论 -
SQL语句学习一
SQL SELECT DISTINCT 语句去重SELECT DISTINCT column_name,column_nameFROM table_name;逻辑运算的优先级:() not and ororder by 排序 默认升序 如需降序 后边加desc关键字insert into table_name(cols1,co...原创 2017-06-06 10:19:56 · 203 阅读 · 0 评论 -
JAVA迭代器原理源码解析
迭代器为什么不定义成类,而定义为一个借口?假设迭代器定义为一个类,我们就可以通过创建对象调用方法来实现集合的遍历。但是,java中拥有很多种集合,他们的数据结构是各不相同的,所以遍历的方式应该是不一样的!最终就没有定义为迭代器类,而无论你是哪种集合都应该具有遍历功能,包含(判断、获取等功能)判断和获取等功能应该是每种集合都应该具备的,而具体的实现方式又不太一样所以把这些特有的功能提取出...原创 2019-04-10 20:08:52 · 570 阅读 · 0 评论 -
Java如何让制作一个文档说明书
如何让制作一个文档说明书- 第一步写一个工具类对这个工具类加上文档注释用工具解析文档注释格式:javadoc -d 目录 -author -version xxx.java- 制作文档说明书报错找不到可以文档化的公共或受保护的类,权限不够给类加上 public 权限...原创 2019-03-28 11:00:43 · 453 阅读 · 0 评论 -
JAVA迭代器遍历并发修改异常ConcurrentModificattionException解析与解决方法
问题:有一个集合["hello","world","java"],请问,我想判断其中有没有"world"元素,如果有就给集合添加一个"javaee"首先我们使用迭代器Iterator对集合进行遍历public static void main(String[] args) { List<String> l = new ArrayList<>();...原创 2019-04-11 11:03:07 · 448 阅读 · 0 评论 -
【算法】递归与循环的优缺点
题:求1+2+3+4+5+…+n的和递归代码public int sum(int n){ if(n==1){ return 1; }else{ return n+sum(n-1); } }while public int sum(int n){ int su...原创 2019-04-03 09:34:57 · 1751 阅读 · 0 评论 -
Lambda
Lambda表达式Lambda表达式, 是Java8版本出现的新特性1. Lambda的引入// 开启一条新线程new Thread(new Runnable() { @Override public void run() { System.out.println("开启了一条新线程!~"); }}).start();上面代码的缺点Th...原创 2019-05-05 15:41:34 · 425 阅读 · 0 评论 -
JAVA递归实现二分查找法
//二分查找法--递归实现class Rank{ public static void main(String[] args){ int[] arr = {0,10,8,9,111}; System.out.println(rank(8,arr)); } public static int rank(int key , int[] a){...原创 2019-03-25 11:26:01 · 542 阅读 · 0 评论