自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(82)
  • 资源 (8)
  • 收藏
  • 关注

原创 鸿蒙开发工具DevEco Studio的安装及第一个HelloWorld展示

DevEco Studio下载地址https://developer.harmonyos.com/cn/develop/deveco-studionotejs下载地址:https://nodejs.org/zh-cn/使用DevEco Studio需要先安装和配置notejs,如果有安装和配置notejs可以跳过此步骤notejs安装与配置notejs安装下载notejs双击node-v8.11.3-x64.msi安装点击next后,勾选I accept…,点击next选择安装地址,最

2020-09-24 22:02:38 10419 17

原创 CentOs安装jdk

CentOs安装jdk

2022-11-22 21:15:29 580 1

原创 Linux搭建Rabbitmq集群

CentOs 7 搭建RabbitMQ集群

2022-11-21 20:35:20 1560 1

原创 CentOS7 安装rabbitMQ步骤

CentOS7安装rabbit MQ步骤

2022-11-20 10:22:50 1145

原创 关于手写实现Spring注解实现自定义配置功能

前言我们在使用Spring中,常常使用注解来进行配置,例如用@Controller来注解这个类为控制器类,用@Service来注解这个是Service层类,@Autowired来表示对象注入,@RequestParam来表示对象为一个参数等等,那这些功能在Spring中是怎么实现的呢,我们就手动来实现一下配置准备配置application.properties我们需要在根目录下准备一个application.properties文件,并且里面写上scanPackage=com.mvcframewor

2022-01-20 22:17:18 1087

原创 Spring源码构建

前期准备JDK为1.8以上版本首先需要JDK升级到1.8以上的版本Spring源码下载并解压然后需要下载Spring源码,源码地址:https://github.com/spring-projects/spring-framework/archive/v5.0.2.RELEASE.zip,下载完成后解压到相应目录Gradle下载安装下载并解压由于从Spring5开始都采用Gradle编译,所以构建源码钱需要先安装Gradle,本次源码推荐使用Gradle版本为Gradle 4.0,下载地址为

2022-01-16 11:26:39 517

原创 观察者模式实现原理

前言观察者模式定义了对象之间的一对多依赖,让多个观察者对象同时监听一个主题对象,当主题对象发生变化时,它的所有观察者都会收到通知并作出相应的动作。观察者模式又叫发布订阅模式,需要观察者对被观察者发布的的动作进行订阅。实现主要类我们新建的这几个类中,Event是事件类,用于包装触发事件的相关信息;MouseEventType接口中定义了各种事件类型;EventLisenter是监听器类,它是观察者的桥梁;Mouse是被观察者类,当它作出动作时,观察者就会反应并作出相应动作。MouseEventCa

2022-01-15 19:04:02 1525

原创 装饰者模式案例

前言装饰者模式是指在不改变原有对象的基础上,将功能附加在对象上,提供了比继承者更有弹性方案。案例在现实生活中,我们买车一般有基础配置、中配、高配等,在这里我们就可以应用装饰者模式来这种情况进行描述创建车辆接口首先我们创建一个车辆接口,里面有两个方法,分别用于获取描述信息以及价格ICarpublic interface ICar { public String getMsg(); public int getPrice();}创建基础版车NormalCardpublic

2022-01-15 09:52:22 322

原创 适配器案例

