Java
练习和笔记
KaiKai-G
菜鸟程序员的成长记录
展开
-
线程、进程、端口号
一个进程可以占用多个端口号(如java idea程序开辟多个端口进行通信(Socket))但是同一时间,一个端口号只能运行一个进程(如:tomcat占用了8080,别的程序就不能再使用8080了)原创 2021-08-16 09:56:02 · 2045 阅读 · 0 评论 -
Mybatis如何结合PageHelper进行分页?
简介PageHelper主要是用来处理分页官网https://gitee.com/free/Mybatis_PageHelper(中文)它是基于MyBatis的分页插件使用方法其他版本可以在官网找到 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId>原创 2021-08-07 14:34:28 · 185 阅读 · 0 评论 -
Map和JSONObject 如何自定义key值排序排序?
HashMap是无序的,不要用HashMap,使用TreeMap默认按照升序排列,想要降序改为下面这样 Map<String, String> map = new TreeMap<String, String>(new Comparator<String>() { @Override public int compare(String o1, String o2) { retu原创 2021-08-07 14:30:18 · 1514 阅读 · 0 评论 -
关于stream流遍历的用法
List<SlocPlant> all = slocPlantMapper.getAll(); HashMap<String, List<String>> map = new HashMap<>(); //通过Stream流 map是内是得到遍历的对象下的每个属性 Set<String> collect = all.stream() .map(s -> s.getPlant()) //就是遍历得到每一个pla.原创 2021-07-30 22:03:21 · 2557 阅读 · 0 评论 -
List根据集合内对象的某个属性进行排序(选择器)
list中只有数字或者字符串时: Collections.sort(list);加单的String类型的排序,是先排数字,再排字母,默认排序方式是升序list中存放对象时://按照List中对象的id属性升序list.sort(Comparator.comparing(Stu::getId))//按照List中对象的id属性降序list.sort(Comparator.comparing(Stu::getId).reversed());//多条件升序list.sort(Comp原创 2021-07-26 15:16:44 · 17415 阅读 · 0 评论 -
Java_TCP通信_Socket_(IO流的使用)
服务端:package demo;import java.io.*;import java.net.ServerSocket;import java.net.Socket;import java.util.Scanner;public class Server { private static int port = 8003;//设置端口号 public static void main(String[] args)throws IOException {原创 2021-07-14 16:40:35 · 405 阅读 · 0 评论 -
自定义Date时间格式与String相互转换工具类、计算时间差
public class DateFormatUtil { /* * @return 将Date类型按格式转换为String时间 */ public static String dateForStr(){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm"); return sdf.format(dat原创 2021-04-17 15:52:38 · 199 阅读 · 0 评论 -
复习JDBC
1、最初始化:Connection 数据库连接对象Statement sql语句执行对象ResultSet 返回结果对象executeQuery 执行查询sql的方法,executeUpdate 执行增删改sql的方法resultSet.next() 返回true或者false,来判断是否存在下一行public static void main(String[] args) { Connection conn = null; Statement sta原创 2021-03-26 14:21:55 · 81 阅读 · 1 评论 -
网络访问工具类:java端和android端
java端//网址,参数public static void get(String requestPath,String param) { try { URL url = new URL(requestPath); HttpURLConnection connection = (HttpURLConnection) url.openConnection(); connection.setRequestMethod("原创 2021-03-17 18:36:56 · 2328 阅读 · 0 评论 -
Redis缓存优化mysql小案例
Redis案例一、案例需求:二、架构三、代码实现四、结果:一、案例需求:一个页面,页面中有一个省份 下拉列表 当 页面加载完成后 发送ajax请求,加载所有省份注意:使用redis缓存一些不经常发生变化的数据。数据库的数据一旦发生改变,则需要更新缓存。数据库的表执行 增删改的相关操作,需要将redis缓存数据情况,再次存入在service层对应的增删改方法中,将redis数据删除。二、架构MVC三层架构三、代码实现需要的添加依赖/技术:Jquery框架(Aj原创 2020-11-14 17:52:58 · 1923 阅读 · 0 评论 -
JSON的基操笔记、Jackson解析器和Ajax结合案例
JSON一、 JSON格式和数据的获取定义基本格式获取name的值 有两种:(1) json对象.键 (2) json对象[“键”] var person = {"name": "张三", age: 23, 'gender': true}; //获取name的值 有两种 1.json对象.键 2.json对象["键"] //var name = person.name; var name = person["name"];嵌套格式 JSON—数组—JSON原创 2020-11-11 22:11:34 · 1610 阅读 · 1 评论 -
Javaweb_Filter详解和过滤敏感词
Filter:过滤器1. 概念:web中的过滤器:当访问服务器的资源时,过滤器可以将请求拦截下来,完成一些特殊的功能。过滤器的作用: 一般用于完成通用的操作。如:登录验证、统一编码处理、敏感字符过滤…2. 创建步骤:定义一个类,实现接口Filter复写方法3. 代码:package cn.itcase.web;import javax.servlet.*;import javax.servlet.annotation.WebFilter;import java.io.IOEx原创 2020-11-03 19:44:05 · 1611 阅读 · 0 评论 -
Java_web(MVC) 三层架构的信息管理系统
信息管理系统架构:三层架构(MVC设计模式)表示层(Web):用户看的到界面,用户可以通过界面上的组件和服务器进行交互(JSP+Servlet)业务逻辑层(Service):处理业务逻辑的,调用Dao层方法和View层的参数/数据进行处理。数据访问层(Dao):操作数据存储文件,一些增删改查的具体实现。实体库(Model):用来封装数据的实体类,通过set/get方法存和取。功能:管理员登录:账号、密码、验证码添加用户修改用户: 通过查找进行页面信息的回显,选择性的修改删除用户:原创 2020-11-01 22:44:06 · 1898 阅读 · 3 评论 -
Java_Cookie实现首次或者上次访问相同页面的时间
需求:1. 访问一个Servlet,如果是第一次访问,则页面显示:您好,欢迎您首次访问。2. 如果不是第一次访问,则显示:欢迎回来,您上次访问时间为:yyyy年MM月dd日 HH:mm:ss代码实现:package cn.web.cookie;import com.sun.jndi.toolkit.url.UrlUtil;import javax.servlet.ServletException;import javax.servlet.annotation.WebServlet;imp原创 2020-10-25 21:14:32 · 990 阅读 · 2 评论 -
Java_实现文件的提示和下载
文件下载需求:1. 页面显示超链接2. 点击超链接后弹出下载提示框3. 完成图片文件下载准备工作:1. 在web目录下准备两个文件:2. 九尾.jpg和1.mp4前端页面:<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8"> <title>download</title></head><body>&原创 2020-10-25 21:06:04 · 1510 阅读 · 1 评论 -
Java_实现用户登录和验证码
import javax.imageio.ImageIO;import javax.servlet.Servlet;import javax.servlet.ServletException;import javax.servlet.ServletOutputStream;import javax.servlet.annotation.WebServlet;import javax.servlet.http.HttpServlet;import javax.servlet.http.HttpSe原创 2020-10-25 20:52:42 · 1655 阅读 · 0 评论 -
Java EE_实现在服务器上登录,并将登录信息存储到数据库中
一、配置文件IDEAMysql8.0 和 SQLyogTomcat服务器jar包:commons-logging-1.2.jardruid-1.1.22.jarmysql-connector-java-8.0.21.jarspring-beans-5.1.10.RELEASE.jarspring-core-5.1.10.RELEASE.jarspring-jdbc-5.1.10.RELEASE.jarspring-tx-5.1.10.RELEASE.jar自定义的配置文件:drui原创 2020-08-26 21:09:33 · 1678 阅读 · 1 评论 -
关于HTTP的叙述 :概念、请求消息数据格式、获取请求消息的HttpServlet类方法
一、HTTP概念基本概念:Hyper Text Transfer Protocol 超文本传输协议传输协议:定义了客户端和服务器端通信时,发送数据的格式特点:基于TCP/IP的高级协议、默认端口号:80、基于请求/响应模型的:一次请求对应一次响应、无状态的:每次请求之间相互独立,不能交互数据版本:版本1.0 每一次请求响应都会建立新的连接版本1.1 复用连接,多次请求使用一个连接二 、请求消息数据格式以百度的首页为例,在百度首页按f12,在network下看到www.baidu.c原创 2020-08-26 13:45:28 · 846 阅读 · 0 评论 -
Servlet的执行原理(XML)、生命周期和注解配置
ServletServlet 概念:运行在服务器端的小程序Servlet就是一个接口,定义了Java类被浏览器访问到(tomcat识别)的规则。将来我们自定义一个类,实现Servlet接口,复写方法。一、XML执行原理当服务器接受到客户端浏览器的请求后,会解析请求URL路径,获取访问的Servlet的资源路径 (图中的 /demo1 就是资源路径)查找web.xml文件,是否有对应的标签体内容。如果有,则在找到对应的全类名 (图中的demo1)tomcat会将字节码文原创 2020-08-23 21:15:16 · 774 阅读 · 0 评论 -
通过反射和注解实现配置文件
一、自定义的注解@Target(ElementType.TYPE)@Retention(RetentionPolicy.RUNTIME)public @interface pro { String classname(); String classmethod();}二、需要加载的类public class Demo2 { public void show() { System.out.println("demo...show.."); }}三、(Main)反射+注解原创 2020-08-20 21:41:11 · 812 阅读 · 0 评论 -
关于注解的概念、预定义和自定义
注解一、概念定义:注解(Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明,注释。概念描述:JDK1.5之后的新特性、说明程序的、使用注解:@注解名称作用:①编写文档:通过代码里标识的注解生成文档【生成文档doc文档】②代码分析:通过代码里标识的注解对代码进行分析【使用反射】③编译检查:通过代码里标识的注解让编译器能够实原创 2020-08-20 21:27:34 · 1210 阅读 · 0 评论 -
Spring_JdbcTemplate-Druid工具类-javabean-JUnit测试
一、我的版本和jar包mysql:mysql 8.0.21mysql依赖:mysql-connector-java-8.0.21.jarDruid连接池:druid-1.1.21.jarSpring的JdbcTemplate jar包:spring-beans-5.1.10.RELEASE.jarspring-core-5.1.10.RELEASE.jarspring-jdbc-5.1.10.RELEASE.jarspring-tx-5.1.10.RELEASE.jarcommons-lo原创 2020-08-20 20:31:47 · 931 阅读 · 0 评论 -
JDBC Druid连接池 工具类
一、前期准备1.配置文件(druid.properties)在使用 Bruid 时候,这个文件可以随意放,我放到了src目录下。url=jdbc:mysql://localhost:3306/db1?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=GMT%2B8username=rootpassword=rootdriverClassName=com.mysql.cj.jdbc.Dri原创 2020-08-20 09:36:37 · 973 阅读 · 0 评论 -
JDBC 自定义工具类 实现登录
一、配置文件 (jdbc1.properties)url 本地数据库地址user 数据库的账号password 数据库的密码driver 注册地址url=jdbc:mysql://localhost:3306/db1?serverTimezone=GMT%2B8user=rootpassword=rootdriver=com.mysql.cj.jdbc.Driver二、工具类1.成员变量 :用于接收配置文件的四个信息private static String url; pr原创 2020-08-19 12:59:40 · 809 阅读 · 0 评论 -
java_HashMap实现简易文字小城堡游戏(封装,继承的练习,低耦合)
界面以及控制端//城堡游戏 import java.util.HashMap; import java.util.Scanner; public class Game { private Room currentRoom; private HashMap<String,Handler> handlers =new HashMap<String ...原创 2020-04-24 19:41:51 · 997 阅读 · 0 评论 -
java手写课程表窗口小练习
主界面import javax.swing.JFrame;import javax.swing.JScrollPane;import javax.swing.JTable;public class 课程表 { public static void main(String[] args) { JFrame frame = new JFrame();//窗口类 JTable ta...原创 2020-04-24 19:28:51 · 1456 阅读 · 0 评论 -
Java_Iterator迭代器遍历容器元素List Set Map
//一般遍历 List Set Map 使用增强for循环 就是foreach和迭代器(可以在循环中使用remove()方法删除) import java.util.ArrayList;import java.util.HashMap;import java.util.HashSet;import java.util.Iterator;import java.util.List;im...原创 2020-04-24 19:26:19 · 953 阅读 · 0 评论 -
Java_Date 可视化日历
import java.text.DateFormat;import java.text.ParseException;import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;import java.util.GregorianCalendar;import java.util....原创 2020-04-24 19:23:16 · 830 阅读 · 0 评论 -
Java_手动实现HashMap(含扩容以及原理)
1.哈希表的基本结构就是“数组+链表” 此外,JDK8中,当链表长度大于8时,链表就转换为红黑树,2.Entry[] table (将Entry放入到 table数组中) 就是HashMap的核心数组结构,我们也称之为“位桶数组”。3.一个 Entry对象存储了:(1).key:键对象 (2).value:值对象 (3).next:下一个节点 (4).hash: 键对象的hash值4.存储方...原创 2020-04-24 19:16:05 · 1158 阅读 · 0 评论 -
Java_手动实现ArrayLIst(含扩容机制)
/*手动实现ArrayList底层是用数组实现的存储。 特点:查询效率高,增删效率低,线程不安全。 * */public class ArrayList<E>{ private Object[] elementData; private int size; private static final int DEFALT_CAPACITY = 10;//defalt_c...原创 2020-04-24 18:39:04 · 1118 阅读 · 0 评论 -
java_练习题
1.输入若干个单词,每个单词一行,均为小写字母,不会有空行,直到输入#结束(#为单独一行),单词总数不超过1000;要求统计共输入了多少不同的单词,每个单词出现了多少次;按单词出现次数降序输出单词及其出现次数。import java.util.Scanner;public class E06 { public static void main(String[] args) { ...原创 2020-03-30 16:44:13 · 978 阅读 · 0 评论 -
java_实现单链表基本操作
class LinkNode {//结点的类型 public char data; public LinkNode next; public LinkNode(char data, LinkNode next) { this.data=data; this.next=next; } } class LinkList {//链表体 private LinkN...原创 2020-03-30 16:28:29 · 810 阅读 · 0 评论 -
100以内的素数(java)
素数只能被1和它本身相除,所以做两个for循环(1不是素数)再做两个if语句判断,如果i可以整除j,i=j 即可输出。package SuShu100;/** 求100以内所有素数(质数)@author Kai-GeGe*/public class SuShu100 { public static void main(String arg[]) { int i; in...原创 2020-03-06 16:01:31 · 2745 阅读 · 0 评论 -
java_求1到n英寸换算厘米 (右对齐,保留两位小数)
/** 求1到n英尺换算厘米 (右对齐,保留两位小数)@author Kai-GeGe*/import java.util.Scanner;public class InExchangeCm { public static void main(String[] args) { double j; System.out.println("请输入需要换算的英尺数:"...原创 2020-03-06 18:04:40 · 939 阅读 · 0 评论