自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(43)
  • 收藏
  • 关注

原创 总结常见的安全加密算法和使用场景

于是,需要使用非对称加密的方式来保证密钥共享的过程中密钥的安全性,而后在通信的过程中使用对称加密,这是最合理的设计方式,在保证安全性的同时又保证了性能。非对称加密:加密时使用了两个密钥,加密和解密过程中分别使用不同的密钥,这两个密钥分别为“公钥”和“私钥”,想要正常完成加密解密过程,就必须配对使用,而在使用过程中,“公钥”是公开的,“私钥”则必须有发送人保密,同时只能由持有人所有。可以被公开的,接收方只需要使用自己已持有的私钥进行解密,这样就可以很好的避免密钥在传输过程中产生的安全问题。

2024-06-19 04:12:43 507

原创 干货!Spring Cloud微服务架构进阶,你还不了解的都在这里

本书详细介绍Spring Cloud相关组件及其在微服务架构中的应用。全书共13章,第1章介绍微服务架构相关的基本概念;第2章介绍SpringCloud中包含的组件以及Spring Cloud约定的上下文;第3章介绍Spring Cloud的基础Spring Boot,包括如何构建一个Spring Boot服务、Spring Boot的配置等;

2024-06-19 03:33:42 351

原创 Android开发—基于OpenCV实现相机实时图像识别跟踪

因为OpenCV中JavaCameraView继承自SurfaceView,若有需要可以自定义编写extends SurfaceView implements SurfaceHolder.Callback的xxxSurfaceView替换使用。

2024-06-19 03:07:53 1058

原创 头歌约瑟夫环问题

