
java
七颗糖很甜
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
SQL操作-给null字段添加内容
使用update给mysql字段空内容填值原创 2022-10-31 16:11:41 · 1649 阅读 · 0 评论 -
static学习
1.static被用来修饰变量,就是静态变量,其中两大用法是可以被所有类对象共享并且不可随意改变,另外可以用 类名.变量名 的方式调用。3.static用来修饰静态代码块,静态代码块只能执行一次,但是当有多个静态代码块的时候,代码会继续往下执行,每一个静态代码块只执行一次。2.static被用来修饰方法,就是静态方法,静态方法中可以调用静态方法,不可以调用非静态方法。可以使用 类名.(静态方法) 调用。原创 2022-10-27 18:04:01 · 147 阅读 · 0 评论 -
JSON数据乱码解决方法
json数据乱码解决方法原创 2022-09-20 11:03:02 · 5935 阅读 · 0 评论 -
java快速排序
快速排序基本原理: 1.首先设定一个分解值,通过该分解值将数组分成左右两部分; 2.将大于或等于分解值的数据放到数组的右边,小于分界值的数据放到数组的左边。此时左边部分中各元素都小于或等于分界值,而右边部分中各元素都大于或等于分界值。 3.然后,左边和右边数据可以独立排序,对于左侧的数组数据,又可以取一个分界值,将该部分数据分成左右两部分,依次右侧类似于左侧。重复上述过程。可以看出这是一个递归定义。切分原理: 把一个数组切分成两个子数组的基本思想 1.找一个基准值,用两个指原创 2021-09-23 21:58:24 · 180 阅读 · 0 评论 -
java希尔排序
希尔排序排序原理:1.选定一个增长量h,按照增长量h作为数据分组的依据,对数据进行分组。2.对分好组的每一组数据完成插入排序。3.减小增长量,最小减为1,重复第二步骤。代码实现:public class Shell {// 对数据a中的元素进行排序 public static void sort(Comparable[] a){// 1.根据数组的长度来确定增长量的大小 int h=1; if (h<a.length/2){原创 2021-09-13 10:25:14 · 145 阅读 · 0 评论 -
java插入排序
java插入排序基本原理: 直接插入排序的基本操作是将一个记录插入到已经排好的有序表中,从而得到一个新的、记录数增1的有序表。对于给定的一组记录,初始时假定第一个记录自成一个有序序列,其余记录为无序序列。接着从第二个记录开始,按照记录的大小依次将当前处理的记录插入到其之前的有序序列中,直到最后一个记录插到有序序列中为止。java代码:public class Insertion { public static void sort(Comparable[] a){ for原创 2021-09-08 18:25:37 · 137 阅读 · 0 评论 -
java选择排序
选择排序基本原理 选择排序是一种简单直观的排序算法,其基本原理如下:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录的位置与第一个记录的位置交换;接着对不包括第一个记录以外的其他记录进行第二次比较,得到最小记录并与第二个位置记录交换;重复该过程,知道进行比较的记录只剩下一个为止。排序过程java实现public class Selection {// 数组中元素进行排序 public static void sort(Comparable[] a){原创 2021-09-07 21:20:19 · 412 阅读 · 0 评论 -
java基础之JVM面试题
1.什么是JVM?java虚拟机包括什么?JVM内存模型? 答:JVM:java虚拟机 运用硬件或软件实现的虚拟的计算机 java虚拟机包括:堆栈,处理器,寄存器 程序计数器:当前线程所执行的字节码的型号指示器,用于记录正在执行的虚拟机字节指令地址,线程私有 java虚拟栈:存放基本数据类型,对象的引用,方法出口等,线程私有。 Native方法栈:和虚拟栈相似,只不过它服务于Native方法,线程私有。 java堆:java内存中最大的一块,所有对象实例原创 2021-07-25 17:34:00 · 224 阅读 · 0 评论 -
MyBatis的工作原理及入门程序
(1)读取MyBatis的配置文件。mybatis-config.xml为MyBatis的全局配置文件,用于配置数据库连接信息。(2)加载映射文件。映射文件即SQL映射文件,该文件中配置了操作数据库的SQL语句,需要在MyBatis配置文件mybatis-config.xml中加载。mybatis-config.xml 文件可以加载多个映射文件,每个文件对应数据库中的一张表。(3)构造会话工厂。通过MyBatis的环境配置信息构建会话工厂SqlSessionFactory。(4)创建会话对象。由会话.原创 2021-04-21 18:41:37 · 272 阅读 · 0 评论 -
MyBatis简介
MyBatis简介Mybatis是当前主流的java持久层框架之一,和Hibernate一样,也是一种ORM框架。特点:性能优异,具有高度的灵活性,可优化性和易于维护等特点。什么是Mybatis?MyBatis 是一款优秀的持久层框架,它支持定制化 SQL、存储过程以及高级映射。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集。MyBatis 可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 POJOs(Plain Ordinary Java原创 2021-04-21 18:40:25 · 481 阅读 · 0 评论 -
spring cloud简介
Spring Cloud简介学习的目标:了解Spring Cloud的概念和特点掌握Spring Cloud Eureka 的使用掌握Spring Cloud Ribbon的使用1.什么是spring cloud? Spring Cloud是一系列框架的有序集合。它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册、配置中心、消息总线、负载均衡、断路器、数据监控等,都可以用Spring Boot的开发风格做到一键启动和部署。Spring原创 2021-04-17 09:35:26 · 317 阅读 · 0 评论 -
CGLIB代理-Spring学习11
CGLIB代理如果要对没有实现接口的类进行代理,可以使用CGLB代理。CGLIB(Code Generation Library):是一个高性能开源的代码生成包,采用非常底层的字节码技术,对指定的目标类生成一个子类。这里我们先简单说一下这两种代理方式最大的区别,JDK动态代理是基于接口的方式,换句话来说就是代理类和目标类都实现同一个接口,那么代理类和目标类的方法名就一样了,这种方式上一篇说过了;CGLib动态代理是代理类去继承目标类,然后重写其中目标类的方法啊,这样也可以保证代理类拥有目标类的同名方法原创 2021-04-13 22:54:03 · 267 阅读 · 1 评论 -
JDK动态代理-Spring学习10
JDK动态代理(学习以下代码注释)通过Proxy代理类来实现的,可以调用Proxy的newProxyInstance()方法来创建代理对象。对于使用业务的接口的类,Spring默认使用JDK动态代理实现Aop.package com.lz.jiaotong.dao;public interface UserDao { public void addUser(); public void deleteUser(); }package com.lz.jiaotong.dao.原创 2021-04-13 21:50:47 · 119 阅读 · 2 评论 -
Aop简介-Spring学习-09
SpringAop简介1.什么是AopAOP(Aspect-OrientedProgramming,面向切面编程),可以说是OOP(Object-Oriented Programing,面向对象编程)的补充和完善。OOP引入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候,OOP则显得无能为力。Aop它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“Aspect”,即原创 2021-04-13 21:46:46 · 185 阅读 · 0 评论 -
基于注解的事务管理-Spring学习08
Spring的事务管理理解事务之前:说一个列子,取钱,比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元。所以,如果一个步骤成功另一个步骤失败对双方都不是好事,如果不管哪一个步骤失败了以后,整个取钱过程都能回滚,也就是完全取消所有操作的话,这对双方都是极好的。原创 2021-04-13 13:06:57 · 172 阅读 · 0 评论 -
Spring事务管理以及基于XML方式的事务式事务-spring学习07
Spring的事务管理理解事务之前:说一个列子,取钱,比如你去ATM机取1000块钱,大体有两个步骤:首先输入密码金额,银行卡扣掉1000元钱;然后ATM出1000元钱。这两个步骤必须是要么都执行要么都不执行。如果银行卡扣除了1000块但是ATM出钱失败的话,你将会损失1000元;如果银行卡扣钱失败但是ATM却出了1000块,那么银行将损失1000元。所以,如果一个步骤成功另一个步骤失败对双方都不是好事,如果不管哪一个步骤失败了以后,整个取钱过程都能回滚,也就是完全取消所有操作的话,这对双方都是极好的。原创 2021-04-13 10:51:40 · 207 阅读 · 0 评论 -
Spring基于注解(Annotation)的装配-spring学习07
基于注解(Annotation)的装配1.常用的注解: @Conponent :可以使用此注解描述Spring中的Bean,是一个泛化的概念,仅仅表示一个组件,并且可以作用在任何层次。 @Repository:功能和@Conponent一样,用于将数据访问层(Dao层)的类标识为Spring中的Bean。 @Service:通常作用在业务层(Service层),用于将业务层的类标识为Spring中的Bean,作用和@Conponent一样。原创 2021-04-10 23:41:23 · 362 阅读 · 0 评论 -
JDBC连接数据库出现错误,调试解决
写了代码后出现了3次错误,以下我来教大家解决。第一个问题:Loading class `com.mysql.jdbc.Driver'. This is deprecated. The new driver class is `com.mysql.cj.jdbc.Driver'. The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary原创 2020-12-03 11:14:08 · 1458 阅读 · 2 评论 -
JAVA学习66-UDP实现聊天
UDP实现聊天发送端:import java.io.BufferedReader;import java.io.InputStreamReader;import java.net.*;public class UdpSenderDemo01 { public static void main(String[] args) throws Exception { DatagramSocket socket = new DatagramSocket(8888);原创 2020-10-16 17:21:49 · 157 阅读 · 0 评论 -
JAVA学习65-UDP通信和初识Tomcat
初识Tomcat服务端: 自定义 S Tomcat服务器 S客户端: 自定义 C 浏览器 BUDP相当于发短信:不需要连接服务器,需要知道对方的地址。发送消息import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetAddress;import java.net.SocketException;//不需要连接数据库public class UdpClientDemo0原创 2020-10-14 23:18:36 · 265 阅读 · 0 评论 -
JAVA学习64-基于C/S的文件上传
文件上传//服务端import java.io.*;import java.net.ServerSocket;import java.net.Socket;public class TcpServerDemo02 { public static void main(String[] args) throws IOException { //创建服务 ServerSocket serverSocket = new ServerSocket(9000);原创 2020-10-12 23:15:46 · 303 阅读 · 0 评论 -
JAVA学习63-通信协议 C/S模式如何建立通信连接
1.5 通信协议协议:约定,就好比我们现在说的是普通话网络通信协议:速率,传输码率,代码结构,传输控制....问题:非常的复杂 大事化小:分层 最常用的TCP/IP协议 重要: TCP:用户传输协议 UDP:用户数据报协议 出名的协议: ICP IP:网络互联协议 TCP和UDP的对比: TCP:相当于打电话 连接,稳定 三次握手,四次握手,最少要交流三次才能建立连接。 断开至少要交流四次才能完全断开。 客户端,服务端 传输完成,释放连接,效率低 UDP:原创 2020-10-07 23:44:16 · 314 阅读 · 1 评论 -
JAVA学习62-网络编程 端口
端口 端口表示计算机上一个程序的进程; 不同的进程有不同的端口号,冲突报错被占用 用来区分软件 被规定0~65536 被分为TCP和UDP 相当于65535*2 TCP:80 那么UDP也可以用80 端口分类: 公有端口0~1023 HTTP:80 HTTPs:443 FTP:21 TELENT:23 程序注册的端口:1024~49151,这些都是分配给用户或者程序 常见的: Tomcat:8080原创 2020-10-05 22:35:13 · 131 阅读 · 0 评论 -
JAVA学习61-IP地址概述及分类和方法
1.3 IPIP地址:InetAdress唯一定位网络上的计算机127.0.0.1:本机localhostIP地址的分类; 1.IP的分类:公网(互联网)和私网(局域网) ABCD类地址:0~255折半折半折半 192.168.xx.xx专门给组织内部使用的 域名:记忆IP问题 IP:好点的域名很贵:www.vip.com唯品会的域名 越短的越贵 2.IPV4 127.0.0.1 ,4个字节组成。每个字节0~255 42亿;三十亿都在北美 3.IPV6 未来都原创 2020-10-03 18:19:43 · 227 阅读 · 0 评论 -
JAVA学习60-网络编程的概述及网络通信要素
网络编程概述:计算机网络网络编程的目的想要达到这个效果需要什么1.如何准确的定位网络上的一台主机 192.168.16.124:端口,定位到这个计算机上的某个资源2.找到了这个主机,如何传输数据?javaweb:网页编程 基于b/s网络编程:TCp/Ip 基于c/s1.2网络通信的要素 人工智能:智能汽车:工厂,人少的地方 伦理问题:不能解决的问题如何实现网络的通信:只需要知道对方的地址: IP 端口号 192.168.16.124:5900 规则:网络通信协议原创 2020-10-03 17:20:14 · 137 阅读 · 0 评论 -
JAVA学习59-消费者生产者解决方法二----信号灯法
解决方法二----信号灯法public class TestPC { public static void main(String[] args) { synContainer container = new synContainer(); new Productor(container).start(); new Customer(container).start(); }}//生产者class Productor extends原创 2020-09-29 22:22:39 · 134 阅读 · 0 评论 -
JAVA学习58-线程通信及消费者生产者问题-管程法
线程通信java提供了几个解决线程之间的通信问题wait() : 表示线程一直等待,直到其他线程通知,与sleep()不同,会释放锁wait(long timeout) :指定等待的毫秒数notify() : 唤醒一个处于等待状态的线程notifyAll() : 唤醒同一个对象所有调用wait()方法的线程,优先级别高的线程优先调度生产者消费者问题-管程法public class TestPC { public static void main(String[] args)原创 2020-09-28 22:28:33 · 128 阅读 · 0 评论 -
JAVA学习57-Lock锁
Lock锁//synchronized和Lock的对比//Lock是显示锁,需要手动开启,别忘记关锁,synchronized是隐式锁,出了作用域自动释放//Lock只有代码块锁,synchronized有代码块锁和方法锁//使用Lock锁,JVM将花费较少的时间来调度线程,性能更好//优先使用顺序//Lock->同步代码块->同步方法//Lock锁的模式class A{ private final ReentrantLock lock=new ReentrantLoc原创 2020-09-28 21:00:36 · 106 阅读 · 0 评论 -
JAVA学习56-解决死锁问题
//死锁:多线程互相抱着对方需要的资源,然后形成僵持public class DeadLock { public static void main(String[] args) { //创建化妆的实例对象 Makeup girl1 = new Makeup(0,"灰姑凉"); Makeup girl2 = new Makeup(1,"白雪公主"); //启动线程 girl1.start(); girl2原创 2020-09-28 00:01:11 · 116 阅读 · 0 评论 -
线程同步及JUC安全集合扩充知识_java学习55
线程同步由于我们通常通过private关键字来保证数据对象只能被方法访问,所以我们争对方法提出了一套机制,就是synchronized关键字。synchronized方法控制对象的访问,每个对象对应一个锁。1.同步方法public synchronized void method(int args){}2.同步块synchronized(锁的对象){}//锁的对象就是变化的量,需要增加,删除,修改的对象缺点:若将一个大的方法声明为synchronized将会影响效率。//不安全的案例//原创 2020-09-27 23:19:52 · 724 阅读 · 0 评论 -
JAVA学习54-线程不安全案例
//不安全的案例//线程不安全,出现了负数,因为没有同步线程,让他们排队买票public class UnsafeBuyTicket { public static void main(String[] args) { //设置线程同步 /*Thread thread=new Thread(); thread.setDaemon(true); thread.start(); */ BuyTicket原创 2020-09-21 20:19:19 · 174 阅读 · 0 评论 -
JAVA学习53-守护线程
线程分为用户线程和守护线程虚拟机必须确保用户线程执行完毕虚拟机不用等待守护线程执行完毕//测试守护线程public class TestDaemon { public static void main(String[] args) { You you = new You(); God god = new God(); //创建守护线程 Thread thread = new Thread(god); thread原创 2020-09-21 19:29:31 · 102 阅读 · 0 评论 -
线程的优先级_java学习52
线程的优先级//线程的优先级意味着获得调度的概率低,但并不意味着优先级低的就不调度,主要看CPU的调度//但一般不会性能导致public class TestPriority { public static void main(String[] args) { //输出主线程 System.out.println(Thread.currentThread().getName()+"-->"+Thread.currentThread().getPriori原创 2020-09-21 19:06:57 · 101 阅读 · 0 评论 -
JAVA学习51-线程礼让
线程礼让礼让线程,让当前正在执行的线程暂停,但不阻塞。将线程从运行状态转换为就绪状态。让CPU重新调度,礼让不一定成功,看CPU心情。public class TestYield { public static void main(String[] args) { MyYield myYield = new MyYield(); new Thread(myYield,"线程a").start(); new Thread(myYield,"线程原创 2020-09-19 22:14:23 · 310 阅读 · 0 评论 -
线程的休眠#java学习50
线程休眠sleep指当前线程阻塞的毫秒数sleep存在异常InterruptedExceptionsleep时间达到后线程进入就绪状态sleep可以模拟网络延时,倒计时等s每个对象都有一个锁,sleep不会释放锁多线程模拟购票public class TestSleep01 implements Runnable{ private int ticketNum=10;//定义的票数 @Override public void run() { whi原创 2020-09-19 21:56:26 · 356 阅读 · 0 评论 -
线程停止_JAVA学习49
线程的停止创建线程:new Thread,线程一旦创建就进入了新生状态。就绪状态:当调用start()方法的时候线程就进入了就绪状态,但并不意味着立即调度执行。运行状态:进入运行状态,线程才真正的执行线程体的代码块。阻塞状态:当调用sleep,wait或同步锁定时,线程进入阻塞状态,就是代码不往下执行,阻塞事件解除后,重新进入就绪状态,等待cpu调度。死亡状态:线程一旦进入死亡状态,就不能再次启动。public class TestStop01 implements Runnable{原创 2020-09-17 15:47:34 · 194 阅读 · 0 评论 -
Lambda表达式及简化_java学习48
Lambda表达式避免匿名内部类定义过多其实质属于函数式编程的概念去掉一些没有意义的代码。只留下核心的逻辑函数式接口的定义: 任何接口,如果只包含一个唯一的抽象方法,那么他就是一个函数式接口 对于函数式接口,我们可以通过lambda表达式来创建该接口的对象/*堆到Lambda表达式 */public class TestLambda01 { //3.静态内部类:把实现类写到内部 static class Like2 implements ILike{原创 2020-09-17 00:27:23 · 275 阅读 · 0 评论 -
JAVA学习47-静态代理对比Thread
静态代理演示:实现静态代理对比Thread举例:婚庆公司代理你处理结婚事件//静态代理模式总结://真实角色和代理角色需要实现同一个接口//代理对象要代理真实对象//好处:代理对象可以做真实对象做不了的事情//真实对象就可以专注做自己的事情public class StaticProxy { public static void main(String[] args) { You you = new You();//你要结婚 WeddingComp原创 2020-09-13 23:04:09 · 180 阅读 · 0 评论 -
JAVA学习-多线程模拟龟兔赛跑
案列:龟兔赛跑-Race1. 首先来个赛道距离,然后要离终点越来越近2. 判断比赛是否结束3. 打印出胜利者4. 龟兔赛跑结束5. 故事中乌龟赢,兔子需要睡觉,我们模拟兔子睡觉6. 终于,乌龟赢得比赛package com.chen.lesson01;//模拟龟兔赛跑public class Race implements Runnable{ //设置一个胜利者 private static String winner; @Override public原创 2020-09-13 00:07:07 · 223 阅读 · 0 评论 -
JAVA学习46-实现多线程2----实现Runnable接口
实现多线程2----实现Runnable接口/*定义MyRunnable接口实现Runnable接口重写run()方法,编写线程执行体创建线程的对象,start()开启线程 *///方法二/*定义MyRunnable接口实现Runnable接口重写run()方法,编写线程执行体创建线程的对象,start()开启线程 */public class TestThread3 implements Runnable{ @Override public void run()原创 2020-09-11 22:51:26 · 330 阅读 · 0 评论