笔记
我是廿六啊
放开手去看这个世界
展开
-
Mybatis学习笔记
Mybatis框架1.三层架构界面层:和用户打交道的,接受用户的请求参数,显示处理结果的(jsp.html.servlet)业务逻辑层:接受了界面层传递的数据,计算逻辑,调用数据库,获取数据数据访问层:就是访问数据库,执行对数据的查询,修改,删除等MVC:M:数据层V:视图层C:控制层三层架构对应的包界面层:controller(servlet)业务逻辑层:Service 包 (XXXservice)数据访问层:dao包(XXXDao包)三层中类的交互用户使用界面层—原创 2020-12-17 12:35:54 · 182 阅读 · 0 评论 -
JDBC从入门到入门
JDBC是什么?java语言连接数据库(一套接口)JDBC的本质是什么?JDBC是SUN公司制定的一套接口(interface)接口都有调用者和实现者面向接口调用,面向接口写实现类,这都属于面向接口编程为什么要面向接口编程?解耦合:降低程序的耦合度,提高程序的扩展力多态机制就是非常典型的:面向抽象编程(不要面向具体编程) 建议:Animal a = new Cat(); 不建议:Cat a = new Cat();喂养的方法是Public void feed(Ani..原创 2020-12-11 22:59:16 · 97 阅读 · 0 评论 -
Spring框架学习(未完结)
定义:spring解决企业开发的难度,减轻对模块之间的管理,类与类之间的管理,帮助开发人员创建对象,管理对象之间的关系。spring的核心技术是 ICO (控制反转)和AOP(面向切面编程),能实现模块之间,类与类之间的解耦合。PDF下载:https://jfdsghhg.lanzous.com/itAYvizh39c**依赖:**类a中使用了类b中的属性和方法,叫做类a依赖类b。优点:轻量,占用资源少,运行效率高针对接口编程,解耦合AOP编程的支持方便继承各种优秀的框架IOC控制反原创 2020-12-02 16:34:10 · 72 阅读 · 0 评论 -
HTML5简单入门
我的第一个网页<!--DOCTYPE:告诉浏览器,我们使用的是什么规范--><!DOCTYPE html><html lang="en"><!--head标签代表网页的头部--><head><!-- 描述性标签,他们是描述我们网站的一些信息--><!-- meta一般来做seo--> <meta charset="UTF-8"> <meta name ="ke..原创 2020-11-25 11:06:12 · 137 阅读 · 0 评论 -
MySql数据库浅谈
数据库驱动应用程序和数据库是通过数据库驱动连接上的JDBCSUN公司为了简化开发人员对数据库操作的统一,提供了一个(java操作数据库的)规范,俗称JDBC这些规范的实现是由具体的厂商去实现对于开发人员来说,我们只需要掌握JDBC接口的操作即可java.sqljavax.sql先倒入这个jar包 mysql-connection-java.jar 可以去Maven仓库进行下载步骤:创建一个普通项目导入数据库驱动[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上原创 2020-11-21 22:53:43 · 137 阅读 · 0 评论 -
单元测试&反射机制(未完结)
单元测试单元测试是指程序猿写的测试代码给自己的类中的方法进行预期正确性的验证单元测试一旦写好了这些测试代码,就可以一直使用,可以实现一定程度上的自动化验证单元测试一般是要使用框架进行单元测试的经典框架:JunitJunit是什么?Junit是Java语言编写的第三方单元测试框架Junit框架的方案可以帮助我们方便且快速的测试我们代码的正确性单元测试概念单元:在Java,一个类就是一个单元单元测试:程序员用Junit编写的一小段代码,用来对某个方法进行功能测试或业务逻辑测试。Ju原创 2020-11-11 21:28:38 · 392 阅读 · 1 评论 -
Socket文件上传演示
目标:实现客户端上传图片给服务器端保存起来客户端常量包public class Constants { public static final String SRC_IMAGE = "E:\\默认\\图片\\证件照\\ZJZ.jpg"; public static final String SERVER_DIR = "D:\\资源\\美女\\"; public static final String SERVER_IP = "127.0.0.1"; public stat原创 2020-11-08 16:41:46 · 145 阅读 · 0 评论 -
实现一个服务端可以同时接收多个客户端的消息
实现一个服务端可以同时接收多个客户端的消息需要在服务端引入多线程在每接受一个客户端的Socket通道,就为他分配一个独立的线程来处理他的消息如此便可实现:一个服务端可以同时接受多个客户端的消息客户端代码public class ClientDemo01 { public static void main(String[] args) throws Exception { // 1.客户端要请求于服务端的socket管道连接。 // Socket(Stri原创 2020-11-08 15:53:59 · 2301 阅读 · 0 评论 -
并发包
并发包CountDownLatch的使用CountDownLatch允许一个或者多个线程等待其他线程完成操作,再执行自己例如;线程1要执行打印:A和C,线程2要执行打印B但线程1在打印A后要线程2打印B之后才能打印C所以:线程1在打印A后,必须等待线程2打印完B后才能继续执行构造器:public CountDownLatch(int count) //初始化唤醒需要的down几步方法:public void await() throws InterruptedException 让当前线程等待,原创 2020-11-04 22:45:58 · 91 阅读 · 0 评论 -
锁的相关知识(悲观锁、乐观锁)
死锁多个线程同时被阻塞,他们中的一个或者全部都在等待某个资源被释放。由于线程无限期的阻塞,因此程序不可能正常的终止。Java死锁产生的四个必要条件:互斥使用,当资源被一个线程使用时,别的线程不能使用不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只能由资源占有者主动释放请求和保持,当资源请求者在请求其他的资源的同时保持对原有资源的占有循环等待,存在一个等待循环队列:p1要p2的资源,p2要p1的资源,这样就形成了一个循环等待。上面的四个条件都成立的时候,就形成死锁。死锁情况下,打原创 2020-11-04 22:45:01 · 159 阅读 · 0 评论 -
线程池详解
线程池什么是线程池?其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁的创建和销毁线程对象的操作,无需反复的创建线程而消耗过多的资源为什么使用线程池?三个好处:降低资源消耗:减少创建和销毁线程的次数,每个工作线程都可以被重复使用,可执行多个任务提高响应速度:不需要频繁的创建线程,如果有线程可以直接用,不会出现系统僵死提高线程的可管理性(线程池可以约束系统最多只能有多少个线程,不会因为线程过多而死机)线程池的核心思想:线程复用,同一个线程可以被重复使用,来处理多个任务。目原创 2020-11-04 22:43:13 · 133 阅读 · 0 评论 -
广播接收机制
广播接收机制创建动态注册广播接收器新建一个类继承BroadcastReceiver,重写onReceive()方法,当有广播来到时,onReceive就会得到执行,那么就在其下面执行相应的逻辑创建intentFilter实例,为其添加action,我们的广播接收器想要接收什么样的广播 ,那么就添加什么样的action创建BroadcastReceiver子类的实例再调用registerReceiver()方法,将两个实例添加进去在onDestry()方法中添加取消注册的代码,调用方法unreg原创 2020-11-02 12:07:08 · 246 阅读 · 0 评论 -
动态申请权限 你真的了解吗
动态申请权限借助的是ContextCompat.checkSelfPermission()方法,此方法接收两个参数,参数一是Context,参数二是具体的权限名称,使用此方法的返回值和PackageManager.PERMISSION_GRANTED做比较,相等就说明用户已经授权,不等就说明用户没有授权。授权就直接执行相应逻辑未授权就调用ActivityCompat.requestPermission()方法向用户申请权限,三个参数,参数一是Activity实例,参数二是一个String数组,我们把要原创 2020-11-02 12:06:06 · 255 阅读 · 0 评论 -
内容提供者ContentResolver
内容和提供者contentResolver怎么获取到文件的保存路径呢?private void saveUsersinfo() { //获取文件的缓存路径,是由系统进行管理的,不够就进行清理 File cacheDir = getCacheDir(); Log.d(TAG, "cacheDir=="+cacheDir); //获取当前文件的保存路径 File fileDir = getFilesDir(); File file = new原创 2020-11-02 12:05:18 · 170 阅读 · 0 评论 -
广播的最佳实践——实现强制下线功能
广播的最佳实践——实现强制下线功能创建一个Activity管理类用于管理所有的活动创建BaseActivity作为所有活动的父类创建登录界面,创建LoginActivity,在里面实现一些界面控件的管理和跳转逻辑在跳转界面里面添加一个空间用于实现强制下线功能这个按钮的功能可以在MainActivity中进行添加,点击事件中发送一条广播新建广播接收器执行相应逻辑在BaseActivity中添加广播接收器注册和取消广播接收器应该在活动处于栈顶的时候,所以应该在onResume和onPause方原创 2020-11-02 12:03:51 · 309 阅读 · 0 评论 -
文件夹的复制(面试题,有一定难度)
文件夹的复制(面试题,有一定的难度)package com.fudao.digui;import java.io.*;import static com.sun.deploy.cache.Cache.copyFile;/*目标:复制文件夹(面试题 拓展) * 源文件:D:/*/public class CopyFile { public static void main(String[] args) { copyDir(new File("E:/fudao/JAVA原创 2020-11-01 15:47:47 · 165 阅读 · 0 评论 -
非规律化递归问题(啤酒问题)
众所周知,递归算法是在java学习中一定会遇到的问题。规律化递归问题可以总结为三要素来进行解决:终结点公式方向(递归算法的方向一定是指向终结点的)而非规律化递归问题是没有章法可寻的 只能靠自己来创建解决的逻辑代码演示package com.fudao.digui;/*目标:非规律化递归 * 啤酒问题 * 一个人有10元钱,一瓶啤酒2元,2个瓶子可以换一瓶酒,4个盖子可以换一瓶酒, * 问 喝酒总数 和剩余瓶子数 和剩余盖子数 15 1 3 * * 核心问题解决方式就是 将原创 2020-11-01 15:11:02 · 728 阅读 · 3 评论 -
字符流不同编码读取乱码问题的解决(转换流)
字符流不同编码读取乱码的问题/** 目标:字符流不同编码读取乱码的问题。 引入: 我们之前用的代码编码和文件编码都是UTF-8编码,字符流读取没有出现乱码!! 字符流读取: 代码编码 文件编码 中文情况。 UTF-8 UTF-8 不乱码! GBK GBK原创 2020-10-31 22:23:09 · 507 阅读 · 0 评论 -
JAVA基础知识总结
关键字关键字的特点:完全小写的字母在开发环境中有特殊颜色标记标识符:是指在程序中,我们自己定义的内容,比如类的名字,方法的名字和变量的名字等,都是标识符命名规则:标识符可以包含字母(区分大小写),0-9数字、美元符号和下划线_标识符不能以数字开头标识符不能是关键字命名规范:类名规范:首字母大写,后面每个单词首字母大写(大驼峰式)变量名规范:首字母小写,后面每个单词首字母大写(小驼峰式)方法名字规范:同变量名常量(不可发生改变的量)常量的分类:字符串常量:凡使原创 2020-09-16 08:04:06 · 570 阅读 · 0 评论 -
集合总结
集合的特点: Set系列集合:添加的元素是无序,不重复,无索引的。 -- HashSet:添加的元素是无序,不重复,无索引的。 -- LinkedHashSet:添加的元素是有序,不重复,无索引的。 -- TreeSet:不重复,无索引,按照大小默认升序排序!! List系列集合:添加的元素是有序,可重复,有索引。 -- ArrayList:添加的元素是有序,可重复,有索引。原创 2020-05-25 18:08:11 · 119 阅读 · 0 评论 -
匿名内部类
/**什么是匿名内部类? 就是一个没有名字的局部内部类。 匿名内部类目的是为了:简化代码,也是开发中常用的形式。匿名内部类的格式: new 类名|抽象类|接口(形参){ 方法重写。 } 匿名内部类的特点: 1.匿名内部类是一个没有名字的内部类。 2.匿名内部类一旦写出来,就会立即创建一个匿名内部类的对象返回。 3.匿名内部类的对象的类型相当于是当前new的那个的类型的子类类型。小结: 1.匿名内部类是一个没有名原创 2020-05-16 21:57:29 · 145 阅读 · 0 评论 -
日历类Calendar.Math 包装类 BigDeciml大数据对象
日历类Calendar通过调用日历类的静态方法 getInstance得到一个当前此刻日期对象对应的日历对象//创建日历对象Calendar c = Calendar.getInstance();//获取当前日期对象Date d = c.getTime();//创建简单的格式化对象来格式化日期对象SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss EEE a");//格式化日期对象String date = s原创 2020-05-16 21:55:32 · 149 阅读 · 0 评论 -
多态
面向对象的三大特征:封装、继承、多态父类类型范围>子类类型范围多态的概念: 同一个类型的对象,执行同一个行为,在不同的状态下会表现出不同的行为特征多态的识别技巧: 对于方法的调用:编译看左边,运行看右边 对于变量的调用:编译看左边,运行看左边多态的使用前提:1.必须存在继承或实现关系2.必须存在父类类型的变量引用子类类型的对象3.需要存在方法重写优势: 在多态形式上,右边对象可以实现组件化切换,业务功能也随之改变,便于扩展和维护。可以实现类与类的解耦;原创 2020-05-13 21:25:55 · 97 阅读 · 0 评论 -
抽象类 与 接口
抽象类抽象类体现的是“模板思想”模板设计的作用:优化代码的架构,提高代码的复用性,相同功能的代码无需重复书写、可以做到部分实现,部分 抽象,抽象的部分可以交给使用模板的人来实现。抽象类:有抽象方法的类一定是抽象类 抽象类不一定有抽象方法抽象类就是要被继承 要不然就失去了意义抽象类要用abstract修饰抽象方法也要用abstract修饰抽象类不能创建对象如果一个类继承抽象类 那么它必须重写抽象类中的抽象方法,否则该类也必须定义为抽象类。接口接口体现的是“规范思想”原创 2020-05-12 12:32:47 · 98 阅读 · 0 评论 -
Collection集合的遍历方式
CollectionDome01package com.itheima._01Collection集合的遍历方式;import java.util.ArrayList;import java.util.Collection;import java.util.Iterator;/** 目标:Collection集合的遍历方式。 什么是遍历? 为什么开发中要遍历? ...翻译 2020-04-22 11:40:55 · 474 阅读 · 0 评论