
java
不想读书的c某人
这个作者很懒,什么都没留下…
展开
-
微信小程序微信登录 springboot
这个太简单了,直接放代码了,通俗的讲就是根据客服端获取的code,来和微信开发平台换取openId 和sessionKey 这两东西咋用就看开发者,openId是微信的唯一标识符,每个人都不一样(在同一个应用中每次登录是一样的)。 private String openid; private String session_key; //开发者平台申请 private String appId=""; private String secret=""; @GetM原创 2021-02-10 13:48:23 · 298 阅读 · 0 评论 -
微信推送功能 服务端 java springboot
1.首先需要在微信开放平台订阅消息中生成自己的模板。生成模板后获取到对应的 template_id对于客户端来说,主要的工作就是诱导 用户给予推送权限服务端则负责向微信开放平台请求推送代码如下:import cn.hutool.json.JSONObject;import cn.hutool.json.JSONUtil;import org.springframework.stereotype.Service;@Servicepublic class MessageUtil { /原创 2021-02-10 13:42:34 · 235 阅读 · 0 评论 -
java 生成一维码
package com.Util;import com.google.zxing.BarcodeFormat;import com.google.zxing.BinaryBitmap;import com.google.zxing.DecodeHintType;import com.google.zxing.LuminanceSource;import com.google.zxing.MultiFormatReader;import com.google.zxing.MultiFormatW原创 2021-02-10 13:26:55 · 587 阅读 · 1 评论 -
微信支付java springboot 超详细,带注解
这篇来讲下微信支付的开发上面那张图偷字微信开发文档,微信支付方式有很多种,我们今天主要说的是JSAPI,你问其他的咋整,等我做完了再说啥事JSAPI呢,就是下图这种,通俗的讲就是输入密码的大家可以先康康这个,微信支付的文档,图太大了,扣成了两幅https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=7_4看了上面的图,你的想法应该是,give up,我们从代码一点点来,我会在代码中写注解,对应上面那个步骤,如果你懂,只是想cv 代原创 2021-02-10 11:57:39 · 842 阅读 · 1 评论 -
微信企业向个人账户提现
项目做完了,来总结下,先是微信企业到个人账户建议先过一遍官方文档,虽然我看一遍没看懂。相对于微信支付,企业这个就简单多了先直接上代码 下面这个是工具类package com.Util;import com.wx.pay.WXPayUtil;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResponse;import org.apache.http.client.meth原创 2021-02-10 11:25:14 · 853 阅读 · 2 评论 -
HIbernate逐渐入门02—一对一,一对多,多对多映射
今天研究生了下一对一,一对多,多对多三种方式在Jpa中如何实用一.一对一@Data@Entity@Table(name = "user")public class User { @Id @GeneratedValue private Long id; private String name; //开启级联操作 @OneToOne(cascade = CascadeType.PERSIST) private Student student;}原创 2021-01-04 21:54:15 · 1323 阅读 · 0 评论 -
HIbernate逐渐入门01-jpa
接手了一个数据表比较多的项目,打算从原来的Mybatis转到hibernate,今日从jpa开始一步步探索1.首先是包引入<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-jpa</artifactId> <version>2.1.0.RELEASE</vers原创 2021-01-03 21:49:07 · 169 阅读 · 3 评论 -
JVM虚拟机内存
1.程序计数器:可以看做是当前线程所执行的字节码的行号指示器。字节码解释器工作时就是通过改变这个计数器的值来选取下一条需要执行的字节码指令,循环,跳转,异常处理,线程恢复等基础功能都需要依赖这个计数器来完成。2.Java虚拟机栈线程私有。生命周期与线程保持一致。虚拟机栈描述的是Java方法执行的内存模型,即每个方法的局部变量表,操作数栈,动态链接,方法出口灯信息。每一个方法对应一个栈帧,注...原创 2020-01-23 00:17:52 · 186 阅读 · 0 评论 -
springboot 打包 maven intellij
pom.xml中加入配置org.springframework.bootspring-boot-maven-pluginrepackagecom.App.AppStart注意mianclass中的文件修改然后直接package就行了原创 2019-12-21 19:00:12 · 104 阅读 · 0 评论 -
java类加载器种类
图片来源网上启动类加载器测试下各种类加载器public static void main(String[] args) { Object o=new Object(); System.out.println(o.getClass().getClassLoader()); }结果输出null这是因为Object类是jdk自带的类,使用的是启动类...原创 2019-12-19 23:22:33 · 261 阅读 · 0 评论 -
Java 四种引用
java的引用分为四种,强引用,弱引用,软引用,虚引用。强引用强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。for exampleStudent stu=new Student();这里的stu就是个强引用,就算内存溢出,jvm也不会回收它,如果我们想要回收它,那么就可以stu=null;这样,后面的new student()里的东西就会被JVM回收...原创 2019-12-19 23:04:50 · 121 阅读 · 0 评论 -
Java实现栈
public class Stack { int[] stack; int in=0; int out=0; int MaxSize; public Stack(int MaxSize){ this.stack=new int[MaxSize]; this.MaxSize=MaxSize; } public v...原创 2019-11-13 09:58:21 · 111 阅读 · 0 评论 -
Java循环单链表
public class Node { public String num; public Node next=null; public Node(String num){ this.num=num; } public Node(){ num=null; next=this; }}public c...原创 2019-11-13 09:21:34 · 200 阅读 · 0 评论 -
Java双链表的实现
public class Node { public String num; public Node next=null; public Node pre=null; public Node(String num){ this.num=num; } public Node(){ num=null; }}p...原创 2019-11-12 22:36:13 · 229 阅读 · 0 评论 -
Java实现单链表
Java 单链表以链的形式存储。public class Node { public String num; public Node next=null; public Node(String num){ this.num=num; } public Node(){ num=null; }}public cla...原创 2019-11-12 21:57:15 · 194 阅读 · 0 评论 -
Java实现一个Queue(环形数组)
Queue队列应该满足先入先出的原则。这里使用数组实现。public class MyQueue { int front=1; int rear=0; int MaxSize; int[] queue; public MyQueue(int MaxSize){ this.queue=new int[MaxSize]; thi...原创 2019-11-12 10:45:55 · 464 阅读 · 0 评论 -
Java实现稀疏数组(改进版)
稀疏数组的定义稀疏数组就是数组中,大部分的元素值都未被使用(或都为0),在数组中仅有少部分的空间使用。因此造成内存空间的浪费,为了解决这问题,并且不影响数组中原有的元素值,我们采用了一种压缩的方式来 表示稀疏数组的内容。代码改进:正常的稀疏数组的每行的数据个数都是统一的,我考虑了不同长度的列,因此将稀疏数组的第二个值改成了总共的数据(原表示每行的个数) public static voi...原创 2019-11-11 11:01:06 · 350 阅读 · 1 评论 -
Executor封装的四种线程池类型
java中使用线程,核心走ThreadPooLExecutorExecutor封装好了四种线程池类1.newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。package threadpool;import java.util.concurrent.ExecutorService;import java.uti...原创 2019-04-27 11:06:05 · 610 阅读 · 0 评论 -
shiro 登录
直接上代码 使用ini文件代替数据库 @Test public void Login(){ //shiro三大核心 1.SecurityManage 认证判断 2.Subject 页面传入 3.realms 查询数据库 //1创建SecurityManager工厂对象,加载配置文件,创建工厂对象 Factory<SecurityMa...原创 2019-07-28 12:57:39 · 159 阅读 · 0 评论 -
Netty学习-传统BIO
传统的BIO通信模型的服务端,通常由一个独立的Acceptor线程负责舰艇客户端的连接,它接收到客户端连接请求后为每个客户端创建一个新的线程进行链路处理,处理完成之后,通过输出流返回应答给客户端,线程销毁。这是典型的一对一请求应答模型。下面是一个Time的代码例子package BIO;import java.io.BufferedReader;import java.io.IOExce...原创 2019-08-09 14:46:21 · 123 阅读 · 0 评论 -
Netty学习-伪异步BIO
上一节我们讲了最最传统的BIO,该BIO十分浪费资源,因为其一对一线程的特性。于是出现了伪异步的I/O编程伪异步的I/O模型采用线程池和任务队列。当由新的客户端接入时,降客户端的Socket封装成一个Task投递到后端的线程池中进行处理,JDK的线程池维护一个消息队列和N个活跃线程,对消息队列中的任务进行处理。线程池可以设置消息队列的大小和最大线程数。对上一节中的BIO代码进行改进pack...原创 2019-08-09 14:53:44 · 169 阅读 · 0 评论 -
dubbo-ui无法安装成功
今天第一次装dubbo-ui界面,由于阿里将dubbo交给了apache管理,而apache又对dubbo进行了一个大升级,将原来的图形界面的ssm改成了springboot 前后端分离的。而且由于dubbo2.7刚刚出,所以坑很多。这是官网的安装手册http://dubbo.apache.org/zh-cn/docs/admin/introduction.html官网给了两种安装方法如...原创 2019-08-14 11:52:18 · 881 阅读 · 0 评论 -
linux 搭建apollo
apollo的好处就不说的,我这个菜鸡觉得用的挺好的,除了大了点以外首先准备下东西。一般情况下,不会把apollo装到windows系统上,不然你上线还得装一遍,不如直接装linux 。我使用的是虚拟机。准备:1.linux虚拟机(云服务器也可以)2.apollo的包 叫做 apollo-build-scripts-master 。百度一下就有。没有加我qq 1499960848.我发你...原创 2019-05-01 11:12:37 · 1711 阅读 · 0 评论 -
守护进程和非守护进程
守护进程:守护线程是低优先级的线程,它的作用仅仅是为用户线程(非守护线程)提供服务。正是由于守护线程是为用户线程提供服务的,仅仅在用户线程处于运行状态时才需要守护线程。另外,一旦所有的用户线程都运行完毕,那么守护线程是无法阻止JVM退出的。即当程序只剩下守护线程的时候程序就会退出。守护线程的作用类似在后台静默执行 ,最典型的就是JVM的垃圾回收机制, 这个就是一个守护线程。非守护进程:用户...转载 2019-04-24 23:40:02 · 1309 阅读 · 0 评论 -
java 多线程创建
java多线程创建有三种方法1.继承2.接口3.匿名内部类来说说两种主要的创建方法一.继承创建一个类继承Thread,用来开启一个线程package textthread;public class thread extends Thread { public void run() { for (int j = 0; j < 30; j++) { System.ou...原创 2019-04-24 23:23:43 · 183 阅读 · 0 评论 -
springcloud 结合eureka开启注册中心
首先创建一个简单的mvn工程在pom.xml文件中引入依赖<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-parent --> <dependency> <groupId>org.s...原创 2019-04-18 22:05:49 · 534 阅读 · 0 评论 -
Java 单例
java单例是重要的设计模式之一直接上代码public class Single { private static Single single; //private 让代码不能被new private Single() { } //设置静态方法直接可以调用 public static Single getSingle() { if (single == null) { //...原创 2019-05-02 16:41:08 · 531 阅读 · 3 评论 -
socket通信
任何计算机语言通讯,底层都是用socket技术Java C# php 技术遵循一个规则 二进制+IP+端口号socket分为两个非常核心 tcp udp IO流传输tcp和udp区别:1.udp:面向无连接——不会建立连接,限制传输64k 不可靠协议2.tcp协议 面向连接协议 三次握手 字节流传输 效率没有udp高总结:udp效率比tcp协议高 tcp协议比udp协议靠谱http协...原创 2019-05-02 11:32:01 · 129 阅读 · 0 评论 -
线程池的好处
线程池的好处:一.降低资源消耗。通过重复利用已创建的线程降低线程创建和销毁造成的消耗。(当线程run方法使用完毕后,下一个线程不用再次创建,直接利用上一个线程)二.提高响应速度。当任务到达时,任务可以不需要等到线程创建立即执行。(不需要再次等待cpu调度)三.提高线程的可管理性。线程时稀缺资源。如果无限创建,不仅会消耗资源,还会降低系统的稳定性,使用线程池可以进行统一分配,调度和监控。...原创 2019-04-27 09:50:28 · 581 阅读 · 0 评论 -
线程知识点总结
一.线程的开启1.继承 Thread2.接口 Runable3.接口 Callable4.使用匿名内部类创建二.进程的分类1.守护进程2.非守护进程三.常用API1.sleep() 休眠一定时间2.join() 表示一旦某个线程调用了join方法,那么就要一直运行到该线程运行结束,才会运行其他进程3.Sychronization一.同步代码块 锁对象可以是任意的对象...原创 2019-04-26 21:07:22 · 182 阅读 · 0 评论 -
java spring 解析反射
使用java 的spring框架我们不再需要使用new对象,而是通过来获取对象。今天笔者了解了下java的反射,对spring的有了一个全新的认识。先创建了一个很基础的类public class father { public String fathername="fathername"; public father() { } public father(String fathe...原创 2019-04-14 12:25:24 · 478 阅读 · 0 评论 -
java 堆和栈
JVM内存的划分有五块1.寄存器 2.本地方法区 3.方法区 4.栈内存 5.堆内存栈:基本数据变量和局部变量都是存放在栈中的,以及main方法等方法也是存放在栈中的,用完即消失。堆:用于存放new出来的对象以及数组。对于栈来说很好理解,用完即释放。但对于堆来说,以数组来举例 int【】x=new int【3】,x【0】=20,x=null1.首先在栈中开辟一个空间用于存放x变量。2...原创 2019-04-14 10:38:43 · 234 阅读 · 0 评论 -
Map和Set
List Map Set是Java集合的三大类。它们都有各自的实现类。List的主要实现类为 ArrayList 和LinkedListMap主要实现类为HashMap和TreeMapList:有序可重复,因为底层是数组和链表,都是有下表作为唯一标识符的,存进去什么顺序,取出来还是什么顺序。ArrayList:有顺序,靠索引数组作为下表LinkedList:依靠链表来维护先后的顺序M...原创 2019-04-14 10:37:16 · 136 阅读 · 0 评论 -
==和equals的区别
:基本数据类型的比较,即byte short char int long float double boolean 他们之间的比较应该使用,比较的是他们的值。而引用数据类型,分为class interface array 他们比较的是地址,即除非是同一个对象,不然equals的值都为false。equals:用于判断两个变量是否是对同一个对象的引用,即堆中的内容是否相同。(equals比较...原创 2019-04-14 10:32:46 · 116 阅读 · 2 评论 -
springboot 集成apollo
这一节讲springboot 如何集成apollo ,如果没有搭建好linux 版的apollo,可以看我上一节https://blog.youkuaiyun.com/weixin_44714808/article/details/897363911.首先创建一个maven工程,导入springboot的jar包2.引入apollo-client的jar包<dependency> &...原创 2019-05-01 11:31:34 · 1330 阅读 · 0 评论 -
elasticsearch failed to load elasticsearch nodes
elasticsearch 安装在linux时使用springboot连接出现failed to load elasticsearch nodes错误我解决这个问题用了1天半的时间,百度上所有的遇到这个问题的人我也都浏览过,解决的办法都不一样,因为产生的原因不一样。说下我解决的办法我使用的是阿里云服务器,因为刚刚开始查阅资料,发现需要使用到9200 和9300端口,所有在阿里云服务器中只...原创 2019-05-09 22:24:52 · 19847 阅读 · 10 评论 -
intellij 配置springmvc项目
目录通过IDEA新建Spring MVC项目设置运行、调试相关配置导入Spring MVC 相关类库添加 Controller修改 url-pattern(web.xml)配置 component-scan(dispatcher-servlet.xml)配置 ViewResolver(dispatcher-servlet.xml)添加视图文件(.jsp)通过 Model 向 Vi...转载 2019-07-23 12:55:28 · 274 阅读 · 0 评论 -
Servlet的创建
Servlet的创建一共有三种一.最最基础的方式是依靠实现接口 implements Servlet实现了接口就要实现全部 Servlet中的方法 即public void init(ServletConfig config) throws ServletException {//在Servlet创建之前 } public ServletConfig getServ...原创 2019-07-21 17:50:31 · 136 阅读 · 0 评论 -
springboot拦截器
springboot的拦截器只需要配置两个类即可public class LoginInterceptor implements HandlerInterceptor { private static final Logger log = LoggerFactory.getLogger(LoginInterceptor.class); @Override public ...原创 2019-06-30 16:52:35 · 86 阅读 · 0 评论 -
elasticsearch springboot 实现分词搜索
实现分词搜索之前必须保证您的springboot 已经连接上了你的elasticsearch这里展示下我的配置信息和pom文件application.ymlspring: data: elasticsearch: ####集群名称 cluster-name: elasticsearch ####地址 cluster-nodes: 4...原创 2019-05-12 11:40:59 · 3979 阅读 · 2 评论