前言适配器模式是指将一个类的接口转换成用户期望的另一个接口,是原本接口不兼容的类可以一起工作,属于结构型设计模式。适配器模式最长引用的案例就是电压转换头案例我们在显示生活中的民用电一般是220V交流电,但是我们手机使用的一般是5V的直流电,所需想要给手机充电就需要用到电源适配器来讲220V交流电转换为5V直流电创建220V交流电类220V交流电类,输出220V方法AC220public class AC220 { public int outputAC220V() {

2022-01-13 21:05:17 202

原创 利用模板模式重构JDBC操作业务场景

前言模板模式是指定义一个算法的骨架,并允许子类为一个或者多个步骤提供实现。JDBC操作业务是运用模板模式一个很典型的场景,下面我们就利用模板模式重构JDBC操作业务场景案例我们以查询为例,首先我们定义一个RowMapper接口,这个接口定义了mapRow方法,用于实现实体关系映射RowMapper:public interface RowMapper<T> { T mapRow(ResultSet rs,int rowNum) throws Exception;}接下来,

2022-01-11 20:36:25 227

原创 策略模式的使用

前言策略模式是指定义了算法家族并分别分装起来,让他们之间可以互相替换,使得算法的变化不会影响使用算法的用户策略模式最常用的场景是一个系统需要动态地在集中算法中选择,例如支付场景,接下来我们就以支付场景为里来解释策略模式案例定义支付抽象类Payment首先我们定义支付抽象类Payment :public abstract class Payment { public abstract String getName(); protected abstract double quer

2022-01-09 20:42:55 644

原创 委派模式详解

前言委派模式的基本作用就是负责任务的调用和分配案例显示中,一般公司都是老板给项目经理下达任务,项目经理根据具体情况给相应员工派发任务,所以可以用代码来实现首先,我们新建员工接口IEmployeepublic interface IEmployee { public void doing(String command);}然后新建两种员工类型EmployeeA :public class EmployeeA implements IEmployee { @Override

2022-01-09 16:26:35 398

原创 代理模式详解

代理模式详解前言静态代理动态代理JDK实现方式定义代理类定义接口实现接口测试CGlib方式的动态代理引入CGlib新建代理类新建目标类测试前言代理模式在软件开发中经常用到,它是指为对象提供一种的代理,以控制对这个对象的访问。代理模式主要有两个目的:一是保护目标对象,二是增强目标对象。代理模式主要有两种:静态代理和动态代理,接下来,我们就用实际例子来解释静态代理静态代理实现很简单,就是客户端不直接使用目标对象方法,而是调用代理对象方法,而代理对象方法里面调用目标对象,同时在其前后做相应的增强显示生活

2022-01-09 14:18:08 481

原创 原型模式中的深克隆和浅克隆

前言原型模式是指原型实例指定创建对象的种类,并且通过复制这些原型创建新的对象。在原型模式中,我们涉及到浅克隆和深克隆这两个概念,浅克隆中引用对象仍然指向原来的对象,深克隆则指向新的对象,下面我们就用案例来解释案例我们新建两个类,课程类和视频类,每个课程都有相应的视频Video :public class Video implements Serializable { private String videoName;}Course :public class Course imp

2022-01-05 22:00:21 266

原创 单例模式详解

前言单例模式是确保一个类在任何情况下都绝对只有一个实例,并提供一个全局访问点。实际业务中如J2EE里的ServletContext,Spring中的ApplicationContext等都是单例模式饿汉式单例模式饿汉式单例模式在类加载的时候就立即初始化,并且创建单例对象。public class HungrySingleton { private static final HungrySingleton hungrySingleton = new HungrySingleton();

2022-01-03 20:41:42 505

原创 关于简单工厂模式、工厂方法模式和抽象工厂模式的解析

文章目录前言简单工厂模式创建ICourse接口实现ICourse接口创建工厂类测试工厂方法模式创建课程类接口创建具体实现课程类创建工厂类接口创建具体工厂类测试抽象工厂模式创建笔记和视频接口具体JAVA的笔记和视频创建工厂类接口Java课程工厂实现类测试前言简单工厂模式是由一个工厂对象来决定创建哪一种产品类的实例工厂方法模式是特定类的工厂决定生产这个类的实例抽象工厂模式是由工厂创建一系类的类下面我们就用实际案例来具体解释简单工厂模式创建ICourse接口在案例中我们新建ICourse接口,并

2022-01-03 14:35:11 474

原创 关于JDBC操作数据的演进(从最基础方式到JDBCTemplate)

文章目录前言前期准备原始操作数据库方式创建实体类创建DAO类测试改进1改进2新建db.properties改造JdbcUtils改进3创建模板类JdbcTemplate调用模板类方法改进4创建IRowMapper接口创建StudentRowMapper改造JdbcTemplate改造StudentDao改进5改造IRowMapper改造JdbcTemplate前言在项目中,对数据库进行操作是我们非常重要的一个工作部分,此时我们通常不会使用最原始的数据库操作方法,而是使用一些包装好的中间件来进行数据库操作

2022-01-03 09:50:26 851

原创 软件架构设计原则-合成复合原则

前言合成复合原则要求我们在软件设计中尽量使用对象组合和聚合而不是集成关系达到软件复用的目的,这样可以使系统更加灵活,降低类与类的耦合度。典型案例在软件开发过程中,我们常常会使用到数据库,接下来我们就以数据库连接做一下简单的示例首先,我们新建一个数据库连接类DBConnectionpublic class DBConnection { public String getConnection() { return "MySql数据库连接"; }}然后我们新建一个产

2022-01-02 09:11:07 619

原创 软件架构设计原则-里氏替换原则

前言里氏替换原则简单的理解可以是父类用到的地方可以用子类替换并且不改变逻辑,这就要求子类可以扩展父类的功能,但不能改变父类原有的功能。里氏替换原则要求(1) 子类可以实现父类的抽象方法,但不能覆盖父类的非抽象方法,(2) 子类可以增加自己特有的方法(3) 当子类的方法重载父类的方法时,方法的入参要比父类方法的入参更宽松,但返回值要比父类更严格接下来我们就用一个案例来解释案例在生活中,有矩形和正方形,正方形是长宽相等的矩形,所以我们新建这样两个类public class Rectanger {

2021-12-31 20:32:56 431

原创 软件架构设计原则-迪米特原则

前言迪米特原则是指一个对象应该对其他对象保持最少的了解,又叫最少知道原则,尽量降低类与类之间的耦合度。接下来,我们就以实际案例来说明案例我们有一个系统,其中有Course课程类,Leader领导类,Boss老板类;其中leader可以统计雇员人数,老板可以通过Leader获得雇员人数如下:public class Course {}public class TeamLeader { public void checkNumberOfCourses(List<Course>

2021-12-30 21:12:01 2122

原创 软件架构设计原则-接口隔离原则

前言接口隔离原则是指用多个专门的接口,而不适用单一的总接口,接下来,我们一个实际的案例来解释案例首先我们定义一个动物类IAnimal 接口,接口有eat、fly、swim三种活动public interface IAnimal { void eat(); void fly(); void swim();}然后我们定义鸟类Bird实现动物类IAnimal 接口public class Bird implements IAnimal{ @Override

2021-12-29 19:47:26 177

原创 软件架构设计原则-单一职责原则

前言单一职责是只尽量是一个类或一个方法只是负责一个职责,从而实现降低耦合的目的,接下来我们就用实际案例来解释类的单一职责首先我们有一个课程类如下public class Course { public void study(String courseName) { if("直播课".equals(courseName)) { System.out.println("在线观看,不可倒退"); } else if("录播课".equals(

2021-12-28 21:44:24 222

原创 HTML5中indexedDB存储离线数据示例

简介indexedDB是HTML5 推出的一种轻量级的NoSQL数据库,具有易扩展、快速读写、成本低廉等特点使用var request = indexedDB.open('Html5IndexedDB',2);//创建一个数据库request.onerror = function(e) { console.log(e);}//监听错误事件request.onupgradeneeded = function(event) { var db = event.target.result; var

2021-12-04 10:30:25 971

原创 鸿蒙开发工具DevEco Studio中设置方法带参数注释快捷键

前言以前我在使用eclipse开发的时候,常常喜欢使用shift+alt+J来对方法或者变量进行注释,用来解释方法或者变量的含义,但是我在鸿蒙开发工具DevEco Studio使用这个快捷键并没有这样的效果于是我打算对其进行快捷键的配置DevEco Studio配置注释快捷键点击file->settings弹出相应窗口在这个窗口上左边选择Keymap,然后右边搜索中输入comment,然后就会有各种带comment的功能快捷线出现,然后我们选择other->Fix doc comm

2021-06-08 21:24:47 2513 3

原创 鸿蒙系统中的AdaptiveBoxLayout自适应盒子布局

前言AdaptiveBoxLayout是自适应盒子布局,该布局提供了在不同屏幕尺寸设备上的自适应布局能力,主要用于相同级别的多个组件需要在不同屏幕尺寸设备上自动调整列数的场景。该布局中的每个子组件都用一个单独的“盒子”装起来,子组件设置的布局参数都是以盒子作为父布局生效,不以整个自适应布局为生效范围。该布局中每个盒子的宽度固定为布局总宽度除以自适应得到的列数,高度为match_content,每一行中的所有盒子按高度最高的进行对齐。该布局水平方向是自动分块,因此水平方向不支持match_conte

2021-06-06 09:37:58 738

原创 鸿蒙实现拖拽组件的功能

文章目录前言准备实现拖拽功能前言对于拖拽功能,我们需要用到的是DraggedListener准备首先我们新建一个页面用于实现拖拽的功能然后弹窗中输入页面名称将页面的slice定义到MainAbility中public class MainAbility extends Ability { @Override public void onStart(Intent intent) { super.onStart(intent); super.se

2021-06-05 14:53:47 1904 5

原创 Harmony中PositionLayout确切位置布局

前言在PositionLayout中,子组件通过指定准确的x/y坐标值在屏幕上显示。(0, 0)为左上角;当向下或向右移动时,坐标值变大;允许组件之间互相重叠。

2021-06-05 10:31:40 607 4

原创 鸿蒙系统中StackLayout帧布局

文章目录前言前期准备创建页面StackLayout的使用定义布局定义子组件组件对齐场景展示前言StackLayout直接在屏幕上开辟出一块空白的区域,添加到这个布局中的视图都是以层叠的方式显示,而它会把这些视图默认放到这块区域的左上角,第一个添加到布局中视图显示在最底层,最后一个被放在最顶层。上一层的视图会覆盖下一层的视图StackLayout所包含组件可支持的XML属性见下表:参考文档:https://developer.harmonyos.com/cn/docs/documentation/

2021-06-02 22:06:06 4878 9

原创 鸿蒙系统中的TableLayout网格布局

文章目录前言前期准备创建页面tableLayout的使用定义布局定义text组件的样式定义text组件模拟器显示如下:设置行数和列数前言TableLayout是使用表格的方式划分子组件TableLayout的自有XML属性见下表参考文档:https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-layout-tablelayout-0000001060379893下面我们就以案例来展示其应用前期准备我们还

2021-06-02 21:23:15 716 1

原创 鸿蒙系统中DirectionalLayout线性布局

鸿蒙系统中DirectionalLayout线性布局前言前期准备新建项目新建线性布局页面排列方式垂直排列水平排列对其方式权重前言DirectionalLayout布局用于将一组组件(Component)按照水平或者垂直方向排布,能够方便地对齐布局内的组件。DirectionalLayout的自有XML属性以及所包含组件可支持的XML属性如下参考文档https://developer.harmonyos.com/cn/docs/documentation/doc-guides/ui-java-l

2021-06-01 22:15:18 1715 4

原创 ionic5 路由跳转、跳转传值、返回上一页、返回到根

文章目录准备普通路由跳转路由跳转传值数值传递数值获取NavController 返回上一页使用NavController的back方法实现返回多次跳转返回问题及解决问题解决多个页面跳转到同一个页面的返回问题及解决问题返回到根准备我们在cmd中使用ionic start ionicdeme08 tab新家一个tab类型的项目普通路由跳转普通的路由跳转我们只需要用到routerLink就可以了首先我们新建一个页面ionic g page pinfopinfo.page.html:<io

2021-05-16 12:05:50 2151

原创 ionic5 ion-refresher下拉更新

前言在现实应用中,我们需要有上拉更新,通过上拉的操作触发请求事件,请求最新的数据进行加载,这里我们使用到的组件就是ion-refresher,参考资料如下:https://ionicframework.com/docs/api/refresher接下来,我们就从案例中来学习这样一个组件使用新建项目cmd中我们使用ionic start ionicdemo7来新建项目页面新建列表我们在ts中新建一个数组,并予以赋值,然后在页面中显示出来tab1.page.ts:tab1.page.

2021-05-15 22:29:39 270

原创 ionic5 实现请求数据以及上拉加载更多功能

get请求数据Angular5.x以后get、post和服务器交互使用的是HTTPClientModule模块,所以首先我们需要引入HttpClientModule模块在app.module.ts中引入HttpClientModule并注入app.module.ts:引入HttpClientModule注入HttpClientModule新建get请求的service服务我们把实现get请求的功能整合到一个service里面,然后需要用到get请求的时候调用service相应的方法新建s

2021-05-15 18:42:24 395 2

原创 ionic5 上拉分页加载更多ion-infinite-scroll

在我们使用软件的时候,尤其是列表类型,常常一次性不会展示所有的内容,只有当我们上拉到最底下的时候生成转圈动态图,同时会发送请求数据,从而显示更多的信息,这时候就需要用到上拉分页加载跟多的组件ion-infinite-scroll参考资料https://ionicframework.com/docs/api/infinite-scroll下面我们在利用案例来实现这一功能准备新建项目我们使用ionic start ionicdemo06创建项目新建列表我们首先在ts中新建list数组变量,然

2021-05-14 21:07:10 527 3

原创 ionic5 中一个页面弹出另一个页面以及页面间的传值

前言要实现一个页面弹出另一个页面我们需要用到modal,参考资料:https://ionicframework.com/docs/api/modal下面我们用实际案例来验证这个功能准备新建modal页面ionic g page modal新建login组件ionic g component modal/components/login在tab1页面新建按钮链接到modal<ion-button [routerLink]="['/modal']"> 跳转到模态对话

2021-04-30 22:42:09 375 2

原创 ionic5中手势相关事件的使用

文章目录前言准备使用tap(点击)、press(按下)安装hammerjs在项目的src/main.ts中引入hammerjs在app.module.ts中引入HammerModule测试前言ionic5中的gestures手势事件包括:tap(点击)、press(按下)、pan(随着手指移动)、swipe(随着手指迅速移动)、rotate(旋转)、pinch(缩放)等准备首先我们在项目中新建一个页面用于演示手势的运用ionic g page gestures在tab1中新建按钮链接到ges

2021-04-28 21:41:56 602 2

原创 ionic5中actionSheet、toast、alert、loading等的使用

文章目录上拉菜单actionSheet 的使用新建页面新建按钮并添加点击事件ts中引入ActionSheetController并声明定义showAction方法不同平台显示效果Toast 提示框新建页面新建按钮并添加点击事件ts中引入ToastController 并声明ts中新建相应方法loading加载样式新建页面新建按钮并添加点击事件ts中引入loadingController并声明ts中新建相应方法alert弹窗新建页面新建按钮并添加点击事件ts中引入AlertController并声明ts中新建

2021-04-27 22:38:59 966

原创 ionic5 中组件内置颜色、自定义组件样式

准备我们使用ionic start ionicdemo04来新建一个项目我们使用ionic g page button来创建一个页面来测试内置颜色和自定义组件样式项目结构如下:接下来我们就在tab1页面上定义一个按钮用于跳转到button页面tab1.page.html<ion-button [routerLink]="['/button']"> 跳转到button页面</ion-button>默认颜色的使用ionic中有很多内置颜色可供选择,省去了

2021-04-24 09:47:09 828

原创 ionic5 侧边栏ion-menu组件以及底部tabs结合侧边栏ion-menu

文章目录说明侧边栏ion-menu组件的基本使用新建项目侧边栏ion-menu使用点击菜单按钮弹出侧边栏侧边栏ion-menuJS实现侧边栏打开功能页面加按钮给ion-menu定义menuId属性控制菜单的页面中引入MenuController 组件初始化构造函数对应方法中通过JS控制侧边栏底部tabs结合侧边栏ion-menu新建tab项目新建页面新建侧边栏给侧边栏菜单添加链接并使其点击后侧边栏关闭说明对于侧边栏的相关的相关使用可以参考文档https://ionicframework.com/docs

2021-04-22 22:12:47 841

原创 ionic5 中的日期组件ion-datetime

准备首先我们在项目中使用ionic g page datetime创建一个测试日期组件的页面然后,在tab1页面创建一个用于跳转到这个页面的按钮 <ion-button [routerLink]="['/datetime']"> 跳转到datetime页面 </ion-button>关于日期组件的使用可以参考文档https://ionicframework.com/docs/api/datetime日期组件默认样式我们在页面上使用ion-datetime

2021-04-20 21:57:52 1852

鸿蒙系统数字消消乐

方块内的数字由2、4、8等随机组成,拖动后会与旁边方块数字比较,相同则合并成一个方块,数字相加,同时顶部的数字会下落覆盖原来的位子;最上面会有计数统计消去的次数,当无法消除数字时游戏结束

2021-06-12

ionic5get请求功能.zip

ionicdemo06代码中在tab3页面中实现了get请求的功能,ionicdata用于模拟服务端为ionic提供相应的数据

2021-05-15

ionicdemo05.zip

ionic5中一个页面弹出另一个页面以及页面间的传值相关代码

2021-04-30

ionicdemo04.zip

博客“ionic5 中组件内置颜色、自定义组件样式”中使用的代码 https://blog.csdn.net/u010574271/article/details/116081889

2021-04-24

ion-menu.zip

ionic5侧边栏相关代码

2021-04-22

ionic5配置需要的工具.zip

ionic5开发环境配置与安装需要的工具安装软件,主要包括jdk-8u144-windows-x64.exe、Git-2.30.1-64-bit.exe、installer_r24.4.1-windows.exe、gradle-6.8.2-all.zip、node-v14.15.5-x64.msi

2021-03-14

struts项目所需包

本资源包含struts项目所需的包,包含asm-3.3,asm-commons-3.3,asm-tree-3.3,commons-fileupload-1.3.1,commons-io-2.2,commons-lang3-3.2,freemarker-2.3.22,javassist-3.11.0.GA,log4j-api-2.2,log4j-core-2.2,ognl-3.0.6,struts2-core-2.3.24,xwork-core-2.3.24

2017-12-28

大鱼吃小鱼游戏

这是一款简单的大鱼吃小鱼游戏,有声音,有时间限定,可以在eclipse软件上直接运行

2014-05-28

空空如也

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

TA关注的人

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