WeChat 보조 개발을 위한 다양한 유형의 메시지 캡슐화
이 기사는 주로 Java WeChat의 2차 개발의 세 번째 부분을 자세히 소개합니다. Java WeChat의 다양한 유형의 메시지 캡슐화에는 관심 있는 친구가 이 기사를 참조할 수 있습니다.
예제는 참고용으로 Java WeChat의 다양한 메시지 유형을 캡슐화합니다.
1단계: com.wtz.message.response 패키지를 찾아 생성합니다. 새 클래스 Image.java
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午8:38:37 * version:1.0 * description:图片的实体类 */ public class Image { //图片媒体ID private String MediaId; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } }
2단계:com.wtz.message.response 패키지를 찾아 새 클래스 ImageMessage.java 만들기
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午8:49:57 * version:1.0 * description:图片消息类 */ public class ImageMessage extends BaseMessage { //图片对象 private Image image; public Image getImage() { return image; } public void setImage(Image image) { this.image = image; } }
단계 3 :com.wtz.message.response 패키지를 찾아 새 클래스 Video.java를 만듭니다
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午9:02:14 * version:1.0 * description:视频的实体类 */ public class Video { //视频消息的媒体ID private String MediaId; //视频消息的标题 private String Title; //视频消息的描述 private String Description; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } public String getTitle() { return Title; } public void setTitle(String title) { Title = title; } public String getDescription() { return Description; } public void setDescription(String description) { Description = description; } }
4단계: com.wtz.message.response 패키지를 찾아 새 클래스 VideoMessage.java 만들기
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午9:10:14 * version:1.0 * description:视频消息类 */ public class VideoMessage extends BaseMessage{ //视频对象 private Video video; public Video getVideo() { return video; } public void setVideo(Video video) { this.video = video; } }
5단계:com.wtz.message.response 패키지를 찾아 새 클래스 Voice.java 만들기
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午9:21:47 * version:1.0 * description:语音消息实体类 */ public class Voice { //语音媒体编号 private String MediaId; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } }
6단계: com.wtz.message.response 패키지를 찾고 새 클래스 VoiceMessage.java 만들기
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午9:44:58 * version:1.0</p> * description:语音消息类 */ public class VoiceMessage extends BaseMessage{ //语音对象 private Voice voice; public Voice getVoice() { return voice; } public void setVoice(Voice voice) { this.voice = voice; } }
7단계: com.wtz.message.response 찾기 Music.java 패키지 및 새 클래스 만들기
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午9:48:11 * version:1.0 * description:音乐消息实体类 */ public class Music { //音乐标题 private String Title; //音乐描述 private String Description; //音乐链接 private String MusicUrl; //高品质音乐链接 private String HQMusicUrl; //缩略图的媒体ID private String ThumbMediaId; public String getTitle() { return Title; } public void setTitle(String title) { Title = title; } public String getDescription() { return Description; } public void setDescription(String description) { Description = description; } public String getMusicUrl() { return MusicUrl; } public void setMusicUrl(String musicUrl) { MusicUrl = musicUrl; } public String getHQMusicUrl() { return HQMusicUrl; } public void setHQMusicUrl(String hQMusicUrl) { HQMusicUrl = hQMusicUrl; } public String getThumbMediaId() { return ThumbMediaId; } public void setThumbMediaId(String thumbMediaId) { ThumbMediaId = thumbMediaId; } }
8단계: com.wtz.message.response 패키지를 찾아 새 클래스 MusicMessage.java
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午9:58:21 * <p>version:1.0</p> * <p>description:音乐消息类</p> */ public class MusicMessage extends BaseMessage{ //音乐对象 private Music music; public Music getMusic() { return music; } public void setMusic(Music music) { this.music = music; } }
만들기 9단계: com.wtz .message.response 패키지를 찾고 새 클래스 Article.java를 만듭니다
package com.wtz.message.response; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午10:05:29 * <p>version:1.0</p> * <p>description:图文实体类</p> */ public class Article { //图文标题 private String Title; //图文描述 private String Description; //图片链接,支持JPG,PNG格式,较好的效果为大图 private String PicUrl; //图文消息跳转链接 private String Url; public String getTitle() { return Title; } public void setTitle(String title) { Title = title; } public String getDescription() { return Description; } public void setDescription(String description) { Description = description; } public String getPicUrl() { return PicUrl; } public void setPicUrl(String picUrl) { PicUrl = picUrl; } public String getUrl() { return Url; } public void setUrl(String url) { Url = url; } }
10단계: com.wtz.message를 찾습니다. 응답 패키지, 새 클래스 NewsMessage.java 생성
package com.wtz.message.response; import java.util.List; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午10:16:22 * <p>version:1.0</p> * <p>description:图文消息类</p> */ public class NewsMessage extends BaseMessage{ //图文条数 private int ArticleCount; //多条图文消息信息,默认第一个item为大图 private List<Article> Articles; public int getArticleCount() { return ArticleCount; } public void setArticleCount(int articleCount) { ArticleCount = articleCount; } public List<Article> getArticles() { return Articles; } public void setArticles(List<Article> articles) { Articles = articles; } }
11단계: 새 패키지 com.wtz.message.request, 새 클래스 BaseMessage.java
package com.wtz.message.request; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午10:53:23 * <p>version:1.0</p> * <p>description:请求消息基类(普通用户->公众账号)</p> * <p>站在服务器端的视角:接收信息</p> */ public class BaseMessage { //开发者微信号 private String ToUserName; //发送方账号(一个OpenId) private String FromUserName; //消息创建时间(整型) private long CreateTime; //消息类型 private String MsgType; //消息ID,64位整型 private long MsgId; public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { FromUserName = fromUserName; } public long getCreateTime() { return CreateTime; } public void setCreateTime(long createTime) { CreateTime = createTime; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { MsgType = msgType; } public long getMsgId() { return MsgId; } public void setMsgId(long msgId) { MsgId = msgId; } }
12단계: com.wtz.message .request 패키지 찾기, 새 클래스 TextMessage.java 만들기
package com.wtz.message.request; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午11:04:35 * <p>version:1.0</p> * <p>description:文本消息</p> */ public class TextMessage extends BaseMessage{ //消息内容 private String Content; public String getContent() { return Content; } public void setContent(String content) { Content = content; } }
13단계: com.wtz.message.request 패키지 찾기 , 새 클래스 ImageMessage.java 만들기
package com.wtz.message.request; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午11:20:50 * <p>version:1.0</p> * <p>description:图片消息</p> */ public class ImageMessage extends BaseMessage{ //图片链接 private String PicUrl; //图片消息媒体ID private String MediaId; public String getPicUrl() { return PicUrl; } public void setPicUrl(String picUrl) { PicUrl = picUrl; } public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } }
14단계: com.wtz.message.request 패키지를 찾아 새 클래스 VoiceMessage.java
package com.wtz.message.request; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午11:27:40 * <p>version:1.0</p> * <p>description:语音消息类</p> */ public class VoiceMessage extends BaseMessage { //媒体ID private String MediaId; //语音格式 private String Format; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } public String getFormat() { return Format; } public void setFormat(String format) { Format = format; } }
< 만들기 🎜>15단계: com.wtz.message.요청 패키지를 찾고 새 클래스 VideoMessage.java 만들기
package com.wtz.message.request; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 下午3:28:03 * <p>version:1.0</p> * <p>description:视频消息类</p> */ public class VideoMessage extends BaseMessage { //视频消息媒体ID private String MediaId; //视频消息缩略图的媒体ID private String ThumbMediaId; public String getMediaId() { return MediaId; } public void setMediaId(String mediaId) { MediaId = mediaId; } public String getThumbMediaId() { return ThumbMediaId; } public void setThumbMediaId(String thumbMediaId) { ThumbMediaId = thumbMediaId; } }
16단계: com.wtz.message.request 찾기 패키지, 새 클래스 LocatonMessage.java 만들기
package com.wtz.message.request; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 下午3:27:40 * <p>version:1.0</p> * <p>description:地理位置消息类</p> */ public class LocationMessage extends BaseMessage { //地理位置纬度 private String Location_X; //地理位置经度 private String Location_Y; //地图缩放大小 private String Scale; //地理位置信息 private String Label; public String getLocation_X() { return Location_X; } public void setLocation_X(String location_X) { Location_X = location_X; } public String getLocation_Y() { return Location_Y; } public void setLocation_Y(String location_Y) { Location_Y = location_Y; } public String getScale() { return Scale; } public void setScale(String scale) { Scale = scale; } public String getLabel() { return Label; } public void setLabel(String label) { Label = label; } }
17단계: com.wtz.message.request 패키지를 찾아 새 클래스 LinkMessage.java
package com.wtz.message.request; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 下午1:58:04 * <p>version:1.0</p> * <p>description:链接消息类</p> */ public class LinkMessage extends BaseMessage { //消息标题 private String Title; //消息描述 private String Description; //消息链接 private String Url; public String getTitle() { return Title; } public void setTitle(String title) { Title = title; } public String getDescription() { return Description; } public void setDescription(String description) { Description = description; } public String getUrl() { return Url; } public void setUrl(String url) { Url = url; } }
18단계: 새 패키지 com.wtz.message를 만들고, 새 클래스 BaseEventMessage.java를 만듭니다.
package com.wtz.message.event; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 上午10:44:09 * <p>version:1.0</p> * <p>description:基础事件消息类</p> */ public class BaseEventMessage { //开发者微信号 private String ToUserName; //发送方账号(一个OpenID) private String FromUserName; //消息创建时间(整型) private long CreateTime; //消息类型 private String MsgType; //事件类型 private String Event; public String getToUserName() { return ToUserName; } public void setToUserName(String toUserName) { ToUserName = toUserName; } public String getFromUserName() { return FromUserName; } public void setFromUserName(String fromUserName) { FromUserName = fromUserName; } public long getCreateTime() { return CreateTime; } public void setCreateTime(long createTime) { CreateTime = createTime; } public String getMsgType() { return MsgType; } public void setMsgType(String msgType) { MsgType = msgType; } public String getEvent() { return Event; } public void setEvent(String event) { Event = event; } }
19단계: com.wtz 패키지 찾기 .message.event, 새 클래스 QRCodeEventMessage.java 만들기
package com.wtz.message.event; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 下午3:24:30 * <p>version:1.0</p> * <p>description:扫描带参数二维码事件类</p> */ public class QRCodeEventMessage extends BaseEventMessage{ //事件Key值 private String EventKey; //用于换取二维码图片 private String Ticket; public String getEventKey() { return EventKey; } public void setEventKey(String eventKey) { EventKey = eventKey; } public String getTicket() { return Ticket; } public void setTicket(String ticket) { Ticket = ticket; } }
20단계: com.wtz.message.event 패키지를 찾아 새 클래스 SubscribeEventMessage.java
package com.wtz.message.event; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 下午3:27:11 * <p>version:1.0</p> * <p>description:关注/取消关注事件类</p> */ public class SubscribeEventMessage extends BaseEventMessage{ }
21단계: com.wtz.message.event 패키지를 찾고, 새 클래스 MenuEventMessage.java를 만듭니다.
package com.wtz.message.event; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 下午3:32:42 * <p>version:1.0</p> * <p>description:自定义菜单事件类</p> */ public class MenuEventMessage extends BaseEventMessage{ //事件Key值,与自定义菜单接口中Key值对应 private String EventKey; public String getEventKey() { return EventKey; } public void setEventKey(String eventKey) { EventKey = eventKey; } }
22단계: com 패키지 찾기 .wtz.message.event, 새 클래스 LocationEventMessage.java 생성
package com.wtz.message.event; /** * @author wangtianze QQ:864620012 * @date 2017年4月20日 下午3:37:50 * <p>version:1.0</p> * <p>description:上报地理位置事件类</p> */ public class LocationEventMessage extends BaseEventMessage{ //地理位置纬度 private String Latitude; //地理位置经度 private String Longitude; //地理位置精度 private String Precision; public String getLatitude() { return Latitude; } public void setLatitude(String latitude) { Latitude = latitude; } public String getLongitude() { return Longitude; } public void setLongitude(String longitude) { Longitude = longitude; } public String getPrecision() { return Precision; } public void setPrecision(String precision) { Precision = precision; } }
23단계: com.wtz.util 패키지에서 MessageUtil.java 클래스를 찾고 이 클래스를 수정하여 추가 요청 및 응답에 대한 다양한 메시지 유형 및 이벤트 유형을 추가하고 XML형식 메서드
package com.wtz.util; import java.io.IOException; import java.io.InputStream; import java.io.Writer; import java.util.HashMap; import java.util.List; import java.util.Map; import javax.servlet.http.HttpServletRequest; import org.dom4j.Document; import org.dom4j.DocumentException; import org.dom4j.Element; import org.dom4j.io.SAXReader; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.core.util.QuickWriter; import com.thoughtworks.xstream.io.HierarchicalStreamWriter; import com.thoughtworks.xstream.io.xml.PrettyPrintWriter; import com.thoughtworks.xstream.io.xml.XppDriver; import com.wtz.message.response.ImageMessage; import com.wtz.message.response.MusicMessage; import com.wtz.message.response.NewsMessage; import com.wtz.message.response.TextMessage; import com.wtz.message.response.VideoMessage; import com.wtz.message.response.VoiceMessage; /** * @author wangtianze QQ:864620012 * @date 2017年4月19日 下午3:29:58 * <p>version:1.0</p> * <p>description:消息处理工具类</p> */ public class MessageUtil { //请求消息类型:文本 public static final String REQ_MESSAGE_TYPE_TEXT = "text"; //请求消息类型:图片 public static final String REQ_MESSAGE_TYPE_IMAGE = "image"; //请求消息类型:语音 public static final String REQ_MESSAGE_TYPE_VOICE = "voice"; //请求消息类型:视频 public static final String REQ_MESSAGE_TYPE_VIDEO = "video"; //请求消息类型:地理位置 public static final String REQ_MESSAGE_TYPE_LOCATION = "location"; //请求消息类型:链接 public static final String REQ_MESSAGE_TYPE_LINK = "link"; //请求消息类型:事件推送 public static final String REQ_MESSAGE_TYPE_EVENT = "event"; //--------------------------------------------------------------- //事件类型:subscribe(订阅) public static final String EVENT_TYPE_SUBSCRIBE = "subscribe"; //事件类型:unsubscribe(取消订阅) public static final String EVENT_TYPE_UNSUBSCRIBE = "unsubscribe"; //事件类型:scan(用户已关注时的扫描带参数的二维码) public static final String EVENT_TYPE_SCAN = "scan"; //事件类型:LOCATION(上报地理位置) public static final String EVENT_TYPE_LOCATION = "LOCATION"; //事件类型:CLICK(自定义菜单) public static final String EVENT_TYPE_CLICK = "CLICK"; //--------------------------------------------------------------- //响应消息类型:文本 public static final String RESP_MESSAGE_TYPE_TEXT = "text"; //响应详细类型:图片 public static final String RESP_MESSAGE_TYPE_IMAGE = "image"; //响应消息类型:语音 public static final String RESP_MESSAGE_TYPE_VOICE = "voice"; //响应消息类型:视频 public static final String RESP_MESSAGE_TYPE_VIDEO = "video"; //响应详细类型:音乐 public static final String RESP_MESSAGE_TYPE_MUSIC = "music"; //响应消息类型:图文 public static final String RESP_MESSAGE_TYPE_NEWS = "news"; //--------------------------------------------------------------- //从流中解析出每个节点的内容 public static Map<String,String> parseXml(HttpServletRequest request) throws IOException{ Map<String,String> map = new HashMap<String,String>(); //从输入流中获取流对象 InputStream in = request.getInputStream(); //构建SAX阅读器对象 SAXReader reader = new SAXReader(); try { //从流中获得文档对象 Document doc = reader.read(in); //获得根节点 Element root = doc.getRootElement(); //获取根节点下的所有子节点 List<Element> children = root.elements(); for(Element e:children){ //遍历每一个节点,并按照节点名--节点值放入map中 map.put(e.getName(), e.getText()); System.out.println("用户发送的消息XML解析为:" + e.getName() + e.getText()); } //关闭流 in.close(); in = null; } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } return map; } /** * 用于扩展节点数据按照<ToUserName><![CDATA[toUser]]></ToUserName>,中间加了CDATA段 */ private static XStream xstream = new XStream(new XppDriver(){ public HierarchicalStreamWriter createWriter(Writer out){ return new PrettyPrintWriter(out){ boolean cdata = true; public void startNode(String name,Class clazz){ super.startNode(name,clazz); } protected void writeText(QuickWriter writer,String text){ if(cdata){ writer.write("<![CDATA["); writer.write(text); writer.write("]]>"); }else{ writer.write(text); } } }; } }); /** * 将文本消息对象转换成XML格式 * params:textMessage 文本消息对象 * return:xml */ public static String messageToXml(TextMessage textMessage){ xstream.alias("xml",textMessage.getClass()); return xstream.toXML(textMessage); } /** * 将图片消息对象转换成XML格式 * params:imageMessage * return:xml */ public static String messageToXml(ImageMessage imageMessage){ xstream.alias("xml", imageMessage.getClass()); return xstream.toXML(imageMessage); } /** * 将语音消息对象转换成XML格式 * params:voiceMessage * return:xml */ public static String messageToXml(VoiceMessage voiceMessage){ xstream.alias("xml",voiceMessage.getClass()); return xstream.toXML(voiceMessage); } /** * 将视频消息对象转换成XML格式 * params:videoMessage * return:xml */ public static String messageToXml(VideoMessage videoMessage){ xstream.alias("xml",videoMessage.getClass()); return xstream.toXML(videoMessage); } /** * 将音乐消息对象转换成XML格式 * params:musicMessage * return:xml */ public static String messageToXml(MusicMessage musicMessage){ xstream.alias("xml",musicMessage.getClass()); return xstream.toXML(musicMessage); } /** * 将图文消息对象转换成XML格式 * params:newsMessage * return:xml */ public static String messageToXml(NewsMessage newsMessage){ xstream.alias("xml",newsMessage.getClass()); return xstream.toXML(newsMessage); } }
로 변환할 다양한 유형의 메시지를 추가합니다. 24단계: ProcessService.java 찾기 com.wtz.util 패키지 아래 클래스를 만들고 다양한 유형의 메시지에 응답하도록 dealRequest 메소드를 수정합니다.
package com.wtz.util; import java.io.IOException; import java.util.Date; import java.util.Map; import javax.servlet.http.HttpServletRequest; import com.wtz.message.response.TextMessage; /** * @author wangtianze QQ:864620012 * @date 2017年4月19日 下午8:04:14 * <p>version:1.0</p> * <p>description:核心服务类</p> */ public class ProcessService { public static String dealRequest(HttpServletRequest request){ //XML格式的消息数据 String respXml = ""; //默认返回的文本消息内容 String respContent = "未知的消息类型"; //调用parseXml方法解析请求消息 Map<String, String> requestMap; try { requestMap = MessageUtil.parseXml(request); //发送方账号 String fromUserName = requestMap.get("FromUserName"); //开发者微信号 String toUserName = requestMap.get("ToUserName"); //消息类型 String MsgType = requestMap.get("MsgType"); //回复文本消息 TextMessage textMessage = new TextMessage(); textMessage.setToUserName(fromUserName); textMessage.setFromUserName(toUserName); textMessage.setCreateTime(new Date().getTime()); textMessage.setMsgType(MessageUtil.RESP_MESSAGE_TYPE_TEXT); if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_TEXT)){ respContent = "您发送的是文本消息"; }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_IMAGE)){ respContent = "您发送的是图片消息"; }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VOICE)){ respContent = "您发送的是语音消息"; }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_VIDEO)){ respContent = "您发送的是视频消息"; }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LOCATION)){ respContent = "您发送的是地理位置消息"; }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_LINK)){ respContent = "您发送的是链接消息"; }else if(MsgType.equals(MessageUtil.REQ_MESSAGE_TYPE_EVENT)){ //事件类型 String eventType = requestMap.get("Event"); if(eventType.equals(MessageUtil.EVENT_TYPE_SUBSCRIBE)){ respContent = "感谢您的关注"; }else if(eventType.equals(MessageUtil.EVENT_TYPE_UNSUBSCRIBE)){ //TODO 取消订阅后用户不会再收到公众号发送的消息,因此不需要回复 }else if(eventType.equals(MessageUtil.EVENT_TYPE_SCAN)){ //TODO 处理扫描带参数二维码事件 }else if(eventType.equals(MessageUtil.EVENT_TYPE_LOCATION)){ //TODO 处理上报地理位置事件 }else if(eventType.equals(MessageUtil.EVENT_TYPE_CLICK)){ //TODO 处理菜单点击事件 } } //设置文本消息的内容 textMessage.setContent(respContent); //将文本消息对象转换成xml respXml = MessageUtil.messageToXml(textMessage); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } return respXml; } }
위 내용은 WeChat 보조 개발을 위한 다양한 유형의 메시지 캡슐화의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

Video Face Swap
완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

일부 애플리케이션이 제대로 작동하지 않는 회사의 보안 소프트웨어에 대한 문제 해결 및 솔루션. 많은 회사들이 내부 네트워크 보안을 보장하기 위해 보안 소프트웨어를 배포 할 것입니다. ...

최고의 cryptocurrency 거래 및 분석 플랫폼은 다음과 같습니다. 1. OKX : 거래량에서 세계 1 위, 여러 거래를 지원하며 AI 시장 분석 및 온쇄 데이터 모니터링을 제공합니다. 2. BINANCE : 세계 최대의 교환으로, 심층적 인 시장 상황과 새로운 통화 최초 제안을 제공합니다. 3. 참깨 오픈 도어 : 스팟 트레이딩 및 OTC 채널로 알려진 자동 거래 전략을 제공합니다. 4. COINMARKETCAP : 20,000 개의 통화를 포함하는 권위있는 시장 데이터 플랫폼. 5. Coingecko : 커뮤니티 감정 분석으로 알려진 것은 Defi 및 NFT 추세 모니터링을 제공합니다. 6. 비소 계정 : 국내 시장 플랫폼, A- 공유와 통화 시장 간의 연계 분석을 제공합니다. 7. 온쇄 금융 : 블록 체인 뉴스에 중점을두고 매일 심층 보고서를 업데이트하십시오. 8. 골든 금융 : 24 작은

AI는 작곡가 사용을 최적화하는 데 도움이 될 수 있습니다. 특정 방법에는 다음이 포함됩니다. 1. 종속성 관리 최적화 : AI는 종속성을 분석하고 최상의 버전 조합을 권장하며 충돌을 줄입니다. 2. 자동화 된 코드 생성 : AI는 모범 사례를 준수하는 composer.json 파일을 생성합니다. 3. 코드 품질 향상 : AI는 잠재적 인 문제를 감지하고 최적화 제안을 제공하며 코드 품질을 향상시킵니다. 이러한 방법은 기계 학습 및 자연어 처리 기술을 통해 구현되어 개발자가 효율성과 코드 품질을 향상시킬 수 있도록 도와줍니다.

공식 Gate.io 앱은 다음과 같은 방법으로 다운로드 할 수 있습니다. 1. 공식 웹 사이트 Gate.io를 방문하여 다운로드하십시오. 2. App Store 또는 Google Play에서 "Gate.io"를 검색하여 다운로드하십시오. 안전을 보장하려면 공식 채널을 통해 다운로드하십시오.

Java의 플랫폼 독립성은 작성된 코드가 수정없이 JVM이 설치된 모든 플랫폼에서 실행될 수 있음을 의미합니다. 1) Java 소스 코드는 바이트 코드로 컴파일됩니다. 2) 바이트 코드는 JVM에 의해 해석되고 실행됩니다.

cryptocurrency 교환의 10 개의 사기 일반적인 사기 : 가짜 거래소, 폰지 캐피탈 거래, 계약 조작, 가짜 코인 피싱, 고객 서비스 사기 등 식별 지점 : 규제 라이센스 확인, 계약 주소 확인 및 고수익 약속 조심 보호해야합니다. 주류 거래소 만 사용하십시오 (Binance/Coinbase) 하드웨어 지갑을 활성화합니다 공유 개인 키/확인 코드를 거부하십시오 사기 처리 : 즉시 스크린 샷을 찍고, 자산을 동결하고, 플랫폼을보고하고, 경찰에보고합니다. 핵심 원칙 : 암호/전송 요청은 사기입니다!

HTML5는 5 가지 주요 개선 사항을 제공합니다. 1. 시맨틱 태그는 코드 선명도 및 SEO 효과를 향상시킵니다. 2. 멀티미디어 지원은 비디오 및 오디오 임베딩을 단순화합니다. 3. 형태 향상은 검증을 단순화한다. 4. 오프라인 및 로컬 스토리지는 사용자 경험을 향상시킵니다. 5. 캔버스 및 그래픽 기능은 웹 페이지의 시각화를 향상시킵니다.

Java의 매개 변수로 WeChat 애플릿 QR 코드를 생성하고 HTML 페이지에 표시하는 것이 일반적인 요구 사항입니다. 이 기사는 J ... 사용 방법에 대해 자세히 논의 할 것입니다.
