首页
友链
关于
免责声明
Search
1
王者营地战绩数据王者荣耀查询网页源码
8,018 阅读
2
群晖Active Backup for Business套件备份Linux服务器教程
4,547 阅读
3
影视分享
4,462 阅读
4
(亲测)Jrebel激活破解方式2019-08-21
4,446 阅读
5
营地战绩数据查询获取接口
3,717 阅读
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
登录
Search
标签搜索
docker
springboot
Spring Boot
java
linux
Shiro
Graphics2D
图片
游戏账号交易
Mybatis
Spring Cloud
centos
脚本
Web Station
群辉
王者营地
战绩查询
平台对接
Spring Cloud Alibaba
nacos
绿林寻猫
累计撰写
249
篇文章
累计收到
26
条评论
首页
栏目
日常
文章
后端
前端
Linux
异常
Flutter
分享
群辉
页面
友链
关于
免责声明
搜索到
195
篇与
后端
的结果
2021-12-08
Java连接mqtt服务器(发送、订阅)
<dependency> <groupId>org.eclipse.paho</groupId> <artifactId>org.eclipse.paho.client.mqttv3</artifactId> <version>1.2.2</version> </dependency>1.模拟客户端接收消息import java.util.concurrent.ScheduledExecutorService; import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttTopic; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; /** * 模拟一个客户端接收消息 * * @author Unclue_liu */ public class ClientMQTT { public static final String HOST = "tcp://192.168.1.77:1883"; public static final String TOPIC1 = "pos_message_all"; private static final String clientid = "12345678"; private MqttClient client; private MqttConnectOptions options; private String userName = "mqtt"; //非必须 private String passWord = "mqtt"; //非必须 private ScheduledExecutorService scheduler; private void start() { try { // host为主机名,clientid即连接MQTT的客户端ID,一般以唯一标识符表示,MemoryPersistence设置clientid的保存形式,默认为以内存保存 client = new MqttClient(HOST, clientid, new MemoryPersistence()); // MQTT的连接设置 options = new MqttConnectOptions(); // 设置是否清空session,这里如果设置为false表示服务器会保留客户端的连接记录,设置为true表示每次连接到服务器都以新的身份连接 options.setCleanSession(false); // 设置连接的用户名 options.setUserName(userName); // 设置连接的密码 options.setPassword(passWord.toCharArray()); // 设置超时时间 单位为秒 options.setConnectionTimeout(10); // 设置会话心跳时间 单位为秒 服务器会每隔1.5*20秒的时间向客户端发送个消息判断客户端是否在线,但这个方法并没有重连的机制 options.setKeepAliveInterval(20); //设置断开后重新连接 options.setAutomaticReconnect(true); // 设置回调 client.setCallback(new PushCallback()); MqttTopic topic = client.getTopic(TOPIC1); //setWill方法,如果项目中需要知道客户端是否掉线可以调用该方法。设置最终端口的通知消息 //遗嘱 options.setWill(topic, "close".getBytes(), 1, true); client.connect(options); //订阅消息 int[] Qos = {1};//0:最多一次 、1:最少一次 、2:只有一次 String[] topic1 = {TOPIC1}; client.subscribe(topic1, Qos); } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { ClientMQTT client = new ClientMQTT(); client.start(); }2.模拟服务端发送消息import org.eclipse.paho.client.mqttv3.MqttClient; import org.eclipse.paho.client.mqttv3.MqttConnectOptions; import org.eclipse.paho.client.mqttv3.MqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttException; import org.eclipse.paho.client.mqttv3.MqttMessage; import org.eclipse.paho.client.mqttv3.MqttPersistenceException; import org.eclipse.paho.client.mqttv3.MqttTopic; import org.eclipse.paho.client.mqttv3.persist.MemoryPersistence; /** * Title:Server 这是发送消息的服务端 * Description: 服务器向多个客户端推送主题,即不同客户端可向服务器订阅相同主题 * @author Unclue_liu */ public class ServerMQTT { //tcp://MQTT安装的服务器地址:MQTT定义的端口号 public static final String HOST = "tcp://192.168.1.77:1883"; //定义一个主题 public static final String TOPIC = "pos_message_all"; //定义MQTT的ID,可以在MQTT服务配置中指定 private static final String clientid = "server11"; private MqttClient client; private static MqttTopic topic11; // private String userName = "mqtt"; //非必须 // private String passWord = "mqtt"; //非必须 private static MqttMessage message; /** * 构造函数 * @throws MqttException */ public ServerMQTT() throws MqttException { // MemoryPersistence设置clientid的保存形式,默认为以内存保存 client = new MqttClient(HOST, clientid, new MemoryPersistence()); connect(); } /** * 用来连接服务器 */ private void connect() { MqttConnectOptions options = new MqttConnectOptions(); options.setCleanSession(false); // options.setUserName(userName); // options.setPassword(passWord.toCharArray()); // 设置超时时间 options.setConnectionTimeout(10); // 设置会话心跳时间 options.setKeepAliveInterval(20); try { client.setCallback(new PushCallback()); client.connect(options); topic11 = client.getTopic(TOPIC); } catch (Exception e) { e.printStackTrace(); } } /** * * @param topic * @param message * @throws MqttPersistenceException * @throws MqttException */ public static void publish(MqttTopic topic , MqttMessage message) throws MqttPersistenceException, MqttException { MqttDeliveryToken token = topic.publish(message); token.waitForCompletion(); System.out.println("message is published completely! " + token.isComplete()); } public static void sendMessage(String clieId,String msg)throws Exception{ ServerMQTT server = new ServerMQTT(); server.message = new MqttMessage(); server.message.setQos(1); //保证消息能到达一次 server.message.setRetained(true); String str ="{\"clieId\":\""+clieId+"\",\"mag\":\""+msg+"\"}"; server.message.setPayload(str.getBytes()); try{ publish(server.topic11 , server.message); //断开连接 // server.client.disconnect(); }catch (Exception e){ e.printStackTrace(); } } /** * 启动入口 * @param args * @throws MqttException */ public static void main(String[] args) throws Exception { sendMessage("123444","哈哈"); } }3.发布消息回调类import org.eclipse.paho.client.mqttv3.IMqttDeliveryToken; import org.eclipse.paho.client.mqttv3.MqttCallback; import org.eclipse.paho.client.mqttv3.MqttMessage; /** * 发布消息的回调类 * * 必须实现MqttCallback的接口并实现对应的相关接口方法CallBack 类将实现 MqttCallBack。 * 每个客户机标识都需要一个回调实例。在此示例中,构造函数传递客户机标识以另存为实例数据。 * 在回调中,将它用来标识已经启动了该回调的哪个实例。 * 必须在回调类中实现三个方法: * * public void messageArrived(MqttTopic topic, MqttMessage message)接收已经预订的发布。 * * public void connectionLost(Throwable cause)在断开连接时调用。 * * public void deliveryComplete(MqttDeliveryToken token)) * 接收到已经发布的 QoS 1 或 QoS 2 消息的传递令牌时调用。 * 由 MqttClient.connect 激活此回调。 * */ public class PushCallback implements MqttCallback { public void connectionLost(Throwable cause) { // 连接丢失后,一般在这里面进行重连 System.out.println("连接断开,可以做重连"); } public void deliveryComplete(IMqttDeliveryToken token) { System.out.println("deliveryComplete---------" + token.isComplete()); } public void messageArrived(String topic, MqttMessage message) throws Exception { // subscribe后得到的消息会执行到这里面 System.out.println("接收消息主题 : " + topic); System.out.println("接收消息Qos : " + message.getQos()); System.out.println("接收消息内容 : " + new String(message.getPayload())); } }
2021年12月08日
141 阅读
0 评论
0 点赞
2021-12-08
java 根据html模板生成html文件
1.代码部分import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; import java.io.FileInputStream; import java.io.FileOutputStream; @RunWith(SpringRunner.class) @SpringBootTest public class PdfApplicationTests { @Test public void contextLoads() { String filePath = "D:\\WorkSpace\\IdeaProjects\\pdf\\src\\main\\resources\\templates\\index.html"; String text ="哈哈"; String disrPath = "D:\\WorkSpace\\IdeaProjects\\pdf\\src\\main\\resources\\templates"; String fileName = "t"; MakeHtml(filePath,text,disrPath,fileName); } /** * @Title: MakeHtml * @Description: 创建html * @param filePath 设定模板文件 * @param text 添加的内容 * @param disrPath 生成html的存放路径 * @param fileName 生成html名字 * @return void 返回类型 * @throws */ public static void MakeHtml(String filePath,String text,String disrPath,String fileName ){ try { String title = "<h2>"+text+"</h2>"; System.out.print(filePath); String templateContent = ""; FileInputStream fileinputstream = new FileInputStream(filePath);// 读取模板文件 int lenght = fileinputstream.available(); byte bytes[] = new byte[lenght]; fileinputstream.read(bytes); fileinputstream.close(); templateContent = new String(bytes); System.out.print(templateContent); //把模板页面上的 ###text### 替换成 title 里的内容 templateContent = templateContent.replaceAll("###text###", title); System.out.print(templateContent); String fileame = fileName + ".html"; fileame = disrPath+"/" + fileame;// 生成的html文件保存路径。 FileOutputStream fileoutputstream = new FileOutputStream(fileame);// 建立文件输出流 System.out.print("文件输出路径:"); System.out.print(fileame); byte tag_bytes[] = templateContent.getBytes(); fileoutputstream.write(tag_bytes); fileoutputstream.close(); } catch (Exception e) { System.out.print(e.toString()); } } } 2.模板页<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Title</title> </head> </head> <body> ###text### </body> </html>3.生成的html<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"/> <title>Title</title> </head> </head> <body> <h2>哈哈</h2> </body> </html>
2021年12月08日
312 阅读
0 评论
0 点赞
2021-12-08
java根据xml模板生成word(编辑内容)
1.使用的依赖 <dependency> <groupId>org.freemarker</groupId> <artifactId>freemarker</artifactId> <version>2.3.25-incubating</version> </dependency>2.Servicepackage com.hj.test; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.OutputStreamWriter; import java.io.Writer; import java.net.URL; import java.util.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import freemarker.cache.URLTemplateLoader; import freemarker.core.ParseException; import freemarker.template.Configuration; import freemarker.template.MalformedTemplateNameException; import freemarker.template.Template; import freemarker.template.TemplateException; import freemarker.template.TemplateNotFoundException; import javax.servlet.http.HttpServletRequest; @Service public class DynamicallyGeneratedWordService { private static Configuration freemarkerConfig; @Autowired HttpServletRequest req; static { freemarkerConfig = new Configuration(Configuration.VERSION_2_3_22); freemarkerConfig.setEncoding(Locale.getDefault(), "UTF-8"); } /** * 生成word文档 * @param filePath * @throws TemplateNotFoundException * @throws MalformedTemplateNameException * @throws ParseException * @throws IOException * @throws TemplateException */ public void genWordFile(String filePath) throws TemplateNotFoundException, MalformedTemplateNameException, ParseException, IOException, TemplateException{ Map<String,Object> result = new HashMap<String,Object>(); result.put("topic", "基于Java模板技术动态生成Word文档"); freemarkerConfig.setTemplateLoader(new URLTemplateLoader() { @Override protected URL getURL(String arg0) { //此处访问的地址是项目target/classes文件夹 //输出的类似:E:/software/idea/aa/target/classes/6.xm return DynamicallyGeneratedWordService.class.getResource("/6.xml"); } }); Template temp = freemarkerConfig.getTemplate("6.xml"); File targetFile = new File(filePath); Writer out = new OutputStreamWriter(new FileOutputStream(targetFile),"UTF-8"); //执行模板替换 temp.process(result, out); out.flush(); } } xml地址:3.Controllerpackage com.hj.test; import java.io.IOException; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.ResponseBody; import com.hj.test.Student; import com.hj.test.DynamicallyGeneratedWordService; import freemarker.core.ParseException; import freemarker.template.MalformedTemplateNameException; import freemarker.template.TemplateException; import freemarker.template.TemplateNotFoundException; /** * @author Solin * 基于Java模板技术动态生成Word文档 */ @Controller public class DynamicallyGeneratedWordController { @Autowired private DynamicallyGeneratedWordService dynamicallyGeneratedWordService; @ResponseBody @RequestMapping("/getStudentList") public String getStudentList(){ String result = "成功"; try { dynamicallyGeneratedWordService.genWordFile("d://stu.doc"); } catch (TemplateNotFoundException e) { result = "失败"; e.printStackTrace(); } catch (MalformedTemplateNameException e) { result = "失败"; e.printStackTrace(); } catch (ParseException e) { result = "失败"; e.printStackTrace(); } catch (IOException e) { result = "失败"; e.printStackTrace(); } catch (TemplateException e) { result = "失败"; e.printStackTrace(); } return result; } } 编辑xml文件:(xml模板可编辑word文档使用wps另存为xml格式) 参考:https://blog.csdn.net/qq_32786873/article/details/52535845
2021年12月08日
180 阅读
0 评论
0 点赞
2021-12-08
Java跨域
mport org.springframework.stereotype.Component; import javax.servlet.*; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.IOException; /** * 跨域 */ @Component public class CorsFilter implements Filter { @Override public void init(FilterConfig filterConfig) throws ServletException { } @Override public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException { HttpServletRequest request = (HttpServletRequest) servletRequest; HttpServletResponse response = (HttpServletResponse) servletResponse; response.setHeader("Access-Control-Allow-Origin", request.getHeader("origin")); // response.setHeader("Access-Control-Allow-Origin", "*");//允许跨域访问的域 response.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");//允许使用的请求方法,以逗号隔开 response.setHeader("Access-Control-Max-Age", "3600");// 缓存此次请求的秒数 //允许使用的请求方法,以逗号隔开 response.setHeader("Access-Control-Allow-Headers", "x-requested-with,Cache-Control,Pragma,Content-Type,Token"); response.setHeader("Access-Control-Allow-Credentials","true");//是否允许请求带有验证信息 filterChain.doFilter(servletRequest, servletResponse); } @Override public void destroy() { } }
2021年12月08日
133 阅读
0 评论
0 点赞
2021-12-08
Java获取前一天的的日期
//Date d=new Date(System.currentTimeMillis()-1000*60*60*24*2);//计算前天 Date d=new Date(System.currentTimeMillis()-1000*60*60*24); SimpleDateFormat sp=new SimpleDateFormat("yyyy-MM-dd"); String zuotian=sp.format(d);//获取昨天日期
2021年12月08日
233 阅读
0 评论
0 点赞
2021-12-08
java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec
图片压缩在windows下正常,linux服务器报java.lang.NoClassDefFoundError: com/sun/image/codec/jpeg/JPEGCodec本地开发,jre里有这个包,所以不会报错但是在新的 jdk 版本中,这个类不推荐使用了,使用 ImageIO.write 方法替代// JPEGImageEncoder encoder = JPEGCodec.createJPEGEncoder(fos); // encoder.encode(image); ImageIO.write(image, "jpg", fos);
2021年12月08日
526 阅读
0 评论
0 点赞
2021-12-08
java调用接口,同时上传文件及数据
1.提交数据/** * POST报文客户端 * * @param url 调用地址字符串 * @param jsonParam 报文实体JSON * @return String * @author Al1en */ public static String httpPostWithForm(String url, JSONObject jsonParam) { URL u = null; HttpURLConnection con = null; // 构建请求参数 StringBuffer sb = new StringBuffer(); for (String s : jsonParam.keySet()) { sb.append(s); sb.append("="); sb.append(jsonParam.getString(s)); sb.append("&"); } System.out.println("send_url:" + url); System.out.println("send_data:" + sb.toString()); // 尝试发送请求 try { u = new URL(url); con = (HttpURLConnection) u.openConnection(); POST 只能为大写,严格限制,post会不识别 con.setRequestMethod("POST"); con.setDoOutput(true); con.setDoInput(true); con.setUseCaches(false); con.setRequestProperty("Content-Type", "application/x-www-form-urlencoded"); OutputStreamWriter osw = new OutputStreamWriter(con.getOutputStream(), "UTF-8"); osw.write(sb.toString()); osw.flush(); osw.close(); } catch (Exception e) { e.printStackTrace(); } finally { if (con != null) { con.disconnect(); } } // 读取返回内容 StringBuffer buffer = new StringBuffer(); try { //一定要有返回值,否则无法把请求发送给server端。 BufferedReader br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8")); String temp; while ((temp = br.readLine()) != null) { buffer.append(temp); buffer.append("\n"); } } catch (Exception e) { e.printStackTrace(); } return buffer.toString(); } 2.提交数据及文件 import java.io.*; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.ProtocolException; import java.net.URL; import java.util.HashMap; import java.util.Map; public class HttpPost { private static final String BOUNDARY = "-------45962402127348"; private static final String FILE_ENCTYPE = "multipart/form-data"; //存放数据 Map<String, String> textParams = new HashMap<String, String>(); //存放File文件 Map<String, File> fileparams = new HashMap<String, File>(); String url; public HttpPost(String url)throws Exception{ this.url = url; } public void setUrl(String url) { this.url = url; } public void addTextParams(String key,String value) { this.textParams.put(key, value); } public void addFileparams(String key,File file) { this.fileparams.put(key, file); } public String send()throws IOException{ InputStream post = post(this.url, this.textParams, this.fileparams); ByteArrayOutputStream out = new ByteArrayOutputStream(); int b; while ((b = post.read()) != -1) { out.write(b); } return new String(out.toByteArray()); } /** * * @param urlStr http请求路径 * @param params 请求参数 * @param images 上传文件 * @return */ public static InputStream post(String urlStr, Map<String, String> params, Map<String, File> images) { InputStream is = null; try { URL url = new URL(urlStr); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setConnectTimeout(5000); con.setDoInput(true); con.setDoOutput(true); con.setUseCaches(false); con.setRequestMethod("POST"); con.setRequestProperty("Connection", "Keep-Alive"); con.setRequestProperty("Charset", "UTF-8"); con.setRequestProperty("Content-Type", FILE_ENCTYPE + "; boundary=" + BOUNDARY); StringBuilder sb = null; DataOutputStream dos = new DataOutputStream(con.getOutputStream());; if (params != null) { sb = new StringBuilder(); for (String s : params.keySet()) { sb.append("--"); sb.append(BOUNDARY); sb.append("\r\n"); sb.append("Content-Disposition: form-data; name=\""); sb.append(s); sb.append("\"\r\n\r\n"); sb.append(params.get(s)); sb.append("\r\n"); } dos.write(sb.toString().getBytes()); } if (images != null) { for (String s : images.keySet()) { File f = images.get(s); sb = new StringBuilder(); sb.append("--"); sb.append(BOUNDARY); sb.append("\r\n"); sb.append("Content-Disposition: form-data; name=\""); sb.append(s); sb.append("\"; filename=\""); sb.append(f.getName()); sb.append("\"\r\n"); sb.append("Content-Type: multipart/form-data");//这里注意!如果上传的不是图片,要在这里改文件格式,比如txt文件,这里应该是text/plain sb.append("\r\n\r\n"); dos.write(sb.toString().getBytes()); FileInputStream fis = new FileInputStream(f); byte[] buffer = new byte[1024]; int len; while ((len = fis.read(buffer)) != -1) { dos.write(buffer, 0, len); } dos.write("\r\n".getBytes()); fis.close(); } sb = new StringBuilder(); sb.append("--"); sb.append(BOUNDARY); sb.append("--\r\n"); dos.write(sb.toString().getBytes()); } dos.flush(); if (con.getResponseCode() == 200){ is = con.getInputStream(); } dos.close(); } catch (MalformedURLException e) { e.printStackTrace(); } catch (ProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } return is; } public static void main(String[] args)throws Exception { HttpPost post = new HttpPost("http://***"); post.addTextParams("a", "1"); post.addTextParams("b", "hahah"); post.addTextParams("c", "你好"); post.addFileparams("verifyFace", new File("c:/123.jpg")); String result = post.send(); System.out.println(result); } }
2021年12月08日
152 阅读
0 评论
0 点赞
2021-12-08
Java SpringBoot 循环监听UDP同一个Socket实现接收与发送
SpringBoot实现项目启动监听UDP package com.hujiang.project.lz.faceRecognition; import javax.servlet.ServletContextEvent; import javax.servlet.ServletContextListener; import javax.servlet.annotation.WebListener; import java.io.*; import java.net.*; import java.util.logging.Logger; /* * 服务器端,实现基于UDP的用户登陆 */ @WebListener public class UDPServer implements ServletContextListener { public static Logger logger = Logger.getLogger(UDPServer.class.getName()); public static final int MAX_UDP_DATA_SIZE = 4096; public static final int UDP_PORT = 6007; public static DatagramPacket packet = null; public static DatagramSocket socket = null; @Override public void contextInitialized(ServletContextEvent sce) { try { logger.info("========启动一个线程,监听UDP数据报.PORT:" + UDP_PORT + "========="); // 启动一个线程,监听UDP数据报 new Thread(new UDPProcess(UDP_PORT)).start(); } catch (Exception e) { e.printStackTrace(); } } class UDPProcess implements Runnable { public UDPProcess(final int port) throws SocketException { //创建服务器端DatagramSocket,指定端口 socket = new DatagramSocket(port); } @Override public void run() { // TODO Auto-generated method stub logger.info("=======创建数据报,用于接收客户端发送的数据======"); while (true) { byte[] buffer = new byte[MAX_UDP_DATA_SIZE]; packet = new DatagramPacket(buffer, buffer.length); try { logger.info("=======此方法在接收到数据报之前会一直阻塞======"); socket.receive(packet); new Thread(new Process(packet)).start(); } catch (IOException e) { e.printStackTrace(); } } } } class Process implements Runnable { public Process(DatagramPacket packet) throws UnsupportedEncodingException { // TODO Auto-generated constructor stub logger.info("=======接收到的UDP信息======"); byte[] buffer = packet.getData();// 接收到的UDP信息,然后解码 // String srt1 = new String(buffer, "GBK").trim(); // logger.info("=======Process srt1 GBK======" + srt1); String srt2 = new String(buffer, "UTF-8").trim(); logger.info("=======Process srt2 UTF-8======" + srt2); // String srt3 = new String(buffer, "ISO-8859-1").trim(); // logger.info("=======Process srt3 ISO-8859-1======" + srt3); } @Override public void run() { // TODO Auto-generated method stub logger.info("====过程运行====="); try { logger.info("====向客户端响应数据====="); //1.定义客户端的地址、端口号、数据 InetAddress address = packet.getAddress(); int port = packet.getPort(); byte[] data2 = "{'request':'alive','errcode':'0'}".getBytes(); //2.创建数据报,包含响应的数据信息 DatagramPacket packet2 = new DatagramPacket(data2, data2.length, address, port); //3.响应客户端 socket.send(packet2); } catch (Exception e) { e.printStackTrace(); } } } @Override public void contextDestroyed(ServletContextEvent sce) { logger.info("========UDPListener摧毁========="); } } @ServletComponentScan Servlet扫描,启动时把servlet、filter、listener自动扫描注入@SpringBootApplication @ServletComponentScan public class DemoApplication { public static void main(String[] args) { SpringApplication.run(DemoApplication.class, args); } } 创建客户端测试 public static final String SERVER_HOSTNAME = "localhost"; // 服务器端口 public static final int SERVER_PORT = 6007; // 本地发送端口 public static final int LOCAL_PORT = 8888; public static void main(String[] args) { try { // 1,创建udp服务。通过DatagramSocket对象。 DatagramSocket socket = new DatagramSocket(LOCAL_PORT); // 2,确定数据,并封装成数据包。DatagramPacket(byte[] buf, int length, InetAddress // address, int port) byte[] buf = "你好,世界".getBytes(); DatagramPacket dp = new DatagramPacket(buf, buf.length, InetAddress.getByName(SERVER_HOSTNAME), SERVER_PORT); // 3,通过socket服务,将已有的数据包发送出去。通过send方法。 socket.send(dp); // 4,关闭资源。 socket.close(); } catch (IOException e) { e.printStackTrace(); } }
2021年12月08日
418 阅读
0 评论
0 点赞
2021-12-08
java.lang.IllegalStateException: Failed to load property source from location 'classpath:/applicatio
异常问题:java.lang.IllegalStateException: Failed to load property source from location 'classpath:/application.yml' 可能是application.yml文件内容格式或层级的问题
2021年12月08日
415 阅读
0 评论
0 点赞
2021-12-08
Java8 日期时间
@Test public void test(){ testLocalDateTime(); } public void testLocalDateTime(){ // 获取当前的日期时间 LocalDateTime currentTime = LocalDateTime.now(); System.out.println("当前时间: " + currentTime);//当前时间: 2019-11-01T15:21:42.281 LocalDate date1 = currentTime.toLocalDate(); System.out.println("date1: " + date1);//date1: 2019-11-01 Month month = currentTime.getMonth(); int day = currentTime.getDayOfMonth(); int seconds = currentTime.getSecond(); System.out.println("月: " + month +", 日: " + day +", 秒: " + seconds);//月: NOVEMBER, 日: 1, 秒: 42 LocalDateTime date2 = currentTime.withDayOfMonth(10).withYear(2012); System.out.println("date2: " + date2);//2012-11-10T15:21:42.281 // 12 december 2014 LocalDate date3 = LocalDate.of(2014, Month.DECEMBER, 12); System.out.println("date3: " + date3);//2014-12-12 // 22 小时 15 分钟 LocalTime date4 = LocalTime.of(22, 15); System.out.println("date4: " + date4);//22:15 // 解析字符串 LocalTime date5 = LocalTime.parse("20:15:30"); System.out.println("date5: " + date5);//20:15:30 }
2021年12月08日
120 阅读
0 评论
0 点赞
1
...
13
14
15
...
20