JAVA
文章平均质量分 60
nothing in the world
2013年工作,从事java软件开发。
展开
-
java 两个list求交集,差集
java两list去交集,差集原创 2022-07-05 16:16:59 · 701 阅读 · 0 评论 -
mybatis自定义handler处理数据库timestamp转java的long类型
mybatis自定义handler处理数据类型映射原创 2022-05-12 15:01:04 · 2482 阅读 · 0 评论 -
秒杀系统优化方案(上)
前一段时间好好研究了秒杀的问题,我把里面的问题好好总结了,可以说是比较全面的了,真的是吐血整理了。由于我先是在word中整理的,格式都整理得比较好,放到博客上格式挺难调,暂时按word的格式来吧,有时间了在好好排版下。主要需要解决的问题有两个:高并发对数据库产生的压力 竞争状态下如何解决库存的正确减少(超卖问题)优化的思路:1) 尽量将请求拦截在系统上游2)读多写少经量多使用缓存3) redis缓存 +RabbitMQ+ mysql 批量入库1. 初始秒杀设计1.1..转载 2021-12-02 11:17:49 · 266 阅读 · 0 评论 -
秒杀系统优化方案(下)
3. 深入优化设计3.1 初始方案问题分析在前面针对数据库的优化中,由于数据库行级锁存在竞争造成大量的串行阻塞,我们使用了存储过程(或者触发器)等技术绑定操作,整个事务在MySQL端完成,把整个热点执行放在一个过程当中一次性完成,可以屏蔽掉网络延迟时间,减少行级锁持有时间,提高事务并发访问速度。可是问题时并发的流量实际上都是直接穿透让MYSQL自己去抗,比如说库存是否卖完以及用户是否重复秒杀都完全是靠查询数据库去判断,造成数据库不必要的负担非常大,然而这些都可以放在缓存做一个标记在服务层进行..转载 2021-12-02 11:13:53 · 505 阅读 · 0 评论 -
java8 lambda遍历list的三种方式
遍历list提取值,放到新的listList<Object> list = new ArrayList();...list.add();//写法1:List<String> aa = new ArrayList<>();permissions.forEach((p -> aa.add(p.getKey())));//写法2:List<String> aa = permissions.stream().map(Object::...原创 2021-10-21 15:56:08 · 4759 阅读 · 0 评论 -
java抽象类继承与实现
一。父类引用指向子类对象时1.若子类覆盖某方法,则父类引用调用子类重新定义的新方法;2.若子类未覆盖某方法,则父类引用调用父类本身的旧方法;3.若子类覆盖某属性,但父类引用扔调用父类本身旧属性;4.若子类未覆盖某属性,则父类引用调用父类本身旧属性;5.父类引用不能访问子类新定义的方法。二。子类引用指向自身对象时1.若子类覆盖某方法,则子类引用调用子类重新定义的新方法;2.若子类未覆盖某方法,则子类引用调用父类本身的旧方法;3.若子类覆盖某属性,则子类引用调用子类重新定义的新属性;原创 2021-08-16 17:21:24 · 812 阅读 · 0 评论 -
springboot 启动后执行指定代码实现方式
一.实现方式:1.实现ApplicationRunner接口@Componentpublic class ApplicationRunnerImpl implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("我实现了ApplicationRunner接口,重写了run方法..."原创 2021-08-06 16:02:33 · 242 阅读 · 0 评论 -
拦截器、过滤器、监听器
拦截器与过滤器的区别 : 1. 拦截器是基于java的反射机制的。而过滤器是基于函数回调,Spring框架支持,可Spring中的数据源、事务管理等。 2.使用范围不同:拦截器不依赖与servlet容器,过滤器依赖与servlet容器。 3. 拦截器只能对action请求起作用,针对类,拦截器可以多次被调用。 而过滤器则可以对几乎所有的请求起作用,在容器启动是初始化调用init方法,以后每个请求都调用doFilter()。作用范围包含拦截器。 ...转载 2021-06-02 17:14:11 · 280 阅读 · 0 评论 -
centos7编译openjdk12
前言: 之前看了一本书叫《深入理解Java虚拟机:JVM高级特性与最佳实践(第3版)》,里面说了编译openjdk,但是个人觉得说的太啰嗦,而且找不到重点,按照书上的流程去做,一堆的问题,下面自己整理了一下这两天采坑一后的经验分享给大家:一.准备工作:我的编译环境如下:centos版本:7.5为了方便大家下载,jdk和openjdk源码我上传到了百度网盘:1.jdk版本:jdk-11.0.11 (编译openjdk需要安装Bootstrap JDK提...原创 2021-05-11 17:54:25 · 291 阅读 · 1 评论 -
centos7安装openjdk11
1.搜索查看安装包:yum search java-11-openjdk显示如下:2.安装openjdk11:yum install -y java-11-openjdk3.查看版本:java -version由于openjdk没有java的商标,所以不会显示java标识,只会显示openjdk的标识,如下:4.设置环境变量: 4.1.查找安装目录:which java 显示如下: ...原创 2021-05-08 16:03:25 · 1233 阅读 · 0 评论 -
java锁
java锁的知识点: 一张图概括:java锁原创 2021-04-01 17:38:37 · 96 阅读 · 0 评论 -
redisson分布式锁
1. 可重入锁(Reentrant Lock)基于Redis的Redisson分布式可重入锁RLockJava对象实现了java.util.concurrent.locks.Lock接口。同时还提供了异步(Async)、反射式(Reactive)和RxJava2标准的接口。RLock lock = redisson.getLock("anyLock");// 最常见的使用方法lock.lock();大家都知道,如果负责储存这个分布式锁的Redisson节点宕机以后,而且这个锁正好处于锁住.转载 2021-03-17 16:01:33 · 178 阅读 · 1 评论 -
HashTable讲解
1、什么是哈希表?哈希表(HashTable)又叫做散列表,是根据关键码值(即键值对)而直接访问的数据结构。也就是说,它通过把关键码映射到表中一个位置来访问记录,以加快查找速度。看到这里你可能比较疑惑,它是怎么加快查找速度的?下一节就有说明!这个映射函数就叫做散列(哈希)函数,存放记录的数组叫做散列表。2、为什么哈希表的速度快?在数据结构中,我们对两种数据结构应该会非常熟悉:数组与链表。数组的特点就是查找容易,插入删除困难;而链表的特点就是查找困难,但是插入删除容易。既然两者各有优缺点,那么我们就将转载 2021-03-12 15:27:03 · 336 阅读 · 0 评论 -
Spring AOP面向切面编程
前言其实, 接触了这么久的 AOP, 我感觉, AOP 给人难以理解的一个关键点是它的概念比较多, 而且坑爹的是, 这些概念经过了中文翻译后, 变得面目全非, 相同的一个术语, 在不同的翻译下, 含义总有着各种莫名其妙的差别. 鉴于此, 我在本章的开头, 着重为为大家介绍一个 Spring AOP 的各项术语的基本含义. 为了术语传达的准确性, 我在接下来的叙述中, 能使用英文术语的地方, 尽量使用英文。什么是 AOPAOP(Aspect-Oriented Programming), 即 面向切转载 2021-03-11 17:42:27 · 265 阅读 · 0 评论 -
SpringBoot集成Shiro实现动态加载权限
一、前言本文小编将基于SpringBoot集成Shiro实现动态uri权限,由前端vue在页面配置uri,Java后端动态刷新权限,不用重启项目,以及在页面分配给用户角色、按钮、uri权限后,后端动态分配权限,用户无需在页面重新登录才能获取最新权限,一切权限动态加载,灵活配置基本环境spring-boot 2.1.7 mybatis-plus 2.1.0 mysql 5.7.24 redis 5.0.5温馨小提示:案例demo源码附文章末尾,有需要的小伙伴们可参考哦 ...转载 2021-02-01 15:29:32 · 582 阅读 · 0 评论 -
DBeaver7.3.3下载(最新版)
百度网盘下载地址链接:https://pan.baidu.com/s/1thsU8j7rkq7sdEoxRTqM1w提取码:yf17原创 2021-01-26 11:42:20 · 2296 阅读 · 4 评论 -
DBeaver 7.1.4下载
官网下载太慢,而且经常无法连接。百度网盘下载链接如下链接:https://pan.baidu.com/s/1I2B3EKjoRAV580JsD7cG8A提取码:a5e8原创 2021-01-26 11:34:08 · 2763 阅读 · 0 评论 -
springboot配置文件优先级
为了搞清楚springboot的配置文件加载优先级,真的搞的头大!这个关系好乱。。。网上有人说jar包中的优先级大于jar包外的优先级等等等,一堆的,我感觉都是翻译的官网文档。。。解释的很乱,下面就我自己测试结果分享给大家。1.首先我写了一个springboot项目,配置文件application.properties(或者application.yaml)2.把这个项目打包成a.jar3.新建springboot项目b,引用a.jar,a.jar中配置属性 xxx=1,b项目同样的appl原创 2021-01-15 14:47:39 · 1417 阅读 · 0 评论 -
java常用的设计模式
使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。毫无疑问,设计模式于己于他于系统都是多赢的,设计模式使代码编制真正工程化,设计模式是软件工程的基石,如同大厦的一块块砖石一样。项目中合理使用设计模式可以完美的解决很多问题,每种设计模式在现在中都有响应的原理来与之对应。在某些场景下,设计模式就是针对某类问题的某种通用方案。一、设计模式简介设计模式分为三个类别: 创建型模式:对象实例化的模式,创建型模式用于解耦对象实例化的过程 结构性模式:把类或对象结合在一...转载 2021-01-06 15:00:17 · 88 阅读 · 0 评论 -
java的23种设计模式(该在什么场景下选择哪种设计模式配合使用,提高代码的质量)
设计模式总结创建型模式核心作用:用来帮助我们创建对象。1.单例模式保证一个类只有一个实例,并且提供一个访问该实例的全局访问点 通俗易懂:就像你有件事每天都要做,你可以让你的秘书帮你做,你可以让他每天都帮你做,而不是要很多个秘书,如果是很多个秘书,你需要每天都重复告诉他们,你要做什么,这样很麻烦,你每天都要花多余的时间跟他说需要做什么。就像程序里面,你对象创建一次就行了,而不是每次执行方法都要创建一次对象,很浪费资源。 单例模式实现:https://blog.csdn.net/qq1..转载 2021-01-06 14:48:23 · 1141 阅读 · 2 评论 -
org.springframework.data.mongodb.UncategorizedMongoDbException
在使用mongodb数据库执行带条件查询操作时遇到以下问题:org.springframework.data.mongodb.UncategorizedMongoDbException: Query failed with error code 2 and error message 'Field 'locale' is invalid in: { locale: "message" }'...原创 2020-04-29 14:19:16 · 12944 阅读 · 0 评论 -
websocket原理
作者:Ovear链接:https://www.zhihu.com/question/20215561/answer/40316953来源:知乎著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。一、WebSocket是HTML5出的东西(协议),也就是说HTTP协议没有变化,或者说没关系,但HTTP是不支持持久连接的(长连接,循环连接的不算)首先HTTP有1.1和1...转载 2020-04-22 15:25:00 · 172 阅读 · 0 评论 -
SpringBoot+Mybatis+postgresql
SpringBoot:正是在这样的一个背景下被抽象出来的开发框架,它本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。总一个一个字爽postgresql:PostgreSQL是一个开源的、对象关系型数据库管理系统(...转载 2020-02-07 14:52:30 · 8965 阅读 · 1 评论 -
评委打分问题(java)
import java.util.Scanner;public class ScoreCount{ public static void main(String args[]){ System.out.println("***************************************************************"); Syste原创 2012-04-06 17:40:30 · 4514 阅读 · 0 评论 -
员工工资问题(java)
import java.util.Scanner;public class Lq3{ public static void main(String args[]) { double a,b,c;//a是应发工资,b是应缴纳的个税,应发工资-3500。 System.out.println("请输入应发工资:");原创 2012-04-06 17:34:57 · 999 阅读 · 0 评论 -
猜数游戏(java)
方法一:import java.awt.*;import java.awt.event.*;public class MyFrame extends Frame implements ActionListener { int a; Button b1 = new Button("得到一个随机数"); TextField tf1 = new TextField(10);原创 2012-04-06 17:32:51 · 427 阅读 · 0 评论 -
酒店管理系统(java)
import java.util.Scanner;public class Hotel{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); String com; String room[][] = new String[10][10];原创 2012-04-04 21:46:12 · 5980 阅读 · 0 评论 -
qq宠物管理系统(java)
import java.util.Scanner;class Dog { private String name; private int health; private int love; private String strain; public void setname(String name){ this.nam原创 2012-04-04 21:17:20 · 3382 阅读 · 1 评论 -
Android学习笔记
Android学习笔记(1)-永远不变的Hello World< xmlnamespace prefix ="o" />Google的Android SDK发布也有一段时间了,一直想研究一下却苦于找不到时间。利用这个周未,开始强迫自己再次进入学习状态,原因很简单:我看好开放的gPhone。SDK的下载与安装并不复杂,网上也有不少同学已经进入状态了,我就不再重复了吧。今天主要讨论转载 2012-04-04 22:06:32 · 1107 阅读 · 0 评论 -
关于一元二次方程求解问题(java)
import java.util.Scanner;import java.math.*;public class Lq2{ public static void main(String args[]) { double a,b,c,d,x1,x2; System.out.println("请依次输入三个项数"); Scanner s=new Scanner(S原创 2012-04-06 17:42:56 · 855 阅读 · 0 评论 -
生日问题(java)
class BirthDate { private int day; private int month; private int year; public BirthDate(int d, int m, int y) { day = d; month = m; year = y;原创 2012-04-06 17:36:53 · 371 阅读 · 0 评论 -
构造方法(java)--关于学生信息的问题
class Student{ int no; String name; float grade; static float sum=0; static int num=0; Student(int n,String na, float d){ no=n; name=na; grade=d; sum=sum+d; num++;原创 2012-04-09 21:10:12 · 901 阅读 · 0 评论 -
类的继承----教师讲课问题(java)
class Teacher{ String name; String school; public Teacher(String name,String school){ this.name=name; this.school=school; } public void lesson(){ } public void int原创 2012-04-10 22:12:57 · 810 阅读 · 0 评论 -
类的继承---教师及学生信息案例
import java.util.Scanner;class Person{int no;String name; public void sr(){System.out.println("请输入姓名:");Scanner s=new Scanner(System.in);name=s.nextLine();System.out.println("请输入学号"原创 2012-04-24 20:02:12 · 1236 阅读 · 0 评论 -
类的继承---输出学生及工人的信息
abstract class Person{ String name; int age; Person(String name,int age){ this.name=name; this.age=age; } abstract void say();}class Student extends Perso原创 2012-04-24 20:07:53 · 1885 阅读 · 0 评论 -
接口的实现---输出姓名
class Father{public void print(String name){System.out.println("姓名是:"+name);}}interface Face{public void printt(String name);}public class Test1 extends Father implements Face{public原创 2012-04-24 21:14:44 · 419 阅读 · 0 评论 -
抽象方法---猴子的行为
abstract class Animal{String name;public abstract void speak();}interface Protectable{void beProtected();}interface Valuable{double getMoney();}class GoldenMonkey exte原创 2012-04-24 20:10:09 · 336 阅读 · 0 评论 -
抽象方法---猫与狗的实例
abstract class Animal{abstract void speak();}class dog extends Animal{void speak(){System.out.println("狗:旺旺");}}class cat extends Animal{void speak(){System.out.println("猫:喵喵");}原创 2012-04-24 20:21:38 · 767 阅读 · 0 评论 -
用HTML5实现手机摇一摇的功能
在百度开发者大会上我介绍过HTML5另外一个重要特性就是DeviceOrientation,它将底层的方向传感器和运动传感器进行了高级封装,提供了DOM事件的支持。这个特性包括两种事件:1、 deviceOrientation:封装了方向传感器数据的事件,可以获取手机静止状态下的方向数据,例如手机所处角度、方位、朝向等。2、 deviceMotion:封装了运动传感器数据的事件,可以获转载 2012-04-29 22:41:51 · 583 阅读 · 0 评论 -
java连接各种数据库的方法
1、Oracle8/8i/9i数据库(thin模式) Class.forName("oracle.jdbc.driver.OracleDriver").newInstance(); String url="jdbc:oracle:thin:@localhost:1521:orcl"; //orcl为数据库的SID String user="test"; String pas转载 2012-05-01 13:16:20 · 244 阅读 · 0 评论