✈爪哇相关篇
Java相关
青苔小榭
可怕的不是比你强的人,而是比你强的人比你更努力。
展开
-
[转载]如何优雅地记录操作日志?
如何优雅的记录操作日志转载 2023-01-09 10:13:58 · 360 阅读 · 1 评论 -
Spring之底层架构核心概念-过滤器
excludeFilters:排除过滤器includeFilters:包含过滤器原创 2023-01-03 10:37:08 · 913 阅读 · 3 评论 -
【Java-插入排序】
插入排序,一般也被称为直接插入排序。对于少量元素的排序,它是一个有效的算法 。插入排序是一种最简单的排序方法,它的基本思想是将一个记录插入到已经排好序的有序表中,从而一个新的、记录数增1的有序表。在其实现过程使用双层循环,外层循环对除了第一个元素之外的所有元素,内层循环对当前元素前面有序表进行待插入位置查找,并进行移动...原创 2022-07-13 21:08:04 · 470 阅读 · 1 评论 -
多种方式实现斐波那契数列
时间复杂度和空间复杂度都为 n的平方打印结果:可以看出来递归是越来越耗时的。非递归 :时间复杂度 O(n) 空间复杂度O(n)2.3 用数组进行缓存用数组进行缓存:将已经计算出来的值存在数组里避免了重复计算时间复杂度 O(n) 空间复杂度O(n)打印结果:好记性不如烂笔头,知道不如做到。.........原创 2022-07-05 17:06:48 · 462 阅读 · 1 评论 -
HashMap如何确定数组位置
HashMap 底层数据结构为数组+链表+红黑树,当map去put的时候,元素先定位到数组的位置,如果有多个元素定位到了数组的同一个位置,就会生成链表,当链表长度大于8并且数组长度大于64时,会转换为红黑树。先看put方法数组位置定位:第一步:hash运算第二步:用第一步的值与数组容量取余因为hashmap的容量大小是2的幂次方,所以可以通过&运算来优化%运算。例如:(16 % 5 )等价于 (16 & (5 - 1))4.位置计算hash = (h = key.hashCode()) ^ (h原创 2022-07-02 17:37:49 · 2098 阅读 · 1 评论 -
【JAVA】值传递与引用传递
Java中没有引用传递值传递:就是在方法调用的时候,实参是将自己的一份拷贝赋给形参,在方法内,对该参数值的修改不影响原来的实参。引用传递:是在方法调用的时候,实参将自己的地址传递给形参,此时方法内对该参数值的改变,就是对该实参的实际操作。结果:调用前baseValue的值:30调用后baseValue的值:30可以看到,baseValue的值并没有发生变化。结果分析:1)value被初始化为baseValue值的一个拷贝(30)2)value被乘以2后等于60,但baseValue的值仍为303)这原创 2022-06-27 17:23:30 · 525 阅读 · 0 评论 -
【操作系统】用户态和内核态
文章目录1.百度百科:2.个人理解:3. CPU保护模式1.百度百科:用户态(user mode)在计算机结构指两项类似的概念。在CPU的设计中,用户态指非特权状态。在此状态下,执行的代码被硬件限定,不能进行某些操作,比如写入其他进程的存储空间,以防止给操作系统带来安全隐患。在操作系统的设计中,用户态也类似,指非特权的执行状态。内核禁止此状态下的代码进行潜在危险的操作,比如写入系统配置文件、杀掉其他用户的进程、重启系统等。内核模式操作的一种高特权模式,其中的程序代码能直接访问所有内存(包括所有的原创 2022-03-07 06:42:28 · 680 阅读 · 1 评论 -
【线程与线程池】-线程池-execute源码
文章目录1.看代码2.运行结果3.结果分析4.execute源码流程图1.看代码public class ThreadPoolDemo { public static void main(String[] args){ Long start = System.currentTimeMillis(); ThreadPoolExecutor threadPoolExecutor=new ThreadPoolExecutor(10,20,原创 2022-02-17 07:18:24 · 636 阅读 · 0 评论 -
【线程与线程池】-Java自带线程池以及核心参数
文章目录一、Java自带线程池:二、看个例子三、分析1. newCachedThreadPool 在底层实现源码:1.11.22.newFixedThreadPool 和 newSingleThreadPool2.1 newFixedThreadPool:2.2 newSingleThreadPool:四、总结一、Java自带线程池:1.newCachedThreadPool2.newFixedThreadPool3.newSingleThreadExecutor二、看个例子public cl原创 2022-02-16 07:11:33 · 1008 阅读 · 0 评论 -
【线程与线程池】-线程创建的越多,执行效率越高吗?
文章目录1. 提问:线程创建的越多,执行效率越高吗?2.举例:例1:例2:解答:原因:3.总结1. 提问:线程创建的越多,执行效率越高吗?2.举例:例1: public static void main(String[] args) throws InterruptedException { Long start = System.currentTimeMillis(); final Random random= new Random(); final原创 2022-02-15 06:34:32 · 996 阅读 · 0 评论 -
JDK1.7-为什么hashmap会出现死循环?
文章目录问题:为什么在JDK1.7中hashmap会出现死循环?(CPU100%)1.头插法2.扩容3.总结问题:为什么在JDK1.7中hashmap会出现死循环?(CPU100%)1.头插法JDK1.7中采用的是头插法,即从头部插入。比如:在x01位置已存在A,经过hash运算后B也需要插入到x01位置。那么插入之后的结果是这样的:当有新插入的值,最先插入的数据会进入到链表部分。2.扩容死循环发生在并发扩容阶段这是hashmap初始状态:在并发的时候,有两个线程同时对hashm原创 2021-12-21 06:56:16 · 1358 阅读 · 0 评论 -
JMM内存模型
两个线程操作,共享变量如何变化1.read(读取):作用于主内存变量,把一个变量值从主内存传输到线程的工作内存中,以便随后的load动作使用2.load(载入):作用于工作内存的变量,它把read操作从主内存中得到的变量值放入工作内存的变量副本中。3.use(使用):作用于工作内存的变量,把工作内存中的一个变量值传递给执行引 擎,每当虚拟机遇到一个需要使用变量的值的字节码指令时将会执行这个操作。4.assign(赋值):作用于工作内存的变量,它把一个从执行引擎接收到的值赋值给 工作内存的变量,每当原创 2021-12-01 06:54:22 · 262 阅读 · 0 评论 -
【Spring】手把手教你->写出spring底层原理
文章目录1.ApplicationContext2.自己手写注解2.1 Autowired2.2 Component2.3 ComponentScan2.4 Scope2.5 ZjyValue3.相关类3.1 BeanDefinition3.1 BeanPostProcessor3.2 InitializingBean3.3 ZjyBeanPostPocessor3.4 ZjyValueBeanPostPocessor3.5 AppConfig3.6 BeanNameAware3.7 UserInterf原创 2021-10-25 06:52:45 · 307 阅读 · 1 评论 -
取配置需求实现思路
上一篇的需求如何实现呢?你的想法是不是这样的:先判断村儿,再判断渠道,再判断用户类型,然后得到配置。我按照这个思路画流程图,成功给自己画出了个闭环…其实还有一种思路,很简单:将所有配置读取到内存中,然后filter按条件筛选,最终选出来符合条件的配置。 /** * * @param channel 用户渠道 * @param village 村 * @param isPay 11 付费 21 未付费 */ public Str原创 2021-06-21 09:36:22 · 168 阅读 · 5 评论 -
论trycatch的重要性
文章目录前言:1. 以下举例,业务1,2,3 并无关联2.但是如果将业务1,2 catch住的话 ,是不会影响后续业务的进行的。结尾前言:为什么想写try catch呢?业务场景:前端调用登陆接口,后端返回一系列的配置项,eg:此用户使用A侧还是B侧,某页面是否要给此用户展示,是否允许此用户使用某功能等。这些配置之间没有关联性。但当一段代码报错,如果没有异常捕获,后续所有代码将无法执行,即无法正常返回配置项,会影响用户登录。1. 以下举例,业务1,2,3 并无关联这样写,毫无疑问,会报错pu原创 2021-06-10 11:48:18 · 1314 阅读 · 0 评论 -
线上数据清洗-一个有趣的算法
需求1:I look at youYou look at me两个功能:a.我可以查看谁 look at 了我 b.查看我look at 了谁。历史设计:MySQL数据库分了100张表,当 I look at you , 我的表里存一条数据: I look at you 状态为0 ,you的 表里插一条数据 我被你look at 状态为1 。 当You look at me ,you的表里插入 状态为0 的数据,我的表里插入状态为1 的数据,即:一方look at 插入双方的数据原创 2021-06-08 20:07:48 · 593 阅读 · 2 评论 -
清理线上Redis没有设置过期时间的key
文章目录前言:发现后处理:一、改代码二、如何给线上的30个key后补过期时间?第一版:使用Python脚本第二版:Job第三版:哪些数据可以删掉?第四版:如何控制?第五版:你有几台Redis前言:我在开发中写了两个Redis的key,没有设置过期时间。原因是:在视频呼叫接通、挂断的时候会把key删除,当时觉得没有必要设置过期时间。项目上线后发现,这俩key已经有了30万的数据没有被删除。经分析发现:呼叫超时、杀进程等情况是不能调到删key接口的,所以才导致了这俩key有30万条都没能被删除。发现原创 2021-05-29 09:53:14 · 1954 阅读 · 6 评论 -
break、return、continue的区别
放段代码,自己反思 private static List<Integer> list = new ArrayList<>(); static { list.add(1); list.add(2); list.add(3); list.add(4); list.add(5); list.add(6); } pub原创 2021-03-25 09:39:33 · 206 阅读 · 0 评论 -
Elasticsearch或查询
查询A不存在或 存在但未达到B BoolQueryBuilder ABuilder = QueryBuilders.boolQuery(); BoolQueryBuilder a1 = QueryBuilders.boolQuery(); a1.mustNot(QueryBuilders.existsQuery("A")); BoolQueryBuilder a2 = QueryBuilders.boolQuery(); a2原创 2021-03-08 21:31:12 · 116 阅读 · 1 评论 -
spring事件驱动
事件驱动模型的本质就是观察者模式,即发布订阅模式。demo/** * @program springboot-hello * @description: 事件发布类 * @author: zhangjingyi * @create: 2020/09/22 09:52 */public class MyEvent extends ApplicationEvent { public MyEvent(Object source) { super(source);原创 2020-09-22 09:58:45 · 325 阅读 · 0 评论 -
java集合之Set
文章目录java的集合体系HashSet、LinkedHashSet、TreeSet示例1:示例2:小总:java的集合体系今天咱们就来唠唠HashSet、LinkedHashSet、TreeSet示例1:@Test public void test(){ List<Integer> list = new ArrayList(); list.add(4); list.add(2); list.add(4);原创 2020-08-11 19:10:11 · 185 阅读 · 0 评论 -
Lambda表达式再思考
之前写过一篇关于Lambda表达式的文章 ,最近又回头看了看,觉得不太满意,从新思考了一下,再写篇新的。本文参考《Java8实战》 ,作者:[英] Raoul-Gabriel Urma [意] Mario Fusco [英] Alan Mycroft第一天:产品经理来找你,说:“我这里有一堆苹果,我要把绿的拿出来”好了,于是我写了下边的代码:苹果类:import lom...原创 2020-01-19 14:37:45 · 571 阅读 · 0 评论 -
Bigdecimal遇到的坑-equals和compareTo
文章目录前言1.equals2.compareTo前言运营有个需求,当首付比例为10%的时候没有加融上限于是我写了以下代码:if (vo.getRatio().equals(new BigDecimal(“0.1”)) ){return null;}else {xxx}后来测试同学来找我了,说“不对丫,首付比例10%的时候还是会有加融上限的丫!”我心里觉得“不对丫,我加了限制丫...原创 2020-01-14 11:37:51 · 1944 阅读 · 0 评论 -
javax.servlet.http.HttpServletResponse下爆红线
问题:javax.servlet.http.HttpServletResponse下突然爆了红线解决方法: 在Tomcat 的lib里找到servlet-api.jar引进项目里,F5刷新即可原创 2017-03-13 09:11:59 · 5678 阅读 · 5 评论 -
把Tue Mar 26 00:00:00 CST 2019转换成正常格式
用 SimpleDateFormat @Test public void Test2(){ Date time =new Date("Tue Mar 26 00:00:00 CST 2019"); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); String ti...原创 2019-03-06 17:14:36 · 77411 阅读 · 7 评论 -
XXL-JOB 初了解
原创 2019-02-25 13:58:06 · 430 阅读 · 0 评论 -
返回的日期后总挂着.0
现象:原因:我在接收时间的时候用的String类型private String setupDate;//成立时间解决方法:一:把返回类型改成Map而不是用实体二:改成Date类型接收并添加注释@JsonFormat(pattern=“yyyy-MM-dd HH:mm:ss”)@JsonFormat(pattern=“yyyy-MM-dd HH:mm:ss”)private Date...原创 2019-02-12 20:25:28 · 839 阅读 · 5 评论 -
MissingServletRequestParameterException: Required String parameter 'xx' is not present
org.springframework.web.bind.MissingServletRequestParameterException: Required String parameter ‘socialUnifiedCreditNo’ is not present解决方法:请求的路径后挂上参数原创 2019-01-29 20:10:10 · 4267 阅读 · 0 评论 -
Mac idea安装mybatis plugin重启之后 Fatal error initializing plugin com.seventh7.plugin.mybatis
Mac idea安装mybatis plugin重启之后报错: Fatal error initializing plugin com.seventh7.plugin.mybatis项目启动不了我查了两个小时,很多都是Windows系统下的解决方案,在此放上Mac解决方式。打开终端:cd Application\ Support/IntelliJIdea2018.3/删除安装的插件...原创 2019-01-07 15:02:39 · 2616 阅读 · 0 评论 -
【java基础】Map数据的存进和取出的顺序相同
Map数据的存进和取出的顺序相同,需要用到linkedHashMap结构,如下所示:import java.util.HashMap;import java.util.LinkedHashMap;import java.util.Map;import java.util.TreeMap;/* * @auther 张静怡 * @DESCRIPTION * @create 2018...原创 2018-12-11 21:35:12 · 2239 阅读 · 1 评论 -
利用Java8 list.stream().sorted解决不同状态的自定义排序规则
文字描述:三个状态applyStatusDesc(申请状态),repaymentStatus( 0 未还 1已还), overStatus( 逾期状态 0:未逾期,1:已逾期)。当applyStatusDesc为:“待确认”,“待审核”,“待发送”,“待放款”,按照:“待确认”,“待审核”,“待发送”,"待放款"顺序排序,如果数据为相同状态,则按createTime排序。比如:有多条appl...原创 2019-03-06 17:54:46 · 21423 阅读 · 3 评论 -
java-分页PageInfo总页数只显示10条
原代码:public PageInfo<ysTo > selectPageList(ysTo sysTo){ PageHelper.startPage(sysRolesTo.getPageNum(), sysRolesTo.getPageSize()); List<SysTo> sysToList = selectInfo(mcMapper.selectI...原创 2019-03-07 18:32:15 · 6638 阅读 · 2 评论 -
@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss")与北京时间差8小时
原因:默认情况下timeZone为GMT(即标准时区),而北京是在东八区,所以会造成差8小时。方法:1.可以修改注解为: @JsonFormat(pattern="yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date createTime;//注册时间2.如果可以的话可以修改MySQL的默认时区为东八区,可以参考这篇博客:关...原创 2019-05-05 17:54:56 · 33026 阅读 · 3 评论 -
java截取扩展名:文件名. 后的字符串
利用String的lastIndexOf方法 @Test public void lastIndexof(){ String str = "文件管理.pdf"; System.out.println(str.substring(str.lastIndexOf(".")+1)); }其他实例:formIndex为指定索引,代码会从fo...原创 2019-06-14 11:00:24 · 7843 阅读 · 0 评论 -
Java 单链表增删改查+反转链表+查找单链表倒数第K个元素
本方法使用了虚拟头结点,这样就可以把头结点当做一个普通的结点了public class LinkedList<E> { /** * 把node设计成私有内部类,用户并不需要知道你的底层是怎样的,用户并不需要知道你的底层有一个node这样的结构,对用户屏蔽底层的实现细节,用户只要知道LinkedList能干什么就可以了 */ private cl...原创 2019-07-31 20:47:46 · 345 阅读 · 0 评论 -
J2EE13规范
什么是J2EE?J2EE就是基于Java技术的一系列标准. 13个规范1.JDBC(JavaDatabase Connectivity):Java数据库连接JDBC是统一方式访问数据库,它提供独立于平台的数据库访问。程序员只需要用JDBC API写一个程序就可以实现访问不同数据库,而不是针对不同的数据库写不同的程序。JDBC对数据库的访问具有平台无关性。原创 2017-01-13 14:30:42 · 813 阅读 · 20 评论 -
jre system library[jdk1.7] (unbound)
问题:jre system library[jdk1.7] (unbound)解决方法:1..2.3.选择相应的版本原创 2017-06-21 20:24:19 · 6364 阅读 · 5 评论 -
MyEclipse中无法将SVN检出来的项目部署到tomcat中
在Myeclipse中将SVN检出的时候,我遇到了两个问题1.要在Tomcat中部署项目,却没有项目原因:要以web项目方式从SVN检出2.检出的时候显示 “您创建的项目 包含有标准.project文件之外的资源。”从SVN检出后src爆红叉原因:本地工程的project中已经包含了检出的项目,我出错的原因原创 2017-06-15 20:36:21 · 2384 阅读 · 31 评论 -
The processing instruction target matching "[xX][mM][lL]" is not allowed.
原因:前有空格去掉空格:又多出来个叹号,提示:Nogrammar constraints (DTD or XML schema) detected for the document 我在下面加上了 至于为什么呢,我还是个菜鸟,请各路大神赐教!原创 2017-07-03 11:22:45 · 1068 阅读 · 13 评论 -
根据映射文件自动建表
配置文件中存放对象和表的对应关系,对象名对应着表名,对象的属性对应着表的列就是这样的: <!-- name属性:对象中的属性必须要有 type属性:类型,如果不写,Hibernate属性会自动检测 column属性:对应表中的列名,如果不写,默认为属性名 length属性:长度,不是所有的类型都有长度属性,var原创 2017-07-15 17:57:10 · 1000 阅读 · 18 评论