printf(“取元素位置参数错!printf(“插入位置参数错!printf(“删除位置参数错!

2024-06-19 02:46:28 550

原创 Android安卓反编译apk源代码(1)

1、资源文件在打包的时候被编译过了,我们直接打开的话是看不到明文的。举例我的apk文件是demo.apk,直接右键解压(也可以把后缀名apk改成zip再解压)2、把刚才生成的classes-dex2jar.jar文件直接拖到。

2024-06-19 02:36:36 568

原创 基于Spring MVC + Spring + MyBatis的【图书信息管理系统(二)】

(6)创建MyBatis操作数据库所需的Mapper接口及其Xml映射数据库操作语句文件。(7)创建业务逻辑相应的接口及其实现类,实现相应的业务,并在类中加入对DAO/Mapper的引用和注入。(8)创建Controller控制器类,在Controller中添加对业务逻辑类的引用和注入,并配置springMVC配置文件。(9)创建相关的操作页面,并使用CSS对页面进行美化。(10)实现页面的各项操作功能,操作要人性化。(11)调试运行成功后导出相关的数据库文件并提交。五、实现代码。

2024-06-19 02:09:22 574

原创 Android倒计时CountDownTimer小记

tv.setText(“倒计时(” + millisUntilFinished / 1000 + “)…重写 父类的方法 onTick() 、 onFinish()继承 CountDownTimer 防范。//┃   ┃ 代码无BUG!//┃   ┃ 神兽保佑。

2024-06-19 02:07:23 302

原创 Android上使用Vector 矢量图片

id下面的defaultConfig下面添加vectorDrawables.useSupportLibrary = true****注意:使用前需要在app build.gradle中添加andro。直接在ImageView的background中引入该资源即可.3.使用android studio 右键,创建。- Size:可以自行调节大小。添加进来之后,类似于下面的代码。- Opacity:不透明性。- 本地SVG,PSD文件。- Path:本地文件路径。4.添加生成vector。

2024-06-19 01:36:55 774

原创 原来ReadWriteLock也能开发高性能缓存,看完我也能和面试官好好聊聊了!

在ReadWriteLockCache类的内部,我们使用Map来缓存相应的数据,小伙伴都都知道HashMap并不是线程安全的类,所以,这里使用了读写锁来保证线程的安全性,例如,我们在get()方法中使用了读锁,get()方法可以被多个线程同时执行读操作;具体来说:就是程序启动的时候,不会将数据加载到缓存,当运行时,需要查询某些数据,首先检测缓存中是否存在需要的数据,如果存在,则直接读取缓存中的数据,如果不存在,则到数据库中查询数据,并将数据写入缓存。判断缓存中返回的数据是否为空,不为空,则直接返回数据;

2024-06-19 01:26:45 736

原创 Android-Framework学习笔记(十)Content-Provider启动过程

Override这篇文章中我们已经分析了,mBase具体指向就是ContextImpl。@Override上面代码返回了ApplicationContentResolver类型的mContentResolver对象,ApplicationContentResolver是ContextImpl中的静态内部类,继承自ContentResolver,它在ContextImpl的构造方法中被创建。

2024-06-19 01:04:00 355

原创 Android 自定义控件 轻松实现360软件详情页

大家别忘了,我们当前的StickyNavLayout内部可是有一个ScrollView的,那么根据事件的转发机制,这个内部的ScrollView肯定会处理上下拖动这种情况的,也就是我们的事件会被它拦截。大家别忘了,我们当前的StickyNavLayout内部可是有一个ScrollView的,那么根据事件的转发机制,这个内部的ScrollView肯定会处理上下拖动这种情况的,也就是我们的事件会被它拦截。我们设置为Vp的值以后,理论上来说,我们的显示已经正常了,控件都按照我们的预期显示了,但是,但是什么呢?

2024-06-19 00:34:32 697

原创 使用 Tomcat+Nginx 实现负载均衡群集

提取码:1qe81.安装配置 Tomcat[root@Tomcat-A ~]# tar zxf jdk-8u91-linux-x64.tar.gz #解压[root@Tomcat-A ~]# mv jdk1.8.0_91/ /usr/local/java #移动,并重命名[root@Tomcat-A ~]# cat /etc/profile #设置环境变量END。

2024-06-19 00:29:13 1010

原创 Android 打造任意层级树形控件 考验你的数据结构和设计(1)

我们的思路是这样的,我们显示时,需要很多属性,我们需要知道当前节点是否是父节点,当前的层级,他的孩子节点等等;3、显示时,比如点击父节点,它的子节点会跟随其后显示,我们内部是个List,也就是说,这个List的顺序也是很关键的;当然了,原理说起来简单,还得控制每一层间关系,添加展开缩回等,以及有了缩进还要能显示在正确的位置,不过没关系,我会带着大家一步一步实现的。当然了,bean可以有很多属性,我们提供你动态的设置树节点上的显示、以及不约束id, pid 的命名,你可以起任意丧心病狂的属性名称;

2024-06-19 00:05:16 1140

原创 上线 1 小时突破 10W 下载,这本《Java 性能调优实战》真的有这么牛吗?

以上六个模块的内容,都是基于某个点的调优,现在是时候把你前面所学都调动起来了,这里将带你进入综合性能问题高频出现的应用场景,学习整体调优方法。JDK 是 Java 语言的基础库,熟悉 JDK 中各个包中的工具类,可以帮助你编写出高性能代码。这里我会从基础的数据类型讲起,涉及容器在实际应用场景中的调优,还有现在互联网系统架构中比较重要的网络通信调优。除此之外,还有多线程高并发带来的性能问题,这些都会在这个模块重点讲解。另一个是调优过程标准,带你了解通过哪些严格的调优策略,我们可以排查性能问题,从而解决问题。

2024-06-18 08:25:45 132

原创 【并发编程】面试官:有没有比读写锁更快的锁?

我们发现,t1首先读取了两个成员变量的值,然后发现了存在写操作,那是因为main函数利用写锁修改了两个成员变量的值,这个时候升级为了悲观读,再次获取成员变量的值,然后再计算两个值的和,为什么要升级悲观读锁呢?这是悲观读+写锁的使用方式,达到的效果与读写锁(ReentrantReadWriteLock) 是一样的,我们一起来验证一下,我将代码稍微做了一点改动,打印了两个线程的执行日志,同时当调用线程是zhangsan的时候休眠三秒,目的是为了看lisi的线程能否成功的获取到写锁,代码如下。

2024-06-18 07:46:53 723

原创 【Java】AWT和Swing概述

其中AWT的全称是抽象窗具集(Abstract Window Toolkit)它是sun公司最早提供的GUI库,这个GUI库提供了一些基本功能,但这个GUI库的功能比较有限,所以后来sun公司又提供了Swing。我们发现按钮乱码了,这是因为idea中设置的是utf-8,而我们这个按钮是以我们当前的操作系统(我的是window)来创建的,是中文的默认是gbk。//1、创建一个window对象,因为panel以及其他的容器都不能独立存在,必须依附于window上。是可以独立存在的顶级窗口,默认使用。

2024-06-18 07:13:51 595

原创 「java面试」Spring的IOC是啥?有什么好处?

不仅如此,在实际的工程中,这种设计模式还有利于不同组的协同合作和单元测试:比如开发这四个类的分别是四个不同的组,那么只要定义好了接口,四个不同的组可以同时进行开发而不相互受限制;在软件工程中,这样的设计几乎是不可维护的——在实际工程项目中,有的类可能会是几千个类的底层,如果每次修改这个类,我们都要修改所有以它作为依赖的类,那软件的维护成本就太高了。这时候,上司再说要改动轮子的设计,我们就只需要改动轮子的设计,而不需要动底盘,车身,汽车的设计了。我们先定义四个Class,车,车身,底盘,轮胎。

2024-06-18 06:36:51 598

原创 「Java深层系列」让我们一起完全吃透时间和日期相关的API指南

zone id 主要包括两个方面,一个是相对于对于UTC/Greenwich的固定偏移量相当于一个大时区,另一个是时区内有特殊的相对于UTC/Greenwich偏移量的地区。这个时间都是用的UTC时间,不和时区有关的,这个无关的意思是同一时刻每个时区下获得的值应该是一致的,可以简单用程序验证一下获取的时间表达内容。如果计算机不联网即使再精确也是不准的,因为UTC会进行调整,而且一般走的时间也是不精确的。GMT是完全符合地球自转的时间,也被称为UT1,格林尼治标准时间被用作英国的民用时间,或UTC。

2024-06-18 06:36:19 704

原创 《设计模式就该这样学》之趣谈装饰器模式,让你一辈子不会忘

最终在新的日志体系中,使用方式如下。来看这样一个场景,上班族大多有睡懒觉的习惯,每天早上上班都时间很紧张,于是很多人为了多睡一会儿,就用更方便的方式解决早餐问题,有些人早餐可能会吃煎饼。需求大致是这样的,系统采用的是SLS服务监控项目日志,以JSON格式解析,因此需要将项目中的日志封装成JSON格式再打印。通过这样两个案例,我们可以总结出来,其实抽象的装饰器是可有可无的,具体可以根据业务模型来选择。但是,如果用户需要一个加2个鸡蛋和1根香肠的煎饼,则用现在的类结构是创建不出来的,也无法自动计算出价格,

2024-06-18 05:57:52 652

原创 《时运赋》 送给坚持在路上的你

北宋宰相 吕蒙正按:叹世事如棋,风云莫测,十年流水,百年沧桑,人事皆同,不为我所控,唯心态见识能求也偶得此好文,献上共赏,勉人勉己,一日三省!吕蒙正当太子的老师时,写有一篇经典之作《破窑赋》(又称劝世文),据说这文章感动了狂傲的太子(后来的宋真宗皇帝),使之谦虚谨慎。文章以自己从凄惨到富贵的经历,引述历史上大量的事实,说明这世界人生命运的起落:“满腹经纶白发不第,才疏学浅少年登科,有先富而后贫,有先贫而后富,蛟龙未遇潜身于鱼虾之间,君子失时拱手于小人之下,天不得时日月无光,地不得时草木不长,水不得时风浪不平

2024-06-18 05:25:13 148

原创 《一天聊一个设计模式》 单例

我是兔兔rabbit,关注我吧,给自己每天的进步找一个机会和理由,不要被无效信息淹没单例(Singleton)

2024-06-18 04:47:03 924

原创 《Jenkins从零到壹》Jenkins集成gitlab自动化构建(JAVA 小虚竹 建议收藏)

❤️作者简介:Java领域优质创作者🏆,优快云博客专家认证🏆❤️技术活,该赏有粉丝问我,能不能在gitlab提交后,自动化部署jenkins?趁着国庆期间把文章码好了,分享给我的粉丝,同时也分享给大家。环境准备jenkins配置安装插件。

2024-06-18 04:17:24 1026

原创 《Effective Java》读书笔记

除此之外,为了任何其他的目的而定义接口是不恰当的。说白了,定义接口是为了接口的行为。有一种接口是常量接口,这是对接口的不良使用。因为常量是实现细节,不应该泄漏出去。对类的用户来说没有价值,反而会干扰。而且如果非final类实现了常量接口,它的所有子类的命名空间也会被接口中的常量所“污染”。定义常量应该用枚举或者不可实例化的工具类。标记接口是没有包含方法声明的接口,而只是知名一个类实现了具有某种属性的接口。例如Serializable。如果想要定义类型,一定要使用接口第七章方法。

2024-06-18 03:45:53 335

原创 [译] 微服务的设计模式

在这种模式下,一个数据库可以与一个以上的微服务对齐,但是必须限制为最大2-3个微服务,否则伸缩,自治和独立性将难以执行。例如,PCF确实具有Loggeregator,它从PCF平台的每个组件(路由器,控制器,diego等)收集日志,并附带应用程序。它有几个缺点,使用这种体系架构时,还需要解决许多问题。到目前为止,我们讨论的设计模式都是分解未开发的应用程序,但是我们所做的工作中有80%是用于棕色的应用程序,这是大型的整体应用程序。例如,保险公司的功能通常包括销售,市场营销,承保,理赔处理,计费,合规性等。

2024-06-18 03:01:37 362

原创 win10搭建并运行kafka

下载后,解压放在目录D:\bigdata(本文所用的目录)下,关于zookeeper以及kafka的目录,路径中最好不要出现空格,比如D:\Program Files,尽量别用,运行脚本时会有问题。

2024-06-18 02:30:05 440

原创 Spring框架入门教程(一)——框架简介

概念在软件业,AOP为Aspect Oriented Programming的缩写,意为:面向切面编程AOP是一种编程范式,隶属于软工范畴,指导开发者如何组织程序结构AOP最早由AOP联盟的组织提出的,制定了一套规范.Spring将AOP思想引入到框架中,必须遵守AOP联盟的规范通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。

2024-06-18 01:55:56 259

原创 SpringBoot——spring-data-jpa01

配置自动建表:updata:没有表新建,有表更新操作,控制台显示建表语句。继承JpaRepository接口之后会继承过来一系列的增删改查的方法。这里需要注意的是@Table注解中的参数是数据表的名字。4.继承JpaRepository接口。这里只写了一个新增的方法用来测试。6.controller层。5.编写service类。

2024-06-18 01:23:46 293

原创 Spring Boot属性配置文件详解

我们在使用Spring Boot的时候,通常也需要定义一些自己使用的属性,我们可以如下方式直接定义:com.didispace.blog.name=程序猿DDcom.didispace.blog.title=Spring Boot教程然后通过注解来加载对应的配置属性,具体如下:@Component// 省略getter和setter按照惯例,通过单元测试来验证BlogProperties中的属性是否已经根据配置文件加载了。

2024-06-18 00:54:47 488

原创 Redis面试笔记大全

快照模式并不十分健壮,当系统停止,或者无意中Redis被kill掉,最后写入Redis的数据就会丢失。19.如何理解分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然能够保证对外提供满足一致性和可用性的服务,除非是整个网络环境都发生了故障。三者不可共存,可用性和一致性是一对冤家,在容忍网络分区的前提下,要么牺牲数据的一致性,要么牺牲写操作的可用性。36.如果在一个主从复制架构中,为了提高整个架构的吞吐率,在master中持久化好还是在slave中持久化好?35.rdb持久化和aof持久化的不同之处?

2024-06-17 21:17:01 221

原创 Oracle认识及安装

一个数据库至少有一个表空间。Guest访问网络的所有数据都是由主机提供的,Guest并不真实存在于网络中,主机与网络中的任何机器都不能查看和访问到Guest的存在。Guest可以访问主机能访问到的所有网络,但是对于主机以及主机网络上的其他机器,Guest又是不可见的,甚至主机也访问不到Guest。虚拟机与网络中其他主机的关系:只能单向访问,虚拟机可以访问到网络中其他主机,其他主机不能通过网络访问到虚拟机。虚拟机与主机的关系:只能单向访问,虚拟机可以通过网络访问到主机,主机无法通过网络访问到虚拟机。

2024-06-17 20:44:44 420

原创 MysqlDBA运维命令大全

TRUNCATE ( ( data_length + index_length ) / 1024 / 1024, 2 ) AS ‘总大小(MB)’sum(truncate((data_length+index_length)/1024/1024, 2)) as ‘总大小(MB)’,sum(truncate(max_data_length/1024/1024, 2)) as ‘最大值(MB)’,sum(truncate(data_length/1024/1024, 2)) as ‘数据容量(MB)’,

2024-06-17 20:13:06 946

原创 Linux系统:第四章:Linux文件系统

一块硬盘上要保存的数据有很多种,例如:系统引导文件,系统内核文件,应用程序文件,用户数据文件。情况2:解压得到的是安装程序的源码需要进行编译然后再安装,此时/opt目录只是存放解压文件,安装程序执行后通常会安装到/usr/local目录下。这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于Windows下的program files目录。这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘。

2024-06-17 19:44:03 952

原创 JUC并发编程笔记(上)多线程基础知识、Synchronized优化、ReentrantLock

重量级锁:适合多个线程访问,支持并发;缺点:与操作系统交互,效率变低轻量级锁 : 适合多个线程访问,但是多个线程时错开访问的;缺点:一个线程多次为一个对象加锁,锁重入;偏向锁:适合单一线程访问 ,目的是解决锁重入;缺点:只能单一线程访问。

2024-06-17 19:15:09 933

原创 Java线程池面试必备:核心参数、工作流、监控、调优手段

常用的5个,核心池、最大池、空闲时间、时间的单位、阻塞队列;另外两个:拒绝策略、线程工厂类常见线程池的创建参数如下。

2024-06-17 18:44:00 980

原创 Java常用事件监听器与实例分析

在对某一个控件进行动作事件监听的时候,一定要使用addActionListener()方法为该控件添加事件监听,否则就算对该控件写了触发事件,在没有为该控件添加监听时,单击该控件也还是没有用的。//为按钮添加监听事件,监听事件为控件对应的内部类。jTextArea1.setFont(new Font(“楷体”,Font.PLAIN,20));jTextArea2.setFont(new Font(“楷体”,Font.PLAIN,20));jButton = new JButton(“点击触发动作事件”);

2024-06-17 18:14:51 934

原创 Java中高级核心知识全面解析——常用框架(Spring-IOC和-AOP详解)

AOP面向切面编程,AOP是 OOP(面向对象编程)的一种延续,下面我们先看一个OOP的例子。例如:现有三个类,HorsePigDog,这三个类中都有 eat 和 run 两个方法。通过OOP思想中的继承,我们可以提取出一个 Animal 的父类,然后将 eat 和 run 方法放入父类中,Horse、Pig、Dog通过继承Animal类即可自动获得 eat 和 run 方法。这样将会少些很多重复的代码。OOP编程思想可以解决大部分的代码重复问题。但是有一些问题是处理不了的。

2024-06-17 17:37:29 596

原创 Java 打造一款 SSH 客户端,已开源~

最终测试,页面就是下面这个样子:可以看到页面已经出现了类似与shell的样式,那就根据这个继续深入,实现一个webssh。后端实现由于xterm只要只是实现了前端的样式,并不能真正地实现与服务器交互,与服务器交互主要还是靠我们Java后端来进行控制的,所以我们从后端开始,使用jsch+websocket实现这部分内容。

2024-06-17 17:06:04 470

原创 IDEA 的 debug 怎么实现?出于这个好奇心,我越挖越深!

JVM TI(JVM Tool Interface)JVM 工具接口是 JVM 提供的一个非常强大的对 JVM 操作的工具接口,通过这个接口,我们可以实现对 JVM 多种组件的操作,从JVMTM Tool Interface 这里我们认识到 JVM TI 的强大,它包括了对虚拟机堆内存、类、线程等各个方面的管理接口。JVM TI 通过事件机制,通过接口注册各种事件勾子,在 JVM 事件触发时同时触发预定义的勾子,以实现对各个 JVM 事件的感知和反应。

2024-06-17 16:34:45 996

原创 Docker下多机器免密码SSH登录

a1:a2:上面的docker-compose.yml文件中,定义了a0,a1,a2三个容器,用相同的镜像,它们的22端口依次映射到当前电脑的19010、19011、19012三个端口上,通过depends_on保证顺序启动(顺序启动在此处没特殊意义,只是这样得到的ip是顺序的)。

2024-06-17 16:02:02 971

原创 @Scope注解 、@Lazy注解 -【Spring底层原理】

主要的实现都是在doGetBean方法中进行的在doGetBean方法中,通过先去缓存中根据名字获取单例对象,获取到则直接返回如果获取不到就创建实例对象,创建之前会先创建依赖Bean,创建完依赖Bean后就开始创建目标Bean创建的时候会判断bean的定义是否是单例是单例==>去缓存查找是否已经创建了单例,如果创建了直接返回不是单例==>则创建多例。

2024-06-17 15:22:54 856

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除