meowrain

MeowRain

Life is Simple

Java网络编程 Socket套接字

Socket Socket有两种编程方式 tcp编程 udp编程 Java Socket建立连接 Server.java 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import java.io.IOException; import java.net.ServerSocket; import java.net.Socket; public class Server { public static void main(String[] args) { try { ServerSocket server = new ServerSocket(8080); // 8080 is the port number System.out.println("Server is running... waiting for client to connect"); Socket socket = server.accept();// wait for client to connect System.

Java网络编程 TCP网络通信编程文件传输

TCP网络通信编程-文件传输 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 package org.example.socket; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class TcpServerCopy { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(8888); System.out.println("等待客户端连接..."); Socket socket = serverSocket.accept(); System.out.println("客户端连接成功"); /* 读入文件 */ File file = new File("src/org/example/111658775_p0.

Java网络编程 TCP网络通信编程字符流

TCP字符流编程 代码 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package org.example.socket; import java.io.*; import java.net.ServerSocket; import java.net.Socket; public class SocketTcp03Server { public static void main(String[] args) throws IOException { ServerSocket serverSocket = new ServerSocket(9999); Socket socket = serverSocket.accept(); System.out.println("服务端启动,正在监听9999端口"); InputStream inputStream = socket.getInputStream(); InputStreamReader reader = new InputStreamReader(inputStream); BufferedReader bufferedReader = new BufferedReader(reader); String s = bufferedReader.

Java网络编程 TCP网络通信编程字节流

TCP网络通信编程1 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 SockeTcp01Client.java package org.example.socket; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.net.InetAddress; import java.net.Socket; public class SocketTcp01Client { public static void main(String[] args) throws IOException { Socket socket = new Socket(InetAddress.getLocalHost(),9999); System.out.println("客户端socket返回" + socket.getClass()); OutputStream outputStream = socket.getOutputStream(); byte[] content = "HelloServer,This is a message come from Client".getBytes(); outputStream.write(content); outputStream.

Micropython——ESP32使用

Pin引脚类的应用 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 from machine import Pin # 创建一个输出引脚在0引脚 p0 = Pin(0,Pin.OUT) # 给P0引脚线输出低电平,再输出高电平 p0.value(0) p0.value(1) # 给P0引脚线输出低电平,再输出高电平 p0.on() p0.off() # 给P0引脚先输出低电平,再输出高电平 p0.low() p0.high() #再P2创建一个输入引脚,并设置上拉电阻 p2 = Pin(2,Pin.IN,Pin.PULL_UP) # 打印P2的值 print(p2.value()) 软件设计1-点亮一个LED 1 2 3 4 5 from machine import Pin # 构建 pin_12 引脚对象,GPIO12输出 pin_12 = Pin(12,Pin.OUT) #使Pin12输出高电平 pin_12.high() 软件设计2-闪烁的LED 1 2 3 4 5 6 7 8 9 from machine import Pin # 导入time模块 import time # 构建pin12引脚对象,GPIO12输出 pin_12 = Pin(12,Pin.

软考-笔记

面向对象设计原则(部分) https://zhuanlan.zhihu.com/p/60791596 共同重用原则:一个包中里的所有类应该是共同重用的,如果重用了包里的一个类,那么就要重用包中的所有类。 共同封闭原则: 如果一个变化对一个包产生影响,则将对该包里的所有类产生影响,而对其它包不产生任何影响。 开放-封闭原则:对扩展开放,对修改关闭。 接口分离原则: 接口的功能尽可能单一,降低模块的耦合性。 面向对象测试的四个层次 算法层 –> 单元测试 类层 –> 模块测试 模板层 –> 主题层 系统层 –> 把各个子系统组装成完整的面向对象软件系统,在组装过程进行测试 设计模式 面向对象类关系(继承、实现、依赖、关联、聚合、组合):https://www.cnblogs.com/zhongj/p/11169780.html UML: https://blog.csdn.net/quyingzhe0217/article/details/133683814 创建型模式 创建型设计模式包括以下几种常见的模式: 工厂模式(Factory Pattern):通过工厂方法或抽象工厂来创建对象,将对象的创建过程封装起来,使得客户端代码与具体类解耦。 抽象工厂模式(Abstract Factory Pattern):提供一个接口,用于创建相关或依赖对象的家族,而不需要指定具体类。 单例模式(Singleton Pattern):确保一个类只有一个实例,并提供一个全局访问点来访问该实例。 建造者模式(Builder Pattern):将一个复杂对象的构建过程与其表示分离,使得同样的构建过程可以创建不同的表示。 原型模式(Prototype Pattern):通过复制现有对象来创建新对象,而不是通过实例化来创建。 结构型模式 结构型设计模式主要包括以下几种常见的模式: 适配器模式(Adapter Pattern):将一个类的接口转换成客户端所期望的另一个接口,使得原本不兼容的类可以一起工作。 桥接模式(Bridge Pattern):将抽象部分与实现部分分离,使它们可以独立地变化,从而提高系统的灵活性。 组合模式(Composite Pattern):将对象组合成树形结构,以表示“部分-整体”的层次结构,使得客户端可以统一地处理单个对象和组合对象。 装饰器模式(Decorator Pattern):动态地给对象添加额外的职责,同时又不改变其接口。 外观模式(Facade Pattern):提供一个统一的接口,用于访问子系统中的一组接口,从而简化客户端与子系统之间的交互。 享元模式(Flyweight Pattern):通过共享细粒度的对象,以减少内存使用和提高性能。 代理模式(Proxy Pattern):为其他对象提供一个代理,以控制对这个对象的访问。 行为模式 行为型设计模式主要包括以下几种常见的模式: 观察者模式(Observer Pattern):定义了一种一对多的依赖关系,使得多个观察者对象可以同时监听并收到被观察者对象的通知。 策略模式(Strategy Pattern):定义了一系列算法,并将每个算法封装起来,使它们可以相互替换,从而使算法的变化独立于使用算法的客户端。 命令模式(Command Pattern):将请求封装成对象,以使得可以用不同的请求对客户端进行参数化,同时支持请求的排队、记录和撤销。 迭代器模式(Iterator Pattern):提供一种顺序访问聚合对象中各个元素的方法,而又不暴露该对象的内部表示。 状态模式(State Pattern):允许对象在内部状态发生改变时改变其行为,使对象看起来像是修改了其类。 责任链模式(Chain of Responsibility Pattern):将请求的发送者和接收者解耦,使多个对象都有机会处理请求,从而避免请求的发送者与接收者之间的耦合关系。

Go网络编程

Go 网络编程 IP “net"包定义了许多类型, 函数,方法用于 Go 网络编程。IPIPIPIP 类型被定义为一个字节数组。–> type IP []byte 有几个函数来处理一个 IP 类型的变量, 但是在实践中你很可能只用到其中的一些。例如, ParseIP(String)函数将获取逗号分隔的 IPv4 或者冒号分隔的 IPv6 地址, 而 IP 类型的String()方法将返回一个字符串。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 package main import ( "fmt" "net" "os" ) func main() { if len(os.Args) != 2 { fmt.Fprintf(os.Stderr, "Usage: %s ipaddr\n", os.Args[0]) os.Exit(1) } ipAddress := os.

数据库六种范式

数据库六种范式 一些基本概念 一些基本概念: 实体: 实体通常指代数据模型中的一个对象,常常对应数据库中的表 属性: 属性是关系数据库中的一个重要概念,对应于数据表中的列,描述了实体的特征或者特性 元组: 在关系数据库中,元组指的是数据表中的一行,包含了一组属性值 分量: 分量是元组中的某个具体的属性值 候选码和主码: 候选码是可以唯一确定一个元组的属性,主码是从候选码中选出的用来唯一标识一个元组的码 全码: 包含了所有属性的码,确保了其唯一性 主属性: 如果一个属性在任何一个候选码中出现过,那么它就是主属性,用来唯一标识一个元组 非主属性: 非主属性与主属性相反,没有在任何候选码中出现过,不能唯一标识一个元组 外码: 外码是一个属性(或者属性组),它不是本表的主码或者候选码,但是却可以关联到其他表的主码,用于建立表与表之间的关联。 关系模型的形式化定义 R(U,D,DOM,F) R: 符号化的元组语义 U: 一组属性 D: 属性组U中的属性所来自的域 DOM: 属性到域的映射 F: 属性组U上的一组数据依赖 由于D,DOM与设计关系不大,因此这里把关系模式看作一个三元组R<U,F> 函数依赖 注: 因为电脑不太方便打出打杠的箭头,所以就用-->表示了 非平凡函数依赖:关系R(Sno,Cno,Grade),依赖关系(Sno,Cno)–>Grade是非平凡函数依赖 平凡函数依赖:关系R(Sno, Cno),依赖关系(Sno, Cno)→Sno,(Sno, Cno)→Cno都是平凡函数依赖 完全函数依赖:关系R(Sno,Cno,Grade),依赖关系(Sno,Cno)->Grade,但是Sno-->Grade且Cno-->Grade,因此这个依赖关系是完全函数依赖 $(Sno,Cno) \overset{F}{\longrightarrow} Grade$ 部分函数依赖:关系R(Sno,Sname,Ssex,Sclass,Sage),依赖关系中我们可以用Sno,Sname推出Ssex,也就是(Sno,Sname)->Ssex,但是Sno->Ssex,这样的话就是部分函数依赖了。 传递函数依赖:图里面写的很明白,这里就不多赘述 函数依赖和属性的关系 设R(U)是属性集U上的关系模式,X、Y是U的子集。 如果X和Y之间是一对一(1:1)关系,如学校和校长,则存在函数依赖X→Y和Y→X。 如果X和Y之间是一对多(1:n)关系,如年龄和姓名,则存在函数依赖Y→X。 如果X和Y之间是多对多(m:n)关系,如学生和课程,则X和Y之间不存在函数依赖。 范式 第一范式 1NF 属性不可分 第二范式 2NF https://www.geeksforgeeks.org/second-normal-form-2nf/ 第二范式要求一个表中的每个非主属性都完全函数依赖于候选码,即表中的每个非主属性都必须完全依赖于整个候选码,而不是部分依赖于候选码的某一部分。 我们来看这个表,很明显这个表不符合第二范式,其中STUD_NO和COURSE_NO是候选码(主属性),而COURSE_FEE是非主属性,但是它并不依赖STUD_NO,而是只依赖COURSE_NO,因此是部分依赖于整个候选码。 由此可以得出,这个表不符合第二范式 第三范式 3NF BCNF

Openwrt开机自启frpc

https://openwrt.org/docs/guide-developer/procd-init-script-example cd /etc/init.d vim frpc 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #!/bin/sh /etc/rc.common START=99 STOP=90 SERVICE=frpc USE_PROCD=1 PROC="/usr/bin/frpc -c /root/frpc/frpc.toml" start_service(){ procd_open_instance procd_set_param command $PROC procd_set_param respawn procd_close_instance } service_triggers() { procd_add_reload_trigger "rpcd" } /etc/init.d/frp enable && echo on

SpringMVC项目搭建

Spring MVC项目创建 把没用的文件删掉 添加依赖 1 2 3 4 5 6 <!-- https://mvnrepository.com/artifact/org.springframework/spring-webmvc --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>6.1.3</version> </dependency> 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 <?
0%